From 2bf555ee3af25074674961e03d909bd30175aa9f Mon Sep 17 00:00:00 2001 From: Jonathan Alexis Perez Morales Date: Tue, 22 Sep 2020 15:58:12 -0700 Subject: [PATCH 1/4] Facturacion ciclica --- Contratos/Contrato.aspx.vb | 35 +- Contratos/FacturacionMasiva.aspx | 2 +- Contratos/FacturacionMasiva.aspx.vb | 561 ++++++++++++---------------- 3 files changed, 279 insertions(+), 319 deletions(-) diff --git a/Contratos/Contrato.aspx.vb b/Contratos/Contrato.aspx.vb index 4a59ab77a..59f211c7d 100644 --- a/Contratos/Contrato.aspx.vb +++ b/Contratos/Contrato.aspx.vb @@ -705,9 +705,12 @@ Partial Class Contratos_Default End If TipoContrato = DdlTipoContrato.SelectedValue.ToEntero - TxtDescripcionTipoContrato.Text = GlobalDTContratosTipos(UsuarioActual.CveEmpresa).FiltraParametros("CveContratoTipo = " & DdlTipoContrato.SelectedValue)(0)("Descripcion").ToString() - TxtDescripcionTipoContrato.Visible = True - + If GlobalDTContratosTipos(UsuarioActual.CveEmpresa).FiltraParametros("CveContratoTipo = " & DdlTipoContrato.SelectedValue).Rows.Count > 0 Then + TxtDescripcionTipoContrato.Text = GlobalDTContratosTipos(UsuarioActual.CveEmpresa).FiltraParametros("CveContratoTipo = " & DdlTipoContrato.SelectedValue)(0)("Descripcion").ToString() + TxtDescripcionTipoContrato.Visible = True + End If + + CargaContratoPadre() UpProyecto.Update() End Sub @@ -725,6 +728,15 @@ Partial Class Contratos_Default TableDatosCabecera.Visible = True End If + If CveTipoContrato = 25 Then + DvMax.Visible = False + DvMin.Visible = False + DvTotal.Visible = False + + DivFianzas.Visible = False + DivImpuestosLocales.Visible = False + End If + ElseIf modalidadDetalleInt = 2 Then ModalidadDetalle = 2 @@ -735,6 +747,15 @@ Partial Class Contratos_Default If CveContrato > 0 AndAlso CveTipoContrato <> 25 Then TableDatosCabecera.Visible = True + End If + + If CveTipoContrato = 25 Then + DvMax.Visible = False + DvMin.Visible = False + DvTotal.Visible = False + + DivFianzas.Visible = False + DivImpuestosLocales.Visible = False End If End If @@ -755,11 +776,13 @@ Partial Class Contratos_Default Exit Sub End If + Me.CveTipoContrato = DdlTipoContrato.SelectedValue.ToEntero + 'Dim TipoMov = GlobalDTContratosTipos.FiltroPrimeroValor("TipoMovimiento", $"CveContratoTipo='{CveTipoContrato}'").ToEntero - If rpCompra.Checked Then - Dim CveContratoTipo = DdlTipoContrato.SelectedValue.ToEntero - Response.Redirect($"/Contratos/Presupuestos.aspx?CveContrato=-1&CveContratoTipo={CveContratoTipo}") + If rpCompra.Checked Then + + Response.Redirect($"/Contratos/Presupuestos.aspx?CveContrato=-1&CveContratoTipo={Me.CveTipoContrato}") 'RegistraScript("window.location='/Contratos/Presupuestos.aspx") Else diff --git a/Contratos/FacturacionMasiva.aspx b/Contratos/FacturacionMasiva.aspx index c4366650e..ad378c4fb 100644 --- a/Contratos/FacturacionMasiva.aspx +++ b/Contratos/FacturacionMasiva.aspx @@ -93,7 +93,7 @@
- + diff --git a/Contratos/FacturacionMasiva.aspx.vb b/Contratos/FacturacionMasiva.aspx.vb index b005a874d..d43c26fc3 100644 --- a/Contratos/FacturacionMasiva.aspx.vb +++ b/Contratos/FacturacionMasiva.aspx.vb @@ -166,350 +166,279 @@ Partial Class Contratos_FacturacionMasiva End Sub Protected Sub ImgFacturarTodos_Click(sender As Object, e As EventArgs) Handles BtnFacturar.Click - Dim FacturadoCorrecto = True + EjecutarFacturacion() + End Sub + + Private Sub EjecutarFacturacion() + Dim FacturadoCorrecto = True + Dim sb As New StringBuilder() + For Each row As GridViewRow In GvCiclosComerciales.Rows If row.FCCheckBox("chkDis").Checked Then - FacturadoCorrecto = EmitirImprimir(row.DataKey("CveCicloComercial").ToString.ToEntero) + Dim fecha As DateTime = DateTime.Now ', row.DataKey("FechaVenc").ToString.ToDateTime() + Dim formatoFecha = Globalization.CultureInfo.CurrentCulture.DateTimeFormat + Dim nombreMes = formatoFecha.GetMonthName(fecha.Month).ToUpper() + + Dim Etiqueta As String = String.Format("{0} - {1}", nombreMes, fecha.Year) + + Dim Resp = EmitirImprimir(row.DataKey("CveCicloComercial").ToString.ToEntero, Etiqueta) + + For Each Msg In Resp.Mensajes + sb.AppendFormat("{0}

", Msg) + Next + If Not FacturadoCorrecto Then If Mensaje = "" Then Alert("Ocurrió un error al facturar masivamente, por favor contacte a soporte técnico", TipoMensaje.MsgAdvertencia) Else Alert($"{Mensaje} en el contrato {row.DataKey("NumeroContrato").ToString}", TipoMensaje.MsgAdvertencia) End If - Exit For End If End If Next - If FacturadoCorrecto Then - Alert("Los periodos se facturaron correctamente") - TxtObservaciones.Text = "" - End If + + If sb.ToString().Length > 0 Then + Alert($"Se generaron las siguientes facturas:

