mirror of
https://github.com/efrainsosa27/cotizador-helgen.git
synced 2026-10-24 05:16:48 +00:00
Requisiciones: correcciones de la prueba en PRUEBAS
- .oculto con !important: las clases con display propio (.acciones, .tiles) definidas después le ganaban y seguían visibles los botones Devolver/Rechazar (y podía pasar con la tarjeta de margen de Cobranza). Prueba en interfaz.test.js. - Pago a proveedor en otra moneda: el aviso dice "La orden es en MXN…" (antes "El proyecto…"). Prueba en requisiciones.test.js. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
fdb273793f
commit
5dd33f2af1
8
Code.js
8
Code.js
@ -3207,8 +3207,12 @@ function normalizarPagoProveedor(p, orden) {
|
|||||||
const d = p || {};
|
const d = p || {};
|
||||||
const fecha = validarFechaIso(d.fecha, orden.hoy, 'La fecha del pago');
|
const fecha = validarFechaIso(d.fecha, orden.hoy, 'La fecha del pago');
|
||||||
if (orden.fechaOrden && fecha < orden.fechaOrden) throw new Error('La fecha del pago no puede ser anterior a la orden (' + orden.fechaOrden + ').');
|
if (orden.fechaOrden && fecha < orden.fechaOrden) throw new Error('La fecha del pago no puede ser anterior a la orden (' + orden.fechaOrden + ').');
|
||||||
const pago = normalizarPago(Object.assign({}, d, { fecha: fecha, etapaOrden: 1 }),
|
let pago;
|
||||||
{ moneda: orden.moneda, etapas: 1, hoy: orden.hoy });
|
try {
|
||||||
|
pago = normalizarPago(Object.assign({}, d, { fecha: fecha, etapaOrden: 1 }), { moneda: orden.moneda, etapas: 1, hoy: orden.hoy });
|
||||||
|
} catch (e) {
|
||||||
|
throw new Error(String(e.message).replace('El proyecto es en', 'La orden es en')); // aquí la moneda de referencia es la de la orden
|
||||||
|
}
|
||||||
if (Math.abs(aCentavos(pago.montoAplicado) - aCentavos(orden.total)) > aCentavos(TOLERANCIA_PAGO)) {
|
if (Math.abs(aCentavos(pago.montoAplicado) - aCentavos(orden.total)) > aCentavos(TOLERANCIA_PAGO)) {
|
||||||
throw new Error('El pago (' + formatoMoneda(pago.montoAplicado) + ' ' + orden.moneda + ') debe ser igual al total de la orden (' +
|
throw new Error('El pago (' + formatoMoneda(pago.montoAplicado) + ' ' + orden.moneda + ') debe ser igual al total de la orden (' +
|
||||||
formatoMoneda(orden.total) + ' ' + orden.moneda + ').');
|
formatoMoneda(orden.total) + ' ' + orden.moneda + ').');
|
||||||
|
|||||||
@ -286,6 +286,8 @@ const esperar=async(n=10)=>{for(let i=0;i<n;i++) await new Promise(r=>setImmedia
|
|||||||
B.run('pintarCobranza('+JSON.stringify({...firmada,puedeDesbloquear:true})+')');
|
B.run('pintarCobranza('+JSON.stringify({...firmada,puedeDesbloquear:true})+')');
|
||||||
assert(/Desbloquear contrato/.test(B.$('cobContrato').innerHTML));
|
assert(/Desbloquear contrato/.test(B.$('cobContrato').innerHTML));
|
||||||
|
|
||||||
|
// .oculto gana sobre clases con display propio (.acciones, .tiles…), aunque estén definidas después (pasó en PRUEBAS, 23/10/2026)
|
||||||
|
assert(/\.oculto \{ display:none !important; \}/.test(html),'.oculto con !important');
|
||||||
// ===== Compras (con permiso, sin cobranza): requisiciones → orden → pago → cierre =====
|
// ===== Compras (con permiso, sin cobranza): requisiciones → orden → pago → cierre =====
|
||||||
const C=montar({ivaTasa:0.16,catalogo:CAT,tipoCambio:TC,clientes:[],proyectos:[],marcas:{},permisos:{cobranza:false,desbloqueo:false,compras:true,requisicion:false}});
|
const C=montar({ivaTasa:0.16,catalogo:CAT,tipoCambio:TC,clientes:[],proyectos:[],marcas:{},permisos:{cobranza:false,desbloqueo:false,compras:true,requisicion:false}});
|
||||||
await esperar(5);
|
await esperar(5);
|
||||||
|
|||||||
@ -145,7 +145,7 @@ assert.deepEqual([pp.fecha,pp.monto,pp.monedaPago,pp.tipoCambio,pp.montoAplicado
|
|||||||
assert.equal(P.normalizarPagoProveedor({fecha:'2026-10-21',monto:2319,metodo:'Efectivo'},ORDEN).referencia,'','efectivo sin referencia');
|
assert.equal(P.normalizarPagoProveedor({fecha:'2026-10-21',monto:2319,metodo:'Efectivo'},ORDEN).referencia,'','efectivo sin referencia');
|
||||||
assert.equal(P.normalizarPagoProveedor({fecha:'2026-10-21',monto:125.41,monedaPago:'USD',tipoCambio:18.5,metodo:'Cheque',referencia:'1'},ORDEN).montoAplicado,2320.09);
|
assert.equal(P.normalizarPagoProveedor({fecha:'2026-10-21',monto:125.41,monedaPago:'USD',tipoCambio:18.5,metodo:'Cheque',referencia:'1'},ORDEN).montoAplicado,2320.09);
|
||||||
for(const [mal,re] of [[{monto:2321.01},/debe ser igual al total de la orden \(\$2,320\.00 MXN\)/],[{monto:2318.99},/igual al total/],
|
for(const [mal,re] of [[{monto:2321.01},/debe ser igual al total de la orden \(\$2,320\.00 MXN\)/],[{monto:2318.99},/igual al total/],
|
||||||
[{monto:0},/mayor a 0/],[{monedaPago:'USD',monto:125.41},/tipo de cambio/],[{metodo:'Bitcoin'},/método de pago/],
|
[{monto:0},/mayor a 0/],[{monedaPago:'USD',monto:125.41},/La orden es en MXN y el pago en USD: captura el tipo de cambio/],[{metodo:'Bitcoin'},/método de pago/],
|
||||||
[{referencia:''},/referencia/],[{fecha:'2026-10-23'},/no puede ser futura/],[{fecha:'2026-10-19'},/anterior a la orden/],[{fecha:''},/obligatoria/]]){
|
[{referencia:''},/referencia/],[{fecha:'2026-10-23'},/no puede ser futura/],[{fecha:'2026-10-19'},/anterior a la orden/],[{fecha:''},/obligatoria/]]){
|
||||||
assert.throws(()=>P.normalizarPagoProveedor({fecha:'2026-10-21',monto:2320,metodo:'Transferencia',referencia:'R',...mal},ORDEN),re,JSON.stringify(mal));
|
assert.throws(()=>P.normalizarPagoProveedor({fecha:'2026-10-21',monto:2320,metodo:'Transferencia',referencia:'R',...mal},ORDEN),re,JSON.stringify(mal));
|
||||||
}
|
}
|
||||||
|
|||||||
@ -49,7 +49,7 @@
|
|||||||
.aviso { padding:12px 14px; border-radius:6px; margin-bottom:16px; display:none; }
|
.aviso { padding:12px 14px; border-radius:6px; margin-bottom:16px; display:none; }
|
||||||
.aviso.ok { background:#E6FBF7; border:1px solid var(--teal); display:block; }
|
.aviso.ok { background:#E6FBF7; border:1px solid var(--teal); display:block; }
|
||||||
.aviso.error { background:#FEE2E2; border:1px solid #DC2626; display:block; }
|
.aviso.error { background:#FEE2E2; border:1px solid #DC2626; display:block; }
|
||||||
.oculto { display:none; }
|
.oculto { display:none !important; } /* gana sobre .acciones, .tiles, .grid… (display) aunque estén definidas después */
|
||||||
.fila-cat { cursor:pointer; }
|
.fila-cat { cursor:pointer; }
|
||||||
.fila-cat:hover td { background:var(--cielo); }
|
.fila-cat:hover td { background:var(--cielo); }
|
||||||
.fila-cat.editando td { background:#E6FBF7; }
|
.fila-cat.editando td { background:#E6FBF7; }
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user