From d883d914e4f116c81af556c1d0a54f035b03e649 Mon Sep 17 00:00:00 2001 From: Raul Pimienta Date: Tue, 12 Nov 2019 23:16:46 -0700 Subject: [PATCH] Se podran pagar facturas con egresos x comprobar de diferente moneda --- Compras/Compras.aspx | 51 ++++++++++++++++++++++----- Compras/Compras.aspx.vb | 77 +++++++++++++++++++++++++++++++---------- 2 files changed, 100 insertions(+), 28 deletions(-) diff --git a/Compras/Compras.aspx b/Compras/Compras.aspx index aadfa696e..e5d9d7edc 100644 --- a/Compras/Compras.aspx +++ b/Compras/Compras.aspx @@ -2657,6 +2657,21 @@
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+
@@ -5234,18 +5249,29 @@ - function chkAnt(t, txt, importe, TotalSaldo) { + function chkAnt(t, txt, importe, TotalSaldo,CveMonedaAnticipo,TCAnticipo,CveMonedaOriginal) { var Total = ToDouble($get('TxtTotal').value); //TotalSaldo = Total; + var txtvalue = ToDouble(txt.value); + var importevalue = ToDouble(importe); + 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 SaldoCompra = parseFloat(parseFloat($get('HdnCompraSaldo').value).toFixed(2)); - var SaldoCompra = (TotalSaldo - FnSumaValoresAnt() + ToDouble(txt.value)).toFixed(2); // le agrego lo del valor actual para validarlo + var SaldoCompra = (TotalSaldo - FnSumaValoresAnt() + txtvalue).toFixed(2); // le agrego lo del valor actual para validarlo + + if (t.checked) { if (SaldoCompra > 0) { - if (SaldoCompra > importe) { - txt.value = ToDouble(importe).toFixed(2); + if (SaldoCompra > importevalue) { + txt.value = ToDouble(importevalue).toFixed(2); //SaldoCompra = SaldoCompra - importe; //$get('HdnCompraSaldo').value = SaldoCompra; @@ -5273,21 +5299,28 @@ } - function FnCambiaAnt(chk, txt, saldo, TotalSaldo) { + function FnCambiaAnt(chk, txt, saldo, TotalSaldo, CveMonedaAnticipo, TCAnticipo, CveMonedaOriginal) { var Total = ToDouble($get('TxtTotal').value); - var SaldoCompra = (TotalSaldo - FnSumaValoresAnt() + ToDouble(txt.value)).toFixed(2); // le agrego lo del valor actual para validarlo //parseFloat(parseFloat($get('HdnCompraSaldo').value).toFixed(2)); - if (SaldoCompra < 0) txt.value = SaldoCompra - txt.value; + var txtvalue = ToDouble(txt.value); + if (CveMonedaAnticipo = 1 && CveMonedaOriginal == 2) { + txtvalue = ToDouble(txtvalue / TCAnticipo); + } else if (CveMonedaAnticipo = 2 && CveMonedaOriginal == 1) { + txtvalue = ToDouble(txtvalue * TCAnticipo); + } + + var SaldoCompra = (TotalSaldo - FnSumaValoresAnt() + ToDouble(txtvalue)).toFixed(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; - if (ToDouble(txt.value) > 0) { + if (ToDouble(txtvalue) > 0) { chk.checked = true; } else { chk.checked = false; } - if (ToDouble(txt.value) > saldo) { + if (ToDouble(txtvalue) > saldo) { txt.value = saldo; alert("El Importe no debe de exceder a el saldo"); } diff --git a/Compras/Compras.aspx.vb b/Compras/Compras.aspx.vb index 4472026cd..aec716686 100644 --- a/Compras/Compras.aspx.vb +++ b/Compras/Compras.aspx.vb @@ -3238,8 +3238,10 @@ Partial Class Compras_Compras Private Sub CargaAnticipos(CveProveedor As Integer, Optional FiltroTipo As String = "-1") Dim ObjMovtos As New ClsMovimientos() - If ObjMovtos.GetAnticiposProveedor(CveProveedor, -1, CveMoneda:=DdlMoneda.SelectedValue.ToEntero, SelectTop:=-1, TipoDocto:=FiltroTipo) AndAlso ObjMovtos.DtResultados.Rows.Count > 0 Then - GVAnticipos.DataSource = ObjMovtos.DtResultados.FiltraParametros("Tipo = 'Act'") + If ObjMovtos.GetAnticiposProveedor(CveProveedor, -1, CveMoneda:=-1, SelectTop:=-1, TipoDocto:=FiltroTipo) AndAlso ObjMovtos.DtResultados.Rows.Count > 0 Then + Dim CveMoneda As Integer = If(ChkPagarConPesos.Checked, 1, If(ChkPagarConDolares.Checked, 2, DdlMoneda.SelectedValue.ToEntero)) + If DdlMoneda.SelectedValue.ToEntero = 1 Then DivPagarConDolares.Visible = True Else DivPagarConPesos.Visible = True + GVAnticipos.DataSource = ObjMovtos.DtResultados.FiltraParametros($"Tipo = 'Act' AND CveMoneda = {CveMoneda}") If ObjMovtos.DtResultados.FiltraParametros("Saldo > 0").Rows.Count > 0 Then BtnAceptarAnticipos.Enabled = True If DdlTipoComprobante.SelectedValue = "Fac" Then ImgAnticiposPendientes.Visible = True @@ -8037,7 +8039,7 @@ Partial Class Compras_Compras If gvr.FCCheckBox("Chk") IsNot Nothing AndAlso gvr.FCCheckBox("Chk").Checked Then CveCompraNC = gvr.DataKey("CveCompra").ToEntero - tipoCambioNC = gvr.DataKey("TCCompra").ToDecimal + tipoCambioNC = If(ChkPagarConPesos.Checked, GlobalTipoCambio(gvr.DataKey("Fecha").ToDate).ToDecimal, gvr.DataKey("TCCompra").ToDecimal) sumaAmortizacion = 0 If CvePrePolizaNueva > 0 Then @@ -8064,7 +8066,13 @@ Partial Class Compras_Compras ImporteMovimiento = gvr.FCTextBox("TxtAnticipo").Text.ToDecimal importeMN = ImporteMovimiento * tipoCambioNC sumaAmortizacion += ImporteMovimiento - sumaAmortizacionCompleto += ImporteMovimiento + sumaAmortizacionCompleto += ImporteMovimiento + + If ChkPagarConPesos.Checked Then + ImporteMovimiento = ImporteMovimiento * GlobalTipoCambio(gvr.DataKey("Fecha").ToDate).ToDecimal + ElseIf ChkPagarConDolares.Checked Then + ImporteMovimiento = ImporteMovimiento / gvr.DataKey("TCCompra").ToDecimal + End If If DdlMoneda.SelectedValue.ToEntero <> 1 Then IdCtaContable = CtaProveedorAnticiposExtranjera @@ -8101,7 +8109,13 @@ Partial Class Compras_Compras ImporteMovimiento = gvr.FCTextBox("TxtAnticipo").Text.ToDecimal importeMN = ImporteMovimiento * tipoCambioNC sumaAmortizacion += ImporteMovimiento - sumaAmortizacionCompleto += ImporteMovimiento + sumaAmortizacionCompleto += ImporteMovimiento + + If ChkPagarConPesos.Checked Then + ImporteMovimiento = ImporteMovimiento * GlobalTipoCambio(gvr.DataKey("Fecha").ToDate).ToDecimal + ElseIf ChkPagarConDolares.Checked Then + ImporteMovimiento = ImporteMovimiento / gvr.DataKey("TCCompra").ToDecimal + End If If DdlMoneda.SelectedValue.ToEntero <> 1 And UsuarioActual.CveEmpresa.Contiene(119) Then IdCtaContable = CtaProveedorExtranjera @@ -8138,15 +8152,24 @@ Partial Class Compras_Compras sumaAmortizacion += ImporteMovimiento sumaAmortizacionCompleto += ImporteMovimiento IdCtaContable = CtaProveedorAnticipos - CveCuenta = CveCuentaProveedorAnticipos - If ImporteMovimiento <> 0 Then - PorcentajePago = ImporteMovimiento / TxtTotal.Text.ToDecimal + CveCuenta = CveCuentaProveedorAnticipos + + PorcentajePago = ImporteMovimiento / TxtTotal.Text.ToDecimal + + If ChkPagarConPesos.Checked Then + ImporteMovimiento = ImporteMovimiento * GlobalTipoCambio(gvr.DataKey("Fecha").ToDate).ToDecimal + ElseIf ChkPagarConDolares.Checked Then + ImporteMovimiento = ImporteMovimiento / gvr.DataKey("TCCompra").ToDecimal + End If + + If ImporteMovimiento <> 0 Then + + Dim TipoCambioAnt = gvr.DataKey("TCCompra").ToDecimal - Dim TipoCambioAnt = gvr.DataKey("TCCompra").ToDecimal Dim usacomplementariaAnticipo As Boolean = False - usacomplementariaAnticipo = If(TipoCambioAnt > 1 AndAlso UsuarioActual.CveEmpresa.Contiene(1, 119), True, False) - - + usacomplementariaAnticipo = If(TipoCambioAnt > 1 AndAlso UsuarioActual.CveEmpresa.Contiene(1, 119), True, False) + + Dim ImporteAnt As Decimal = ImporteMovimiento Dim ImporteAntMN As Decimal = ImporteAnt * TipoCambioAnt If usacomplementariaAnticipo Then @@ -8166,7 +8189,9 @@ Partial Class Compras_Compras If Not ObjConta.AddPrePolizasDetalle(CvePrePolizaNueva, TipoMovimiento, ImporteAnt, "", ConceptoContable, ConceptoPartida, Fecha, IdCtaContable, -1, CveCompra:=CveCompra, CveProveedor:=CveProveedor, CveIE:=CveIE, ImporteMX:=ImporteAntMN, CvePrePolizaOriginal:=CvePrePolizaNueva, ImporteME:=If(tipoCambio = 1, 0, ImporteAnt), CveCompraAmortizacion:=CveCompraNC, CveCuenta:=CveCuenta) Then ErrorMovtosCxP = 1 - End If + End If + + TipoCambioAnt = If(ChkPagarConPesos.Checked, GlobalTipoCambio(gvr.DataKey("Fecha").ToDate).ToDecimal, gvr.DataKey("TCCompra").ToDecimal) If tipoCambio <> TipoCambioAnt Then Dim importeFluctuacion = (ImporteAnt * tipoCambio) - (ImporteAnt * TipoCambioAnt) @@ -8565,8 +8590,9 @@ Partial Class Compras_Compras If DdlMoneda.SelectedValue.ToEntero <> 1 Or gvr.DataKey("CveMoneda").ToEntero <> 1 Then IdCtaContable = UsuarioActual.Empresa.IdCuentaGananciaCambiaria CveCuenta = UsuarioActual.Empresa.CveCuentaGananciaCambiaria - If TipoCambioCompra > tipoCambioNC Then - ImporteMovimiento = (sumaAmortizacion * TipoCambioCompra) - (sumaAmortizacion * tipoCambioNC) + Dim TipoCambioDiferenciaCambiaria = If(ChkPagarConPesos.Checked, GlobalTipoCambio(gvr.DataKey("Fecha").ToDate).ToDecimal, tipoCambioNC) + If TipoCambioCompra > TipoCambioDiferenciaCambiaria Then + ImporteMovimiento = (sumaAmortizacion * TipoCambioCompra) - (sumaAmortizacion * TipoCambioDiferenciaCambiaria) ImporteMovimiento = ImporteMovimiento.RoundSQL() importeMN = ImporteMovimiento End If @@ -8586,8 +8612,9 @@ Partial Class Compras_Compras If DdlMoneda.SelectedValue.ToEntero <> 1 Or gvr.DataKey("CveMoneda").ToEntero <> 1 Then IdCtaContable = UsuarioActual.Empresa.IdCuentaPerdidaCambiaria CveCuenta = UsuarioActual.Empresa.CveCuentaPerdidaCambiaria - If tipoCambioNC > TipoCambioCompra Then - ImporteMovimiento = (sumaAmortizacion * tipoCambioNC) - (sumaAmortizacion * TipoCambioCompra) + Dim TipoCambioDiferenciaCambiaria = If(ChkPagarConPesos.Checked, GlobalTipoCambio(gvr.DataKey("Fecha").ToDate).ToDecimal, tipoCambioNC) + If TipoCambioDiferenciaCambiaria > TipoCambioCompra Then + ImporteMovimiento = (sumaAmortizacion * TipoCambioDiferenciaCambiaria) - (sumaAmortizacion * TipoCambioCompra) ImporteMovimiento = ImporteMovimiento.RoundSQL() importeMN = ImporteMovimiento End If @@ -10064,8 +10091,8 @@ Partial Class Compras_Compras If e.Row.DBCampo("Saldo").ToDouble < 0 Then e.Row.Cells(3).ForeColor = Drawing.Color.Red If e.Row.DBCampo("Saldo").ToDouble = 0 Then e.Row.FCLiteral("LtlAnticipos").Text = "" - e.Row.FCCheckBox("Chk").Attributes.Add("onclick", String.Format("chkAnt(this,{0},{1},{2});", e.Row.FCTextBox("TxtAnticipo").ClientID, e.Row.DBCampo("Saldo"), If(CveCompra > 0, Saldo, If(ListaDocumentos IsNot Nothing AndAlso ListaDocumentos.Count > 0 AndAlso ArrAnticipos IsNot Nothing AndAlso ArrAnticipos.Count > 0 AndAlso TxtTotal.Text.ToDecimal = 0, TmpDT.SUMD("ImporteConImpuestos"), TxtTotal.Text.ToDouble)))) 'SI ES UNA COMPRA NUEVA SE PONE EL TOTAL, SI NO EL SALDO - e.Row.FCTextBox("TxtAnticipo").Attributes.Add("onKeyUp", String.Format("FnCambiaAnt({0},this,{1},{2});", e.Row.FCCheckBox("Chk").ClientID, e.Row.DBCampo("Saldo"), If(CveCompra > 0, Saldo, If(ListaDocumentos IsNot Nothing AndAlso ListaDocumentos.Count > 0 AndAlso ArrAnticipos IsNot Nothing AndAlso ArrAnticipos.Count > 0 AndAlso TxtTotal.Text.ToDecimal = 0, TmpDT.SUMD("ImporteConImpuestos"), TxtTotal.Text.ToDouble)))) 'SI ES UNA COMPRA NUEVA SE PONE EL TOTAL, SI NO EL SALDO + e.Row.FCCheckBox("Chk").Attributes.Add("onclick", String.Format("chkAnt(this,{0},{1},{2});", e.Row.FCTextBox("TxtAnticipo").ClientID, e.Row.DBCampo("Saldo"), If(CveCompra > 0, Saldo, If(ListaDocumentos IsNot Nothing AndAlso ListaDocumentos.Count > 0 AndAlso ArrAnticipos IsNot Nothing AndAlso ArrAnticipos.Count > 0 AndAlso TxtTotal.Text.ToDecimal = 0, TmpDT.SUMD("ImporteConImpuestos"), TxtTotal.Text.ToDouble)), e.Row.DBCampo("CveMoneda").ToEntero, If(Not e.Row.DBCampo("TCCompra").ToDouble > 1, GlobalTipoCambio(e.Row.DBCampo("Fecha").ToDate), e.Row.DBCampo("TCCompra").ToDouble), DdlMoneda.SelectedValue.ToEntero)) 'SI ES UNA COMPRA NUEVA SE PONE EL TOTAL, SI NO EL SALDO + e.Row.FCTextBox("TxtAnticipo").Attributes.Add("onKeyUp", String.Format("FnCambiaAnt({0},this,{1},{2});", e.Row.FCCheckBox("Chk").ClientID, e.Row.DBCampo("Saldo"), If(CveCompra > 0, Saldo, If(ListaDocumentos IsNot Nothing AndAlso ListaDocumentos.Count > 0 AndAlso ArrAnticipos IsNot Nothing AndAlso ArrAnticipos.Count > 0 AndAlso TxtTotal.Text.ToDecimal = 0, TmpDT.SUMD("ImporteConImpuestos"), TxtTotal.Text.ToDouble)), e.Row.DBCampo("CveMoneda").ToEntero, If(Not e.Row.DBCampo("TCCompra").ToDouble > 1, GlobalTipoCambio(e.Row.DBCampo("Fecha").ToDate), e.Row.DBCampo("TCCompra").ToDouble), DdlMoneda.SelectedValue.ToEntero)) 'SI ES UNA COMPRA NUEVA SE PONE EL TOTAL, SI NO EL SALDO If ChkNCInv.Checked Then e.Row.FCCheckBox("Chk").CssClass = "ChkAntNC" @@ -19017,4 +19044,16 @@ Partial Class Compras_Compras End If End If End Sub + +#Region "PAGAR CON DIFERENTE MONEDA" + Protected Sub ChkPagarConPesos_CheckedChanged(sender As Object, e As EventArgs) + CargaAnticipos(CveProveedor) + UpAnticipos.Update() + End Sub + Protected Sub ChkPagarConDolares_CheckedChanged(sender As Object, e As EventArgs) + CargaAnticipos(CveProveedor) + UpAnticipos.Update() + End Sub +#End Region + End Class \ No newline at end of file