{sb.ToString()}") + Else + Alert("No se generaron facturas", TipoMensaje.MsgAdvertencia) + End If + CargaDatos(DdlContrato.SelectedValue.ToEntero, DdlCliente.SelectedValue.ToEntero) RegistraScript("$('#divAgregar').modal('hide')") - UpBodyEstatus.Update() + UpBodyEstatus.Update() End Sub - Protected Sub btnFacturarAqui_Click(sender As Object, e As EventArgs) - CveCicloComercial = CType(sender, LinkButton).CommandArgument.ToEntero - CreaObjetosVenta() - - If ObjFactura Is Nothing Or ObjFactura.Cliente Is Nothing Then - Alert("Ocurrió un error al procesar los datos de la Venta.", TipoMensaje.MsgError) - ObjFactura = Nothing - Exit Sub - End If - - - If ObjFactura.CveCliente > 0 Then - If DTDetalle.Rows.Count > 0 Then - - Dim ObjVentas As New ClsVentas() - Dim ObjConta As New ClsContabilidad(ObjVentas.IniciaTransacSQL()) - Dim ObjInventario As New ClsInventarios(ObjVentas.IniciaTransacSQL()) - Dim ObjContr As New ClsContratos(ObjVentas.IniciaTransacSQL()) - Dim ObjOS As New ClsOS(ObjVentas.IniciaTransacSQL()) - Dim ObjBancos As New ClsBancos(ObjVentas.IniciaTransacSQL()) - Dim ObjClientes As New ClsClientes(ObjVentas.IniciaTransacSQL()) - Dim ObjContPaq As ClsContPAQi = Nothing - 'Dim ObjFolios As New ClsGralFolios(ObjVentas.IniciaTransacSQL()) - ErrorList = New List(Of String) - MensajeAlert = New StringBuilder - - - 'CONTABILIDAD AUTOMATICA Y AC - If UsuarioActual.Empresa.UsaAC OrElse UsuarioActual.Empresa.Funcionalidad(200) = "1" Then - ObjContPaq = New ClsContPAQi(UsuarioActual.Empresa) - End If - - - 'GUARDA VENTA - GuardarVenta(ObjVentas, ObjConta, ObjInventario, ObjContr, ObjFactura, TmpDT, ObjFactura.CveNCaVincular, ObjContPaq, ObjBancos, ObjOS) - - If CveCicloComercial > 0 AndAlso ErrorList.Count = 0 Then - If Not ObjContr.CicloComercialUpdate(CveCicloComercial, True, UsuarioActual.CveEmpresa) Then - ErrorList.Add("No se pudo actualizar ") - End If - End If - - If ObjFactura.CveVenta > 0 AndAlso ErrorList.Count = 0 AndAlso (SeGuardoPrePoliza Or ObjFactura.TipoDocto.Contiene("Ped", "Cot")) Then - ObjVentas.Commit() - If ObjContPaq IsNot Nothing Then ObjContPaq.Commit() - ViewState("CveVenta") = ObjFactura.CveVenta - - - Dim SeTimbro As Boolean = False - 'TIMBRADO Y CASO ESPECIAL NOTA DE CREDITO - - If ObjFactura.TipoDocto.Contiene("Ing", "Egs", "Ant") Then - If UsuarioActual.Empresa.TipoFacturacion = "CFDi" AndAlso UsuarioActual.Empresa.FacturaProduccion Then - - Dim sw As New Diagnostics.Stopwatch - sw.Start() - - 'FACTURA INGRESO/EGRESO - Dim ObjTimbrado As New Timbrado - - - SeTimbro = ObjTimbrado.TimbrarFactura(UsuarioActual, ObjFactura) - - sw.Stop() - GuardaLogTimbrado(sw.ElapsedMilliseconds.ToString, UsuarioActual.Empresa.CvePAC) - End If - - - 'MENSAJE PRINCIPAL - MensajeAlert.AppendFormat(String.Format("
La {0}: {1} se generó correctamente.

