{"version":3,"file":"__federation_expose_MachineryFuelArrival.chunk.bundle","sources":["/Users/claudiobaiardi/Documents/GitHub/aldyl/dataoil-app/apps/data-oil-app/machinery/src/screens/MachineryFuelArrival.tsx","/Users/claudiobaiardi/Documents/GitHub/aldyl/dataoil-app/apps/data-oil-app/machinery/src/screens/MachineryFuelArrivalScreen.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, useState } from 'react';\nimport {\n  StyleSheet,\n  View,\n  Text,\n  ScrollView,\n  TextInput,\n  TouchableOpacity,\n} from 'react-native';\nimport { useSafeAreaInsets } from 'react-native-safe-area-context';\nimport { useNavigation } from '@react-navigation/native';\nimport dayjs from 'dayjs';\nimport {\n  fetchMachineryFuelTanks,\n  insertMachineryFuelArrival,\n  type MachineryFuelTank,\n} from '@data-oil-front/core-machinery';\nimport { configService, useAuth, useConfig } from '@data-oil-front/core-host';\nimport {\n  ConfirmationModal,\n  DatePicker,\n  SearchableSelect,\n  LoadingSpinner,\n} from '@data-oil-front/ui-mobile';\n\nexport default function MachineryFuelArrival() {\n  const navigation = useNavigation();\n  const insets = useSafeAreaInsets();\n\n  const { config: clientConfig } = useConfig();\n  const { user } = useAuth();\n  const defaultConfig = useMemo(() => configService.getDefaultConfig(), []);\n  const accentColor =\n    clientConfig.primaryColor ?? defaultConfig.primaryColor ?? '#1B418C';\n\n  const [tanks, setTanks] = useState<MachineryFuelTank[]>([]);\n  const [loadingTanks, setLoadingTanks] = useState(true);\n\n  const [selectedTankId, setSelectedTankId] = useState<string>('');\n  const [arrivalDate, setArrivalDate] = useState<Date | null>(new Date());\n  const [liters, setLiters] = useState<string>('');\n  const [comments, setComments] = useState<string>('');\n\n  const [_touched, setTouched] = useState(false);\n  const [error, setError] = useState<string | null>(null);\n  const [isSaving, setIsSaving] = useState(false);\n  const [confirmOpen, setConfirmOpen] = useState(false);\n\n  useEffect(() => {\n    let cancelled = false;\n    (async () => {\n      try {\n        const data = await fetchMachineryFuelTanks();\n        if (!cancelled && Array.isArray(data)) {\n          setTanks(data);\n          if (data.length > 0 && data[0]) {\n            setSelectedTankId(String(data[0].id));\n          }\n        }\n      } catch {\n        if (!cancelled) setTanks([]);\n      } finally {\n        if (!cancelled) setLoadingTanks(false);\n      }\n    })();\n    return () => { cancelled = true; };\n  }, []);\n\n  const tankOptions = useMemo(\n    () =>\n      tanks.map(t => ({\n        value: String(t.id),\n        label: t.name || `${t.fuel_type?.charAt(0).toUpperCase()}${t.fuel_type?.slice(1)}`,\n      })),\n    [tanks],\n  );\n\n  const selectedTank = useMemo(\n    () => tanks.find(t => String(t.id) === selectedTankId) ?? null,\n    [tanks, selectedTankId],\n  );\n\n  const selectedTankLabel = selectedTank\n    ? selectedTank.name || selectedTank.fuel_type\n    : '';\n\n  const litersValue = useMemo(() => {\n    const n = Number.parseFloat(liters);\n    return Number.isFinite(n) ? n : NaN;\n  }, [liters]);\n\n  const isLitersValid = useMemo(\n    () => Number.isFinite(litersValue) && litersValue > 0,\n    [litersValue],\n  );\n\n  const handleLitersChange = useCallback((t: string) => {\n    let raw = t.replace(/[^0-9.]/g, '');\n    const parts = raw.split('.');\n    if (parts.length > 2) {\n      raw = parts[0] + '.' + parts.slice(1).join('');\n    }\n    const finalParts = raw.split('.');\n    if (finalParts.length === 2 && finalParts[1].length > 1) {\n      raw = finalParts[0] + '.' + finalParts[1].substring(0, 1);\n    }\n    setLiters(prev => (raw === prev ? prev : raw));\n    setError(null);\n  }, []);\n\n  const submit = useCallback(async () => {\n    setTouched(true);\n    if (!isLitersValid) {\n      setError('Por favor ingrese una cantidad válida de litros');\n      return;\n    }\n    if (!selectedTankId) {\n      setError('Por favor seleccione un tanque de combustible');\n      return;\n    }\n\n    setIsSaving(true);\n    setError(null);\n    try {\n      const dateFormatted = arrivalDate\n        ? dayjs(arrivalDate).format('YYYY-MM-DD HH:mm:ss')\n        : dayjs().format('YYYY-MM-DD HH:mm:ss');\n\n      await insertMachineryFuelArrival(\n        Number(selectedTankId),\n        dateFormatted,\n        litersValue,\n        comments.trim() || null,\n        user?.id ?? null,\n      );\n      navigation.goBack();\n    } catch (err: any) {\n      console.error('Error al registrar llegada de combustible:', err);\n      setError(\n        err?.message ||\n          'Error al registrar la llegada. Por favor, intente nuevamente.',\n      );\n    } finally {\n      setIsSaving(false);\n    }\n  }, [\n    isLitersValid,\n    litersValue,\n    selectedTankId,\n    arrivalDate,\n    comments,\n    navigation,\n    user?.id,\n  ]);\n\n  const handleSaveClick = useCallback(() => {\n    setTouched(true);\n    if (!isLitersValid) {\n      setError('Por favor ingrese una cantidad válida de litros');\n      return;\n    }\n    if (!selectedTankId) {\n      setError('Por favor seleccione un tanque de combustible');\n      return;\n    }\n    setConfirmOpen(true);\n  }, [isLitersValid, selectedTankId]);\n\n  if (loadingTanks) {\n    return (\n      <>\n        <View style={styles.container}>\n          <View style={styles.center}>\n            <LoadingSpinner />\n          </View>\n        </View>\n      </>\n    );\n  }\n\n  return (\n    <>\n      <View style={styles.container}>\n        <ScrollView\n        style={styles.scroll}\n        contentContainerStyle={{\n          paddingTop: insets.top + 16,\n          paddingBottom: insets.bottom + 24,\n          paddingHorizontal: 16,\n        }}\n      >\n        <Text\n          style={[styles.title, { color: accentColor }]}\n          numberOfLines={2}\n          adjustsFontSizeToFit\n          minimumFontScale={0.85}\n        >\n          Llegada de combustible\n        </Text>\n        <Text style={styles.subtitle}>\n          Complete los datos de la entrega de combustible\n        </Text>\n\n        {/* Litros */}\n        <View style={styles.inputPanel}>\n          <View style={styles.inputPanelTop}>\n            <Text style={styles.inputHint}>\n              Ingrese la cantidad de litros recibidos\n            </Text>\n            <View style={styles.litersCenter}>\n              <TextInput\n                value={liters}\n                onChangeText={handleLitersChange}\n                keyboardType=\"decimal-pad\"\n                placeholder=\"000\"\n                placeholderTextColor=\"#9CA3AF\"\n                style={styles.litersInput}\n                editable={!isSaving}\n                selectionColor=\"#111827\"\n              />\n              <Text style={styles.litersLabel}>Litros</Text>\n            </View>\n          </View>\n        </View>\n\n        {/* Tanque (tipo de combustible) */}\n        <View style={styles.fieldCard}>\n          <Text style={styles.fieldCardTitle}>Tanque de destino</Text>\n          <SearchableSelect\n            label=\"Tanque\"\n            selectedValue={selectedTankId}\n            onValueChange={value => setSelectedTankId(String(value))}\n            options={tankOptions}\n            placeholder=\"Seleccionar tanque\"\n            minSearchLength={0}\n          />\n        </View>\n\n        {/* Fecha */}\n        <View style={styles.fieldCard}>\n          <Text style={styles.fieldCardTitle}>Fecha de llegada</Text>\n          <DatePicker\n            label=\"Fecha\"\n            value={arrivalDate}\n            onChange={d => setArrivalDate(d)}\n            disabled={isSaving}\n          />\n        </View>\n\n        {/* Comentarios */}\n        <View style={styles.fieldCard}>\n          <Text style={styles.fieldCardTitle}>\n            Comentarios{' '}\n            <Text style={styles.optionalLabel}>(opcional)</Text>\n          </Text>\n          <TextInput\n            value={comments}\n            onChangeText={setComments}\n            placeholder=\"Remito, proveedor, observaciones...\"\n            placeholderTextColor=\"#9CA3AF\"\n            style={styles.commentsInput}\n            multiline\n            numberOfLines={3}\n            editable={!isSaving}\n            textAlignVertical=\"top\"\n          />\n        </View>\n\n        {/* Error */}\n        {error ? (\n          <View style={styles.inlineError}>\n            <Text style={styles.inlineErrorText}>{error}</Text>\n          </View>\n        ) : null}\n\n        {/* Actions */}\n        <View style={styles.actions}>\n          <TouchableOpacity\n            onPress={() => navigation.goBack()}\n            disabled={isSaving}\n            style={styles.cancelButton}\n            activeOpacity={0.85}\n          >\n            <Text style={styles.cancelButtonText}>Cancelar</Text>\n          </TouchableOpacity>\n          <TouchableOpacity\n            onPress={handleSaveClick}\n            disabled={isSaving || !liters || !selectedTankId}\n            style={[\n              styles.saveButton,\n              { backgroundColor: accentColor },\n              (isSaving || !liters || !selectedTankId) && styles.saveButtonDisabled,\n            ]}\n            activeOpacity={0.85}\n          >\n            <Text style={styles.saveButtonText}>\n              {isSaving ? 'Guardando...' : 'Guardar'}\n            </Text>\n          </TouchableOpacity>\n        </View>\n\n        <ConfirmationModal\n          open={confirmOpen}\n          onClose={() => setConfirmOpen(false)}\n          onConfirm={() => {\n            submit();\n          }}\n          title=\"Confirmar registro de llegada\"\n          message={`¿Confirma registrar la llegada de ${liters || '0'} L en ${selectedTankLabel}?`}\n          confirmText=\"Confirmar\"\n          cancelText=\"Cancelar\"\n        />\n      </ScrollView>\n    </View>\n  </>\n  );\n}\n\nconst styles = StyleSheet.create({\n  container: { flex: 1, backgroundColor: '#FFFFFF' },\n  scroll: { flex: 1 },\n  center: { flex: 1, alignItems: 'center', justifyContent: 'center' },\n\n  title: {\n    fontSize: 24,\n    fontWeight: '700',\n    marginBottom: 4,\n  },\n  subtitle: {\n    fontSize: 14,\n    color: '#6B7280',\n    marginBottom: 20,\n  },\n\n  inputPanel: {\n    borderRadius: 16,\n    borderWidth: 1,\n    borderColor: '#E5E7EB',\n    overflow: 'hidden',\n    marginBottom: 16,\n  },\n  inputPanelTop: {\n    paddingHorizontal: 16,\n    paddingVertical: 20,\n    backgroundColor: '#F9FAFB',\n    alignItems: 'center',\n  },\n  inputHint: {\n    fontSize: 14,\n    fontWeight: '600',\n    color: '#4B5563',\n    marginBottom: 16,\n  },\n  litersCenter: { alignItems: 'center' },\n  litersInput: {\n    fontSize: 64,\n    fontWeight: '900',\n    color: '#111827',\n    width: '100%',\n    maxWidth: 320,\n    paddingVertical: 0,\n    paddingHorizontal: 0,\n    textAlign: 'center',\n    includeFontPadding: false,\n    textAlignVertical: 'center',\n  },\n  litersLabel: {\n    fontSize: 32,\n    fontWeight: '600',\n    color: '#374151',\n    marginTop: 8,\n  },\n\n  fieldCard: {\n    borderRadius: 16,\n    borderWidth: 1,\n    borderColor: '#E5E7EB',\n    backgroundColor: '#FFFFFF',\n    padding: 16,\n    marginBottom: 16,\n  },\n  fieldCardTitle: {\n    fontSize: 14,\n    fontWeight: '700',\n    color: '#374151',\n    marginBottom: 12,\n  },\n  optionalLabel: {\n    fontWeight: '400',\n    color: '#9CA3AF',\n    fontSize: 12,\n  },\n  commentsInput: {\n    borderWidth: 1,\n    borderColor: '#D1D5DB',\n    borderRadius: 8,\n    paddingHorizontal: 12,\n    paddingVertical: 10,\n    fontSize: 14,\n    color: '#111827',\n    backgroundColor: '#FFFFFF',\n    minHeight: 80,\n  },\n\n  inlineError: {\n    padding: 12,\n    backgroundColor: '#FEF2F2',\n    borderRadius: 12,\n    borderWidth: 1,\n    borderColor: '#FECACA',\n    marginBottom: 16,\n  },\n  inlineErrorText: { color: '#991B1B', fontSize: 13, fontWeight: '600' },\n\n  actions: {\n    marginTop: 8,\n    flexDirection: 'row',\n    justifyContent: 'flex-end',\n    gap: 12,\n  },\n  cancelButton: {\n    borderRadius: 10,\n    paddingHorizontal: 18,\n    paddingVertical: 12,\n    minWidth: 100,\n    alignItems: 'center',\n    backgroundColor: '#F3F4F6',\n    borderWidth: 1,\n    borderColor: '#E5E7EB',\n  },\n  cancelButtonText: { color: '#374151', fontSize: 14, fontWeight: '700' },\n  saveButton: {\n    borderRadius: 10,\n    paddingHorizontal: 18,\n    paddingVertical: 12,\n    minWidth: 120,\n    alignItems: 'center',\n  },\n  saveButtonDisabled: { opacity: 0.6 },\n  saveButtonText: { color: '#FFFFFF', fontSize: 14, fontWeight: '800' },\n});\n","import MachineryFuelArrivalComponent from './MachineryFuelArrival';\n\nfunction MachineryFuelArrivalScreen() {\n  return <MachineryFuelArrivalComponent />;\n}\n\nexport default MachineryFuelArrivalScreen;\n"],"names":["MachineryFuelArrival","clientConfig","navigation","useNavigation","insets","useSafeAreaInsets","config","useAuth","user","defaultConfig","useMemo","configService","getDefaultConfig","accentColor","primaryColor","useState","tanks","setTanks","loadingTanks","setLoadingTanks","selectedTankId","setSelectedTankId","Date","arrivalDate","setArrivalDate","liters","setLiters","comments","setComments","setTouched","error","setError","isSaving","setIsSaving","confirmOpen","setConfirmOpen","useEffect","cancelled","data","fetchMachineryFuelTanks","Array","isArray","length","String","id","tankOptions","map","t","value","label","name","fuel_type","charAt","toUpperCase","slice","selectedTank","find","selectedTankLabel","litersValue","n","Number","parseFloat","isFinite","NaN","isLitersValid","handleLitersChange","useCallback","raw","replace","parts","split","join","finalParts","substring","prev","submit","dateFormatted","dayjs","format","insertMachineryFuelArrival","trim","goBack","err","console","message","handleSaveClick","View","style","styles","container","center","LoadingSpinner","ScrollView","scroll","contentContainerStyle","paddingTop","top","paddingBottom","bottom","paddingHorizontal","Text","title","color","numberOfLines","adjustsFontSizeToFit","minimumFontScale","subtitle","inputPanel","inputPanelTop","inputHint","litersCenter","TextInput","onChangeText","keyboardType","placeholder","placeholderTextColor","litersInput","editable","selectionColor","litersLabel","fieldCard","fieldCardTitle","SearchableSelect","selectedValue","onValueChange","options","minSearchLength","DatePicker","onChange","d","disabled","optionalLabel","commentsInput","multiline","textAlignVertical","inlineError","inlineErrorText","actions","TouchableOpacity","onPress","cancelButton","activeOpacity","cancelButtonText","saveButton","backgroundColor","saveButtonDisabled","saveButtonText","ConfirmationModal","open","onClose","onConfirm","confirmText","cancelText","StyleSheet","create","flex","alignItems","justifyContent","fontSize","fontWeight","marginBottom","borderRadius","borderWidth","borderColor","overflow","paddingVertical","width","maxWidth","textAlign","includeFontPadding","marginTop","padding","minHeight","flexDirection","gap","minWidth","opacity"],"mappings":"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"}