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