", ObjFactura.TipoDocumento, ObjFactura.SerieFolio)) - - - If SeTimbro Then - 'XML - Dim ArchivoXML = String.Format("{0}/XML/{1}/{2}.xml", UsuarioActual.Empresa.Ruta, ObjFactura.TipoDocto, ObjFactura.SerieFolio) - If File.Exists(ArchivoXML) Then - MensajeAlert.AppendFormat("", Encripta(String.Format("OP=FactVta&CVEVENTA={0}&EXT={1}&SERIEFOLIO={2}&TIPODOCTO={3}", ObjFactura.CveVenta, "XML", ObjFactura.SerieFolio, ObjFactura.TipoDocto))) - End If - - 'IMPRESION - GeneraPDFFactura(False) - Else - MensajeAlert.AppendFormat("La factura no se pudo timbrar. Por favor intentelo de nuevo a traves del boton Emitir o póngase en contacto con soporte técnico.") - End If - - 'MUESTA ALERT OK - Dim Liga = If(UsuarioActual.CveRol = 1165, "document.location.href=""/Ventas/Ventas.aspx?CveVenta=-1"";", $"document.location.href=""/Ventas/Clientes.aspx?CveCliente={ObjFactura.CveCliente}&Opt=3"";") - Alert(MensajeAlert.ToString, TipoMensaje.MsgInformacion) - - ObjFactura = Nothing - Else - ObjVentas.RollBack() - If ObjContPaq IsNot Nothing Then ObjContPaq.RollBack() - - For Each ErrorItem In ErrorList - Alert(ErrorItem, TipoMensaje.MsgAdvertencia) - Next - - 'MUESTA ALERT ERROR - Alert("Ocurrió un error al procesar los datos. Por favor rectifique y vuelta a intentar.", TipoMensaje.MsgError) - End If - - ObjVentas.Dispose() - ObjConta.Dispose() - ObjInventario.Dispose() - ObjContr.Dispose() - ErrorList = Nothing - MensajeAlert = Nothing - If ObjContPaq IsNot Nothing Then ObjContPaq.Dispose() - CargaDatos(DdlContrato.SelectedValue.ToEntero, DdlCliente.SelectedValue.ToEntero) - Else - ObjVentas.RollBack() - If ObjContPaq IsNot Nothing Then ObjContPaq.RollBack() - - For Each ErrorItem In ErrorList - Alert(ErrorItem, TipoMensaje.MsgAdvertencia) - Next - - 'MUESTA ALERT ERROR - Alert("Ocurrió un error al procesar los datos. Por favor rectifique y vuelta a intentar.", TipoMensaje.MsgError) - ObjVentas.Dispose() - ObjConta.Dispose() - ObjInventario.Dispose() - ObjContr.Dispose() - 'ObjFolios.Dispose() - ErrorList = Nothing - MensajeAlert = Nothing - If ObjContPaq IsNot Nothing Then ObjContPaq.Dispose() - - End If - Else - Mensaje = "Las facturas del contrato" - End If - End If - - + Protected Sub btnFacturarAqui_Click(sender As Object, e As EventArgs) + EjecutarFacturacion() End Sub - Private Function EmitirImprimir(pCveCicloComercial As Integer) As Boolean - Dim retorno As Boolean = False + Private Function EmitirImprimir(pCveCicloComercial As Integer, Etiqueta As String) As Modelos.Factura.MMensajeFactura + Dim Resp As New Modelos.Factura.MMensajeFactura ViewState("CveCicloComercial") = pCveCicloComercial - CreaObjetosVenta() + CreaObjetosVenta(Etiqueta) If ObjFactura Is Nothing Or ObjFactura.Cliente Is Nothing Then Alert("Ocurrió un error al procesar los datos de la Venta.", TipoMensaje.MsgError) ObjFactura = Nothing - Return False + Return Resp End If If ObjFactura.CveCliente > 0 Then - If DTDetalle.Rows.Count > 0 Then + If DTDetalle.Rows.Count > 0 Then + + Resp = ObjFactura.EmitirFactura() - Dim ObjVentas As New ClsVentas() - Dim ObjConta As New ClsContabilidad(ObjVentas.IniciaTransacSQL()) - Dim ObjInventario As New ClsInventarios(ObjVentas.IniciaTransacSQL()) - Dim ObjContr As New ClsContratos(ObjVentas.IniciaTransacSQL()) - Dim ObjOS As New ClsOS(ObjVentas.IniciaTransacSQL()) - Dim ObjBancos As New ClsBancos(ObjVentas.IniciaTransacSQL()) - Dim ObjClientes As New ClsClientes(ObjVentas.IniciaTransacSQL()) - Dim ObjContPaq As ClsContPAQi = Nothing - 'Dim ObjFolios As New ClsGralFolios(ObjVentas.IniciaTransacSQL()) - ErrorList = New List(Of String) - MensajeAlert = New StringBuilder + 'Dim ObjVentas As New ClsVentas() + 'Dim ObjConta As New ClsContabilidad(ObjVentas.IniciaTransacSQL()) + 'Dim ObjInventario As New ClsInventarios(ObjVentas.IniciaTransacSQL()) + 'Dim ObjContr As New ClsContratos(ObjVentas.IniciaTransacSQL()) + 'Dim ObjOS As New ClsOS(ObjVentas.IniciaTransacSQL()) + 'Dim ObjBancos As New ClsBancos(ObjVentas.IniciaTransacSQL()) + 'Dim ObjClientes As New ClsClientes(ObjVentas.IniciaTransacSQL()) + 'Dim ObjContPaq As ClsContPAQi = Nothing + ''Dim ObjFolios As New ClsGralFolios(ObjVentas.IniciaTransacSQL()) + 'ErrorList = New List(Of String) + 'MensajeAlert = New StringBuilder - 'CONTABILIDAD AUTOMATICA Y AC - If UsuarioActual.Empresa.UsaAC OrElse UsuarioActual.Empresa.Funcionalidad(200) = "1" Then - ObjContPaq = New ClsContPAQi(UsuarioActual.Empresa) - End If + ''CONTABILIDAD AUTOMATICA Y AC + 'If UsuarioActual.Empresa.UsaAC OrElse UsuarioActual.Empresa.Funcionalidad(200) = "1" Then + ' ObjContPaq = New ClsContPAQi(UsuarioActual.Empresa) + 'End If - 'GUARDA VENTA - GuardarVenta(ObjVentas, ObjConta, ObjInventario, ObjContr, ObjFactura, TmpDT, ObjFactura.CveNCaVincular, ObjContPaq, ObjBancos, ObjOS) + ''GUARDA VENTA + 'GuardarVenta(ObjVentas, ObjConta, ObjInventario, ObjContr, ObjFactura, TmpDT, ObjFactura.CveNCaVincular, ObjContPaq, ObjBancos, ObjOS) - If pCveCicloComercial > 0 AndAlso ErrorList.Count = 0 Then - If Not ObjContr.CicloComercialUpdate(pCveCicloComercial, True, UsuarioActual.CveEmpresa) Then - ErrorList.Add("No se pudo actualizar ") - End If - End If + 'If pCveCicloComercial > 0 AndAlso ErrorList.Count = 0 Then + ' If Not ObjContr.CicloComercialUpdate(pCveCicloComercial, True, UsuarioActual.CveEmpresa) Then + ' ErrorList.Add("No se pudo actualizar ") + ' End If + 'End If - If ObjFactura.CveVenta > 0 AndAlso ErrorList.Count = 0 AndAlso (SeGuardoPrePoliza Or ObjFactura.TipoDocto.Contiene("Ped", "Cot")) Then - ObjVentas.Commit() - If ObjContPaq IsNot Nothing Then ObjContPaq.Commit() - ViewState("CveVenta") = ObjFactura.CveVenta + 'If ObjFactura.CveVenta > 0 AndAlso ErrorList.Count = 0 AndAlso (SeGuardoPrePoliza Or ObjFactura.TipoDocto.Contiene("Ped", "Cot")) Then + ' ObjVentas.Commit() + ' If ObjContPaq IsNot Nothing Then ObjContPaq.Commit() + ' ViewState("CveVenta") = ObjFactura.CveVenta - Dim SeTimbro As Boolean = False - 'TIMBRADO Y CASO ESPECIAL NOTA DE CREDITO + ' Dim SeTimbro As Boolean = False + ' 'TIMBRADO Y CASO ESPECIAL NOTA DE CREDITO - If ObjFactura.TipoDocto.Contiene("Ing", "Egs", "Ant") Then - If UsuarioActual.Empresa.TipoFacturacion = "CFDi" AndAlso UsuarioActual.Empresa.FacturaProduccion Then + ' If ObjFactura.TipoDocto.Contiene("Ing", "Egs", "Ant") Then + ' If UsuarioActual.Empresa.TipoFacturacion = "CFDi" AndAlso UsuarioActual.Empresa.FacturaProduccion Then - Dim sw As New Diagnostics.Stopwatch - sw.Start() + ' Dim sw As New Diagnostics.Stopwatch + ' sw.Start() - 'FACTURA INGRESO/EGRESO - Dim ObjTimbrado As New Timbrado + ' 'FACTURA INGRESO/EGRESO + ' Dim ObjTimbrado As New Timbrado - SeTimbro = ObjTimbrado.TimbrarFactura(UsuarioActual, ObjFactura) + ' SeTimbro = ObjTimbrado.TimbrarFactura(UsuarioActual, ObjFactura) - sw.Stop() - GuardaLogTimbrado(sw.ElapsedMilliseconds.ToString, UsuarioActual.Empresa.CvePAC) - End If + ' sw.Stop() + ' GuardaLogTimbrado(sw.ElapsedMilliseconds.ToString, UsuarioActual.Empresa.CvePAC) + ' End If - 'MENSAJE PRINCIPAL - MensajeAlert.AppendFormat(String.Format("
La {0}: {1} se generó correctamente.

