Merge branch 'main' of git.golsystems.mx:juan.zapata/pdv.frontend

This commit is contained in:
Juan Felipe Zapata Moreno 2026-03-12 18:15:22 -06:00
commit f8e4421ffc
2 changed files with 59 additions and 53 deletions

View File

@ -770,8 +770,8 @@ watch(activeTab, (tab) => {
<FormInput
v-model.number="eqForm.conversion_factor"
type="number"
min="0.001"
step="0.001"
min="0"
step="any"
placeholder="Ej: 24"
required
/>

View File

@ -227,41 +227,27 @@ const closeModal = () => {
emit('close');
};
/** Observadores */
watch(() => props.show, (isShown) => {
if (isShown) {
loadWarehouses();
if (props.movement) {
// Cargar datos del movimiento
form.quantity = props.movement.quantity || 0;
form.unit_cost = props.movement.unit_cost || 0;
form.invoice_reference = props.movement.invoice_reference || '';
form.notes = props.movement.notes || '';
form.supplier_id = props.movement.supplier_id || null;
// Cargar números de serie según tipo de movimiento
const isTransfer = props.movement.movement_type === 'transfer';
const isExit = props.movement.movement_type === 'exit';
/** Helpers */
const applySerials = (movement) => {
const isTransfer = movement.movement_type === 'transfer';
const isExit = movement.movement_type === 'exit';
const rawSerials = isTransfer
? (props.movement.transferred_serials || [])
? (movement.transferred_serials || [])
: isExit
? (props.movement.exited_serials || [])
: (props.movement.serials || []);
? (movement.exited_serials || [])
: (movement.serials || []);
// Para traspasos/salidas: inicializar objetos de seriales para SerialSelector
if (isTransfer || isExit) {
selectedSerialObjects.value = rawSerials;
}
if (rawSerials.length > 0) {
const movementWarehouseId = props.movement.warehouse_id || props.movement.warehouse_to?.id;
const movementWarehouseId = movement.warehouse_to?.id || movement.warehouse_to_id;
serialsList.value = rawSerials.map(s => {
let locked = false;
let lock_reason = null;
// Seriales con status='salida' son propios de este movimiento editables
const isOwnExitSerial = isExit && s.status === 'salida';
if (!isOwnExitSerial && s.status !== 'disponible') {
@ -279,27 +265,47 @@ watch(() => props.show, (isShown) => {
return { serial_number: s.serial_number, locked, lock_reason };
});
} else if (props.movement.serial_numbers && props.movement.serial_numbers.length > 0) {
serialsList.value = props.movement.serial_numbers.map(sn => ({
serial_number: sn,
locked: false
}));
} else {
serialsList.value = [{ serial_number: '', locked: false }];
}
};
/** Observadores */
watch(() => props.show, (isShown) => {
if (isShown) {
loadWarehouses();
if (props.movement) {
// Cargar datos básicos del formulario desde el prop
form.quantity = props.movement.quantity || 0;
form.unit_cost = props.movement.unit_cost || 0;
form.invoice_reference = props.movement.invoice_reference || '';
form.notes = props.movement.notes || '';
form.supplier_id = props.movement.supplier_id || null;
// Almacenes según tipo
if (props.movement.movement_type === 'entry') {
form.destination_warehouse_id = props.movement.warehouse_id || '';
form.destination_warehouse_id = props.movement.warehouse_to_id || props.movement.warehouse_to?.id || '';
} else if (props.movement.movement_type === 'exit') {
form.origin_warehouse_id = props.movement.warehouse_from_id || props.movement.warehouse_from?.id || '';
} else if (props.movement.movement_type === 'transfer') {
form.origin_warehouse_id = props.movement.warehouse_from_id || props.movement.warehouse_from?.id || '';
form.destination_warehouse_id = props.movement.warehouse_to_id || props.movement.warehouse_to?.id || '';
}
// Limpiar seriales mientras se carga el detalle
serialsList.value = [{ serial_number: '', locked: false }];
selectedSerialObjects.value = [];
// Obtener el movimiento completo con seriales desde el endpoint de detalle
api.get(apiURL(`movimientos/${props.movement.id}`), {
onSuccess: (data) => {
applySerials(data.movement);
}
});
}
} else {
// Limpiar seriales al cerrar
// Limpiar al cerrar
serialsText.value = '';
}
}, { immediate: true });