From b067811605df61e2094972d5d7834ec54865ad20 Mon Sep 17 00:00:00 2001 From: rakcsle Date: Wed, 3 Jul 2024 15:19:10 -0700 Subject: [PATCH] Compras anticipos amortizacion de compra dolares en pesos --- Compras/Compras.aspx | 201 +++++++++++++++++++++++++--------------- Compras/Compras.aspx.vb | 26 ++++-- 2 files changed, 145 insertions(+), 82 deletions(-) diff --git a/Compras/Compras.aspx b/Compras/Compras.aspx index c2c1cbf6d..32c51a0c3 100644 --- a/Compras/Compras.aspx +++ b/Compras/Compras.aspx @@ -5918,57 +5918,63 @@ } - function chkAnt(t, txt, importe, TotalSaldoCompra, CveMonedaAnticipo, TCAnticipo, CveMonedaOriginal, TCCompra, txtComision) { - var Total = ToDouble($get('TxtTotal').value); - debugger; - var txtvalue = ToDouble(txt.value); - var ImportePago, ImporteCompra; - - var TCC = TCCompra / TCAnticipo; - var importevalue = ToDouble(importe); + function chkAnt(t, txt, importe, TotalSaldoCompra, CveMonedaAnticipo, TCAnticipo, CveMonedaOriginal, TCCompra, txtComision) { + var Total = ToDouble($get('TxtTotal').value); + debugger; + var txtvalue = ToDouble(txt.value); + var ImportePago, ImporteCompra; - if (CveMonedaAnticipo != CveMonedaOriginal) { - if (CveMonedaAnticipo == 1 && CveMonedaOriginal == 2) { - txtvalue = ToDouble(txtvalue / TCAnticipo); - importevalue = ToDouble(importevalue / TCAnticipo); - } else if (CveMonedaAnticipo == 2 && CveMonedaOriginal == 1) { - txtvalue = ToDouble(txtvalue * TCAnticipo); - importevalue = ToDouble(importevalue * TCAnticipo); - } + var TCC = TCCompra / TCAnticipo; + var importevalue = ToDouble(importe); + + if (CveMonedaAnticipo != CveMonedaOriginal) { + if (CveMonedaAnticipo == 1 && CveMonedaOriginal == 2) { + txtvalue = ToDouble(txtvalue / TCAnticipo); + importevalue = ToDouble(importevalue / TCAnticipo); + } else if (CveMonedaAnticipo == 2 && CveMonedaOriginal == 1) { + txtvalue = ToDouble(txtvalue * TCAnticipo); + importevalue = ToDouble(importevalue * TCAnticipo); } - else { TCC = 1; } - var DifSaldo = (TotalSaldoCompra - FnSumaValoresAnt());//.toFixed(2); // le agrego lo del valor actual para validarlo - - - - if (t.checked) - { - if (DifSaldo > importevalue) { - txt.value = toFixed(ToDouble(importevalue * TCC), 2); - } else { - txt.value = toFixed(ToDouble(DifSaldo * TCC), 2); - } - - - if (txtComision !== undefined && txtComision !== null) { - let difFinal = (DifSaldo - importevalue) * TCC; - if (difFinal > 0 && difFinal < 1) { - txtComision.value = toFixed(roundToTwo(difFinal), 2); - } - } - - - } else { - txt.value = ""; - } - - $("#LblTotalAnticipos").text(FormatoNumero(FnSumaValoresAnt(), 2)); - $("#LblAplicadoCompraAnt").text(FormatoNumero(FnSumaValoresAnt(), 2)); - $("#LblAplicadoCompraAntComision").text(FormatoNumero(FnSumaValoresAntComisiones(), 2)); - $("#LblSaldoFactura").text(FormatoNumero(TotalSaldoCompra - FnSumaValoresAnt(), 2)); - - } + else { TCC = 1; } + + var DifSaldo = (TotalSaldoCompra - FnSumaValoresAnt(CveMonedaAnticipo, CveMonedaOriginal));//.toFixed(2); // le agrego lo del valor actual para validarlo + + if (t.checked) { + + + let saldoVal = importevalue; + if (CveMonedaAnticipo == 1 && CveMonedaOriginal == 2) { + saldoVal = ToDouble(importevalue / TCC) + } else if (CveMonedaAnticipo == 2 && CveMonedaOriginal == 1) { + saldoVal = ToDouble(importevalue * TCC) + } + + if (DifSaldo > saldoVal) { + txt.value = toFixed(ToDouble(saldoVal * TCC), 2); + } else { + txt.value = toFixed(ToDouble(DifSaldo * TCC), 2); + } + + + if (txtComision !== undefined && txtComision !== null) { + let difFinal = (DifSaldo - importevalue) * TCC; + if (difFinal > 0 && difFinal < 1) { + txtComision.value = toFixed(roundToTwo(difFinal), 2); + } + } + + } else { + txt.value = ""; + } + + $("#LblTotalAnticipos").text(FormatoNumero(FnSumaValoresAnt(CveMonedaAnticipo, CveMonedaOriginal), 2)); + $("#LblAplicadoCompraAnt").text(FormatoNumero(FnSumaValoresAnt(CveMonedaAnticipo, CveMonedaOriginal), 2)); + $("#LblAplicadoCompraAntComision").text(FormatoNumero(FnSumaValoresAntComisiones(CveMonedaAnticipo, CveMonedaOriginal), 2)); + $("#LblSaldoFactura").text(FormatoNumero(TotalSaldoCompra - FnSumaValoresAnt(CveMonedaAnticipo, CveMonedaOriginal), 2)); + + + } function roundToTwo(num) { return Math.round(num * 100) / 100; @@ -5976,6 +5982,7 @@ function FnCambiaAnt(chk, txt, saldo, TotalSaldo, CveMonedaAnticipo, TCAnticipo, CveMonedaOriginal, txtComision) { + var Total = ToDouble($get('TxtTotal').value); let txtComisionImporte = 0; debugger; @@ -6003,11 +6010,42 @@ txtvalue = ToDouble(txtvalue * TCAnticipo); } - var SaldoCompra = toFixed(TotalSaldo - FnSumaValoresAnt() + ToDouble(txtvalue),2); // le agrego lo del valor actual para validarlo //parseFloat(parseFloat($get('HdnCompraSaldo').value).toFixed(2)); - - if (SaldoCompra < 0) txt.value = SaldoCompra - txtvalue; - //minimo entre saldocompra y el saldoanticipo - if (SaldoCompra < saldo) saldo = SaldoCompra; + let amortizado = ToDouble(FnSumaValoresAnt(CveMonedaAnticipo, CveMonedaOriginal)) - ToDouble(txtvalue) ; + let SaldoCompra = toFixed(TotalSaldo - amortizado, 2); // le agrego lo del valor actual para validarlo //parseFloat(parseFloat($get('HdnCompraSaldo').value).toFixed(2)); + + + if (SaldoCompra < 0) {//minimo entre saldocompra y el saldoanticipo + + if (CveMonedaAnticipo == 1 && CveMonedaOriginal == 2) { + + txt.value = SaldoCompra - ToDouble(txtvalue * TCAnticipo); + + } else if (CveMonedaAnticipo == 2 && CveMonedaOriginal == 1) { + + txt.value = SaldoCompra - ToDouble(txtvalue / TCAnticipo); + + } else { + txt.value = SaldoCompra - txtvalue; + } + } + + let saldoVal = saldo; + if (CveMonedaAnticipo == 1 && CveMonedaOriginal == 2) { + saldoVal = ToDouble(saldo / TCAnticipo) + } else if (CveMonedaAnticipo == 2 && CveMonedaOriginal == 1) { + saldoVal = ToDouble(saldo * TCAnticipo) + } + + if (saldoVal > SaldoCompra ) { + saldo = SaldoCompra; + if (CveMonedaAnticipo == 1 && CveMonedaOriginal == 2) { + saldoVal = ToDouble(saldo / TCAnticipo); + saldo = ToDouble(saldo * TCAnticipo); + } else if (CveMonedaAnticipo == 2 && CveMonedaOriginal == 1) { + saldoVal = ToDouble(saldo * TCAnticipo) + saldo = ToDouble(saldo / TCAnticipo); + } + } if (ToDouble(txtvalue) > 0) { chk.checked = true; @@ -6015,15 +6053,16 @@ chk.checked = false; } - if (ToDouble(txtvalue) > saldo) { - txt.value = saldo; + if (ToDouble(txtvalue) > saldoVal) { + txt.value = FormatoNumero(saldo, 2); alert("El Importe no debe de exceder a el saldo"); - } + } - $("#LblTotalAnticipos").text(FormatoNumero(FnSumaValoresAnt(), 2)); - $("#LblAplicadoCompraAnt").text(FormatoNumero(FnSumaValoresAnt(), 2)); - $("#LblAplicadoCompraAntComision").text(FormatoNumero(FnSumaValoresAntComisiones(), 2)); - $("#LblSaldoFactura").text(FormatoNumero(TotalSaldo - FnSumaValoresAnt(), 2)); + $("#LblTotalAnticipos").text(FormatoNumero(FnSumaValoresAnt(CveMonedaAnticipo, CveMonedaOriginal), 2)); + $("#LblAplicadoCompraAnt").text(FormatoNumero(FnSumaValoresAnt(CveMonedaAnticipo, CveMonedaOriginal), 2)); + $("#LblAplicadoCompraAntComision").text(FormatoNumero(FnSumaValoresAntComisiones(CveMonedaAnticipo, CveMonedaOriginal), 2)); + $("#LblSaldoFactura").text(FormatoNumero(TotalSaldo - FnSumaValoresAnt(CveMonedaAnticipo, CveMonedaOriginal), 2)); + } //funcion para truncar en lugar de redondear @@ -6032,37 +6071,49 @@ return num.toString().match(re)[0]; } - function FnSumaValoresAnt() { - var totalPoints = 0; - var t = ''; + function FnSumaValoresAnt(CveMonedaAnticipo, CveMonedaOriginal) { + + var totalPoints = 0; $('input[name*=TxtAnticipo]').each(function () { - totalPoints += ToDouble($(this).val()); + // totalPoints += ToDouble($(this).val()); + let txtvalue = ToDouble($(this).val()); + //let asdasdasd = $(this).data('tcanticipo'); + let TCAnticipo = ToDouble($(this).data('tcanticipo')); + + if (CveMonedaAnticipo == 1 && CveMonedaOriginal == 2) { + txtvalue = ToDouble(txtvalue / TCAnticipo); + } else if (CveMonedaAnticipo == 2 && CveMonedaOriginal == 1) { + txtvalue = ToDouble(txtvalue * TCAnticipo); + } + totalPoints += txtvalue; }); - //$('span[id*=LbTotal]').each(function () { - // totalPoints += ToDouble($(this).val()); - //}); - let respuesta = Math.round(totalPoints * 100) / 100; - return respuesta + return totalPoints } - function FnSumaValoresAntComisiones() { - var totalPoints = 0; - var t = ''; + function FnSumaValoresAntComisiones(CveMonedaAnticipo, CveMonedaOriginal) { + var totalPoints = 0; $('input[name*=TxtComision]').each(function () { - totalPoints += ToDouble($(this).val()); + //totalPoints += ToDouble($(this).val()); + let txtvalue = ToDouble($(this).val()); + let TCAnticipo = ToDouble($(this).data('tcanticipo')); + if (CveMonedaAnticipo == 1 && CveMonedaOriginal == 2) { + txtvalue = ToDouble(txtvalue / TCAnticipo); + } else if (CveMonedaAnticipo == 2 && CveMonedaOriginal == 1) { + txtvalue = ToDouble(txtvalue * TCAnticipo); + } + totalPoints += txtvalue; }); let respuesta = Math.round(totalPoints * 100) / 100; - return respuesta + return totalPoints } - function FnCambiaFacturaNC(saldo, txt, total, txtaplicado, chk) { var SumaImporte = 0, Importe = 0; diff --git a/Compras/Compras.aspx.vb b/Compras/Compras.aspx.vb index 69cde82c2..46dc9e0b8 100644 --- a/Compras/Compras.aspx.vb +++ b/Compras/Compras.aspx.vb @@ -8362,8 +8362,19 @@ Partial Class Compras_Compras Pago.TCPago = TipoCambioAnt Pago.CveProveedor = gvr.DataKey("CveProveedor").ToEntero - If ChkPagarConPesos.Checked Then Pago.TCCambioMoneda = 1 / TipoCambioAnt - If ChkPagarConDolares.Checked Then Pago.TCCambioMoneda = TipoCambioAnt + Dim tTCFecha As Double = If(Not gvr.DataKey("TCCompra").ToDouble > 1, GlobalTipoCambio(gvr.DataKey("Fecha").ToDate), gvr.DataKey("TCCompra").ToDouble) + + If ChkPagarConPesos.Checked Then + Pago.TCCambioMoneda = 1 / TipoCambioAnt + If CveMoneda = 2 Then + 'Pago.TCCambioMoneda = tTCFecha.ToDecimal + Pago.TCCambioMoneda = 1 / tTCFecha.ToDecimal + End If + End If + + If ChkPagarConDolares.Checked Then + Pago.TCCambioMoneda = TipoCambioAnt + End If Select Case gvr.DataKey("TipoDocto") Case "NC", "DEV", "RNC" @@ -8415,10 +8426,10 @@ Partial Class Compras_Compras If ErrorMovtosCxP = 0 AndAlso Not ObjConta.ValidacionesPrePoliza(CvePrePolizaNueva, UsuarioActual) Then ErrorMovtosCxP = 1 - 'If ObjConta.ValorPolizaDescuadre > 0 Then - ' GuardaLogAD($"Compras/Compras-Guardar | Error{ObjConta.MensajePolizaDescuadre} Diferencia{ObjConta.ValorDiferencia} | CvePrePoliza:{CvePrePoliza}", "LogPrePolizas") - ' ErrorPrepolizaDescuadre = True - 'End If + If ObjConta.ValorPolizaDescuadre > 0 Then + GuardaLogAD($"Compras/Compras-Guardar | Error{ObjConta.MensajePolizaDescuadre} Diferencia{ObjConta.ValorDiferencia} | CvePrePoliza:{CvePrePoliza}", "LogPrePolizas") + + End If End If Select Case ErrorMovtosCxP @@ -9780,8 +9791,9 @@ Partial Class Compras_Compras Dim tTCFecha As Double = If(Not e.Row.DBCampo("TCCompra").ToDouble > 1, GlobalTipoCambio(e.Row.DBCampo("Fecha").ToDate), e.Row.DBCampo("TCCompra").ToDouble) + e.Row.FCTextBox("TxtAnticipo").Attributes.Add("data-tcanticipo", tTCFecha.ToString) - Dim TCAnt As Decimal = If(DdlMoneda.SelectedValue = "1", 1, If(CveCompra > 0, LblTC.Text.ToDecimal, TxtTC.Text.ToDecimal)) + Dim TCAnt As Decimal = If(DdlMoneda.SelectedValue = "1", 1, If(CveCompra > 0, LblTC.Text.Replace("TC:", "").ToDecimal, TxtTC.Text.ToDecimal)) If UsuarioActual.Empresa.CveEmpresa.Contiene(13, 83) Then