From e7df9dc2bf01c1cba1ad5366f09d630595045ad9 Mon Sep 17 00:00:00 2001 From: rrene Date: Thu, 2 Jun 2022 18:58:48 -0700 Subject: [PATCH 01/21] =?UTF-8?q?--=20fecha=20fin=20se=20incrementa=203=20?= =?UTF-8?q?d=C3=ADas?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Inventarios/EntregaAlmacenRuta.aspx.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Inventarios/EntregaAlmacenRuta.aspx.cs b/Inventarios/EntregaAlmacenRuta.aspx.cs index 9fe1c890f..89cf1346b 100644 --- a/Inventarios/EntregaAlmacenRuta.aspx.cs +++ b/Inventarios/EntregaAlmacenRuta.aspx.cs @@ -423,7 +423,7 @@ public partial class Inventarios_EntregaAlmacenRuta : ClsPaginas DdlUnidadRec.DataBind(); TxtFechaI.Text = DateTime.Now.AddDays(-1).ToShortDateString(); - TxtFechaF.Text = DateTime.Now.ToShortDateString(); + TxtFechaF.Text = DateTime.Now.AddDays(3).ToShortDateString(); DdlChofer.DataSource = get_GlobalDTChoferes(UsuarioActual.CveEmpresa); DdlChofer.DataBind(); From 10d45f68893a6feff8a0ff4a90facf7ff0874011 Mon Sep 17 00:00:00 2001 From: rrene Date: Fri, 3 Jun 2022 16:28:00 -0700 Subject: [PATCH 02/21] -- complemento de pago - TC --- App_Code/CFDITimbre.vb | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/App_Code/CFDITimbre.vb b/App_Code/CFDITimbre.vb index 85197ff2d..928706684 100644 --- a/App_Code/CFDITimbre.vb +++ b/App_Code/CFDITimbre.vb @@ -456,11 +456,11 @@ Public Class CFDIComplementoPagos Public ReadOnly Property Totales As CFDIComplementoPagosTotales Get Dim tRetorno As New CFDIComplementoPagosTotales - tRetorno.MontoTotalPagos = (From c In DocumentosRelacionados Select c.ImpPagado).Sum() + tRetorno.MontoTotalPagos = (From c In DocumentosRelacionados Select c.ImpPagado * TipoCambioP).Sum() - tRetorno.TotalTrasladosBaseIVA0 = (From c In Traslados Where c.Impuesto = "002" And c.TasaOCuota = 0 Select c.Base).Sum() - tRetorno.TotalTrasladosBaseIVA8 = (From c In Traslados Where c.Impuesto = "002" And c.TasaOCuota = 0.08 Select c.Base).Sum() - tRetorno.TotalTrasladosBaseIVA16 = (From c In Traslados Where c.Impuesto = "002" And c.TasaOCuota = 0.16 Select c.Base).Sum() + tRetorno.TotalTrasladosBaseIVA0 = (From c In Traslados Where c.Impuesto = "002" And c.TasaOCuota = 0 Select c.Base * TipoCambioP).Sum() + tRetorno.TotalTrasladosBaseIVA8 = (From c In Traslados Where c.Impuesto = "002" And c.TasaOCuota = 0.08 Select c.Base * TipoCambioP).Sum() + tRetorno.TotalTrasladosBaseIVA16 = (From c In Traslados Where c.Impuesto = "002" And c.TasaOCuota = 0.16 Select c.Base * TipoCambioP).Sum() tRetorno.TotalTrasladosImpuestoIVA0 = (From c In Traslados Where c.Impuesto = "002" And c.TasaOCuota = 0 Select c.Importe).Sum() tRetorno.TotalTrasladosImpuestoIVA8 = (From c In Traslados Where c.Impuesto = "002" And c.TasaOCuota = 0.08 Select c.Importe).Sum() From fc08c9eadf2f58001a311435621defc458d368c1 Mon Sep 17 00:00:00 2001 From: rrene Date: Fri, 3 Jun 2022 16:28:14 -0700 Subject: [PATCH 03/21] --mejora en manejo de fluctua --- Bancos/ProveedoresAbonar.aspx.vb | 114 +++++++++++++++++++------------ 1 file changed, 69 insertions(+), 45 deletions(-) diff --git a/Bancos/ProveedoresAbonar.aspx.vb b/Bancos/ProveedoresAbonar.aspx.vb index c730a91a5..7da7906d5 100644 --- a/Bancos/ProveedoresAbonar.aspx.vb +++ b/Bancos/ProveedoresAbonar.aspx.vb @@ -39,7 +39,7 @@ Partial Class Bancos_ProveedoresAbonar Private Property CveUsuarioProgramo As Integer Get - Return ViewState("CveUsuarioProgramo").ToString.ToEntero + Return IfNull(ViewState("CveUsuarioProgramo"), "-1").ToString.ToEntero End Get Set(value As Integer) ViewState("CveUsuarioProgramo") = value @@ -1282,51 +1282,76 @@ Partial Class Bancos_ProveedoresAbonar Case 64 'Ganancia If CveMoneda <> 1 OrElse gvr.DataKey("CveMoneda").ToEntero <> 1 Then + Dim tImporteCompra, tImportePago As Decimal + Dim Diferencia As Decimal = 0 - IdCtaContable = UsuarioActual.Empresa.IdCuentaGananciaCambiaria - 'tipoCambioVentaDiferenciaCambiaria = If(gvr.DataKey("Fecha").ToDate < FechaUltimaFluctuacion, TipoCambioFluctuacion, gvr.DataKey("TipoCambio").ToDecimal) - Dim TCImpuestos As Decimal = If(FuncionalidadFluctuacionImpuestos, TipoCambioPago, tipoCambioCompra) - - - Dim Diferencia As Decimal = ((gvr.FCTextBox("TxtAbonar").Text.ToDecimal) * tipoCambioCompraValuacion) - ((gvr.FCTextBox("TxtAbonar").Text.ToDecimal) * TipoCambioPago) 'Añadimos la diferencia de perdida en la venta - Diferencia -= ((gvr.DataKey("IVA").ToDecimal * PorcentajePago) * tipoCambioCompra) - ((gvr.DataKey("IVA").ToDecimal * PorcentajePago) * TCImpuestos) 'Añadimos la diferencia de ganancia en el IVA - Diferencia += ((gvr.DataKey("RetIVA").ToDecimal * PorcentajePago) * tipoCambioCompra) - ((gvr.DataKey("RetIVA").ToDecimal * PorcentajePago) * TCImpuestos) 'Añadimos la diferencia de ganancia en el RetIVA - Diferencia += ((gvr.DataKey("RetISR").ToDecimal * PorcentajePago) * tipoCambioCompra) - ((gvr.DataKey("RetISR").ToDecimal * PorcentajePago) * TCImpuestos) 'Añadimos la diferencia de ganancia en el RetISR - Diferencia -= ((gvr.DataKey("IEPS").ToDecimal * PorcentajePago) * tipoCambioCompra) - ((gvr.DataKey("IEPS").ToDecimal * PorcentajePago) * TCImpuestos) 'Añadimos la diferencia de ganancia en el IEPS - Diferencia = Math.Round(Diferencia, 2) - - '' se considera, las diferencias, y no el tipo de cambio, por el caso de las fluctuaciones - - '' si tiene funcionalidad de flucturación con ivas, tomar tipocambioventa - If Diferencia > 0 AndAlso gvr.DataKey("CveMoneda").ToEntero = 2 Then - ImporteMovimiento = Math.Abs(Diferencia) - importeMX = ImporteMovimiento + If gvr.DataKey("CveMoneda").ToEntero = 1 And CveMoneda <> 1 Then + 'factura pesos, pago en dolares + tImporteCompra = gvr.FCTextBox("TxtAbonar").Text.ToDecimal.RoundSQL + tImportePago = (((gvr.FCTextBox("TxtAbonar").Text.ToDecimal) * tipoCambioCompra / TipoCambioPago).RoundSQL * TipoCambioPago).RoundSQL + ElseIf gvr.DataKey("CveMoneda").ToEntero <> 1 And CveMoneda <> 1 Then + 'factura dolares, pago en dolares + tImporteCompra = ((gvr.FCTextBox("TxtAbonar").Text.ToDecimal) * tipoCambioCompraValuacion).RoundSQL + tImportePago = ((gvr.FCTextBox("TxtAbonar").Text.ToDecimal) * TipoCambioPago).RoundSQL + ElseIf gvr.DataKey("CveMoneda").ToEntero <> 1 And CveMoneda = 1 Then + 'factura dolares, pago en pesos + tImporteCompra = ((gvr.FCTextBox("TxtAbonar").Text.ToDecimal) * tipoCambioCompraValuacion).RoundSQL + tImportePago = ((gvr.FCTextBox("TxtAbonar").Text.ToDecimal) * TipoCambioPago).RoundSQL End If + If tImporteCompra <> tImportePago Then + If tImporteCompra < tImportePago Then + ConceptoContable = 64 + IdCtaContable = UsuarioActual.Empresa.IdCuentaGananciaCambiaria + TipoMovimiento = True + 'CveCuenta = UsuarioActual.Empresa.CveCuentaGananciaCambiaria + Else + ConceptoContable = 65 + IdCtaContable = UsuarioActual.Empresa.IdCuentaPerdidaCambiaria + TipoMovimiento = False + ' CveCuenta = UsuarioActual.Empresa.CveCuentaPerdidaCambiaria + End If + Diferencia = tImporteCompra - tImportePago + + End If + + If FuncionalidadFluctuacionImpuestos Then + Dim TCImpuestos As Decimal = If(FuncionalidadFluctuacionImpuestos, TipoCambioPago, tipoCambioCompra) + Diferencia = ((gvr.FCTextBox("TxtAbonar").Text.ToDecimal) * tipoCambioCompraValuacion) - ((gvr.FCTextBox("TxtAbonar").Text.ToDecimal) * TipoCambioPago) 'Añadimos la diferencia de perdida en la venta + Diferencia -= ((gvr.DataKey("IVA").ToDecimal * PorcentajePago) * tipoCambioCompra) - ((gvr.DataKey("IVA").ToDecimal * PorcentajePago) * TCImpuestos) 'Añadimos la diferencia de ganancia en el IVA + Diferencia += ((gvr.DataKey("RetIVA").ToDecimal * PorcentajePago) * tipoCambioCompra) - ((gvr.DataKey("RetIVA").ToDecimal * PorcentajePago) * TCImpuestos) 'Añadimos la diferencia de ganancia en el RetIVA + Diferencia += ((gvr.DataKey("RetISR").ToDecimal * PorcentajePago) * tipoCambioCompra) - ((gvr.DataKey("RetISR").ToDecimal * PorcentajePago) * TCImpuestos) 'Añadimos la diferencia de ganancia en el RetISR + Diferencia -= ((gvr.DataKey("IEPS").ToDecimal * PorcentajePago) * tipoCambioCompra) - ((gvr.DataKey("IEPS").ToDecimal * PorcentajePago) * TCImpuestos) 'Añadimos la diferencia de ganancia en el IEPS + Diferencia = Diferencia.RoundSQL + End If + + ImporteMovimiento = Math.Abs(Diferencia) + importeMX = ImporteMovimiento + Else ImporteMovimiento = 0 End If - Case 65 'Perdida - If CveMoneda <> 1 OrElse gvr.DataKey("CveMoneda").ToEntero <> 1 Then + 'Case 65 'Perdida + ' If CveMoneda <> 1 OrElse gvr.DataKey("CveMoneda").ToEntero <> 1 Then - IdCtaContable = UsuarioActual.Empresa.IdCuentaPerdidaCambiaria - 'tipoCambioVentaDiferenciaCambiaria = If(gvr.DataKey("Fecha").ToDate < FechaUltimaFluctuacion, TipoCambioFluctuacion, gvr.DataKey("TipoCambio").ToDecimal) - Dim TCImpuestos As Decimal = If(FuncionalidadFluctuacionImpuestos, TipoCambioPago, tipoCambioCompra) + ' IdCtaContable = UsuarioActual.Empresa.IdCuentaPerdidaCambiaria + ' 'tipoCambioVentaDiferenciaCambiaria = If(gvr.DataKey("Fecha").ToDate < FechaUltimaFluctuacion, TipoCambioFluctuacion, gvr.DataKey("TipoCambio").ToDecimal) + ' Dim TCImpuestos As Decimal = If(FuncionalidadFluctuacionImpuestos, TipoCambioPago, tipoCambioCompra) - Dim Diferencia As Decimal = ((gvr.FCTextBox("TxtAbonar").Text.ToDecimal) * tipoCambioCompraValuacion) - ((gvr.FCTextBox("TxtAbonar").Text.ToDecimal) * TipoCambioPago) 'Añadimos la diferencia de perdida en la venta - Diferencia -= ((gvr.DataKey("IVA").ToDecimal * PorcentajePago) * tipoCambioCompra) - ((gvr.DataKey("IVA").ToDecimal * PorcentajePago) * TCImpuestos) 'Añadimos la diferencia de ganancia en el IVA - Diferencia += ((gvr.DataKey("RetIVA").ToDecimal * PorcentajePago) * tipoCambioCompra) - ((gvr.DataKey("RetIVA").ToDecimal * PorcentajePago) * TCImpuestos) 'Añadimos la diferencia de ganancia en el RetIVA - Diferencia += ((gvr.DataKey("RetISR").ToDecimal * PorcentajePago) * tipoCambioCompra) - ((gvr.DataKey("RetISR").ToDecimal * PorcentajePago) * TCImpuestos) 'Añadimos la diferencia de ganancia en el RetISR - Diferencia -= ((gvr.DataKey("IEPS").ToDecimal * PorcentajePago) * tipoCambioCompra) - ((gvr.DataKey("IEPS").ToDecimal * PorcentajePago) * TCImpuestos) 'Añadimos la diferencia de ganancia en el IEPS - Diferencia = Math.Round(Diferencia, 2) - 'si la diferencia es negativa es pérdida, si es positiva es ganancia - If Diferencia < 0 AndAlso gvr.DataKey("CveMoneda").ToEntero = 2 Then - ImporteMovimiento = Math.Abs(Diferencia) - importeMX = ImporteMovimiento - End If - Else - ImporteMovimiento = 0 - End If + ' Dim Diferencia As Decimal = ((gvr.FCTextBox("TxtAbonar").Text.ToDecimal) * tipoCambioCompraValuacion) - ((gvr.FCTextBox("TxtAbonar").Text.ToDecimal) * TipoCambioPago) 'Añadimos la diferencia de perdida en la venta + ' Diferencia -= ((gvr.DataKey("IVA").ToDecimal * PorcentajePago) * tipoCambioCompra) - ((gvr.DataKey("IVA").ToDecimal * PorcentajePago) * TCImpuestos) 'Añadimos la diferencia de ganancia en el IVA + ' Diferencia += ((gvr.DataKey("RetIVA").ToDecimal * PorcentajePago) * tipoCambioCompra) - ((gvr.DataKey("RetIVA").ToDecimal * PorcentajePago) * TCImpuestos) 'Añadimos la diferencia de ganancia en el RetIVA + ' Diferencia += ((gvr.DataKey("RetISR").ToDecimal * PorcentajePago) * tipoCambioCompra) - ((gvr.DataKey("RetISR").ToDecimal * PorcentajePago) * TCImpuestos) 'Añadimos la diferencia de ganancia en el RetISR + ' Diferencia -= ((gvr.DataKey("IEPS").ToDecimal * PorcentajePago) * tipoCambioCompra) - ((gvr.DataKey("IEPS").ToDecimal * PorcentajePago) * TCImpuestos) 'Añadimos la diferencia de ganancia en el IEPS + ' Diferencia = Math.Round(Diferencia, 2) + ' 'si la diferencia es negativa es pérdida, si es positiva es ganancia + ' If Diferencia < 0 AndAlso gvr.DataKey("CveMoneda").ToEntero = 2 Then + ' ImporteMovimiento = Math.Abs(Diferencia) + ' importeMX = ImporteMovimiento + ' End If + ' Else + ' ImporteMovimiento = 0 + ' End If Case 255 'Otros egresos If DdlOtrosPagos.SelectedValue = "2" Then If CveMoneda = 1 AndAlso gvr.DataKey("CveMoneda").ToEntero = 1 Then @@ -1435,10 +1460,10 @@ Partial Class Bancos_ProveedoresAbonar TipoCambioPago = TxtTCDolaresDolares.Text.ToDecimal End If - If Not ObjMov.AddPrePolizasDetalle(CvePrePoliza, True, TxtImporte.Text.ToDecimal, Referencia, 30, ConceptoMovimiento, TxtFechaDocumento.Text.ToDate, IdCuenta, -1, CveIE, CveProveedor:=CveProveedor, ImporteMX:=TxtImporte.Text.ToDecimal, ImporteME:=If(TipoCambioPago = 1, 0, TxtImporte.Text.ToDecimal), TipoCambio:=TipoCambioPago, CveSubProyecto:=CveSubProyecto) Then + If MsgError = "" AndAlso Not ObjMov.AddPrePolizasDetalle(CvePrePoliza, True, TxtImporte.Text.ToDecimal, Referencia, 30, ConceptoMovimiento, TxtFechaDocumento.Text.ToDate, IdCuenta, -1, CveIE, CveProveedor:=CveProveedor, ImporteMX:=TxtImporte.Text.ToDecimal, ImporteME:=If(TipoCambioPago = 1, 0, TxtImporte.Text.ToDecimal), TipoCambio:=TipoCambioPago, CveSubProyecto:=CveSubProyecto) Then MsgError = "No se pudo insertar la póliza" End If - If Not ObjMov.AddPrePolizasDetalle(CvePrePoliza, True, If(CveMoneda = 1 AndAlso TxtTC.Visible, TxtImporte.Text.ToDecimal / TxtTC.Text.ToDecimal, TxtImporte.Text.ToDecimal), Referencia, 204, ConceptoMovimiento, TxtFechaDocumento.Text.ToDate, IdCuentaBancariaComplementaria, -1, CveIE, CveProveedor:=CveProveedor, ImporteMX:=If(CveMoneda = 2, Math.Round((TxtImporte.Text.Trim.ToDecimal * TipoCambioPago) - TxtImporte.Text.Trim.ToDecimal, 2, MidpointRounding.AwayFromZero), TxtImporte.Text.Trim.ToDecimal), ImporteME:=If(CveMoneda = 1, 0, TxtImporte.Text.ToDecimal), TipoCambio:=TipoCambioPago, CveSubProyecto:=CveSubProyecto) Then + If MsgError = "" AndAlso Not ObjMov.AddPrePolizasDetalle(CvePrePoliza, True, If(CveMoneda = 1 AndAlso TxtTC.Visible, TxtImporte.Text.ToDecimal / TxtTC.Text.ToDecimal, TxtImporte.Text.ToDecimal), Referencia, 204, ConceptoMovimiento, TxtFechaDocumento.Text.ToDate, IdCuentaBancariaComplementaria, -1, CveIE, CveProveedor:=CveProveedor, ImporteMX:=If(CveMoneda = 2, Math.Round((TxtImporte.Text.Trim.ToDecimal * TipoCambioPago) - TxtImporte.Text.Trim.ToDecimal, 2, MidpointRounding.AwayFromZero), TxtImporte.Text.Trim.ToDecimal), ImporteME:=If(CveMoneda = 1, 0, TxtImporte.Text.ToDecimal), TipoCambio:=TipoCambioPago, CveSubProyecto:=CveSubProyecto) Then MsgError = "No se pudo insertar la póliza" End If Else @@ -1448,7 +1473,7 @@ Partial Class Bancos_ProveedoresAbonar TipoCambioPago = TxtTCDolaresDolares.Text.ToDecimal End If - If Not ObjMov.AddPrePolizasDetalle(CvePrePoliza, True, TxtImporte.Text.ToDecimal, Referencia, 30, ConceptoMovimiento, TxtFechaDocumento.Text.ToDate, IdCuenta, -1, CveIE, CveProveedor:=CveProveedor, ImporteMX:=If(CveMoneda = 2, Math.Round(TxtImporte.Text.Trim.ToDecimal * TipoCambioPago, 2, MidpointRounding.AwayFromZero), TxtImporte.Text.Trim.ToDecimal), ImporteME:=If(DivTC.Visible, If(TxtTC.Text.ToDecimal > 0, TxtImporte.Text.ToDecimal / TxtTC.Text.ToDecimal, 0), 0), TipoCambio:=TipoCambioPago, CveSubProyecto:=CveSubProyecto) Then + If MsgError = "" AndAlso Not ObjMov.AddPrePolizasDetalle(CvePrePoliza, True, TxtImporte.Text.ToDecimal, Referencia, 30, ConceptoMovimiento, TxtFechaDocumento.Text.ToDate, IdCuenta, -1, CveIE, CveProveedor:=CveProveedor, ImporteMX:=If(CveMoneda = 2, Math.Round(TxtImporte.Text.Trim.ToDecimal * TipoCambioPago, 2, MidpointRounding.AwayFromZero), TxtImporte.Text.Trim.ToDecimal), ImporteME:=If(DivTC.Visible, If(TxtTC.Text.ToDecimal > 0, TxtImporte.Text.ToDecimal / TxtTC.Text.ToDecimal, 0), 0), TipoCambio:=TipoCambioPago, CveSubProyecto:=CveSubProyecto) Then MsgError = "No se pudo insertar la póliza" End If @@ -1473,7 +1498,7 @@ Partial Class Bancos_ProveedoresAbonar ImporteFluctuacion = PagoProveedoresME - (Bancos + BancosComplementaria) - If ImporteFluctuacion.RoundSQL() <> 0 Then + If MsgError = "" AndAlso ImporteFluctuacion.RoundSQL() <> 0 Then 'SI EL PAGO DE PROVEEDORES ME ES MAYOR QUE BANCOS METER EL CONCEPTO DE GANANCIA If ImporteFluctuacion > 0 Then If Not ObjMov.AddPrePolizasDetalle(CvePrePoliza, True, Math.Abs(ImporteFluctuacion), Referencia, 64, ConceptoMovimiento, TxtFechaIncobrable.Text.ToDate, IdCtaContable:=UsuarioActual.Empresa.IdCuentaGananciaCambiaria, CveIE:=-1, IdSegmentoNegocio:=-1, CveSubProyecto:=CveSubProyecto, CveProveedor:=Me.CveProveedor, CveCompra:=-1, ImporteMX:=Math.Abs(ImporteFluctuacion), TipoCambio:=TipoCambio, TipoCambioPago:=TCPago) Then @@ -1494,10 +1519,9 @@ Partial Class Bancos_ProveedoresAbonar TipoCambioPago = GlobalTipoCambio(TxtFechaDocumento.Text.ToDate).ToString.ToDecimal End If - If Not ObjMov.AddPrePolizasDetalle(CvePrePoliza, True, TxtImporte.Text.ToDecimal, Referencia, 30, ConceptoMovimiento, TxtFechaDocumento.Text.ToDate, IdCuenta, -1, CveIE, CveProveedor:=CveProveedor, ImporteMX:=If(CveMoneda = 2, Math.Round(TxtImporte.Text.Trim.ToDecimal * TipoCambioPago, 2, MidpointRounding.AwayFromZero), TxtImporte.Text.Trim.ToDecimal), ImporteME:=If(DivTC.Visible, If(TxtTC.Text.ToDecimal > 0, TxtImporte.Text.ToDecimal / TxtTC.Text.ToDecimal, 0), 0), TipoCambio:=TipoCambioPago, CveSubProyecto:=CveSubProyecto) Then + If MsgError = "" AndAlso Not ObjMov.AddPrePolizasDetalle(CvePrePoliza, True, TxtImporte.Text.ToDecimal, Referencia, 30, ConceptoMovimiento, TxtFechaDocumento.Text.ToDate, IdCuenta, -1, CveIE, CveProveedor:=CveProveedor, ImporteMX:=If(CveMoneda = 2, Math.Round(TxtImporte.Text.Trim.ToDecimal * TipoCambioPago, 2, MidpointRounding.AwayFromZero), TxtImporte.Text.Trim.ToDecimal), ImporteME:=If(DivTC.Visible, If(TxtTC.Text.ToDecimal > 0, TxtImporte.Text.ToDecimal / TxtTC.Text.ToDecimal, 0), 0), TipoCambio:=TipoCambioPago, CveSubProyecto:=CveSubProyecto) Then MsgError = "No se pudo insertar la póliza" End If - End If End If @@ -1853,7 +1877,7 @@ Partial Class Bancos_ProveedoresAbonar DdlTipoTransaccion.SelectedValue = TipoPago.ToString RecargaCuentasDepositos() ElseIf TipoPago = 3 Then - DdlTipoTransaccion.DataSource = GlobalDTTipoTransacciones.FiltraParametros("Tipo = 'Egs' AND CveTipoTransaccion IN (1, 2)and Estatus = 1 ") + DdlTipoTransaccion.DataSource = GlobalDTTipoTransacciones.FiltraParametros("Tipo = 'Egs' AND CveTipoTransaccion IN (1, 2) and Estatus = 1 ") DdlTipoTransaccion.DataBind() DdlTipoTransaccion.SelectedValue = TipoPago.ToString RecargaCuentasDepositos() From 5e5bf92e166b9ef63b11b6f966fc384bd1e2a41c Mon Sep 17 00:00:00 2001 From: rrene Date: Fri, 3 Jun 2022 16:28:31 -0700 Subject: [PATCH 04/21] -- ordenamiento de med-rin --- Inventarios/PopUpExistenciasAlmacen.aspx.vb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Inventarios/PopUpExistenciasAlmacen.aspx.vb b/Inventarios/PopUpExistenciasAlmacen.aspx.vb index bc490bf9d..963025db1 100644 --- a/Inventarios/PopUpExistenciasAlmacen.aspx.vb +++ b/Inventarios/PopUpExistenciasAlmacen.aspx.vb @@ -228,9 +228,9 @@ Partial Class Inventarios_Default Private Sub CargarMedRin() Dim ObjGral As New ClsGenerales If ObjGral.GetMedidas(UsuarioActual.CveEmpresa) Then - DdlMedidas.DataSource = ObjGral.DtResultados + DdlMedidas.DataSource = ObjGral.DtResultados.FiltraParametros("", Orderby:="Medida") If ObjGral.GetRimTamanios(UsuarioActual.CveEmpresa) Then - DdlRin.DataSource = ObjGral.DtResultados + DdlRin.DataSource = ObjGral.DtResultados.FiltraParametros("", Orderby:="RinTamaño") End If End If ObjGral.Dispose() From 53ed37432a9a1abd7a3222832c694de4a84ed3cc Mon Sep 17 00:00:00 2001 From: rrene Date: Fri, 3 Jun 2022 21:03:19 -0700 Subject: [PATCH 05/21] --cambios v4.0 --- App_Code/CFDITimbre.vb | 10 +- App_Code/ClsBancos.vb | 60 +++--- App_Code/ClsPaginas.vb | 80 ++++++-- App_Code/Timbrado.vb | 369 ++++++++++--------------------------- App_Code/WS/WSSIGVentas.vb | 2 +- 5 files changed, 195 insertions(+), 326 deletions(-) diff --git a/App_Code/CFDITimbre.vb b/App_Code/CFDITimbre.vb index 928706684..e51b8636f 100644 --- a/App_Code/CFDITimbre.vb +++ b/App_Code/CFDITimbre.vb @@ -395,7 +395,7 @@ End Class Public Class CFDIRetenciones Public Property Impuesto As String - Public Property Importe As Decimal + Public Property Importe As Decimal = 0.000000D Public Property TasaOCuota As String End Class @@ -417,11 +417,11 @@ End Class Public Class CFDITraslados Public Property Impuesto As String - Public Property Tasa As Decimal + Public Property Tasa As Decimal = 0.000000D Public Property TipoFactor As String - Public Property TasaOCuota As Decimal - Public Property Importe As Decimal - Public Property Base As Decimal + Public Property TasaOCuota As Decimal = 0.000000D + Public Property Importe As Decimal = 0.000000D + Public Property Base As Decimal = 0.000000D End Class diff --git a/App_Code/ClsBancos.vb b/App_Code/ClsBancos.vb index ea7eb8782..19070fdbf 100644 --- a/App_Code/ClsBancos.vb +++ b/App_Code/ClsBancos.vb @@ -1087,6 +1087,7 @@ Public Class ClsBancos Dim Timbre As CFDITimbre = Nothing Dim Timbrado As New Timbrado + Dim CFDIVersion As String = "4.0" If UsuarioActual.Empresa.Funcionalidad(350) = "1" Then @@ -1100,6 +1101,7 @@ Public Class ClsBancos UsuarioActual.Empresa.CP.ToString, CuentaBeneficiario, dr("TipoCambioPago").ToString.ToDecimal, dttpagos, dttpagosimpuestos, CFDIRelacionado:=CFDIRelacionado) Else + CFDIVersion = "3.3" Timbre = Timbrado.PreparaTimbrePago(RFCEmpresa, UsuarioActual.Empresa.Empresa, UsuarioActual.Empresa.CodigoRegimenFiscal, RFCCliente, dr("NombreCliente").ToString, Serie, Folio.ToString, FechaTimbrado, Cuentapago, dr("FechaDocumento").ToString.ToDate, dr("ClaveFormaPagoSAT").ToString, dr("AbreviaturaSAT").ToString, dr("VentasTotalPagado").ToString.ToDecimal, @@ -1137,7 +1139,7 @@ Public Class ClsBancos ' Dim StrRetorno As String = Modelos.TimbrarFactura(Ventas, UsuarioActual) If SeTimbro Then - If UpdateComplementoPago(tCveComplementoPago, ObjTimbrado.UUID, UsuarioActual.Empresa.CvePAC, UsuarioActual.CveEmpresa) Then + If UpdateComplementoPago(tCveComplementoPago, ObjTimbrado.UUID, UsuarioActual.Empresa.CvePAC, CFDIVersion, UsuarioActual.CveEmpresa) Then CveComplementoPago = tCveComplementoPago Retorno = True End If @@ -1201,8 +1203,7 @@ Public Class ClsBancos 'End Function - Public Function UpdateComplementoPago(CveComplementoPago As Integer, FolioFiscal As String, CvePAC As Integer, CveEmpresa As Integer, Optional Estatus As Integer = -1, Optional CvePACCancelacion As Integer = -1, - Optional FechaCancelacion As Date = MinFecha, Optional SelloCancelacion As String = "", Optional CveSATMotivoCancelacion As Integer = -1) As Boolean + Public Function UpdateComplementoPago(CveComplementoPago As Integer, FolioFiscal As String, CvePAC As Integer, CFDIVersion As String, CveEmpresa As Integer, Optional Estatus As Integer = -1) As Boolean Dim Retorno As Boolean = False DataAdapter("PA_Banc_ComplementoPagoUpdate") @@ -1213,11 +1214,37 @@ Public Class ClsBancos .Add("@CvePAC", SqlDbType.Int).Value = CvePAC .Add("@CveEmpresa", SqlDbType.Int).Value = CveEmpresa .Add("@Estatus", SqlDbType.Int).Value = Estatus + + .Add("@CFDIVersion", SqlDbType.VarChar).Value = CFDIVersion + + + End With + + Try + SqlAdapter.Fill(Data) + Retorno = True + Catch ex As Exception + + OnError("Ocurrió un error al actualizar complemento de pago", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo) + + End Try + + Return Retorno + End Function + + + Public Function UpdateComplementoPagoCancelado(CveComplementoPago As Integer, CveEstatus As Integer, CvePACCancelacion As Integer, CveEmpresa As Integer, FechaCancelacion As DateTime, SelloCancelacion As String, CveSATMotivoCancelacion As Integer) As Boolean + Dim Retorno As Boolean = False + DataAdapter("PA_Banc_ComplementoPagoUpdateCancelado") + + With SqlAdapter.SelectCommand.Parameters + .Add("@CveComplementoPago", SqlDbType.Int).Value = CveComplementoPago + .Add("@CveEstatus", SqlDbType.Int).Value = CveEstatus .Add("@CvePACCancelacion", SqlDbType.Int).Value = CvePACCancelacion .Add("@FechaCancelacion", SqlDbType.Date).Value = FechaCancelacion .Add("@SelloCancelacion", SqlDbType.VarChar).Value = SelloCancelacion .Add("@CveSATMotivoCancelacion", SqlDbType.Int).Value = CveSATMotivoCancelacion - + .Add("@CveEmpresa", SqlDbType.Int).Value = CveEmpresa End With Try @@ -1227,7 +1254,7 @@ Public Class ClsBancos If SelloCancelacion.Trim.Length > 0 Then OnError($"Ocurrió un error al actualizar complemento de pago sello: {SelloCancelacion} ", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo) Else - OnError("Ocurrió un error al actualizar complemento de pago", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo) + OnError("Ocurrió un error al cancelar estatus complemento de pago", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo) End If End Try @@ -1235,29 +1262,6 @@ Public Class ClsBancos Return Retorno End Function - - Public Function UpdateComplementoPagoCancelado(CveComplementoPago As Integer, CveEstatus As Integer, CvePACCancelacion As Integer, CveEmpresa As Integer, FechaCancelacion As DateTime) As Boolean - Dim Retorno As Boolean = False - DataAdapter("PA_Banc_ComplementoPagoUpdateCancelado") - - With SqlAdapter.SelectCommand.Parameters - .Add("@CveComplementoPago", SqlDbType.Int).Value = CveComplementoPago - .Add("@CveEstatus", SqlDbType.Int).Value = CveEstatus - .Add("@CvePACCancelacion", SqlDbType.Int).Value = CvePACCancelacion - .Add("@CveEmpresa", SqlDbType.Int).Value = CveEmpresa - .Add("@FechaCancelacion", SqlDbType.DateTime).Value = FechaCancelacion - End With - - Try - SqlAdapter.Fill(Data) - Retorno = True - Catch ex As Exception - OnError("Ocurrió un error al cancelar estatus complemento de pago", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo) - End Try - - Return Retorno - End Function - Public Function AddComplementoPagosSinc(cveUsuario As Int32, fechaInicio As String, cveEmpresa As Int32) As Boolean Dim retorno As Boolean = False DataAdapter("PA_AddComplementoPagosSinc", CommandType.StoredProcedure) diff --git a/App_Code/ClsPaginas.vb b/App_Code/ClsPaginas.vb index b766012f0..d76a89776 100644 --- a/App_Code/ClsPaginas.vb +++ b/App_Code/ClsPaginas.vb @@ -8918,20 +8918,22 @@ Public Class ClsPaginas Dim namespaces As New XmlNamespaceManager(XmlDoc.NameTable) Dim Prefijo As String = If(XmlDoc.DocumentElement.Prefix = "", "cfd", XmlDoc.DocumentElement.Prefix) Dim cfdVer As String = "" + Dim PagoVersion As String = "pago20" Dim validaElemento = XmlDoc.DocumentElement("cfdi:Complemento") Dim validaElementoPago = XmlDoc.DocumentElement("cfdi:Conceptos") - - If Version = "3.3" Then - cfdVer = "http://www.sat.gob.mx/cfd/3" - Else ' se considera que es la version 4.0 - cfdVer = "http://www.sat.gob.mx/cfd/4" - End If - namespaces.AddNamespace(Prefijo, cfdVer) namespaces.AddNamespace("tfd", "http://www.sat.gob.mx/TimbreFiscalDigital") namespaces.AddNamespace("registrofiscal", "http://www.sat.gob.mx/registrofiscal") - namespaces.AddNamespace("pago20", "http://www.sat.gob.mx/Pagos20") + + If Version = "3.3" Then + cfdVer = "http://www.sat.gob.mx/cfd/3" + namespaces.AddNamespace("pago10", "http://www.sat.gob.mx/Pagos10") + PagoVersion = "pago10" + Else ' se considera que es la version 4.0 + cfdVer = "http://www.sat.gob.mx/cfd/4" + namespaces.AddNamespace("pago20", "http://www.sat.gob.mx/Pagos20") + End If 'Datos Fiscales If Not IsNothing(validaElemento) Then @@ -8946,15 +8948,58 @@ Public Class ClsPaginas Next End If - 'Pago - If Not IsNothing(validaElemento) Then + 'Pago10 + If Version = "3.3" AndAlso Not IsNothing(validaElemento) Then Dim PagosChild = XmlDoc.DocumentElement("cfdi:Complemento").ChildNodes.Cast(Of XmlNode).Where(Function(a) a.LocalName.Equals("Pagos", StringComparison.CurrentCultureIgnoreCase)).FirstOrDefault() + + For Each Pagos As XmlNode In PagosChild.ChildNodes + Dim Dr As DataRow = DTConceptosPago.NewRow + + If Not Pagos.Attributes("CtaOrdenante") Is Nothing Then Dr("CtaOrdenante") = Pagos.Attributes("CtaOrdenante").Value Else Dr("CtaOrdenante") = "" + If Not Pagos.Attributes("TipoCambioP") Is Nothing Then Dr("TipoCambioP") = Pagos.Attributes("TipoCambioP").Value Else Dr("TipoCambioP") = "" + + If Not Pagos.Attributes("RfcEmisorCtaOrd") Is Nothing Then + Dr("RfcEmisorCtaOrd") = Pagos.Attributes("RfcEmisorCtaOrd").Value + RFCOrdenante = Pagos.Attributes("RfcEmisorCtaOrd").Value + Else + Dr("RfcEmisorCtaOrd") = "" + End If + + Dr("Monto") = Pagos.Attributes("Monto").Value + Dr("MonedaP") = Pagos.Attributes("MonedaP").Value + Dr("FormaDePagoP") = GlobalDTVtaFormaPago.FiltroPrimeroValor("FormaPagoSAT", $"ClaveFormaPagoSAT= '{Pagos.Attributes("FormaDePagoP").Value}'") + Dr("FechaPago") = Pagos.Attributes("FechaPago").Value + + FechaRecibo = Pagos.Attributes("FechaPago").Value + TotalLetra = Pagos.Attributes("Monto").Value.ToString.ToDouble.Texto2Letras(CveMoneda) + + DTConceptosPago.Rows.Add(Dr) + + For Each Relacionado As XmlNode In Pagos.ChildNodes + Dim DrRelacionado As DataRow = DTConceptosPagoRelacionado.NewRow + + If Not Relacionado.Attributes("Folio") Is Nothing Then DrRelacionado("Folio") = Relacionado.Attributes("Folio").Value Else DrRelacionado("Folio") = "" + If Not Relacionado.Attributes("Serie") Is Nothing Then DrRelacionado("Serie") = Relacionado.Attributes("Serie").Value Else DrRelacionado("Serie") = "" + If Not Relacionado.Attributes("TipoCambioDR") Is Nothing Then DrRelacionado("TipoCambioDR") = Relacionado.Attributes("TipoCambioDR").Value Else DrRelacionado("TipoCambioDR") = "" + + DrRelacionado("IdDocumento") = Relacionado.Attributes("IdDocumento").Value + DrRelacionado("ImpPagado") = Relacionado.Attributes("ImpPagado").Value + DrRelacionado("ImpSaldoAnt") = Relacionado.Attributes("ImpSaldoAnt").Value + DrRelacionado("NumParcialidad") = Relacionado.Attributes("NumParcialidad").Value + DrRelacionado("MetodoDePagoDR") = Relacionado.Attributes("MetodoDePagoDR").Value + DrRelacionado("MonedaDR") = Relacionado.Attributes("MonedaDR").Value + + DTConceptosPagoRelacionado.Rows.Add(DrRelacionado) + Next + Next + + End If + + 'Pago20 + If Version = "4.0" AndAlso Not IsNothing(validaElemento) Then Dim nodePagos As XmlNodeList - If Version = "3.3" Then - nodePagos = XmlDoc.SelectNodes(String.Format("//{0}:Comprobante/{0}:Complemento/pago10:Pago", Prefijo), namespaces) - Else - nodePagos = XmlDoc.SelectNodes(String.Format("//{0}:Comprobante/{0}:Complemento/pago20:Pagos/pago20:Pago", Prefijo), namespaces) - End If + + nodePagos = XmlDoc.SelectNodes(String.Format("//{0}:Comprobante/{0}:Complemento/pago20:Pagos/pago20:Pago", Prefijo), namespaces) For Each Pagos As XmlNode In nodePagos If Version = "4.0" AndAlso Pagos.Name = "pago20:Totales" Then @@ -8983,7 +9028,7 @@ Public Class ClsPaginas DTConceptosPago.Rows.Add(Dr) - For Each Relacionado As XmlNode In Pagos.SelectNodes("//pago20:DoctoRelacionado", namespaces) + For Each Relacionado As XmlNode In Pagos.SelectNodes(String.Format("//{0}:DoctoRelacionado", PagoVersion), namespaces) Dim DrRelacionado As DataRow = DTConceptosPagoRelacionado.NewRow If Not Relacionado.Attributes("Folio") Is Nothing Then DrRelacionado("Folio") = Relacionado.Attributes("Folio").Value Else DrRelacionado("Folio") = "" @@ -8994,7 +9039,7 @@ Public Class ClsPaginas DrRelacionado("ImpPagado") = Relacionado.Attributes("ImpPagado").Value DrRelacionado("ImpSaldoAnt") = Relacionado.Attributes("ImpSaldoAnt").Value DrRelacionado("NumParcialidad") = Relacionado.Attributes("NumParcialidad").Value - If Version = "3.3" Then DrRelacionado("MetodoDePagoDR") = Relacionado.Attributes("MetodoDePagoDR").Value + ' If Version = "3.3" Then DrRelacionado("MetodoDePagoDR") = Relacionado.Attributes("MetodoDePagoDR").Value If Version = "4.0" Then DrRelacionado("ObjetoImpDR") = Relacionado.Attributes("ObjetoImpDR").Value DrRelacionado("MonedaDR") = Relacionado.Attributes("MonedaDR").Value @@ -9104,6 +9149,7 @@ Public Class ClsPaginas ObjClientes.Dispose() End Sub + #End Region Public Sub CargarCentrosDeCosto(DdlProyecto As DropDownList, DdlSubProyecto As DropDownList, LthProyectoP As Label, LblSubProyecto As Label, Optional AplicaTodos As String = "Todos", Optional DdlSubProyectoMultiple As ListBox = Nothing) diff --git a/App_Code/Timbrado.vb b/App_Code/Timbrado.vb index d09c9bc2b..10eecb119 100644 --- a/App_Code/Timbrado.vb +++ b/App_Code/Timbrado.vb @@ -4108,19 +4108,19 @@ Public Class Timbrado Dim Totales As New Profact.TimbraCFDI40.Complementos.Pagos20.PagosTotales() 'Totales Generales - Totales.MontoTotalPagos = ObjCFDITimbre.ComplementoPagos.Totales.MontoTotalPagos + Totales.MontoTotalPagos = ObjCFDITimbre.ComplementoPagos.Totales.MontoTotalPagos.RoundSQL - Totales.TotalTrasladosBaseIVA16 = ObjCFDITimbre.ComplementoPagos.Totales.TotalTrasladosBaseIVA16 + Totales.TotalTrasladosBaseIVA16 = ObjCFDITimbre.ComplementoPagos.Totales.TotalTrasladosBaseIVA16.RoundSQL Totales.TotalTrasladosBaseIVA16Specified = Totales.TotalTrasladosBaseIVA16 > 0 Totales.TotalTrasladosImpuestoIVA16 = ObjCFDITimbre.ComplementoPagos.Totales.TotalTrasladosImpuestoIVA16.RoundSQL Totales.TotalTrasladosImpuestoIVA16Specified = Totales.TotalTrasladosBaseIVA16 > 0 - Totales.TotalTrasladosBaseIVA8 = ObjCFDITimbre.ComplementoPagos.Totales.TotalTrasladosBaseIVA8 + Totales.TotalTrasladosBaseIVA8 = ObjCFDITimbre.ComplementoPagos.Totales.TotalTrasladosBaseIVA8.RoundSQL Totales.TotalTrasladosBaseIVA8Specified = Totales.TotalTrasladosBaseIVA8 > 0 Totales.TotalTrasladosImpuestoIVA8 = ObjCFDITimbre.ComplementoPagos.Totales.TotalTrasladosBaseIVA8.RoundSQL Totales.TotalTrasladosImpuestoIVA8Specified = Totales.TotalTrasladosBaseIVA8 > 0 - Totales.TotalTrasladosBaseIVA0 = ObjCFDITimbre.ComplementoPagos.Totales.TotalTrasladosBaseIVA0 + Totales.TotalTrasladosBaseIVA0 = ObjCFDITimbre.ComplementoPagos.Totales.TotalTrasladosBaseIVA0.RoundSQL Totales.TotalTrasladosBaseIVA0Specified = Totales.TotalTrasladosBaseIVA0 > 0 Totales.TotalTrasladosImpuestoIVA0 = 0 Totales.TotalTrasladosImpuestoIVA0Specified = Totales.TotalTrasladosBaseIVA0 > 0 @@ -4150,26 +4150,6 @@ Public Class Timbrado If doc.Impuestos IsNot Nothing Then ComPag.Pago(0).DoctoRelacionado(i).ImpuestosDR = New Profact.TimbraCFDI40.Complementos.Pagos20.PagosPagoDoctoRelacionadoImpuestosDR - ''traslados - If (doc.Impuestos).Where(Function(x) x.TrasladooRetencion = "T").Count > 0 Then - Dim j As Integer = 0 - For Each docimp As CFDIConceptosImpuestos In doc.Impuestos.Where(Function(x) x.TrasladooRetencion = "T") - - ComPag.Pago(0).DoctoRelacionado(i).ImpuestosDR.TrasladosDR = New Profact.TimbraCFDI40.Complementos.Pagos20.PagosPagoDoctoRelacionadoImpuestosDRTrasladoDR(doc.Impuestos.Where(Function(x) x.TrasladooRetencion = "T").Count - 1) {} - If docimp.TrasladooRetencion = "T" Then - Dim Tra As New Profact.TimbraCFDI40.Complementos.Pagos20.PagosPagoDoctoRelacionadoImpuestosDRTrasladoDR - Tra.BaseDR = docimp.Base - Tra.ImporteDRSpecified = True - Tra.ImporteDR = docimp.Importe - Tra.ImpuestoDR = docimp.Impuesto - Tra.TipoFactorDR = docimp.TipoFactor - Tra.TasaOCuotaDRSpecified = True - Tra.TasaOCuotaDR = docimp.TasaOCuota - ComPag.Pago(0).DoctoRelacionado(i).ImpuestosDR.TrasladosDR(j) = Tra - End If - j += 1 - Next - End If ''retenciones If (doc.Impuestos).Where(Function(x) x.TrasladooRetencion = "R").Count > 0 Then @@ -4178,36 +4158,41 @@ Public Class Timbrado ComPag.Pago(0).DoctoRelacionado(i).ImpuestosDR.RetencionesDR = New Profact.TimbraCFDI40.Complementos.Pagos20.PagosPagoDoctoRelacionadoImpuestosDRRetencionDR(doc.Impuestos.Where(Function(x) x.TrasladooRetencion = "R").Count - 1) {} If docimp.TrasladooRetencion = "R" Then Dim Tra As New Profact.TimbraCFDI40.Complementos.Pagos20.PagosPagoDoctoRelacionadoImpuestosDRRetencionDR - Tra.BaseDR = docimp.Base - Tra.ImporteDR = docimp.Importe + Tra.BaseDR = docimp.Base.RoundSQL(6) + Tra.ImporteDR = docimp.Importe.RoundSQL(6) Tra.ImpuestoDR = docimp.Impuesto Tra.TipoFactorDR = docimp.TipoFactor - Tra.TasaOCuotaDR = docimp.TasaOCuota + Tra.TasaOCuotaDR = docimp.TasaOCuota.RoundSQL(6) ComPag.Pago(0).DoctoRelacionado(i).ImpuestosDR.RetencionesDR(j) = Tra End If j += 1 Next End If + + ''traslados + If (doc.Impuestos).Where(Function(x) x.TrasladooRetencion = "T").Count > 0 Then + Dim j As Integer = 0 + For Each docimp As CFDIConceptosImpuestos In doc.Impuestos.Where(Function(x) x.TrasladooRetencion = "T") + + ComPag.Pago(0).DoctoRelacionado(i).ImpuestosDR.TrasladosDR = New Profact.TimbraCFDI40.Complementos.Pagos20.PagosPagoDoctoRelacionadoImpuestosDRTrasladoDR(doc.Impuestos.Where(Function(x) x.TrasladooRetencion = "T").Count - 1) {} + If docimp.TrasladooRetencion = "T" Then + Dim Tra As New Profact.TimbraCFDI40.Complementos.Pagos20.PagosPagoDoctoRelacionadoImpuestosDRTrasladoDR + Tra.BaseDR = docimp.Base.RoundSQL(6) + Tra.ImporteDRSpecified = True + Tra.ImporteDR = docimp.Importe.RoundSQL(6) + Tra.ImpuestoDR = docimp.Impuesto + Tra.TipoFactorDR = docimp.TipoFactor + Tra.TasaOCuotaDRSpecified = True + Tra.TasaOCuotaDR = docimp.TasaOCuota.RoundSQL(6) + ComPag.Pago(0).DoctoRelacionado(i).ImpuestosDR.TrasladosDR(j) = Tra + End If + j += 1 + Next + End If End If i += 1 Next - If ObjCFDITimbre.ComplementoPagos.Traslados.Count > 0 Then - Dim x As Integer - ComPag.Pago(0).ImpuestosP = New Profact.TimbraCFDI40.Complementos.Pagos20.PagosPagoImpuestosP(0) {} - ComPag.Pago(0).ImpuestosP(0) = New Profact.TimbraCFDI40.Complementos.Pagos20.PagosPagoImpuestosP() - ComPag.Pago(0).ImpuestosP(0).TrasladosP = New Profact.TimbraCFDI40.Complementos.Pagos20.PagosPagoImpuestosPTrasladoP((ObjCFDITimbre.ComplementoPagos.Traslados).Count - 1) {} - For Each Tra As CFDITraslados In (ObjCFDITimbre.ComplementoPagos.Traslados) - ComPag.Pago(0).ImpuestosP(0).TrasladosP(x) = New Profact.TimbraCFDI40.Complementos.Pagos20.PagosPagoImpuestosPTrasladoP() - ComPag.Pago(0).ImpuestosP(0).TrasladosP(x).ImpuestoP = Tra.Impuesto - ComPag.Pago(0).ImpuestosP(0).TrasladosP(x).TipoFactorP = Tra.TipoFactor - ComPag.Pago(0).ImpuestosP(0).TrasladosP(x).TasaOCuotaP = Tra.TasaOCuota - ComPag.Pago(0).ImpuestosP(0).TrasladosP(x).ImporteP = Tra.Importe - ComPag.Pago(0).ImpuestosP(0).TrasladosP(x).BaseP = Tra.Base - x += 1 - Next - End If - If (ObjCFDITimbre.ComplementoPagos.Retenciones).Count > 0 Then Dim x As Integer If ComPag.Pago(0).ImpuestosP(0) Is Nothing Then ComPag.Pago(0).ImpuestosP = New Profact.TimbraCFDI40.Complementos.Pagos20.PagosPagoImpuestosP(0) {} @@ -4220,41 +4205,59 @@ Public Class Timbrado Next End If - - ''Estos impuestos aplicarían para anticipos - 'If ObjCFDITimbre.ComplementoPagos.tota > 0 OrElse ObjCFDITimbre.ComplementoPagos.TotalImpuestosTrasladados > 0 Then - ' ComPag.Pago(0).ImpuestosP = New Profact.TimbraCFDI40.Complementos.Pagos20.PagosPagoImpuestosP(0) {} - ' ComPag.Pago(0).ImpuestosP(0) = New Profact.TimbraCFDI40.Complementos.Pagos20.PagosPagoImpuestosP() - - ' If (ObjCFDITimbre.ComplementoPagos.Impuestos).Where(Function(x) x.TrasladooRetencion = "T").Count > 0 Then - ' Dim x As Integer - ' ComPag.Pago(0).ImpuestosP(0).TrasladosP = New Profact.TimbraCFDI40.Complementos.Pagos20.PagosPagoImpuestosPTrasladoP((ObjCFDITimbre.ComplementoPagos.Impuestos).Where(Function(w) w.TrasladooRetencion = "T").Count - 1) {} - ' For Each Tra As CFDIConceptosImpuestos In (ObjCFDITimbre.ComplementoPagos.Impuestos).Where(Function(w) w.TrasladooRetencion = "T") - ' ComPag.Pago(0).ImpuestosP(0).TrasladosP(x) = New Profact.TimbraCFDI40.Complementos.Pagos20.PagosPagoImpuestosPTrasladoP() - ' ComPag.Pago(0).ImpuestosP(0).TrasladosP(x).ImpuestoP = Tra.Impuesto - ' ComPag.Pago(0).ImpuestosP(0).TrasladosP(x).TipoFactorP = Tra.TipoFactor - ' ComPag.Pago(0).ImpuestosP(0).TrasladosP(x).TasaOCuotaP = Tra.TasaOCuota - ' ComPag.Pago(0).ImpuestosP(0).TrasladosP(x).ImporteP = Tra.Importe - ' x += 1 - ' Next - ' End If - - ' If (ObjCFDITimbre.ComplementoPagos.Impuestos).Where(Function(x) x.TrasladooRetencion = "R").Count > 0 Then - ' Dim x As Integer - ' ComPag.Pago(0).ImpuestosP(0).RetencionesP = New Profact.TimbraCFDI40.Complementos.Pagos20.PagosPagoImpuestosPRetencionP((ObjCFDITimbre.ComplementoPagos.Impuestos).Where(Function(w) w.TrasladooRetencion = "R").Count - 1) {} - ' For Each Ret As CFDIConceptosImpuestos In (ObjCFDITimbre.ComplementoPagos.Impuestos).Where(Function(w) w.TrasladooRetencion = "R") - ' ComPag.Pago(0).ImpuestosP(0).RetencionesP(x) = New Profact.TimbraCFDI40.Complementos.Pagos20.PagosPagoImpuestosPRetencionP() - ' ComPag.Pago(0).ImpuestosP(0).RetencionesP(x).ImpuestoP = Ret.Impuesto - ' ComPag.Pago(0).ImpuestosP(0).RetencionesP(x).ImporteP = Ret.Importe - ' x += 1 - ' Next - ' End If + If ObjCFDITimbre.ComplementoPagos.Traslados.Count > 0 Then + Dim x As Integer + ComPag.Pago(0).ImpuestosP = New Profact.TimbraCFDI40.Complementos.Pagos20.PagosPagoImpuestosP(0) {} + ComPag.Pago(0).ImpuestosP(0) = New Profact.TimbraCFDI40.Complementos.Pagos20.PagosPagoImpuestosP() + ComPag.Pago(0).ImpuestosP(0).TrasladosP = New Profact.TimbraCFDI40.Complementos.Pagos20.PagosPagoImpuestosPTrasladoP((ObjCFDITimbre.ComplementoPagos.Traslados).Count - 1) {} + For Each Tra As CFDITraslados In (ObjCFDITimbre.ComplementoPagos.Traslados) + ComPag.Pago(0).ImpuestosP(0).TrasladosP(x) = New Profact.TimbraCFDI40.Complementos.Pagos20.PagosPagoImpuestosPTrasladoP() + ComPag.Pago(0).ImpuestosP(0).TrasladosP(x).ImpuestoP = Tra.Impuesto + ComPag.Pago(0).ImpuestosP(0).TrasladosP(x).TipoFactorP = Tra.TipoFactor + ComPag.Pago(0).ImpuestosP(0).TrasladosP(x).TasaOCuotaP = Tra.TasaOCuota.RoundSQL(6) + ComPag.Pago(0).ImpuestosP(0).TrasladosP(x).ImporteP = Tra.Importe.RoundSQL(6) + ComPag.Pago(0).ImpuestosP(0).TrasladosP(x).BaseP = Tra.Base.RoundSQL(6) + x += 1 + Next + End If - 'End If - Dim nsComp As New System.Xml.Serialization.XmlSerializerNamespaces() + ''Estos impuestos aplicarían para anticipos + 'If ObjCFDITimbre.ComplementoPagos.tota > 0 OrElse ObjCFDITimbre.ComplementoPagos.TotalImpuestosTrasladados > 0 Then + ' ComPag.Pago(0).ImpuestosP = New Profact.TimbraCFDI40.Complementos.Pagos20.PagosPagoImpuestosP(0) {} + ' ComPag.Pago(0).ImpuestosP(0) = New Profact.TimbraCFDI40.Complementos.Pagos20.PagosPagoImpuestosP() + + ' If (ObjCFDITimbre.ComplementoPagos.Impuestos).Where(Function(x) x.TrasladooRetencion = "T").Count > 0 Then + ' Dim x As Integer + ' ComPag.Pago(0).ImpuestosP(0).TrasladosP = New Profact.TimbraCFDI40.Complementos.Pagos20.PagosPagoImpuestosPTrasladoP((ObjCFDITimbre.ComplementoPagos.Impuestos).Where(Function(w) w.TrasladooRetencion = "T").Count - 1) {} + ' For Each Tra As CFDIConceptosImpuestos In (ObjCFDITimbre.ComplementoPagos.Impuestos).Where(Function(w) w.TrasladooRetencion = "T") + ' ComPag.Pago(0).ImpuestosP(0).TrasladosP(x) = New Profact.TimbraCFDI40.Complementos.Pagos20.PagosPagoImpuestosPTrasladoP() + ' ComPag.Pago(0).ImpuestosP(0).TrasladosP(x).ImpuestoP = Tra.Impuesto + ' ComPag.Pago(0).ImpuestosP(0).TrasladosP(x).TipoFactorP = Tra.TipoFactor + ' ComPag.Pago(0).ImpuestosP(0).TrasladosP(x).TasaOCuotaP = Tra.TasaOCuota + ' ComPag.Pago(0).ImpuestosP(0).TrasladosP(x).ImporteP = Tra.Importe + ' x += 1 + ' Next + ' End If + + ' If (ObjCFDITimbre.ComplementoPagos.Impuestos).Where(Function(x) x.TrasladooRetencion = "R").Count > 0 Then + ' Dim x As Integer + ' ComPag.Pago(0).ImpuestosP(0).RetencionesP = New Profact.TimbraCFDI40.Complementos.Pagos20.PagosPagoImpuestosPRetencionP((ObjCFDITimbre.ComplementoPagos.Impuestos).Where(Function(w) w.TrasladooRetencion = "R").Count - 1) {} + ' For Each Ret As CFDIConceptosImpuestos In (ObjCFDITimbre.ComplementoPagos.Impuestos).Where(Function(w) w.TrasladooRetencion = "R") + ' ComPag.Pago(0).ImpuestosP(0).RetencionesP(x) = New Profact.TimbraCFDI40.Complementos.Pagos20.PagosPagoImpuestosPRetencionP() + ' ComPag.Pago(0).ImpuestosP(0).RetencionesP(x).ImpuestoP = Ret.Impuesto + ' ComPag.Pago(0).ImpuestosP(0).RetencionesP(x).ImporteP = Ret.Importe + ' x += 1 + ' Next + ' End If + + + 'End If + + + Dim nsComp As New System.Xml.Serialization.XmlSerializerNamespaces() nsComp.Add("pago20", "http://www.sat.gob.mx/Pagos20") Dim xmlComp As String = Profact.TimbraCFDI.XMLUtilerias.SerializaObjeto(ComPag, GetType(Profact.TimbraCFDI40.Complementos.Pagos20.Pagos), nsComp) Dim docComp As New XmlDocument() @@ -4662,191 +4665,7 @@ Public Class Timbrado #End Region - '#Region "Detallista" - ' If Ventas.Cliente.AplicaDetallista Then - ' Dim detallista As Profact.TimbraCFDI40.Complementos.Detallista.detallista = New Profact.TimbraCFDI40.Complementos.Detallista.detallista - ' detallista.type = "SimpleInvoiceType" - ' detallista.contentVersion = "1.3.1" - ' detallista.documentStructureVersion = "AMC8.1" - ' detallista.documentStatus = Profact.TimbraCFDI40.Complementos.Detallista.detallistaDocumentStatus.ORIGINAL - ' detallista.DeliveryNote = New Profact.TimbraCFDI40.Complementos.Detallista.detallistaDeliveryNote - ' detallista.DeliveryNote.referenceIdentification = New String((1)) {} - ' detallista.DeliveryNote.referenceIdentification(0) = "1" - ' detallista.DeliveryNote.ReferenceDate = New DateTime - ' detallista.DeliveryNote.ReferenceDate = comprobante.Fecha - ' detallista.DeliveryNote.ReferenceDateSpecified = True - - ' detallista.requestForPaymentIdentification = New Profact.TimbraCFDI40.Complementos.Detallista.detallistaRequestForPaymentIdentification - ' detallista.requestForPaymentIdentification.entityType = Profact.TimbraCFDI40.Complementos.Detallista.detallistaRequestForPaymentIdentificationEntityType.INVOICE - - ' detallista.specialInstruction = New Profact.TimbraCFDI40.Complementos.Detallista.detallistaSpecialInstruction((1)) {} - ' detallista.specialInstruction(0) = New Profact.TimbraCFDI40.Complementos.Detallista.detallistaSpecialInstruction - ' detallista.specialInstruction(0).code = Profact.TimbraCFDI40.Complementos.Detallista.detallistaSpecialInstructionCode.ZZZ - ' Dim TotalTexto = New String() {Ventas.TotalTC.ToString.ToDouble.Texto2Letras.ToUpper()} - ' Dim propertyInfo = detallista.specialInstruction(0).GetType().GetProperty("text") - ' propertyInfo.SetValue(detallista.specialInstruction(0), Convert.ChangeType(TotalTexto, propertyInfo.PropertyType), Nothing) - - ' detallista.orderIdentification = New Profact.TimbraCFDI40.Complementos.Detallista.detallistaOrderIdentification - ' detallista.orderIdentification.referenceIdentification = New Profact.TimbraCFDI40.Complementos.Detallista.detallistaOrderIdentificationReferenceIdentification((1)) {} - ' detallista.orderIdentification.referenceIdentification(0) = New Profact.TimbraCFDI40.Complementos.Detallista.detallistaOrderIdentificationReferenceIdentification - ' detallista.orderIdentification.referenceIdentification(0).type = Profact.TimbraCFDI40.Complementos.Detallista.detallistaOrderIdentificationReferenceIdentificationType.ON - ' detallista.orderIdentification.referenceIdentification(0).Value = Ventas.Det_OrdenCompra - ' detallista.orderIdentification.ReferenceDateSpecified = True - ' detallista.orderIdentification.ReferenceDate = Ventas.Det_FechaOrdenCompra.ToDate() - - ' detallista.AdditionalInformation = New Profact.TimbraCFDI40.Complementos.Detallista.detallistaReferenceIdentification((1)) {} - ' detallista.AdditionalInformation(0) = New Profact.TimbraCFDI40.Complementos.Detallista.detallistaReferenceIdentification - ' detallista.AdditionalInformation(0).type = Profact.TimbraCFDI40.Complementos.Detallista.detallistaReferenceIdentificationType.ATZ - ' detallista.AdditionalInformation(0).Value = Ventas.Det_ContraRecibo - - ' detallista.DeliveryNote = New Profact.TimbraCFDI40.Complementos.Detallista.detallistaDeliveryNote - ' detallista.DeliveryNote.ReferenceDate = Ventas.Det_FechaOrdenCompra.ToDate - ' detallista.DeliveryNote.referenceIdentification = New String((1)) {} - ' detallista.DeliveryNote.referenceIdentification(0) = Ventas.Det_ContraRecibo - - ' detallista.buyer = New Profact.TimbraCFDI40.Complementos.Detallista.detallistaBuyer - ' detallista.buyer.gln = Ventas.Cliente.Detallista_GLNComprador - ' detallista.buyer.contactInformation = New Profact.TimbraCFDI40.Complementos.Detallista.detallistaBuyerContactInformation - ' detallista.buyer.contactInformation.personOrDepartmentName = New Profact.TimbraCFDI40.Complementos.Detallista.detallistaBuyerContactInformationPersonOrDepartmentName - ' detallista.buyer.contactInformation.personOrDepartmentName.text = Ventas.Cliente.Detallista_Departamento - - ' detallista.seller = New Profact.TimbraCFDI40.Complementos.Detallista.detallistaSeller - ' detallista.seller.gln = Ventas.Cliente.Detallista_GLNVendedor - ' detallista.seller.alternatePartyIdentification = New Profact.TimbraCFDI40.Complementos.Detallista.detallistaSellerAlternatePartyIdentification - ' detallista.seller.alternatePartyIdentification.type = Profact.TimbraCFDI40.Complementos.Detallista.detallistaSellerAlternatePartyIdentificationType.SELLER_ASSIGNED_IDENTIFIER_FOR_A_PARTY - ' detallista.seller.alternatePartyIdentification.Value = Ventas.Cliente.Detallista_NumProveedor - - ' 'detallista.shipTo = New Profact.TimbraCFDI40.Complementos.Detallista.detallistaShipTo - ' 'detallista.shipTo.gln = "0000000000000" - ' 'detallista.shipTo.nameAndAddress = New Profact.TimbraCFDI40.Complementos.Detallista.detallistaShipToNameAndAddress - ' 'detallista.shipTo.nameAndAddress.name = New String((1)) {} - ' 'detallista.shipTo.nameAndAddress.name(0) = Ventas.Cliente.Direccion - ' 'detallista.shipTo.nameAndAddress.streetAddressOne = New String((1)) {} - ' 'detallista.shipTo.nameAndAddress.streetAddressOne(0) = Ventas.Cliente.NoInt - ' 'detallista.shipTo.nameAndAddress.city = New String((1)) {} - ' 'detallista.shipTo.nameAndAddress.city(0) = Ventas.Cliente.Ciudad - ' 'detallista.shipTo.nameAndAddress.postalCode = New String((1)) {} - ' 'detallista.shipTo.nameAndAddress.postalCode(0) = Ventas.Cliente.CP - - ' detallista.paymentTerms = New Profact.TimbraCFDI40.Complementos.Detallista.detallistaPaymentTerms - ' detallista.paymentTerms.netPayment = New Profact.TimbraCFDI40.Complementos.Detallista.detallistaPaymentTermsNetPayment - ' detallista.paymentTerms.netPayment.paymentTimePeriod = New Profact.TimbraCFDI40.Complementos.Detallista.detallistaPaymentTermsNetPaymentPaymentTimePeriod - ' detallista.paymentTerms.netPayment.paymentTimePeriod.timePeriodDue = New Profact.TimbraCFDI40.Complementos.Detallista.detallistaPaymentTermsNetPaymentPaymentTimePeriodTimePeriodDue - ' detallista.paymentTerms.netPayment.paymentTimePeriod.timePeriodDue.timePeriod = Profact.TimbraCFDI40.Complementos.Detallista.detallistaPaymentTermsNetPaymentPaymentTimePeriodTimePeriodDueTimePeriod.DAYS - ' detallista.paymentTerms.netPayment.paymentTimePeriod.timePeriodDue.value = "0" - - ' detallista.paymentTerms.discountPayment = New Profact.TimbraCFDI40.Complementos.Detallista.detallistaPaymentTermsDiscountPayment - ' detallista.paymentTerms.discountPayment.percentage = If(Ventas.DescuentoTC > 0 AndAlso Ventas.SubTotalTC > 0, (Ventas.DescuentoTC * 100) / Ventas.SubTotalTC, 0).ToString().FormatoNumero() - - ' detallista.currency = New Profact.TimbraCFDI40.Complementos.Detallista.detallistaCurrency((1)) {} - ' detallista.currency(0) = New Profact.TimbraCFDI40.Complementos.Detallista.detallistaCurrency - ' detallista.currency(0).currencyISOCode = If(Ventas.CveMoneda = 1, Profact.TimbraCFDI40.Complementos.Detallista.detallistaCurrencyCurrencyISOCode.MXN, Profact.TimbraCFDI40.Complementos.Detallista.detallistaCurrencyCurrencyISOCode.USD) - ' detallista.currency(0).currencyFunction = New Profact.TimbraCFDI40.Complementos.Detallista.detallistaCurrencyCurrencyFunction((1)) {} - ' detallista.currency(0).currencyFunction(0) = Profact.TimbraCFDI40.Complementos.Detallista.detallistaCurrencyCurrencyFunction.BILLING_CURRENCY - ' detallista.currency(0).rateOfChangeSpecified = True - ' detallista.currency(0).rateOfChange = 1 - - ' detallista.allowanceCharge = New Profact.TimbraCFDI40.Complementos.Detallista.detallistaAllowanceCharge(1) {} - ' detallista.allowanceCharge(0) = New Profact.TimbraCFDI40.Complementos.Detallista.detallistaAllowanceCharge - ' detallista.allowanceCharge(0).monetaryAmountOrPercentage = New Profact.TimbraCFDI40.Complementos.Detallista.detallistaAllowanceChargeMonetaryAmountOrPercentage - ' detallista.allowanceCharge(0).monetaryAmountOrPercentage.rate = New Profact.TimbraCFDI40.Complementos.Detallista.detallistaAllowanceChargeMonetaryAmountOrPercentageRate - ' detallista.allowanceCharge(0).monetaryAmountOrPercentage.rate.base = Profact.TimbraCFDI40.Complementos.Detallista.detallistaAllowanceChargeMonetaryAmountOrPercentageRateBase.INVOICE_VALUE - ' detallista.allowanceCharge(0).monetaryAmountOrPercentage.rate.percentage = If(Ventas.DescuentoTC > 0 AndAlso Ventas.SubTotalTC > 0, (Ventas.DescuentoTC * 100) / Ventas.SubTotalTC, 0) - - ' Dim articuloCounter As Integer = 0 - ' For Each concepto As Profact.TimbraCFDI40.ComprobanteConcepto In comprobante.Conceptos - ' articuloCounter = (articuloCounter + 1) - ' Next - ' detallista.lineItem = New Profact.TimbraCFDI40.Complementos.Detallista.detallistaLineItem((articuloCounter)) {} - ' Dim counter As Integer = 0 - ' For Each concepto As Profact.TimbraCFDI40.ComprobanteConcepto In comprobante.Conceptos - ' detallista.lineItem(counter) = New Profact.TimbraCFDI40.Complementos.Detallista.detallistaLineItem - ' detallista.lineItem(counter).type = "SimpleInvoiceLineItemType" - ' detallista.lineItem(counter).number = (counter + 1).ToString - ' detallista.lineItem(counter).tradeItemIdentification = New Profact.TimbraCFDI40.Complementos.Detallista.detallistaLineItemTradeItemIdentification - ' detallista.lineItem(counter).tradeItemIdentification.gtin = comprobante.Conceptos(counter).NoIdentificacion - ' detallista.lineItem(counter).alternateTradeItemIdentification = New Profact.TimbraCFDI40.Complementos.Detallista.detallistaLineItemAlternateTradeItemIdentification(1) {} - ' detallista.lineItem(counter).alternateTradeItemIdentification(0) = New Profact.TimbraCFDI40.Complementos.Detallista.detallistaLineItemAlternateTradeItemIdentification - ' detallista.lineItem(counter).alternateTradeItemIdentification(0).type = New Profact.TimbraCFDI40.Complementos.Detallista.detallistaLineItemAlternateTradeItemIdentificationType - ' detallista.lineItem(counter).alternateTradeItemIdentification(0).type = Profact.TimbraCFDI40.Complementos.Detallista.detallistaLineItemAlternateTradeItemIdentificationType.BUYER_ASSIGNED - ' detallista.lineItem(counter).tradeItemDescriptionInformation = New Profact.TimbraCFDI40.Complementos.Detallista.detallistaLineItemTradeItemDescriptionInformation - ' If (comprobante.Conceptos(counter).Descripcion.Length > 34) Then - ' detallista.lineItem(counter).tradeItemDescriptionInformation.longText = comprobante.Conceptos(counter).Descripcion.Substring(0, 34) - ' Else - ' detallista.lineItem(counter).tradeItemDescriptionInformation.longText = comprobante.Conceptos(counter).Descripcion - ' End If - ' detallista.lineItem(counter).invoicedQuantity = New Profact.TimbraCFDI40.Complementos.Detallista.detallistaLineItemInvoicedQuantity - ' detallista.lineItem(counter).invoicedQuantity.unitOfMeasure = comprobante.Conceptos(counter).Unidad - ' detallista.lineItem(counter).invoicedQuantity.Text = New String((1)) {} - ' detallista.lineItem(counter).invoicedQuantity.Text(0) = comprobante.Conceptos(counter).Cantidad.ToString - - ' detallista.lineItem(counter).aditionalQuantity = New Profact.TimbraCFDI40.Complementos.Detallista.detallistaLineItemAditionalQuantity(1) {} - ' detallista.lineItem(counter).aditionalQuantity(0) = New Profact.TimbraCFDI40.Complementos.Detallista.detallistaLineItemAditionalQuantity - ' detallista.lineItem(counter).aditionalQuantity(0).QuantityType = Profact.TimbraCFDI40.Complementos.Detallista.detallistaLineItemAditionalQuantityQuantityType.NUM_CONSUMER_UNITS - ' detallista.lineItem(counter).aditionalQuantity(0).Text = New String((1)) {} - ' detallista.lineItem(counter).aditionalQuantity(0).Text(0) = "1" - - ' detallista.lineItem(counter).grossPrice = New Profact.TimbraCFDI40.Complementos.Detallista.detallistaLineItemGrossPrice - ' detallista.lineItem(counter).grossPrice.Amount = comprobante.Conceptos(counter).ValorUnitario - - ' detallista.lineItem(counter).netPrice = New Profact.TimbraCFDI40.Complementos.Detallista.detallistaLineItemNetPrice - ' detallista.lineItem(counter).netPrice.Amount = comprobante.Conceptos(counter).ValorUnitario - - ' detallista.lineItem(counter).AdditionalInformation = New Profact.TimbraCFDI40.Complementos.Detallista.detallistaLineItemAdditionalInformation - ' detallista.lineItem(counter).AdditionalInformation.referenceIdentification = New Profact.TimbraCFDI40.Complementos.Detallista.detallistaLineItemAdditionalInformationReferenceIdentification - ' detallista.lineItem(counter).AdditionalInformation.referenceIdentification.type = Profact.TimbraCFDI40.Complementos.Detallista.detallistaLineItemAdditionalInformationReferenceIdentificationType.ON - ' detallista.lineItem(counter).AdditionalInformation.referenceIdentification.Value = "1587" - ' 'Impuestos - ' Dim tasa As Decimal = 0 - ' Dim importeImp As Decimal = 0 - ' Try - ' If (Not (comprobante.Impuestos.Traslados) Is Nothing) Then - ' For Each traslado As Profact.TimbraCFDI40.ComprobanteImpuestosTraslado In comprobante.Impuestos.Traslados - ' tasa = Decimal.Parse(traslado.TasaOCuota) - ' importeImp = (comprobante.Conceptos(counter).Importe * (tasa / 100)) - ' Next - ' End If - - ' Catch ex As System.Exception - - ' End Try - - ' detallista.lineItem(counter).tradeItemTaxInformation = New Profact.TimbraCFDI40.Complementos.Detallista.detallistaLineItemTradeItemTaxInformation(1) {} - ' detallista.lineItem(counter).tradeItemTaxInformation(0) = New Profact.TimbraCFDI40.Complementos.Detallista.detallistaLineItemTradeItemTaxInformation - ' detallista.lineItem(counter).tradeItemTaxInformation(0).taxTypeDescription = New Profact.TimbraCFDI40.Complementos.Detallista.detallistaLineItemTradeItemTaxInformationTaxTypeDescription - ' detallista.lineItem(counter).tradeItemTaxInformation(0).taxTypeDescription = Profact.TimbraCFDI40.Complementos.Detallista.detallistaLineItemTradeItemTaxInformationTaxTypeDescription.VAT - ' detallista.lineItem(counter).tradeItemTaxInformation(0).tradeItemTaxAmount = New Profact.TimbraCFDI40.Complementos.Detallista.detallistaLineItemTradeItemTaxInformationTradeItemTaxAmount - ' detallista.lineItem(counter).tradeItemTaxInformation(0).tradeItemTaxAmount.taxPercentage = tasa - ' detallista.lineItem(counter).tradeItemTaxInformation(0).tradeItemTaxAmount.taxAmount = importeImp - - ' detallista.lineItem(counter).totalLineAmount = New Profact.TimbraCFDI40.Complementos.Detallista.detallistaLineItemTotalLineAmount - ' detallista.lineItem(counter).totalLineAmount.grossAmount = New Profact.TimbraCFDI40.Complementos.Detallista.detallistaLineItemTotalLineAmountGrossAmount - ' detallista.lineItem(counter).totalLineAmount.grossAmount.Amount = comprobante.Conceptos(counter).Importe - ' detallista.lineItem(counter).totalLineAmount.netAmount = New Profact.TimbraCFDI40.Complementos.Detallista.detallistaLineItemTotalLineAmountNetAmount - ' detallista.lineItem(counter).totalLineAmount.netAmount.Amount = comprobante.Conceptos(counter).Importe - ' counter = (counter + 1) - ' Next - ' detallista.totalAmount = New Profact.TimbraCFDI40.Complementos.Detallista.detallistaTotalAmount - ' detallista.totalAmount.Amount = comprobante.SubTotal - - ' detallista.TotalAllowanceCharge = New Profact.TimbraCFDI40.Complementos.Detallista.detallistaTotalAllowanceCharge(1) {} - ' detallista.TotalAllowanceCharge(0) = New Profact.TimbraCFDI40.Complementos.Detallista.detallistaTotalAllowanceCharge - ' detallista.TotalAllowanceCharge(0).allowanceOrChargeType = Profact.TimbraCFDI40.Complementos.Detallista.detallistaTotalAllowanceChargeAllowanceOrChargeType.ALLOWANCE - ' detallista.TotalAllowanceCharge(0).Amount = Ventas.DescuentoTC - - ' Dim nombres As System.Xml.Serialization.XmlSerializerNamespaces = New System.Xml.Serialization.XmlSerializerNamespaces - ' nombres.Add("detallista", "http://www.sat.gob.mx/detallista") - ' Dim xmlDetallista As String = Profact.TimbraCFDI.XMLUtilerias.SerializaObjeto(detallista, GetType(Profact.TimbraCFDI40.Complementos.Detallista.detallista), nombres) - - ' Dim docDetallista As XmlDocument = New XmlDocument - ' docDetallista.LoadXml(xmlDetallista) - ' comprobante.DetallistaSpecified = True - ' LXmlComplementos.Add(docDetallista.DocumentElement) - - ' TieneComplemento = True - ' End If - '#End Region If TieneComplemento Then comprobante.Complemento = New Profact.TimbraCFDI40.ComprobanteComplemento @@ -5351,6 +5170,17 @@ Public Class Timbrado doc.ObjetoImpuesto) If doc.Impuestos IsNot Nothing Then + ''retenciones + If (doc.Impuestos).Where(Function(x) x.TrasladooRetencion = "R").Count > 0 Then + Dim j As Integer = 0 + For Each docimp As CFDIConceptosImpuestos In doc.Impuestos.Where(Function(x) x.TrasladooRetencion = "R") + If docimp.TrasladooRetencion = "R" Then + cfdi.Pago20RetencionDR(docimp.Base, docimp.Impuesto, docimp.TipoFactor, docimp.TasaOCuota, docimp.Importe) + End If + j += 1 + Next + End If + ''traslados If (doc.Impuestos).Where(Function(x) x.TrasladooRetencion = "T").Count > 0 Then Dim j As Integer = 0 @@ -5362,33 +5192,22 @@ Public Class Timbrado j += 1 Next End If - - ''retenciones - If (doc.Impuestos).Where(Function(x) x.TrasladooRetencion = "R").Count > 0 Then - Dim j As Integer = 0 - For Each docimp As CFDIConceptosImpuestos In doc.Impuestos.Where(Function(x) x.TrasladooRetencion = "R") - If docimp.TrasladooRetencion = "R" Then - cfdi.Pago20RetencionDR(docimp.Base, docimp.Impuesto, docimp.TipoFactor, docimp.TasaOCuota, docimp.Importe) - End If - j += 1 - Next - End If End If Next + If (ObjCFDITimbre.ComplementoPagos.Retenciones).Count > 0 Then + For Each Ret As CFDIRetenciones In ObjCFDITimbre.ComplementoPagos.Retenciones + cfdi.Pago20RetencionP(Ret.Impuesto, Ret.Importe) + Next + End If + If ObjCFDITimbre.ComplementoPagos.Traslados.Count > 0 Then For Each Tra As CFDITraslados In (ObjCFDITimbre.ComplementoPagos.Traslados) cfdi.Pago20TrasladoP(Tra.Base, Tra.Impuesto, Tra.TipoFactor, Tra.TasaOCuota, Tra.Importe) Next End If - - If (ObjCFDITimbre.ComplementoPagos.Retenciones).Count > 0 Then - For Each Ret As CFDIRetenciones In ObjCFDITimbre.ComplementoPagos.Retenciones - cfdi.Pago20RetencionP(Ret.Impuesto, Ret.Importe) - Next - End If End If End If #End Region diff --git a/App_Code/WS/WSSIGVentas.vb b/App_Code/WS/WSSIGVentas.vb index 9cab10ea5..badabe60b 100644 --- a/App_Code/WS/WSSIGVentas.vb +++ b/App_Code/WS/WSSIGVentas.vb @@ -131,7 +131,7 @@ Namespace SIG CveComplementoPagoTimbre = objbancos.AddComplementoPago(dr("CveIE").ToString().ToEntero(), -1, "Pag", dr("FolioTimbre"), Me.CveUsuario, CveEmpresa, CvePrePoliza:=-1, Estatus:=1) continuar = CveComplementoPagoTimbre > 0 End If - If continuar Then continuar = objbancos.UpdateComplementoPago(CveComplementoPagoTimbre, dr("FolioFiscalTimbre").ToString(), dr("CvePAC").ToString().ToEntero(), CveEmpresa) + If continuar Then continuar = objbancos.UpdateComplementoPago(CveComplementoPagoTimbre, dr("FolioFiscalTimbre").ToString(), "4.0", dr("CvePAC").ToString().ToEntero(), CveEmpresa) If continuar Then dr("Sincronizado") = 1 End If From 04d841ad1c650410ba9abe192f9032d679ff56ed Mon Sep 17 00:00:00 2001 From: rrene Date: Fri, 3 Jun 2022 21:03:38 -0700 Subject: [PATCH 06/21] -- --- Bancos/ProveedoresAbonar.aspx.vb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Bancos/ProveedoresAbonar.aspx.vb b/Bancos/ProveedoresAbonar.aspx.vb index 7da7906d5..ef47b01ed 100644 --- a/Bancos/ProveedoresAbonar.aspx.vb +++ b/Bancos/ProveedoresAbonar.aspx.vb @@ -1300,7 +1300,7 @@ Partial Class Bancos_ProveedoresAbonar End If If tImporteCompra <> tImportePago Then - If tImporteCompra < tImportePago Then + If tImporteCompra > tImportePago Then ConceptoContable = 64 IdCtaContable = UsuarioActual.Empresa.IdCuentaGananciaCambiaria TipoMovimiento = True From 4eec61bc5404092a52584e52b9c46755137f8010 Mon Sep 17 00:00:00 2001 From: rrene Date: Fri, 3 Jun 2022 21:03:49 -0700 Subject: [PATCH 07/21] ret isr --- Compras/ReembolsosComprobaciones.aspx.vb | 650 ++++++++--------------- 1 file changed, 228 insertions(+), 422 deletions(-) diff --git a/Compras/ReembolsosComprobaciones.aspx.vb b/Compras/ReembolsosComprobaciones.aspx.vb index e3370d62a..8533730e9 100644 --- a/Compras/ReembolsosComprobaciones.aspx.vb +++ b/Compras/ReembolsosComprobaciones.aspx.vb @@ -631,65 +631,64 @@ Partial Class Compras_ReembolsosComprobaciones Dim IdCtaOtrosProductos As Integer = 0 Dim CvePrePolizaUnificar As Integer = 0 - 'Conta SIG - Dim CveCuentaProveedor As Integer = 0 - Dim CveCuentaPersonal As Integer = 0 + Dim SeUnifico = False - 'Obtenemos la cuenta del Personal o Caja Chica - If CveCajaChica > 0 Then - If ObjMov.GetRetCuenta(30, CveCajaChica) Then - If ObjMov.DtResultados.Rows.Count > 0 Then - IdCuentaBancaria = ObjMov.DtResultados.Rows(0)("IdCtaContable").ToString.ToEntero + If UsuarioActual.Empresa.TipoContabilidad = 2 Then + 'Obtenemos la cuenta del Personal o Caja Chica + If CveCajaChica > 0 Then + If ObjMov.GetRetCuenta(30, CveCajaChica) Then + If ObjMov.DtResultados.Rows.Count > 0 Then + IdCuentaBancaria = ObjMov.DtResultados.Rows(0)("IdCtaContable").ToString.ToEntero + End If + End If + Else + If ObjMov.GetRetCuenta(29, CvePersonal) Then + If ObjMov.DtResultados.Rows.Count > 0 Then + IdCtaPersonal = ObjMov.DtResultados.Rows(0)("IdCtaContPersonal").ToString.ToEntero + End If End If End If - Else - If ObjMov.GetRetCuenta(29, CvePersonal) Then + + 'Obtenemos la cuenta del IVAxAcreditar + If ObjMov.GetRetCuenta(14, UsuarioActual.CveEmpresa) Then If ObjMov.DtResultados.Rows.Count > 0 Then - IdCtaPersonal = ObjMov.DtResultados.Rows(0)("IdCtaContPersonal").ToString.ToEntero + IdCtaIVAxAcreditar = ObjMov.DtResultados.Rows(0)("IdCuentaIVAxAcreditar").ToString.ToEntero End If End If - End If - 'Obtenemos la cuenta del IVAxAcreditar - If ObjMov.GetRetCuenta(14, UsuarioActual.CveEmpresa) Then - If ObjMov.DtResultados.Rows.Count > 0 Then - IdCtaIVAxAcreditar = ObjMov.DtResultados.Rows(0)("IdCuentaIVAxAcreditar").ToString.ToEntero + 'Obtenemos la cuenta del IVAAcreditable + If ObjMov.GetRetCuenta(19, UsuarioActual.CveEmpresa) Then + If ObjMov.DtResultados.Rows.Count > 0 Then + IdCtaIVAAcreditable = ObjMov.DtResultados.Rows(0)("IdCuentaIVAAcreditable").ToString.ToEntero + End If End If - End If - 'Obtenemos la cuenta del IVAAcreditable - If ObjMov.GetRetCuenta(19, UsuarioActual.CveEmpresa) Then - If ObjMov.DtResultados.Rows.Count > 0 Then - IdCtaIVAAcreditable = ObjMov.DtResultados.Rows(0)("IdCuentaIVAAcreditable").ToString.ToEntero + 'Obtenemos la cuenta del RetIVA + If ObjMov.GetRetCuenta(15, UsuarioActual.CveEmpresa) Then + If ObjMov.DtResultados.Rows.Count > 0 Then + IdCtaRetIVA = ObjMov.DtResultados.Rows(0)("IdCuentaRetIVACirculacion").ToString.ToEntero + End If End If - End If - 'Obtenemos la cuenta del RetIVA - If ObjMov.GetRetCuenta(15, UsuarioActual.CveEmpresa) Then - If ObjMov.DtResultados.Rows.Count > 0 Then - IdCtaRetIVA = ObjMov.DtResultados.Rows(0)("IdCuentaRetIVACirculacion").ToString.ToEntero + 'Obtenemos la cuenta del RetISR + If ObjMov.GetRetCuenta(16, UsuarioActual.CveEmpresa) Then + If ObjMov.DtResultados.Rows.Count > 0 Then + IdCtaRetISR = ObjMov.DtResultados.Rows(0)("IdCuentaRetISRCirculacion").ToString.ToEntero + End If End If - End If - 'Obtenemos la cuenta del RetISR - If ObjMov.GetRetCuenta(16, UsuarioActual.CveEmpresa) Then - If ObjMov.DtResultados.Rows.Count > 0 Then - IdCtaRetISR = ObjMov.DtResultados.Rows(0)("IdCuentaRetISRCirculacion").ToString.ToEntero - End If - End If - - 'Obtenemos la cuenta del IdCtaOtrosProductos - If ObjMov.GetRetCuenta(132, UsuarioActual.CveEmpresa) Then - If ObjMov.DtResultados.Rows.Count > 0 Then - IdCtaOtrosProductos = ObjMov.DtResultados.Rows(0)("IdCtaOtrosProductos").ToString.ToEntero + 'Obtenemos la cuenta del IdCtaOtrosProductos + If ObjMov.GetRetCuenta(132, UsuarioActual.CveEmpresa) Then + If ObjMov.DtResultados.Rows.Count > 0 Then + IdCtaOtrosProductos = ObjMov.DtResultados.Rows(0)("IdCtaOtrosProductos").ToString.ToEntero + End If End If End If 'inserto las compras que voy a pagar For Each gvr As GridViewRow In GvCxP.Rows - If gvr.FCCheckBox("Chk").Checked Then ConceptoMovimiento = $"{gvr.DataKey("Proveedor")} F:{gvr.DataKey("SerieFolio")} {If(DdlPersonal.Visible, DdlPersonal.SelectedItem.Text, DdlCajaChica.SelectedItem.Text)}" Referencia = gvr.DataKey("SerieFolio").ToString @@ -740,13 +739,21 @@ Partial Class Compras_ReembolsosComprobaciones Dim ComisionTmp As Decimal = gvr.FCTextBox("TxtComision").Text.ToDecimal 'Otros Ingresos - If (ChkAjusteOI.Checked Or ChkOtrosIngresosCheque.Checked) AndAlso gvr.FCTextBox("TxtComision").Text.ToDecimal <> 0 Then - If Not ObjMov.AddPrePolizasDetalle(CvePrePolizaPago, False, gvr.FCTextBox("TxtComision").Text.ToDecimal, Referencia, 211, ConceptoMovimiento, gvr.FCLiteral("LtlFecha").Text.ToDate, IdCtaProveedor, -1, CveIE:=CveIERegistrado, CvePersonal:=CvePersonal, CveCompra:=gvr.FCHyperLink("HplF2").Text.ToEntero, CveSubProyecto:=gvr.DataKey("CveSubProyecto").ToEntero, CveProveedor:=gvr.FCHyperLink("HLProv").Text.ToEntero, ImporteME:=If(tipoCambio = 1, 0, gvr.FCTextBox("TxtComision").Text.ToDecimal), ImporteMX:=gvr.FCTextBox("TxtComision").Text.ToDecimal * tipoCambio, CveCuenta:=CveCuentaProveedor) Then + If MsgError = "" AndAlso (ChkAjusteOI.Checked Or ChkOtrosIngresosCheque.Checked) AndAlso ComisionTmp <> 0 Then + + Dim tOtCveCon As Integer = 211 + Dim tOtTipoMovto As Boolean = False + If ComisionTmp < 0 Then + tOtTipoMovto = True : tOtCveCon = 78 + ComisionTmp = Math.Abs(ComisionTmp) + End If + + If Not ObjMov.AddPrePolizasDetalle(CvePrePolizaPago, tOtTipoMovto, ComisionTmp, Referencia, tOtCveCon, ConceptoMovimiento, gvr.FCLiteral("LtlFecha").Text.ToDate, IdCtaProveedor, -1, CveIE:=CveIERegistrado, CvePersonal:=CvePersonal, CveCompra:=gvr.FCHyperLink("HplF2").Text.ToEntero, CveSubProyecto:=gvr.DataKey("CveSubProyecto").ToEntero, CveProveedor:=gvr.FCHyperLink("HLProv").Text.ToEntero, ImporteME:=If(tipoCambio = 1, 0, ComisionTmp), ImporteMX:=ComisionTmp * tipoCambio) Then MsgError = "no se pudo insertar el detalle de la poliza de otros ingresos" End If If CveCajaChica > 0 AndAlso Not HdnCheque.Value.ToEntero > 0 Then - If Not ObjMov.AddPrePolizasDetalle(CvePrePolizaPago, True, gvr.FCTextBox("TxtComision").Text.ToDecimal, Referencia, 211, ConceptoMovimiento, gvr.FCLiteral("LtlFecha").Text.ToDate, IdCtaProveedor, -1, CveIE:=CveIERegistrado, CvePersonal:=CvePersonal, CveCompra:=gvr.FCHyperLink("HplF2").Text.ToEntero, CveSubProyecto:=gvr.DataKey("CveSubProyecto").ToEntero, CveProveedor:=gvr.FCHyperLink("HLProv").Text.ToEntero, ImporteME:=If(tipoCambio = 1, 0, gvr.FCTextBox("TxtComision").Text.ToDecimal), ImporteMX:=gvr.FCTextBox("TxtComision").Text.ToDecimal * tipoCambio, CveCuenta:=CveCuentaProveedor, Contabilizable:=False) Then + If Not ObjMov.AddPrePolizasDetalle(CvePrePolizaPago, Not tOtTipoMovto, ComisionTmp, Referencia, tOtCveCon, ConceptoMovimiento, gvr.FCLiteral("LtlFecha").Text.ToDate, IdCtaProveedor, -1, CveIE:=CveIERegistrado, CvePersonal:=CvePersonal, CveCompra:=gvr.FCHyperLink("HplF2").Text.ToEntero, CveSubProyecto:=gvr.DataKey("CveSubProyecto").ToEntero, CveProveedor:=gvr.FCHyperLink("HLProv").Text.ToEntero, ImporteME:=If(tipoCambio = 1, 0, ComisionTmp), ImporteMX:=ComisionTmp * tipoCambio, Contabilizable:=False) Then MsgError = "no se pudo insertar el detalle de la poliza de otros ingresos" End If End If @@ -754,22 +761,21 @@ Partial Class Compras_ReembolsosComprobaciones If gvr.DataKey("Original").ToDecimal > 0 Then PorcentajePago = (ImporteMovto / gvr.DataKey("Original").ToDecimal) Else PorcentajePago = 1 - If Not ChkReembolsarSinBancos.Checked AndAlso (Not HdnCheque.Value.ToEntero > 0 Or Not UsuarioActual.CveEmpresa.Contiene(119, 158)) Then - + If MsgError = "" AndAlso Not ChkReembolsarSinBancos.Checked AndAlso (Not HdnCheque.Value.ToEntero > 0 Or Not UsuarioActual.CveEmpresa.Contiene(119, 158)) Then Dim ImporteMovtoTmp As Decimal = ImporteMovto - If ComisionTmp < 0 Then - ImporteMovtoTmp = ImporteMovto + ComisionTmp - End If + 'If ComisionTmp < 0 Then + ' ImporteMovtoTmp = ImporteMovto + ComisionTmp + 'End If 'Si es caja chica metemos el concepto 30, si es funcionario metemos 29 - If Not ObjMov.AddPrePolizasDetalle(CvePrePolizaPago, True, ImporteMovtoTmp, Referencia, If(CveCajaChica > 0, 30, 29), ConceptoMovimiento, gvr.FCLiteral("LtlFecha").Text.ToDate, If(CveCajaChica > 0, IdCuentaBancaria, IdCtaPersonal), -1, CveIE:=CveIEPago, CveIEDevolucion:=If(CveCajaChica > 0, If(DDlCheques.SelectedValue.ToEntero = -1, CveIECajaChica, DDlCheques.SelectedValue.ToEntero), -1), CvePersonal:=CvePersonal, CveCompra:=gvr.FCHyperLink("HplF2").Text.ToEntero, CveProveedor:=gvr.FCHyperLink("HLProv").Text.ToEntero, ImporteME:=If(tipoCambio = 1, 0, ImporteMovtoTmp), ImporteMX:=ImporteMovtoTmp * tipoCambio, CveCuenta:=CveCuentaPersonal, CvePrePolizaOriginal:=CvePrePolizaPagoOriginal, Contabilizable:=If(CveCajaChica > 0 Or CvePersonal > 0, Not UsaSimplificacionCajaChica, True)) Then + If Not ObjMov.AddPrePolizasDetalle(CvePrePolizaPago, True, ImporteMovtoTmp, Referencia, If(CveCajaChica > 0, 30, 29), ConceptoMovimiento, gvr.FCLiteral("LtlFecha").Text.ToDate, If(CveCajaChica > 0, IdCuentaBancaria, IdCtaPersonal), -1, CveIE:=CveIEPago, CveIEDevolucion:=If(CveCajaChica > 0, If(DDlCheques.SelectedValue.ToEntero = -1, CveIECajaChica, DDlCheques.SelectedValue.ToEntero), -1), CvePersonal:=CvePersonal, CveCompra:=gvr.FCHyperLink("HplF2").Text.ToEntero, CveProveedor:=gvr.FCHyperLink("HLProv").Text.ToEntero, ImporteME:=If(tipoCambio = 1, 0, ImporteMovtoTmp), ImporteMX:=ImporteMovtoTmp * tipoCambio, CvePrePolizaOriginal:=CvePrePolizaPagoOriginal, Contabilizable:=If(CveCajaChica > 0 Or CvePersonal > 0, Not UsaSimplificacionCajaChica, True)) Then MsgError = "Detalle" End If End If 'Pago Proveedores - If Not ObjMov.AddPrePolizasDetalle(CvePrePolizaPago, False, ImporteMovto, Referencia, CveConceptoContablePago, ConceptoMovimiento, gvr.FCLiteral("LtlFecha").Text.ToDate, IdCtaProveedor, -1, CveIE:=CveIEPago, CvePersonal:=CvePersonal, CveCompra:=gvr.FCHyperLink("HplF2").Text.ToEntero, CveProveedor:=gvr.FCHyperLink("HLProv").Text.ToEntero, ImporteME:=If(tipoCambio = 1, 0, ImporteMovto), ImporteMX:=ImporteMovto * tipoCambio, CveCuenta:=CveCuentaProveedor, CvePrePolizaOriginal:=CvePrePolizaPagoOriginal) Then + If MsgError = "" AndAlso Not ObjMov.AddPrePolizasDetalle(CvePrePolizaPago, False, ImporteMovto, Referencia, CveConceptoContablePago, ConceptoMovimiento, gvr.FCLiteral("LtlFecha").Text.ToDate, IdCtaProveedor, -1, CveIE:=CveIEPago, CvePersonal:=CvePersonal, CveCompra:=gvr.FCHyperLink("HplF2").Text.ToEntero, CveProveedor:=gvr.FCHyperLink("HLProv").Text.ToEntero, ImporteME:=If(tipoCambio = 1, 0, ImporteMovto), ImporteMX:=ImporteMovto * tipoCambio, CvePrePolizaOriginal:=CvePrePolizaPagoOriginal) Then MsgError = "Detalle" End If @@ -824,134 +830,55 @@ Partial Class Compras_ReembolsosComprobaciones End If If MsgError = "" AndAlso gvr.DataKey("RetIVA").ToDecimal > 0 Then - Dim ConceptoContableRetIVAXAcreditar = 0, ConceptoContableRetIVAAcreditable = 0, IdCtaContableRetIVAXAcreditar = 0, IdCtaContableRetIVAAcreditable = 0 + Dim ConceptoContableRetIVAXAcreditar = 0, ConceptoContableRetIVAAcreditable = 0, IdCtaContableRetIVAXAcreditar = 0, IdCtaContableRetIVAAcreditable = 0, CveFunc = 0, CveFuncAcreditable = 0 Select Case gvr.DataKey("CveRetIVAConcepto").ToEntero Case 1 ConceptoContableRetIVAXAcreditar = 15 ConceptoContableRetIVAAcreditable = 22 - If IdCtaRetIVA > 0 Then - IdCtaContableRetIVAXAcreditar = IdCtaRetIVA - ElseIf UsuarioActual.Empresa.Funcionalidad(307).ToEntero > 0 Then - IdCtaContableRetIVAXAcreditar = UsuarioActual.Empresa.Funcionalidad(307).ToEntero - Else - If ObjMov.GetRetCuenta(ConceptoContableRetIVAXAcreditar, UsuarioActual.CveEmpresa) Then - If ObjMov.DtResultados.Rows.Count > 0 Then - IdCtaContableRetIVAXAcreditar = ObjMov.DtResultados.Rows(0)("IdCuentaRetIVACirculacion").ToString.ToEntero - End If - End If - End If - If IdCtaRetIVA > 0 Then - IdCtaContableRetIVAAcreditable = IdCtaRetIVA - ElseIf UsuarioActual.Empresa.Funcionalidad(308).ToEntero > 0 Then - IdCtaContableRetIVAAcreditable = UsuarioActual.Empresa.Funcionalidad(308).ToEntero - Else - If ObjMov.GetRetCuenta(ConceptoContableRetIVAAcreditable, UsuarioActual.CveEmpresa) Then - If ObjMov.DtResultados.Rows.Count > 0 Then - IdCtaContableRetIVAAcreditable = ObjMov.DtResultados.Rows(0)("IdCuentaRetIVACirculacion").ToString.ToEntero - End If - End If - End If + CveFunc = 307 + CveFuncAcreditable = 308 Case 2 ConceptoContableRetIVAXAcreditar = 183 ConceptoContableRetIVAAcreditable = 184 - If IdCtaRetIVA > 0 Then - IdCtaContableRetIVAXAcreditar = IdCtaRetIVA - ElseIf UsuarioActual.Empresa.Funcionalidad(309).ToEntero > 0 Then - IdCtaContableRetIVAXAcreditar = UsuarioActual.Empresa.Funcionalidad(309).ToEntero - Else - If ObjMov.GetRetCuenta(ConceptoContableRetIVAXAcreditar, UsuarioActual.CveEmpresa) Then - If ObjMov.DtResultados.Rows.Count > 0 Then - IdCtaContableRetIVAXAcreditar = ObjMov.DtResultados.Rows(0)("IdCuentaRetIVACirculacion").ToString.ToEntero - End If - End If - End If - If IdCtaRetIVA > 0 Then - IdCtaContableRetIVAAcreditable = IdCtaRetIVA - ElseIf UsuarioActual.Empresa.Funcionalidad(310).ToEntero > 0 Then - IdCtaContableRetIVAAcreditable = UsuarioActual.Empresa.Funcionalidad(310).ToEntero - Else - If ObjMov.GetRetCuenta(ConceptoContableRetIVAAcreditable, UsuarioActual.CveEmpresa) Then - If ObjMov.DtResultados.Rows.Count > 0 Then - IdCtaContableRetIVAAcreditable = ObjMov.DtResultados.Rows(0)("IdCuentaRetIVACirculacion").ToString.ToEntero - End If - End If - End If + CveFunc = 309 + CveFuncAcreditable = 310 Case 3 ConceptoContableRetIVAXAcreditar = 185 ConceptoContableRetIVAAcreditable = 186 - If IdCtaRetIVA > 0 Then - IdCtaContableRetIVAXAcreditar = IdCtaRetIVA - ElseIf UsuarioActual.Empresa.Funcionalidad(311).ToEntero > 0 Then - IdCtaContableRetIVAXAcreditar = UsuarioActual.Empresa.Funcionalidad(311).ToEntero - Else - If ObjMov.GetRetCuenta(ConceptoContableRetIVAXAcreditar, UsuarioActual.CveEmpresa) Then - If ObjMov.DtResultados.Rows.Count > 0 Then - IdCtaContableRetIVAXAcreditar = ObjMov.DtResultados.Rows(0)("IdCuentaRetIVACirculacion").ToString.ToEntero - End If - End If - End If - If IdCtaRetIVA > 0 Then - IdCtaContableRetIVAAcreditable = IdCtaRetIVA - ElseIf UsuarioActual.Empresa.Funcionalidad(312).ToEntero > 0 Then - IdCtaContableRetIVAAcreditable = UsuarioActual.Empresa.Funcionalidad(312).ToEntero - Else - If ObjMov.GetRetCuenta(ConceptoContableRetIVAAcreditable, UsuarioActual.CveEmpresa) Then - If ObjMov.DtResultados.Rows.Count > 0 Then - IdCtaContableRetIVAAcreditable = ObjMov.DtResultados.Rows(0)("IdCuentaRetIVACirculacion").ToString.ToEntero - End If - End If - End If + CveFunc = 311 + CveFuncAcreditable = 312 Case 4 ConceptoContableRetIVAXAcreditar = 248 ConceptoContableRetIVAAcreditable = 249 - If IdCtaRetIVA > 0 Then - IdCtaContableRetIVAXAcreditar = IdCtaRetIVA - ElseIf UsuarioActual.Empresa.Funcionalidad(313).ToEntero > 0 Then - IdCtaContableRetIVAXAcreditar = UsuarioActual.Empresa.Funcionalidad(313).ToEntero - Else - If ObjMov.GetRetCuenta(ConceptoContableRetIVAXAcreditar, UsuarioActual.CveEmpresa) Then - If ObjMov.DtResultados.Rows.Count > 0 Then - IdCtaContableRetIVAXAcreditar = ObjMov.DtResultados.Rows(0)("IdCuentaRetIVACirculacion").ToString.ToEntero - End If - End If - End If - If IdCtaRetIVA > 0 Then - IdCtaContableRetIVAAcreditable = IdCtaRetIVA - ElseIf UsuarioActual.Empresa.Funcionalidad(314).ToEntero > 0 Then - IdCtaContableRetIVAAcreditable = UsuarioActual.Empresa.Funcionalidad(314).ToEntero - Else - If ObjMov.GetRetCuenta(ConceptoContableRetIVAAcreditable, UsuarioActual.CveEmpresa) Then - If ObjMov.DtResultados.Rows.Count > 0 Then - IdCtaContableRetIVAAcreditable = ObjMov.DtResultados.Rows(0)("IdCuentaRetIVACirculacion").ToString.ToEntero - End If - End If - End If - Case 5 - ConceptoContableRetIVAXAcreditar = 285 - ConceptoContableRetIVAAcreditable = 286 - If IdCtaRetIVA > 0 Then - IdCtaContableRetIVAXAcreditar = IdCtaRetIVA - ElseIf UsuarioActual.Empresa.Funcionalidad(577).ToEntero > 0 Then - IdCtaContableRetIVAXAcreditar = UsuarioActual.Empresa.Funcionalidad(577).ToEntero - Else - If ObjMov.GetRetCuenta(ConceptoContableRetIVAXAcreditar, UsuarioActual.CveEmpresa) Then - If ObjMov.DtResultados.Rows.Count > 0 Then - IdCtaContableRetIVAXAcreditar = ObjMov.DtResultados.Rows(0)("IdCuentaRetIVACirculacion").ToString.ToEntero - End If - End If - End If - If IdCtaRetIVA > 0 Then - IdCtaContableRetIVAAcreditable = IdCtaRetIVA - ElseIf UsuarioActual.Empresa.Funcionalidad(578).ToEntero > 0 Then - IdCtaContableRetIVAAcreditable = UsuarioActual.Empresa.Funcionalidad(578).ToEntero - Else - If ObjMov.GetRetCuenta(ConceptoContableRetIVAAcreditable, UsuarioActual.CveEmpresa) Then - If ObjMov.DtResultados.Rows.Count > 0 Then - IdCtaContableRetIVAAcreditable = ObjMov.DtResultados.Rows(0)("IdCuentaRetIVACirculacion").ToString.ToEntero - End If - End If - End If + CveFunc = 313 + CveFuncAcreditable = 314 End Select + + If UsuarioActual.Empresa.TipoContabilidad = 2 Then + If IdCtaRetIVA > 0 Then + IdCtaContableRetIVAXAcreditar = IdCtaRetIVA + ElseIf UsuarioActual.Empresa.Funcionalidad(CveFunc).ToEntero > 0 Then + IdCtaContableRetIVAXAcreditar = UsuarioActual.Empresa.Funcionalidad(CveFunc).ToEntero + Else + If ObjMov.GetRetCuenta(ConceptoContableRetIVAXAcreditar, UsuarioActual.CveEmpresa) Then + If ObjMov.DtResultados.Rows.Count > 0 Then + IdCtaContableRetIVAXAcreditar = ObjMov.DtResultados.Rows(0)("IdCuentaRetIVACirculacion").ToString.ToEntero + End If + End If + End If + If IdCtaRetIVA > 0 Then + IdCtaContableRetIVAAcreditable = IdCtaRetIVA + ElseIf UsuarioActual.Empresa.Funcionalidad(CveFuncAcreditable).ToEntero > 0 Then + IdCtaContableRetIVAAcreditable = UsuarioActual.Empresa.Funcionalidad(CveFuncAcreditable).ToEntero + Else + If ObjMov.GetRetCuenta(ConceptoContableRetIVAAcreditable, UsuarioActual.CveEmpresa) Then + If ObjMov.DtResultados.Rows.Count > 0 Then + IdCtaContableRetIVAAcreditable = ObjMov.DtResultados.Rows(0)("IdCuentaRetIVACirculacion").ToString.ToEntero + End If + End If + End If + End If + If UsuarioActual.Empresa.Funcionalidad(521) = "1" Then If ImporteMovto = gvr.FCLiteral("LtlSaldo").Text.ToDouble Then 'Agrego el RetIVA @@ -975,15 +902,47 @@ Partial Class Compras_ReembolsosComprobaciones MsgError = "Detalle" End If End If + + Dim AcreditaISR As Boolean = False + If UsuarioActual.CveEmpresa = 140 Then AcreditaISR = True + + If MsgError = "" AndAlso AcreditaISR AndAlso gvr.DataKey("RetISR").ToDecimal > 0 Then + Dim ConceptoContableRetISRXAcreditar = 0, ConceptoContableRetISRAcreditable = 0, IdCtaContableRetISRXAcreditar = 0, IdCtaContableRetISRAcreditable = 0 + Select Case gvr.DataKey("CveRetIVAConcepto").ToEntero + Case 1 + ConceptoContableRetISRXAcreditar = 16 + ConceptoContableRetISRAcreditable = 23 + + Case 2 + ConceptoContableRetISRXAcreditar = 243 + ConceptoContableRetISRAcreditable = 244 + CveFunc = 309 + CveFuncAcreditable = 310 + + Case 3 + ConceptoContableRetISRXAcreditar = 327 + ConceptoContableRetISRAcreditable = 328 + CveFunc = 311 + + End Select + + 'Agrego el RetIVA + If Not ObjMov.AddPrePolizasDetalle(CvePrePolizaPago, False, gvr.DataKey("RetISR").ToDecimal * PorcentajePago, Referencia, ConceptoContableRetISRXAcreditar, ConceptoMovimiento, gvr.FCLiteral("LtlFecha").Text.ToDate, IdCtaContableRetISRXAcreditar, -1, CveIE:=CveIEExcedente, CveCompra:=gvr.FCHyperLink("HplF2").Text.ToEntero, CveProveedor:=gvr.FCHyperLink("HLProv").Text.ToEntero, ImporteME:=If(tipoCambio = 1, 0, gvr.DataKey("RetISR").ToDecimal * PorcentajePago), ImporteMX:=(gvr.DataKey("RetISR").ToDecimal * PorcentajePago) * tipoCambio, CvePrePolizaOriginal:=CvePrePolizaExcedente, CvePersonal:=CvePersonal) Then + MsgError = "Detalle" + End If + + 'Agrego el RetIVA + If Not ObjMov.AddPrePolizasDetalle(CvePrePolizaPago, True, gvr.DataKey("RetISR").ToDecimal * PorcentajePago, Referencia, ConceptoContableRetISRAcreditable, ConceptoMovimiento, gvr.FCLiteral("LtlFecha").Text.ToDate, IdCtaContableRetISRAcreditable, -1, CveIE:=CveIEExcedente, CveCompra:=gvr.FCHyperLink("HplF2").Text.ToEntero, CveProveedor:=gvr.FCHyperLink("HLProv").Text.ToEntero, ImporteME:=If(tipoCambio = 1, 0, gvr.DataKey("RetISR").ToDecimal * PorcentajePago), ImporteMX:=(gvr.DataKey("RetISR").ToDecimal * PorcentajePago) * tipoCambio, CvePrePolizaOriginal:=CvePrePolizaExcedente, CvePersonal:=CvePersonal) Then + MsgError = "Detalle" + End If + End If End If + Dim SaldoExcedente As Decimal = gvr.FCTextBox("TxtSaldoExcedente").Text.ToDecimal - - Dim SaldoExcedente As Double = gvr.FCTextBox("TxtSaldoExcedente").Text.ToDecimal - - If UsuarioActual.Empresa.Funcionalidad(506) = "1" And CbPermitirExcedente.Checked = True And SaldoExcedente > 0 Then + If MsgError = "" AndAlso UsuarioActual.Empresa.Funcionalidad(506) = "1" And CbPermitirExcedente.Checked = True And SaldoExcedente > 0 Then If DDlPermitirExcedente.SelectedValue = "1" Then - If Not ObjMov.AddPrePolizasDetalle(CvePrePolizaPago, False, SaldoExcedente, Referencia, CveConceptoContablePago, ConceptoMovimiento, gvr.FCLiteral("LtlFecha").Text.ToDate, IdCtaProveedor, -1, CveIE:=CveIEPago, CveCompra:=gvr.FCHyperLink("HplF2").Text.ToEntero, CveProveedor:=gvr.FCHyperLink("HLProv").Text.ToEntero, ImporteME:=If(tipoCambio = 1, 0, SaldoExcedente), ImporteMX:=(SaldoExcedente) * tipoCambio, CvePersonal:=CvePersonal, CveCuenta:=CveCuentaProveedor, CvePrePolizaOriginal:=CvePrePolizaPagoOriginal) Then + If Not ObjMov.AddPrePolizasDetalle(CvePrePolizaPago, False, SaldoExcedente, Referencia, CveConceptoContablePago, ConceptoMovimiento, gvr.FCLiteral("LtlFecha").Text.ToDate, IdCtaProveedor, -1, CveIE:=CveIEPago, CveCompra:=gvr.FCHyperLink("HplF2").Text.ToEntero, CveProveedor:=gvr.FCHyperLink("HLProv").Text.ToEntero, ImporteME:=If(tipoCambio = 1, 0, SaldoExcedente), ImporteMX:=(SaldoExcedente) * tipoCambio, CvePersonal:=CvePersonal, CvePrePolizaOriginal:=CvePrePolizaPagoOriginal) Then MsgError = "Detalle Reembolso Personal" End If If Not ObjMov.AddPrePolizasDetalle(CvePrePolizaPago, True, SaldoExcedente, Referencia, 132, ConceptoMovimiento, gvr.FCLiteral("LtlFecha").Text.ToDate, IdCtaOtrosProductos, -1, CveIE:=CveIEPago, CveCompra:=gvr.FCHyperLink("HplF2").Text.ToEntero, CveProveedor:=gvr.FCHyperLink("HLProv").Text.ToEntero, ImporteME:=If(tipoCambio = 1, 0, SaldoExcedente), ImporteMX:=SaldoExcedente * tipoCambio, CvePersonal:=CvePersonal, CvePrePolizaOriginal:=CvePrePolizaPagoOriginal) Then @@ -991,17 +950,17 @@ Partial Class Compras_ReembolsosComprobaciones End If ElseIf DDlPermitirExcedente.SelectedValue = "2" Then - If Not ObjMov.AddPrePolizasDetalle(CvePrePolizaPago, False, SaldoExcedente, Referencia, CveConceptoContablePago, ConceptoMovimiento, gvr.FCLiteral("LtlFecha").Text.ToDate, IdCtaProveedor, -1, CveIE:=CveIEPago, CveCompra:=gvr.FCHyperLink("HplF2").Text.ToEntero, CveProveedor:=gvr.FCHyperLink("HLProv").Text.ToEntero, ImporteME:=If(tipoCambio = 1, 0, SaldoExcedente), ImporteMX:=SaldoExcedente * tipoCambio, CvePersonal:=CvePersonal, CveCuenta:=CveCuentaProveedor, CvePrePolizaOriginal:=CvePrePolizaPagoOriginal) Then + If Not ObjMov.AddPrePolizasDetalle(CvePrePolizaPago, False, SaldoExcedente, Referencia, CveConceptoContablePago, ConceptoMovimiento, gvr.FCLiteral("LtlFecha").Text.ToDate, IdCtaProveedor, -1, CveIE:=CveIEPago, CveCompra:=gvr.FCHyperLink("HplF2").Text.ToEntero, CveProveedor:=gvr.FCHyperLink("HLProv").Text.ToEntero, ImporteME:=If(tipoCambio = 1, 0, SaldoExcedente), ImporteMX:=SaldoExcedente * tipoCambio, CvePersonal:=CvePersonal, CvePrePolizaOriginal:=CvePrePolizaPagoOriginal) Then MsgError = "Detalle Reembolso Personal Excedente" End If - If Not ObjMov.AddPrePolizasDetalle(CvePrePolizaPago, True, SaldoExcedente, Referencia, 29, ConceptoMovimiento, gvr.FCLiteral("LtlFecha").Text.ToDate, IdCtaPersonal, -1, CveIE:=CveIEPago, CveCompra:=gvr.FCHyperLink("HplF2").Text.ToEntero, CveProveedor:=gvr.FCHyperLink("HLProv").Text.ToEntero, ImporteME:=If(tipoCambio = 1, 0, SaldoExcedente), ImporteMX:=SaldoExcedente * tipoCambio, CvePersonal:=CvePersonal, CveCuenta:=CveCuentaPersonal, CvePrePolizaOriginal:=CvePrePolizaPagoOriginal) Then + If Not ObjMov.AddPrePolizasDetalle(CvePrePolizaPago, True, SaldoExcedente, Referencia, 29, ConceptoMovimiento, gvr.FCLiteral("LtlFecha").Text.ToDate, IdCtaPersonal, -1, CveIE:=CveIEPago, CveCompra:=gvr.FCHyperLink("HplF2").Text.ToEntero, CveProveedor:=gvr.FCHyperLink("HLProv").Text.ToEntero, ImporteME:=If(tipoCambio = 1, 0, SaldoExcedente), ImporteMX:=SaldoExcedente * tipoCambio, CvePersonal:=CvePersonal, CvePrePolizaOriginal:=CvePrePolizaPagoOriginal) Then MsgError = "Detalle Reembolso Personal Excedente" End If End If End If 'Unificamos el cheque y la caja chica con los pagos y facturas - If Not IdPoliza > 0 AndAlso Not gvr.DataKey("IdPoliza").ToEntero > 0 AndAlso UsuarioActual.Empresa.Funcionalidad(219) = "1" Then + If MsgError = "" AndAlso Not IdPoliza > 0 AndAlso Not gvr.DataKey("IdPoliza").ToEntero > 0 AndAlso UsuarioActual.Empresa.Funcionalidad(219) = "1" Then If MsgError = "" Then 'CvePrePolizaUnificar = CvePrePolizaPago ''codigo temoral, RMF. falta criterio de unificacion, en una póliza nueva de diario @@ -1023,7 +982,7 @@ Partial Class Compras_ReembolsosComprobaciones End If 'CHEQUE EXCEDENTE - NUEVO - If ChkChequeExcedente.Checked And ImportePagar > 0 Then + If MsgError = "" AndAlso ChkChequeExcedente.Checked And ImportePagar > 0 Then ImporteMovto = ImportePagar If ImportePagar = ImporteOriginal Then @@ -1038,7 +997,7 @@ Partial Class Compras_ReembolsosComprobaciones If gvr.DataKey("Original").ToDecimal > 0 Then PorcentajePago = (ImporteMovto / gvr.DataKey("Original").ToDecimal).RoundSQL Else PorcentajePago = 1 - If Not ObjMov.AddPrePolizasDetalle(CvePrePolizaExcedente, True, ImporteMovto, Referencia, CveConceptoContablePago, ConceptoMovimiento, gvr.FCLiteral("LtlFecha").Text.ToDate, IdCtaProveedor, -1, CveIE:=CveIEExcedente, CveCompra:=gvr.FCHyperLink("HplF2").Text.ToEntero, CveProveedor:=gvr.FCHyperLink("HLProv").Text.ToEntero, ImporteME:=If(tipoCambio = 1, 0, ImporteMovto), ImporteMX:=(ImporteMovto * tipoCambio), CveCuenta:=CveCuentaProveedor) Then + If Not ObjMov.AddPrePolizasDetalle(CvePrePolizaExcedente, True, ImporteMovto, Referencia, CveConceptoContablePago, ConceptoMovimiento, gvr.FCLiteral("LtlFecha").Text.ToDate, IdCtaProveedor, -1, CveIE:=CveIEExcedente, CveCompra:=gvr.FCHyperLink("HplF2").Text.ToEntero, CveProveedor:=gvr.FCHyperLink("HLProv").Text.ToEntero, ImporteME:=If(tipoCambio = 1, 0, ImporteMovto), ImporteMX:=(ImporteMovto * tipoCambio)) Then MsgError = "Detalle" Exit For Else @@ -1048,7 +1007,7 @@ Partial Class Compras_ReembolsosComprobaciones 'Otros Ingresos If ChkAjusteOI.Checked Then - If Not ObjMov.AddPrePolizasDetalle(CvePrePolizaExcedente, True, gvr.FCTextBox("TxtComision").Text.ToDecimal, Referencia, UsuarioActual.Empresa.IdCuentaOtrosIngresos, ConceptoMovimiento, gvr.FCLiteral("LtlFecha").Text.ToDate, IdCtaProveedor, -1, CveIE:=CveIERegistrado, CvePersonal:=CvePersonal, CveCompra:=gvr.FCHyperLink("HplF2").Text.ToEntero, CveSubProyecto:=gvr.DataKey("CveSubProyecto").ToEntero, CveProveedor:=gvr.FCHyperLink("HLProv").Text.ToEntero, ImporteME:=If(tipoCambio = 1, 0, gvr.FCTextBox("TxtComision").Text.ToDecimal), ImporteMX:=gvr.FCTextBox("TxtComision").Text.ToDecimal * tipoCambio, CveCuenta:=CveCuentaProveedor) Then + If Not ObjMov.AddPrePolizasDetalle(CvePrePolizaExcedente, True, gvr.FCTextBox("TxtComision").Text.ToDecimal, Referencia, UsuarioActual.Empresa.IdCuentaOtrosIngresos, ConceptoMovimiento, gvr.FCLiteral("LtlFecha").Text.ToDate, IdCtaProveedor, -1, CveIE:=CveIERegistrado, CvePersonal:=CvePersonal, CveCompra:=gvr.FCHyperLink("HplF2").Text.ToEntero, CveSubProyecto:=gvr.DataKey("CveSubProyecto").ToEntero, CveProveedor:=gvr.FCHyperLink("HLProv").Text.ToEntero, ImporteME:=If(tipoCambio = 1, 0, gvr.FCTextBox("TxtComision").Text.ToDecimal), ImporteMX:=gvr.FCTextBox("TxtComision").Text.ToDecimal * tipoCambio) Then MsgError = "no se pudo insertar el detalle de la poliza de otros ingresos" End If End If @@ -1108,110 +1067,59 @@ Partial Class Compras_ReembolsosComprobaciones End If If MsgError = "" AndAlso gvr.DataKey("RetIVA").ToDecimal > 0 Then - Dim ConceptoContableRetIVAXAcreditar = 0, ConceptoContableRetIVAAcreditable = 0, IdCtaContableRetIVAXAcreditar = 0, IdCtaContableRetIVAAcreditable = 0 + Dim ConceptoContableRetIVAXAcreditar = 0, ConceptoContableRetIVAAcreditable = 0, IdCtaContableRetIVAXAcreditar = 0, IdCtaContableRetIVAAcreditable = 0, CveFunc = 0, CveFuncAcreditable = 0 Select Case gvr.DataKey("CveRetIVAConcepto").ToEntero Case 1 ConceptoContableRetIVAXAcreditar = 15 ConceptoContableRetIVAAcreditable = 22 - If IdCtaRetIVA > 0 Then - IdCtaContableRetIVAXAcreditar = IdCtaRetIVA - ElseIf UsuarioActual.Empresa.Funcionalidad(307).ToEntero > 0 Then - IdCtaContableRetIVAXAcreditar = UsuarioActual.Empresa.Funcionalidad(307).ToEntero - Else - If ObjMov.GetRetCuenta(ConceptoContableRetIVAXAcreditar, UsuarioActual.CveEmpresa) Then - If ObjMov.DtResultados.Rows.Count > 0 Then - IdCtaContableRetIVAXAcreditar = ObjMov.DtResultados.Rows(0)("IdCuentaRetIVACirculacion").ToString.ToEntero - End If - End If - End If - If IdCtaRetIVA > 0 Then - IdCtaContableRetIVAAcreditable = IdCtaRetIVA - ElseIf UsuarioActual.Empresa.Funcionalidad(308).ToEntero > 0 Then - IdCtaContableRetIVAAcreditable = UsuarioActual.Empresa.Funcionalidad(308).ToEntero - Else - If ObjMov.GetRetCuenta(ConceptoContableRetIVAAcreditable, UsuarioActual.CveEmpresa) Then - If ObjMov.DtResultados.Rows.Count > 0 Then - IdCtaContableRetIVAAcreditable = ObjMov.DtResultados.Rows(0)("IdCuentaRetIVACirculacion").ToString.ToEntero - End If - End If - End If + CveFunc = 307 + CveFuncAcreditable = 308 + Case 2 ConceptoContableRetIVAXAcreditar = 183 ConceptoContableRetIVAAcreditable = 184 - If IdCtaRetIVA > 0 Then - IdCtaContableRetIVAXAcreditar = IdCtaRetIVA - ElseIf UsuarioActual.Empresa.Funcionalidad(309).ToEntero > 0 Then - IdCtaContableRetIVAXAcreditar = UsuarioActual.Empresa.Funcionalidad(309).ToEntero - Else - If ObjMov.GetRetCuenta(ConceptoContableRetIVAXAcreditar, UsuarioActual.CveEmpresa) Then - If ObjMov.DtResultados.Rows.Count > 0 Then - IdCtaContableRetIVAXAcreditar = ObjMov.DtResultados.Rows(0)("IdCuentaRetIVACirculacion").ToString.ToEntero - End If - End If - End If - If IdCtaRetIVA > 0 Then - IdCtaContableRetIVAAcreditable = IdCtaRetIVA - ElseIf UsuarioActual.Empresa.Funcionalidad(310).ToEntero > 0 Then - IdCtaContableRetIVAAcreditable = UsuarioActual.Empresa.Funcionalidad(310).ToEntero - Else - If ObjMov.GetRetCuenta(ConceptoContableRetIVAAcreditable, UsuarioActual.CveEmpresa) Then - If ObjMov.DtResultados.Rows.Count > 0 Then - IdCtaContableRetIVAAcreditable = ObjMov.DtResultados.Rows(0)("IdCuentaRetIVACirculacion").ToString.ToEntero - End If - End If - End If + CveFunc = 309 + CveFuncAcreditable = 310 + Case 3 ConceptoContableRetIVAXAcreditar = 185 ConceptoContableRetIVAAcreditable = 186 - If IdCtaRetIVA > 0 Then - IdCtaContableRetIVAXAcreditar = IdCtaRetIVA - ElseIf UsuarioActual.Empresa.Funcionalidad(311).ToEntero > 0 Then - IdCtaContableRetIVAXAcreditar = UsuarioActual.Empresa.Funcionalidad(311).ToEntero - Else - If ObjMov.GetRetCuenta(ConceptoContableRetIVAXAcreditar, UsuarioActual.CveEmpresa) Then - If ObjMov.DtResultados.Rows.Count > 0 Then - IdCtaContableRetIVAXAcreditar = ObjMov.DtResultados.Rows(0)("IdCuentaRetIVACirculacion").ToString.ToEntero - End If - End If - End If - If IdCtaRetIVA > 0 Then - IdCtaContableRetIVAAcreditable = IdCtaRetIVA - ElseIf UsuarioActual.Empresa.Funcionalidad(312).ToEntero > 0 Then - IdCtaContableRetIVAAcreditable = UsuarioActual.Empresa.Funcionalidad(312).ToEntero - Else - If ObjMov.GetRetCuenta(ConceptoContableRetIVAAcreditable, UsuarioActual.CveEmpresa) Then - If ObjMov.DtResultados.Rows.Count > 0 Then - IdCtaContableRetIVAAcreditable = ObjMov.DtResultados.Rows(0)("IdCuentaRetIVACirculacion").ToString.ToEntero - End If - End If - End If + CveFunc = 311 + CveFuncAcreditable = 312 + Case 4 ConceptoContableRetIVAXAcreditar = 248 ConceptoContableRetIVAAcreditable = 249 - If IdCtaRetIVA > 0 Then - IdCtaContableRetIVAXAcreditar = IdCtaRetIVA - ElseIf UsuarioActual.Empresa.Funcionalidad(313).ToEntero > 0 Then - IdCtaContableRetIVAXAcreditar = UsuarioActual.Empresa.Funcionalidad(313).ToEntero - Else - If ObjMov.GetRetCuenta(ConceptoContableRetIVAXAcreditar, UsuarioActual.CveEmpresa) Then - If ObjMov.DtResultados.Rows.Count > 0 Then - IdCtaContableRetIVAXAcreditar = ObjMov.DtResultados.Rows(0)("IdCuentaRetIVACirculacion").ToString.ToEntero - End If - End If - End If - If IdCtaRetIVA > 0 Then - IdCtaContableRetIVAAcreditable = IdCtaRetIVA - ElseIf UsuarioActual.Empresa.Funcionalidad(314).ToEntero > 0 Then - IdCtaContableRetIVAAcreditable = UsuarioActual.Empresa.Funcionalidad(314).ToEntero - Else - If ObjMov.GetRetCuenta(ConceptoContableRetIVAAcreditable, UsuarioActual.CveEmpresa) Then - If ObjMov.DtResultados.Rows.Count > 0 Then - IdCtaContableRetIVAAcreditable = ObjMov.DtResultados.Rows(0)("IdCuentaRetIVACirculacion").ToString.ToEntero - End If - End If - End If + CveFunc = 313 + CveFuncAcreditable = 314 + End Select + If UsuarioActual.Empresa.TipoContabilidad = 2 Then + If IdCtaRetIVA > 0 Then + IdCtaContableRetIVAXAcreditar = IdCtaRetIVA + ElseIf UsuarioActual.Empresa.Funcionalidad(CveFunc).ToEntero > 0 Then + IdCtaContableRetIVAXAcreditar = UsuarioActual.Empresa.Funcionalidad(CveFunc).ToEntero + Else + If ObjMov.GetRetCuenta(ConceptoContableRetIVAXAcreditar, UsuarioActual.CveEmpresa) Then + If ObjMov.DtResultados.Rows.Count > 0 Then + IdCtaContableRetIVAXAcreditar = ObjMov.DtResultados.Rows(0)("IdCuentaRetIVACirculacion").ToString.ToEntero + End If + End If + End If + If IdCtaRetIVA > 0 Then + IdCtaContableRetIVAAcreditable = IdCtaRetIVA + ElseIf UsuarioActual.Empresa.Funcionalidad(CveFuncAcreditable).ToEntero > 0 Then + IdCtaContableRetIVAAcreditable = UsuarioActual.Empresa.Funcionalidad(CveFuncAcreditable).ToEntero + Else + If ObjMov.GetRetCuenta(ConceptoContableRetIVAAcreditable, UsuarioActual.CveEmpresa) Then + If ObjMov.DtResultados.Rows.Count > 0 Then + IdCtaContableRetIVAAcreditable = ObjMov.DtResultados.Rows(0)("IdCuentaRetIVACirculacion").ToString.ToEntero + End If + End If + End If + End If + 'Agrego el RetIVA If Not ObjMov.AddPrePolizasDetalle(CvePrePolizaExcedente, False, gvr.DataKey("RetIVA").ToDecimal * PorcentajePago, Referencia, ConceptoContableRetIVAXAcreditar, ConceptoMovimiento, gvr.FCLiteral("LtlFecha").Text.ToDate, IdCtaContableRetIVAXAcreditar, -1, CveIE:=CveIEExcedente, CveCompra:=gvr.FCHyperLink("HplF2").Text.ToEntero, CveProveedor:=gvr.FCHyperLink("HLProv").Text.ToEntero, ImporteME:=If(tipoCambio = 1, 0, gvr.DataKey("RetIVA").ToDecimal * PorcentajePago), ImporteMX:=(gvr.DataKey("RetIVA").ToDecimal * PorcentajePago) * tipoCambio, CvePrePolizaOriginal:=CvePrePolizaExcedente, CvePersonal:=CvePersonal) Then MsgError = "Detalle" @@ -1223,10 +1131,44 @@ Partial Class Compras_ReembolsosComprobaciones End If End If + Dim AcreditaISR As Boolean = False + If UsuarioActual.CveEmpresa = 140 Then AcreditaISR = True + + If MsgError = "" AndAlso AcreditaISR AndAlso gvr.DataKey("RetISR").ToDecimal > 0 Then + Dim ConceptoContableRetISRXAcreditar = 0, ConceptoContableRetISRAcreditable = 0, IdCtaContableRetISRXAcreditar = 0, IdCtaContableRetISRAcreditable = 0, CveFunc = 0, CveFuncAcreditable = 0 + Select Case gvr.DataKey("CveRetIVAConcepto").ToEntero + Case 1 + ConceptoContableRetISRXAcreditar = 16 + ConceptoContableRetISRAcreditable = 23 + + Case 2 + ConceptoContableRetISRXAcreditar = 243 + ConceptoContableRetISRAcreditable = 244 + CveFunc = 309 + CveFuncAcreditable = 310 + + Case 3 + ConceptoContableRetISRXAcreditar = 327 + ConceptoContableRetISRAcreditable = 328 + CveFunc = 311 + + End Select + + 'Agrego el RetIVA + If Not ObjMov.AddPrePolizasDetalle(CvePrePolizaExcedente, False, gvr.DataKey("RetISR").ToDecimal * PorcentajePago, Referencia, ConceptoContableRetISRXAcreditar, ConceptoMovimiento, gvr.FCLiteral("LtlFecha").Text.ToDate, IdCtaContableRetISRXAcreditar, -1, CveIE:=CveIEExcedente, CveCompra:=gvr.FCHyperLink("HplF2").Text.ToEntero, CveProveedor:=gvr.FCHyperLink("HLProv").Text.ToEntero, ImporteME:=If(tipoCambio = 1, 0, gvr.DataKey("RetISR").ToDecimal * PorcentajePago), ImporteMX:=(gvr.DataKey("RetISR").ToDecimal * PorcentajePago) * tipoCambio, CvePrePolizaOriginal:=CvePrePolizaExcedente, CvePersonal:=CvePersonal) Then + MsgError = "Detalle" + End If + + 'Agrego el RetIVA + If Not ObjMov.AddPrePolizasDetalle(CvePrePolizaExcedente, True, gvr.DataKey("RetISR").ToDecimal * PorcentajePago, Referencia, ConceptoContableRetISRAcreditable, ConceptoMovimiento, gvr.FCLiteral("LtlFecha").Text.ToDate, IdCtaContableRetISRAcreditable, -1, CveIE:=CveIEExcedente, CveCompra:=gvr.FCHyperLink("HplF2").Text.ToEntero, CveProveedor:=gvr.FCHyperLink("HLProv").Text.ToEntero, ImporteME:=If(tipoCambio = 1, 0, gvr.DataKey("RetISR").ToDecimal * PorcentajePago), ImporteMX:=(gvr.DataKey("RetISR").ToDecimal * PorcentajePago) * tipoCambio, CvePrePolizaOriginal:=CvePrePolizaExcedente, CvePersonal:=CvePersonal) Then + MsgError = "Detalle" + End If + End If + End If - If ImportePagar = ImporteOriginal Then + If MsgError = "" AndAlso ImportePagar = ImporteOriginal Then 'Unificamos el cheque y la caja chica con los pagos y facturas If gvr.DataKey("IdPoliza").ToEntero = 0 AndAlso UsuarioActual.Empresa.Funcionalidad(219) = "1" Then If Not ObjMov.PrePolizaUnificacion(CvePrePolizaExcedente, CvePrePolizaPago) Then @@ -1277,7 +1219,6 @@ Partial Class Compras_ReembolsosComprobaciones End If If MsgError.Trim = "" Then - 'Conta SIG AUTOMATICA Dim AutoConta As Boolean = UsuarioActual.Empresa.Funcionalidad(200) = "1" If UsuarioActual.CveEmpresa = 119 Then @@ -1358,12 +1299,21 @@ Partial Class Compras_ReembolsosComprobaciones If CvePrePolizaExcedente > 0 Then Mensaje.AppendFormat("Abono Registrado Correctamente.

Cheque: {1}

Imprimir", CveIEExcedente, TxtFolio.Text, Encripta(String.Format("OP=ImprimeMov&CveIE={0}", CveIEExcedente))) - Mensaje.AppendFormat("

Póliza: {1}
", ObjMov.ContaIdPoliza, ObjMov.ContaFolio) + If UsuarioActual.Empresa.TipoContabilidad = 2 Then + Mensaje.AppendFormat("

Póliza: {1}
", ObjMov.ContaIdPoliza, ObjMov.ContaFolio) + Else + Mensaje.AppendFormat("

Póliza: {1}
", CvePrePolizaExcedente, ObjMov.ContaFolio) + End If Alert(Mensaje.ToString, TipoMensaje.MsgInformacion) Else Mensaje.AppendFormat("Abono Registrado Correctamente.

Imprimir", Encripta(String.Format("OP=ImprimeMov&CveIE={0}", CveIERegistrado))) If CvePrePolizaIERegistrado > 0 Then - Mensaje.AppendFormat("

Póliza: {1}
", ObjMov.ContaIdPoliza, ObjMov.ContaFolio) + If UsuarioActual.Empresa.TipoContabilidad = 2 Then + Mensaje.AppendFormat("

Póliza: {1}
", ObjMov.ContaIdPoliza, ObjMov.ContaFolio) + Else + Mensaje.AppendFormat("

Póliza: {1}
", CvePrePolizaIERegistrado, ObjMov.ContaFolio) + End If + End If Alert(Mensaje.ToString, TipoMensaje.MsgInformacion) End If @@ -1735,163 +1685,19 @@ Partial Class Compras_ReembolsosComprobaciones #Region "VIATICOS" Protected Sub ChkAplicaViatico_CheckedChanged(sender As Object, e As EventArgs) - If ChkAplicaViatico.Checked Then - Dim Retorno = TimbrarNomina12(DdlPersonal.SelectedValue.ToEntero) - If Retorno <> "" Then - Alert(Retorno, TipoMensaje.MsgError) - Else - Dim SerieFolio = $"VIA-{Folio}" - Dim Msg As New StringBuilder - Msg.AppendFormat("", Encripta(String.Format("OP=DesXmlVIA&SERIEFOLIO={0}&TIPO={1}", SerieFolio, "Viaticos Comprobados"))) - Alert(Msg.ToString) - End If - End If + ' If ChkAplicaViatico.Checked Then + ' Dim Retorno = TimbrarNomina12(DdlPersonal.SelectedValue.ToEntero) + ' If Retorno <> "" Then + ' Alert(Retorno, TipoMensaje.MsgError) + ' Else + ' Dim SerieFolio = $"VIA-{Folio}" + ' Dim Msg As New StringBuilder + ' Msg.AppendFormat("", Encripta(String.Format("OP=DesXmlVIA&SERIEFOLIO={0}&TIPO={1}", SerieFolio, "Viaticos Comprobados"))) + ' Alert(Msg.ToString) + ' End If + ' End If End Sub - Private Function TimbrarNomina12(CvePersonal As Integer) As String - Dim Retorno As String = "" - UsuarioActual.Empresa.CvePAC = 2 - Dim sw As New Diagnostics.Stopwatch - sw.Start() - Select Case UsuarioActual.Empresa.CvePAC - Case 1 - 'Retorno = TimbrarBIInformNomina12(CveNomina, CvePersonal, CvePeriodo) - Case 2, 4 - Dim cfdi As CFDITimbre = PreTimbrar(CvePersonal) - If cfdi Is Nothing Then - sw.Stop() - Return "No tiene asignado un folio de viaticos" - End If - If cfdi IsNot Nothing AndAlso cfdi.Mensaje = "" Then - Dim ObjTimbrado As New Timbrado - Dim ObjFactura As New Modelos.Factura - ObjFactura.TipoDocto = "Viaticos Comprobados" - ObjFactura.Folio = cfdi.Comprobante.Folio.ToEntero - ObjFactura.Serie = cfdi.Comprobante.Serie - ObjFactura.Timbre = cfdi - If Not ObjTimbrado.TimbrarFactura(UsuarioActual, ObjFactura) Then - Retorno = ObjTimbrado.MensajeErrorCFDI - End If - - 'Retorno = TimbrarFacturaRealVirtual(cfdi, UsuarioActual) - If Retorno <> "" Then - Retorno = $"{Retorno} - {cfdi.Receptor.Nombre}" - Else - 'Genero la addenda Ford - ' GeneraPDFNuevo(String.Format("{0}XML\Nomina\{1}.xml", Ruta, NominaFolio), CvePersonal, CvePeriodo) - End If - Else - Retorno = $"No se pudo generar el pretimbre:
{cfdi.Mensaje}" - End If - End Select - sw.Stop() - GuardaLogTimbrado(sw.ElapsedMilliseconds.ToString, UsuarioActual.Empresa.CvePAC, "Nomina") - - Return Retorno - - End Function - - Private Function PreTimbrar(CvePersonal As Integer) As CFDITimbre - Dim cfdi As New CFDITimbre - Dim ObjFolio As New ClsGralFolios - If ObjFolio.GetFolios("VIA", UsuarioActual.CveEmpresa) Then - If ObjFolio.DtResultados.Rows.Count > 0 Then - Folio = ObjFolio.DtResultados.Rows(0)("FActual").ToString - Else - ObjFolio.Dispose() - Return Nothing - End If - End If - ObjFolio.Dispose() - - - Dim objPersonal As New ClsRH - objPersonal.GetPersonal(CvePersonal, UsuarioActual.CveEmpresa) - - Dim AntiguedadSemanas As Integer = DateDiff(DateInterval.Weekday, objPersonal.FechaIngreso, Now).ToEntero - - cfdi.Nomina = New CFDINomina - cfdi.Nomina.Version = "1.2" - cfdi.Nomina.TipoNomina = "E" - cfdi.Nomina.FechaPago = LtChequeFecha.Text.ToDate - cfdi.Nomina.FechaInicio = LtChequeFecha.Text - cfdi.Nomina.FechaFin = LtChequeFecha.Text - cfdi.Nomina.NumDiasPagados = 1 - cfdi.Emisor.Nombre = UsuarioActual.Empresa.Empresa - cfdi.Emisor.RFC = UsuarioActual.Empresa.RFC - cfdi.Emisor.RegistroPatronal = objPersonal.DtResultados.Rows(0)("RegistroPatronal").ToString() - cfdi.Emisor.RegimenFiscal = UsuarioActual.Empresa.CodigoRegimenFiscal - - 'aplica persona fisica debe de tener CURP - If cfdi.Emisor.RegimenFiscal.Contiene("605", "606", "608", "611", "612", "614", "616", "621", "622", "629", "630", "615") Then - cfdi.Emisor.CURP = UsuarioActual.Empresa.CURP - End If - - - cfdi.Receptor.UsoCFDI = "P01" - cfdi.Receptor.RFC = objPersonal.RFC - cfdi.Receptor.Nombre = objPersonal.NombreCompleto - - Dim ObjDeducciones As New List(Of CFDINominaDeducciones) - ObjDeducciones.Add(New CFDINominaDeducciones With {.TipoDeduccion = "081", - .Clave = "081", - .Concepto = "Ajuste de viáticos entregados al trabajador", - .Importe = TxtChequeSaldo.Text.ToDecimal} - ) - If ObjDeducciones IsNot Nothing AndAlso ObjDeducciones.Count > 0 Then cfdi.Nomina.Deducciones = ObjDeducciones - - Dim ObjPercepcion As New List(Of CFDINominaPercepciones) - ObjPercepcion.Add(New CFDINominaPercepciones With {.TipoPercepcion = "050", - .Clave = "050", - .Concepto = "Viáticos", - .ImporteExento = TxtChequeSaldo.Text.ToDecimal, - .ImporteGravado = 0} - ) - If ObjPercepcion IsNot Nothing AndAlso ObjPercepcion.Count > 0 Then cfdi.Nomina.Percepciones = ObjPercepcion - - cfdi.Comprobante.Version = "3.3" - cfdi.Comprobante.Serie = "VIA" - cfdi.Comprobante.Folio = Folio - cfdi.Comprobante.Fecha = Now - cfdi.Comprobante.Subtotal = TxtChequeSaldo.Text.ToDecimal - cfdi.Comprobante.Descuentos = cfdi.Nomina.TotalDeducciones.ToDecimal - cfdi.Comprobante.Total = TxtChequeSaldo.Text.ToDecimal - cfdi.Nomina.TotalDeducciones.ToDecimal - cfdi.Comprobante.MotivoDescuento = "" - cfdi.Comprobante.Moneda = "MXN" - cfdi.Comprobante.TipoComprobante = "N" - cfdi.Comprobante.TipoDocto = "Egs" - cfdi.Comprobante.MetodoPago = "PUE" - cfdi.Comprobante.CondicionesdePago = "" - cfdi.Comprobante.FormadePago = "99" - cfdi.Comprobante.LugarExpedicion = UsuarioActual.Empresa.CP.ToString - cfdi.Comprobante.NumCuentaPago = "" - - - cfdi.Nomina.Receptor.CURP = objPersonal.CURP - cfdi.Nomina.Receptor.NSS = objPersonal.NumeroSS - cfdi.Nomina.Receptor.FechaInicioContrato = objPersonal.FechaInicioContrato.ToShortDateString - cfdi.Nomina.Receptor.Antiguedad = $"P{AntiguedadSemanas}W" - cfdi.Nomina.Receptor.TipoContrato = objPersonal.CodigoTipoContrato - cfdi.Nomina.Receptor.CodigoTipoJornada = objPersonal.ClaveTipoJornada - cfdi.Nomina.Receptor.CodigoRegimenContratacion = If(objPersonal.CveRegimenContratacion = "", "99", objPersonal.CveRegimenContratacion) - cfdi.Nomina.Receptor.CodigoEmpleado = objPersonal.Codigo - cfdi.Nomina.Receptor.Departamento = objPersonal.Departamento - cfdi.Nomina.Receptor.Puesto = objPersonal.Puesto - cfdi.Nomina.Receptor.CodigoRiesgoPuesto = If(objPersonal.CveSATRiesgoPuesto.ToString = "0", "99", objPersonal.CveSATRiesgoPuesto.ToString) - cfdi.Nomina.Receptor.TipoPeriodo = objPersonal.TipoPeriodoPago - cfdi.Nomina.Receptor.CodigoBanco = objPersonal.ClaveBanco - cfdi.Nomina.Receptor.NumeroCuenta = objPersonal.BancoNumCuenta - cfdi.Nomina.Receptor.SDI = objPersonal.SDI - cfdi.Nomina.Receptor.SBC = objPersonal.SDI - cfdi.Nomina.Receptor.Sindicalizado = "" - cfdi.Nomina.Receptor.CodigoEntidadFederativa = objPersonal.ClaveEstado - - - cfdi.Conceptos.Add(New CFDIConceptos With {.Cantidad = 1, .ClaveUnidad = "ACT", .ClaveProdServ = "84111505", .Descripcion = "Pago de nómina", .ValorUnitario = cfdi.Nomina.TotalPercepciones + cfdi.Nomina.TotalOtrosPagos, .Importe = cfdi.Nomina.TotalPercepciones + cfdi.Nomina.TotalOtrosPagos, .Descuento = cfdi.Nomina.TotalDeducciones.ToDecimal}) - - objPersonal.Dispose() - Return cfdi - End Function #End Region From 4dc648bb7c1a05797423e0d0094a175b39feb8f9 Mon Sep 17 00:00:00 2001 From: rrene Date: Sat, 4 Jun 2022 07:58:23 -0700 Subject: [PATCH 08/21] =?UTF-8?q?--=20metodo=20cancelaci=C3=B3n=20e=20comp?= =?UTF-8?q?lemento?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Bancos/RepComplementoPago.aspx.vb | 4 ++-- Ventas/Ventas.aspx.vb | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Bancos/RepComplementoPago.aspx.vb b/Bancos/RepComplementoPago.aspx.vb index d02dcc978..3e3926d25 100644 --- a/Bancos/RepComplementoPago.aspx.vb +++ b/Bancos/RepComplementoPago.aspx.vb @@ -590,7 +590,7 @@ Partial Class Bancos_RepComplementoPago If EstatusSATCancelado(Can_FolioFiscalCancelar, UsuarioActual.Empresa.RFC, Can_RFCReceptorCancelar) Then - If ObjBanco.UpdateComplementoPago(Can_CveComplementoPagoCancelar, "-1", -1, UsuarioActual.CveEmpresa, 2, Can_CvePACCancelacion, FechaCancelacion:=Date.Now, SelloCancelacion:="") Then + If ObjBanco.UpdateComplementoPagoCancelado(Can_CveComplementoPagoCancelar, 2, UsuarioActual.CveEmpresa, Can_CvePACCancelacion, Date.Now, "", CveSATMotivoCancelacion) Then Alert("El complemento se cancelo correctamente.") ErrorProceso = False End If @@ -599,7 +599,7 @@ Partial Class Bancos_RepComplementoPago Dim resp = ObjCancelacion.CFDICancelar(UsuarioActual.Empresa, Can_FolioFiscalCancelar, 0, Can_RFCReceptorCancelar, UsuarioActual.Empresa.RFC, Can_CvePACCancelacion, CveSATMotivoCancelacion:=CveSATMotivoCancelacion) If resp.Verificado Then - If ObjBanco.UpdateComplementoPago(Can_CveComplementoPagoCancelar, "-1", -1, UsuarioActual.CveEmpresa, 2, Can_CvePACCancelacion, FechaCancelacion:=ObjCancelacion.CancelacionFecha, SelloCancelacion:=ObjCancelacion.CancelacionAcuse, CveSATMotivoCancelacion:=CveSATMotivoCancelacion) Then + If ObjBanco.UpdateComplementoPagoCancelado(Can_CveComplementoPagoCancelar, 2, UsuarioActual.CveEmpresa, Can_CvePACCancelacion, ObjCancelacion.CancelacionFecha, ObjCancelacion.CancelacionAcuse, CveSATMotivoCancelacion) Then Alert("El complemento se cancelo correctamente.") ErrorProceso = False End If diff --git a/Ventas/Ventas.aspx.vb b/Ventas/Ventas.aspx.vb index 56a9096ca..05f4bff20 100644 --- a/Ventas/Ventas.aspx.vb +++ b/Ventas/Ventas.aspx.vb @@ -16470,7 +16470,7 @@ Partial Class Ventas If RespCancelacion.Verificado Then - If ObjBanco.UpdateComplementoPago(CveComplementoPago, "-1", -1, UsuarioActual.CveEmpresa, 2, CvePACCancelacion, FechaCancelacion:=ObjCancelacion.CancelacionFecha, SelloCancelacion:=ObjCancelacion.CancelacionAcuse) Then + If ObjBanco.UpdateComplementoPagoCancelado(CveComplementoPago, 2, CvePACCancelacion, UsuarioActual.CveEmpresa, ObjCancelacion.CancelacionFecha, ObjCancelacion.CancelacionAcuse, 1) Then CargaComplementosPago() Alert("El complemento se canceló correctamente.") End If From eda71f93f5276c6bfdcb66f31326c220374dcb2f Mon Sep 17 00:00:00 2001 From: rrene Date: Sat, 4 Jun 2022 07:58:55 -0700 Subject: [PATCH 09/21] --cambio en % descuento --- Ventas/PV.aspx.vb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Ventas/PV.aspx.vb b/Ventas/PV.aspx.vb index 9789de574..62feae247 100644 --- a/Ventas/PV.aspx.vb +++ b/Ventas/PV.aspx.vb @@ -696,7 +696,7 @@ Partial Class PV Private ReadOnly Property ClasificacionesDescuentos As Dictionary(Of Integer, Decimal) Get Return New Dictionary(Of Integer, Decimal) From { - {20516, 0.23D}, 'Descuento para lubricantes LTH + {20516, 0.21D}, 'Descuento para lubricantes LTH {20515, 0.25D} 'Descuento para filtros LTH } End Get From 9f63ea30dc8233616f10978cf8f4a4032b01a62b Mon Sep 17 00:00:00 2001 From: rrene Date: Sat, 4 Jun 2022 08:01:58 -0700 Subject: [PATCH 10/21] -acomodo --- Compras/Compras.aspx.vb | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/Compras/Compras.aspx.vb b/Compras/Compras.aspx.vb index 6d6681b78..98057c0eb 100644 --- a/Compras/Compras.aspx.vb +++ b/Compras/Compras.aspx.vb @@ -10879,13 +10879,7 @@ Partial Class Compras_Compras End If End If - Dim namespaces As New XmlNamespaceManager(XMLDoc.NameTable) - - - - - Dim Prefijo As String = If(XMLDoc.DocumentElement.Prefix = "", "cfd", XMLDoc.DocumentElement.Prefix) Dim cfdVer As String = "" @@ -10894,14 +10888,10 @@ Partial Class Compras_Compras cfdVer = "http://www.sat.gob.mx/cfd/2" ElseIf Version = "3.3" Then cfdVer = "http://www.sat.gob.mx/cfd/3" - Else ' se considera que es la version 4.0 cfdVer = "http://www.sat.gob.mx/cfd/4" End If - - - 'If Prefijo.ToLower <> "cfdi" Then cfdVer = "http://www.sat.gob.mx/cfd/2" namespaces.AddNamespace(Prefijo, cfdVer) namespaces.AddNamespace("tfd", "http://www.sat.gob.mx/TimbreFiscalDigital") namespaces.AddNamespace("implocal", "http://www.sat.gob.mx/implocal") From 3ca4aa8848f3c8ae9376ccb6d81bec8856a08fad Mon Sep 17 00:00:00 2001 From: rrene Date: Sat, 4 Jun 2022 12:45:52 -0700 Subject: [PATCH 11/21] -- mejoras en timbrado carta porte PAC 3 --- App_Code/Timbrado.vb | 108 +++++++------------------------------------ 1 file changed, 17 insertions(+), 91 deletions(-) diff --git a/App_Code/Timbrado.vb b/App_Code/Timbrado.vb index 10eecb119..abc5e5d60 100644 --- a/App_Code/Timbrado.vb +++ b/App_Code/Timbrado.vb @@ -3833,7 +3833,7 @@ Public Class Timbrado y += 1 Next - comprobante.Impuestos.TotalImpuestosTrasladados = ObjCFDITimbre.TotalImpuestosTrasladados + comprobante.Impuestos.TotalImpuestosTrasladados = ObjCFDITimbre.TotalImpuestosTrasladados.RoundSQL(6) comprobante.Impuestos.TotalImpuestosTrasladadosSpecified = True If ObjCFDITimbre.TotalImpuestosRetenidos > 0 Then @@ -3940,8 +3940,8 @@ Public Class Timbrado End If ComExt.Emisor.Domicilio.MunicipioSpecified = True ComExt.Emisor.Domicilio.Municipio = ObjCFDITimbre.Complementos.ComercioExterior11.Emisor.Municipio - ComExt.Emisor.Domicilio.NumeroExterior = ObjCFDITimbre.Complementos.ComercioExterior11.Emisor.NumeroExterior - ComExt.Emisor.Domicilio.NumeroInterior = ObjCFDITimbre.Complementos.ComercioExterior11.Emisor.NumeroInterior + If ObjCFDITimbre.Complementos.ComercioExterior11.Emisor.NumeroExterior <> "" Then ComExt.Emisor.Domicilio.NumeroExterior = ObjCFDITimbre.Complementos.ComercioExterior11.Emisor.NumeroExterior + If ObjCFDITimbre.Complementos.ComercioExterior11.Emisor.NumeroInterior <> "" Then ComExt.Emisor.Domicilio.NumeroInterior = ObjCFDITimbre.Complementos.ComercioExterior11.Emisor.NumeroInterior ComExt.Emisor.Domicilio.Pais = ObjCFDITimbre.Complementos.ComercioExterior11.Emisor.Pais If ObjCFDITimbre.Complementos.ComercioExterior11.Emisor.Referencia <> "" Then ComExt.Emisor.Domicilio.Referencia = ObjCFDITimbre.Complementos.ComercioExterior11.Emisor.Referencia @@ -4297,7 +4297,7 @@ Public Class Timbrado ComCartaPorte.Ubicaciones(i).IDUbicacion = ubica.IDUbicacion ComCartaPorte.Ubicaciones(i).RFCRemitenteDestinatario = ubica.RFCRemitenteDestinatario ComCartaPorte.Ubicaciones(i).NombreRemitenteDestinatario = ubica.NombreRemitenteDestinatario - ComCartaPorte.Ubicaciones(i).NumRegIdTrib = ubica.NumRegIdTrib + If ubica.NumRegIdTrib <> "" Then ComCartaPorte.Ubicaciones(i).NumRegIdTrib = ubica.NumRegIdTrib 'ComCartaPorte.Ubicaciones(i).ResidenciaFiscal = ubica.ResidenciaFiscal 'ComCartaPorte.Ubicaciones(i).NumEstacion = ubica.NumEstacion 'ComCartaPorte.Ubicaciones(i).NavegacionTrafico = ubica.NavegacionTrafico @@ -4305,16 +4305,17 @@ Public Class Timbrado ComCartaPorte.Ubicaciones(i).DistanciaRecorrida = ubica.DistanciaRecorrida ComCartaPorte.Ubicaciones(i).Domicilio = New ProfactCartaPorte.CartaPorteUbicacionDomicilio With {.Calle = ubica.Domicilio.Calle, - .NumeroExterior = ubica.Domicilio.NumeroExterior, - .NumeroInterior = ubica.Domicilio.NumeroInterior, .Colonia = ubica.Domicilio.Colonia, .Localidad = ubica.Domicilio.Localidad, - .Referencia = ubica.Domicilio.Referencia, .Municipio = ubica.Domicilio.Municipio, .Estado = ubica.Domicilio.Estado, .CodigoPostal = ubica.Domicilio.CP, .Pais = CType([Enum].Parse(GetType(ProfactCartaPorte.c_Pais), ubica.Domicilio.Pais), ProfactCartaPorte.c_Pais)} + If ubica.Domicilio.Referencia <> "" Then ComCartaPorte.Ubicaciones(i).Domicilio.Referencia = ubica.Domicilio.Referencia + If ubica.Domicilio.NumeroExterior <> "" Then ComCartaPorte.Ubicaciones(i).Domicilio.NumeroExterior = ubica.Domicilio.NumeroExterior + If ubica.Domicilio.NumeroInterior <> "" Then ComCartaPorte.Ubicaciones(i).Domicilio.NumeroInterior = ubica.Domicilio.NumeroInterior + i += 1 Next End If @@ -4341,7 +4342,7 @@ Public Class Timbrado ComCartaPorte.Mercancias.Mercancia(i).Descripcion = concep.Descripción ComCartaPorte.Mercancias.Mercancia(i).Cantidad = concep.Cantidad ComCartaPorte.Mercancias.Mercancia(i).Unidad = concep.Unidad - ComCartaPorte.Mercancias.Mercancia(i).Dimensiones = concep.Dimensiones + If concep.Dimensiones <> "" Then ComCartaPorte.Mercancias.Mercancia(i).Dimensiones = concep.Dimensiones If concep.ClaveMaterialPeligroso <> "" Then ComCartaPorte.Mercancias.Mercancia(i).MaterialPeligrosoSpecified = True ComCartaPorte.Mercancias.Mercancia(i).CveMaterialPeligrosoSpecified = True @@ -4356,7 +4357,7 @@ Public Class Timbrado ComCartaPorte.Mercancias.Mercancia(i).ValorMercanciaSpecified = False ComCartaPorte.Mercancias.Mercancia(i).MonedaSpecified = False ComCartaPorte.Mercancias.Mercancia(i).FraccionArancelariaSpecified = False - ComCartaPorte.Mercancias.Mercancia(i).UUIDComercioExt = concep.UUIDComercioExt + If concep.UUIDComercioExt <> "" Then ComCartaPorte.Mercancias.Mercancia(i).UUIDComercioExt = concep.UUIDComercioExt Dim j As Integer = 0 ComCartaPorte.Mercancias.Mercancia(i).CantidadTransporta = New ProfactCartaPorte.CartaPorteMercanciasMercanciaCantidadTransporta(Carta.Mercancias.Mercancias.Count - 1) {} @@ -4373,43 +4374,6 @@ Public Class Timbrado End If End If - - - - - 'If Carta.FiguraTransporte IsNot Nothing Then - - ' If Carta.FiguraTransporte.AutoTransporte IsNot Nothing Then - - ' cfdi.CartaPorteAutotransporte(Carta.FiguraTransporte.AutoTransporte.PermisoSCT, Carta.FiguraTransporte.AutoTransporte.NumPermisoSCT) - - ' cfdi.CartaPorteIdentificacionVehicular(Carta.FiguraTransporte.AutoTransporte.Vehiculo.ConfigVehicular, Carta.FiguraTransporte.AutoTransporte.Vehiculo.PlacaVM, Carta.FiguraTransporte.AutoTransporte.Vehiculo.AnioModeloVM) - - ' cfdi.CartaPorteSeguros(Carta.FiguraTransporte.AutoTransporte.NombreSeguroResponsabilidadCivil, Carta.FiguraTransporte.AutoTransporte.PolizaSeguroResponsabilidadCivil, - ' Carta.FiguraTransporte.AutoTransporte.NombreSeguroMedioAmbiente, Carta.FiguraTransporte.AutoTransporte.PolizaSeguroMedioAmbiente, - ' Carta.FiguraTransporte.AutoTransporte.NombreSeguroCarga, Carta.FiguraTransporte.AutoTransporte.PolizaSeguroCarga, - ' Carta.FiguraTransporte.AutoTransporte.PrimaSeguro) - - ' If Carta.FiguraTransporte.AutoTransporte.Remolques IsNot Nothing AndAlso Carta.FiguraTransporte.AutoTransporte.Remolques.Count > 0 Then - ' For Each concep As CFDICartaPorteRemolque In Carta.FiguraTransporte.AutoTransporte.Remolques - ' cfdi.CartaPorteRemolque(concep.SubTipoRemolque, concep.Placa) - ' Next - - ' End If - ' End If - - ' If Carta.FiguraTransporte.Operadores IsNot Nothing AndAlso Carta.FiguraTransporte.Operadores.Count > 0 Then - ' For Each concep As CFDICartaPorteOperador In Carta.FiguraTransporte.Operadores - ' cfdi.CartaPorteTiposFigura(concep.TipoFigura, concep.RFCFigura, concep.NumLicencia, concep.NombreFigura, concep.NumRegidTribFigura, If(concep.ResidenciaFiscalFigura <> "MEX", concep.ResidenciaFiscalFigura, "")) - ' If concep.TipoFigura.Contiene("02", "03") Then ' “02”- Propietario o “03” -Arrendador - ' cfdi.CartaPortePartesTransporte("PT01") - ' cfdi.CartaPortePartesTransporteDomicilio(concep.Domicilio.Calle, concep.Domicilio.NumeroExterior, concep.Domicilio.NumeroInterior, concep.Domicilio.Colonia, concep.Domicilio.Localidad, concep.Domicilio.Referencia, concep.Domicilio.Municipio, concep.Domicilio.Estado, concep.Domicilio.Pais, concep.Domicilio.CP) - ' End If - ' Next - ' End If - - 'End If - ' If Carta.FiguraTransporte IsNot Nothing Then @@ -4422,9 +4386,6 @@ Public Class Timbrado ComCartaPorte.Mercancias.Autotransporte.PermSCT = CType([Enum].Parse(GetType(ProfactCartaPorte.c_TipoPermiso), Carta.FiguraTransporte.AutoTransporte.PermisoSCT), ProfactCartaPorte.c_TipoPermiso) End If ComCartaPorte.Mercancias.Autotransporte.NumPermisoSCT = Carta.FiguraTransporte.AutoTransporte.NumPermisoSCT - 'pendiente RMF - 'ComCartaPorte.Mercancias.AutotransporteFederal.NombreAseg = Carta.FiguraTransporte.AutoTransporte.NombreAseg - 'ComCartaPorte.Mercancias.AutotransporteFederal.NumPolizaSeguro = Carta.FiguraTransporte.AutoTransporte.NumPolizaSeguro Dim ConfigVehicular As New ProfactCartaPorte.CartaPorteMercanciasAutotransporteIdentificacionVehicular ConfigVehicular.ConfigVehicular = CType([Enum].Parse(GetType(ProfactCartaPorte.c_ConfigAutotransporte), Carta.FiguraTransporte.AutoTransporte.Vehiculo.ConfigVehicular), ProfactCartaPorte.c_ConfigAutotransporte) @@ -4446,6 +4407,8 @@ Public Class Timbrado ConfigVehicularSeguros.PrimaSeguroSpecified = True End If + ComCartaPorte.Mercancias.Autotransporte.Seguros = ConfigVehicularSeguros + If Carta.FiguraTransporte.AutoTransporte.Remolques IsNot Nothing AndAlso Carta.FiguraTransporte.AutoTransporte.Remolques.Count > 0 Then Dim i As Integer = 0 ComCartaPorte.Mercancias.Autotransporte.Remolques = New ProfactCartaPorte.CartaPorteMercanciasAutotransporteRemolque(Carta.FiguraTransporte.AutoTransporte.Remolques.Count - 1) {} @@ -4468,7 +4431,7 @@ Public Class Timbrado ComCartaPorte.FiguraTransporte(i).RFCFigura = concep.RFCFigura ComCartaPorte.FiguraTransporte(i).NumLicencia = concep.NumLicencia ComCartaPorte.FiguraTransporte(i).NombreFigura = concep.NombreFigura - ComCartaPorte.FiguraTransporte(i).NumRegIdTribFigura = concep.NumRegidTribFigura + If concep.NumRegidTribFigura <> "" Then ComCartaPorte.FiguraTransporte(i).NumRegIdTribFigura = concep.NumRegidTribFigura 'OComCartaPorte.FiguraTransporte.Operadores(i)(0) = concep.ResidenciaFiscalOperador 'falta ComCartaPorte.FiguraTransporte(i).Domicilio = New ProfactCartaPorte.CartaPorteTiposFiguraDomicilio() @@ -4476,9 +4439,9 @@ Public Class Timbrado ComCartaPorte.FiguraTransporte(i).Domicilio.CodigoPostal = concep.Domicilio.CP ComCartaPorte.FiguraTransporte(i).Domicilio.Colonia = concep.Domicilio.Colonia ComCartaPorte.FiguraTransporte(i).Domicilio.Estado = concep.Domicilio.Estado - ComCartaPorte.FiguraTransporte(i).Domicilio.Localidad = concep.Domicilio.Localidad + If concep.Domicilio.Localidad <> "" Then ComCartaPorte.FiguraTransporte(i).Domicilio.Localidad = concep.Domicilio.Localidad ComCartaPorte.FiguraTransporte(i).Domicilio.Municipio = concep.Domicilio.Municipio - ComCartaPorte.FiguraTransporte(i).Domicilio.NumeroExterior = concep.Domicilio.NumeroExterior + If concep.Domicilio.NumeroExterior <> "" Then ComCartaPorte.FiguraTransporte(i).Domicilio.NumeroExterior = concep.Domicilio.NumeroExterior ComCartaPorte.FiguraTransporte(i).Domicilio.Pais = ProfactCartaPorte.c_Pais.MEX i += 1 @@ -6559,12 +6522,12 @@ Public Class Timbrado End If - ComCartaPorte.Mercancias.Mercancia(i).DescripEmbalaje = concep.DescripEmbalaje + If concep.DescripEmbalaje <> "" Then ComCartaPorte.Mercancias.Mercancia(i).DescripEmbalaje = concep.DescripEmbalaje ComCartaPorte.Mercancias.Mercancia(i).PesoEnKg = concep.PesoenKg ComCartaPorte.Mercancias.Mercancia(i).ValorMercanciaSpecified = False ComCartaPorte.Mercancias.Mercancia(i).MonedaSpecified = False ComCartaPorte.Mercancias.Mercancia(i).FraccionArancelariaSpecified = False - ComCartaPorte.Mercancias.Mercancia(i).UUIDComercioExt = concep.UUIDComercioExt + If concep.UUIDComercioExt <> "" Then ComCartaPorte.Mercancias.Mercancia(i).UUIDComercioExt = concep.UUIDComercioExt Dim j As Integer = 0 ComCartaPorte.Mercancias.Mercancia(i).CantidadTransporta = New ProfactCartaPorte.CartaPorteMercanciasMercanciaCantidadTransporta(Carta.Mercancias.Mercancias.Count - 1) {} @@ -6582,43 +6545,6 @@ Public Class Timbrado End If - - - - 'If Carta.FiguraTransporte IsNot Nothing Then - - ' If Carta.FiguraTransporte.AutoTransporte IsNot Nothing Then - - ' cfdi.CartaPorteAutotransporte(Carta.FiguraTransporte.AutoTransporte.PermisoSCT, Carta.FiguraTransporte.AutoTransporte.NumPermisoSCT) - - ' cfdi.CartaPorteIdentificacionVehicular(Carta.FiguraTransporte.AutoTransporte.Vehiculo.ConfigVehicular, Carta.FiguraTransporte.AutoTransporte.Vehiculo.PlacaVM, Carta.FiguraTransporte.AutoTransporte.Vehiculo.AnioModeloVM) - - ' cfdi.CartaPorteSeguros(Carta.FiguraTransporte.AutoTransporte.NombreSeguroResponsabilidadCivil, Carta.FiguraTransporte.AutoTransporte.PolizaSeguroResponsabilidadCivil, - ' Carta.FiguraTransporte.AutoTransporte.NombreSeguroMedioAmbiente, Carta.FiguraTransporte.AutoTransporte.PolizaSeguroMedioAmbiente, - ' Carta.FiguraTransporte.AutoTransporte.NombreSeguroCarga, Carta.FiguraTransporte.AutoTransporte.PolizaSeguroCarga, - ' Carta.FiguraTransporte.AutoTransporte.PrimaSeguro) - - ' If Carta.FiguraTransporte.AutoTransporte.Remolques IsNot Nothing AndAlso Carta.FiguraTransporte.AutoTransporte.Remolques.Count > 0 Then - ' For Each concep As CFDICartaPorteRemolque In Carta.FiguraTransporte.AutoTransporte.Remolques - ' cfdi.CartaPorteRemolque(concep.SubTipoRemolque, concep.Placa) - ' Next - - ' End If - ' End If - - ' If Carta.FiguraTransporte.Operadores IsNot Nothing AndAlso Carta.FiguraTransporte.Operadores.Count > 0 Then - ' For Each concep As CFDICartaPorteOperador In Carta.FiguraTransporte.Operadores - ' cfdi.CartaPorteTiposFigura(concep.TipoFigura, concep.RFCFigura, concep.NumLicencia, concep.NombreFigura, concep.NumRegidTribFigura, If(concep.ResidenciaFiscalFigura <> "MEX", concep.ResidenciaFiscalFigura, "")) - ' If concep.TipoFigura.Contiene("02", "03") Then ' “02”- Propietario o “03” -Arrendador - ' cfdi.CartaPortePartesTransporte("PT01") - ' cfdi.CartaPortePartesTransporteDomicilio(concep.Domicilio.Calle, concep.Domicilio.NumeroExterior, concep.Domicilio.NumeroInterior, concep.Domicilio.Colonia, concep.Domicilio.Localidad, concep.Domicilio.Referencia, concep.Domicilio.Municipio, concep.Domicilio.Estado, concep.Domicilio.Pais, concep.Domicilio.CP) - ' End If - ' Next - ' End If - - 'End If - - ' If Carta.FiguraTransporte IsNot Nothing Then If Carta.FiguraTransporte.AutoTransporte IsNot Nothing Then From 84f2f31937ca89fe2f6ce9823ad606d7a2325f58 Mon Sep 17 00:00:00 2001 From: rrene Date: Sat, 4 Jun 2022 14:25:08 -0700 Subject: [PATCH 12/21] - cambio de cargadatos --- Contabilidad2/CatCuentas.aspx.vb | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Contabilidad2/CatCuentas.aspx.vb b/Contabilidad2/CatCuentas.aspx.vb index d36ba565b..39a2a3978 100644 --- a/Contabilidad2/CatCuentas.aspx.vb +++ b/Contabilidad2/CatCuentas.aspx.vb @@ -553,7 +553,7 @@ Partial Class Contabilidad2_CatCuentas item.Controls.Add(objul) End If ArbolCuentas.additem(objul, idnew, IDSelected, String.Format("{0} - {1}", TxtCuenta.Text, Tnombre.Text)) - CargaDatos() + End If End If If ObjConta2 IsNot Nothing Then ObjConta2.Dispose() @@ -568,6 +568,8 @@ Partial Class Contabilidad2_CatCuentas If Not TieneError Then ObjConta.Commit() + + CargaDatos() LimpiarCampos() updatos.Update() Alert("La cuenta se guardo correctamente", TipoMensaje.MsgInformacion) From 78551b3a75f778dcde62b8f26dc0a61ed226ceda Mon Sep 17 00:00:00 2001 From: rrene Date: Sat, 4 Jun 2022 16:02:02 -0700 Subject: [PATCH 13/21] -- limpieza --- Compras/Compras.aspx.vb | 117 +++++++--------------------------------- 1 file changed, 20 insertions(+), 97 deletions(-) diff --git a/Compras/Compras.aspx.vb b/Compras/Compras.aspx.vb index 98057c0eb..7cf89ac61 100644 --- a/Compras/Compras.aspx.vb +++ b/Compras/Compras.aspx.vb @@ -3699,13 +3699,7 @@ Partial Class Compras_Compras Dim DtPS = GlobalDTPS(UsuarioActual.CveEmpresa).AsEnumerable Dim DtPSAlias = GlobalDTProductosServiciosAlias(UsuarioActual.CveEmpresa).AsEnumerable - ''AGREGA EN TABLA TEMPORAL - 'Dim DtPSTemp = TmpDT.Clone - 'Dim Row As DataRow = Nothing - - Dim namespaces As New XmlNamespaceManager(XMLDoc.NameTable) - Dim nodo As XmlNode = XMLDoc.DocumentElement Dim VersionCFDI As String = ValorXML(nodo, "version") @@ -3770,9 +3764,6 @@ Partial Class Compras_Compras PU = ValorXML(node, "importe").ToDecimal / ValorXML(node, "cantidad").ToDecimal End If - - - 'OBTIENE DESCUENTO If ValorXML(node, "descuento") IsNot Nothing Then Descuento = ValorXML(node, "descuento").Trim.ToDecimal @@ -3807,8 +3798,6 @@ Partial Class Compras_Compras End If End If - - 'se le puso una condicion de que ignorara los acentos, porque en la bd, marcaria error porque no distingue acentos 'CONCEPTO PRUEBA "TRABAJOS DE CONSTRUCCION", RM/Compras/Compras.aspx?CveFactura=13402&RFC=ECO061206QW7 '' u!PS.ToString.ToUpper.Trim = PSS @@ -3882,7 +3871,6 @@ Partial Class Compras_Compras Exit For End If - ElseIf ValorXML(nodeTraslado, "Impuesto") = "003" Then IEPS = ValorXML(nodeTraslado, "Importe").Trim.ToDecimal PorcentajeIEPS = ValorXML(nodeTraslado, "TasaOCuota").Trim.ToDecimal @@ -3938,10 +3926,6 @@ Partial Class Compras_Compras End If If Version = "3.2" Then - - - - Try If node IsNot Nothing AndAlso node.ChildNodes.Count > 0 Then Dim ContadorTraslado = 0 @@ -3960,14 +3944,10 @@ Partial Class Compras_Compras End If - - '' AGREGA PS 'AGREGA A TMPDT AddPS(ValorXML(node, "cantidad").ToDecimal, CveUM, UMM, tCveClasif, Clasif, tCvePS, PSS, TipoPS, "-1", "SE", "SE", "-1", Obs, PU, Total, IVA, RetIVA, RetISR, IEPS, 0, Descuento, PSCodigo:=tPSCodigo, TCalculaTotales:=False, CveSATPS:=ValorXML(node, "ClaveProdServ").ToEntero(), CargaXml:=True, PorcentajeIVA:=PorcentajeIVA, PorcentajeRetIVA:=PorcentajeRetIVA, PorcentajeRetISR:=PorcentajeRetISR, PorcentajeIEPS:=PorcentajeIEPS) - - Next End If @@ -10902,7 +10882,6 @@ Partial Class Compras_Compras If node IsNot Nothing AndAlso node.ChildNodes.Count > 0 Then EmisorRFC = ValorXML(node, "RFC") - 'EmisorNombre = ValorXML(node, "nombre") End If node = XMLDoc.SelectSingleNode(String.Format("//{0}:CfdiRelacionados", Prefijo), namespaces) @@ -10934,29 +10913,23 @@ Partial Class Compras_Compras TotalRetenciones = ValorXML(node, "totalImpuestosRetenidos", "0").ToDecimal - If Version = "3.3" Or Version = "4.0" Then + If Version = "3.3" OrElse Version = "4.0" Then For Each retencion As XmlNode In nodeRetenciones - If retencion.Attributes("Impuesto").Value = "002" Then - RetencionIVA += retencion.Attributes("Importe").Value.ToDecimal - End If - If retencion.Attributes("Impuesto").Value = "001" Then - RetencionISR += retencion.Attributes("Importe").Value.ToDecimal - End If - ' Do something. + If retencion.Attributes("Impuesto").Value = "002" Then RetencionIVA += retencion.Attributes("Importe").Value.ToDecimal + + If retencion.Attributes("Impuesto").Value = "001" Then RetencionISR += retencion.Attributes("Importe").Value.ToDecimal + Next GvOC1.Columns(6).Visible = True GvOC2.Columns(4).Visible = True Else For Each retencion As XmlNode In nodeRetenciones - If retencion.Attributes("impuesto").Value = "IVA" Then - RetencionIVA += retencion.Attributes("importe").Value.ToDecimal - End If - If retencion.Attributes("impuesto").Value = "ISR" Then - RetencionISR += retencion.Attributes("importe").Value.ToDecimal - End If - ' Do something. + If retencion.Attributes("impuesto").Value = "IVA" Then RetencionIVA += retencion.Attributes("importe").Value.ToDecimal + + If retencion.Attributes("impuesto").Value = "ISR" Then RetencionISR += retencion.Attributes("importe").Value.ToDecimal + Next End If SumaTotalRetenciones += RetencionIVA @@ -10965,34 +10938,22 @@ Partial Class Compras_Compras TotalTraslados = ValorXML(node, "totalImpuestosTrasladados", "0").ToDecimal Dim nodeTraslados As XmlNodeList = XMLDoc.SelectNodes(String.Format("//{0}:Comprobante/{0}:Impuestos/{0}:Traslados/{0}:Traslado", Prefijo), namespaces) - If Version = "3.3" Or Version = "4.0" Then + If Version = "3.3" OrElse Version = "4.0" Then For Each traslado As XmlNode In nodeTraslados - If traslado.Attributes("Impuesto").Value = "002" Then - TrasladoIVA += traslado.Attributes("Importe").Value.ToDecimal - End If - If traslado.Attributes("Impuesto").Value = "003" Then - TrasladoIEPS += traslado.Attributes("Importe").Value.ToDecimal - End If - If traslado.Attributes("Impuesto").Value = "001" Then - 'TrasladoISR = traslado.Attributes("importe").Value - End If - ' Do something. + If traslado.Attributes("Impuesto").Value = "002" Then TrasladoIVA += traslado.Attributes("Importe").Value.ToDecimal + + If traslado.Attributes("Impuesto").Value = "003" Then TrasladoIEPS += traslado.Attributes("Importe").Value.ToDecimal + Next Else For Each traslado As XmlNode In nodeTraslados - If traslado.Attributes("impuesto").Value = "IVA" Then - TrasladoIVA += traslado.Attributes("importe").Value.ToDecimal - End If - If traslado.Attributes("impuesto").Value = "IEPS" Then - TrasladoIEPS += traslado.Attributes("importe").Value.ToDecimal - End If - 'If traslado.Attributes("impuesto").Value = "ISR" Then - ' TrasladoISR = traslado.Attributes("importe").Value - 'End If - ' Do something. + If traslado.Attributes("impuesto").Value = "IVA" Then TrasladoIVA += traslado.Attributes("importe").Value.ToDecimal + + If traslado.Attributes("impuesto").Value = "IEPS" Then TrasladoIEPS += traslado.Attributes("importe").Value.ToDecimal + Next End If @@ -11014,53 +10975,15 @@ Partial Class Compras_Compras node = node.SelectSingleNode(String.Format("//{0}:ImpuestosLocales", "implocal"), namespaces) - If node IsNot Nothing AndAlso node.ChildNodes.Count > 0 Then OtrosImpuestos = ValorXML(node, "TotaldeTraslados", "0").ToDecimal - OtrosImpuestosRetenciones = ValorXML(node, "TotaldeRetenciones", "0").ToDecimal + '2022.06.04-- se quitan los datos de retenciones de impuestos locales, generan conflicto. RMF + 'OtrosImpuestosRetenciones = ValorXML(node, "TotaldeRetenciones", "0").ToDecimal - 'If RetencionIVA <= 0 AndAlso ValorXML(node, "TotaldeRetenciones", "0").ToDouble > 0 Then RetencionIVA = ValorXML(node, "TotaldeRetenciones", "0").ToDecimal - - 'For Each retencion As XmlNode In nodeImpLocales - ' If retencion.Attributes("impuesto").Value = "IVA" Then - ' RetencionIVA += retencion.Attributes("importe").Value.ToDouble - ' End If - ' If retencion.Attributes("impuesto").Value = "ISR" Then - ' RetencionISR += retencion.Attributes("importe").Value.ToDouble - ' End If - ' ' Do something. - 'Next - ' SumaTotalRetenciones += RetencionIVA - ' SumaTotalRetenciones += RetencionISR - - 'TotalTraslados = ValorXML(node, "totalImpuestosTrasladados", "0").ToDouble - - 'Dim nodeTraslados As XmlNodeList = XMLDoc.SelectNodes(String.Format("//{0}:Traslado", Prefijo), namespaces) - 'For Each traslado As XmlNode In nodeTraslados - ' If traslado.Attributes("impuesto").Value = "IVA" Then - ' TrasladoIVA += traslado.Attributes("importe").Value.ToDouble - ' End If - ' If traslado.Attributes("impuesto").Value = "IEPS" Then - ' TrasladoIEPS += traslado.Attributes("importe").Value.ToDouble - ' End If - ' 'If traslado.Attributes("impuesto").Value = "ISR" Then - ' ' TrasladoISR = traslado.Attributes("importe").Value - ' 'End If - ' ' Do something. - 'Next - 'SumaTotalTraslados += TrasladoIVA - 'SumaTotalTraslados += TrasladoIEPS End If End If - 'Try - ' _TFDUUID = XMLDoc.SelectSingleNode(String.Format("//{0}:Complemento", Prefijo), namespaces).LastChild.Attributes("UUID").InnerText - 'Catch ex As Exception - ' _TFDUUID = "" - 'End Try - - End Sub #End Region From ec8912967539cfcd00c2846730a7612abcd538fc Mon Sep 17 00:00:00 2001 From: rrene Date: Sat, 4 Jun 2022 16:06:34 -0700 Subject: [PATCH 14/21] --- mejora en acomodo de filtros --- Bancos/PopUpBuscarIE.aspx | 47 +++++++++++++++++++++--------------- Bancos/PopUpBuscarIE.aspx.vb | 22 ++++++++--------- 2 files changed, 39 insertions(+), 30 deletions(-) diff --git a/Bancos/PopUpBuscarIE.aspx b/Bancos/PopUpBuscarIE.aspx index def89512c..83598375e 100644 --- a/Bancos/PopUpBuscarIE.aspx +++ b/Bancos/PopUpBuscarIE.aspx @@ -23,30 +23,23 @@ Filtros para búsqueda - - Banco: - - - - - - Cuenta: - - - - - - + Folio: - - + + - + Cuenta: + + + + + + Fecha Inicio: - +
<%-- --%> - + @@ -58,6 +51,22 @@
+ Fecha Fin: + +
+ <%-- --%> + + + + + + + + + + +
+ diff --git a/Bancos/PopUpBuscarIE.aspx.vb b/Bancos/PopUpBuscarIE.aspx.vb index 48abdea72..8b5a2a8fe 100644 --- a/Bancos/PopUpBuscarIE.aspx.vb +++ b/Bancos/PopUpBuscarIE.aspx.vb @@ -47,22 +47,22 @@ Partial Class Bancos_PopUpBuscarIE #Region " C A R G A - D A T O S" Private Sub CargaDatos() - CargaBanco() + ' CargaBanco() CargaCuenta() End Sub - Private Sub CargaBanco() - DdlBanco.DataSource = GlobalDTBancos.FiltraParametros("CveEmpresa = " & UsuarioActual.CveEmpresa) - DdlBanco.DataBind() - End Sub + 'Private Sub CargaBanco() + ' DdlBanco.DataSource = GlobalDTBancos.FiltraParametros("CveEmpresa = " & UsuarioActual.CveEmpresa) + ' DdlBanco.DataBind() + 'End Sub Private Sub CargaCuenta() DdlCuenta.Items.Clear() - DdlCuenta.DataSource = GlobalDTBancosCuentas(UsuarioActual.CveUsuario, CveEmpresa:=UsuarioActual.CveEmpresa).FiltraParametros("CveBanco = '" & DdlBanco.SelectedValue.ToEntero & "'") + DdlCuenta.DataSource = GlobalDTBancosCuentas(UsuarioActual.CveUsuario, CveEmpresa:=UsuarioActual.CveEmpresa) '.FiltraParametros("CveBanco = '" & DdlBanco.SelectedValue.ToEntero & "'") DdlCuenta.DataBind() DdlCuenta.Items.Insert(0, New ListItem("Todas", "-1")) End Sub - Protected Sub DdlBanco_SelectedIndexChanged1(sender As Object, e As System.EventArgs) Handles DdlBanco.SelectedIndexChanged - CargaCuenta() - End Sub + 'Protected Sub DdlBanco_SelectedIndexChanged1(sender As Object, e As System.EventArgs) Handles DdlBanco.SelectedIndexChanged + ' CargaCuenta() + 'End Sub #End Region @@ -73,7 +73,7 @@ Partial Class Bancos_PopUpBuscarIE If ValidarFiltrosSeleccionado() Then Dim ObjBancosIE As New ClsBancos - If ObjBancosIE.GetBancosIE(-1, DdlBanco.SelectedValue.ToEntero, DdlCuenta.SelectedValue.ToEntero, "-1", -1, Folio, "-1", -1, -1, -1, -1, -1, txtFechaI.Text.ToDate, + If ObjBancosIE.GetBancosIE(-1, -1, DdlCuenta.SelectedValue.ToEntero, "-1", -1, Folio, "-1", -1, -1, -1, -1, -1, txtFechaI.Text.ToDate, MaxFecha.ToShortDateString.ToDate, MinFecha, MaxFecha, MinFecha, MaxFecha, -1, -1, UsuarioActual.CveEmpresa, TopSelect:=100) Then DtDatos = ObjBancosIE.DtResultados 'If(TxtFolio.Text <> "", ObjBancosIE.DtResultados.FiltraParametros(String.Format("Folio Like '{0}'", TxtFolio.Text)), ObjBancosIE.DtResultados) Else @@ -110,7 +110,7 @@ Partial Class Bancos_PopUpBuscarIE End Sub Private Function ValidarFiltrosSeleccionado() As Boolean - If DdlBanco.SelectedValue.ToEntero > 0 Then Return True + ' If DdlBanco.SelectedValue.ToEntero > 0 Then Return True If DdlCuenta.SelectedValue.ToEntero > 0 Then Return True If TxtFolio.Text.Length > 0 Then Return True Return False From a40150b31a5dc841f889a51191937a8dccf0486f Mon Sep 17 00:00:00 2001 From: rrene Date: Sat, 4 Jun 2022 16:07:29 -0700 Subject: [PATCH 15/21] -- mejora en impresion complementos de pago 4.0 --- App_Code/ClsPaginas.vb | 661 ++--------------------------------------- 1 file changed, 31 insertions(+), 630 deletions(-) diff --git a/App_Code/ClsPaginas.vb b/App_Code/ClsPaginas.vb index d76a89776..bdba59ae3 100644 --- a/App_Code/ClsPaginas.vb +++ b/App_Code/ClsPaginas.vb @@ -4843,8 +4843,7 @@ Public Class ClsPaginas PaginaDict.Add("/Contabilidad2/RepCambiosSituacionFinanciera.aspx".ToUpper(), 585) PaginaDict.Add("/Contabilidad2/RepSituacionFinanciera.aspx".ToUpper(), 586) PaginaDict.Add("/Contabilidad2/RepMovimientosAuxiliaresCatalogo.aspx".ToUpper(), 587) - ' PaginaDict.Add("/Contabilidad2/RegPoliza.aspx".ToUpper(), 588) - 'PaginaDict.Add("/Contabilidad2/PymeRegPoliza.aspx".ToUpper(), 588) + PaginaDict.Add("/Contabilidad2/RepAlmacenConta.aspx".ToUpper(), 539) PaginaDict.Add("/Contabilidad2/RepAnexoCatalogoMensual.aspx".ToUpper(), 589) @@ -5586,29 +5585,8 @@ Public Class ClsPaginas PaginaDict.Add("/ZDG/MensajeManual.aspx".ToUpper(), -1) PaginaDict.Add("/ZDG/MensajeAutomatico.aspx".ToUpper(), -1) - 'PymeCharlie - PaginaDict.Add("/PyME/Contabilidad/CatCuentas.aspx".ToUpper(), -1) - PaginaDict.Add("/PyME/Contabilidad/TiposPoliza.aspx".ToUpper(), -1) - PaginaDict.Add("/PyME/Contabilidad/PlantillasPolizas.aspx".ToUpper(), -1) - PaginaDict.Add("/PyME/Contabilidad/PlantillasPolizasDetalle.aspx".ToUpper(), -1) - PaginaDict.Add("/PyME/Contabilidad/RegPoliza.aspx".ToUpper(), -1) - PaginaDict.Add("/PyME/Contabilidad/RegPrePoliza.aspx".ToUpper(), -1) - PaginaDict.Add("/PyME/Contabilidad/ContabilizacionVentas.aspx".ToUpper(), -1) - PaginaDict.Add("/PyME/Contabilidad/ContabilizacionCompras.aspx".ToUpper(), -1) - PaginaDict.Add("/PyME/Contabilidad/ContabilidadElectronica.aspx".ToUpper(), -1) - PaginaDict.Add("/PyME/Contabilidad/CierreEjercicio.aspx".ToUpper(), -1) - PaginaDict.Add("/PyME/Contabilidad/RepBalanceGeneral.aspx".ToUpper(), -1) - PaginaDict.Add("/PyME/Contabilidad/RepAnexoCatalogo.aspx".ToUpper(), -1) - PaginaDict.Add("/PyME/Contabilidad/RepMovimientosAuxiliaresCatalogo.aspx".ToUpper(), -1) - PaginaDict.Add("/PyME/Contabilidad/RepBalanzaComprobacion.aspx".ToUpper(), -1) - PaginaDict.Add("/PyME/Contabilidad/RepEstadoResultados.aspx".ToUpper(), -1) + PaginaDict.Add("/Planeacion/Presupuestos.aspx".ToUpper(), -1) - - 'Pyme 2017 - PaginaDict.Add("/PyME/Sistemas/RegistroEmpresa.aspx".ToUpper(), -1) - PaginaDict.Add("/PyME/Sistemas/WizardRegistro.aspx".ToUpper(), -1) - - PaginaDict.Add("/Contabilidad/OCDetalleAlmacen.aspx".ToUpper(), -1) @@ -6240,45 +6218,6 @@ Public Class ClsPaginas Return Bytes End Function - Public Function ImprimirPDFPyME(RutaReporte As String, DataSource As DataSet, Parametros As List(Of CrystalParametro), Optional NombreArchivo As String = "Reporte", Optional Formato As String = "PDF", Optional MR As StiReport = Nothing) As Byte() - - If IsNothing(MR) Then MR = New Stimulsoft.Report.StiReport() - Dim Bytes As Byte() = Nothing - Try - MR.Load(RutaReporte) - MR.Dictionary.DataSources.Clear() - MR.RegData(DataSource) - Dim Lista = MR.Dictionary.Variables.ToList() - For Each item As CrystalParametro In Parametros - If Lista.Exists(Function(a) a.Name = item.Nombre) Then - MR.Dictionary.Variables(item.Nombre).Value = item.Valor.ToString - End If - Next - - MR.Dictionary.Synchronize() - MR.IsRendered = False - MR.Render(False) - Dim pdfSettings As New Stimulsoft.Report.Export.StiPdfExportSettings() - Dim MemoryStream As New MemoryStream - Select Case Formato - Case "PDF" - MR.ExportDocument(Stimulsoft.Report.StiExportFormat.Pdf, MemoryStream, pdfSettings) - Case "EXCEL" - MR.ExportDocument(Stimulsoft.Report.StiExportFormat.Excel2007, MemoryStream, pdfSettings) - End Select - - Bytes = MemoryStream.ToArray - MR.RenderedPages.Clear() - MR.Dispose() - MemoryStream.Dispose() - Catch ex As Exception - GuardaLog($"Error: { If(ex.InnerException.Message IsNot Nothing, ex.InnerException.Message, ex.Message) } | Descripcion: {If(ex.InnerException IsNot Nothing AndAlso ex.InnerException.InnerException IsNot Nothing AndAlso ex.InnerException.InnerException.Message IsNot Nothing, ex.InnerException.InnerException.Message, If(ex.InnerException IsNot Nothing AndAlso ex.InnerException.Message IsNot Nothing, ex.InnerException.Message, "Sin descripcion"))} - Ruta {RutaReporte}") - 'HAY QUE VALIDAR QUE LOS OBJETOS QUE SE USAN PARA GUARDAR LOG EXISTEN!!! IPP 14 AGOSTO 2017 - 'GuardaLog($"Error {ex.InnerException.Message} | Descripcion: {If(ex.InnerException.InnerException IsNot Nothing, ex.InnerException.InnerException.Message, "Sin descripcion")} - Ruta {RutaReporte}") - End Try - Return Bytes - End Function - Public Function StreamPDFTest(RutaReporte As String, DataSource As List(Of ReportDataSource), Parametros As List(Of ReportParameter), Optional NombreArchivo As String = "Reporte", Optional Formato As String = "PDF", Optional MR As ReportViewer = Nothing) As Byte() 'limpio ReportViwer @@ -6407,533 +6346,6 @@ Public Class ClsPaginas #End Region #Region "IMPRIMIR FACTURA" - Public Sub PdfFacturaPyME(ByRef Vta As Modelos.Factura, DT As DataTable, Optional Guardar As Boolean = True) - Dim retorno As Byte() = Nothing - - 'DATOS GENERALES - Dim Ruta As String = UsuarioActual.Empresa.Ruta - Dim PathXML As String = $"{Ruta}XML\{Vta.TipoDocto}\{Vta.SerieFolio}.xml" - Dim NombreArchivo As String = "" - Dim NombreArchivoDescarga As String = "" - Dim TipoDocumento As String = "" - Dim TipoDocumentoRef As String = "" - Dim AplicaPagare As String = "1" - - Dim RFCReceptor As String = "" - - If String.IsNullOrEmpty(Vta.RFCReceptor) Then - RFCReceptor = Vta.Cliente.RFC - If Vta.FacturarSucursal Then - If Vta.ClienteSucursal IsNot Nothing Then - RFCReceptor = Vta.ClienteSucursal.RFC - End If - End If - Else - RFCReceptor = Vta.RFCReceptor - End If - - Dim RutaCBB As String = String.Format("{0}CBB\{1}.jpg", Ruta, Vta.SerieFolio) - Dim ImagenCBB As New System.IO.FileInfo(RutaCBB) - Dim ImgCBB As String '= String.Format("{0}://{1}:{2}/Empresas/{3}/CBB/{4}.jpg", Request.Url.Scheme, Request.Url.Host, Request.Url.Port, UsuarioActual.CveEmpresa, Vta.SerieFolio) - - Dim ImagenPath = String.Format("{0}Formatos\Suc{1}\logo.png", UsuarioActual.Empresa.Ruta, Vta.CveSucursal) - Dim Logo As New System.IO.FileInfo(ImagenPath) - Dim ImgLogo = New Uri(String.Format("{0}Empresas/{1}/Formatos/Suc{2}.png", UrlSitio, UsuarioActual.CveEmpresa, Vta.CveSucursal)).AbsoluteUri - - Dim SBDomicilioSucursal As New StringBuilder() - Dim CiudadSucursal As String = String.Format("{0},{1}", Vta.SubProyecto.Municipio, Vta.SubProyecto.Estado) - Dim DomicilioSucursal As String = "" - - SBDomicilioSucursal.AppendFormat("{0}", Vta.SubProyecto.Calle) - If Vta.SubProyecto.NoExt.ToEntero > 0 Then SBDomicilioSucursal.AppendFormat(" No.Ext: {0}", Vta.SubProyecto.NoExt) - If Vta.SubProyecto.NoInt.ToEntero > 0 Then SBDomicilioSucursal.AppendFormat(", No.Int: {0}", Vta.SubProyecto.NoInt) - If Vta.SubProyecto.Colonia.Length > 0 Then SBDomicilioSucursal.AppendFormat(", Col: {0}", Vta.SubProyecto.Colonia) - If Vta.SubProyecto.CP.ToEntero > 0 Then SBDomicilioSucursal.AppendFormat(", CP: {0}", Vta.SubProyecto.CP) - If CiudadSucursal.Length > 0 Then SBDomicilioSucursal.AppendFormat(", {0}", CiudadSucursal) - If Vta.SubProyecto.Pais.Length > 0 Then SBDomicilioSucursal.AppendFormat(", {0}", Vta.SubProyecto.Pais) - - DomicilioSucursal = SBDomicilioSucursal.ToString - - Dim Fecha As String = Vta.Fecha.ToShortDateString - - Dim SBDireccion As New StringBuilder() - Dim SBLugar As New StringBuilder() - Dim ClienteDireccion As String - Dim ClienteLugar As String - - 'SI ESTA TIMBRADA - CON XML - If File.Exists(PathXML) AndAlso Vta.Serie <> "VistaPrevia" Then 'Cuando es vista previe y coincide la serie y folio se ponen los datos fiscales - Dim XmlDoc As New System.Xml.XmlDocument - XmlDoc.Load(PathXML) - - Dim TC As Decimal = 1 - Try - TC = XmlDoc.DocumentElement.Attributes("TipoCambio").InnerText.ToDecimal - Catch ex As Exception - TC = 1 - End Try - - Vta.FechaEmision = XmlDoc.DocumentElement.Attributes("fecha").InnerText.ToDate - Vta.NoSerieCertificadoContribuyente = XmlDoc.DocumentElement.Attributes("noCertificado").InnerText - - Dim validaElemento = XmlDoc.DocumentElement("cfdi:Complemento") - - If Not IsNothing(validaElemento) Then - For i As Integer = 0 To XmlDoc.DocumentElement("cfdi:Complemento").ChildNodes.Count - 1 - If XmlDoc.DocumentElement("cfdi:Complemento").ChildNodes(i).Name = "tfd:TimbreFiscalDigital" Then - Vta.FolioFiscal = XmlDoc.DocumentElement("cfdi:Complemento").ChildNodes(i).Attributes("UUID").InnerText - Vta.NoSerieCertificado = XmlDoc.DocumentElement("cfdi:Complemento").ChildNodes(i).Attributes("noCertificadoSAT").InnerText - Vta.FechaCertificacion = XmlDoc.DocumentElement("cfdi:Complemento").ChildNodes(i).Attributes("FechaTimbrado").InnerText.ToDate - Vta.SelloCFDi = XmlDoc.DocumentElement("cfdi:Complemento").ChildNodes(i).Attributes("selloCFD").InnerText - Vta.SelloSAT = XmlDoc.DocumentElement("cfdi:Complemento").ChildNodes(i).Attributes("selloSAT").InnerText - - End If - Next - Else - Vta.FolioFiscal = "Sin Timbrar" - Vta.NoSerieCertificado = "Sin Timbrar" - Vta.SelloCFDi = "Sin Timbrar" - Vta.SelloSAT = "Sin Timbrar" - End If - - 'SIN TIMBRAR - SIN XML - Else - Vta.FolioFiscal = "Sin Timbrar" - Vta.NoSerieCertificado = "Sin Timbrar" - Vta.SelloCFDi = "Sin Timbrar" - Vta.SelloSAT = "Sin Timbrar" - End If - - 'DIRECCION CLIENTE - If Vta.CveClienteSucursal.ToEntero > 0 Then - 'Si cliente tiene Noint, NoExt, CP - SBDireccion.AppendFormat("{0}", Vta.ClienteSucursal.Direccion) - If Vta.ClienteSucursal.NoExt.Length > 0 Then SBDireccion.AppendFormat(", No.Ext: {0}", Vta.ClienteSucursal.NoExt) - If Vta.ClienteSucursal.NoInt.Length > 0 Then SBDireccion.AppendFormat(", No.Int: {0}", Vta.ClienteSucursal.NoInt) - If UsuarioActual.CveEmpresa <> 66 Then SBDireccion.AppendFormat(", Col: {0}", Vta.ClienteSucursal.Colonia) - - If Not (UsuarioActual.CveEmpresa.Contiene(66, 81, 109) AndAlso Vta.TipoDocto = "Cot") Then - If Vta.ClienteSucursal.CP.Length > 0 Then SBDireccion.AppendFormat(", CP: {0} ", Vta.ClienteSucursal.CP.Trim) - End If - - 'Si cliente tiene Local, CD, Edo, Pais - If Vta.ClienteSucursal.Localidad IsNot Nothing AndAlso Vta.ClienteSucursal.Localidad.Length > 0 Then SBLugar.AppendFormat("Loc: {0}, ", Vta.ClienteSucursal.Localidad) - If Vta.ClienteSucursal.Municipio IsNot Nothing AndAlso Vta.ClienteSucursal.Municipio.Length > 0 Then SBLugar.AppendFormat("Cd: {0}, ", Vta.ClienteSucursal.Municipio) - If Vta.ClienteSucursal.Estado IsNot Nothing AndAlso Vta.ClienteSucursal.Estado.Length > 0 Then SBLugar.AppendFormat(" Edo: {0}, ", Vta.ClienteSucursal.Estado) - If Vta.ClienteSucursal.Pais IsNot Nothing AndAlso Vta.ClienteSucursal.Pais.Length > 0 Then SBLugar.AppendFormat(" País: {0} ", Vta.ClienteSucursal.Pais) - Else - SBDireccion.AppendFormat("{0}", Vta.Cliente.Direccion) - If Vta.Cliente.NoExt.Length > 0 Then SBDireccion.AppendFormat(", No.Ext: {0}", Vta.Cliente.NoExt) - If Vta.Cliente.NoInt.Length > 0 Then SBDireccion.AppendFormat(", No.Int: {0}", Vta.Cliente.NoInt) - If UsuarioActual.CveEmpresa <> 66 Then SBDireccion.AppendFormat(", Col: {0}", Vta.Cliente.Colonia) - - If Not (UsuarioActual.CveEmpresa.Contiene(66, 81, 109) AndAlso Vta.TipoDocto = "Cot") Then - If Vta.Cliente.CP.Length > 0 Then SBDireccion.AppendFormat(", CP: {0} ", Vta.Cliente.CP.Trim) - End If - - 'Si cliente tiene Local, CD, Edo, Pais - If Vta.Cliente.Localidad IsNot Nothing AndAlso Vta.Cliente.Localidad.Length > 0 Then SBLugar.AppendFormat("Loc: {0}, ", Vta.Cliente.Localidad) - If Vta.Cliente.Ciudad IsNot Nothing AndAlso Vta.Cliente.Ciudad.Length > 0 Then SBLugar.AppendFormat("Cd: {0}, ", Vta.Cliente.Ciudad) - If Vta.Cliente.Estado IsNot Nothing AndAlso Vta.Cliente.Estado.Length > 0 Then SBLugar.AppendFormat(" Edo: {0}, ", Vta.Cliente.Estado) - If Vta.Cliente.Pais IsNot Nothing AndAlso Vta.Cliente.Pais.Length > 0 Then SBLugar.AppendFormat(" País: {0} ", Vta.Cliente.Pais) - - End If - - ClienteDireccion = SBDireccion.ToString - ClienteLugar = SBLugar.ToString - SBDireccion.Clear() - SBLugar.Clear() - - 'LOGO - Dim LogoRuta As String = "" - 'POR SUCURSAL - LogoRuta = String.Format("{0}Formatos\Suc{1}.png", UsuarioActual.Empresa.Ruta, Vta.CveSucursal) - If File.Exists(LogoRuta) Then - LogoRuta = String.Format("file://{0}Formatos\Suc{1}.png", UsuarioActual.Empresa.Ruta, Vta.CveSucursal) - 'POR EMPRESA - Else - LogoRuta = String.Format("{0}Formatos\Logo.png", UsuarioActual.Empresa.Ruta) - If File.Exists(LogoRuta) Then - 'LogoRuta = String.Format("{0}://{1}:{2}/Empresas/{3}/Logo.png", Request.Url.Scheme, Request.Url.Host, Request.Url.Port, UsuarioActual.CveEmpresa) - LogoRuta = String.Format("{0}", LogoRuta) - End If - End If - 'LogoRuta = String.Format("{0}://{1}:{2}/Empresas/{3}/Logo.png", Request.Url.Scheme, Request.Url.Host, Request.Url.Port, UsuarioActual.CveEmpresa) - LogoRuta = String.Format("{0}", LogoRuta) - 'Si no tiene CBB, SE GENERA - If Not ImagenCBB.Exists Then - Dim CBB As New ClbNegBICFDv3_2.ClsNegCBBGenerar() - CBB.GenerarCBB(UsuarioActual.Empresa.RFC, RFCReceptor, Vta.Total.ToString.ToDecimal, Vta.FolioFiscal, RutaCBB) - End If - ImgCBB = String.Format("{0}://{1}:{2}/Empresas/{3}/CBB/{4}.jpg", Request.Url.Scheme, Request.Url.Host, Request.Url.Port, UsuarioActual.CveEmpresa, Vta.SerieFolio) - - Dim CadenaOriginals As String = "||1.0|" + Vta.FolioFiscal + "|" + Vta.FechaCertificacion.ToString("yyyy-MM-dd") + "T" + Vta.FechaCertificacion.ToString("HH:mm:ss") + "|" + Vta.SelloCFDi + "|" + Vta.NoSerieCertificado + "||" - If Not ImagenCBB.Exists Then ImgCBB = "" - Dim RutaFormato As String = "" - - - 'AQUI EMPIEZA LOS PARAMETROS - Try - Dim params = New List(Of CrystalParametro) - - 'CLIENTE - params.Add(New CrystalParametro("ClienteCodigo", Vta.Cliente.Codigo)) - params.Add(New CrystalParametro("ClienteNombre", If(Vta.ClienteSucursal.ImprimeNombreSucursal = "True", If(Vta.CveClienteSucursal > 0, Vta.ClienteSucursal.Sucursal, Vta.Cliente.Nombre), If(Vta.AtencionA <> "" AndAlso Vta.TipoDocto.Contiene("Ing", "Rem") AndAlso RFCReceptor = "XAXX010101000", $"{Vta.Cliente.Nombre}({Vta.AtencionA})", Vta.Cliente.Nombre)))) - params.Add(New CrystalParametro("ClienteDireccion", ClienteDireccion)) - params.Add(New CrystalParametro("ClienteLugar", ClienteLugar)) - - - 'TOTALES - params.Add(New CrystalParametro("SubTotal", Vta.SubTotal.ToString.FormatoNumero(2))) - params.Add(New CrystalParametro("Descuento", Vta.Descuento.ToString.FormatoNumero(2))) - params.Add(New CrystalParametro("Amortizacion", Vta.Amortizacion.ToString.FormatoNumero(2))) - params.Add(New CrystalParametro("SubTotal2", (Vta.SubTotal - Vta.Descuento - Vta.Amortizacion).ToString.FormatoNumero(2))) - params.Add(New CrystalParametro("IVA", Vta.IVA.ToString.FormatoNumero(2))) - params.Add(New CrystalParametro("RetIVA", Vta.RetIVA.ToString.FormatoNumero(2))) - params.Add(New CrystalParametro("RetISR", Vta.RetISR.ToString.FormatoNumero(2))) - params.Add(New CrystalParametro("Total", Vta.Total.ToString.FormatoNumero(2))) - params.Add(New CrystalParametro("ImporteLetra", Vta.Total.ToString.ToDouble.Texto2Letras(Vta.CveMoneda))) - - 'DATOS GENERALES - params.Add(New CrystalParametro("Observaciones", Vta.Observaciones)) - params.Add(New CrystalParametro("CveVendedor", Vta.CveVendedor.ToString)) - 'params.Add(New CrystalParametro("Status", Vta.EstatusFactura)) - params.Add(New CrystalParametro("FechaSolicitud", Vta.Fecha.ToString("dd/MMMM/yyyy"))) ' se puede omitir - params.Add(New CrystalParametro("Serie", Vta.Serie)) - params.Add(New CrystalParametro("Folio", Vta.Folio.ToString)) - params.Add(New CrystalParametro("DomicilioSucursal", DomicilioSucursal)) - params.Add(New CrystalParametro("Vencimiento", Vta.FechaVencimiento.ToString("dd/MM/yyyy"))) - params.Add(New CrystalParametro("FolioFiscal", Vta.FolioFiscal)) - params.Add(New CrystalParametro("FechaCertificacion", String.Format("{0}T{1}", Vta.FechaCertificacion.ToString("yyyy-MM-dd"), Vta.FechaCertificacion.ToString("HH:mm:ss")))) - params.Add(New CrystalParametro("SelloCFDI", Vta.SelloCFDi)) - params.Add(New CrystalParametro("CadenaSAT", CadenaOriginals)) - params.Add(New CrystalParametro("SelloSAT", Vta.SelloSAT)) - - params.Add(New CrystalParametro("QR", ImgCBB)) - params.Add(New CrystalParametro("ClienteRFC", RFCReceptor)) - params.Add(New CrystalParametro("FormaPago", Vta.FormaPagoText)) - params.Add(New CrystalParametro("Moneda", Vta.Moneda)) - params.Add(New CrystalParametro("TipoCambio", Vta.TipoCambio.ToString)) - params.Add(New CrystalParametro("CondicionPago", Vta.CondicionesPagoText)) - params.Add(New CrystalParametro("CadenaOriginal", CadenaOriginals)) - params.Add(New CrystalParametro("SerieCertificadoSAT", Vta.NoSerieCertificado)) - params.Add(New CrystalParametro("CertificadoContribuyente", Vta.NoSerieCertificadoContribuyente)) - params.Add(New CrystalParametro("NumCta", Vta.NumeroCuenta)) - params.Add(New CrystalParametro("LogoPath", LogoRuta)) - - 'VENDEDOR - Dim RowVendedor As DataRow = GlobalDTVendedores(-1).FiltroPrimero(String.Format("CveVendedor = {0}", Vta.CveVendedor.ToString)) - If Not IsNothing(RowVendedor) Then - params.Add(New CrystalParametro("VendedorNombre", RowVendedor("Vendedor").ToString)) - params.Add(New CrystalParametro("VendedorMail", RowVendedor("Correo").ToString)) - params.Add(New CrystalParametro("VendedorTelefono", RowVendedor("Telefono").ToString)) - params.Add(New CrystalParametro("VendedorCelular", RowVendedor("Celular").ToString)) - - End If - - params.Add(New CrystalParametro("CiudadSucursal", CiudadSucursal)) - params.Add(New CrystalParametro("OC", Vta.Det_OrdenCompra.ToString)) - - If UsuarioActual.Empresa.Funcionalidad(508) = "1" Then - params.Add(New CrystalParametro("IEPS", Vta.IEPS.ToString.FormatoNumero(2))) - End If - - If Vta.CveClienteSucursal > 0 Then - params.Add(New CrystalParametro("ClienteContactoMail", Vta.ClienteSucursal.CorreoSucursal)) - params.Add(New CrystalParametro("ClienteTelefono", Vta.ClienteSucursal.TelefonoSucursal)) - Else - params.Add(New CrystalParametro("ClienteContactoMail", Vta.Cliente.MailCotizacion)) - params.Add(New CrystalParametro("ClienteTelefono", If(Vta.TipoDocto.Contiene("Ing", "Rem") AndAlso Vta.Cliente.Telefono.Length > 6, Vta.Cliente.Telefono, Vta.TelefonoGenerico))) - End If - - If UsuarioActual.CveEmpresa.Contiene(17) Then - params.Add(New CrystalParametro("MetodoPago", Vta.ClaveMetodoPagoSAT.ToString)) - Else - params.Add(New CrystalParametro("MetodoPago", Vta.MetodoPago.ToString)) - End If - - - Select Case Vta.TipoDocto - Case "Ing" - NombreArchivo = "Factura" - NombreArchivoDescarga = "Factura" - TipoDocumento = "INGRESO" - - 'GENERAL - params.Add(New CrystalParametro("TipoDocumento", NombreArchivoDescarga)) - params.Add(New CrystalParametro("Tipo", TipoDocumento)) - params.Add(New CrystalParametro("Ref", TipoDocumentoRef)) - params.Add(New CrystalParametro("AplicaPagare", AplicaPagare)) - - 'VSH - If UsuarioActual.CveEmpresa.Contiene(4, 7, 11, 12, 122, 145) Then - 'DATOS CLIENTES - Dim ClienteRow = GlobalDTCliente(UsuarioActual.CveEmpresa).FiltroPrimero(String.Format("CveCliente = {0}", Vta.CveCliente.ToString)) - Dim DatosCliente = "" - If ClienteRow IsNot Nothing Then - DatosCliente = String.Format("{0} | {1} | {2}", Vta.SubProyecto.Municipio, ClienteRow("CuentaContable"), ClienteRow("Codigo")) - End If - params.Add(New CrystalParametro("DatosClientes", DatosCliente)) - params.Add(New CrystalParametro("Sucursal", Vta.SubProyecto.SubProyecto)) - End If - - 'COMPU, DN DIFUSA - If UsuarioActual.CveEmpresa.Contiene(72, 80, 119) Then - params.Add(New CrystalParametro("EstatusFactura", If(Vta.TipoEstatus = 5, Vta.EstatusFactura, ""))) - params.Add(New CrystalParametro("EstatusEntrega", If(Vta.Inv_CveEstatusEntrega = 1, Vta.Inv_EstatusEntrega, ""))) - params.Add(New CrystalParametro("PedidoContrato", Vta.PedidoContrato)) - params.Add(New CrystalParametro("DescripcionContrato", Vta.NumeroDescripcionContrato)) - - params.Add(New CrystalParametro("MonedaAbreviatura", If(Vta.MonedaAbreviatura.ToString IsNot Nothing, Vta.MonedaAbreviatura.ToString, ""))) - params.Add(New CrystalParametro("UsuarioImprimio", UsuarioActual.Nombre)) - params.Add(New CrystalParametro("FechaImpresion", Now.ToDateTime.ToString)) - params.Add(New CrystalParametro("Sucursal", Vta.SubProyecto.SubProyecto)) - - 'INE COMPLEMENTOS - If UsuarioActual.CveEmpresa.Contiene(72) Then - Dim INETipoProceso As String = "" - Dim INETipoComite As String = "" - Dim INEIdContabilidad As Integer = 0 - If Vta.ComplementoINE IsNot Nothing Then - INETipoProceso = Vta.ComplementoINE.INETipoProceso - INETipoComite = Vta.ComplementoINE.INETipoComite - INEIdContabilidad = Vta.ComplementoINE.INEIdContabilidad - End If - params.Add(New CrystalParametro("INETipoProceso", INETipoProceso)) - params.Add(New CrystalParametro("INETipoComite", INETipoComite)) - params.Add(New CrystalParametro("INEIdContabilidad", INEIdContabilidad)) - params.Add(New CrystalParametro("Referencia", Vta.Cliente.ReferenciaFiscal)) - params.Add(New CrystalParametro("ClienteContacto", Vta.AtencionA)) - End If - - 'DIRECCION ENVIO - If Vta.EnviarA.CveDireccionEnvio > 0 Then - Dim StrEnvioDi As New StringBuilder - StrEnvioDi.AppendFormat("{0}", Vta.EnviarA.EnvioDireccion) - If Vta.EnviarA.EnvioNoExt IsNot Nothing AndAlso Vta.EnviarA.EnvioNoExt.Length > 0 Then StrEnvioDi.AppendFormat(", No.Ext: {0}", Vta.EnviarA.EnvioNoExt) - If Vta.EnviarA.EnvioNoInt IsNot Nothing AndAlso Vta.EnviarA.EnvioNoInt.Length > 0 Then StrEnvioDi.AppendFormat(", No.Int: {0}", Vta.EnviarA.EnvioNoInt) - - params.Add(New CrystalParametro("EnvioDireccion", StrEnvioDi.ToString)) - params.Add(New CrystalParametro("EnvioNoExt", Vta.EnviarA.EnvioNoExt)) - params.Add(New CrystalParametro("EnvioNoInt", Vta.EnviarA.EnvioNoInt)) - params.Add(New CrystalParametro("EnvioColonia", Vta.EnviarA.EnvioColonia)) - params.Add(New CrystalParametro("EnvioCiudad", Vta.EnviarA.EnvioCiudad)) - params.Add(New CrystalParametro("EnvioEstado", Vta.EnviarA.EnvioEstado)) - params.Add(New CrystalParametro("EnvioContacto", Vta.EnviarA.EnvioContacto)) - params.Add(New CrystalParametro("EnvioDepartamento", Vta.EnviarA.EnvioDepartamento)) - params.Add(New CrystalParametro("EnvioCP", Vta.EnviarA.EnvioCP)) - Else - If Vta.CveClienteSucursal.ToEntero > 0 Then - Dim StrEnvioDi As New StringBuilder - StrEnvioDi.AppendFormat("{0}", Vta.ClienteSucursal.Direccion) - If Vta.ClienteSucursal.NoExt.Length > 0 Then StrEnvioDi.AppendFormat(", No.Ext: {0}", Vta.ClienteSucursal.NoExt) - If Vta.ClienteSucursal.NoInt.Length > 0 Then StrEnvioDi.AppendFormat(", No.Int: {0}", Vta.ClienteSucursal.NoInt) - params.Add(New CrystalParametro("EnvioDireccion", StrEnvioDi.ToString)) - params.Add(New CrystalParametro("EnvioColonia", If(Vta.ClienteSucursal.Colonia.Length > 0, Vta.ClienteSucursal.Colonia, ""))) - params.Add(New CrystalParametro("EnvioCiudad", If(Vta.ClienteSucursal.Municipio.Length > 0, Vta.ClienteSucursal.Municipio, ""))) - params.Add(New CrystalParametro("EnvioEstado", If(Vta.ClienteSucursal.Estado.Length > 0, Vta.ClienteSucursal.Estado, ""))) - params.Add(New CrystalParametro("EnvioCP", If(Vta.ClienteSucursal.CP.Length > 0, Vta.ClienteSucursal.CP, ""))) - Else - Dim StrEnvioDi As New StringBuilder - StrEnvioDi.AppendFormat("{0}", If(Vta.Cliente.Direccion.Length > 0, Vta.Cliente.Direccion, "")) - If Vta.Cliente.NoExt.Length > 0 Then StrEnvioDi.AppendFormat(", No.Ext: {0}", Vta.Cliente.NoExt) - If Vta.Cliente.NoInt.Length > 0 Then StrEnvioDi.AppendFormat(", No.Int: {0}", Vta.Cliente.NoInt) - params.Add(New CrystalParametro("EnvioDireccion", StrEnvioDi.ToString)) - params.Add(New CrystalParametro("EnvioColonia", If(Vta.Cliente.Colonia.Length > 0, Vta.Cliente.Colonia, ""))) - params.Add(New CrystalParametro("EnvioCiudad", If(Vta.Cliente.Localidad IsNot Nothing And Vta.Cliente.Localidad.Length > 0, Vta.Cliente.Localidad, ""))) - params.Add(New CrystalParametro("EnvioEstado", If(Vta.Cliente.Estado.Length > 0, Vta.Cliente.Estado, ""))) - params.Add(New CrystalParametro("EnvioCP", If(Vta.Cliente.CP.Length > 0, Vta.Cliente.CP, ""))) - End If - - End If - - 'CLIENTE SUCURSAL - If Vta.CveClienteSucursal.ToEntero > 0 Then - params.Add(New CrystalParametro("ClienteCalle", If(Vta.ClienteSucursal.Direccion.Length > 0, Vta.ClienteSucursal.Direccion, ""))) - params.Add(New CrystalParametro("ClienteColonia", If(Vta.ClienteSucursal.Colonia.Length > 0, Vta.ClienteSucursal.Colonia, ""))) - params.Add(New CrystalParametro("ClienteCiudad", If(Vta.ClienteSucursal.Localidad IsNot Nothing And Vta.ClienteSucursal.Localidad.Length > 0, Vta.ClienteSucursal.Localidad, ""))) - params.Add(New CrystalParametro("ClienteMunicipio", If(Vta.ClienteSucursal.Municipio.Length > 0, Vta.ClienteSucursal.Municipio, ""))) - params.Add(New CrystalParametro("ClienteEstado", If(Vta.ClienteSucursal.Estado.Length > 0, Vta.ClienteSucursal.Estado, ""))) - params.Add(New CrystalParametro("ClienteCP", If(Vta.ClienteSucursal.CP.Length > 0, Vta.ClienteSucursal.CP, ""))) - params.Add(New CrystalParametro("ClienteNoInt", If(Vta.ClienteSucursal.NoInt.Length > 0, Vta.ClienteSucursal.NoInt, ""))) - params.Add(New CrystalParametro("ClienteNoExt", If(Vta.ClienteSucursal.NoExt.Length > 0, Vta.ClienteSucursal.NoExt, ""))) - params.Add(New CrystalParametro("ClientePais", If(Vta.ClienteSucursal.Pais.Length > 0, Vta.ClienteSucursal.Pais, ""))) - Else - params.Add(New CrystalParametro("ClienteCalle", If(Vta.Cliente.Direccion.Length > 0, Vta.Cliente.Direccion, ""))) - params.Add(New CrystalParametro("ClienteColonia", If(Vta.Cliente.Colonia.Length > 0, Vta.Cliente.Colonia, ""))) - params.Add(New CrystalParametro("ClienteCiudad", If(Vta.Cliente.Localidad IsNot Nothing And Vta.Cliente.Localidad.Length > 0, Vta.Cliente.Localidad, ""))) - params.Add(New CrystalParametro("ClienteMunicipio", If(Vta.Cliente.Ciudad.Length > 0, Vta.Cliente.Ciudad, ""))) - params.Add(New CrystalParametro("ClienteEstado", If(Vta.Cliente.Estado.Length > 0, Vta.Cliente.Estado, ""))) - params.Add(New CrystalParametro("ClienteCP", If(Vta.Cliente.CP.Length > 0, Vta.Cliente.CP, ""))) - params.Add(New CrystalParametro("ClienteNoInt", If(Vta.Cliente.NoInt.Length > 0, Vta.Cliente.NoInt, ""))) - params.Add(New CrystalParametro("ClienteNoExt", If(Vta.Cliente.NoExt.Length > 0, Vta.Cliente.NoExt, ""))) - params.Add(New CrystalParametro("ClientePais", If(Vta.Cliente.Pais.Length > 0, Vta.Cliente.Pais, ""))) - End If - End If - - RutaFormato = String.Format("{0}Formatos\{1}.mrt", UsuarioActual.Empresa.Ruta, NombreArchivo) - - Case "Egs" - If UsuarioActual.CveEmpresa.Contiene(72, 80) Then - NombreArchivo = "NotaCredito" - Else - NombreArchivo = "Factura" - End If - NombreArchivoDescarga = "Nota de Crédito" - TipoDocumento = "EGRESO" - TipoDocumentoRef = String.Format(": Ref.:{0}", Vta.RefDocto) - AplicaPagare = "0" - - 'GENERAL - params.Add(New CrystalParametro("TipoDocumento", NombreArchivoDescarga)) - params.Add(New CrystalParametro("Tipo", TipoDocumento)) - params.Add(New CrystalParametro("Ref", TipoDocumentoRef)) - params.Add(New CrystalParametro("AplicaPagare", AplicaPagare)) - params.Add(New CrystalParametro("Fecha", String.Format("{0}T{1}", Vta.Fecha.ToString("yyyy-MM-dd"), Vta.Fecha.ToString("HH:mm:ss")))) - - 'ALAN YEPIZ - If UsuarioActual.CveEmpresa.Contiene(123) Then - params.Add(New CrystalParametro("DiaExpedicion", String.Format("{0}", Vta.Fecha.ToDate.Day))) - params.Add(New CrystalParametro("MesExpedicion", String.Format("{0}", Vta.Fecha.ToDate.Month))) - params.Add(New CrystalParametro("AñoExpedicion", String.Format("{0}", Vta.Fecha.ToDate.Year))) - End If - - 'COMPU, DN DIFUSA - If UsuarioActual.CveEmpresa.Contiene(72, 80, 119) Then - params.Add(New CrystalParametro("EstatusFactura", If(Vta.TipoEstatus = 5, Vta.EstatusFactura, ""))) - params.Add(New CrystalParametro("EstatusEntrega", If(Vta.Inv_CveEstatusEntrega = 1, Vta.Inv_EstatusEntrega, ""))) - params.Add(New CrystalParametro("PedidoContrato", Vta.PedidoContrato)) - - params.Add(New CrystalParametro("MonedaAbreviatura", If(Vta.MonedaAbreviatura.ToString IsNot Nothing, Vta.MonedaAbreviatura.ToString, ""))) - params.Add(New CrystalParametro("UsuarioImprimio", UsuarioActual.Nombre)) - params.Add(New CrystalParametro("FechaImpresion", Now.ToDateTime.ToString)) - params.Add(New CrystalParametro("Sucursal", Vta.SubProyecto.SubProyecto)) - - 'CLIENTE SUCURSAL - If Vta.CveClienteSucursal.ToEntero > 0 Then - params.Add(New CrystalParametro("ClienteCalle", If(Vta.ClienteSucursal.Direccion.Length > 0, Vta.ClienteSucursal.Direccion, ""))) - params.Add(New CrystalParametro("ClienteColonia", If(Vta.ClienteSucursal.Colonia.Length > 0, Vta.ClienteSucursal.Colonia, ""))) - params.Add(New CrystalParametro("ClienteCiudad", If(Vta.ClienteSucursal.Localidad IsNot Nothing And Vta.ClienteSucursal.Localidad.Length > 0, Vta.ClienteSucursal.Localidad, ""))) - params.Add(New CrystalParametro("ClienteMunicipio", If(Vta.ClienteSucursal.Municipio.Length > 0, Vta.ClienteSucursal.Municipio, ""))) - params.Add(New CrystalParametro("ClienteEstado", If(Vta.ClienteSucursal.Estado.Length > 0, Vta.ClienteSucursal.Estado, ""))) - params.Add(New CrystalParametro("ClienteCP", If(Vta.ClienteSucursal.CP.Length > 0, Vta.ClienteSucursal.CP, ""))) - params.Add(New CrystalParametro("ClienteNoInt", If(Vta.ClienteSucursal.NoInt.Length > 0, Vta.ClienteSucursal.NoInt, ""))) - params.Add(New CrystalParametro("ClienteNoExt", If(Vta.ClienteSucursal.NoExt.Length > 0, Vta.ClienteSucursal.NoExt, ""))) - params.Add(New CrystalParametro("ClientePais", If(Vta.ClienteSucursal.Pais.Length > 0, Vta.ClienteSucursal.Pais, ""))) - Else - params.Add(New CrystalParametro("ClienteCalle", If(Vta.Cliente.Direccion.Length > 0, Vta.Cliente.Direccion, ""))) - params.Add(New CrystalParametro("ClienteColonia", If(Vta.Cliente.Colonia.Length > 0, Vta.Cliente.Colonia, ""))) - params.Add(New CrystalParametro("ClienteCiudad", If(Vta.Cliente.Localidad IsNot Nothing And Vta.Cliente.Localidad.Length > 0, Vta.Cliente.Localidad, ""))) - params.Add(New CrystalParametro("ClienteMunicipio", If(Vta.Cliente.Ciudad.Length > 0, Vta.Cliente.Ciudad, ""))) - params.Add(New CrystalParametro("ClienteEstado", If(Vta.Cliente.Estado.Length > 0, Vta.Cliente.Estado, ""))) - params.Add(New CrystalParametro("ClienteCP", If(Vta.Cliente.CP.Length > 0, Vta.Cliente.CP, ""))) - params.Add(New CrystalParametro("ClienteNoInt", If(Vta.Cliente.NoInt.Length > 0, Vta.Cliente.NoInt, ""))) - params.Add(New CrystalParametro("ClienteNoExt", If(Vta.Cliente.NoExt.Length > 0, Vta.Cliente.NoExt, ""))) - params.Add(New CrystalParametro("ClientePais", If(Vta.Cliente.Pais.Length > 0, Vta.Cliente.Pais, ""))) - End If - End If - - - RutaFormato = String.Format("{0}Formatos\{1}.mrt", UsuarioActual.Empresa.Ruta, "Factura") - Case Else - NombreArchivo = "" - TipoDocumento = "" - End Select - If NombreArchivo = "" Then - GuardaLog("No se especifico el tipo de Impresion de venta (Venta, Remision, Cotización, Nota de Crédito).") - Exit Sub - End If - 'TERMINA REGION PARAMETROS - - Dim lrds As New List(Of ReportDataSource) - 'Si es ECLIPSE CREAR COLUMAS PARA FIRMAS EN DtDetalle. - If UsuarioActual.CveEmpresa.Contiene(1, 15, 17, 71, 76, 125) Then - Dim DtDetalleFirmas As New DataTable - DtDetalleFirmas.TableName = "DetalleFirma" - DtDetalleFirmas = Vta.DtDetalle.Copy() - - 'SI NO TIENE LAS COLUMNAS DE FIRMAS LAS CREA. - If Not DtDetalleFirmas.Columns.Contains("Titulo") Then - DtDetalleFirmas.Columns.Add("Titulo", GetType(String)) - DtDetalleFirmas.Columns.Add("Nombre", GetType(String)) - DtDetalleFirmas.Columns.Add("Puesto", GetType(String)) - DtDetalleFirmas.Columns.Add("Lado", GetType(Integer)) - End If - - 'Se llenan los Rows de las columnas con los datos del DtFirmas - For i As Integer = 0 To Vta.DtFirmas.Rows.Count - 1 - 'Si DtDetalle es menor al DtFirmas, crea un nuevo Row en DtDetalle y le asigna valor, Si no solo asigna valor - If DtDetalleFirmas.Rows.Count < i + 1 Then - Dim Dr = DtDetalleFirmas.NewRow - Dr("Titulo") = Vta.DtFirmas(i)("Titulo").ToString - Dr("Nombre") = Vta.DtFirmas(i)("Nombre").ToString - Dr("Puesto") = Vta.DtFirmas(i)("Puesto").ToString - Dr("Lado") = Vta.DtFirmas(i)("Lado").ToString.ToEntero - DtDetalleFirmas.Rows.Add(Dr) - Else - DtDetalleFirmas(i)("Titulo") = Vta.DtFirmas(i)("Titulo").ToString - DtDetalleFirmas(i)("Nombre") = Vta.DtFirmas(i)("Nombre").ToString - DtDetalleFirmas(i)("Puesto") = Vta.DtFirmas(i)("Puesto").ToString - DtDetalleFirmas(i)("Lado") = Vta.DtFirmas(i)("Lado").ToString.ToEntero - End If - Next i - - Dim rds As New ReportDataSource With {.Name = "DsOC", .Value = DtDetalleFirmas} - lrds.Add(rds) - Else - Dim rds As New ReportDataSource With {.Name = "DsOC", .Value = Vta.DtDetalle} - lrds.Add(rds) - End If - - Dim rds1 As New ReportDataSource With {.Name = "DataSet1", .Value = If(Vta.DtDeduccion IsNot Nothing, Vta.DtDeduccion, New DataTable)} ' sino esta creado el objeto, lo creamos, para que no truene el reporte - lrds.Add(rds1) - - 'DETALLE FIRMAS - - Dim rds2 As New ReportDataSource With {.Name = "DataSet2", .Value = If(Vta.DtFirmas IsNot Nothing, Vta.DtFirmas, New DataTable)} ' sino esta creado el objeto, lo creamos, para que no truene el reporte - lrds.Add(rds2) - - Dim Archivo As New System.IO.FileInfo(RutaFormato) - - Dim DataSet As New DataSet - Vta.DtDetalle.TableName = "Datos" - Vta.DtDeduccion.TableName = "Deduccion" - DataSet.Tables.Add(Vta.DtDetalle.Copy) - DataSet.Tables.Add(Vta.DtDeduccion.Copy) - - If Archivo.Exists Then - ImprimirbytesPDF(ImprimirPDFPyME(RutaFormato, DataSet, params, NombreArchivo, "PDF", MR:=Nothing), "Factura") - If Guardar Then - Dim ArchivoPDF As New System.IO.FileInfo(String.Format("{0}PDF\{1}\{2}.pdf", UsuarioActual.Empresa.Ruta, Vta.TipoDocto, Vta.SerieFolio)) - If Not ArchivoPDF.Exists Then - Try - DirectoryExistsCreate(String.Format("{0}PDF", UsuarioActual.Empresa.Ruta)) - DirectoryExistsCreate(String.Format("{0}PDF\{1}", UsuarioActual.Empresa.Ruta, Vta.TipoDocto)) - File.WriteAllBytes(String.Format("{0}PDF\{1}\{2}.pdf", UsuarioActual.Empresa.Ruta, Vta.TipoDocto, Vta.SerieFolio), retorno) - Catch ex As Exception - Alert("Ocurrió un error al generar el PDF", TipoMensaje.MsgAdvertencia) - End Try - Else - Try - ArchivoPDF.Delete() - File.WriteAllBytes(String.Format("{0}PDF\{1}\{2}.pdf", UsuarioActual.Empresa.Ruta, Vta.TipoDocto, Vta.SerieFolio), retorno) - Catch ex As Exception - Alert("Ocurrió un error al generar el PDF", TipoMensaje.MsgAdvertencia) - End Try - End If - End If - - Else - params.Add(New CrystalParametro("Empresa", UsuarioActual.Empresa.Empresa)) - params.Add(New CrystalParametro("RFC", UsuarioActual.Empresa.RFC)) - ImprimirbytesPDF(ImprimirPDFPyME(RutaFormato, DataSet, params, NombreArchivo, "PDF", MR:=Nothing), "Factura") - End If - - - Catch ex As Exception - GuardaLog(String.Format("Ocurrio un error al generar el reporte RLDC {0}", ex)) - End Try - End Sub Public Function PdfFactura(ByRef Vta As Modelos.Factura, Optional AplicaPagare As String = "0", Optional Guardar As Boolean = True) As Byte() Dim retorno As Byte() = Nothing @@ -7136,7 +6548,7 @@ Public Class ClsPaginas End If 'Si no tiene CBB, SE GENERA - If Not ImagenCBB.Exists AndAlso Vta.CveCliente.ToEntero > 0 Then + If Not ImagenCBB.Exists AndAlso Vta.FolioFiscal <> "" Then Dim CBB As New ClbNegBICFDv3_2.ClsNegCBBGenerar() CBB.GenerarCBB(UsuarioActual.Empresa.RFC, RFCReceptor, Vta.Total, Vta.FolioFiscal, RutaCBB) End If @@ -8922,10 +8334,6 @@ Public Class ClsPaginas Dim validaElemento = XmlDoc.DocumentElement("cfdi:Complemento") Dim validaElementoPago = XmlDoc.DocumentElement("cfdi:Conceptos") - namespaces.AddNamespace(Prefijo, cfdVer) - namespaces.AddNamespace("tfd", "http://www.sat.gob.mx/TimbreFiscalDigital") - namespaces.AddNamespace("registrofiscal", "http://www.sat.gob.mx/registrofiscal") - If Version = "3.3" Then cfdVer = "http://www.sat.gob.mx/cfd/3" namespaces.AddNamespace("pago10", "http://www.sat.gob.mx/Pagos10") @@ -8935,17 +8343,21 @@ Public Class ClsPaginas namespaces.AddNamespace("pago20", "http://www.sat.gob.mx/Pagos20") End If + namespaces.AddNamespace(Prefijo, cfdVer) + namespaces.AddNamespace("tfd", "http://www.sat.gob.mx/TimbreFiscalDigital") + namespaces.AddNamespace("implocal", "http://www.sat.gob.mx/implocal") + namespaces.AddNamespace("registrofiscal", "http://www.sat.gob.mx/registrofiscal") + 'Datos Fiscales If Not IsNothing(validaElemento) Then - For i As Integer = 0 To XmlDoc.DocumentElement("cfdi:Complemento").ChildNodes.Count - 1 - If XmlDoc.DocumentElement("cfdi:Complemento").ChildNodes(i).Name = "tfd:TimbreFiscalDigital" Then - FolioFiscal = XmlDoc.DocumentElement("cfdi:Complemento").ChildNodes(i).Attributes("UUID").InnerText - NoSerieCertificado = XmlDoc.DocumentElement("cfdi:Complemento").ChildNodes(i).Attributes("NoCertificadoSAT").InnerText - FechaCertificacion = XmlDoc.DocumentElement("cfdi:Complemento").ChildNodes(i).Attributes("FechaTimbrado").InnerText - SelloCFDi = XmlDoc.DocumentElement("cfdi:Complemento").ChildNodes(i).Attributes("SelloCFD").InnerText - SelloSAT = XmlDoc.DocumentElement("cfdi:Complemento").ChildNodes(i).Attributes("SelloSAT").InnerText - End If - Next + Dim nodetfd As XmlNode = XmlDoc.SelectSingleNode(String.Format("{0}:Comprobante/{0}:Complemento/tfd:TimbreFiscalDigital", Prefijo), namespaces) + If nodetfd Is Nothing Then + FolioFiscal = nodetfd.Attributes("UUID").InnerText + NoSerieCertificado = nodetfd.Attributes("NoCertificadoSAT").InnerText + FechaCertificacion = nodetfd.Attributes("FechaTimbrado").InnerText + SelloCFDi = nodetfd.Attributes("SelloCFD").InnerText + SelloSAT = nodetfd.Attributes("SelloSAT").InnerText + End If End If 'Pago10 @@ -8996,16 +8408,14 @@ Public Class ClsPaginas End If 'Pago20 - If Version = "4.0" AndAlso Not IsNothing(validaElemento) Then + If Version = "4.0" Then Dim nodePagos As XmlNodeList - nodePagos = XmlDoc.SelectNodes(String.Format("//{0}:Comprobante/{0}:Complemento/pago20:Pagos/pago20:Pago", Prefijo), namespaces) For Each Pagos As XmlNode In nodePagos If Version = "4.0" AndAlso Pagos.Name = "pago20:Totales" Then Dim a As String = "a" Else - Dim Dr As DataRow = DTConceptosPago.NewRow If Not Pagos.Attributes("CtaOrdenante") Is Nothing Then Dr("CtaOrdenante") = Pagos.Attributes("CtaOrdenante").Value Else Dr("CtaOrdenante") = "" @@ -9053,16 +8463,18 @@ Public Class ClsPaginas End If If Not IsNothing(validaElementoPago) Then - For i As Integer = 0 To XmlDoc.DocumentElement("cfdi:Conceptos").ChildNodes.Count - 1 - If XmlDoc.DocumentElement("cfdi:Conceptos").ChildNodes(i).Name = "cfdi:Concepto" Then - Importe = XmlDoc.DocumentElement("cfdi:Conceptos").ChildNodes(i).Attributes("Importe").InnerText - PU = XmlDoc.DocumentElement("cfdi:Conceptos").ChildNodes(i).Attributes("ValorUnitario").InnerText - Descripcion = XmlDoc.DocumentElement("cfdi:Conceptos").ChildNodes(i).Attributes("Descripcion").InnerText - CveUnidad = XmlDoc.DocumentElement("cfdi:Conceptos").ChildNodes(i).Attributes("ClaveUnidad").InnerText - Cantidad = XmlDoc.DocumentElement("cfdi:Conceptos").ChildNodes(i).Attributes("Cantidad").InnerText - CvePS = XmlDoc.DocumentElement("cfdi:Conceptos").ChildNodes(i).Attributes("ClaveProdServ").InnerText - End If - Next + + Dim nodeconceptos As XmlNode = XmlDoc.SelectSingleNode(String.Format("//{0}:Comprobante/{0}:Conceptos", Prefijo), namespaces) + If nodeconceptos.HasChildNodes Then + Dim nodeconcepto As XmlNode = nodeconceptos.ChildNodes(0) + Importe = nodeconcepto.Attributes("Importe").InnerText + PU = nodeconcepto.Attributes("ValorUnitario").InnerText + Descripcion = nodeconcepto.Attributes("Descripcion").InnerText + CveUnidad = nodeconcepto.Attributes("ClaveUnidad").InnerText + Cantidad = nodeconcepto.Attributes("Cantidad").InnerText + CvePS = nodeconcepto.Attributes("ClaveProdServ").InnerText + End If + End If Dim CadenaOriginal As String = $"||1.0| {FolioFiscal} | {FechaCertificacion.ToDate.ToShortDateString} T {FechaCertificacion.ToDateTime.ToShortTimeString} | {SelloCFDi} | {NoSerieCertificado} ||" @@ -9100,32 +8512,21 @@ Public Class ClsPaginas 'LOGO Dim LogoRuta As String = "" - - 'LogoRuta = String.Format("{0}Logo.png", UsuarioActual.Empresa.Ruta) - Dim Imagen As New System.IO.FileInfo(String.Format("{0}/Logo.png", UsuarioActual.Empresa.Ruta)) - If Imagen.Exists Then - 'If File.Exists(LogoRuta) Then - ' LogoRuta = String.Format("{0}://{1}:{2}/Empresas/{3}/Logo.png", Request.Url.Scheme, Request.Url.Host, Request.Url.Port, UsuarioActual.CveEmpresa) - 'End If - ''POR EMPRESA + If Imagen.Exists Then ''POR EMPRESA params.Add(New ReportParameter("LogoPath", $"file://{Imagen.FullName}")) Else params.Add(New ReportParameter("LogoPath", "")) End If - If File.Exists($"{UsuarioActual.Empresa.Ruta}Formatos\ReciboDePago.rdlc") Then rutaArchivo = $"{UsuarioActual.Empresa.Ruta}Formatos\ReciboDePago.rdlc" Else rutaArchivo = " \Empresas\Grales\Formatos\ReciboDePago.rdlc" End If - If Not Directory.Exists($"{UsuarioActual.Empresa.Ruta}\PDF\Pag\") Then - Directory.CreateDirectory($"{UsuarioActual.Empresa.Ruta}\PDF\Pag\") - End If - + If Not Directory.Exists($"{UsuarioActual.Empresa.Ruta}\PDF\Pag\") Then Directory.CreateDirectory($"{UsuarioActual.Empresa.Ruta}\PDF\Pag\") Dim ArchivoPDF As New System.IO.FileInfo($"{Ruta}PDF\Pag\{Serie}-{Folio}.pdf") If ArchivoPDF.Exists Then From f4aa0951153bfcaac57ff8d0cd693cf12689adcb Mon Sep 17 00:00:00 2001 From: rrene Date: Sat, 4 Jun 2022 17:24:05 -0700 Subject: [PATCH 16/21] -- quitar ligas de pdf pyme --- Ventas/Ventas.aspx.vb | 18 +----------------- 1 file changed, 1 insertion(+), 17 deletions(-) diff --git a/Ventas/Ventas.aspx.vb b/Ventas/Ventas.aspx.vb index 05f4bff20..8e83b3ff2 100644 --- a/Ventas/Ventas.aspx.vb +++ b/Ventas/Ventas.aspx.vb @@ -14808,21 +14808,7 @@ Partial Class Ventas Exit Sub End If - If UsuarioActual.Empresa.CvePlataforma = 2 Then - PdfFacturaPyME(ObjFactura, TmpDT, False) - Else - - 'REINICIA VALORES DE CONVERSION DE MONEDA - 'If Not ObjFactura.ConvertirPesos And ChkConvertirDoctoPesos.Checked Then - ' For Each Row As DataRow In TmpDT.Rows - ' Row("PU") = Row("PU").ToString().ToDouble / TxtTipoCambio.Text.Trim.ToDecimal - ' Row("Total") = Row("Cantidad").ToString().ToDouble / Row("PU").ToString().ToDouble - ' Row("Descuento") = Row("Descuento").ToString().ToDouble / TxtTipoCambio.Text.Trim.ToDecimal - ' Row("IEPS") = Row("IEPS").ToString().ToDouble / TxtTipoCambio.Text.Trim.ToDecimal - ' Next - 'End If - - Select Case ConversionRemision + Select Case ConversionRemision Case "*" For Each Row As DataRow In TmpDT.Rows Row("PU") = Math.Round(Row("PU").ToString().ToDouble * TipoCambioRemision, NumeroDecimales) @@ -14904,8 +14890,6 @@ Partial Class Ventas End Select - 'PdfFacturaPyME(ObjFactura, TmpDT) - End If End Sub #End Region From a612cc246f28630b8ee5b722f2cddce0c3aa8dbf Mon Sep 17 00:00:00 2001 From: rrene Date: Sat, 4 Jun 2022 17:31:22 -0700 Subject: [PATCH 17/21] -- DESCUUENTO DE ALCALINAS --- Ventas/PV.aspx.vb | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/Ventas/PV.aspx.vb b/Ventas/PV.aspx.vb index 62feae247..36cbced6f 100644 --- a/Ventas/PV.aspx.vb +++ b/Ventas/PV.aspx.vb @@ -697,7 +697,8 @@ Partial Class PV Get Return New Dictionary(Of Integer, Decimal) From { {20516, 0.21D}, 'Descuento para lubricantes LTH - {20515, 0.25D} 'Descuento para filtros LTH + {20515, 0.25D}, 'Descuento para filtros LTH + {20518, 0.183D} 'Descuento para pilas alcalinas -- segun } End Get End Property @@ -4392,7 +4393,10 @@ Partial Class PV End If End If Else - If DrPS("CveClasificacion").ToString.ToEntero.Contiene(20516, 20515) Then + If CveMarcaPS = 1092 Then ' E140 - alcalinas LTH + Descuento = ((Cantidad * PU) * 0.183D).RoundSQL(2) + End If + If DrPS("CveClasificacion").ToString.ToEntero.Contiene(20516, 20515, 20518) Then Descuento = ((Cantidad * PU) * ClasificacionesDescuentos(DrPS("CveClasificacion").ToString.ToEntero)).RoundSQL(2) End If End If From 84a35794bd3d8a5e81ae5c4a6b9d8b0d4d8677cf Mon Sep 17 00:00:00 2001 From: Jonathan Alexis Perez Morales Date: Sat, 4 Jun 2022 18:29:22 -0700 Subject: [PATCH 18/21] EMD. PDF Con subreporte de carta porte, asignacion de mercancias --- App_Code/ClsPaginas.vb | 90 +- App_Code/Modelos.vb | 14 + App_Code/Timbres.vb | 18 +- Compras/PopUpVerFactura.aspx.vb | 1020 +- Empresas/13/Formatos/CartaPorteTimbrado.rdlc | 4609 +++++++++ Empresas/13/Formatos/Factura.rdlc | 9404 +++++++++--------- Ventas/Ventas.aspx | 75 +- Ventas/Ventas.aspx.vb | 319 +- 8 files changed, 10523 insertions(+), 5026 deletions(-) create mode 100644 Empresas/13/Formatos/CartaPorteTimbrado.rdlc diff --git a/App_Code/ClsPaginas.vb b/App_Code/ClsPaginas.vb index e5e7ab30e..ae103e7e7 100644 --- a/App_Code/ClsPaginas.vb +++ b/App_Code/ClsPaginas.vb @@ -55,6 +55,16 @@ Public Class ClsPaginas #Region "Propiedades" + Private Property SubReportData As Modelos.MSubReportData + Get + Return If(IsNothing(ViewState("SubReportData")), Nothing, DirectCast(ViewState("SubReportData"), Modelos.MSubReportData)) + End Get + + Set(value As Modelos.MSubReportData) + ViewState("SubReportData") = value + End Set + End Property + Public Shared ReadOnly Property UrlSitio As String Get If IsNothing(System.Configuration.ConfigurationManager.AppSettings("UrlSitio")) Then @@ -5927,17 +5937,17 @@ Public Class ClsPaginas ''' Opcional Nombre del archivo que se descarga ''' Optional, Formato de Generacion PDF o Excel ''' - Public Sub ImprimirPDF(RutaReporte As String, DataSource As List(Of ReportDataSource), Parametros As List(Of ReportParameter), Optional NombreArchivo As String = "Reporte", Optional Formato As String = "PDF", Optional MR As ReportViewer = Nothing, Optional Content_Disposition As String = "attachment") + Public Sub ImprimirPDF(RutaReporte As String, DataSource As List(Of ReportDataSource), Parametros As List(Of ReportParameter), Optional NombreArchivo As String = "Reporte", Optional Formato As String = "PDF", Optional MR As ReportViewer = Nothing, Optional Content_Disposition As String = "attachment", Optional SubReportData As Modelos.MSubReportData = Nothing) 'limpio ReportViwer - ImprimirbytesPDF(StreamPDF(RutaReporte, DataSource, Parametros, NombreArchivo, Formato, MR), NombreArchivo, Formato, Content_Disposition:=Content_Disposition) + ImprimirbytesPDF(StreamPDF(RutaReporte, DataSource, Parametros, NombreArchivo, Formato, MR, SubReportData), NombreArchivo, Formato, Content_Disposition:=Content_Disposition) End Sub - Public Function StreamPDF(RutaReporte As String, DtDatos As DataTable, Parametros As List(Of ReportParameter), Optional NombreArchivo As String = "Reporte", Optional Formato As String = "PDF", Optional RDSName As String = "DataSet1", Optional MR As ReportViewer = Nothing) As Byte() + Public Function StreamPDF(RutaReporte As String, DtDatos As DataTable, Parametros As List(Of ReportParameter), Optional NombreArchivo As String = "Reporte", Optional Formato As String = "PDF", Optional RDSName As String = "DataSet1", Optional MR As ReportViewer = Nothing, Optional SubReportData As Modelos.MSubReportData = Nothing) As Byte() Dim lrds As New List(Of ReportDataSource) Dim rds As New ReportDataSource rds.Name = RDSName rds.Value = DtDatos lrds.Add(rds) - Return StreamPDF(RutaReporte, lrds, Parametros, NombreArchivo, Formato, MR) + Return StreamPDF(RutaReporte, lrds, Parametros, NombreArchivo, Formato, MR, SubReportData) End Function 'Public Function StreamPDF(RutaReporte As String, DataSource As List(Of ReportDataSource), Parametros As List(Of ReportParameter), Optional NombreArchivo As String = "Reporte", Optional Formato As String = "PDF", Optional MR As ReportViewer = Nothing) As Byte() ' 'limpio ReportViwer @@ -5981,10 +5991,13 @@ Public Class ClsPaginas ' Return Bytes 'End Function - Public Function StreamPDF(RutaReporte As String, DataSource As List(Of ReportDataSource), Parametros As List(Of ReportParameter), Optional NombreArchivo As String = "Reporte", Optional Formato As String = "PDF", Optional MR As ReportViewer = Nothing) As Byte() + Public Function StreamPDF(RutaReporte As String, DataSource As List(Of ReportDataSource), Parametros As List(Of ReportParameter), Optional NombreArchivo As String = "Reporte", Optional Formato As String = "PDF", Optional MR As ReportViewer = Nothing, Optional SubReportData As Modelos.MSubReportData = Nothing) As Byte() 'limpio ReportViwer Dim sw As New System.Diagnostics.Stopwatch() sw.Start() + + Me.SubReportData = Nothing + Dim Bytes As Byte() = Nothing Dim CveUsuario As Integer = 0 @@ -6030,12 +6043,21 @@ Public Class ClsPaginas reportobjects.Add(ojext) End If Next + For Each rpds As ReportParameter In Parametros Dim param As New WSRDLC.ReportParameter param.Name = rpds.Name - param.Values = {rpds.Values(0)} + + 'SI ES TEXTO, QUITAR TABS Y OTROS ESPACIOS QUE DEN PROBLEMAS AL MANDAR LA PETICION + If rpds IsNot Nothing AndAlso rpds.Values IsNot Nothing AndAlso rpds.Values.Count > 0 AndAlso rpds.Values(0) IsNot Nothing AndAlso rpds.Values(0).GetType() = GetType(String) Then + param.Values = {rpds.Values(0).Replace(vbVerticalTab, "")} + Else + param.Values = {rpds.Values(0)} + End If + params.Add(param) Next + Bytes = wsreport.StreamNEWPDFBytes(RutaReporte, ds, reportobjects.ToArray(), params.ToArray(), NombreArchivo, Formato, CveEmpresa, CveUsuario) wsreport = Nothing params = Nothing @@ -6050,9 +6072,16 @@ Public Class ClsPaginas MR.LocalReport.ReportPath = RutaReporte MR.ProcessingMode = ProcessingMode.Local + + If SubReportData IsNot Nothing Then + Me.SubReportData = SubReportData + AddHandler MR.LocalReport.SubreportProcessing, AddressOf LocalReport_SubreportProcessing + End If + MR.LocalReport.EnableExternalImages = True MR.LocalReport.SetParameters(Parametros) MR.LocalReport.Refresh() + Dim Warnings As Warning() = Nothing Dim StreamIds As String() = Nothing Dim MimeType As String = Nothing @@ -6121,6 +6150,14 @@ Public Class ClsPaginas Return Bytes End Function + Private Sub LocalReport_SubreportProcessing(ByVal sender As Object, ByVal e As SubreportProcessingEventArgs) + If SubReportData IsNot Nothing Then + For Each ds In SubReportData.DataSources + e.DataSources.Add(ds) + Next + End If + End Sub + Public Function ImprimirPDFCrystal(RutaReporte As String, DataSource As DataTable, Parametros As List(Of CrystalParametro), Optional NombreArchivo As String = "Reporte", Optional Formato As String = "PDF", Optional MR As ReportDocument = Nothing) As Byte() 'limpio ReportViwer Dim sw As New System.Diagnostics.Stopwatch() @@ -6934,7 +6971,7 @@ Public Class ClsPaginas GuardaLog(String.Format("Ocurrio un error al generar el reporte RLDC {0}", ex)) End Try End Sub - Public Function PdfFactura(ByRef Vta As Modelos.Factura, Optional AplicaPagare As String = "0", Optional Guardar As Boolean = True) As Byte() + Public Function PdfFactura(ByRef Vta As Modelos.Factura, Optional AplicaPagare As String = "0", Optional Guardar As Boolean = True, Optional SubReportData As Modelos.MSubReportData = Nothing) As Byte() Dim retorno As Byte() = Nothing ' Dim ObjVentas As New ClsVentas @@ -7754,6 +7791,13 @@ Public Class ClsPaginas 'Next 'ast.ToString.GuardaLog() + 'PASAR LOS PARAMETROS SI TIENE SUBREPORTE + If SubReportData IsNot Nothing Then + For Each parametro As ReportParameter In SubReportData.Parametros + params.Add(parametro) + Next + End If + Dim Archivo As New System.IO.FileInfo(RutaFormato) If Archivo.Exists Then 'If UsuarioActual.Empresa.Funcionalidad(350) = "1" Then @@ -7762,7 +7806,7 @@ Public Class ClsPaginas 'Else ' retorno = StreamPDF(RutaFormato, lrds, params, NombreArchivo, "PDF", MR:=Nothing) 'End If - retorno = StreamPDF(RutaFormato, lrds, params, NombreArchivo, "PDF", MR:=Nothing) + retorno = StreamPDF(RutaFormato, lrds, params, NombreArchivo, "PDF", MR:=Nothing, SubReportData:=SubReportData) Dim ArchivoPDF As New System.IO.FileInfo(String.Format("{0}PDF\{1}\{2}.pdf", UsuarioActual.Empresa.Ruta, Vta.TipoDocto, Vta.SerieFolio)) If Guardar Then @@ -7792,7 +7836,7 @@ Public Class ClsPaginas 'Else ' retorno = StreamPDF(RutaFormatoDefault, lrds, params, NombreArchivo, "PDF", MR:=Nothing) 'End If - retorno = StreamPDF(RutaFormatoDefault, lrds, params, NombreArchivo, "PDF", MR:=Nothing) + retorno = StreamPDF(RutaFormatoDefault, lrds, params, NombreArchivo, "PDF", MR:=Nothing, SubReportData:=SubReportData) End If Catch ex As Exception GuardaLog(String.Format("Ocurrio un error al generar el reporte RLDC {0}", ex)) @@ -7831,12 +7875,12 @@ Public Class ClsPaginas End If 'SITIO DE PRUEBA EN IIS - Dim Url = New Uri(String.Format("{0}{1}", "http://localhost:2202/", Opcion)) - - Try - Dim dataSourceArray As New JArray() - Dim paramsArray As New JArray() - + Dim Url = New Uri(String.Format("{0}{1}", "http://localhost:2202/", Opcion)) + + Try + Dim dataSourceArray As New JArray() + Dim paramsArray As New JArray() + For Each rds As ReportDataSource In DataSource dataSourceArray.Add(New JObject(New JProperty("Nombre", rds.Name), New JProperty("Valor", JArray.Parse(JsonConvert.SerializeObject(rds.Value))))) Next @@ -7850,10 +7894,10 @@ Public Class ClsPaginas New JProperty("ruta", RutaReporte), New JProperty("parametros", paramsArray), New JProperty("dataSource", dataSourceArray) - ) - - Dim data = New StringContent(payload.ToString(), Encoding.UTF8, "application/json") - + ) + + Dim data = New StringContent(payload.ToString(), Encoding.UTF8, "application/json") + Using httpClient = New HttpClient() Using request = New HttpRequestMessage(HttpMethod.Post, Url) 'request.Headers.Add("ADSToken", Encripta(String.Format("CVEEMPRESA={0}&TICKS={1}&CVEUSUARIO=100", CveEmpresa, DateTime.UtcNow.Ticks))) @@ -7863,10 +7907,10 @@ Public Class ClsPaginas Bytes = response.Content.ReadAsByteArrayAsync().Result End If End Using - End Using - Catch ex As Exception - OnError("Ocurrió un error al descargar la factura", ex) - End Try + End Using + Catch ex As Exception + OnError("Ocurrió un error al descargar la factura", ex) + End Try sw.Stop() diff --git a/App_Code/Modelos.vb b/App_Code/Modelos.vb index 5e3693e62..0e7dfa58f 100644 --- a/App_Code/Modelos.vb +++ b/App_Code/Modelos.vb @@ -35,6 +35,20 @@ Namespace Modelos Public Property CveEmpresa As Integer End Class + + Public Class MSubReportData + Public Sub New() + Me.Nombre = "" + Me.SerieFolio = "" + Me.Parametros = New List(Of ReportParameter) + Me.DataSources = New List(Of ReportDataSource) + End Sub + + Public Property Nombre As String + Public Property SerieFolio As String + Public Property Parametros As List(Of ReportParameter) + Public Property DataSources As List(Of ReportDataSource) + End Class Public Class Evento Public Sub New() diff --git a/App_Code/Timbres.vb b/App_Code/Timbres.vb index 23070a859..3ae384497 100644 --- a/App_Code/Timbres.vb +++ b/App_Code/Timbres.vb @@ -375,7 +375,7 @@ Public Class Timbres Public Property CartaPorte As CFDICartaPorte End Class - Public Shared Function PreParaCartaPorteFactura(CveTimbre As Integer, Obj As Modelos.Factura, UsuarioActual As Usuario) As MMensajeCartaPorte + Public Shared Function PreParaCartaPorteFactura(CveTimbre As Integer, UsuarioActual As Usuario) As MMensajeCartaPorte Dim Retorno As New MMensajeCartaPorte Try @@ -399,7 +399,7 @@ Public Class Timbres Dim ObjGrales As New ClsGenerales - If ObjGrales.GetGralTimbre(CveTimbre, "Man", FI, FF, -1, UsuarioActual.CveEmpresa, -1) Then + If ObjGrales.GetGralTimbre(CveTimbre, "Ing", FI, FF, -1, UsuarioActual.CveEmpresa, -1) Then If ObjGrales.DtResultados.Rows.Count = 1 Then Dim DtMovimientos As DataTable = Nothing @@ -466,16 +466,6 @@ Public Class Timbres End If - If drT("ClaveTipoRemolque1").ToString <> "" Then - Dim Rem1 As New CFDICartaPorteRemolque With {.SubTipoRemolque = drT("ClaveTipoRemolque1"), .Placa = drT("PlacaRemolque1")} - CartaPorte.FiguraTransporte.AutoTransporte.Remolques.Add(Rem1) - End If - - If drT("ClaveTipoRemolque2").ToString <> "" Then - Dim Rem2 As New CFDICartaPorteRemolque With {.SubTipoRemolque = drT("ClaveTipoRemolque2"), .Placa = drT("PlacaRemolque2")} - CartaPorte.FiguraTransporte.AutoTransporte.Remolques.Add(Rem2) - End If - Dim DomOrigen As CFDICartaPorteDomicilio = Nothing DomOrigen = New CFDICartaPorteDomicilio With {.Calle = drT("DirOriCalle").ToString, @@ -569,7 +559,7 @@ Public Class Timbres .ClaveUnidad = drr("SATClaveUM").ToString, .Unidad = drr("UM").ToString, .Dimensiones = drr("Dimensiones").ToString, - .PesoenKg = drr("PesoKg").ToString.ToDecimal, + .PesoenKg = drr("PesoKg").ToString.ToDecimal * drr("Cantidad").ToString.ToDecimal, .MaterialPeligroso = If(drr("ClaveMaterialPeligroso").ToString <> "", "Sí", ""), .ClaveMaterialPeligroso = drr("ClaveMaterialPeligroso").ToString, .Embalaje = drr("ClaveEmbalaje").ToString, @@ -580,7 +570,7 @@ Public Class Timbres .UUIDComercioExt = "" } - Dim DetalleMercancia As New CFDICartaPorteMercanciaDetalleMercancia With {.PesoNeto = drr("PesoKg").ToString.ToDecimal, .NumPiezas = drr("Cantidad").ToString.ToDecimal} + Dim DetalleMercancia As New CFDICartaPorteMercanciaDetalleMercancia With {.PesoNeto = drr("PesoKg").ToString.ToDecimal * drr("Cantidad").ToString.ToDecimal, .NumPiezas = drr("Cantidad").ToString.ToDecimal} conceptoCarta.DetalleMercancia = DetalleMercancia Dim MercanciaTransporta As New CFDICartaPorteMercanciaTransporta With {.Cantidad = drr("Cantidad").ToString.ToDecimal, .IDOrigen = "OR000001", .IDDestino = "DE000001"} diff --git a/Compras/PopUpVerFactura.aspx.vb b/Compras/PopUpVerFactura.aspx.vb index 887f721e6..2c3283f4a 100644 --- a/Compras/PopUpVerFactura.aspx.vb +++ b/Compras/PopUpVerFactura.aspx.vb @@ -111,6 +111,11 @@ Partial Class PopUpVerFactura End If End If + + If Request("CVETIMBRE") IsNot Nothing AndAlso Request("CVETIMBRE") IsNot Nothing Then + ImprimeFormatoCartaPorteTimbrado(Request("CVETIMBRE").ToString.ToEntero) + End If + If Request("RFC") IsNot Nothing AndAlso Request("File") IsNot Nothing Then Dim Path As String = String.Format("{0}Compras\{1}\{2}", UsuarioActual.Empresa.Ruta, Request("RFC"), Request("File")) Dim Archivo As New System.IO.FileInfo(Path) @@ -1563,465 +1568,498 @@ Partial Class PopUpVerFactura End Function Private Sub ImprimeFormatoCartaPorteTimbrado(CveTimbre As Integer) - If CveTimbre > 0 Then - - '01 Autotransporte Federal - '02 Transporte Marítimo - '03 Transporte Aéreo - '04 Transporte Ferroviario - '05 Ducto - Dim HtTransporte As New Hashtable() - HtTransporte.Add("01", "Autotransporte Federal") - HtTransporte.Add("02", "Transporte Marítimo") - HtTransporte.Add("03", "Transporte Aéreo") - HtTransporte.Add("04", "Transporte Ferroviario") - HtTransporte.Add("05", "Ducto") - - 'EMISOR - Dim LugarExpedicion As String = "" - Dim ImgCBB As String = "" - 'COMPROBANTE - Dim SerieFolio As String = "" - Dim Telefono As String = "" - Dim SubTotal As Decimal = 0 - Dim Descuentos As Decimal = 0 - Dim Total As Decimal = 0 - 'DATOS DEL CLIENTE - Dim ClienteRFC As String = "" - Dim ClienteNombre As String = "" - Dim ClienteUsoCFDi As String = "" - - 'TRANSPORTE - Dim MedioTransporte As String = "" - Dim TransporteInternacional As String = "" - Dim PermisoSTCC As String = "" - Dim NumPermiso As String = "" - Dim AseguradoraRespCivil As String = "" - Dim NumPolizaSeguroRespCivil As String = "" - Dim NombreAseguradoraMedioAmbiente As String = "" - Dim NumPolizaSeguroMedioAmbiente As String = "" - Dim NombreAseguradoraCarga As String = "" - Dim NumPolizaSeguroCarga As String = "" - - Dim RemolquePlaca1 As String = "" - Dim RemolquePlaca2 As String = "" - Dim RemolqueSubtimo1 As String = "" - Dim RemolqueSubtimo2 As String = "" - - Dim PlacaVM As String = "" - Dim AnioModeloVM As String = "" - 'TIMBRADO - Dim FolioFiscal As String = "" - Dim NoCertificadoSAT As String = "" - Dim CadenaOriginal As String = "" - Dim NoSerieCertificado As String = "" - Dim FechaCertificacion As DateTime = Nothing - Dim SelloCFDi As String = "" - Dim SelloSAT As String = "" - Dim TipoDocto As String = "" - - Dim ObjInv As New ClsGenerales - - If ObjInv.GetGralTimbre(CveTimbre, "-1", MinFecha, MaxFecha, -1, UsuarioActual.CveEmpresa, -1) Then - If ObjInv.DtResultados.Rows.Count > 0 Then - Dim Dr As DataRow = ObjInv.DtResultados.Rows(0) - If Dr IsNot Nothing Then - SerieFolio = Dr("SerieFolio").ToString - Telefono = Dr("FiguraTelefono").ToString - TipoDocto = Dr("TipoDocto").ToString - End If - End If - End If - ObjInv.Dispose() - - Dim DtConceptos As New DataTable() - DtConceptos.Columns.Add(New DataColumn("Cantidad", GetType(Decimal))) - DtConceptos.Columns.Add(New DataColumn("Unidad", GetType(String))) - DtConceptos.Columns.Add(New DataColumn("Descripcion", GetType(String))) - DtConceptos.Columns.Add(New DataColumn("ValorUnitario", GetType(Decimal))) - DtConceptos.Columns.Add(New DataColumn("Importe", GetType(Decimal))) - - Dim DtUbicaciones As New DataTable() - DtUbicaciones.Columns.Add(New DataColumn("Distancia", GetType(String))) - DtUbicaciones.Columns.Add(New DataColumn("TipoUbicacion", GetType(String))) - DtUbicaciones.Columns.Add(New DataColumn("RFC", GetType(String))) - DtUbicaciones.Columns.Add(New DataColumn("Nombre", GetType(String))) - DtUbicaciones.Columns.Add(New DataColumn("FechaHoraSalida", GetType(DateTime))) - DtUbicaciones.Columns.Add(New DataColumn("Direccion", GetType(String))) - - Dim DtMercancias As New DataTable() - DtMercancias.Columns.Add(New DataColumn("Cantidad", GetType(Decimal))) - DtMercancias.Columns.Add(New DataColumn("UnidadMedida", GetType(String))) - DtMercancias.Columns.Add(New DataColumn("Descripcion", GetType(String))) - DtMercancias.Columns.Add(New DataColumn("PesoEnKg", GetType(String))) - - DtMercancias.Columns.Add(New DataColumn("CveMaterialPeligroso", GetType(String))) - DtMercancias.Columns.Add(New DataColumn("Embalaje", GetType(String))) - - Dim DtOperadores As New DataTable() - DtOperadores.Columns.Add(New DataColumn("RFC", GetType(String))) - DtOperadores.Columns.Add(New DataColumn("NumLicencia", GetType(String))) - DtOperadores.Columns.Add(New DataColumn("NombreOperador", GetType(String))) - - Dim DTRelacionados As New DataTable() - DTRelacionados.Columns.Add(New DataColumn("Relacion", GetType(String))) - DTRelacionados.Columns.Add(New DataColumn("UUID", GetType(String))) - - - Dim XMLDoc As New XmlDocument - Dim Path As String = String.Format("{0}\{1}\{2}\{3}.{4}", UsuarioActual.Empresa.Ruta, "XML", TipoDocto, String.Format("{0}", SerieFolio), "xml") - Dim Archivo As New System.IO.FileInfo(Path) - - If Archivo.Exists Then - Try - XMLDoc.Load(Path) - Catch ex As Exception - Try - Dim oReader = New StreamReader(Path, Encoding.GetEncoding("ISO-8859-1")) - XMLDoc.Load(oReader) - oReader.Dispose() - Catch ex2 As Exception - GuardaLog("Error al intentar leer el XML del SAT. Error:" & ex2.ToString()) - End Try - End Try - End If - - If XMLDoc IsNot Nothing AndAlso Archivo.Exists Then - - Dim RutaCBB As String = String.Format("{0}\CBB\{1}.jpg", UsuarioActual.Empresa.Ruta, SerieFolio) - Dim ImagenCBB As New System.IO.FileInfo(RutaCBB) - - Dim nodo As XmlNode = XMLDoc.DocumentElement - - Dim Prefijo As String = If(XMLDoc.DocumentElement.Prefix = "", "cfd", XMLDoc.DocumentElement.Prefix) - Dim cfdVer As String = "http://www.sat.gob.mx/cfd/3" - Dim namespaces As New XmlNamespaceManager(XMLDoc.NameTable) - - If Prefijo.ToLower <> "cfdi" Then cfdVer = "http://www.sat.gob.mx/cfd/2" - namespaces.AddNamespace(Prefijo, cfdVer) - namespaces.AddNamespace("tfd", "http://www.sat.gob.mx/TimbreFiscalDigital") - namespaces.AddNamespace("implocal", "http://www.sat.gob.mx/implocal") - namespaces.AddNamespace("registrofiscal", "http://www.sat.gob.mx/registrofiscal") - namespaces.AddNamespace("cartaporte", "http://www.sat.gob.mx/CartaPorte") - namespaces.AddNamespace("cartaporte20", "http://www.sat.gob.mx/CartaPorte20") - - Dim nodeComprobante As XmlNode = XMLDoc.SelectSingleNode(String.Format("//{0}:Comprobante", Prefijo), namespaces) - If nodeComprobante IsNot Nothing Then - LugarExpedicion = ValorXML(nodeComprobante, "LugarExpedicion") - SubTotal = ValorXML(nodeComprobante, "SubTotal").ToDecimal() - Total = ValorXML(nodeComprobante, "Total").ToDecimal() - End If - - Dim nodeCliente As XmlNode = XMLDoc.SelectSingleNode(String.Format("//{0}:Receptor", Prefijo), namespaces) - - If nodeCliente IsNot Nothing Then - ClienteRFC = ValorXML(nodeCliente, "RFC") - ClienteNombre = ValorXML(nodeCliente, "Nombre") - Dim UsoCFDI = ValorXML(nodeCliente, "UsoCFDI") - ClienteUsoCFDi = String.Format("{0} - {1}", UsoCFDI, GlobalDTSATUsosCFDI().FiltroPrimeroValor("Descripcion", String.Format("UsoCFDI = '{0}'", UsoCFDI))) - End If - - Dim nodeConceptos As XmlNode = XMLDoc.SelectSingleNode(String.Format("//{0}:Conceptos", Prefijo), namespaces) - - If nodeConceptos IsNot Nothing Then - For Each node As XmlNode In nodeConceptos.ChildNodes - Dim Row As DataRow = DtConceptos.NewRow - - Row("Cantidad") = ValorXML(node, "Cantidad", "") - Row("Unidad") = ValorXML(node, "Unidad", "") - Row("Descripcion") = ValorXML(node, "Descripcion", "") - Row("ValorUnitario") = ValorXML(node, "ValorUnitario", "") - Row("Importe") = ValorXML(node, "Importe", "") - - DtConceptos.Rows.Add(Row) - Next - End If - - - Dim nodeComp As XmlNode = XMLDoc.SelectSingleNode(String.Format("//{0}:Complemento", Prefijo), namespaces) - - Dim nodeCartaPorte As XmlNode = nodeComp.SelectSingleNode(String.Format("//{0}:CartaPorte", "cartaporte20"), namespaces) - If nodeCartaPorte IsNot Nothing Then - TransporteInternacional = ValorXML(nodeCartaPorte, "TranspInternac", "") - End If - - Dim nodeAutotransporteFederal As XmlNode = nodeComp.SelectSingleNode(String.Format("//{0}:Autotransporte", "cartaporte20"), namespaces) - If nodeAutotransporteFederal IsNot Nothing Then - PermisoSTCC = ValorXML(nodeAutotransporteFederal, "PermSCT", "") - NumPermiso = ValorXML(nodeAutotransporteFederal, "NumPermisoSCT", "") - End If - - Dim nodeIdentificacionVehicular As XmlNode = nodeComp.SelectSingleNode(String.Format("//{0}:IdentificacionVehicular", "cartaporte20"), namespaces) - If nodeIdentificacionVehicular IsNot Nothing Then - PlacaVM = ValorXML(nodeIdentificacionVehicular, "PlacaVM", "") - AnioModeloVM = ValorXML(nodeIdentificacionVehicular, "AnioModeloVM", "") - End If - - Dim nodeSeguros As XmlNode = nodeComp.SelectSingleNode(String.Format("//{0}:Seguros", "cartaporte20"), namespaces) - If nodeIdentificacionVehicular IsNot Nothing Then - AseguradoraRespCivil = ValorXML(nodeSeguros, "AseguraRespCivil", "") - NumPolizaSeguroRespCivil = ValorXML(nodeSeguros, "PolizaRespCivil", "") - - 'Por Definir de donde sale - NombreAseguradoraMedioAmbiente = ValorXML(nodeSeguros, "AseguraMedAmbiente", "") - NumPolizaSeguroMedioAmbiente = ValorXML(nodeSeguros, "PolizaMedAmbiente", "") - NombreAseguradoraCarga = ValorXML(nodeSeguros, "AseguraCarga", "") - NumPolizaSeguroCarga = ValorXML(nodeSeguros, "PolizaCarga", "") - End If - - - Dim nodeRemolques As XmlNode = nodeComp.SelectSingleNode(String.Format("//{0}:Remolques", "cartaporte20"), namespaces) - - If nodeRemolques IsNot Nothing Then - If nodeRemolques.ChildNodes.Count = 1 Then - RemolquePlaca1 = ValorXML(nodeRemolques.ChildNodes(0), "Placa", "") - RemolqueSubtimo1 = ValorXML(nodeRemolques.ChildNodes(0), "SubTipoRem", "") - ElseIf nodeRemolques.ChildNodes.Count > 1 Then - RemolquePlaca1 = ValorXML(nodeRemolques.ChildNodes(0), "Placa", "") - RemolqueSubtimo1 = ValorXML(nodeRemolques.ChildNodes(0), "SubTipoRem", "") - RemolquePlaca2 = ValorXML(nodeRemolques.ChildNodes(1), "Placa", "") - RemolqueSubtimo2 = ValorXML(nodeRemolques.ChildNodes(1), "SubTipoRem", "") - End If - End If - - 'Dim nodeFiguraTransporte As XmlNode = nodeComp.SelectSingleNode(String.Format("//{0}:FiguraTransporte", "cartaporte20"), namespaces) - 'If nodeFiguraTransporte IsNot Nothing Then - ' Dim CveTransporte As String = ValorXML(nodeFiguraTransporte, "TipoFigura", "") - ' MedioTransporte = String.Format("{0} - {1}", CveTransporte, HtTransporte(CveTransporte).ToString()) - 'End If - - Dim nodeMercancias As XmlNodeList = nodeComp.SelectNodes(String.Format("//{0}:Mercancia", "cartaporte20"), namespaces) - For Each node As XmlNode In nodeMercancias - Dim Row As DataRow = DtMercancias.NewRow - - Row("Cantidad") = ValorXML(node, "Cantidad", "") - Row("UnidadMedida") = ValorXML(node, "Unidad", "") - Row("Descripcion") = ValorXML(node, "Descripcion", "") - Row("PesoEnKg") = ValorXML(node, "PesoEnKg", "") - - Row("CveMaterialPeligroso") = ValorXML(node, "CveMaterialPeligroso", "") - Row("Embalaje") = ValorXML(node, "Embalaje", "") - - DtMercancias.Rows.Add(Row) - Next - - Dim nodeOperadores As XmlNodeList = nodeComp.SelectNodes(String.Format("//{0}:TiposFigura", "cartaporte20"), namespaces) - For Each node As XmlNode In nodeOperadores - Dim Row As DataRow = DtOperadores.NewRow - - Row("RFC") = ValorXML(node, "RFCFigura", "") - Row("NumLicencia") = ValorXML(node, "NumLicencia", "") - Row("NombreOperador") = ValorXML(node, "NombreFigura", "") - - DtOperadores.Rows.Add(Row) - Next - - - Dim nodeUbicaciones As XmlNodeList = nodeComp.SelectNodes(String.Format("//{0}:Ubicacion", "cartaporte20"), namespaces) - For Each node As XmlNode In nodeUbicaciones - Dim Row As DataRow = DtUbicaciones.NewRow - - Row("Distancia") = ValorXML(node, "DistanciaRecorrida", "") - Row("TipoUbicacion") = ValorXML(node, "TipoUbicacion", "") - Row("FechaHoraSalida") = ValorXML(node, "FechaHoraSalidaLlegada", "") - Row("RFC") = ValorXML(node, "RFCRemitenteDestinatario", "") - Row("Nombre") = ValorXML(node, "NombreRemitenteDestinatario", "") - - Dim nodeDomicilio = node.ChildNodes.Cast(Of XmlNode).FirstOrDefault(Function(x) x.Name = "cartaporte20:Domicilio") 'node.SelectSingleNode(String.Format("//{0}:Domicilio", "cartaporte"), namespaces) - If nodeDomicilio IsNot Nothing Then - - Dim Estado As String = "" - Dim Municipio As String = "" - Dim Colonia As String = "" - Dim calle = ValorXML(nodeDomicilio, "Calle", "") - Dim CP = ValorXML(nodeDomicilio, "CodigoPostal", "") - - Dim dr As DataRow = GlobalDTGralColonias(ValorXML(nodeDomicilio, "Estado", ""), ValorXML(nodeDomicilio, "Municipio", ""), ValorXML(nodeDomicilio, "Colonia", "")).FiltroPrimero("") - If dr IsNot Nothing Then - Estado = dr("NombreEstado").ToString - Municipio = dr("NombreMunicipio").ToString - Colonia = dr("NombreAsentamiento").ToString - End If - Row("Direccion") = String.Format("{0} Col.{1},{2},{3}. CP {4}", calle, Colonia, Municipio, Estado, CP) - End If - - - DtUbicaciones.Rows.Add(Row) - Next - - - - Dim nodeRelacion = XMLDoc.SelectSingleNode(String.Format("//{0}:CfdiRelacionados", Prefijo), namespaces) - - If nodeRelacion IsNot Nothing Then - Dim RelacionCodigo As String = ValorXML(nodeRelacion, "TipoRelacion") - Dim Relacion As String = "" - - Select Case RelacionCodigo - Case "01" - Relacion = "01 - Nota de crédito de los documentos relacionados" - Case "02" - Relacion = "02 - Nota de débito de los documentos relacionados" - Case "03" - Relacion = "03 - Devolución de mercancía sobre facturas o traslados previos" - Case "04" - Relacion = "04 - Sustitución de los CFDI previos" - Case "05" - Relacion = "05 - Traslados de mercancias facturados previamente" - Case "06" - Relacion = "06 - Factura generada por los traslados previos" - Case "07" - Relacion = "07 - CFDI por aplicación de anticipo" - Case "08" - Relacion = "08 - Factura generada por pagos en parcialidades" - Case "09" - Relacion = "09 - Factura generada por pagos diferidos" - - End Select - - Dim nodoDocumentosRealcionados = XMLDoc.SelectNodes(String.Format("//{0}:CfdiRelacionados", Prefijo), namespaces) - For Each node As XmlNode In nodoDocumentosRealcionados - - Dim nRow As DataRow = DTRelacionados.NewRow - nRow("Relacion") = Relacion - - Try - Dim nodoUUID = node.ChildNodes.Cast(Of XmlNode).FirstOrDefault(Function(x) x.Name = "cfdi:CfdiRelacionado") - nRow("UUID") = ValorXML(nodoUUID, "UUID", "") - Catch ex As Exception - nRow("UUID") = "" - End Try - - DTRelacionados.Rows.Add(nRow) - Next - End If - - - - - Dim nodeTFD As XmlNode = nodeComp.SelectSingleNode(String.Format("//{0}:TimbreFiscalDigital", "tfd"), namespaces) - If nodeTFD IsNot Nothing Then - FolioFiscal = ValorXML(nodeTFD, "UUID", "") - NoSerieCertificado = ValorXML(nodeTFD, "NoCertificadoSAT", "") - FechaCertificacion = ValorXML(nodeTFD, "FechaTimbrado", "").ToDateTime - SelloCFDi = ValorXML(nodeTFD, "SelloCFD", "") - SelloSAT = ValorXML(nodeTFD, "SelloSAT", "") - NoCertificadoSAT = ValorXML(nodeTFD, "NoCertificadoSAT", "") - - CadenaOriginal = "||1.0|" + FolioFiscal + "|" + FechaCertificacion.ToString("yyyy-MM-dd") + "T" + FechaCertificacion.ToString("HH:mm:ss") + "|" + SelloCFDi + "|" + NoSerieCertificado + "||" - End If - - If Not ImagenCBB.Exists Then - Dim CBB As New ClbNegBICFDv3_2.ClsNegCBBGenerar() - CBB.GenerarCBB(UsuarioActual.Empresa.RFC, ClienteRFC, Total, FolioFiscal, RutaCBB) - End If - - - ImagenCBB = New System.IO.FileInfo(RutaCBB) - - If ImagenCBB.Exists Then - ImgCBB = String.Format("file://{0}", ImagenCBB.FullName) - Else - ImgCBB = "" - End If - - End If - - If DtConceptos.Rows.Count > 0 Then - Dim params As New List(Of ReportParameter) - Dim Imagen As New System.IO.FileInfo(String.Format("{0}/Logo.png", UsuarioActual.Empresa.Ruta)) - - If Imagen.Exists Then - params.Add(New ReportParameter("LogoPath", $"file://{Imagen.FullName}")) - Else - params.Add(New ReportParameter("LogoPath", "")) - End If - 'EMPRESA - params.Add(New ReportParameter("NombreEmpresa", UsuarioActual.Empresa.Empresa)) - params.Add(New ReportParameter("RegimenFiscal", UsuarioActual.Empresa.Regimen)) - params.Add(New ReportParameter("UsuarioImprimio", UsuarioActual.Nombre)) - params.Add(New ReportParameter("FechaImpresion", Now.ToDateTime.ToShortDateString)) - params.Add(New ReportParameter("DomicilioFiscal", $"{UsuarioActual.Empresa.Direccion}, {UsuarioActual.Empresa.Colonia}, {UsuarioActual.Empresa.Localidad}, {UsuarioActual.Empresa.Estado}, Tel. {Telefono}")) - params.Add(New ReportParameter("SerieFolio", SerieFolio)) - params.Add(New ReportParameter("RFC", UsuarioActual.Empresa.RFC)) - params.Add(New ReportParameter("DomicilioExpedicion", LugarExpedicion)) - 'CLIENTE - params.Add(New ReportParameter("ClienteNombre", ClienteNombre)) - params.Add(New ReportParameter("ClienteRFC", ClienteRFC)) - params.Add(New ReportParameter("UsoCFDi", ClienteUsoCFDi)) - 'TRANSPORTE - params.Add(New ReportParameter("MedioTransporte", MedioTransporte)) - params.Add(New ReportParameter("TransporteInternacional", TransporteInternacional)) - params.Add(New ReportParameter("PermisoSTCC", PermisoSTCC)) - params.Add(New ReportParameter("NumPermiso", NumPermiso)) - - params.Add(New ReportParameter("Aseguradora", AseguradoraRespCivil)) - params.Add(New ReportParameter("NumPoliza", NumPolizaSeguroRespCivil)) - - params.Add(New ReportParameter("NombreAseguradoraMedioAmbiente", NombreAseguradoraMedioAmbiente)) - params.Add(New ReportParameter("NumPolizaSeguroMedioAmbiente", NumPolizaSeguroMedioAmbiente)) - - params.Add(New ReportParameter("NombreAseguradoraCarga", NombreAseguradoraCarga)) - params.Add(New ReportParameter("NumPolizaSeguroCarga", NumPolizaSeguroCarga)) - - params.Add(New ReportParameter("PlacaVM", PlacaVM)) - params.Add(New ReportParameter("AnioVM", AnioModeloVM)) - 'TIMBRADO - params.Add(New ReportParameter("FolioFiscal", FolioFiscal)) - params.Add(New ReportParameter("QR", ImgCBB)) - params.Add(New ReportParameter("SelloCFDI", SelloCFDi)) - params.Add(New ReportParameter("CertificadoContribuyente", NoCertificadoSAT)) - params.Add(New ReportParameter("CadenaOriginal", CadenaOriginal)) - params.Add(New ReportParameter("SerieCertificadoSAT", NoSerieCertificado)) - params.Add(New ReportParameter("FechaCertificacion", FechaCertificacion.ToString("dd/MM/yyyy HH:mm:ss"))) - params.Add(New ReportParameter("SelloSAT", SelloSAT)) - 'TOTALES - params.Add(New ReportParameter("SubTotal", SubTotal.ToString())) - params.Add(New ReportParameter("Descuentos", Descuentos.ToString())) - params.Add(New ReportParameter("Total", Total.ToString())) - - params.Add(New ReportParameter("RemolquePlaca1", RemolquePlaca1)) - params.Add(New ReportParameter("RemolqueSubtimo1", RemolqueSubtimo1)) - params.Add(New ReportParameter("RemolquePlaca2", RemolquePlaca2)) - params.Add(New ReportParameter("RemolqueSubtimo2", RemolqueSubtimo2)) - - - ' [@CertificadoContribuyente] - '[@CadenaOriginal] - - Dim lrds As New List(Of ReportDataSource) - - Dim rds As New ReportDataSource - rds.Name = "DataSet1" - rds.Value = DtConceptos - lrds.Add(rds) - - Dim rds2 As New ReportDataSource - rds2.Name = "DataSet2" - rds2.Value = DtUbicaciones - lrds.Add(rds2) - - Dim rds3 As New ReportDataSource - rds3.Name = "DataSet3" - rds3.Value = DtMercancias - lrds.Add(rds3) - - Dim rds4 As New ReportDataSource - rds4.Name = "DataSet4" - rds4.Value = DtOperadores - lrds.Add(rds4) - - - Dim rds5 As New ReportDataSource - rds5.Name = "DataSet5" - rds5.Value = DTRelacionados - lrds.Add(rds5) - - ImprimirPDF("Empresas/Grales/Formatos/CartaPorteTimbrado.rdlc", lrds, params, SerieFolio) - End If + Dim resp = PreParaImpresionCartaPorte(CveTimbre) + If resp.DataSources.Count > 0 AndAlso resp.Parametros.Count > 0 Then + ImprimirPDF("Empresas/Grales/Formatos/CartaPorteTimbrado.rdlc", resp.DataSources, resp.Parametros, resp.SerieFolio) End If End Sub + Private Function PreParaImpresionCartaPorte(CveTimbre As Integer, Optional AplicaSubReporte As Boolean = False) As Modelos.MSubReportData + Dim retorno As New Modelos.MSubReportData + retorno.Nombre = "CartaPorte" + Try + If CveTimbre > 0 Then + Dim params As New List(Of ReportParameter) + '01 Autotransporte Federal + '02 Transporte Marítimo + '03 Transporte Aéreo + '04 Transporte Ferroviario + '05 Ducto + Dim HtTransporte As New Hashtable() + HtTransporte.Add("01", "Autotransporte Federal") + HtTransporte.Add("02", "Transporte Marítimo") + HtTransporte.Add("03", "Transporte Aéreo") + HtTransporte.Add("04", "Transporte Ferroviario") + HtTransporte.Add("05", "Ducto") + + 'EMISOR + Dim LugarExpedicion As String = "" + Dim ImgCBB As String = "" + 'COMPROBANTE + Dim SerieFolio As String = "" + Dim Telefono As String = "" + Dim SubTotal As Decimal = 0 + Dim Descuentos As Decimal = 0 + Dim Total As Decimal = 0 + 'DATOS DEL CLIENTE + Dim ClienteRFC As String = "" + Dim ClienteNombre As String = "" + Dim ClienteUsoCFDi As String = "" + + 'TRANSPORTE + Dim MedioTransporte As String = "" + Dim TransporteInternacional As String = "" + Dim PermisoSTCC As String = "" + Dim NumPermiso As String = "" + Dim AseguradoraRespCivil As String = "" + Dim NumPolizaSeguroRespCivil As String = "" + Dim NombreAseguradoraMedioAmbiente As String = "" + Dim NumPolizaSeguroMedioAmbiente As String = "" + Dim NombreAseguradoraCarga As String = "" + Dim NumPolizaSeguroCarga As String = "" + + Dim RemolquePlaca1 As String = "" + Dim RemolquePlaca2 As String = "" + Dim RemolqueSubtimo1 As String = "" + Dim RemolqueSubtimo2 As String = "" + + Dim PlacaVM As String = "" + Dim AnioModeloVM As String = "" + 'TIMBRADO + Dim FolioFiscal As String = "" + Dim NoCertificadoSAT As String = "" + Dim CadenaOriginal As String = "" + Dim NoSerieCertificado As String = "" + Dim FechaCertificacion As DateTime = Nothing + Dim SelloCFDi As String = "" + Dim SelloSAT As String = "" + Dim TipoDocto As String = "" + + Dim ObjInv As New ClsGenerales + + If ObjInv.GetGralTimbre(CveTimbre, "-1", MinFecha, MaxFecha, -1, UsuarioActual.CveEmpresa, -1) Then + If ObjInv.DtResultados.Rows.Count > 0 Then + Dim Dr As DataRow = ObjInv.DtResultados.Rows(0) + If Dr IsNot Nothing Then + SerieFolio = Dr("SerieFolio").ToString + Telefono = Dr("FiguraTelefono").ToString + TipoDocto = Dr("TipoDocto").ToString + End If + End If + End If + ObjInv.Dispose() + + retorno.SerieFolio = SerieFolio + + Dim DtConceptos As New DataTable() + DtConceptos.Columns.Add(New DataColumn("Cantidad", GetType(Decimal))) + DtConceptos.Columns.Add(New DataColumn("Unidad", GetType(String))) + DtConceptos.Columns.Add(New DataColumn("Descripcion", GetType(String))) + DtConceptos.Columns.Add(New DataColumn("ValorUnitario", GetType(Decimal))) + DtConceptos.Columns.Add(New DataColumn("Importe", GetType(Decimal))) + + Dim DtUbicaciones As New DataTable() + DtUbicaciones.Columns.Add(New DataColumn("Distancia", GetType(String))) + DtUbicaciones.Columns.Add(New DataColumn("TipoUbicacion", GetType(String))) + DtUbicaciones.Columns.Add(New DataColumn("RFC", GetType(String))) + DtUbicaciones.Columns.Add(New DataColumn("Nombre", GetType(String))) + DtUbicaciones.Columns.Add(New DataColumn("FechaHoraSalida", GetType(DateTime))) + DtUbicaciones.Columns.Add(New DataColumn("Direccion", GetType(String))) + + Dim DtMercancias As New DataTable() + DtMercancias.Columns.Add(New DataColumn("Cantidad", GetType(Decimal))) + DtMercancias.Columns.Add(New DataColumn("UnidadMedida", GetType(String))) + DtMercancias.Columns.Add(New DataColumn("Descripcion", GetType(String))) + DtMercancias.Columns.Add(New DataColumn("PesoEnKg", GetType(String))) + + DtMercancias.Columns.Add(New DataColumn("CveMaterialPeligroso", GetType(String))) + DtMercancias.Columns.Add(New DataColumn("Embalaje", GetType(String))) + + Dim DtOperadores As New DataTable() + DtOperadores.Columns.Add(New DataColumn("RFC", GetType(String))) + DtOperadores.Columns.Add(New DataColumn("NumLicencia", GetType(String))) + DtOperadores.Columns.Add(New DataColumn("NombreOperador", GetType(String))) + + Dim DTRelacionados As New DataTable() + DTRelacionados.Columns.Add(New DataColumn("Relacion", GetType(String))) + DTRelacionados.Columns.Add(New DataColumn("UUID", GetType(String))) + + + Dim XMLDoc As New XmlDocument + Dim Path As String = String.Format("{0}\{1}\{2}\{3}.{4}", UsuarioActual.Empresa.Ruta, "XML", TipoDocto, String.Format("{0}", SerieFolio), "xml") + Dim Archivo As New System.IO.FileInfo(Path) + + If Archivo.Exists Then + Try + XMLDoc.Load(Path) + Catch ex As Exception + Try + Dim oReader = New StreamReader(Path, Encoding.GetEncoding("ISO-8859-1")) + XMLDoc.Load(oReader) + oReader.Dispose() + Catch ex2 As Exception + GuardaLog("Error al intentar leer el XML del SAT. Error:" & ex2.ToString()) + End Try + End Try + End If + + If XMLDoc IsNot Nothing AndAlso Archivo.Exists Then + + Dim RutaCBB As String = String.Format("{0}\CBB\{1}.jpg", UsuarioActual.Empresa.Ruta, SerieFolio) + Dim ImagenCBB As New System.IO.FileInfo(RutaCBB) + + Dim nodo As XmlNode = XMLDoc.DocumentElement + + Dim Prefijo As String = If(XMLDoc.DocumentElement.Prefix = "", "cfd", XMLDoc.DocumentElement.Prefix) + Dim cfdVer As String = "http://www.sat.gob.mx/cfd/3" + Dim namespaces As New XmlNamespaceManager(XMLDoc.NameTable) + + If Prefijo.ToLower <> "cfdi" Then cfdVer = "http://www.sat.gob.mx/cfd/2" + namespaces.AddNamespace(Prefijo, cfdVer) + namespaces.AddNamespace("tfd", "http://www.sat.gob.mx/TimbreFiscalDigital") + namespaces.AddNamespace("implocal", "http://www.sat.gob.mx/implocal") + namespaces.AddNamespace("registrofiscal", "http://www.sat.gob.mx/registrofiscal") + namespaces.AddNamespace("cartaporte", "http://www.sat.gob.mx/CartaPorte") + namespaces.AddNamespace("cartaporte20", "http://www.sat.gob.mx/CartaPorte20") + + Dim nodeComprobante As XmlNode = XMLDoc.SelectSingleNode(String.Format("//{0}:Comprobante", Prefijo), namespaces) + If nodeComprobante IsNot Nothing Then + LugarExpedicion = ValorXML(nodeComprobante, "LugarExpedicion") + SubTotal = ValorXML(nodeComprobante, "SubTotal").ToDecimal() + Total = ValorXML(nodeComprobante, "Total").ToDecimal() + End If + + Dim nodeCliente As XmlNode = XMLDoc.SelectSingleNode(String.Format("//{0}:Receptor", Prefijo), namespaces) + + If nodeCliente IsNot Nothing Then + ClienteRFC = ValorXML(nodeCliente, "RFC") + ClienteNombre = ValorXML(nodeCliente, "Nombre") + Dim UsoCFDI = ValorXML(nodeCliente, "UsoCFDI") + ClienteUsoCFDi = String.Format("{0} - {1}", UsoCFDI, GlobalDTSATUsosCFDI().FiltroPrimeroValor("Descripcion", String.Format("UsoCFDI = '{0}'", UsoCFDI))) + End If + + Dim nodeConceptos As XmlNode = XMLDoc.SelectSingleNode(String.Format("//{0}:Conceptos", Prefijo), namespaces) + + If nodeConceptos IsNot Nothing Then + For Each node As XmlNode In nodeConceptos.ChildNodes + Dim Row As DataRow = DtConceptos.NewRow + + Row("Cantidad") = ValorXML(node, "Cantidad", "") + Row("Unidad") = ValorXML(node, "Unidad", "") + Row("Descripcion") = ValorXML(node, "Descripcion", "") + Row("ValorUnitario") = ValorXML(node, "ValorUnitario", "") + Row("Importe") = ValorXML(node, "Importe", "") + + DtConceptos.Rows.Add(Row) + Next + End If + + + Dim nodeComp As XmlNode = XMLDoc.SelectSingleNode(String.Format("//{0}:Complemento", Prefijo), namespaces) + + Dim nodeCartaPorte As XmlNode = nodeComp.SelectSingleNode(String.Format("//{0}:CartaPorte", "cartaporte20"), namespaces) + If nodeCartaPorte IsNot Nothing Then + TransporteInternacional = ValorXML(nodeCartaPorte, "TranspInternac", "") + End If + + Dim nodeAutotransporteFederal As XmlNode = nodeComp.SelectSingleNode(String.Format("//{0}:Autotransporte", "cartaporte20"), namespaces) + If nodeAutotransporteFederal IsNot Nothing Then + PermisoSTCC = ValorXML(nodeAutotransporteFederal, "PermSCT", "") + NumPermiso = ValorXML(nodeAutotransporteFederal, "NumPermisoSCT", "") + End If + + Dim nodeIdentificacionVehicular As XmlNode = nodeComp.SelectSingleNode(String.Format("//{0}:IdentificacionVehicular", "cartaporte20"), namespaces) + If nodeIdentificacionVehicular IsNot Nothing Then + PlacaVM = ValorXML(nodeIdentificacionVehicular, "PlacaVM", "") + AnioModeloVM = ValorXML(nodeIdentificacionVehicular, "AnioModeloVM", "") + End If + + Dim nodeSeguros As XmlNode = nodeComp.SelectSingleNode(String.Format("//{0}:Seguros", "cartaporte20"), namespaces) + If nodeIdentificacionVehicular IsNot Nothing Then + AseguradoraRespCivil = ValorXML(nodeSeguros, "AseguraRespCivil", "") + NumPolizaSeguroRespCivil = ValorXML(nodeSeguros, "PolizaRespCivil", "") + + 'Por Definir de donde sale + NombreAseguradoraMedioAmbiente = ValorXML(nodeSeguros, "AseguraMedAmbiente", "") + NumPolizaSeguroMedioAmbiente = ValorXML(nodeSeguros, "PolizaMedAmbiente", "") + NombreAseguradoraCarga = ValorXML(nodeSeguros, "AseguraCarga", "") + NumPolizaSeguroCarga = ValorXML(nodeSeguros, "PolizaCarga", "") + End If + + + Dim nodeRemolques As XmlNode = nodeComp.SelectSingleNode(String.Format("//{0}:Remolques", "cartaporte20"), namespaces) + + If nodeRemolques IsNot Nothing Then + If nodeRemolques.ChildNodes.Count = 1 Then + RemolquePlaca1 = ValorXML(nodeRemolques.ChildNodes(0), "Placa", "") + RemolqueSubtimo1 = ValorXML(nodeRemolques.ChildNodes(0), "SubTipoRem", "") + ElseIf nodeRemolques.ChildNodes.Count > 1 Then + RemolquePlaca1 = ValorXML(nodeRemolques.ChildNodes(0), "Placa", "") + RemolqueSubtimo1 = ValorXML(nodeRemolques.ChildNodes(0), "SubTipoRem", "") + RemolquePlaca2 = ValorXML(nodeRemolques.ChildNodes(1), "Placa", "") + RemolqueSubtimo2 = ValorXML(nodeRemolques.ChildNodes(1), "SubTipoRem", "") + End If + End If + + 'Dim nodeFiguraTransporte As XmlNode = nodeComp.SelectSingleNode(String.Format("//{0}:FiguraTransporte", "cartaporte20"), namespaces) + 'If nodeFiguraTransporte IsNot Nothing Then + ' Dim CveTransporte As String = ValorXML(nodeFiguraTransporte, "TipoFigura", "") + ' MedioTransporte = String.Format("{0} - {1}", CveTransporte, HtTransporte(CveTransporte).ToString()) + 'End If + + Dim nodeMercancias As XmlNodeList = nodeComp.SelectNodes(String.Format("//{0}:Mercancia", "cartaporte20"), namespaces) + For Each node As XmlNode In nodeMercancias + Dim Row As DataRow = DtMercancias.NewRow + + Row("Cantidad") = ValorXML(node, "Cantidad", "") + Row("UnidadMedida") = ValorXML(node, "Unidad", "") + Row("Descripcion") = ValorXML(node, "Descripcion", "") + Row("PesoEnKg") = ValorXML(node, "PesoEnKg", "") + + Row("CveMaterialPeligroso") = ValorXML(node, "CveMaterialPeligroso", "") + Row("Embalaje") = ValorXML(node, "Embalaje", "") + + DtMercancias.Rows.Add(Row) + Next + + Dim nodeMercanciaPadre As XmlNodeList = nodeComp.SelectNodes(String.Format("//{0}:Mercancias", "cartaporte20"), namespaces) + If UsuarioActual.CveEmpresa = 13 AndAlso nodeMercanciaPadre IsNot Nothing Then + Dim PesoNetoTotal = ValorXML(nodeMercanciaPadre(0), "PesoNetoTotal", "") + params.Add(New ReportParameter("PesoNetoTotal", PesoNetoTotal)) + End If + + Dim nodeOperadores As XmlNodeList = nodeComp.SelectNodes(String.Format("//{0}:TiposFigura", "cartaporte20"), namespaces) + For Each node As XmlNode In nodeOperadores + Dim Row As DataRow = DtOperadores.NewRow + + Row("RFC") = ValorXML(node, "RFCFigura", "") + Row("NumLicencia") = ValorXML(node, "NumLicencia", "") + Row("NombreOperador") = ValorXML(node, "NombreFigura", "") + + DtOperadores.Rows.Add(Row) + Next + + Dim DistanciaTotal As Decimal = 0 + Dim nodeUbicaciones As XmlNodeList = nodeComp.SelectNodes(String.Format("//{0}:Ubicacion", "cartaporte20"), namespaces) + For Each node As XmlNode In nodeUbicaciones + Dim Row As DataRow = DtUbicaciones.NewRow + + Row("Distancia") = ValorXML(node, "DistanciaRecorrida", "") + DistanciaTotal += Row("Distancia").ToString().ToDecimal() + Row("TipoUbicacion") = ValorXML(node, "TipoUbicacion", "") + Row("FechaHoraSalida") = ValorXML(node, "FechaHoraSalidaLlegada", "") + Row("RFC") = ValorXML(node, "RFCRemitenteDestinatario", "") + Row("Nombre") = ValorXML(node, "NombreRemitenteDestinatario", "") + + Dim nodeDomicilio = node.ChildNodes.Cast(Of XmlNode).FirstOrDefault(Function(x) x.Name = "cartaporte20:Domicilio") 'node.SelectSingleNode(String.Format("//{0}:Domicilio", "cartaporte"), namespaces) + If nodeDomicilio IsNot Nothing Then + + Dim Estado As String = "" + Dim Municipio As String = "" + Dim Colonia As String = "" + Dim calle = ValorXML(nodeDomicilio, "Calle", "") + Dim CP = ValorXML(nodeDomicilio, "CodigoPostal", "") + + Dim dr As DataRow = GlobalDTGralColonias(ValorXML(nodeDomicilio, "Estado", ""), ValorXML(nodeDomicilio, "Municipio", ""), ValorXML(nodeDomicilio, "Colonia", "")).FiltroPrimero("") + If dr IsNot Nothing Then + Estado = dr("NombreEstado").ToString + Municipio = dr("NombreMunicipio").ToString + Colonia = dr("NombreAsentamiento").ToString + End If + Row("Direccion") = String.Format("{0} Col.{1},{2},{3}. CP {4}", calle, Colonia, Municipio, Estado, CP) + End If + + + DtUbicaciones.Rows.Add(Row) + Next + + If UsuarioActual.CveEmpresa = 13 Then + params.Add(New ReportParameter("DistanciaTotal", DistanciaTotal.ToString())) + End If + + Dim nodeRelacion = XMLDoc.SelectSingleNode(String.Format("//{0}:CfdiRelacionados", Prefijo), namespaces) + + If nodeRelacion IsNot Nothing Then + Dim RelacionCodigo As String = ValorXML(nodeRelacion, "TipoRelacion") + Dim Relacion As String = "" + + Select Case RelacionCodigo + Case "01" + Relacion = "01 - Nota de crédito de los documentos relacionados" + Case "02" + Relacion = "02 - Nota de débito de los documentos relacionados" + Case "03" + Relacion = "03 - Devolución de mercancía sobre facturas o traslados previos" + Case "04" + Relacion = "04 - Sustitución de los CFDI previos" + Case "05" + Relacion = "05 - Traslados de mercancias facturados previamente" + Case "06" + Relacion = "06 - Factura generada por los traslados previos" + Case "07" + Relacion = "07 - CFDI por aplicación de anticipo" + Case "08" + Relacion = "08 - Factura generada por pagos en parcialidades" + Case "09" + Relacion = "09 - Factura generada por pagos diferidos" + + End Select + + Dim nodoDocumentosRealcionados = XMLDoc.SelectNodes(String.Format("//{0}:CfdiRelacionados", Prefijo), namespaces) + For Each node As XmlNode In nodoDocumentosRealcionados + + Dim nRow As DataRow = DTRelacionados.NewRow + nRow("Relacion") = Relacion + + Try + Dim nodoUUID = node.ChildNodes.Cast(Of XmlNode).FirstOrDefault(Function(x) x.Name = "cfdi:CfdiRelacionado") + nRow("UUID") = ValorXML(nodoUUID, "UUID", "") + Catch ex As Exception + nRow("UUID") = "" + End Try + + DTRelacionados.Rows.Add(nRow) + Next + End If + + + + + Dim nodeTFD As XmlNode = nodeComp.SelectSingleNode(String.Format("//{0}:TimbreFiscalDigital", "tfd"), namespaces) + If nodeTFD IsNot Nothing Then + FolioFiscal = ValorXML(nodeTFD, "UUID", "") + NoSerieCertificado = ValorXML(nodeTFD, "NoCertificadoSAT", "") + FechaCertificacion = ValorXML(nodeTFD, "FechaTimbrado", "").ToDateTime + SelloCFDi = ValorXML(nodeTFD, "SelloCFD", "") + SelloSAT = ValorXML(nodeTFD, "SelloSAT", "") + NoCertificadoSAT = ValorXML(nodeTFD, "NoCertificadoSAT", "") + + CadenaOriginal = "||1.0|" + FolioFiscal + "|" + FechaCertificacion.ToString("yyyy-MM-dd") + "T" + FechaCertificacion.ToString("HH:mm:ss") + "|" + SelloCFDi + "|" + NoSerieCertificado + "||" + End If + + If Not ImagenCBB.Exists Then + Dim CBB As New ClbNegBICFDv3_2.ClsNegCBBGenerar() + CBB.GenerarCBB(UsuarioActual.Empresa.RFC, ClienteRFC, Total, FolioFiscal, RutaCBB) + End If + + + ImagenCBB = New System.IO.FileInfo(RutaCBB) + + If ImagenCBB.Exists Then + ImgCBB = String.Format("file://{0}", ImagenCBB.FullName) + Else + ImgCBB = "" + End If + + End If + + If DtConceptos.Rows.Count > 0 Then + + Dim Imagen As New System.IO.FileInfo(String.Format("{0}/Logo.png", UsuarioActual.Empresa.Ruta)) + + If Imagen.Exists Then + params.Add(New ReportParameter("LogoPath", $"file://{Imagen.FullName}")) + Else + params.Add(New ReportParameter("LogoPath", "")) + End If + 'EMPRESA + params.Add(New ReportParameter("NombreEmpresa", UsuarioActual.Empresa.Empresa)) + params.Add(New ReportParameter("RegimenFiscal", UsuarioActual.Empresa.Regimen)) + params.Add(New ReportParameter("UsuarioImprimio", UsuarioActual.Nombre)) + params.Add(New ReportParameter("FechaImpresion", Now.ToDateTime.ToShortDateString)) + params.Add(New ReportParameter("DomicilioFiscal", $"{UsuarioActual.Empresa.Direccion}, {UsuarioActual.Empresa.Colonia}, {UsuarioActual.Empresa.Localidad}, {UsuarioActual.Empresa.Estado}, Tel. {Telefono}")) + params.Add(New ReportParameter("SerieFolio", SerieFolio)) + params.Add(New ReportParameter("RFC", UsuarioActual.Empresa.RFC)) + params.Add(New ReportParameter("DomicilioExpedicion", LugarExpedicion)) + 'CLIENTE + params.Add(New ReportParameter("ClienteNombre", ClienteNombre)) + params.Add(New ReportParameter("ClienteRFC", ClienteRFC)) + params.Add(New ReportParameter("UsoCFDi", ClienteUsoCFDi)) + 'TRANSPORTE + params.Add(New ReportParameter("MedioTransporte", MedioTransporte)) + params.Add(New ReportParameter("TransporteInternacional", TransporteInternacional)) + params.Add(New ReportParameter("PermisoSTCC", PermisoSTCC)) + params.Add(New ReportParameter("NumPermiso", NumPermiso)) + + params.Add(New ReportParameter("Aseguradora", AseguradoraRespCivil)) + params.Add(New ReportParameter("NumPoliza", NumPolizaSeguroRespCivil)) + + params.Add(New ReportParameter("NombreAseguradoraMedioAmbiente", NombreAseguradoraMedioAmbiente)) + params.Add(New ReportParameter("NumPolizaSeguroMedioAmbiente", NumPolizaSeguroMedioAmbiente)) + + params.Add(New ReportParameter("NombreAseguradoraCarga", NombreAseguradoraCarga)) + params.Add(New ReportParameter("NumPolizaSeguroCarga", NumPolizaSeguroCarga)) + + params.Add(New ReportParameter("PlacaVM", PlacaVM)) + params.Add(New ReportParameter("AnioVM", AnioModeloVM)) + 'TIMBRADO + params.Add(New ReportParameter("FolioFiscal", FolioFiscal)) + params.Add(New ReportParameter("QR", ImgCBB)) + params.Add(New ReportParameter("SelloCFDI", SelloCFDi)) + params.Add(New ReportParameter("CertificadoContribuyente", NoCertificadoSAT)) + params.Add(New ReportParameter("CadenaOriginal", CadenaOriginal)) + params.Add(New ReportParameter("SerieCertificadoSAT", NoSerieCertificado)) + params.Add(New ReportParameter("FechaCertificacion", FechaCertificacion.ToString("dd/MM/yyyy HH:mm:ss"))) + params.Add(New ReportParameter("SelloSAT", SelloSAT)) + 'TOTALES + params.Add(New ReportParameter("SubTotal", SubTotal.ToString())) + params.Add(New ReportParameter("Descuentos", Descuentos.ToString())) + params.Add(New ReportParameter("Total", Total.ToString())) + + params.Add(New ReportParameter("RemolquePlaca1", RemolquePlaca1)) + params.Add(New ReportParameter("RemolqueSubtimo1", RemolqueSubtimo1)) + params.Add(New ReportParameter("RemolquePlaca2", RemolquePlaca2)) + params.Add(New ReportParameter("RemolqueSubtimo2", RemolqueSubtimo2)) + + + ' [@CertificadoContribuyente] + '[@CadenaOriginal] + + Dim lrds As New List(Of ReportDataSource) + + Dim rds As New ReportDataSource + rds.Name = "DataSet1" + rds.Value = DtConceptos + lrds.Add(rds) + + Dim rds2 As New ReportDataSource + rds2.Name = "DataSet2" + rds2.Value = DtUbicaciones + lrds.Add(rds2) + + Dim rds3 As New ReportDataSource + rds3.Name = "DataSet3" + rds3.Value = DtMercancias + lrds.Add(rds3) + + Dim rds4 As New ReportDataSource + rds4.Name = "DataSet4" + rds4.Value = DtOperadores + lrds.Add(rds4) + + + Dim rds5 As New ReportDataSource + rds5.Name = "DataSet5" + rds5.Value = DTRelacionados + lrds.Add(rds5) + + If AplicaSubReporte Then + For Each parametro As ReportParameter In params + retorno.Parametros.Add(New ReportParameter($"SRP_{parametro.Name}", parametro.Values.Item(0))) + Next + Else + retorno.Parametros.AddRange(params) + End If + + retorno.DataSources.AddRange(lrds) + End If + + End If + Catch ex As Exception + OnError("Ocurrió un error al generar el pdf de la carta porte", ex) + End Try + Return retorno + End Function #End Region #Region "OP = 'DesXmlTra' - IMPRIME XML TRASLADO" @@ -2316,7 +2354,7 @@ Partial Class PopUpVerFactura Archivo = Nothing End If End Sub - Public Sub imprimirFacturaVenta(CveVenta As Integer, AplicaPagare As String, Optional GuardarPDF As Boolean = False) + Public Sub imprimirFacturaVenta(CveVenta As Integer, AplicaPagare As String, Optional GuardarPDF As Boolean = False, Optional RegenerarPDF As Boolean = False) Dim ObjVentas As New ClsVentas Dim Vta As Modelos.Factura = Nothing @@ -2649,43 +2687,73 @@ Partial Class PopUpVerFactura End If ObjVentas.Dispose() + Dim CveTimbreCartaPorteVenta As Integer = -1 + Dim CartaPorte As Modelos.MSubReportData = Nothing + + If Vta.TipoDocto = "Ing" Then + Using ObjGral As New ClsGenerales + If ObjGral.GetGralTimbre(-1, "Ing", MinFecha, MaxFecha, 0, UsuarioActual.CveEmpresa, -1, CveVenta:=CveVenta) AndAlso ObjGral.DtResultados.Rows.Count > 0 Then + Dim RowCP As DataRow = ObjGral.DtResultados.Rows(0) + CveTimbreCartaPorteVenta = RowCP("CveTimbre").ToString().ToEntero() + End If + End Using + + If CveTimbreCartaPorteVenta > 0 Then + 'CartaPorte = New Modelos.MSubReportData + 'CartaPorte.Parametros.Add(New ReportParameter("SRP_ParametroPrueba", "Rarametro pasado")) + 'Dim dt As New DataTable() + 'dt.Columns.Add(New DataColumn("Cantidad", GetType(Decimal))) + 'dt.Columns.Add(New DataColumn("Unidad", GetType(String))) + + 'Dim row As DataRow = dt.NewRow() + 'row("Cantidad") = 2.3D + 'row("Unidad") = "PIEZAS" + + 'dt.Rows.Add(row) + 'CartaPorte.DataSources.Add(New ReportDataSource() With {.Name = "DataSet1", .Value = dt}) + + CartaPorte = PreParaImpresionCartaPorte(CveTimbreCartaPorteVenta, AplicaSubReporte:=true) + End If + End If + Dim Guardar As Boolean = If(GuardarPDF, True, If(AplicaPagare = "1", False, True)) - - - - - - If Not IsNothing(Vta) Then Dim PathArchivo As String = String.Format("{0}PDF\{1}\{2}.pdf", UsuarioActual.Empresa.Ruta, Vta.TipoDocto, Vta.SerieFolio) Dim Archivo As New System.IO.FileInfo(PathArchivo) If Archivo.Exists Then - - HttpContext.Current.Response.Clear() - HttpContext.Current.Response.ClearContent() - HttpContext.Current.Response.ContentType = If(IO.Path.GetExtension(Archivo.Name) = ".txt", "text/plain", "application/pdf") - HttpContext.Current.Response.AppendHeader("Content-disposition", "attachment; filename=" & Archivo.Name) - HttpContext.Current.Response.AddHeader("Content-Length", Archivo.Length.ToString()) - HttpContext.Current.Response.TransmitFile(PathArchivo) - 'HttpContext.Current.Response.Flush() - HttpContext.Current.Response.End() - Archivo = Nothing - + If RegenerarPDF Then + Archivo.Delete() + If UsuarioActual.Empresa.CvePlataforma = 2 Then + GeneraPDFVtaPyMe(Vta, "PDF") + Else + ImprimirbytesPDF(PdfFactura(Vta, AplicaPagare:=AplicaPagare, Guardar:=True, SubReportData:=CartaPorte), Vta.SerieFolio, "PDF") + Vta = Nothing + End If + Else + HttpContext.Current.Response.Clear() + HttpContext.Current.Response.ClearContent() + HttpContext.Current.Response.ContentType = If(IO.Path.GetExtension(Archivo.Name) = ".txt", "text/plain", "application/pdf") + HttpContext.Current.Response.AppendHeader("Content-disposition", "attachment; filename=" & Archivo.Name) + HttpContext.Current.Response.AddHeader("Content-Length", Archivo.Length.ToString()) + HttpContext.Current.Response.TransmitFile(PathArchivo) + 'HttpContext.Current.Response.Flush() + HttpContext.Current.Response.End() + Archivo = Nothing + End If Else '04/05/2018 - Se agrega seccion pruebas para generar factura venta .mrt para PyME If UsuarioActual.Empresa.CvePlataforma = 2 Then GeneraPDFVtaPyMe(Vta, "PDF") Else - ImprimirbytesPDF(PdfFactura(Vta, AplicaPagare:=AplicaPagare, Guardar:=Guardar), Vta.SerieFolio, "PDF") + ImprimirbytesPDF(PdfFactura(Vta, AplicaPagare:=AplicaPagare, Guardar:=Guardar, SubReportData:=CartaPorte), Vta.SerieFolio, "PDF") Vta = Nothing End If End If - End If End Sub diff --git a/Empresas/13/Formatos/CartaPorteTimbrado.rdlc b/Empresas/13/Formatos/CartaPorteTimbrado.rdlc new file mode 100644 index 000000000..970407272 --- /dev/null +++ b/Empresas/13/Formatos/CartaPorteTimbrado.rdlc @@ -0,0 +1,4609 @@ + + + + + + + + + + + + true + true + + + + + Cantidad + + + + + + + Textbox28 + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + + + + 3.22889cm + + + 6.57288cm + + + 2.71968cm + + + 2.12432cm + + + 2.57447cm + + + + + 0.6cm + + + + + true + true + + + + + =Fields!UnidadMedida.Value + + + + + + + UM + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Fields!Descripcion.Value + + + + + + + Textbox31 + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Fields!CveMaterialPeligroso.Value + + + + + + + CveMaterialPeligroso + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Fields!Embalaje.Value + + + + + + + Embalaje + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Fields!PesoEnKg.Value + + + + + + + PesoEnKg + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + + + + + + 0.52062cm + + + true + true + + + + + Unidad + + + + + + + Textbox40 + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + 0.52062cm + + + true + true + + + + + Producto + + + + + + + Textbox30 + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + 0.52062cm + + + true + true + + + + + Cod. Material + + + + Peligroso + + + + + + + Textbox37 + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + 0.52062cm + + + true + true + + + + + Embalaje + + + + + + + Textbox40 + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + 0.52062cm + + + true + true + + + + + Peso (KG) + + + + + + + Textbox64 + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + + + + + + 3.14705cm + + + true + true + + + + + =Fields!Cantidad.Value + + + + + + + Cantidad + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + DataSet3 + 6.6164cm + 0.06623cm + 1.12062cm + 20.36729cm + + + + + + true + true + + + + + DETALLE MERCANCIAS + + + + + + + Textbox3 + 6.1004cm + 0.06623cm + 0.50189cm + 8.01543in + 1 + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + + + true + true + + + + + Distancia + + + + + + + Textbox28 + + + White + 2pt + 2pt + 2pt + 2pt + + + + + + + + + + + 1.9529cm + + + 2.76367cm + + + 4.4249cm + + + 2.46447cm + + + 7.16731cm + + + + + 0.6cm + + + + + true + true + + + + + =Fields!TipoUbicacion.Value + + + + + + + TipoUbicacion + + 2pt + + + + + + 1pt + + + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Fields!RFC.Value + + + + + + + UM + + 2pt + + + + + + 1pt + + + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Fields!Nombre.Value + + + + + + + Textbox31 + + 5pt + + + + 1pt + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Fields!FechaHoraSalida.Value + + + + + + + Textbox65 + + 5pt + + + + 1pt + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Fields!Direccion.Value + + + + + + + Direccion + + 5pt + + + + 1pt + + + + 1pt + + 2pt + 2pt + 2pt + 2pt + + + + + + + + + + + + + 0.52062cm + + + true + true + + + + + Ubicación + + + + + + + Textbox28 + + + White + 2pt + 2pt + 2pt + 2pt + + + + + + + + 0.52062cm + + + true + true + + + + + RFC + + + + + + + Textbox40 + + + White + 2pt + 2pt + 2pt + 2pt + + + + + + + + 0.52062cm + + + true + true + + + + + Nombre + + + + + + + Textbox30 + + + White + 2pt + 2pt + 2pt + 2pt + + + + + + + + 0.52062cm + + + true + true + + + + + Fecha + + + + + + + Textbox64 + + + White + 2pt + 2pt + 2pt + 2pt + + + + + + + + 0.52062cm + + + true + true + + + + + Dirección + + + + + + + Textbox1 + + + White + 2pt + 2pt + 2pt + 2pt + + + + + + + + + + + + + 1.61241cm + + + true + true + + + + + =Fields!Distancia.Value + + + + + + + Cantidad + + 2pt + + + + + + 1pt + + + 1pt + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + DataSet2 + 9.1543cm + 0.06623cm + 1.12062cm + 20.38566cm + 2 + + + + + + true + true + + + + + ORIGEN / DESTINO + + + + + + + Textbox3 + 8.56422cm + 0.06623cm + 0.5cm + 8.01861in + 3 + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + + + true + true + + + + + RFC + + + + + + + Textbox28 + + + White + 2pt + 2pt + 2pt + 2pt + + + + + + + + + + + 4.89586cm + + + 10.35081cm + + + + + 0.6cm + + + + + true + true + + + + + =Fields!NumLicencia.Value + + + + + + + UM + + 2pt + + + + + + 1pt + + + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Fields!NombreOperador.Value + + + + + + + Textbox31 + + 5pt + + + + 1pt + + + + 1pt + + 2pt + 2pt + 2pt + 2pt + + + + + + + + + + + + + 0.52062cm + + + true + true + + + + + LICENCIA + + + + + + + Textbox40 + + + White + 2pt + 2pt + 2pt + 2pt + + + + + + + + 0.52062cm + + + true + true + + + + + NOMBRE OPERADOR + + + + + + + Textbox30 + + + White + 2pt + 2pt + 2pt + 2pt + + + + + + + + + + + + + 5.12057cm + + + true + true + + + + + =Fields!RFC.Value + + + + + + + Cantidad + + 2pt + + + + + + 1pt + + + 1pt + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + DataSet4 + 11.8213cm + 0.06623cm + 1.12062cm + 20.36724cm + 4 + + + + + + true + true + + + + + FIGURAS DE TRANSPORTE + + + + + + + Textbox3 + 11.23122cm + 0.06623cm + 0.5cm + 8.01861in + 5 + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + Medio de transporte + + + + : + + + + =Parameters!MedioTransporte.Value + + + + + + + + + Transporte Internacional: + + + + =Parameters!TransporteInternacional.Value + + + + + + + + + Permiso SCT: + + + + + + + + =Parameters!PermisoSTCC.Value + + + + + + + + + Numero de Permiso + + + + : + + + + =Parameters!NumPermiso.Value + + + + + + + + + Placa: + + + + =Parameters!PlacaVM.Value + + + + + + + + + Año: + + + + =Parameters!AnioVM.Value + + + + + + + + + + + Textbox2 + 1.09361in + 0.06623cm + 0.95951in + 3.78787in + 6 + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + DETALLE TRANSPORTE + + + + + + + Textbox3 + 2.27425cm + 0.06623cm + 0.5cm + 8.01543in + 7 + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + Aseguradora Responsabilidad Civil: + + + + =Parameters!Aseguradora.Value + + + + + + + + + Número de Póliza: + + + + =Parameters!NumPoliza.Value + + + + + + + + + Aseguradora Medio Ambiente: + + + + =Parameters!NombreAseguradoraMedioAmbiente.Value + + + + + + + + + Número de Póliza: + + + + =Parameters!NumPolizaSeguroMedioAmbiente.Value + + + + + + + + + Aseguradora Carga: + + + + =Parameters!NombreAseguradoraCarga.Value + + + + + + + + + Número de Póliza: + + + + =Parameters!NumPolizaSeguroCarga.Value + + + + + + + + + + + + + + + + Textbox2 + 1.09361in + 9.72269cm + 0.95951in + 4.21685in + 8 + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + Remolque 1 + + + + Placa: + + + + =Parameters!RemolquePlaca1.Value + + + + Tipo Rem: + + + + =Parameters!RemolqueSubtimo1.Value + + + + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + Remolque 2 + + + + Placa: + + + + =Parameters!RemolquePlaca2.Value + + + + Tipo Rem: + + + + =Parameters!RemolqueSubtimo2.Value + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + + + + + true + true + + + + + RELACIÓN + + + + + + + Textbox62 + + + White + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + UUID + + + + + + + Textbox69 + + + + + + White + 2pt + 2pt + 2pt + 2pt + + + + + + + + + + + 1.25962cm + + + + + 0.6cm + + + + + true + true + + + + + + + + + + + + UM + + + + + + + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + + + + + + 0.52062cm + + + true + true + + + + + + + + + + + + Textbox40 + + + White + 2pt + 2pt + 2pt + 2pt + + + + + + + + + + + + + =Fields!Relacion.Value + + + + + =Fields!Relacion.Value + + + + 9.54971cm + + + true + true + + + + + =Fields!Relacion.Value + + + + + + + Relacion + + 2pt + + + + + + 1pt + + + 1pt + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + + =Fields!UUID.Value + + + + + =Fields!UUID.Value + + + + 9.34933cm + + + true + true + + + + + =Fields!UUID.Value + + + + + + + UUID + + 2pt + + + + + + 1pt + + + + 1pt + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + + + + + + true + true + DataSet5 + 0.50301cm + 0.08761cm + 1.12062cm + 20.15866cm + + + + + + true + true + + + + + FOLIOS RELACIONADOS + + + + + + + Textbox3 + 0.02618cm + 0.5cm + 7.96066in + 1 + + + 2pt + 2pt + 2pt + 2pt + + + + true + 13.15006cm + 0.06623cm + 1.78092cm + 20.36726cm + 11 + + =IIf(CountRows("DataSet5") = 0, True, False) + + + + + + + + + true + true + + + + + N + + + + ombre: + + + + =Parameters!ClienteNombre.Value + + + + + + + + + RFC: + + + + =Parameters!ClienteRFC.Value + + + + + + + + + Uso CFDi: + + + + + + + + =Parameters!UsoCFDi.Value + + + + + + + Textbox2 + 0.26311in + 0.08761cm + 0.54893in + 8.01543in + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + DATOS DEL CLIENTE + + + + + + + Textbox3 + 0.10114cm + 0.08761cm + 0.5cm + 8.01543in + 1 + + + 2pt + 2pt + 2pt + 2pt + + + + true + 0.03528cm + 0.06623cm + 2.09786cm + 20.4468cm + 12 + + =(Parameters!EsSubReporte.Value) + + + + + + + + + true + true + + + + + Sello digital del CFDI: + + + + + + + + + =Parameters!SelloCFDI.Value + + + + + + + + + Cadena original del complemento de certificación digital del SAT: + + + + + + + + + + + + + + + 2pt + 2pt + 2pt + 2pt + + + + External + =Parameters!QR.Value + FitProportional + 1.6047in + 6.68415in + 1.2939in + 1.28682in + 1 + + + + + + + + + + + + true + true + + + + + CANTIDAD + + + + + + + Textbox28 + + + White + 2pt + 2pt + 2pt + 2pt + + + + + + + + + + + 3.2638cm + + + 9.16926cm + + + 2.60938cm + + + 3.20474cm + + + + + 0.6cm + + + + + true + true + + + + + =Fields!Unidad.Value + + + + + + + UM + + 2pt + + + + + + 1pt + + + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Fields!Descripcion.Value + + + + + + + Textbox31 + + 5pt + + + + 1pt + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Fields!ValorUnitario.Value + + + + + + + PesoEnKg + + 5pt + + + + 1pt + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Fields!Importe.Value + + + + + + + Importe + + 5pt + + + + 1pt + + + + 1pt + + 2pt + 2pt + 2pt + 2pt + + + + + + + + + + + + + 0.52062cm + + + true + true + + + + + UNIDAD DE MEDIDA + + + + + + + Textbox40 + + + White + 2pt + 2pt + 2pt + 2pt + + + + + + + + 0.52062cm + + + true + true + + + + + DESCRIPCIÓN + + + + + + + Textbox30 + + + White + 2pt + 2pt + 2pt + 2pt + + + + + + + + 0.52062cm + + + true + true + + + + + PU + + + + + + + Textbox64 + + + White + 2pt + 2pt + 2pt + 2pt + + + + + + + + 0.52062cm + + + true + true + + + + + IMPORTE + + + + + + + Textbox5 + + + White + 2pt + 2pt + 2pt + 2pt + + + + + + + + + + + + + 2.1201cm + + + true + true + + + + + =Fields!Cantidad.Value + + + + + + + Cantidad + + 2pt + + + + + + 1pt + + + 1pt + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + DataSet1 + 0.59008cm + 1.12062cm + 20.36728cm + 2 + + + + + + true + true + + + + + CONCEPTOS + + + + + + + Textbox3 + 0.5cm + 8.01861in + 3 + + + 2pt + 2pt + 2pt + 2pt + + + + true + + + + + =Parameters!SubTotal.Value + + + + + + + Textbox3 + 0.78988in + 6.96227in + 0.60856cm + 1.0615in + 4 + + + + + + 2pt + 2pt + 2pt + 2pt + + + + true + + + + + SUBTOTAL + + + + : + + + + + + + Textbox3 + 2.00629cm + 5.84376in + 0.60856cm + 1.12267in + 5 + + + White + 2pt + 2pt + 2pt + 2pt + + + + true + + + + + =Parameters!Descuentos.Value + + + + + + + Textbox3 + 1.02947in + 6.96435in + 0.60856cm + 1.05108in + 6 + + + + + + + + + 2pt + 2pt + 2pt + 2pt + + + + true + + + + + DESCUENTOS: + + + + + + + Textbox3 + 2.61484cm + 5.83821in + 0.60856cm + 1.12683in + 7 + + + White + 2pt + 2pt + 2pt + 2pt + + + + true + + + + + =Parameters!Total.Value + + + + + + + Textbox3 + 1.26906in + 6.96643in + 0.60856cm + 1.05108in + 8 + + + + + + 2pt + 2pt + 2pt + 2pt + + + + true + + + + + TOTAL: + + + + + + + Textbox3 + 3.22339cm + 5.84029in + 0.60856cm + 1.12614in + 9 + + + White + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + "Este documento es una representación impresa de un CFDI" + + + + + + + + + + + + + + + + + + Folio fiscal: + + + + =Parameters!FolioFiscal.Value + + + + + + + + + + + =Parameters!FechaCertificacion.Value + + + + + + + + + + + =Parameters!CertificadoContribuyente.Value + + + + + + + =Parameters!SerieCertificadoSAT.Value + + + + + + + + + + 2pt + 2pt + 2pt + 2pt + + + + true + 15.01212cm + 0.0743cm + 7.44771cm + 20.42542cm + 13 + + =Parameters!EsSubReporte.Value + + + + + + + true + true + + + + + Pesto Neto Total (KG): + + + + =Parameters!PesoNetoTotal.Value + + + + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + Distancia Total: + + + + =Parameters!DistanciaTotal.Value + + + + + + 2pt + 2pt + 2pt + 2pt + + + + 8.84245in + + + + + + + Textbox2 + 0.38703cm + 5.23849cm + 0.78571cm + 9.73471cm + + + + true + true + + + + + RFC: + + + + =Parameters!RFC.Value + + + + + + + + + + + =Parameters!DomicilioFiscal.Value + + + + + + + =Parameters!RegimenFiscal.Value + + + + + + + =Parameters!DomicilioExpedicion.Value + + + + + + + External + =Parameters!LogoPath.Value + FitProportional + 0.19452in + 0.46171in + 1.23522in + 2 + + + + + + true + + + + + CARTA PORTE - TRASLADO + + + + + + + Textbox3 + 0.38703cm + 6.09531in + 0.5cm + 1.83161in + 3 + + + White + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + =Parameters!SerieFolio.Value + + + + + + + Textbox3 + 0.3607in + 6.09531in + 0.60856cm + 1.83161in + 4 + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + + 1.23524cm + true + true + + + 0.03524cm + 0.06623cm + 0cm + 20.38566cm + + + + + + true + true + + + + + Usuario: + + + + + + + Textbox13 + 0.14107cm + 0.71425cm + 0.54708cm + 1.55632cm + 1 + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + =Parameters!UsuarioImprimio.Value + + + + + + + Textbox14 + 0.14107cm + 2.27057cm + 0.54708cm + 4.96223cm + 2 + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + Fecha Impresion: + + + + + + + Textbox13 + 0.14107cm + 7.33864cm + 0.54708cm + 2.84562cm + 3 + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + =Globals!ExecutionTime + + + + + + + Textbox14 + 0.14107cm + 10.18425cm + 0.54708cm + 4.68641cm + 4 + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + ="Página " & Globals.PageNumber & " de " & Globals.TotalPages + + + + + + + Textbox14 + 0.1446cm + 14.99343cm + 0.54708cm + 4.04906cm + 5 + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + IMPRESO EN SIG, Traspaso Almacén + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + 29.7cm + 19.59cm + 0cm + 0cm + 1cm + 1cm + 0.13cm + - - - - - - - - DE C.V. RFC: EMD950206SRA - - - - - - - - - Tipo de Comprobante: I - Ingreso - - - - - - - - - Del Cobre No. 95 Col. Parque Industrial Hermosillo, Sonora. México, C.P. 83299 - - - - - - - - - Tel. 6622510249 - - - - - - - - - Régimen Fiscal: 601 - General de Ley Personas Morales - - - - - - - Textbox4 - 1.83923in - 1.10377in - 6.21276in - - - 2pt - 2pt - 2pt - 2pt - - - - Embedded - Logo1 - FitProportional - 0.65302cm - 2.88998cm - 3.84225cm - 1 - - - - - - true - true - - - - - Nombre: - - - - - - - - - - - - - - - 2pt - 2pt - 2pt - 2pt - - - - true - - - - - =Parameters!ClienteNombre.Value - - - - - - - - - - - - - - - 2pt - 2pt - 2pt - 2pt - - - - - - - 1.50708cm - - - 1.63629cm - - - 1.29788cm - - - 1.66402cm - - - 8.32569cm - - - 1.42482cm - - - 1.73271cm - - - 2.4815cm - - - - - 0.74994cm - - - - - true - - - - - Cantidad - - - - - - - Textbox34 - - - - Black - - - - Black - - - White - 2pt - 2pt - 2pt - 2pt - - - - - - - - true - true - - - - - Codigo - - - - - - - Textbox15 - - - - Black - - - - Black - - - White - 2pt - 2pt - 2pt - 2pt - - - - - - - - true - true - - - - - C.U. SAT - - - - - - - Textbox75 - - - - Black - - - - Black - - - White - 2pt - 2pt - 2pt - 2pt - - - - - - - - true - true - - - - - Clave - - - - - - - - - Producto - - - - - - - Textbox82 - - - - Black - - - - Black - - - White - 2pt - 2pt - 2pt - 2pt - - - - - - - - true - - - - - Descripción - - - - - - - Textbox79 - - - - Black - - - - Black - - - White - 2pt - 2pt - 2pt - 2pt - - - - - - - - true - - - - - P.U. - - - - - - - Textbox84 - - - - Black - - - - Black - - - White - 2pt - 2pt - 2pt - 2pt - - - - - - - - true - true - - - - - Impuestos - - - - - - - Textbox91 - - - - Black - - - - Black - - - White - 2pt - 2pt - 2pt - 2pt - - - - - - - - true - - - - - Importe - - - - - - - - - - - - - - - - Black - - - - Black - - - White - 2pt - 2pt - 2pt - 2pt - - - - - - - - 0.48536cm - - - - - true - true - - - - - =Fields!Cantidad.Value - - - - - - - Cantidad1 - - - - #4f81bd - - - #4f81bd - - 2pt - 2pt - 2pt - 2pt - - - - - - - - true - true - - - - - =Fields!SATClaveProdServ.Value - - - - - - - SATClaveProdServ - - - - #4f81bd - - 2pt - 2pt - 2pt - 2pt - - - - - - - - true - true - - - - - =Fields!SATClaveUM.Value - - - - - - - SATClaveUM - - - - #4f81bd - - 2pt - 2pt - 2pt - 2pt - - - - - - - - true - true - - - - - =Fields!Codigo.Value - - - - - - - Codigo - - - - #4f81bd - - 2pt - 2pt - 2pt - 2pt - - - - - - - - true - true - - - - - =Fields!PS.Value & " " & Fields!Obs.Value - - - - - - - #4f81bd - - 2pt - 2pt - 2pt - 2pt - - - - - - - - true - true - - - - - =Fields!PU.Value - - - - - - - PU1 - - - 2pt - 2pt - 2pt - 2pt - - - - - - - - true - true - - - - - =Fields!ImporteIVA.Value - - - - - - - ImporteIVA - - - 2pt - 2pt - 2pt - 2pt - - - - - - - - true - true - - - - - =Fields!Cantidad.Value*Fields!PU.Value - - - - - - - Textbox88 - - - - #4f81bd - - - #4f81bd - - 2pt - 2pt - 2pt - 2pt - es-MX - - - - - - - - - - - - - - - - - - - - - - - - After - - - - - - - DsOC - 6.28717cm - 0.44641cm - 1.2353cm - 20.06999cm - 4 - - - - - - true - true - - - - - =Parameters!ClienteDatoExtra1.Value - - - - - - 2pt - 2pt - 2pt - 2pt - - - - - - - 3.15414cm - - - - - 0.27059cm - - - - - true - true - - - - - =Fields!Importe.Value - - - - - - - Importe - - - 2pt - 2pt - 2pt - 2pt - es-MX - - - - - - - - 0.38492cm - - - - - true - true - - - - - =Replace(Parameters!Moneda.Value,"Pesos","Peso mexicano") - - - - - - - Textbox47 - - - 2pt - 2pt - 2pt - 2pt - - - - - - - - - - - - - - - - - - - =Fields!ImpuestoLocal.Value - - - - 2.52863cm - - - true - true - - - - - =Fields!ImpuestoLocal.Value - - - - - - White - 2pt - 2pt - 2pt - 2pt - - - - - - - - 2.52863cm - - - true - true - - - - - Moneda - - - - - - White - 2pt - 2pt - 2pt - 2pt - - - - - Before - - - - DataSet1 - 7.71422cm - 14.83363cm - 0.65551cm - 5.68277cm - 6 - - - - - - true - true - - - - - Folio Factura - - - - - - 2pt - 2pt - 2pt - 2pt - - - - true - true - - - - - =IIF(Parameters!Serie.Value.ToString="",Parameters!Folio.Value,Parameters!Serie.Value & "-" &Parameters!Folio.Value) - - - - - - - Textbox3 - 2.79612cm - 17.39754cm - 0.41303cm - 3.066cm - 8 - - - 2pt - 2pt - 2pt - 2pt - - - - true - true - - - - - Fecha - - - - - - 2pt - 2pt - 2pt - 2pt - - - - true - true - - - - - =Parameters!Fecha.Value - - - - - - - Textbox12 - 3.22326cm - 17.39754cm - 0.42714cm - 3.066cm - 10 - - - 2pt - 2pt - 2pt - 2pt - - - - true - true - - - - - Lugar de Expedición - - - - - - 2pt - 2pt - 2pt - 2pt - - - - true - true - - - - - 83299 - - - - - - - Textbox55 - 3.75976cm - 17.39754cm - 0.46681cm - 3.05452cm - 12 - - - 2pt - 2pt - 2pt - 2pt - - - - true - true - - - - - Forma de Pago - - - - - - 2pt - 2pt - 2pt - 2pt - - - - true - true - - - - - =Parameters!FormaPago.Value - - - - - - - Textbox3 - 3.0229cm - 4.48098cm - 0.42944cm - 6.76133cm - 14 - - - 2pt - 2pt - 2pt - 2pt - - - - true - true - - - - - Método de Pago - - - - - - 2pt - 2pt - 2pt - 2pt - - - - true - true - - - - - =IIF(Parameters!MetodoPago.Value.ToString="","No Identificado",Parameters!MetodoPago.Value) - - - - - - - Textbox3 - 3.46998cm - 4.48098cm - 0.40122cm - 6.76133cm - 16 - - - 2pt - 2pt - 2pt - 2pt - - - - true - true - - - - - Moneda - - - - - - 2pt - 2pt - 2pt - 2pt - - - - true - true - - - - - =Parameters!Moneda.Value - - - - - - - - Tipo de Cambio - - - - - - - - =Parameters!TipoCambio.Value - - - - - - - - - - - Textbox3 - 3.95234cm - 4.48098cm - 0.43297cm - 6.76133cm - 18 - - - 2pt - 2pt - 2pt - 2pt - - - - true - true - - - - - Datos del Cliente - - - - - - 2pt - 2pt - 2pt - 2pt - - - - true - true - - - - - R.F.C.: - - - - - - - - - - - - - - - 2pt - 2pt - 2pt - 2pt - - - - true - - - - - =Parameters!ClienteRFC.Value - - - - - - - - - - - - - - - 2pt - 2pt - 2pt - 2pt - - - - true - true - - - - - Uso CFDI: - - - - - - - - - - - - - - - 2pt - 2pt - 2pt - 2pt - - - - true - - - - - =Parameters!UsoCFDI.Value - - - - - - - - - - - - - - - 2pt - 2pt - 2pt - 2pt - - - - true - true - - - - - Domicilio: - - - - - - - - - - - - - - - 2pt - 2pt - 2pt - 2pt - - - - true - - - - - =Parameters!ClienteDireccion.Value - - - - - - - - - - - - - - - 2pt - 2pt - 2pt - 2pt - - - - true - true - - - - - OBSERVACIONES GENERALES: - - - - - - - - - - - - - - - 2pt - 2pt - 2pt - 2pt - - - - true - true - - - - - =Parameters!Observaciones.Value - - - - - - - Textbox3 - 7.54478cm - 5.057cm - 0.44003cm - 9.60024cm - 27 - - - 2pt - 2pt - 2pt - 2pt - - - - true - - - - - =Parameters!ImporteLetra.Value - - - - - - - - - - - - - - - 2pt - 2pt - 2pt - 2pt - - - - true - true - - - - - Importe Con Letra: - - - - - - 2pt - 2pt - 2pt - 2pt - - - - External - =Parameters!QR.Value - FitProportional - 3.40943in - 0.22897in - 1.14694in - 1.34784in - 30 - - - - - - true - true - - - - - Serie del Certificado del Emisor - - - - - - 2pt - 2pt - 2pt - 2pt - - - - true - true - - - - - Folio Fiscal - - - - - - 2pt - 2pt - 2pt - 2pt - - - - true - true - - - - - No. de Serie del Certificado de l SAT - - - - - - 2pt - 2pt - 2pt - 2pt - - - - true - true - - - - - Fecha y Hora de Certificación - - - - - - 2pt - 2pt - 2pt - 2pt - - - - true - true - - - - - =Parameters!CertificadoContribuyente.Value - - - - - - - Textbox2 - 9.29495cm - 14.82657cm - 0.35889cm - 5.62289cm - 35 - - - 2pt - 2pt - 2pt - 2pt - - - - true - true - - - - - =Parameters!FolioFiscal.Value - - - - - - - Textbox2 - 9.67148cm - 14.82657cm - 0.40122cm - 5.62289cm - 36 - - - 2pt - 2pt - 2pt - 2pt - - - - true - true - - - - - =Parameters!SerieCertificadoSAT.Value - - - - - - - Textbox2 - 10.05859cm - 14.82657cm - 0.3536cm - 5.62289cm - 37 - - - 2pt - 2pt - 2pt - 2pt - - - - true - true - - - - - =Parameters!FechaCertificacion.Value - - - - - - - Textbox2 - 10.41395cm - 14.82657cm - 0.31479cm - 5.62289cm - 38 - - - 2pt - 2pt - 2pt - 2pt - - - - true - true - - - - - Este documento es una representación impresa de un CFDI - - - - - - - - - Version 3.3 - - - - - - - Textbox19 - 4.27878in - 9.81667cm - 0.34009in - 4.18614in - 39 - - - - - - - - - - - - 2pt - 2pt - 2pt - 2pt - - - - true - true - - - - - =Parameters!SelloCFDI.Value - - - - - - - - - - - - - - - 2pt - 2pt - 2pt - 2pt - - - - true - true - - - - - Sello Digital del CFDI - - - - - - 2pt - 2pt - 2pt - 2pt - - - - true - true - - - - - =Parameters!SelloSAT.Value - - - - - - - - - - - - - - - 2pt - 2pt - 2pt - 2pt - - - - true - true - - - - - Sello SAT - - - - - - 2pt - 2pt - 2pt - 2pt - - - - true - true - - - - - =Parameters!CadenaSAT.Value - - - - - - - - - - - - - - - 2pt - 2pt - 2pt - 2pt - - - - true - true - - - - - Cadena Original del Complemento del Certificación Digital del SAT - - - - - - 2pt - 2pt - 2pt - 2pt - - - - - - true - true - - - - - CFDI Relacionados - - - - - - - Textbox5 - 0.14926cm - 0.9525cm - 0.46066cm - 18.98926cm - - - White - 2pt - 2pt - 2pt - 2pt - - - - true - true - - - - - Tipo Relación: - - - - - - - Textbox29 - 0.735cm - 4.71624cm - 0.41981cm - 5.31841cm - 1 - - - 2pt - 2pt - 2pt - 2pt - - - - true - true - - - - - =Parameters!TipoRelacionTexto.Value - - - - - - 2pt - 2pt - 2pt - 2pt - - - - - - - 2.42456cm - - - 2.05585cm - - - 3.03631cm - - - 7.7847cm - - - - - 0.44125cm - - - - - true - true - - - - - Folio - - - - - - - Textbox10 - - - White - 2pt - 2pt - 2pt - 2pt - - - - - - - - true - true - - - - - Fecha - - - - - - - Textbox12 - - - White - 2pt - 2pt - 2pt - 2pt - - - - - - - - true - true - - - - - Importe - - - - - - - Textbox21 - - - White - 2pt - 2pt - 2pt - 2pt - - - - - - - - true - true - - - - - Folio Fiscal - - - - - - - Textbox11 - - - White - 2pt - 2pt - 2pt - 2pt - - - - - - - - 0.41479cm - - - - - true - true - - - - - =Fields!SerieFolio.Value - - - - - - 2pt - 2pt - 2pt - 2pt - - - - - - - - true - true - - - - - =Fields!Fecha.Value - - - - - - - Fecha - - - 2pt - 2pt - 2pt - 2pt - - - - - - - - true - true - - - - - =Fields!Importe.Value - - - - - - - Importe1 - - - 2pt - 2pt - 2pt - 2pt - - - - - - - - true - true - - - - - =Fields!FolioFiscal.Value - - - - - - 2pt - 2pt - 2pt - 2pt - - - - - - - - - - - - - - - - - - - - After - - - - - - - DataSet4 - 1.39643cm - 3.2145cm - 0.85604cm - 15.30142cm - 3 - - - - - - true - 14.54249cm - 0.07193cm - 2.25247cm - 20.37753cm - 46 - - =Microsoft.VisualBasic.Interaction.IIF(First(Fields!SerieFolio.Value, "DataSet4") <> "", False, True) - - - - - - - 16.79496cm - - - - - - - Textbox3 - 0.04232cm - 16.34905cm - 0.6cm - 3.95896cm - - - 2pt - 2pt - 2pt - 2pt - - - - true - true - - - - - Fecha Impresión: - - - - - - - - =Today - - - - - - 2pt - 2pt - 2pt - 2pt - - - - - - - - 27.94cm - 21.59cm - 0.5cm - 0.5cm - 1cm - 0.5cm - 1.27cm - + + + + + + + + DE C.V. RFC: EMD950206SRA + + + + + + + + + Tipo de Comprobante: I - Ingreso + + + + + + + + + Del Cobre No. 95 Col. Parque Industrial Hermosillo, Sonora. México, C.P. 83299 + + + + + + + + + Tel. 6622510249 + + + + + + + + + Régimen Fiscal: 601 - General de Ley Personas Morales + + + + + + + Textbox4 + 1.94795in + 1.12067in + 5.98809in + + + 2pt + 2pt + 2pt + 2pt + + + + Embedded + Logo1 + FitProportional + 0.92917cm + 2.88998cm + 3.84225cm + 1 + + + + + + true + true + + + + + Nombre: + + + + + + + + + + + + + + + 2pt + 2pt + 2pt + 2pt + + + + true + + + + + =Parameters!ClienteNombre.Value + + + + + + + + + + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + 1.50708cm + + + 1.63629cm + + + 1.29788cm + + + 1.66402cm + + + 8.32569cm + + + 1.42482cm + + + 1.73271cm + + + 2.4815cm + + + + + 0.74994cm + + + + + true + + + + + Cantidad + + + + + + + Textbox34 + + + + Black + + + + Black + + + White + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + Codigo + + + + + + + Textbox15 + + + + Black + + + + Black + + + White + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + C.U. SAT + + + + + + + Textbox75 + + + + Black + + + + Black + + + White + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + Clave + + + + + + + + + Producto + + + + + + + Textbox82 + + + + Black + + + + Black + + + White + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + + + + + Descripción + + + + + + + Textbox79 + + + + Black + + + + Black + + + White + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + + + + + P.U. + + + + + + + Textbox84 + + + + Black + + + + Black + + + White + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + Impuestos + + + + + + + Textbox91 + + + + Black + + + + Black + + + White + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + + + + + Importe + + + + + + + + + + + + + + + + Black + + + + Black + + + White + 2pt + 2pt + 2pt + 2pt + + + + + + + + 0.48536cm + + + + + true + true + + + + + =Fields!Cantidad.Value + + + + + + + Cantidad1 + + + + #4f81bd + + + #4f81bd + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Fields!SATClaveProdServ.Value + + + + + + + SATClaveProdServ + + + + #4f81bd + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Fields!SATClaveUM.Value + + + + + + + SATClaveUM + + + + #4f81bd + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Fields!Codigo.Value + + + + + + + Codigo + + + + #4f81bd + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Fields!PS.Value & " " & Fields!Obs.Value + + + + + + + #4f81bd + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Fields!PU.Value + + + + + + + PU1 + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Fields!ImporteIVA.Value + + + + + + + ImporteIVA + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Fields!Cantidad.Value*Fields!PU.Value + + + + + + + Textbox88 + + + + #4f81bd + + + #4f81bd + + 2pt + 2pt + 2pt + 2pt + es-MX + + + + + + + + + + + + + + + + + + + + + + + + After + + + + + + + DsOC + 6.28717cm + 0.08756cm + 1.2353cm + 20.06999cm + 4 + + + + + + true + true + + + + + =Parameters!ClienteDatoExtra1.Value + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + 3.15414cm + + + + + 0.27059cm + + + + + true + true + + + + + =Fields!Importe.Value + + + + + + + Importe + + + 2pt + 2pt + 2pt + 2pt + es-MX + + + + + + + + 0.38492cm + + + + + true + true + + + + + =Replace(Parameters!Moneda.Value,"Pesos","Peso mexicano") + + + + + + + Textbox47 + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + + + + + + + + + + + + =Fields!ImpuestoLocal.Value + + + + 2.52863cm + + + true + true + + + + + =Fields!ImpuestoLocal.Value + + + + + + White + 2pt + 2pt + 2pt + 2pt + + + + + + + + 2.52863cm + + + true + true + + + + + Moneda + + + + + + White + 2pt + 2pt + 2pt + 2pt + + + + + Before + + + + DataSet1 + 7.71422cm + 14.47478cm + 0.65551cm + 5.68277cm + 6 + + + + + + true + true + + + + + Folio Factura + + + + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + =IIF(Parameters!Serie.Value.ToString="",Parameters!Folio.Value,Parameters!Serie.Value & "-" &Parameters!Folio.Value) + + + + + + + Textbox3 + 2.79612cm + 17.03869cm + 0.41303cm + 3.066cm + 8 + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + Fecha + + + + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + =Parameters!Fecha.Value + + + + + + + Textbox12 + 3.22326cm + 17.03869cm + 0.42714cm + 3.066cm + 10 + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + Lugar de Expedición + + + + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + 83299 + + + + + + + Textbox55 + 3.75976cm + 17.03869cm + 0.46681cm + 3.05452cm + 12 + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + Forma de Pago + + + + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + =Parameters!FormaPago.Value + + + + + + + Textbox3 + 3.0229cm + 4.12213cm + 0.42944cm + 6.76133cm + 14 + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + Método de Pago + + + + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + =IIF(Parameters!MetodoPago.Value.ToString="","No Identificado",Parameters!MetodoPago.Value) + + + + + + + Textbox3 + 3.46998cm + 4.12213cm + 0.40122cm + 6.76133cm + 16 + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + Moneda + + + + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + =Parameters!Moneda.Value + + + + + + + + Tipo de Cambio + + + + + + + + =Parameters!TipoCambio.Value + + + + + + + + + + + Textbox3 + 3.95234cm + 4.12213cm + 0.43297cm + 6.76133cm + 18 + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + Datos del Cliente + + + + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + R.F.C.: + + + + + + + + + + + + + + + 2pt + 2pt + 2pt + 2pt + + + + true + + + + + =Parameters!ClienteRFC.Value + + + + + + + + + + + + + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + Uso CFDI: + + + + + + + + + + + + + + + 2pt + 2pt + 2pt + 2pt + + + + true + + + + + =Parameters!UsoCFDI.Value + + + + + + + + + + + + + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + Domicilio: + + + + + + + + + + + + + + + 2pt + 2pt + 2pt + 2pt + + + + true + + + + + =Parameters!ClienteDireccion.Value + + + + + + + + + + + + + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + OBSERVACIONES GENERALES: + + + + + + + + + + + + + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + =Parameters!Observaciones.Value + + + + + + + Textbox3 + 7.54478cm + 4.69815cm + 0.44003cm + 9.60024cm + 27 + + + 2pt + 2pt + 2pt + 2pt + + + + true + + + + + =Parameters!ImporteLetra.Value + + + + + + + + + + + + + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + Importe Con Letra: + + + + + + 2pt + 2pt + 2pt + 2pt + + + + External + =Parameters!QR.Value + FitProportional + 3.40943in + 0.08769in + 1.14694in + 1.34784in + 30 + + + + + + true + true + + + + + Serie del Certificado del Emisor + + + + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + Folio Fiscal + + + + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + No. de Serie del Certificado de l SAT + + + + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + Fecha y Hora de Certificación + + + + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + =Parameters!CertificadoContribuyente.Value + + + + + + + Textbox2 + 9.29495cm + 14.46772cm + 0.35889cm + 5.62289cm + 35 + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + =Parameters!FolioFiscal.Value + + + + + + + Textbox2 + 9.67148cm + 14.46772cm + 0.40122cm + 5.62289cm + 36 + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + =Parameters!SerieCertificadoSAT.Value + + + + + + + Textbox2 + 10.05859cm + 14.46772cm + 0.3536cm + 5.62289cm + 37 + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + =Parameters!FechaCertificacion.Value + + + + + + + Textbox2 + 10.41395cm + 14.46772cm + 0.31479cm + 5.62289cm + 38 + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + Este documento es una representación impresa de un CFDI + + + + + + + + + Version 3.3 + + + + + + + Textbox19 + 4.27878in + 9.45782cm + 0.34009in + 4.18614in + 39 + + + + + + + + + + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + =Parameters!SelloCFDI.Value + + + + + + + + + + + + + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + Sello Digital del CFDI + + + + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + =Parameters!SelloSAT.Value + + + + + + + + + + + + + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + Sello SAT + + + + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + =Parameters!CadenaSAT.Value + + + + + + + + + + + + + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + Cadena Original del Complemento del Certificación Digital del SAT + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + true + true + + + + + CFDI Relacionados + + + + + + + Textbox5 + 0.14926cm + 1.30058cm + 0.46066cm + 18.98926cm + + + White + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + Tipo Relación: + + + + + + + Textbox29 + 0.735cm + 5.06432cm + 0.41981cm + 5.31841cm + 1 + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + =Parameters!TipoRelacionTexto.Value + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + 2.42456cm + + + 2.05585cm + + + 3.03631cm + + + 7.7847cm + + + + + 0.44125cm + + + + + true + true + + + + + Folio + + + + + + + Textbox10 + + + White + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + Fecha + + + + + + + Textbox12 + + + White + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + Importe + + + + + + + Textbox21 + + + White + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + Folio Fiscal + + + + + + + Textbox11 + + + White + 2pt + 2pt + 2pt + 2pt + + + + + + + + 0.41479cm + + + + + true + true + + + + + =Fields!SerieFolio.Value + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Fields!Fecha.Value + + + + + + + Fecha + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Fields!Importe.Value + + + + + + + Importe1 + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Fields!FolioFiscal.Value + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + + + + + + + + + + + + + After + + + + + + + DataSet4 + 1.39643cm + 3.56258cm + 0.85604cm + 15.30142cm + 3 + + + + + + true + 14.54249cm + 2.28935cm + 20.28984cm + 46 + + =Microsoft.VisualBasic.Interaction.IIF(First(Fields!SerieFolio.Value, "DataSet4") <> "", False, True) + + + + + + + + + true + true + + + + + CARTA PORTE - TRASLADO + + + + + + + Textbox6 + 0.12917cm + 0.06399cm + 0.6cm + 20.02662cm + + + 2pt + 2pt + 2pt + 2pt + + + + + Start + + true + 16.87906cm + 0.80985cm + 20.28984cm + 47 + + + + + + CartaPorteTimbrado + + + =Parameters!SRP_LogoPath.Value + + + =Parameters!SRP_RFC.Value + + + =Parameters!SRP_SerieFolio.Value + + + =Parameters!SRP_DomicilioFiscal.Value + + + =Parameters!SRP_RegimenFiscal.Value + + + =Parameters!SRP_DomicilioExpedicion.Value + + + =Parameters!SRP_ClienteDireccion.Value + + + =Parameters!SRP_ClienteNombre.Value + + + =Parameters!SRP_ClienteRFC.Value + + + =Parameters!SRP_MedioTransporte.Value + + + =Parameters!SRP_TransporteInternacional.Value + + + =Parameters!SRP_FolioFiscal.Value + + + =Parameters!SRP_FechaCertificacion.Value + + + =Parameters!SRP_CertificadoContribuyente.Value + + + =Parameters!SRP_SerieCertificadoSAT.Value + + + =Parameters!SRP_SelloCFDI.Value + + + =Parameters!SRP_CadenaOriginal.Value + + + =Parameters!SRP_SelloSAT.Value + + + =Parameters!SRP_QR.Value + + + =Parameters!SRP_PermisoSTCC.Value + + + =Parameters!SRP_NumPermiso.Value + + + =Parameters!SRP_Aseguradora.Value + + + =Parameters!SRP_NumPoliza.Value + + + =Parameters!SRP_PlacaVM.Value + + + =Parameters!SRP_AnioVM.Value + + + =Parameters!SRP_TipoTI.Value + + + =Parameters!SRP_ViaTI.Value + + + =Parameters!SRP_UsoCFDi.Value + + + =Parameters!SRP_SubTotal.Value + + + =Parameters!SRP_Total.Value + + + =Parameters!SRP_Descuentos.Value + + + =Parameters!SRP_NombreAseguradoraMedioAmbiente.Value + + + =Parameters!SRP_NumPolizaSeguroMedioAmbiente.Value + + + =Parameters!SRP_NombreAseguradoraCarga.Value + + + =Parameters!SRP_NumPolizaSeguroCarga.Value + + + =Parameters!SRP_RemolquePlaca1.Value + + + =Parameters!SRP_RemolqueSubtimo1.Value + + + =Parameters!SRP_RemolquePlaca2.Value + + + =Parameters!SRP_RemolqueSubtimo2.Value + + + =True + + + =Parameters!SRP_PesoNetoTotal.Value + + + =Parameters!SRP_DistanciaTotal.Value + + + 17.78979cm + 1.77607cm + 20.12945cm + 48 + + + + + + 19.56586cm + + + + + + + Textbox3 + 0.04232cm + 16.6252cm + 0.6cm + 3.66464cm + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + Fecha Impresión: + + + + + + + + =Today + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + 27.94cm + 21.59cm + 0.5cm + 0.5cm + 1cm + 0.5cm + 1.27cm +