diff --git a/Ventas/Ventas.aspx.vb b/Ventas/Ventas.aspx.vb
index ac468f62c..18dcd69a2 100644
--- a/Ventas/Ventas.aspx.vb
+++ b/Ventas/Ventas.aspx.vb
@@ -10638,6 +10638,8 @@ Partial Class Ventas
If ObjFactura.CveCliente > 0 Or CveEmpresaCRM > 0 Then
If TmpDT.Rows.Count > 0 Then
+ BtnEmitirImprimir.Enabled = False
+
Dim ObjVentas As New ClsVentas()
Dim ObjConta As New ClsContabilidad(ObjVentas.IniciaTransacSQL())
Dim ObjInventario As New ClsInventarios(ObjVentas.IniciaTransacSQL())
@@ -11088,469 +11090,482 @@ Partial Class Ventas
BtnEmitirImprimir.Visible = False
- ObjFactura.DtDetalle = TmpDT 'actualiza por cambios de pedimentos.
- ObjFactura.Timbre = PreParaTimbre(ObjFactura)
-
- 'LIMPIA LOS ANTICIPOS RELACIONADOS QUE YA SE APLICARON
- If ListaAnticiposAplicados IsNot Nothing Then
- ListaAnticiposAplicados.Clear()
- End If
-
- If ListaDevolucionesAplicadas IsNot Nothing Then
- ListaDevolucionesAplicadas.Clear()
- End If
-
- 'ENVIAR POLIZA VIRTUAL
- If ErrorList.Count = 0 Then
- If UsuarioActual.Empresa.Funcionalidad(576) = "1" AndAlso EsProduccion Then
- GeneraPolizaVentaWS(ObjFactura)
- End If
- End If
-
- 'Try
- ' 'RMF, cuando es pedido, se manda autorización.
- ' If ObjFactura.TipoDocto.Contiene("PA") Then
-
- ' Dim Titulo As String = "Solicitud de autorización" 'usuarios de crédito y cobranza
- ' Dim Msg As String = String.Format("{0} - Folio {1} ", DdlSubProyectoDatos.SelectedItem.Text, TxtFolio.Text)
- ' 'If UsuarioActual.CveEmpresa = 119 Then
- ' ' ClsSisNotificaciones.SendNotificacionERP(1715, Titulo, Msg, 1)
- ' ' ClsSisNotificaciones.SendNotificacionERP(1815, Titulo, Msg, 1)
- ' ' ClsSisNotificaciones.SendNotificacionERP(1830, Titulo, Msg, 1)
- ' 'End If
-
- ' End If
- 'Catch ex As Exception
- ' OnError("Ocurrió un error al mandar las notificaciones de autorización", ex)
- 'End Try
-
-
-
Try
- Dim DirectoriArchivoXML As String = String.Format("{0}{1}", UsuarioActual.Empresa.Ruta, ObjFactura.TipoDocto) ' System.IO.Path.Combine()
- If Not Directory.Exists(DirectoriArchivoXML) Then
- Directory.CreateDirectory(DirectoriArchivoXML)
+ 'MENSAJE PRINCIPAL
+ MensajeAlert.AppendFormat(String.Format("
La {0}: {1} se generó correctamente.
", ObjFactura.TipoDocumento, ObjFactura.SerieFolio))
+
+ ObjFactura.DtDetalle = TmpDT 'actualiza por cambios de pedimentos.
+ ObjFactura.Timbre = PreParaTimbre(ObjFactura)
+
+ 'Throw New Exception("Prueba error")
+
+ 'LIMPIA LOS ANTICIPOS RELACIONADOS QUE YA SE APLICARON
+ If ListaAnticiposAplicados IsNot Nothing Then
+ ListaAnticiposAplicados.Clear()
End If
- Catch ex As Exception
- OnError("Ocurrió un error al generar el directorio de xml", ex)
- End Try
- Dim SeTimbro As Boolean = False
- Dim SeTimbroNC As Boolean = False
- Dim EstatusSMS As Integer = 0
- Dim MsgErrorTimbrado As String = ""
+ If ListaDevolucionesAplicadas IsNot Nothing Then
+ ListaDevolucionesAplicadas.Clear()
+ End If
- Dim MsgCancelacionRefacturacion As Modelos.Factura.MCancelacionVentaMensaje = Nothing
-
- 'TIMBRADO Y CASO ESPECIAL NOTA DE CREDITO
- If (TipoDoctoDevolucion = "" OrElse Not TipoDoctoDevolucion.Contiene("Rem", "RNC", "Cot", "Ped", "DPe", "PA", "Ped")) Then
-
- Dim DebeTimbrar As Boolean = True
- If UsuarioActual.CveEmpresa.Contiene(1, 72, 80) Then
- 'si tiene anticipos seleccionados y el total es cero, que no se timbre(previo empresa72)
- If LblAmortizacion.Text.ToDouble > 0 And TxtTotal.Text.ToDouble <= 0 Then
- DebeTimbrar = False
+ 'ENVIAR POLIZA VIRTUAL
+ If ErrorList.Count = 0 Then
+ If UsuarioActual.Empresa.Funcionalidad(576) = "1" AndAlso EsProduccion Then
+ GeneraPolizaVentaWS(ObjFactura)
End If
End If
- 'Si es AMORTIZACIÓN ANTICIPO SOBRE FACTURA EN CERO no debe timbrar
- If DdlTipoAmortizacionAnticipo.SelectedValue = "3" Then
- DebeTimbrar = False
- End If
+ 'Try
+ ' 'RMF, cuando es pedido, se manda autorización.
+ ' If ObjFactura.TipoDocto.Contiene("PA") Then
- If UsuarioActual.TienePermisoProceso(335) Then
- DebeTimbrar = False
- End If
+ ' Dim Titulo As String = "Solicitud de autorización" 'usuarios de crédito y cobranza
+ ' Dim Msg As String = String.Format("{0} - Folio {1} ", DdlSubProyectoDatos.SelectedItem.Text, TxtFolio.Text)
+ ' 'If UsuarioActual.CveEmpresa = 119 Then
+ ' ' ClsSisNotificaciones.SendNotificacionERP(1715, Titulo, Msg, 1)
+ ' ' ClsSisNotificaciones.SendNotificacionERP(1815, Titulo, Msg, 1)
+ ' ' ClsSisNotificaciones.SendNotificacionERP(1830, Titulo, Msg, 1)
+ ' 'End If
- If DebeTimbrar AndAlso ObjFactura.TipoDocto.Contiene("Ing", "Egs", "Ant", "Dev") Then
- If UsuarioActual.Empresa.TipoFacturacion = "CFDi" AndAlso (UsuarioActual.Empresa.FacturaProduccion OrElse UsuarioActual.CveEmpresa = 1) Then
+ ' End If
+ 'Catch ex As Exception
+ ' OnError("Ocurrió un error al mandar las notificaciones de autorización", ex)
+ 'End Try
- 'FACTURA INGRESO/EGRESO
- Dim FM As New Modelos.FemsaFactura
- Dim TmpDT7Eleven As New DataTable
- Dim TmpDTComplementosTimbrado As New DataTable
- Dim ObjTimbrado As New Timbrado
- Try
- If AplicaFEMSA Then
- PrepararTimbrado(FM, TmpDT7Eleven, TmpDTComplementosTimbrado)
- End If
- If ChkEmitirCartaPorte.Checked AndAlso CveTimbreCartaPorte > 0 Then
- Dim RespCartaPorte As Timbres.MMensajeCartaPorte = Timbres.PreParaCartaPorteFactura(CveTimbreCartaPorte, UsuarioActual)
- If Not RespCartaPorte.TieneError Then
- ObjFactura.Timbre.Complementos.CartaPorte = RespCartaPorte.CartaPorte
- Else
- DebeTimbrar = False
- Alert(RespCartaPorte.Mensaje, TipoMensaje.MsgAdvertencia)
- End If
- End If
+ Try
+ Dim DirectoriArchivoXML As String = String.Format("{0}{1}", UsuarioActual.Empresa.Ruta, ObjFactura.TipoDocto) ' System.IO.Path.Combine()
+ If Not Directory.Exists(DirectoriArchivoXML) Then
+ Directory.CreateDirectory(DirectoriArchivoXML)
+ End If
+ Catch ex As Exception
+ OnError("Ocurrió un error al generar el directorio de xml", ex)
+ End Try
- If DebeTimbrar Then
- SeTimbro = ObjTimbrado.TimbrarFactura(UsuarioActual, ObjFactura)
- End If
- Catch ex As Exception
- OnError("Ocurrió un error al generar el timbrado", ex)
- End Try
+ Dim SeTimbro As Boolean = False
+ Dim SeTimbroNC As Boolean = False
+ Dim EstatusSMS As Integer = 0
+ Dim MsgErrorTimbrado As String = ""
- Dim FolioFiscalFactura As String = ObjTimbrado.UUID
- MsgErrorTimbrado = ObjTimbrado.MensajeErrorCFDI
- ObjTimbrado = Nothing
+ Dim MsgCancelacionRefacturacion As Modelos.Factura.MCancelacionVentaMensaje = Nothing
- 'NOTA DE CREDITO - REFACTURADA - CASO ESPECIAL, TIMBRADO E IMPRESION
- If DebeTimbrar AndAlso SeTimbro AndAlso ListaNotasCreditoGeneradas IsNot Nothing AndAlso ListaNotasCreditoGeneradas.Count > 0 Then
+ 'TIMBRADO Y CASO ESPECIAL NOTA DE CREDITO
+ If (TipoDoctoDevolucion = "" OrElse Not TipoDoctoDevolucion.Contiene("Rem", "RNC", "Cot", "Ped", "DPe", "PA", "Ped")) Then
+
+ Dim DebeTimbrar As Boolean = True
+ If UsuarioActual.CveEmpresa.Contiene(1, 72, 80) Then
+ 'si tiene anticipos seleccionados y el total es cero, que no se timbre(previo empresa72)
+ If LblAmortizacion.Text.ToDouble > 0 And TxtTotal.Text.ToDouble <= 0 Then
+ DebeTimbrar = False
+ End If
+ End If
+
+ 'Si es AMORTIZACIÓN ANTICIPO SOBRE FACTURA EN CERO no debe timbrar
+ If DdlTipoAmortizacionAnticipo.SelectedValue = "3" Then
+ DebeTimbrar = False
+ End If
+
+ If UsuarioActual.TienePermisoProceso(335) Then
+ DebeTimbrar = False
+ End If
+
+ If DebeTimbrar AndAlso ObjFactura.TipoDocto.Contiene("Ing", "Egs", "Ant", "Dev") Then
+ If UsuarioActual.Empresa.TipoFacturacion = "CFDi" AndAlso (UsuarioActual.Empresa.FacturaProduccion OrElse UsuarioActual.CveEmpresa = 1) Then
+
+ 'FACTURA INGRESO/EGRESO
+ Dim FM As New Modelos.FemsaFactura
+ Dim TmpDT7Eleven As New DataTable
+ Dim TmpDTComplementosTimbrado As New DataTable
+
+ Dim ObjTimbrado As New Timbrado
Try
- For Each NCGenerada As Modelos.Factura In ListaNotasCreditoGeneradas
- If NCGenerada.Timbre IsNot Nothing Then
- NCGenerada.Timbre.CFDIRelacionados.UUID.Clear()
- NCGenerada.Timbre.CFDIRelacionados.UUID.Add(FolioFiscalFactura)
+ If AplicaFEMSA Then
+ PrepararTimbrado(FM, TmpDT7Eleven, TmpDTComplementosTimbrado)
+ End If
- Dim ObjTimbradoNC As New Timbrado
- Dim TimbroNC As Boolean = ObjTimbradoNC.TimbrarFactura(UsuarioActual, NCGenerada)
-
- If Not TimbroNC Then
- Alert(ObjTimbradoNC.MensajeErrorCFDI, TipoMensaje.MsgError)
- End If
- ObjTimbradoNC = Nothing
+ If ChkEmitirCartaPorte.Checked AndAlso CveTimbreCartaPorte > 0 Then
+ Dim RespCartaPorte As Timbres.MMensajeCartaPorte = Timbres.PreParaCartaPorteFactura(CveTimbreCartaPorte, UsuarioActual)
+ If Not RespCartaPorte.TieneError Then
+ ObjFactura.Timbre.Complementos.CartaPorte = RespCartaPorte.CartaPorte
+ Else
+ DebeTimbrar = False
+ Alert(RespCartaPorte.Mensaje, TipoMensaje.MsgAdvertencia)
End If
- Next
+ End If
+
+ If DebeTimbrar Then
+ SeTimbro = ObjTimbrado.TimbrarFactura(UsuarioActual, ObjFactura)
+ End If
Catch ex As Exception
- OnError("Ocurrió un error al timbrar la NC.", ex)
+ OnError("Ocurrió un error al generar el timbrado", ex)
+ End Try
+
+ Dim FolioFiscalFactura As String = ObjTimbrado.UUID
+ MsgErrorTimbrado = ObjTimbrado.MensajeErrorCFDI
+ ObjTimbrado = Nothing
+
+ 'NOTA DE CREDITO - REFACTURADA - CASO ESPECIAL, TIMBRADO E IMPRESION
+ If DebeTimbrar AndAlso SeTimbro AndAlso ListaNotasCreditoGeneradas IsNot Nothing AndAlso ListaNotasCreditoGeneradas.Count > 0 Then
+ Try
+ For Each NCGenerada As Modelos.Factura In ListaNotasCreditoGeneradas
+ If NCGenerada.Timbre IsNot Nothing Then
+ NCGenerada.Timbre.CFDIRelacionados.UUID.Clear()
+ NCGenerada.Timbre.CFDIRelacionados.UUID.Add(FolioFiscalFactura)
+
+ Dim ObjTimbradoNC As New Timbrado
+ Dim TimbroNC As Boolean = ObjTimbradoNC.TimbrarFactura(UsuarioActual, NCGenerada)
+
+ If Not TimbroNC Then
+ Alert(ObjTimbradoNC.MensajeErrorCFDI, TipoMensaje.MsgError)
+ End If
+ ObjTimbradoNC = Nothing
+ End If
+ Next
+ Catch ex As Exception
+ OnError("Ocurrió un error al timbrar la NC.", ex)
+ End Try
+
+ End If
+
+ 'If SeTimbro AndAlso ObjFactura.TipoDocto.Contiene("Ing") Then
+ ' EstatusSMS = EnviarSMSTimbrado(ObjEventos)
+ ' End If
+
+ 'If Not SeTimbro Then
+ ' Alert(MsgErrorTimbrado, TipoMensaje.MsgError)
+ 'End If
+
+ 'CANCELAR FACTURA ANTERIOR
+ Try
+ If SeTimbro AndAlso (Me.CveDevolucion > 0 AndAlso Me.NuevaFactura = 1) Then
+ If Me.ObjFacturaNC IsNot Nothing AndAlso Me.ObjFacturaNC.CveEstatusFactura <> 5 Then
+ Me.ObjFacturaNC.CveEstatusRefacturacion = 2 'MARCAR COMO REFACTURADA
+ MsgCancelacionRefacturacion = Me.ObjFacturaNC.CancelarPorRefacturacion(Me.ObjFacturaNC.CveMotivoCancelacion, Me.ObjFacturaNC.MotivoCancelacion, FolioFiscalFactura)
+ End If
+ End If
+ Catch ex As Exception
+ OnError("Ocurrió un error al cancelar la factura anterior.", ex)
End Try
End If
-
- 'If SeTimbro AndAlso ObjFactura.TipoDocto.Contiene("Ing") Then
- ' EstatusSMS = EnviarSMSTimbrado(ObjEventos)
- ' End If
-
- 'If Not SeTimbro Then
- ' Alert(MsgErrorTimbrado, TipoMensaje.MsgError)
- 'End If
-
- 'CANCELAR FACTURA ANTERIOR
- Try
- If SeTimbro AndAlso (Me.CveDevolucion > 0 AndAlso Me.NuevaFactura = 1) Then
- If Me.ObjFacturaNC IsNot Nothing AndAlso Me.ObjFacturaNC.CveEstatusFactura <> 5 Then
- Me.ObjFacturaNC.CveEstatusRefacturacion = 2 'MARCAR COMO REFACTURADA
- MsgCancelacionRefacturacion = Me.ObjFacturaNC.CancelarPorRefacturacion(Me.ObjFacturaNC.CveMotivoCancelacion, Me.ObjFacturaNC.MotivoCancelacion, FolioFiscalFactura)
- End If
- End If
- Catch ex As Exception
- OnError("Ocurrió un error al cancelar la factura anterior.", ex)
- End Try
-
End If
+
End If
- End If
+ 'VERIFICAR 100% AVANCE A IMPORTE Y CANTIDAD
+ Try
+ If ObjFactura.TipoDocto.Contiene("Ing", "Ant") AndAlso CveContrato > 0 Then
+ If ObjContr.GetContratos(CveContrato, UsuarioActual.CveEmpresa) Then
- 'VERIFICAR 100% AVANCE A IMPORTE Y CANTIDAD
- Try
- If ObjFactura.TipoDocto.Contiene("Ing", "Ant") AndAlso CveContrato > 0 Then
- If ObjContr.GetContratos(CveContrato, UsuarioActual.CveEmpresa) Then
-
- If ObjContr.DtResultados.Rows.Count > 0 Then
+ If ObjContr.DtResultados.Rows.Count > 0 Then
- 'SI ES FLEXIBLE QUE NOTIFIQUE EL MONTO MAXIMO, SI NO LO ES QUE NOTIFIQUE EL PORCENTAJE ALCANZADO... FLEXIBLE = 2, NO FLEXIBLE = 1
- If ObjContr.DtResultados.Rows(0)("ModalidadDetalle").ToString() = "1" Then
- Dim PorcentajeAvance As Double = ObjContr.DtResultados.Rows(0)("ContratoAvance").ToString().ToDouble
+ 'SI ES FLEXIBLE QUE NOTIFIQUE EL MONTO MAXIMO, SI NO LO ES QUE NOTIFIQUE EL PORCENTAJE ALCANZADO... FLEXIBLE = 2, NO FLEXIBLE = 1
+ If ObjContr.DtResultados.Rows(0)("ModalidadDetalle").ToString() = "1" Then
+ Dim PorcentajeAvance As Double = ObjContr.DtResultados.Rows(0)("ContratoAvance").ToString().ToDouble
- If PorcentajeAvance >= 100 Then
- EnviarNotificacionAvance(ObjContr.DtResultados.Rows(0)("NumeroContrato").ToString(), ObjContr.DtResultados.Rows(0)("DescripcionContrato").ToString(), ObjContr.DtResultados.Rows(0)("ContratoTipo").ToString(), ObjContr.DtResultados.Rows(0)("NombreComercial").ToString(), ObjContr.DtResultados.Rows(0)("CorreoVendedor").ToString())
+ If PorcentajeAvance >= 100 Then
+ EnviarNotificacionAvance(ObjContr.DtResultados.Rows(0)("NumeroContrato").ToString(), ObjContr.DtResultados.Rows(0)("DescripcionContrato").ToString(), ObjContr.DtResultados.Rows(0)("ContratoTipo").ToString(), ObjContr.DtResultados.Rows(0)("NombreComercial").ToString(), ObjContr.DtResultados.Rows(0)("CorreoVendedor").ToString())
+ End If
+ Else
+ Dim MontoMaximo As Double = ObjContr.DtResultados.Rows(0)("ImporteMax").ToString().ToDouble
+ Dim Avance As Double = ObjContr.DtResultados.Rows(0)("Avance").ToString().ToDouble
+
+ Dim PorcentajeAvance As Double = (Avance / MontoMaximo) * 100
+
+ If PorcentajeAvance >= 100 And MontoMaximo > 0 Then
+ EnviarNotificacionAvance(ObjContr.DtResultados.Rows(0)("NumeroContrato").ToString(), ObjContr.DtResultados.Rows(0)("DescripcionContrato").ToString(), ObjContr.DtResultados.Rows(0)("ContratoTipo").ToString(), ObjContr.DtResultados.Rows(0)("NombreComercial").ToString(), ObjContr.DtResultados.Rows(0)("CorreoVendedor").ToString(), MontoMaximo)
+ End If
End If
- Else
- Dim MontoMaximo As Double = ObjContr.DtResultados.Rows(0)("ImporteMax").ToString().ToDouble
- Dim Avance As Double = ObjContr.DtResultados.Rows(0)("Avance").ToString().ToDouble
- Dim PorcentajeAvance As Double = (Avance / MontoMaximo) * 100
-
- If PorcentajeAvance >= 100 And MontoMaximo > 0 Then
- EnviarNotificacionAvance(ObjContr.DtResultados.Rows(0)("NumeroContrato").ToString(), ObjContr.DtResultados.Rows(0)("DescripcionContrato").ToString(), ObjContr.DtResultados.Rows(0)("ContratoTipo").ToString(), ObjContr.DtResultados.Rows(0)("NombreComercial").ToString(), ObjContr.DtResultados.Rows(0)("CorreoVendedor").ToString(), MontoMaximo)
- End If
End If
-
End If
End If
- End If
- Catch ex As Exception
- OnError("Ocurrió un error al notificar el avance.", ex)
- End Try
-
-
- 'MENSAJE PRINCIPAL
- MensajeAlert.AppendFormat(String.Format("
La {0}: {1} se generó correctamente.
", ObjFactura.TipoDocumento, ObjFactura.SerieFolio))
-
-
- ' DESCARGA XML - SI SE TIMBRA MANDA CORREO CON FACTURA
- If SeTimbro Then
- If Not UsuarioActual.TienePermisoProceso(380) Then
- Dim ArchivoXML As String = String.Format("{0}/XML/{1}/{2}.xml", UsuarioActual.Empresa.Ruta, ObjFactura.TipoDocto, ObjFactura.SerieFolio)
- If File.Exists(ArchivoXML) Then
- MensajeAlert.AppendFormat("