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