diff --git a/src/components/POS/SerialSelector.vue b/src/components/POS/SerialSelector.vue index 3a5fc5c..285265d 100644 --- a/src/components/POS/SerialSelector.vue +++ b/src/components/POS/SerialSelector.vue @@ -21,6 +21,10 @@ const props = defineProps({ warehouseId: { type: Number, default: null + }, + preSelectedSerials: { + type: Array, + default: () => [] } }); @@ -59,10 +63,16 @@ const loadSerials = async () => { loading.value = true; try { const response = await serialService.getAvailableSerials(props.product.id, props.warehouseId); - // Filtrar seriales que ya están en el carrito - availableSerials.value = (response.serials?.data || []).filter( + const fetched = (response.serials?.data || []).filter( serial => !props.excludeSerials.includes(serial.serial_number) ); + const fetchedIds = new Set(fetched.map(s => s.id)); + const extras = props.preSelectedSerials.filter(s => !fetchedIds.has(s.id)); + availableSerials.value = [...extras, ...fetched]; + + selectedSerials.value = props.preSelectedSerials.filter(s => + availableSerials.value.some(a => a.id === s.id) + ); } catch (error) { console.error('Error loading serials:', error); availableSerials.value = []; @@ -94,6 +104,7 @@ const clearSelection = () => { const handleConfirm = () => { emit('confirm', { + serials: selectedSerials.value, serialNumbers: selectedSerials.value.map(s => s.serial_number), quantity: selectedSerials.value.length }); diff --git a/src/pages/POS/Inventory/CreateModal.vue b/src/pages/POS/Inventory/CreateModal.vue index 54ead43..40990ca 100644 --- a/src/pages/POS/Inventory/CreateModal.vue +++ b/src/pages/POS/Inventory/CreateModal.vue @@ -1,6 +1,6 @@