{"version":3,"file":"__federation_expose_DRPage3EFModel3.chunk.bundle","sources":["/Users/claudiobaiardi/Documents/GitHub/aldyl/DataOil-front/apps/data-oil-app/dailyReport/src/screens/DRPage3EFModel3.tsx","/Users/claudiobaiardi/Documents/GitHub/aldyl/DataOil-front/apps/data-oil-app/dailyReport/src/store/dailyReportBase.store.ts","/Users/claudiobaiardi/Documents/GitHub/aldyl/DataOil-front/apps/data-oil-app/dailyReport/src/store/dailyReportEF.store.ts"],"sourcesContent":["import React, { useEffect, useMemo, useRef, useState } from 'react';\nimport { ScrollView, StyleSheet, Text, View } from 'react-native';\nimport { useNavigation } from '@react-navigation/native';\nimport { useSafeAreaInsets } from 'react-native-safe-area-context';\nimport {\n  ConfirmationModal,\n  DatePicker,\n  MenuItem,\n  NumericField,\n  RadioGroup,\n  Select,\n  SummaryTable,\n  TimePicker,\n  useToast,\n} from '@data-oil-front/ui-mobile';\nimport { Controller, useForm, useWatch } from 'react-hook-form';\nimport dayjs from 'dayjs';\nimport utc from 'dayjs/plugin/utc';\n\nimport DRFooterActions from '../components/DRFooterActions';\nimport { useDailyReportBaseStore } from '../store/dailyReportBase.store';\nimport {\n  SampleTakenOption,\n  useDailyReportEFStore,\n} from '../store/dailyReportEF.store';\nimport {\n  getFlowStationTanksFiltered,\n  submitReport,\n  useAuth,\n  configService,\n} from '@data-oil-front/core-shared';\nimport type { FlowStationTank } from '@data-oil-front/core-shared';\n\ndayjs.extend(utc);\n\ntype YesNoOption = 'yes' | 'no' | null;\n\ninterface FormValues {\n  status: string;\n  currentStockDate: Date | null;\n  currentStockTime: string | null;\n  currentStock: string;\n  sampleTaken: YesNoOption;\n  netOperatedProduction: string;\n}\n\nconst formatTwoDigits = (value: number) => value.toString().padStart(2, '0');\n\nconst getDefaultTime = () => {\n  const now = new Date();\n  return `${formatTwoDigits(now.getHours())}:${formatTwoDigits(\n    now.getMinutes(),\n  )}`;\n};\n\n// Helper function to normalize numeric strings (convert comma to dot)\nconst normalizeNumericString = (value: string | number | null | undefined): string => {\n  if (value === null || value === undefined || value === '') return '';\n  const str = String(value);\n  return str.replace(',', '.');\n};\n\nexport default function DRPage3EFModel3() {\n  const navigation = useNavigation();\n  const insets = useSafeAreaInsets();\n  const clientConfig = configService.getCurrentConfig();\n  const accentColor = clientConfig.primaryColor;\n  const { show } = useToast();\n  const { user } = useAuth();\n\n  const { summary } = useDailyReportBaseStore(state => state);\n  const { step2, model3Step3, setModel3Step3, reset, meta } =\n    useDailyReportEFStore(state => state);\n\n  const [flowStationTank, setFlowStationTank] =\n    useState<FlowStationTank | null>(null);\n  const [isLoading, setIsLoading] = useState(false);\n  const [isSubmitting, setIsSubmitting] = useState(false);\n  const [isModalOpen, setIsModalOpen] = useState(false);\n  const guardDisabledRef = useRef(false);\n  const missingToastShownRef = useRef(false);\n\n  const defaultDate = model3Step3.currentStockDate ?? new Date();\n  const defaultTime = model3Step3.currentStockTime ?? getDefaultTime();\n\n  const {\n    control,\n    handleSubmit,\n    formState: { isValid },\n    reset: resetForm,\n  } = useForm<FormValues>({\n    defaultValues: {\n      status: model3Step3.status ?? 'active',\n      currentStockDate: defaultDate,\n      currentStockTime: defaultTime,\n      currentStock: normalizeNumericString(model3Step3.currentStock),\n      sampleTaken: (model3Step3.sampleTaken ?? null) as YesNoOption,\n      netOperatedProduction: normalizeNumericString(model3Step3.netOperatedProduction),\n    },\n    mode: 'onChange',\n  });\n\n  const watchedValues = useWatch({ control });\n\n  useEffect(() => {\n    if (!watchedValues) return;\n    const {\n      status,\n      currentStockDate,\n      currentStockTime,\n      currentStock,\n      sampleTaken,\n      netOperatedProduction,\n    } = watchedValues;\n    setModel3Step3({\n      status: status ?? null,\n      currentStockDate: currentStockDate ?? null,\n      currentStockTime: currentStockTime ?? null,\n      currentStock: currentStock ?? null,\n      sampleTaken: (sampleTaken ?? null) as SampleTakenOption,\n      netOperatedProduction: netOperatedProduction ?? null,\n    });\n  }, [setModel3Step3, watchedValues]);\n\n  // Handle editing prefill\n  useEffect(() => {\n    if (meta.editionMode && meta.payload?.report) {\n      const report = meta.payload.report;\n\n      const splitDateTime = (dateTimeStr: string | null | undefined) => {\n        if (!dateTimeStr) return { date: null, time: null };\n        const d = dayjs(dateTimeStr);\n        if (!d.isValid()) return { date: null, time: null };\n        return {\n          date: d.toDate(),\n          time: d.utc().format('HH:mm'),\n        };\n      };\n\n      const { date: reportDate, time: reportTime } = splitDateTime(\n        report.date_created,\n      );\n\n      const newValues = {\n        status: report.status ?? 'active',\n        currentStockDate: reportDate ?? new Date(),\n        currentStockTime: reportTime ?? getDefaultTime(),\n        currentStock:\n          report.current_stock != null\n            ? normalizeNumericString(String(report.current_stock))\n            : '',\n        sampleTaken: (report.sample_taken\n          ? 'yes'\n          : report.sample_taken === false\n          ? 'no'\n          : null) as YesNoOption,\n        netOperatedProduction:\n          report.net_operated_production != null\n            ? normalizeNumericString(String(report.net_operated_production))\n            : '',\n      };\n\n      resetForm(newValues);\n      setModel3Step3({\n        status: newValues.status,\n        currentStockDate: newValues.currentStockDate,\n        currentStockTime: newValues.currentStockTime,\n        currentStock: newValues.currentStock,\n        sampleTaken: newValues.sampleTaken,\n        netOperatedProduction: newValues.netOperatedProduction,\n        grossOperatedProduction:\n          report.raw_operated_production != null\n            ? String(report.raw_operated_production)\n            : '0',\n      });\n    }\n  }, [meta.editionMode, meta.payload, resetForm, setModel3Step3]);\n\n  useEffect(() => {\n    let mounted = true;\n    const fetchTank = async () => {\n      if (!step2.tankId) {\n        setFlowStationTank(null);\n        setIsLoading(false);\n        return;\n      }\n      setIsLoading(true);\n      try {\n        const tanks = await getFlowStationTanksFiltered([\n          ['id', '=', Number(step2.tankId)],\n        ]);\n        if (!mounted) return;\n        setFlowStationTank(Array.isArray(tanks) ? tanks[0] ?? null : null);\n      } catch {\n        if (mounted) setFlowStationTank(null);\n      } finally {\n        if (mounted) setIsLoading(false);\n      }\n    };\n\n    fetchTank();\n    return () => {\n      mounted = false;\n    };\n  }, [step2.tankId]);\n\n  useEffect(() => {\n    if (guardDisabledRef.current) return;\n    const missing = !step2.flowStationId || !step2.tankId;\n    if (!missing) {\n      missingToastShownRef.current = false;\n      return;\n    }\n    if (!missingToastShownRef.current) {\n      missingToastShownRef.current = true;\n      show({\n        type: 'info',\n        message: 'Selecciona una estación de flujo y un tanque para continuar.',\n      });\n    }\n    // @ts-ignore navegación provista por host\n    navigation?.navigate?.('DRPage2EF');\n  }, [navigation, show, step2.flowStationId, step2.tankId]);\n\n  const summaryItems = useMemo(\n    () => [\n      { name: 'Localización', value: summary.location },\n      { name: 'Actividad', value: summary.activity },\n      { name: 'Campo', value: summary.field },\n      { name: 'Instalación', value: summary.facility },\n      { name: 'Estación de flujo', value: step2.flowStationName },\n      { name: 'Tanque', value: step2.tankName },\n    ],\n    [\n      summary.activity,\n      summary.field,\n      summary.facility,\n      summary.location,\n      step2.flowStationName,\n      step2.tankName,\n    ],\n  );\n\n  const formatDateTime = (date: Date | null, time: string | null) => {\n    if (!date) return null;\n    const safeTime = time ?? '00:00';\n    const [hoursRaw, minutesRaw] = safeTime.split(':');\n    const hours = formatTwoDigits(\n      Math.max(\n        0,\n        Math.min(23, Number.isFinite(Number(hoursRaw)) ? Number(hoursRaw) : 0),\n      ),\n    );\n    const minutes = formatTwoDigits(\n      Math.max(\n        0,\n        Math.min(\n          59,\n          Number.isFinite(Number(minutesRaw)) ? Number(minutesRaw) : 0,\n        ),\n      ),\n    );\n    const seconds = '00';\n    return `${date.getFullYear()}-${formatTwoDigits(\n      date.getMonth() + 1,\n    )}-${formatTwoDigits(date.getDate())} ${hours}:${minutes}:${seconds}`;\n  };\n\n  const handleFinish = handleSubmit(async values => {\n    if (!step2.tankId) {\n      show({\n        type: 'error',\n        message:\n          'No se encontró el tanque seleccionado. Regresa y selecciona nuevamente.',\n      });\n      return;\n    }\n\n    if (isLoading || !flowStationTank) {\n      show({\n        type: 'info',\n        message:\n          'Esperando datos del tanque. Intenta nuevamente en unos segundos.',\n      });\n      return;\n    }\n\n    if (isSubmitting) return;\n\n    if (values.sampleTaken === null) {\n      show({ type: 'error', message: 'Debes indicar si se tomó muestra.' });\n      return;\n    }\n\n    setIsSubmitting(true);\n\n    const pad = (num: number) => num.toString().padStart(2, '0');\n    const toNumber = (\n      value: string | number | null | undefined,\n    ): number | null => {\n      if (value === null || value === undefined || value === '') return null;\n      // Normalize comma to dot before parsing\n      const normalized = normalizeNumericString(value);\n      const num = Number(normalized);\n      return Number.isNaN(num) ? null : num;\n    };\n\n    const now = new Date();\n    const nowDate = `${now.getFullYear()}-${pad(now.getMonth() + 1)}-${pad(\n      now.getDate(),\n    )} ${pad(now.getHours())}:${pad(now.getMinutes())}:${pad(\n      now.getSeconds(),\n    )}`;\n\n    // Use the form's date and time values, not the current date/time\n    const selectedDate = values.currentStockDate ?? defaultDate;\n    const selectedTime = values.currentStockTime ?? defaultTime;\n    const currentStockDateTime = formatDateTime(selectedDate, selectedTime);\n\n    const activityId =\n      summary.activity === 'Producción'\n        ? 1\n        : summary.activity === 'Recuperación'\n        ? 2\n        : 1;\n\n    const fieldPairs: [string, string | number | boolean | null][] = [\n      ['date_created', currentStockDateTime ?? nowDate],\n      ['date_updated', nowDate],\n      ['edition_number', meta.editionMode ? (meta.revision ?? 0) + 1 : 0], // Increment if editing\n      ['activity_id', activityId],\n      ['user_id', user?.id != null ? String(user.id) : null],\n      ['flow_station_tank_id', Number(step2.tankId)],\n      ['status', values.status || 'active'],\n      ['current_stock', toNumber(values.currentStock)],\n      ['sample_taken', values.sampleTaken === 'yes'],\n      ['net_operated_production', toNumber(values.netOperatedProduction)],\n      ['tank_level', null],\n      ['filling_start_date', null],\n      ['filling_start_level', null],\n      ['filling_end_date', null],\n      ['filling_end_level', null],\n      [\n        'raw_operated_production',\n        toNumber(normalizeNumericString(model3Step3.grossOperatedProduction ?? '0')),\n      ],\n      ['lab_analysis', false],\n    ];\n\n    const payload = {\n      verb: meta.editionMode ? 'update' : 'insert',\n      table: 'daily_report_flow_station_tank',\n      fields: fieldPairs.map(([key]) => key),\n      values: fieldPairs.map(([, value]) => value),\n      filter: meta.editionMode && meta.recordId ? [['id', '=', meta.recordId]] : [],\n    } as const;\n\n    try {\n      const result = await submitReport(\n        'daily_report_flow_station_tank',\n        payload as any,\n        () => {},\n        error => {\n          show({\n            type: 'error',\n            message: `Error al enviar el reporte: ${error}`,\n          });\n        },\n      );\n\n      if (result.success) {\n        guardDisabledRef.current = true;\n        if (result.offline) {\n          show({\n            type: 'info',\n            message:\n              'Reporte guardado offline. Se enviará cuando tengas conexión.',\n          });\n        } else {\n          show({ type: 'success', message: 'Reporte enviado correctamente.' });\n        }\n        reset();\n        // @ts-ignore navegación provista por host\n        navigation?.navigate?.('Home');\n      } else {\n        show({\n          type: 'error',\n          message: 'No se pudo enviar el reporte. Inténtalo nuevamente.',\n        });\n      }\n    } catch (error) {\n      show({\n        type: 'error',\n        message: 'Error inesperado al procesar el reporte.',\n      });\n    } finally {\n      setIsSubmitting(false);\n    }\n  });\n\n  const handleCancel = () => {\n    setIsModalOpen(true);\n  };\n\n  const confirmCancel = () => {\n    guardDisabledRef.current = true;\n    reset();\n    setIsModalOpen(false);\n    // @ts-ignore navegación provista por host\n    navigation?.navigate?.('Home');\n  };\n\n  useEffect(() => {\n    // @ts-ignore navegación provista por host\n    navigation?.navigate?.('DRPage3EFUnicModel');\n  }, [navigation]);\n\n  return (\n    <View style={styles.screen}>\n      <ScrollView\n        style={styles.container}\n        contentContainerStyle={{ paddingBottom: insets.bottom + 120 }}\n      >\n        <View style={styles.form}>\n          <SummaryTable items={summaryItems} />\n\n          <View style={styles.block} />\n\n          <Text style={styles.sectionTitle}>Redirecting...</Text>\n        </View>\n      </ScrollView>\n    </View>\n  );\n}\n\nconst styles = StyleSheet.create({\n  screen: { flex: 1, backgroundColor: '#f9fafb' },\n  container: { flex: 1, paddingTop: 16 },\n  form: { paddingHorizontal: 20, paddingBottom: 24, gap: 0 },\n  block: { height: 16 },\n  row: {\n    flexDirection: 'row',\n    alignItems: 'center',\n  },\n  flex1: { flex: 1 },\n  spacer: { width: 12 },\n  sectionTitle: {\n    textAlign: 'center',\n    fontSize: 18,\n    fontWeight: '600',\n    color: '#1F2937',\n  },\n  helperText: {\n    marginTop: 12,\n    textAlign: 'center',\n    color: '#6B7280',\n    fontSize: 14,\n  },\n  errorText: {\n    marginTop: 8,\n    color: '#DC2626',\n    fontSize: 12,\n  },\n});\n","import { create } from 'zustand';\nimport type { ReportHistoryTable } from '@data-oil-front/core-shared';\n\ninterface DailyReportBaseStore {\n  fieldId: string | null;\n  summary: {\n    location: string | null;\n    activity: string | null;\n    field: string | null;\n    facility: string | null;\n  };\n  editing: DailyReportEditingState;\n}\n\ninterface DailyReportBaseStoreActions {\n  setFieldId: (fieldId: string | null) => void;\n  setSummary: (summary: DailyReportBaseStore['summary']) => void;\n  setEditing: (editing: Partial<DailyReportEditingState>) => void;\n  resetEditing: () => void;\n}\n\nexport interface DailyReportEditingState {\n  isEditing: boolean;\n  reportId: string | number | null;\n  table: ReportHistoryTable | null;\n  revision?: number | null;\n  payload?: Record<string, any> | null;\n}\n\nconst INITIAL_EDITING_STATE: DailyReportEditingState = {\n  isEditing: false,\n  reportId: null,\n  table: null,\n  revision: null,\n  payload: null,\n};\n\nconst INITIAL_STATE: DailyReportBaseStore = {\n  fieldId: null,\n  summary: {\n    location: null,\n    activity: null,\n    field: null,\n    facility: null,\n  },\n  editing: INITIAL_EDITING_STATE,\n};\n\nexport const useDailyReportBaseStore = create<\n  DailyReportBaseStore & DailyReportBaseStoreActions\n>(set => ({\n  ...INITIAL_STATE,\n  // ACTIONS\n  setFieldId: (fieldId: string | null) => set(state => ({ ...state, fieldId })),\n  setSummary: (summary: DailyReportBaseStore['summary']) =>\n    set(state => ({ ...state, summary })),\n  setEditing: editing =>\n    set(state => ({\n      ...state,\n      editing: {\n        ...state.editing,\n        ...editing,\n      },\n    })),\n  resetEditing: () =>\n    set(state => ({\n      ...state,\n      editing: INITIAL_EDITING_STATE,\n    })),\n}));\n","import { create } from 'zustand';\n\nexport interface DREFStep2State {\n  flowStationId: string | null;\n  flowStationName?: string | null;\n  tankId: string | null;\n  tankName?: string | null;\n}\n\nexport type SampleTakenOption = 'yes' | 'no' | null;\n\nexport interface DREFModel1Step3State {\n  status: string | null;\n  reportDate: Date | null;\n  reportTime: string | null;\n  tankLevel: string | null;\n  sampleTaken: SampleTakenOption;\n  netOperatedProduction: string | null;\n}\n\nexport interface DREFModel2Step3State {\n  status: string | null;\n  reportDate: Date | null;\n  reportTime: string | null;\n  fillingStartDate: Date | null;\n  fillingStartTime: string | null;\n  fillingStartLevel: string | null;\n  fillingEndDate: Date | null;\n  fillingEndTime: string | null;\n  fillingEndLevel: string | null;\n  rawOperatedProduction: string | null;\n  sampleTaken: SampleTakenOption;\n  netOperatedProduction: string | null;\n}\n\nexport interface DREFUnicModelStep3State {\n  status: string | null;\n  reportDate: Date | null;\n  reportTime: string | null;\n  tankLevel: string | null;\n  rawOperatedProduction: string | null;\n  sampleTaken: SampleTakenOption;\n  netOperatedProduction: string | null;\n  comments: string | null;\n}\n\nexport interface DREFModel3Step3State {\n  status: string | null;\n  currentStockDate: Date | null;\n  currentStockTime: string | null;\n  currentStock: string | null;\n  previousDayStock: string | null;\n  vacuumTransfer: string | null;\n  grossOperatedProduction: string | null;\n  sampleTaken: SampleTakenOption;\n  netOperatedProduction: string | null;\n}\n\nexport interface DREFMeta {\n  editionMode: boolean;\n  recordId?: string | null;\n  revision?: number | null;\n  payload?: Record<string, any> | null;\n}\n\ninterface DailyReportEFStoreState {\n  step2: Partial<DREFStep2State>;\n  model1Step3: Partial<DREFModel1Step3State>;\n  model2Step3: Partial<DREFModel2Step3State>;\n  model3Step3: Partial<DREFModel3Step3State>;\n  unicModelStep3: Partial<DREFUnicModelStep3State>;\n  meta: DREFMeta;\n  setStep2: (values: Partial<DREFStep2State>) => void;\n  setModel1Step3: (values: Partial<DREFModel1Step3State>) => void;\n  setModel2Step3: (values: Partial<DREFModel2Step3State>) => void;\n  setModel3Step3: (values: Partial<DREFModel3Step3State>) => void;\n  setUnicModelStep3: (values: Partial<DREFUnicModelStep3State>) => void;\n  setLoadingMeta: (values: Partial<DREFMeta>) => void;\n  resetStep3: () => void;\n  reset: () => void;\n}\n\nconst createInitialStep2State = (): Partial<DREFStep2State> => ({\n  flowStationId: null,\n  tankId: null,\n  flowStationName: null,\n  tankName: null,\n});\n\nconst createInitialModel1Step3State = (): Partial<DREFModel1Step3State> => ({\n  status: 'active',\n  reportDate: null,\n  reportTime: null,\n  tankLevel: null,\n  sampleTaken: null,\n  netOperatedProduction: null,\n});\n\nconst createInitialModel2Step3State = (): Partial<DREFModel2Step3State> => ({\n  status: 'active',\n  reportDate: null,\n  reportTime: null,\n  fillingStartDate: null,\n  fillingStartTime: null,\n  fillingStartLevel: null,\n  fillingEndDate: null,\n  fillingEndTime: null,\n  fillingEndLevel: null,\n  rawOperatedProduction: null,\n  sampleTaken: null,\n  netOperatedProduction: null,\n});\n\nconst createInitialModel3Step3State = (): Partial<DREFModel3Step3State> => ({\n  status: 'active',\n  currentStockDate: null,\n  currentStockTime: null,\n  currentStock: null,\n  previousDayStock: null,\n  vacuumTransfer: null,\n  grossOperatedProduction: '0',\n  sampleTaken: null,\n  netOperatedProduction: null,\n});\n\nconst createInitialUnicModelStep3State = (): Partial<DREFUnicModelStep3State> => ({\n    status: 'active',\n    reportDate: null,\n    reportTime: null,\n    tankLevel: null,\n    rawOperatedProduction: null,\n    sampleTaken: null,\n    netOperatedProduction: null,\n    comments: null,\n});\n\nconst INITIAL_META_STATE: DREFMeta = {\n  editionMode: false,\n  recordId: null,\n  revision: null,\n  payload: null,\n};\n\nexport const useDailyReportEFStore = create<DailyReportEFStoreState>(set => ({\n  step2: createInitialStep2State(),\n  model1Step3: createInitialModel1Step3State(),\n  model2Step3: createInitialModel2Step3State(),\n  model3Step3: createInitialModel3Step3State(),\n  unicModelStep3: createInitialUnicModelStep3State(),\n  meta: INITIAL_META_STATE,\n  setStep2: values =>\n    set(state => ({\n      step2: {\n        ...state.step2,\n        ...values,\n      },\n    })),\n  setModel1Step3: values =>\n    set(state => ({\n      model1Step3: {\n        ...state.model1Step3,\n        ...values,\n      },\n    })),\n  setModel2Step3: values =>\n    set(state => ({\n      model2Step3: {\n        ...state.model2Step3,\n        ...values,\n      },\n    })),\n  setModel3Step3: values =>\n    set(state => ({\n      model3Step3: {\n        ...state.model3Step3,\n        ...values,\n      },\n    })),\n    setUnicModelStep3: values =>\n    set(state => ({\n      unicModelStep3: {\n        ...state.unicModelStep3,\n        ...values,\n      },\n    })),\n  setLoadingMeta: values =>\n    set(state => ({\n      meta: {\n        ...state.meta,\n        ...values,\n      },\n    })),\n  resetStep3: () =>\n    set(state => ({\n      step2: state.step2,\n      model1Step3: createInitialModel1Step3State(),\n      model2Step3: createInitialModel2Step3State(),\n      model3Step3: createInitialModel3Step3State(),\n      unicModelStep3: createInitialUnicModelStep3State(),\n      meta: state.meta,\n    })),\n  reset: () =>\n    set(() => ({\n      step2: createInitialStep2State(),\n      model1Step3: createInitialModel1Step3State(),\n      model2Step3: createInitialModel2Step3State(),\n      model3Step3: createInitialModel3Step3State(),\n      unicModelStep3: createInitialUnicModelStep3State(),\n      meta: INITIAL_META_STATE,\n    })),\n}));\n"],"names":["DRPage3EFModel3","dayjs","extend","utc","formatTwoDigits","value","toString","padStart","getDefaultTime","now","Date","getHours","getMinutes","normalizeNumericString","String","replace","model3Step3","navigation","useNavigation","insets","useSafeAreaInsets","configService","getCurrentConfig","primaryColor","useToast","show","useAuth","useDailyReportBaseStore","state","summary","step2","useDailyReportEFStore","setModel3Step3","reset","meta","flowStationTank","setFlowStationTank","useState","isLoading","setIsLoading","isSubmitting","setIsSubmitting","guardDisabledRef","useRef","missingToastShownRef","defaultDate","currentStockDate","defaultTime","currentStockTime","defaultValues","status","currentStock","sampleTaken","netOperatedProduction","mode","control","handleSubmit","resetForm","isValid","useForm","watchedValues","useWatch","useEffect","editionMode","payload","report","splitDateTime","dateTimeStr","date","time","d","toDate","format","date_created","reportDate","reportTime","newValues","current_stock","sample_taken","net_operated_production","grossOperatedProduction","raw_operated_production","mounted","tankId","tanks","getFlowStationTanksFiltered","Number","Array","isArray","current","flowStationId","type","message","navigate","summaryItems","useMemo","name","location","activity","field","facility","flowStationName","tankName","values","pad","num","toNumber","normalized","isNaN","nowDate","getFullYear","getMonth","getDate","getSeconds","currentStockDateTime","formatDateTime","safeTime","split","hoursRaw","minutesRaw","hours","Math","max","min","isFinite","minutes","activityId","fieldPairs","revision","user","id","verb","table","fields","map","filter","recordId","result","submitReport","error","success","offline","View","style","styles","screen","ScrollView","container","contentContainerStyle","paddingBottom","bottom","form","SummaryTable","items","block","Text","sectionTitle","StyleSheet","create","flex","backgroundColor","paddingTop","paddingHorizontal","gap","height","row","flexDirection","alignItems","flex1","spacer","width","textAlign","fontSize","fontWeight","color","helperText","marginTop","errorText","INITIAL_EDITING_STATE","isEditing","reportId","INITIAL_STATE","fieldId","editing","DailyReportBaseStore","set","setFieldId","setSummary","setEditing","resetEditing","INITIAL_META_STATE","DailyReportEFStoreState","model1Step3","tankLevel","model2Step3","fillingStartDate","fillingStartTime","fillingStartLevel","fillingEndDate","fillingEndTime","fillingEndLevel","rawOperatedProduction","previousDayStock","vacuumTransfer","unicModelStep3","comments","setStep2","setModel1Step3","setModel2Step3","setUnicModelStep3","setLoadingMeta","resetStep3"],"mappings":"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"}