{"version":3,"file":"src_screens_OwnInspectionFormScreen_tsx.chunk.bundle","sources":["/Users/claudiobaiardi/Documents/GitHub/aldyl/dataoil-app/apps/data-oil-app/otherReports/src/screens/OwnInspectionForm.tsx","/Users/claudiobaiardi/Documents/GitHub/aldyl/dataoil-app/apps/data-oil-app/otherReports/src/screens/OwnInspectionFormScreen.tsx"],"sourcesContent":["import Toast from 'react-native-toast-message';\nimport React, { useCallback, useEffect, useMemo, useState } from 'react';\nimport { useAuth } from \"@data-oil-front/core-host\";\nimport { submitReportWithOfflineFallback } from \"@data-oil-front/core-reports\";\nimport { TABLE_NAMES, API_VERBS, ApiPostBody } from \"@data-oil-front/core-utils\";\nimport {\n  View,\n  Text,\n  StyleSheet,\n  TouchableOpacity,\n  ScrollView,\n  TextInput,\n  Image,\n} from 'react-native';\nimport dayjs from 'dayjs';\nimport {\n  Select,\n  MenuItem,\n  StatusButton,\n  DatePicker,\n  FormBox,\n} from '@data-oil-front/ui-mobile';\nimport { useClientConfig } from '../hooks/useClientConfig';\nimport { pickDocument } from '../utils/safeDocumentPicker';\nimport { fetchTanks } from '../services/thirdPartyAudit.api';\nimport type { Tank } from '../types/tank';\n\ntype DailyReportConfig = {\n  commentsFormFields?: string[];\n  fiscalizationFormFields?: string[];\n  ownFiscalizationFormFields?: string[];\n};\n\ntype CoreConfigType = {\n  dailyReport?: DailyReportConfig;\n};\n\nexport default function OwnInspectionFormComponent() {\n  const [type, setType] = useState<string>('');\n  const [tank, setTank] = useState<string>('');\n  const [date, setDate] = useState<Date>(new Date());\n  const [netFiscalizedNumber, setNetFiscalizedNumber] = useState<string>('');\n  const [grossFiscalizedNumber, setGrossFiscalizedNumber] =\n    useState<string>('');\n  const [fiscalizedTemperature, setFiscalizedTemperature] =\n    useState<string>('');\n  const [fiscalizedApi, setFiscalizedApi] = useState<string>('');\n  const [fiscalizedAys, setFiscalizedAys] = useState<string>('');\n  const [tankTemperature, setTankTemperature] = useState<string>('');\n  const [tankGaugingMeasurementFeet, setTankGaugingMeasurementFeet] =\n    useState<string>('');\n  const [tankGaugingMeasurementInches, setTankGaugingMeasurementInches] =\n    useState<string>('');\n  const [tankGaugingMeasurementEighths, setTankGaugingMeasurementEighths] =\n    useState<string>('');\n  const [dailyDiscountRate, setDailyDiscountRate] = useState<string>('');\n  const [file, setFile] = useState<string>('');\n  const [localFileUri, setLocalFileUri] = useState<string>('');\n  const [isImagePreview, setIsImagePreview] = useState<boolean>(false);\n  const clearSelectedFile = useCallback(() => {\n    setFile('');\n    setLocalFileUri('');\n    setIsImagePreview(false);\n  }, []);\n\n  const [touched, setTouched] = useState<boolean>(false);\n  const [isLoading, setIsLoading] = useState<boolean>(false);\n  const [tanks, setTanks] = useState<Tank[]>([]);\n\n          const {\n    config: clientConfig,\n    apiFileServer,\n    primaryColor: accentColor,\n  } = useClientConfig();\n  const { user } = useAuth();\n\n  const includeField = useCallback(\n    (fieldName: string): boolean => {\n      const fields = (clientConfig?.CORE_CONFIG as CoreConfigType)?.dailyReport\n        ?.fiscalizationFormFields as string[] | undefined;\n      if (!fields) return true;\n      return fields.includes(fieldName);\n    },\n    [clientConfig],\n  );\n\n  const isTypeValid = useMemo(() => type.trim() !== '', [type]);\n  const isTankValid = useMemo(() => tank.trim() !== '', [tank]);\n  const isDateValid = useMemo(() => !!date, [date]);\n  const isNetFiscalizedNumberValid = useMemo(\n    () =>\n      netFiscalizedNumber.trim() !== '' &&\n      /^\\d+$/.test(netFiscalizedNumber.trim()),\n    [netFiscalizedNumber],\n  );\n  const isGrossFiscalizedNumberValid = useMemo(\n    () =>\n      grossFiscalizedNumber.trim() !== '' &&\n      /^\\d+$/.test(grossFiscalizedNumber.trim()),\n    [grossFiscalizedNumber],\n  );\n\n  const openToast = useCallback((typeParam: string, titleParam: string, messageParam: string) => {\n    Toast.show({\n      type: typeParam === 'notification' ? 'info' : typeParam,\n      text1: titleParam,\n      text2: messageParam,\n    });\n  }, []);\n\n  useEffect(() => {\n    const loadTanks = async () => {\n      try {\n        const data = await fetchTanks();\n        const filtered = data.filter(\n          t => !t.name.toUpperCase().startsWith('TAD'),\n        );\n        setTanks(filtered);\n      } catch (_e) {\n        setTanks([]);\n      }\n    };\n\n    loadTanks();\n  }, []);\n\n  const handlePickFile = useCallback(async () => {\n    try {\n      const results: any = await pickDocument({\n        allowMultiSelection: false,\n        type: ['image/*'],\n      });\n      const item = Array.isArray(results) ? results[0] : results;\n      const uri = item?.uri || item?.fileCopyUri || '';\n      const name = item?.name || 'archivo';\n      const mime: string = (item?.type || '').toString();\n      if (!uri) {\n        openToast('error', 'Error', 'No se pudo leer el archivo seleccionado');\n        return;\n      }\n      setLocalFileUri(uri);\n      setFile(name);\n      const isImg =\n        (mime && mime.startsWith('image/')) ||\n        /\\.(png|jpe?g|webp|gif|heic|heif)$/i.test(name);\n      setIsImagePreview(!!isImg);\n      openToast('success', 'Archivo seleccionado', name);\n    } catch (e: any) {\n      if (e?.code === 'E_MODULE_NOT_LINKED') {\n        openToast(\n          'error',\n          'Módulo faltante',\n          'RNDocumentPicker no está vinculado en esta app',\n        );\n        return;\n      }\n      // cancelado u otro error: sin acción\n    }\n  }, [openToast]);\n\n  const handleSubmit = useCallback(async () => {\n    setTouched(true);\n    if (\n      !isTypeValid ||\n      !isTankValid ||\n      !isDateValid ||\n      !isNetFiscalizedNumberValid ||\n      !isGrossFiscalizedNumberValid\n    ) {\n      openToast('error', 'Error', 'Complete los campos obligatorios');\n      return;\n    }\n\n    setIsLoading(true);\n    try {\n      const formattedDate = dayjs(date).format('YYYY-MM-DD');\n      const payload = new ApiPostBody({\n        verb: API_VERBS.INSERT,\n        table: TABLE_NAMES.OWN_FISCALIZED_PRODUCTION,\n        fields: [\n          'date_created',\n          'type',\n          'tank',\n          'net_fiscalized_number',\n          'gross_fiscalized_number',\n          'fiscalized_temperature',\n          'fiscalized_api',\n          'fiscalized_ays',\n          'tank_temperature',\n          'tank_gauging_measurement_feet',\n          'tank_gauging_measurement_inches',\n          'tank_gauging_measurement_eighths',\n          'daily_discount_rate',\n          'file',\n          'user_id',\n        ],\n        values: [\n          formattedDate,\n          type,\n          tank,\n          parseInt(netFiscalizedNumber.trim(), 10) || null,\n          parseInt(grossFiscalizedNumber.trim(), 10) || null,\n          fiscalizedTemperature.trim() === ''\n            ? null\n            : parseFloat(fiscalizedTemperature),\n          fiscalizedApi.trim() === '' ? null : parseFloat(fiscalizedApi),\n          fiscalizedAys.trim() === '' ? null : parseFloat(fiscalizedAys),\n          tankTemperature.trim() === '' ? null : parseFloat(tankTemperature),\n          tankGaugingMeasurementFeet.trim() === ''\n            ? null\n            : parseFloat(tankGaugingMeasurementFeet),\n          tankGaugingMeasurementInches.trim() === ''\n            ? null\n            : parseFloat(tankGaugingMeasurementInches),\n          tankGaugingMeasurementEighths.trim() === ''\n            ? null\n            : parseFloat(tankGaugingMeasurementEighths),\n          dailyDiscountRate.trim() === ''\n            ? null\n            : parseFloat(dailyDiscountRate),\n          file || null,\n          user?.id ? String(user.id) : null,\n        ],\n        filter: [],\n      });\n\n      const result = await submitReportWithOfflineFallback(TABLE_NAMES.OWN_FISCALIZED_PRODUCTION, payload);\n\n      if (!result.success) {\n        openToast(\n          'error',\n          'Error al enviar',\n          result.message || 'Ocurrió un error al enviar el formulario',\n        );\n        return;\n      }\n\n      openToast(\n        'success',\n        'Formulario enviado',\n        result.offline ? 'Guardado para enviar cuando haya conexión' : 'El formulario ha sido enviado correctamente',\n      );\n\n      setType('');\n      setTank('');\n      setDate(new Date());\n      setNetFiscalizedNumber('');\n      setGrossFiscalizedNumber('');\n      setFiscalizedTemperature('');\n      setFiscalizedApi('');\n      setFiscalizedAys('');\n      setTankTemperature('');\n      setTankGaugingMeasurementFeet('');\n      setTankGaugingMeasurementInches('');\n      setTankGaugingMeasurementEighths('');\n      setDailyDiscountRate('');\n      setFile('');\n      setLocalFileUri('');\n      setIsImagePreview(false);\n      setTouched(false);\n    } catch (_e) {\n      openToast(\n        'error',\n        'Error inesperado',\n        'Ocurrió un error inesperado. Intente nuevamente.',\n      );\n    } finally {\n      setIsLoading(false);\n    }\n  }, [\n    date,\n    dailyDiscountRate,\n    file,\n    fiscalizedApi,\n    fiscalizedAys,\n    fiscalizedTemperature,\n    grossFiscalizedNumber,\n    isDateValid,\n    isGrossFiscalizedNumberValid,\n    isNetFiscalizedNumberValid,\n    isTankValid,\n    isTypeValid,\n    netFiscalizedNumber,\n    openToast, tank,\n    tankGaugingMeasurementEighths,\n    tankGaugingMeasurementFeet,\n    tankGaugingMeasurementInches,\n    tankTemperature,\n    type,\n    user?.id,\n  ]);\n\n  return (\n    <>\n      <View style={styles.container}>\n        <ScrollView\n          contentContainerStyle={styles.content}\n          showsVerticalScrollIndicator={false}\n        >\n          {/* Título */}\n          <Text style={styles.headerTitle}>Fiscalización propia</Text>\n\n        {/* IMPORTANTE */}\n        <FormBox title=\"IMPORTANTE\">\n          <Text style={styles.paragraph}>\n            Por favor, verifica que los datos ingresados sean correctos antes de\n            enviar este formulario. La calidad y exactitud de esta información\n            son esenciales para:\n          </Text>\n          <View style={styles.bulletList}>\n            <Text style={styles.paragraph}>\n              • Generar reportes confiables y oportunos.\n            </Text>\n            <Text style={styles.paragraph}>\n              • Evitar retrasos o errores en la toma de decisiones.\n            </Text>\n            <Text style={styles.paragraph}>\n              • Garantizar el cumplimiento de las políticas internas de la\n              empresa.\n            </Text>\n          </View>\n          <Text style={styles.paragraph}>\n            <Text style={styles.bold}>Nota:</Text> Los campos marcados con (*)\n            son obligatorios.\n          </Text>\n        </FormBox>\n\n        {/* Formulario */}\n        <View style={styles.box}>\n          {/* Tanque */}\n          {tanks.length > 0 ? (\n            <View style={styles.fieldGroup}>\n              <Text style={styles.label}>\n                Escoge el tanque fiscalizado{' '}\n                <Text style={styles.required}>*</Text>\n              </Text>\n              <Select\n                value={tank}\n                onChange={v => setTank((v ?? '').toString())}\n                placeholder=\"Selecciona el tanque\"\n                size=\"medium\"\n                disabled={isLoading}\n                triggerStyle={styles.input}\n              >\n                <MenuItem value=\"\">Selecciona el tanque</MenuItem>\n                {tanks.map((item: Tank) => (\n                  <MenuItem key={item.name} value={item.name}>\n                    {item.name}\n                  </MenuItem>\n                ))}\n              </Select>\n              {touched && !isTankValid && (\n                <Text style={styles.errorText}>Este campo es obligatorio</Text>\n              )}\n            </View>\n          ) : (\n            <View style={styles.fieldGroup}>\n              <Text style={styles.label}>\n                Ingresa el tanque fiscalizado\n                <Text style={styles.required}>*</Text>\n              </Text>\n              <Select\n                value={tank}\n                onChange={v => setTank((v ?? '').toString())}\n                placeholder=\"Selecciona el tanque\"\n                size=\"medium\"\n                disabled={isLoading}\n                triggerStyle={styles.input}\n              >\n                <MenuItem value=\"\">Selecciona el tanque</MenuItem>\n                <MenuItem value=\"TK 80003\">TK 80003</MenuItem>\n                <MenuItem value=\"TK 80004\">TK 80004</MenuItem>\n                <MenuItem value=\"TK 80008\">TK 80008</MenuItem>\n                <MenuItem value=\"TK 80001\">TK 80001</MenuItem>\n                <MenuItem value=\"TK 80002\">TK 80002</MenuItem>\n                <MenuItem value=\"TK-10008\">TK-10008</MenuItem>\n              </Select>\n              {touched && !isTankValid && (\n                <Text style={styles.errorText}>Este campo es obligatorio</Text>\n              )}\n            </View>\n          )}\n\n          {/* Tipo */}\n          <View style={styles.fieldGroup}>\n            <Text style={styles.label}>\n              Escoge el tipo <Text style={styles.required}>*</Text>\n            </Text>\n            <Select\n              value={type}\n              onChange={v => setType((v ?? '').toString())}\n              placeholder=\"Selecciona: diluente o Boscan\"\n              size=\"medium\"\n              disabled={isLoading}\n              triggerStyle={styles.input}\n            >\n              <MenuItem value=\"\">Selecciona la respuesta</MenuItem>\n              <MenuItem value=\"diluente\">diluente</MenuItem>\n              <MenuItem value=\"DCO\">Boscan</MenuItem>\n            </Select>\n            {touched && !isTypeValid && (\n              <Text style={styles.errorText}>Este campo es obligatorio</Text>\n            )}\n          </View>\n\n          {/* Fecha */}\n          <View style={styles.fieldGroup}>\n            <Text style={styles.label}>\n              Escoge la Fecha de este dato.{' '}\n              <Text style={styles.required}>*</Text>\n            </Text>\n            <DatePicker\n              value={date}\n              onChange={(d: Date | null | undefined) =>\n                setDate(d || new Date())\n              }\n              onApply={() => {\n                /* no-op */\n              }}\n              onClear={() => setDate(new Date())}\n              disabled={isLoading}\n            />\n            {touched && !isDateValid && (\n              <Text style={styles.errorText}>Este campo es obligatorio</Text>\n            )}\n          </View>\n\n          {/* Número de fiscalización propia */}\n          <View style={styles.fieldGroup}>\n            <Text style={styles.label}>\n              Ingresa el numero de la fiscalización propia (BLS.){' '}\n              <Text style={styles.required}>*</Text>\n            </Text>\n            <TextInput\n              value={netFiscalizedNumber}\n              onChangeText={setNetFiscalizedNumber}\n              placeholder=\"Escriba su respuesta\"\n              keyboardType=\"number-pad\"\n              style={styles.input}\n              editable={!isLoading}\n            />\n            {touched && !isNetFiscalizedNumberValid && (\n              <Text style={styles.errorText}>\n                {netFiscalizedNumber.trim() === ''\n                  ? 'Este campo es obligatorio'\n                  : 'Solo se permiten números sin letras, puntos o comas'}\n              </Text>\n            )}\n          </View>\n\n          {/* Número de fiscalización bruta */}\n          {includeField('grossFiscalizedNumber') && (\n            <View style={styles.fieldGroup}>\n              <Text style={styles.label}>\n                Ingresa el numero de la fiscalización bruta (BLS.){' '}\n                <Text style={styles.required}>*</Text>\n              </Text>\n              <TextInput\n                value={grossFiscalizedNumber}\n                onChangeText={setGrossFiscalizedNumber}\n                placeholder=\"Escriba su respuesta\"\n                keyboardType=\"number-pad\"\n                style={styles.input}\n                editable={!isLoading}\n              />\n              {touched && !isGrossFiscalizedNumberValid && (\n                <Text style={styles.errorText}>\n                  {grossFiscalizedNumber.trim() === ''\n                    ? 'Este campo es obligatorio'\n                    : 'Solo se permiten números sin letras, puntos o comas'}\n                </Text>\n              )}\n            </View>\n          )}\n\n          {/* Temperatura de fiscalización propia */}\n          {includeField('fiscalizedTemperature') && (\n            <View style={styles.fieldGroup}>\n              <Text style={styles.label}>\n                Ingresa la temperatura de la fiscalización propia\n              </Text>\n              <TextInput\n                value={fiscalizedTemperature}\n                onChangeText={setFiscalizedTemperature}\n                placeholder=\"Escriba su respuesta\"\n                keyboardType=\"decimal-pad\"\n                style={styles.input}\n                editable={!isLoading}\n              />\n            </View>\n          )}\n\n          {/* Medida de aforo del tanque fiscalizado */}\n          {includeField('tankGaugingMeasurement') && (\n            <View style={styles.fieldGroup}>\n              <Text style={styles.label}>\n                Ingresa la medida de aforo del tanque fiscalizado\n              </Text>\n              <View style={styles.inlineFields}>\n                <View style={styles.inlineField}>\n                  <TextInput\n                    value={tankGaugingMeasurementFeet}\n                    onChangeText={setTankGaugingMeasurementFeet}\n                    placeholder=\"0\"\n                    keyboardType=\"decimal-pad\"\n                    style={styles.input}\n                    editable={!isLoading}\n                  />\n                  <Text style={styles.inlineLabel}>Pies</Text>\n                </View>\n                <View style={styles.inlineField}>\n                  <TextInput\n                    value={tankGaugingMeasurementInches}\n                    onChangeText={setTankGaugingMeasurementInches}\n                    placeholder=\"0\"\n                    keyboardType=\"decimal-pad\"\n                    style={styles.input}\n                    editable={!isLoading}\n                  />\n                  <Text style={styles.inlineLabel}>Pulgadas</Text>\n                </View>\n                <View style={styles.inlineField}>\n                  <TextInput\n                    value={tankGaugingMeasurementEighths}\n                    onChangeText={setTankGaugingMeasurementEighths}\n                    placeholder=\"0\"\n                    keyboardType=\"decimal-pad\"\n                    style={styles.input}\n                    editable={!isLoading}\n                  />\n                  <Text style={styles.inlineLabel}>Octavos</Text>\n                </View>\n              </View>\n            </View>\n          )}\n\n          {/* API fiscalizado */}\n          {includeField('fiscalizedApi') && (\n            <View style={styles.fieldGroup}>\n              <Text style={styles.label}>Ingresa el API fiscalizado</Text>\n              <TextInput\n                value={fiscalizedApi}\n                onChangeText={setFiscalizedApi}\n                placeholder=\"Escriba su respuesta\"\n                keyboardType=\"decimal-pad\"\n                style={styles.input}\n                editable={!isLoading}\n              />\n            </View>\n          )}\n\n          {/* AyS fiscalizado */}\n          {includeField('fiscalizedAys') && (\n            <View style={styles.fieldGroup}>\n              <Text style={styles.label}>Ingresa el AyS fiscalizado</Text>\n              <TextInput\n                value={fiscalizedAys}\n                onChangeText={setFiscalizedAys}\n                placeholder=\"Escriba su respuesta\"\n                keyboardType=\"decimal-pad\"\n                style={styles.input}\n                editable={!isLoading}\n              />\n            </View>\n          )}\n\n          {/* Temperatura del tanque fiscalizado*/}\n          {includeField('tankTemperature') && (\n            <View style={styles.fieldGroup}>\n              <Text style={styles.label}>\n                Ingresa la temperatura del tanque fiscalizado\n              </Text>\n              <TextInput\n                value={tankTemperature}\n                onChangeText={setTankTemperature}\n                placeholder=\"Escriba su respuesta\"\n                keyboardType=\"decimal-pad\"\n                style={styles.input}\n                editable={!isLoading}\n              />\n            </View>\n          )}\n\n          {/* Tasa de descuento diario */}\n          {includeField('dailyDiscountRate') && (\n            <View style={styles.fieldGroup}>\n              <Text style={styles.label}>\n                Ingresa la tasa de descuento diario (BLS)\n              </Text>\n              <TextInput\n                value={dailyDiscountRate}\n                onChangeText={setDailyDiscountRate}\n                placeholder=\"Escriba su respuesta\"\n                keyboardType=\"decimal-pad\"\n                style={styles.input}\n                editable={!isLoading}\n              />\n            </View>\n          )}\n\n          {/* Campo para subir archivo */}\n          <View style={styles.fieldGroup}>\n            <Text style={styles.label}>Agregar registro fotográfico</Text>\n            <View style={styles.inlineUpload}>\n              <TouchableOpacity\n                onPress={handlePickFile}\n                style={[styles.uploadBtn, { backgroundColor: accentColor || undefined }]}\n                activeOpacity={0.8}\n              >\n                <Text style={styles.uploadBtnText}>Subir archivo</Text>\n              </TouchableOpacity>\n              {file ? (\n                <>\n                  <Text\n                    style={styles.fileName}\n                    numberOfLines={1}\n                    ellipsizeMode=\"tail\"\n                  >\n                    {file}\n                  </Text>\n                  <TouchableOpacity\n                    onPress={clearSelectedFile}\n                    accessibilityRole=\"button\"\n                    style={styles.clearBtn}\n                  >\n                    <Text style={styles.clearBtnText}>Quitar</Text>\n                  </TouchableOpacity>\n                </>\n              ) : (\n                <Text\n                  style={styles.textNoFile}\n                  numberOfLines={1}\n                  ellipsizeMode=\"tail\"\n                >\n                  No hay archivo seleccionado\n                </Text>\n              )}\n            </View>\n            {isImagePreview &&\n              (!!localFileUri || (apiFileServer && !!file)) && (\n                <View style={styles.imagePreviewContainer}>\n                  <Image\n                    source={{\n                      uri: localFileUri || `${apiFileServer}/get/${file}`,\n                    }}\n                    style={styles.imagePreview}\n                    resizeMode=\"cover\"\n                  />\n                </View>\n              )}\n          </View>\n        </View>\n\n        {/* Botón de enviar */}\n        <StatusButton\n          title=\"Finalizar\"\n          loadingTitle=\"Enviando...\"\n          onPress={handleSubmit}\n          loading={isLoading}\n          disabled={isLoading}\n          backgroundColor={accentColor || undefined}\n          style={[styles.submitBtn, isLoading && styles.submitBtnDisabled] as any}\n          size=\"medium\"\n        />\n      </ScrollView>\n    </View>\n  </>\n  );\n}\n\nconst styles = StyleSheet.create({\n  container: {\n    flex: 1,\n    backgroundColor: '#fff',\n  },\n  content: {\n    padding: 16,\n    gap: 16,\n  },\n  headerTitle: {\n    fontSize: 18,\n    fontWeight: 'bold',\n    color: '#111827',\n    textAlign: 'center',\n  },\n  box: {\n    backgroundColor: '#F9FAFB',\n    borderColor: '#E5E7EB',\n    borderWidth: 1,\n    borderRadius: 12,\n    padding: 12,\n    gap: 12,\n  },\n  boxTitle: {\n    fontSize: 14,\n    fontWeight: '700',\n    color: '#111827',\n    marginBottom: 4,\n  },\n  paragraph: {\n    fontSize: 14,\n    color: '#374151',\n    marginBottom: 4,\n  },\n  bulletList: {\n    gap: 2,\n    marginBottom: 4,\n  },\n  bold: {\n    fontWeight: '700',\n  },\n  fieldGroup: {\n    marginBottom: 12,\n  },\n  label: {\n    fontSize: 14,\n    color: '#111827',\n    marginBottom: 8,\n    fontWeight: '600',\n  },\n  required: {\n    color: '#FF1D4B',\n  },\n  input: {\n    backgroundColor: '#fff',\n    borderColor: '#E5E7EB',\n    borderWidth: 1,\n    borderRadius: 10,\n    paddingHorizontal: 12,\n    paddingVertical: 12,\n  },\n  inputText: {\n    fontSize: 14,\n    color: '#111827',\n  },\n  segmentedContainer: {\n    flexDirection: 'row',\n    gap: 8,\n  },\n  segmentedBtn: {\n    flex: 1,\n    paddingVertical: 12,\n    borderRadius: 10,\n    backgroundColor: '#F3F4F6',\n    alignItems: 'center',\n  },\n  segmentedText: {\n    color: '#111827',\n    fontWeight: '600',\n  },\n  segmentedTextActive: {\n    color: '#fff',\n  },\n\n  errorText: {\n    color: '#FF1D4B',\n    fontSize: 14,\n    marginTop: 4,\n  },\n  inlineFields: {\n    flexDirection: 'row',\n    gap: 8,\n    alignItems: 'center',\n  },\n  inlineField: {\n    flex: 1,\n  },\n  inlineLabel: {\n    marginTop: 6,\n    fontSize: 14,\n    color: '#6B7280',\n    textAlign: 'center',\n  },\n  inlineUpload: {\n    flexDirection: 'row',\n    alignItems: 'center',\n    gap: 8,\n    backgroundColor: '#fff',\n    borderColor: '#E5E7EB',\n    borderWidth: 1,\n    borderRadius: 10,\n    paddingHorizontal: 6,\n    paddingVertical: 6,\n  },\n  uploadBtn: {\n    backgroundColor: '#F3F4F6',\n    paddingHorizontal: 12,\n    paddingVertical: 6,\n    borderRadius: 6,\n  },\n  uploadBtnText: {\n    color: '#fff',\n    fontWeight: '600',\n  },\n  fileName: {\n    fontSize: 14,\n    color: '#111827',\n    flex: 1,\n    flexShrink: 1,\n  },\n  clearBtn: {\n    paddingHorizontal: 10,\n    paddingVertical: 6,\n    borderRadius: 6,\n    backgroundColor: '#F3F4F6',\n  },\n  clearBtnText: {\n    color: '#111827',\n    fontWeight: '600',\n    fontSize: 14,\n  },\n  textNoFile: {\n    fontSize: 14,\n    color: '#111827',\n    fontWeight: '300',\n  },\n  imagePreviewContainer: {\n    marginTop: 12,\n  },\n  imagePreview: {\n    height: 120,\n    borderRadius: 8,\n  },\n  submitBtn: {\n    width: '100%',\n    paddingVertical: 14,\n    borderRadius: 10,\n    alignItems: 'center',\n    justifyContent: 'center',\n  },\n  submitBtnDisabled: {\n    opacity: 0.6,\n  },\n  submitBtnText: {\n    color: '#fff',\n    fontSize: 16,\n    fontWeight: '600',\n  },\n  toastContainer: {\n    position: 'absolute',\n    top: 16,\n    left: 12,\n    right: 12,\n    zIndex: 50,\n  },\n});\n","import OwnInspectionFormComponent from './OwnInspectionForm';\n\nfunction OwnInspectionFormScreen() {\n  return <OwnInspectionFormComponent />;\n}\n\nexport default OwnInspectionFormScreen;\n  "],"names":["OwnInspectionFormComponent","type","setType","useState","tank","setTank","date","setDate","netFiscalizedNumber","setNetFiscalizedNumber","grossFiscalizedNumber","setGrossFiscalizedNumber","fiscalizedTemperature","setFiscalizedTemperature","fiscalizedApi","setFiscalizedApi","fiscalizedAys","setFiscalizedAys","tankTemperature","setTankTemperature","tankGaugingMeasurementFeet","setTankGaugingMeasurementFeet","tankGaugingMeasurementInches","setTankGaugingMeasurementInches","tankGaugingMeasurementEighths","setTankGaugingMeasurementEighths","dailyDiscountRate","setDailyDiscountRate","file","setFile","localFileUri","setLocalFileUri","isImagePreview","setIsImagePreview","clearSelectedFile","useCallback","touched","setTouched","isLoading","setIsLoading","tanks","setTanks","clientConfig","config","apiFileServer","accentColor","useClientConfig","primaryColor","user","useAuth","includeField","fieldName","fields","CoreConfigType","CORE_CONFIG","dailyReport","fiscalizationFormFields","includes","isTypeValid","useMemo","trim","isTankValid","isDateValid","isNetFiscalizedNumberValid","test","isGrossFiscalizedNumberValid","openToast","typeParam","titleParam","messageParam","Toast","show","text1","text2","useEffect","filtered","fetchTanks","filter","t","name","toUpperCase","startsWith","_e","handlePickFile","results","pickDocument","allowMultiSelection","item","Array","isArray","uri","fileCopyUri","mime","toString","isImg","e","code","handleSubmit","formattedDate","dayjs","format","payload","ApiPostBody","verb","API_VERBS","INSERT","table","TABLE_NAMES","OWN_FISCALIZED_PRODUCTION","values","parseInt","parseFloat","id","String","result","submitReportWithOfflineFallback","success","message","offline","Date","View","style","styles","container","ScrollView","contentContainerStyle","content","showsVerticalScrollIndicator","Text","headerTitle","FormBox","title","paragraph","bulletList","bold","box","length","fieldGroup","label","required","Select","value","onChange","v","placeholder","size","disabled","triggerStyle","input","MenuItem","map","errorText","DatePicker","d","onApply","onClear","TextInput","onChangeText","keyboardType","editable","inlineFields","inlineField","inlineLabel","inlineUpload","TouchableOpacity","onPress","uploadBtn","backgroundColor","undefined","activeOpacity","uploadBtnText","fileName","numberOfLines","ellipsizeMode","accessibilityRole","clearBtn","clearBtnText","textNoFile","imagePreviewContainer","Image","source","imagePreview","resizeMode","StatusButton","loadingTitle","loading","submitBtn","submitBtnDisabled","StyleSheet","create","flex","padding","gap","fontSize","fontWeight","color","textAlign","borderColor","borderWidth","borderRadius","boxTitle","marginBottom","paddingHorizontal","paddingVertical","inputText","segmentedContainer","flexDirection","segmentedBtn","alignItems","segmentedText","segmentedTextActive","marginTop","flexShrink","height","width","justifyContent","opacity","submitBtnText","toastContainer","position","top","left","right","zIndex"],"mappings":"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"}