", ObjFactura.TipoDocumento, ObjFactura.SerieFolio)) + ' 'MENSAJE PRINCIPAL + ' MensajeAlert.AppendFormat(String.Format("
La {0}: {1} se generó correctamente.

", ObjFactura.TipoDocumento, ObjFactura.SerieFolio)) - If SeTimbro Then - 'XML - Dim ArchivoXML = String.Format("{0}/XML/{1}/{2}.xml", UsuarioActual.Empresa.Ruta, ObjFactura.TipoDocto, ObjFactura.SerieFolio) - If File.Exists(ArchivoXML) Then - MensajeAlert.AppendFormat("", Encripta(String.Format("OP=FactVta&CVEVENTA={0}&EXT={1}&SERIEFOLIO={2}&TIPODOCTO={3}", ObjFactura.CveVenta, "XML", ObjFactura.SerieFolio, ObjFactura.TipoDocto))) - End If + ' If SeTimbro Then + ' 'XML + ' Dim ArchivoXML = String.Format("{0}/XML/{1}/{2}.xml", UsuarioActual.Empresa.Ruta, ObjFactura.TipoDocto, ObjFactura.SerieFolio) + ' If File.Exists(ArchivoXML) Then + ' MensajeAlert.AppendFormat("", Encripta(String.Format("OP=FactVta&CVEVENTA={0}&EXT={1}&SERIEFOLIO={2}&TIPODOCTO={3}", ObjFactura.CveVenta, "XML", ObjFactura.SerieFolio, ObjFactura.TipoDocto))) + ' End If - 'IMPRESION - GeneraPDFFactura(False) - Else - MensajeAlert.AppendFormat("La factura no se pudo timbrar. Por favor intentelo de nuevo a traves del boton Emitir o póngase en contacto con soporte técnico.") - End If + ' 'IMPRESION + ' GeneraPDFFactura(False) + ' Else + ' MensajeAlert.AppendFormat("La factura no se pudo timbrar. Por favor intentelo de nuevo a traves del boton Emitir o póngase en contacto con soporte técnico.") + ' End If - 'MUESTA ALERT OK - Dim Liga = If(UsuarioActual.CveRol = 1165, "document.location.href=""/Ventas/Ventas.aspx?CveVenta=-1"";", $"document.location.href=""/Ventas/Clientes.aspx?CveCliente={ObjFactura.CveCliente}&Opt=3"";") - retorno = True - ObjFactura = Nothing - Else - ObjVentas.RollBack() - If ObjContPaq IsNot Nothing Then ObjContPaq.RollBack() + ' 'MUESTA ALERT OK + ' Dim Liga = If(UsuarioActual.CveRol = 1165, "document.location.href=""/Ventas/Ventas.aspx?CveVenta=-1"";", $"document.location.href=""/Ventas/Clientes.aspx?CveCliente={ObjFactura.CveCliente}&Opt=3"";") + ' retorno = True + ' ObjFactura = Nothing + ' Else + ' ObjVentas.RollBack() + ' If ObjContPaq IsNot Nothing Then ObjContPaq.RollBack() - For Each ErrorItem In ErrorList - Alert(ErrorItem, TipoMensaje.MsgAdvertencia) - Next + ' For Each ErrorItem In ErrorList + ' Alert(ErrorItem, TipoMensaje.MsgAdvertencia) + ' Next - 'MUESTA ALERT ERROR - Alert("Ocurrió un error al procesar los datos. Por favor rectifique y vuelta a intentar.", TipoMensaje.MsgError) - End If + ' 'MUESTA ALERT ERROR + ' Alert("Ocurrió un error al procesar los datos. Por favor rectifique y vuelta a intentar.", TipoMensaje.MsgError) + ' End If - ObjVentas.Dispose() - ObjConta.Dispose() - ObjInventario.Dispose() - ObjContr.Dispose() - ErrorList = Nothing - MensajeAlert = Nothing - If ObjContPaq IsNot Nothing Then ObjContPaq.Dispose() - Else - ObjVentas.RollBack() - If ObjContPaq IsNot Nothing Then ObjContPaq.RollBack() + ' ObjVentas.Dispose() + ' ObjConta.Dispose() + ' ObjInventario.Dispose() + ' ObjContr.Dispose() + ' ErrorList = Nothing + ' MensajeAlert = Nothing + ' If ObjContPaq IsNot Nothing Then ObjContPaq.Dispose() + 'Else + ' ObjVentas.RollBack() + ' If ObjContPaq IsNot Nothing Then ObjContPaq.RollBack() - For Each ErrorItem In ErrorList - Alert(ErrorItem, TipoMensaje.MsgAdvertencia) - Next + ' For Each ErrorItem In ErrorList + ' Alert(ErrorItem, TipoMensaje.MsgAdvertencia) + ' Next - 'MUESTA ALERT ERROR - Alert("Ocurrió un error al procesar los datos. Por favor rectifique y vuelta a intentar.", TipoMensaje.MsgError) - ObjVentas.Dispose() - ObjConta.Dispose() - ObjInventario.Dispose() - ObjContr.Dispose() - 'ObjFolios.Dispose() - ErrorList = Nothing - MensajeAlert = Nothing - If ObjContPaq IsNot Nothing Then ObjContPaq.Dispose() - End If + ' 'MUESTA ALERT ERROR + ' Alert("Ocurrió un error al procesar los datos. Por favor rectifique y vuelta a intentar.", TipoMensaje.MsgError) + ' ObjVentas.Dispose() + ' ObjConta.Dispose() + ' ObjInventario.Dispose() + ' ObjContr.Dispose() + ' 'ObjFolios.Dispose() + ' ErrorList = Nothing + ' MensajeAlert = Nothing + ' If ObjContPaq IsNot Nothing Then ObjContPaq.Dispose() + 'End If Else Mensaje = "No se pudo completar facturación por que no se encontraron partidas " End If End If TmpDT.Clear() - Return retorno + Return Resp End Function - Private Sub CreaDTVentas() + Private Sub CreaDTVentas() TmpDT = New DataTable - TmpDT.Columns.Add("CveVenta", GetType(Integer)) - TmpDT.Columns.Add("Consec", GetType(Integer)) - TmpDT.Columns.Add("Cantidad", GetType(Double)) - TmpDT.Columns.Add("Codigo", GetType(String)) - TmpDT.Columns.Add("CveUM", GetType(Integer)) - TmpDT.Columns.Add("UM", GetType(String)) - TmpDT.Columns.Add("CveClasificacion", GetType(Integer)) - TmpDT.Columns.Add("Clasificacion", GetType(String)) - TmpDT.Columns.Add("CvePS", GetType(Integer)) - TmpDT.Columns.Add("PS", GetType(String)) - TmpDT.Columns.Add("CodigoPS", GetType(String)) - TmpDT.Columns.Add("CveTipoInvPS", GetType(Integer)) - TmpDT.Columns.Add("SerieLote", GetType(String)) - TmpDT.Columns.Add("Obs", GetType(String)) - TmpDT.Columns.Add("TiempoEntrega", GetType(String)) - TmpDT.Columns.Add("PU", GetType(Double)) - TmpDT.Columns.Add("IVA", GetType(Double)) - TmpDT.Columns.Add("IEPS", GetType(Double)) - TmpDT.Columns.Add("Descuento", GetType(Double)) - TmpDT.Columns.Add("TipoDescuento", GetType(Integer)) - TmpDT.Columns.Add("Total", GetType(Double)) - TmpDT.Columns.Add("CveProyecto", GetType(Integer)) - TmpDT.Columns.Add("Proyecto", GetType(String)) - TmpDT.Columns.Add("CveSubProyecto", GetType(Integer)) - TmpDT.Columns.Add("SubProyecto", GetType(String)) - TmpDT.Columns.Add("CvePresupuestoIngreso", GetType(Integer)) - TmpDT.Columns.Add("CveContratoDetalle", GetType(Integer)) - TmpDT.Columns.Add("CveVentaDetalle", GetType(Integer)) - TmpDT.Columns.Add("Observacion", GetType(String)) - TmpDT.Columns.Add("SATClaveUM", GetType(String)) - TmpDT.Columns.Add("SATClaveProdServ", GetType(String)) - TmpDT.Columns.Add("CuentaPredial", GetType(String)) - TmpDT.Columns.Add("NoIdentificacion", GetType(String)) - TmpDT.Columns.Add("TotalImporte", GetType(Double)) - TmpDT.Columns.Add("PorcentajeIVA", GetType(Double)) - TmpDT.Columns.Add("ImporteIVA", GetType(Double)) - TmpDT.Columns.Add("PorcentajeIEPS", GetType(Double)) - TmpDT.Columns.Add("ImporteIEPS", GetType(Double)) - TmpDT.Columns.Add("PorcentajeRetIVA", GetType(Double)) - TmpDT.Columns.Add("ImporteRetIVA", GetType(Double)) - TmpDT.Columns.Add("PorcentajeRetISR", GetType(Double)) - TmpDT.Columns.Add("ImporteRetISR", GetType(Double)) - + TmpDT.Columns.Add("CveVenta", GetType(Integer)) + TmpDT.Columns.Add("Consec", GetType(Integer)) + TmpDT.Columns.Add("Cantidad", GetType(Decimal)) + TmpDT.Columns.Add("Codigo", GetType(String)) + TmpDT.Columns.Add("CveUM", GetType(Integer)) + TmpDT.Columns.Add("UM", GetType(String)) + TmpDT.Columns.Add("SATClaveUM", GetType(String)) + TmpDT.Columns.Add("CveClasificacion", GetType(Integer)) + TmpDT.Columns.Add("Clasificacion", GetType(String)) + TmpDT.Columns.Add("CvePS", GetType(Integer)) + TmpDT.Columns.Add("PS", GetType(String)) + TmpDT.Columns.Add("CodigoPS", GetType(String)) + TmpDT.Columns.Add("SATClaveProdServ", GetType(String)) + TmpDT.Columns.Add("NoIdentificacion", GetType(String)) + TmpDT.Columns.Add("CveTipoPS", GetType(Integer)) + TmpDT.Columns.Add("CveTipoInvPS", GetType(Integer)) + TmpDT.Columns.Add("Serie", GetType(String)) + TmpDT.Columns.Add("CuentaPredial", GetType(String)) + TmpDT.Columns.Add("Obs", GetType(String)) + TmpDT.Columns.Add("TiempoEntrega", GetType(String)) + TmpDT.Columns.Add("PU", GetType(Decimal)) + TmpDT.Columns.Add("IVA", GetType(Decimal)) + TmpDT.Columns.Add("ImporteIVA", GetType(Decimal)) + TmpDT.Columns.Add("PorcentajeIVA", GetType(Decimal)) + TmpDT.Columns.Add("ImporteRetIVA", GetType(Decimal)) + TmpDT.Columns.Add("ImporteRetISR", GetType(Decimal)) + TmpDT.Columns.Add("PorcentajeRetIVA", GetType(Decimal)) + TmpDT.Columns.Add("PorcentajeRetISR", GetType(Decimal)) + TmpDT.Columns.Add("ImporteIEPS", GetType(Decimal)) + TmpDT.Columns.Add("IEPS", GetType(Decimal)) + TmpDT.Columns.Add("PorcentajeIEPS", GetType(Decimal)) + TmpDT.Columns.Add("Descuento", GetType(Decimal)) + TmpDT.Columns.Add("TipoDescuento", GetType(Integer)) + TmpDT.Columns.Add("TotalImporte", GetType(Decimal)) + TmpDT.Columns.Add("Total", GetType(Decimal)) + 'Para uso del módulo contable + TmpDT.Columns.Add("AsientoContableVentas", GetType(Integer)) + TmpDT.Columns.Add("IdCtaContVentas", GetType(Integer)) + TmpDT.Columns.Add("AplicaParaConcepto", GetType(Boolean)) + TmpDT.Columns.Add("CveProyecto", GetType(Integer)) + TmpDT.Columns.Add("Proyecto", GetType(String)) + TmpDT.Columns.Add("CveSubProyecto", GetType(Integer)) + TmpDT.Columns.Add("SubProyecto", GetType(String)) + TmpDT.Columns.Add("CveVentaDetallePadre", GetType(Integer)) + + 'TipoDescuento: 1 = Descuento * PU; 2 = Descuento por Total del concepto + TmpDT.Columns.Add("CvePresupuestoIngreso", GetType(Integer)) + TmpDT.Columns.Add("CveFuenteRecaudacion", GetType(Integer)) + 'Contratos + TmpDT.Columns.Add("CveContratoDetalle", GetType(Integer)) + 'Remisiones a Facturas + TmpDT.Columns.Add("CveVentaDetalle", GetType(Integer)) + TmpDT.Columns.Add("CveVentaDetalleRemision", GetType(Integer)) + TmpDT.Columns.Add("CveVentaDetalleCotizacion", GetType(Integer)) + + 'Pedido2 a Facturas + TmpDT.Columns.Add("CveVentaDetallePedido2", GetType(Integer)) + + TmpDT.Columns.Add("Origen", GetType(Integer)) + 'Ordenes Servicio + TmpDT.Columns.Add("CveOS", GetType(Integer)) + TmpDT.Columns.Add("CveOSDetalle", GetType(Integer)) + TmpDT.Columns.Add("SeFacturara", GetType(Integer)) + TmpDT.Columns.Add("Folio", GetType(Integer)) + TmpDT.Columns.Add("Estatus", GetType(String)) + 'Ordenamiento + TmpDT.Columns.Add("Orden", GetType(Integer)) + TmpDT.Columns.Add("TipoDocto", GetType(String)) + 'OC + TmpDT.Columns.Add("CveOrdenCompraDetalle", GetType(Integer)) + TmpDT.Columns.Add("EntregaDirecta", GetType(Integer)) + + TmpDT.Columns.Add("CveMovimientoDetallePedido", GetType(Integer)) + TmpDT.Columns.Add("CantidadFacturadaRem", GetType(Decimal)) + TmpDT.Columns.Add("CantidadFacturadaCot", GetType(Decimal)) + TmpDT.Columns.Add("CantidadFacturadaPed2", GetType(Decimal)) + TmpDT.Columns.Add("CantidadInventario", GetType(Decimal)) + + TmpDT.Columns.Add("ClaveSATFraccionArancelaria", GetType(String)) + TmpDT.Columns.Add("ClaveSATUnidadAduana", GetType(String)) + TmpDT.Columns.Add("ClaveSATFraccionArancelariaDescripcion", GetType(String)) + TmpDT.Columns.Add("ClaveSATUnidadAduanaDescripcion", GetType(String)) + + TmpDT.Columns.Add("CveTamaño", GetType(Integer)) + TmpDT.Columns.Add("EsCargo", GetType(Boolean)) End Sub - Private Sub CreaObjetosVenta(Optional VistaPrevia As Boolean = False) + Private Sub CreaObjetosVenta(Etiqueta As String, Optional VistaPrevia As Boolean = False) Dim ObjFolios As New ClsGralFolios() Dim Folio As String = "" Dim Serie As String = "" @@ -518,10 +447,9 @@ Partial Class Contratos_FacturacionMasiva Dim Proyecto As String = "" Dim SubProyecto As String = "" - - - ObjFactura = New Modelos.Factura - Dim objContratos As New ClsContratos + ObjFactura = New Modelos.Factura(UsuarioActual) + ObjFactura.DirectorioServidor = Server.MapPath("/") + ObjFactura.CveCicloComercial = CveCicloComercial Dim DR As DataRow = DTCicloComercial.FiltroPrimero($"CveCicloComercial = {CveCicloComercial}") ObjFactura.Version = "3.3" @@ -544,7 +472,7 @@ Partial Class Contratos_FacturacionMasiva ObjFactura.MetodoPago = "Efectivo" ObjFactura.FechaPago = DateTime.Today ObjFactura.MotivoDescuento = "" - ObjFactura.Observaciones = DR("Observaciones").ToString + ObjFactura.Observaciones = Etiqueta + " " + TxtObservaciones.Text + " " + DR("Observaciones").ToString ObjFactura.FechaEjecucion = DateTime.Today 'ObjFactura.ClaveMetodoPagoSAT = GlobalDTMetodosPago.FiltroPrimeroValor("ClaveSAT", $"CveMetodoPago = {1}") ObjFactura.UsuarioCreo = UsuarioActual.Usuario @@ -587,15 +515,16 @@ Partial Class Contratos_FacturacionMasiva End If DT.Dispose() End If - ObjFolios.Dispose() - + ObjFolios.Dispose() + + Dim objContratos As New ClsContratos If objContratos.GetContratosDetalle(DR("CveContrato").ToString.ToEntero) Then DTDetalle = objContratos.DtResultados Else DTDetalle = Nothing End If - - objContratos.Dispose() + objContratos.Dispose() + Dim DtR As DataRow ObjFactura.SubTotal = SUM(DTDetalle, "Total").ToDecimal ObjFactura.IVA = SUM(DTDetalle, "ImporteIVA").ToDecimal @@ -607,34 +536,27 @@ Partial Class Contratos_FacturacionMasiva ObjFactura.Folio = Folio.ToEntero For Each row As DataRow In DTDetalle.Rows + Dim drPS As DataRow = GlobalDTPS(UsuarioActual.CveEmpresa, CvePS:=row("CvePS").ToString().ToEntero()).FiltroPrimero("") + DtR = TmpDT.NewRow DtR("CveVenta") = -1 DtR("Codigo") = row("Codigo") DtR("Consec") = TmpDT.Rows.Count + 1 DtR("Cantidad") = row("CantidadContratada") DtR("CveUM") = row("CveUM") - DtR("UM") = row("UM") + DtR("UM") = row("UM") + DtR("SATClaveUM") = row("SATClaveUM") DtR("CveClasificacion") = row("CveClasificacion") DtR("Clasificacion") = row("Clasificacion") DtR("CvePS") = row("CvePS") DtR("PS") = row("PS") - DtR("CodigoPS") = row("CodigoPS") - DtR("Obs") = "" - DtR("PU") = row("PU") - DtR("Descuento") = 0 - DtR("TipoDescuento") = 0 - DtR("CveProyecto") = CveProyecto - DtR("Proyecto") = Proyecto - DtR("CveSubProyecto") = CveSubProyecto - DtR("SubProyecto") = SubProyecto - DtR("CveVentaDetalle") = 0 - DtR("CveContratoDetalle") = row("CveContratoDetalle") - DtR("Observacion") = row("Observacion") - DtR("SATClaveUM") = row("SATClaveUM") + DtR("CodigoPS") = row("CodigoPS") DtR("SATClaveProdServ") = row("SATClaveProdServ") - DtR("CuentaPredial") = row("CuentaPredial") - DtR("NoIdentificacion") = row("NoIdentificacion") - DtR("TotalImporte") = row("Total") + DtR("NoIdentificacion") = row("NoIdentificacion") + DtR("CveTipoPS") = DrPS("CveTipoPS") + DtR("CveTipoInvPS") = DrPS("Inv_CveMetodoInventario") + DtR("Obs") = Etiqueta + " " + TxtObservaciones.Text + " " + row("Observacion").ToString + DtR("PU") = row("PU") DtR("IVA") = row("PorcentajeIVA") DtR("PorcentajeIVA") = row("PorcentajeIVA") DtR("ImporteIVA") = row("ImporteIVA") @@ -644,6 +566,17 @@ Partial Class Contratos_FacturacionMasiva DtR("ImporteRetIVA") = row("ImporteRetIVA") DtR("PorcentajeRetISR") = row("PorcentajeRetISR") DtR("ImporteRetISR") = row("ImporteRetISR") + DtR("Descuento") = 0 + DtR("TipoDescuento") = 0 + DtR("CveProyecto") = CveProyecto + DtR("Proyecto") = Proyecto + DtR("CveSubProyecto") = CveSubProyecto + DtR("SubProyecto") = SubProyecto + DtR("CveVentaDetalle") = 0 + DtR("CveContratoDetalle") = row("CveContratoDetalle") + DtR("CuentaPredial") = row("CuentaPredial") + DtR("TotalImporte") = row("Total") + TmpDT.Rows.Add(DtR) Next @@ -952,7 +885,9 @@ Partial Class Contratos_FacturacionMasiva IdCtaContable = 0 CveCuenta = 0 Multiplicador = (Row("Multiplicador").ToString.ToEntero) - Concepto = ObjConta.ObtenerConceptoEmpresa(UsuarioActual.CveEmpresa, ConceptoContable, ObjFactura.Cliente.Nombre, $"{ObjFactura.Serie}-{ObjFactura.Folio}", "") + Concepto = ObjConta.ObtenerConceptoEmpresa(UsuarioActual.CveEmpresa, ConceptoContable, ObjFactura.Cliente.Nombre, $"{ObjFactura.Serie}-{ObjFactura.Folio}", "") + + Dim PorcentajeImpuesto As Decimal = 0 Select Case ConceptoContable Case 1 'Cliente @@ -1077,6 +1012,7 @@ Partial Class Contratos_FacturacionMasiva FechaMovimiento = ObjFactura.FechaPago IdCtaContable = UsuarioActual.Empresa.IdCuentaIVAxTrasladar If tipoCambio > 1 Then Concepto += $" TC:{tipoCambio} ${importeMovimiento.FormatoNumero(2)}" + PorcentajeImpuesto = TmpDTDetalle.MAX("PorcentajeIVA").ToDecimal Case 38 'IEPS por Trasladar If Not ObjFactura.TipoDocto.Contiene("Rem") Then @@ -1089,7 +1025,8 @@ Partial Class Contratos_FacturacionMasiva IdCtaContable = ObjConta.DtResultados.Rows(0)("IdCuentaIEPSxTrasladar").ToString.ToEntero CveCuenta = ObjConta.DtResultados.Rows(0)("IdCuentaIEPSxTrasladarSIG").ToString.ToEntero End If - End If + End If + PorcentajeImpuesto = TmpDTDetalle.MAX("PorcentajeIEPS").ToDecimal End If End Select @@ -1101,7 +1038,7 @@ Partial Class Contratos_FacturacionMasiva idCuentaContabilizacion = 0 End If - If Not ObjConta.AddPrePolizasDetalle(ObjFactura.CvePrePoliza, TipoMovimiento, importeMovimiento, Referencia, ConceptoContable, Concepto, FechaMovimiento, IdCtaContable, -1, CveVenta:=ObjFactura.CveVenta, CveCliente:=ObjFactura.CveCliente, CveIE:=CveIE, ImporteMX:=importeMX, ImporteME:=If(tipoCambio = 1, 0, importeMovimiento)) Then + If Not ObjConta.AddPrePolizasDetalle(ObjFactura.CvePrePoliza, TipoMovimiento, importeMovimiento, Referencia, ConceptoContable, Concepto, FechaMovimiento, IdCtaContable, -1, CveVenta:=ObjFactura.CveVenta, CveCliente:=ObjFactura.CveCliente, CveIE:=CveIE, ImporteMX:=importeMX, ImporteME:=If(tipoCambio = 1, 0, importeMovimiento), PorcentajeImpuesto:=PorcentajeImpuesto) Then ErrorPrepoliza = True Else ViewState("SeGuardoPrePoliza") = True From 719a06b1c9cbda446145cfc07a213b6e426b89b8 Mon Sep 17 00:00:00 2001 From: Jonathan Alexis Perez Morales Date: Tue, 22 Sep 2020 15:58:51 -0700 Subject: [PATCH 2/4] No deducibles --- Compras/Compras.aspx.vb | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Compras/Compras.aspx.vb b/Compras/Compras.aspx.vb index 6c267c75d..725e284e0 100644 --- a/Compras/Compras.aspx.vb +++ b/Compras/Compras.aspx.vb @@ -16933,6 +16933,8 @@ Partial Class Compras_Compras CargaRetIVAConcepto() CargaRetISRConcepto() + Dim NumNoDed As Integer = TmpDT.COUNT("CvePS", "NoDeducible = True ") + If NumNoDed > 0 Then GvPS.Columns(10).Visible = True 'visualiza columnas de nodeducibles If DdlTipoComprobante.SelectedValue.Contiene("NC", "DEV") Then InicializaAplicaNCFact() From ccb05c21a09bebe91800d2be8927210921bdd9d6 Mon Sep 17 00:00:00 2001 From: Jonathan Alexis Perez Morales Date: Tue, 22 Sep 2020 16:01:13 -0700 Subject: [PATCH 3/4] Cambios en mensajes de traspaso --- Inventarios/RecepcionAlmacen.aspx | 23 +++++++++++++++++++++-- Inventarios/RecepcionAlmacen.aspx.vb | 17 +++++++++++------ 2 files changed, 32 insertions(+), 8 deletions(-) diff --git a/Inventarios/RecepcionAlmacen.aspx b/Inventarios/RecepcionAlmacen.aspx index a4d52dd3d..e0791c45f 100644 --- a/Inventarios/RecepcionAlmacen.aspx +++ b/Inventarios/RecepcionAlmacen.aspx @@ -283,7 +283,7 @@
- +
@@ -360,6 +360,18 @@ + <%--ADVERTENCIA--%> +
+
+
+
+ + Información: + +
+
+
+
@@ -418,7 +430,7 @@ + DataKeyNames="EntregaDirecta,Consec,CodigoBarras,CvePS,CveUM,PU,CantidadC,CantidadF,UM,PS,CveCompraDetalle,CveOrdenCompraDetalle,PUExtranjero,AplicaSerieLote,CveClasificacion,Codigo,CveVentaDetalle,CostoIndirecto,CveTamaño,Lote,AplicaSeccion,AplicaLote,AplicaCaducidad,AplicaSerie" HeaderStyle-CssClass="Titulos" RowStyle-Height="25px" CssClass="table table-striped table-hover Widthall ScrollAD mysmallbtn" data-heighterror="450" data-freezerows="1" GridLines="None"> @@ -1005,6 +1017,13 @@ }); } + if ($('#DivTraspasoDevolucion')) { + $("#DivTraspasoDevolucion").pulsate("destroy"); + jQuery('#DivTraspasoDevolucion').pulsate({ + color: "#faebcc" + }); + } + }); } diff --git a/Inventarios/RecepcionAlmacen.aspx.vb b/Inventarios/RecepcionAlmacen.aspx.vb index 027ccf5b3..539feae18 100644 --- a/Inventarios/RecepcionAlmacen.aspx.vb +++ b/Inventarios/RecepcionAlmacen.aspx.vb @@ -377,7 +377,7 @@ Partial Class Inventarios_RecepcionAlmacen ViewState("CveVendedor") = value End Set End Property - Private Property RealizarTraspasoAlmacenDevolucion() As Boolean + Private Property RealizarTraspasoAlmacenDevolucion As Boolean Get Return If(IsNothing(ViewState("RealizarTraspasoAlmacenDevolucion")), False, CBool(ViewState("RealizarTraspasoAlmacenDevolucion"))) End Get @@ -926,11 +926,16 @@ Partial Class Inventarios_RecepcionAlmacen DtRecepcion = ObjInventario.DtResultados.Copy() End If - If TipoMovimiento = 2 AndAlso GlobalDTAlmacen(UsuarioActual.CveEmpresa, CveTipoAlmacen:=21).Rows.Count > 0 Then + CveAlmacenDevolucionProveedor = DtRecepcion.Rows(0)("CveAlmacenDevolucionProveedor").ToString.ToEntero + + If TipoMovimiento = 2 AndAlso CveAlmacenDevolucionProveedor > 0 Then RealizarTraspasoAlmacenDevolucion = True - CveAlmacenDevolucionProveedor = DtRecepcion.Rows(0)("CveAlmacenDevolucionProveedor").ToString.ToEntero - 'CreaDTAlmacenDevolucion() - 'CargaAlmacenes(-1, "21", CveTipoCompra) + + DivTraspasoDevolucion.Visible = True + LtlTextoDevolucion.Text = "La mercancía sera trasladada desde el almacen seleccionado al almacén de devolución" + ElseIf TipoMovimiento = 2 AndAlso GlobalDTAlmacen(UsuarioActual.CveEmpresa, CveTipoAlmacen:=21).Rows.Count = 0 Then + LtlTextoDevolucion.Text = "La mercancía sera devuelta ha el almacen seleccionado." + DivTraspasoDevolucion.Visible = True End If DtDatosDetalle = Nothing @@ -3261,7 +3266,7 @@ Partial Class Inventarios_RecepcionAlmacen Msg.AppendFormat("Movimiento de Salida: Folio: {0}", String.Format("{1}", CveMovimientoSalidaTraspaso, FolioSalidaTraspaso)) Msg.AppendFormat("
Imprimir Movimiento ", Encripta(String.Format("OP=Alm&CveMovimiento={0}", CveMovimientoSalidaTraspaso))) - Msg.AppendFormat("
Movimiento de Entrada: Folio: {0}", link) + Msg.AppendFormat("

Movimiento de control: Folio: {0}", link) Msg.AppendFormat("
Imprimir Movimiento ", Encripta(String.Format("OP=Alm&CveMovimiento={0}", CveMovimiento))) End If From c035901a9538c0940ff6ea54883bd823898b28db Mon Sep 17 00:00:00 2001 From: Jonathan Alexis Perez Morales Date: Tue, 22 Sep 2020 16:01:31 -0700 Subject: [PATCH 4/4] Refacturacion de anticipos --- Ventas/RepCancelacionesPorRespuesta.aspx.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Ventas/RepCancelacionesPorRespuesta.aspx.cs b/Ventas/RepCancelacionesPorRespuesta.aspx.cs index 96c2c35c3..df8d7e78a 100644 --- a/Ventas/RepCancelacionesPorRespuesta.aspx.cs +++ b/Ventas/RepCancelacionesPorRespuesta.aspx.cs @@ -277,7 +277,7 @@ public partial class Ventas_RepCancelacionesPorRespuesta : ClsPaginas private Modelos.Factura.MCancelacionVentaMensaje CancelarDocumento(int CveVenta, int CveEstatus, int CveCliente, string Folio, string FolioFiscal, string CancelacionAcuse, DateTime CancelacionFecha, string TipoComprobante, double Total, int CvePACCancelacion, bool EsRefacturacion = false) { Modelos.Factura.MCancelacionVentaMensaje retorno = null; - var factura = new Modelos.Factura(UsuarioActual, CveVenta, UsuarioActual.CveEmpresa); + var factura = new Modelos.Factura(UsuarioActual, CveVenta, UsuarioActual.CveEmpresa, EsCancelacion:true); if (EsRefacturacion) { retorno = factura.CancelarPorRefacturacion();