diff --git a/App_Code/ClsVentas.vb b/App_Code/ClsVentas.vb
index e46b7ac2a..6a393bec7 100644
--- a/App_Code/ClsVentas.vb
+++ b/App_Code/ClsVentas.vb
@@ -1445,7 +1445,7 @@ Public Class ClsVentas
CveVendedor As String, CveUsuario As Integer, CveEstatus As String, IVA As String, CveEmpresa As Integer, Gpo As Integer, Optional TipoDocto As String = "-1",
Optional CveProyecto As Integer = -1, Optional CveSubProyecto As String = "-1", Optional TipoCambio As Integer = 1, Optional TCEspecifico As Decimal = -1, Optional CveUsuarioConsulta As Integer = -1,
Optional CveClienteClasificacion As Integer = -1, Optional CveCondicionesPago As Integer = -1, Optional TipoCliente As Integer = -1, Optional ModalidadContable As Boolean = False,
- Optional EsDistribuidor As Integer = -1) As Boolean
+ Optional EsDistribuidor As Integer = -1, Optional CveTipoRelacion As Integer = -1) As Boolean
Dim Retorno As Boolean = False
DataAdapter("PA_Vta_VentasGetRep")
@@ -1474,6 +1474,7 @@ Public Class ClsVentas
.Add("@TipoCliente", SqlDbType.Int).Value = TipoCliente
.Add("@EsDistribuidor", SqlDbType.Int).Value = EsDistribuidor
.Add("@ModalidadContable", SqlDbType.Bit).Value = ModalidadContable
+ .Add("@CveTipoRelacion", SqlDbType.Int).Value = CveTipoRelacion
End With
Try
@@ -1580,7 +1581,7 @@ Public Class ClsVentas
CveSubProyectoEjecucion As Integer, CveEmpresa As Integer, FechaIEjec As Date, FechaFEjec As Date, Optional CveProyecto As Integer = -1,
Optional CveSubProyecto As String = "-1", Optional TipoCambio As Integer = 1, Optional TCEspecifico As Decimal = -1, Optional CveMoneda As Integer = -1, Optional CveUsuarioConsulta As Integer = -1,
Optional CveClienteClasificacion As Integer = -1, Optional CveCondicionesPago As Integer = -1, Optional TipoCliente As Integer = -1, Optional ModalidadContable As Boolean = False,
- Optional EsDistribuidor As Integer = -1) As Boolean
+ Optional EsDistribuidor As Integer = -1, Optional CveTipoRelacion As Integer = -1) As Boolean
Dim Retorno As Boolean = False
DataAdapter("PA_Vta_VentasGetRepDetalle")
@@ -1614,6 +1615,7 @@ Public Class ClsVentas
.Add("@TipoCliente", SqlDbType.Int).Value = TipoCliente
.Add("@EsDistribuidor", SqlDbType.Int).Value = EsDistribuidor
.Add("@ModalidadContable", SqlDbType.Bit).Value = ModalidadContable
+ .Add("@CveTipoRelacion", SqlDbType.Int).Value = CveTipoRelacion
End With
Try
diff --git a/App_Code/Timbrado.vb b/App_Code/Timbrado.vb
index 253e76353..60a04e2e9 100644
--- a/App_Code/Timbrado.vb
+++ b/App_Code/Timbrado.vb
@@ -10,6 +10,7 @@ Imports System.Data
Imports System.Xml.Serialization
Imports System.Net
Imports ProfactCartaPorte = Profact.TimbraCFDI33.Complementos.CartaPorte20
+Imports System.Reflection
Public Class Timbrado
@@ -1228,10 +1229,17 @@ Public Class Timbrado
Case 5
+ If UsuarioActual.Empresa.Funcionalidad(350) = "1" Then
+ Dim Ret As String = TimbrarFacturaPADEv40(Ventas, UsuarioActual, CvePACEspecial)
+ If Ret <> "" Then MensajeErrorCFDI = Ret
+ Retorno = If(Ret = "", True, False)
+ Else
+ Dim Ret As String = TimbrarFacturaPADEv33(Ventas, UsuarioActual, CvePACEspecial)
+ If Ret <> "" Then MensajeErrorCFDI = Ret
+ Retorno = If(Ret = "", True, False)
+ End If
+
- Dim Ret As String = TimbrarFacturaPADEv33(Ventas, UsuarioActual, CvePACEspecial)
- If Ret <> "" Then MensajeErrorCFDI = Ret
- Retorno = If(Ret = "", True, False)
End Select
@@ -3559,36 +3567,30 @@ Public Class Timbrado
' 'Sucursal matriz de la empresa
Dim ArchivoLLave As String = $"{UsuarioActual.Empresa.Ruta}Certificados\{UsuarioActual.Empresa.ArchivoKey}"
Dim ArchivoCertificado As String = $"{UsuarioActual.Empresa.Ruta}Certificados\{UsuarioActual.Empresa.ArchivoCer}"
- Dim UsuarioServicio As String = UsuarioActual.Empresa.RFC
- Dim ClaveServicio As String = UsuarioActual.Empresa.RFC.ToLower
+
Dim Clave As String = UsuarioActual.Empresa.ContraseñaKey
Dim EmisorRFC As String = UsuarioActual.Empresa.RFC
- Dim UrlServicio As String = "http://generacfdi.com.mx/rvltimbrado/service1.asmx?WSDL" ' Produccion
+ Dim EmisorNombre As String = UsuarioActual.Empresa.Empresa
+
Dim RutaArchivo As String = $"{UsuarioActual.Empresa.Ruta}XML\{Ventas.TipoDocto}\"
Dim NombreArchivoXML As String = $"{ObjCFDITimbre.Comprobante.SerieFolio}"
+
Dim SubTotal As Decimal = 0
Dim AmbienteProductivo As Boolean = True
Dim NumDecimalesImporte As Integer = 2
+
If Not Directory.Exists(RutaArchivo) Then Directory.CreateDirectory(RutaArchivo)
If Not UsuarioActual.Empresa.FacturaProduccion OrElse UsuarioActual.CveEmpresa = 1 Then
AmbienteProductivo = False
- UsuarioServicio = "fgomez"
- ClaveServicio = "12121212"
Clave = "12345678a"
-
- 'EmisorRFC = "AAA010101AAA"
- 'ArchivoLLave = $"{UsuarioActual.Empresa.Ruta}Certificados\CSD01_AAA010101AAA.key"
- 'ArchivoCertificado = $"{UsuarioActual.Empresa.Ruta}Certificados\CSD01_AAA010101AAA.cer"
-
- EmisorRFC = "ZUÑ920208KL4"
- ArchivoLLave = $"{UsuarioActual.Empresa.Ruta}Certificados\CSD01_ZUÑ920208KL4.key"
- ArchivoCertificado = $"{UsuarioActual.Empresa.Ruta}Certificados\CSD01_ZUÑ920208KL4.cer"
-
- UrlServicio = "https://pruebas.timbracfdi33.mx/Timbrado.asmx"
+ EmisorRFC = "IIA040805DZ4"
+ EmisorNombre = "INDISTRIA ILUMINADORA DE ALMACENES SA DE CV"
+ ArchivoLLave = $"{UsuarioActual.Empresa.Ruta}Certificados\publicKey.key"
+ ArchivoCertificado = $"{UsuarioActual.Empresa.Ruta}Certificados\publicCer.cer"
+ UsuarioActual.Empresa.CodigoRegimenFiscal = "601"
End If
-
#Region "Valida"
If Not File.Exists(ArchivoCertificado) Then
Alert("El archivo de certificado no existe", TipoMensaje.MsgError)
@@ -3675,6 +3677,7 @@ Public Class Timbrado
comprobante.MetodoPago = ObjCFDITimbre.Comprobante.MetodoPago
comprobante.MetodoPagoSpecified = If(ObjCFDITimbre.Comprobante.MetodoPago <> "", True, False)
comprobante.LugarExpedicion = ObjCFDITimbre.Comprobante.LugarExpedicion
+ comprobante.Exportacion = ObjCFDITimbre.Comprobante.Exportacion
If ObjCFDITimbre.CFDIRelacionados.TipoRelacion <> "" Then
Dim CfdiRelacionados As New Profact.TimbraCFDI40.ComprobanteCfdiRelacionados
@@ -3691,7 +3694,7 @@ Public Class Timbrado
#Region "Emisor"
comprobante.Emisor = New Profact.TimbraCFDI40.ComprobanteEmisor()
comprobante.Emisor.Rfc = EmisorRFC
- comprobante.Emisor.Nombre = UsuarioActual.Empresa.Empresa
+ comprobante.Emisor.Nombre = EmisorNombre
comprobante.Emisor.RegimenFiscal = UsuarioActual.Empresa.CodigoRegimenFiscal
#End Region
@@ -3702,6 +3705,7 @@ Public Class Timbrado
comprobante.Receptor.Nombre = ObjCFDITimbre.Receptor.Nombre
comprobante.Receptor.UsoCFDI = ObjCFDITimbre.Receptor.UsoCFDI
comprobante.Receptor.RegimenFiscalReceptor = ObjCFDITimbre.Receptor.RegimenFiscalReceptor
+ comprobante.Receptor.DomicilioFiscalReceptor = ObjCFDITimbre.Receptor.DomicilioFiscalReceptor
#End Region
#End Region
@@ -3722,9 +3726,10 @@ Public Class Timbrado
If concep.Unidad <> "" Then comprobante.Conceptos(i).Unidad = concep.Unidad
comprobante.Conceptos(i).ClaveUnidad = concep.ClaveUnidad
comprobante.Conceptos(i).Descripcion = concep.Descripcion
- comprobante.Conceptos(i).ValorUnitario = concep.ValorUnitario
+ comprobante.Conceptos(i).ValorUnitario = concep.ValorUnitario.RoundSQL(6)
comprobante.Conceptos(i).Importe = concep.Importe.RoundSQL(NumDecimalesImporte)
comprobante.Conceptos(i).ClaveProdServ = concep.ClaveProdServ
+ comprobante.Conceptos(i).ObjetoImp = concep.ObjetoImpuesto
If ObjCFDITimbre.Comprobante.TipoComprobante <> "P" Then
If concep.Descuento > 0 Then
@@ -3800,6 +3805,7 @@ Public Class Timbrado
For Each Tras In ObjCFDITimbre.Traslados
comprobante.Impuestos.Traslados(y) = New Profact.TimbraCFDI40.ComprobanteImpuestosTraslado()
+ comprobante.Impuestos.Traslados(y).Base = Tras.Base
comprobante.Impuestos.Traslados(y).Impuesto = Tras.Impuesto
comprobante.Impuestos.Traslados(y).TipoFactor = Tras.TipoFactor
comprobante.Impuestos.Traslados(y).TasaOCuota = Tras.TasaOCuota.FormatoNumero(6)
@@ -4069,13 +4075,13 @@ Public Class Timbrado
End If
If ObjCFDITimbre.ComplementoPagos.CertPago <> "" Then
- ComPag.Pago(0).CertPago = System.Text.Encoding.Default.GetBytes(ObjCFDITimbre.ComplementoPagos.CertPago)
+ ComPag.Pago(0).CertPago = System.Text.Encoding.Default.GetBytes(ObjCFDITimbre.ComplementoPagos.CertPago).ToString()
End If
If ObjCFDITimbre.ComplementoPagos.CadPago <> "" Then
ComPag.Pago(0).CadPago = ObjCFDITimbre.ComplementoPagos.CadPago
End If
If ObjCFDITimbre.ComplementoPagos.SelloPago <> "" Then
- ComPag.Pago(0).SelloPago = System.Text.Encoding.Default.GetBytes(ObjCFDITimbre.ComplementoPagos.SelloPago)
+ ComPag.Pago(0).SelloPago = System.Text.Encoding.Default.GetBytes(ObjCFDITimbre.ComplementoPagos.SelloPago).ToString()
End If
If ObjCFDITimbre.ComplementoPagos.DocumentosRelacionados.Count > 0 Then
@@ -4785,7 +4791,7 @@ Public Class Timbrado
' End Try
'//Timbramos el CFDI por medio del conector y guardamos resultado
- Dim resultadoTimbre As Profact.TimbraCFDI.ResultadoTimbre
+ Dim resultadoTimbre As Profact.TimbraCFDI.ResultadoTimbre = Nothing
#End Region
@@ -4880,29 +4886,38 @@ Public Class Timbrado
Else
- If String.IsNullOrEmpty(resultadoTimbre.Detalle) Then
- Dim Resultados = Newtonsoft.Json.Linq.JArray.Parse(resultadoTimbre.Detalle)
+ If Not String.IsNullOrEmpty(resultadoTimbre.Detalle) Then
+ Try
+ Dim Resultados = Newtonsoft.Json.Linq.JArray.Parse(resultadoTimbre.Detalle)
- If Resultados.Count > 0 Then
- If resultadoTimbre.Descripcion.Contains("RFC del receptor no existe") Then
- Retorno = $"El RFC { Resultados(0)("Value").ToString() } no existe en las bases de datos publicadas por el SAT, corrobore este dato con su cliente"
- MensajeErrorCFDI = $"El RFC { Resultados(0)("Value").ToString() } no existe en las bases de datos publicadas por el SAT, corrobore este dato con su cliente"
+ If Resultados.Count > 0 Then
+ If resultadoTimbre.Descripcion.Contains("RFC del receptor no existe") Then
+ Retorno = $"El RFC { Resultados(0)("Value").ToString() } no existe en las bases de datos publicadas por el SAT, corrobore este dato con su cliente"
+ MensajeErrorCFDI = $"El RFC { Resultados(0)("Value").ToString() } no existe en las bases de datos publicadas por el SAT, corrobore este dato con su cliente"
+ Else
+ Dim sbMsg As New StringBuilder
+ For Each msg In Resultados
+ sbMsg.AppendFormat("{0}. ", msg("Value"))
+ Next
+ Retorno = sbMsg.ToString()
+ MensajeErrorCFDI = Retorno
+ End If
Else
- Retorno = Resultados(0)("Value").ToString()
- MensajeErrorCFDI = Resultados(0)("Value").ToString()
- End If
- Else
- Retorno = resultadoTimbre.Detalle
- MensajeErrorCFDI = resultadoTimbre.Detalle
+ Retorno = resultadoTimbre.Detalle
+ MensajeErrorCFDI = resultadoTimbre.Detalle
- If Retorno = "[]" Then
- Retorno = resultadoTimbre.Descripcion
+ If Retorno = "[]" Then
+ Retorno = resultadoTimbre.Descripcion
+ End If
+ If MensajeErrorCFDI = "[]" Then
+ Retorno = resultadoTimbre.Descripcion
+ End If
+
End If
- If MensajeErrorCFDI = "[]" Then
- Retorno = resultadoTimbre.Descripcion
- End If
+ Catch ex As Exception
+ Retorno = ex.ToString()
+ End Try
- End If
Else
Retorno = resultadoTimbre.Detalle
MensajeErrorCFDI = resultadoTimbre.Detalle
@@ -4913,107 +4928,17 @@ Public Class Timbrado
GuardaLogTimbrado(swTiempo.ToString, UsuarioActual.Empresa.CvePAC)
Return Retorno
End Function
- Public Function TimbrarFacturaGoCFDIv40(Ventas As Modelos.Factura, UsuarioActual As Usuario, Optional CvePACEspecial As Integer = -1) As String
- If CvePACEspecial = -1 Then
- CvePACEspecial = UsuarioActual.Empresa.CvePAC
- End If
- Dim sw As New Diagnostics.Stopwatch
- Dim swmili As Long = 0
- Dim swTiempo As New StringBuilder
- sw.Start()
+
+ Private Function GenerarXMLGoCFDIv40(ByRef cfdi As GoFac.Cfdi4, EmisorRFC As String, ArchivoCertificado As String, llaveBase64 As String, Clave As String, Ventas As Modelos.Factura, UsuarioActual As Usuario, Optional CvePACEspecial As Integer = -1) As String
Dim Retorno As String = ""
- Dim ObjCFDITimbre As CFDITimbre = Ventas.Timbre
-
- Dim ArchivoLLave As String = String.Format("{0}Certificados\{1}", UsuarioActual.Empresa.Ruta, UsuarioActual.Empresa.ArchivoKey)
- Dim ArchivoCertificado As String = String.Format("{0}Certificados\{1}", UsuarioActual.Empresa.Ruta, UsuarioActual.Empresa.ArchivoCer)
- Dim UsuarioServicio As String = If(CvePACEspecial = 2, UsuarioActual.Empresa.RFC, "rene.molina@adsistemas.mx")
- Dim ClaveServicio As String = If(CvePACEspecial = 2, UsuarioActual.Empresa.RFC.ToLower, "rene2018")
- Dim Clave As String = UsuarioActual.Empresa.ContraseñaKey
- Dim EmisorRFC As String = UsuarioActual.Empresa.RFC
- Dim UrlServicio As String = "" ' Produccion
- Dim RutaArchivo As String = String.Format("{0}XML\{1}\", UsuarioActual.Empresa.Ruta, Ventas.TipoDocto)
- Dim NombreArchivoXML As String = ObjCFDITimbre.Comprobante.SerieFolio
- Dim SubTotal As Decimal = 0
- Dim TimbraProduccion As Boolean = True
- If Not Directory.Exists(RutaArchivo) Then Directory.CreateDirectory(RutaArchivo)
-
- UrlServicio = "https://cfdi.gofac.com.mx/timbrado.asmx?WSDL"
-
- If Not UsuarioActual.Empresa.FacturaProduccion OrElse UsuarioActual.CveEmpresa = 1 Then
-
- EmisorRFC = "EKU9003173C9"
- UsuarioActual.Empresa.Empresa = "ESCUELA KEMPER URGATE SA DE CV"
- ArchivoLLave = $"{UsuarioActual.Empresa.Ruta}Certificados\EKU9003173C9.key"
- ArchivoCertificado = $"{UsuarioActual.Empresa.Ruta}Certificados\EKU9003173C9.cer"
-
- Clave = "12345678a"
- TimbraProduccion = False
- UsuarioServicio = "UserTest"
- ClaveServicio = "1234567890"
-
- End If
-
-#Region "Valida"
- If Not File.Exists(ArchivoCertificado) Then
- Alert("El archivo de certificado no existe", TipoMensaje.MsgError)
- Return "El archivo de certificado no existe"
- End If
- If Not File.Exists(ArchivoLLave) Then
- Alert("El archivo de llave privada no existe", TipoMensaje.MsgError)
- Return "El archivo de llave privada no existe"
- End If
- If UsuarioActual.Empresa.ContraseñaKey = "" Then
- Alert("La clave no puede ser vacía", TipoMensaje.MsgError)
- Return "La clave no puede ser vacía"
- End If
-#End Region
-
-#Region "Variables"
- Dim llaveByte As Byte(), certByte As Byte()
- Dim llaveBase64 As String, certBase64 As String
- Dim cfdi As New GoFac.Cfdi4
- Dim complemento As String = ""
- Dim complementoConcepto As String = ""
-
-#End Region
-
-#Region "Verifica"
- Try
- llaveByte = System.IO.File.ReadAllBytes(ArchivoLLave)
- llaveBase64 = Convert.ToBase64String(llaveByte)
- Catch ex As Exception
- Alert($"Error al leer la llave privada: {ex.Message}", TipoMensaje.MsgError)
- Return "Error al leer la llave privada"
- End Try
-
-
- Try
- certByte = System.IO.File.ReadAllBytes(ArchivoCertificado)
- certBase64 = Convert.ToBase64String(certByte)
- Catch ex As Exception
- Alert($"Error al leer el certificado: {ex.Message}", TipoMensaje.MsgError)
- Return "Error al leer el certificado"
-
- End Try
-#End Region
-
-
- sw.Stop()
- swTiempo.AppendFormat("Verificado : ({0}) {1} ", sw.ElapsedMilliseconds - swmili, sw.ElapsedMilliseconds)
- swmili = sw.ElapsedMilliseconds
- sw.Start()
-
+ MensajeErrorCFDI = ""
'cfdi.QuitarCerosDecimalDerecha = True ' no limita a 2 decimales, el atributo, de cantidad y precio unitario
#Region "Certificado"
cfdi.CertArchivo(ArchivoCertificado)
#End Region
-
- sw.Stop()
- swTiempo.AppendFormat("Certificado : ({0}) {1} ", sw.ElapsedMilliseconds - swmili, sw.ElapsedMilliseconds)
- swmili = sw.ElapsedMilliseconds
- sw.Start()
+ Dim ObjCFDITimbre As CFDITimbre = Ventas.Timbre
#Region "Comprobante"
@@ -5464,15 +5389,14 @@ Public Class Timbrado
End If
#End Region
- sw.Stop()
- swTiempo.AppendFormat("Armado: ({0}) {1} ", sw.ElapsedMilliseconds - swmili, sw.ElapsedMilliseconds)
- swmili = sw.ElapsedMilliseconds
- sw.Start()
#Region "Genera XML"
Dim ArchivoGenerado As Boolean = False
Try
cfdi.GenerarXmlB64(llaveBase64, Clave)
ArchivoGenerado = True
+ If ArchivoGenerado Then
+ Retorno = ""
+ End If
Catch ex As Exception
Retorno = cfdi.Mensaje
If Retorno = "" OrElse IsNothing(Retorno) Then
@@ -5481,14 +5405,115 @@ Public Class Timbrado
MensajeErrorCFDI = Retorno
End Try
+ If Not String.IsNullOrEmpty(MensajeErrorCFDI) Then
+ Retorno = MensajeErrorCFDI
+ End If
+
#End Region
+
+ Return Retorno
+ End Function
+
+ Public Function TimbrarFacturaGoCFDIv40(Ventas As Modelos.Factura, UsuarioActual As Usuario, Optional CvePACEspecial As Integer = -1) As String
+ If CvePACEspecial = -1 Then
+ CvePACEspecial = UsuarioActual.Empresa.CvePAC
+ End If
+ Dim sw As New Diagnostics.Stopwatch
+ Dim swmili As Long = 0
+ Dim swTiempo As New StringBuilder
+ sw.Start()
+ Dim Retorno As String = ""
+ Dim ObjCFDITimbre As CFDITimbre = Ventas.Timbre
+
+ Dim ArchivoLLave As String = String.Format("{0}Certificados\{1}", UsuarioActual.Empresa.Ruta, UsuarioActual.Empresa.ArchivoKey)
+ Dim ArchivoCertificado As String = String.Format("{0}Certificados\{1}", UsuarioActual.Empresa.Ruta, UsuarioActual.Empresa.ArchivoCer)
+ Dim UsuarioServicio As String = If(CvePACEspecial = 2, UsuarioActual.Empresa.RFC, "rene.molina@adsistemas.mx")
+ Dim ClaveServicio As String = If(CvePACEspecial = 2, UsuarioActual.Empresa.RFC.ToLower, "rene2018")
+ Dim Clave As String = UsuarioActual.Empresa.ContraseñaKey
+ Dim EmisorRFC As String = UsuarioActual.Empresa.RFC
+ Dim UrlServicio As String = "" ' Produccion
+ Dim RutaArchivo As String = String.Format("{0}XML\{1}\", UsuarioActual.Empresa.Ruta, Ventas.TipoDocto)
+ Dim NombreArchivoXML As String = ObjCFDITimbre.Comprobante.SerieFolio
+ Dim SubTotal As Decimal = 0
+ Dim TimbraProduccion As Boolean = True
+ If Not Directory.Exists(RutaArchivo) Then Directory.CreateDirectory(RutaArchivo)
+
+ UrlServicio = "https://cfdi.gofac.com.mx/timbrado.asmx?WSDL"
+
+ If Not UsuarioActual.Empresa.FacturaProduccion OrElse UsuarioActual.CveEmpresa = 1 Then
+
+ EmisorRFC = "EKU9003173C9"
+ UsuarioActual.Empresa.Empresa = "ESCUELA KEMPER URGATE SA DE CV"
+ ArchivoLLave = $"{UsuarioActual.Empresa.Ruta}Certificados\EKU9003173C9.key"
+ ArchivoCertificado = $"{UsuarioActual.Empresa.Ruta}Certificados\EKU9003173C9.cer"
+
+ Clave = "12345678a"
+ TimbraProduccion = False
+ UsuarioServicio = "UserTest"
+ ClaveServicio = "1234567890"
+
+ End If
+
+#Region "Valida"
+ If Not File.Exists(ArchivoCertificado) Then
+ Alert("El archivo de certificado no existe", TipoMensaje.MsgError)
+ Return "El archivo de certificado no existe"
+ End If
+ If Not File.Exists(ArchivoLLave) Then
+ Alert("El archivo de llave privada no existe", TipoMensaje.MsgError)
+ Return "El archivo de llave privada no existe"
+ End If
+ If UsuarioActual.Empresa.ContraseñaKey = "" Then
+ Alert("La clave no puede ser vacía", TipoMensaje.MsgError)
+ Return "La clave no puede ser vacía"
+ End If
+#End Region
+
+#Region "Variables"
+ Dim llaveByte As Byte(), certByte As Byte()
+ Dim llaveBase64 As String, certBase64 As String
+ Dim cfdi As New GoFac.Cfdi4
+ Dim complemento As String = ""
+ Dim complementoConcepto As String = ""
+
+#End Region
+
+#Region "Verifica"
+ Try
+ llaveByte = System.IO.File.ReadAllBytes(ArchivoLLave)
+ llaveBase64 = Convert.ToBase64String(llaveByte)
+ Catch ex As Exception
+ Alert($"Error al leer la llave privada: {ex.Message}", TipoMensaje.MsgError)
+ Return "Error al leer la llave privada"
+ End Try
+
+
+ Try
+ certByte = System.IO.File.ReadAllBytes(ArchivoCertificado)
+ certBase64 = Convert.ToBase64String(certByte)
+ Catch ex As Exception
+ Alert($"Error al leer el certificado: {ex.Message}", TipoMensaje.MsgError)
+ Return "Error al leer el certificado"
+
+ End Try
+#End Region
+
+
+ sw.Stop()
+ swTiempo.AppendFormat("Verificado : ({0}) {1} ", sw.ElapsedMilliseconds - swmili, sw.ElapsedMilliseconds)
+ swmili = sw.ElapsedMilliseconds
+ sw.Start()
+
+
+ Dim RespGeneracionXML As String = GenerarXMLGoCFDIv40(cfdi, EmisorRFC, ArchivoCertificado, llaveBase64, Clave, Ventas, UsuarioActual, CvePACEspecial)
+
sw.Stop()
swTiempo.AppendFormat("Genera: ({0}) {1} ", sw.ElapsedMilliseconds - swmili, sw.ElapsedMilliseconds)
swmili = sw.ElapsedMilliseconds
sw.Start()
#Region "Timbra"
- If ArchivoGenerado Then
+ If RespGeneracionXML = "" Then
cfdi.TimbrarCfdi(UsuarioServicio, ClaveServicio, TimbraProduccion)
@@ -5622,18 +5647,19 @@ Public Class Timbrado
Dim ArchivoLLave As String = String.Format("{0}Certificados\{1}", UsuarioActual.Empresa.Ruta, UsuarioActual.Empresa.ArchivoKey)
Dim ArchivoCertificado As String = String.Format("{0}Certificados\{1}", UsuarioActual.Empresa.Ruta, UsuarioActual.Empresa.ArchivoCer)
- Dim UsuarioServicio As String = If(CvePACEspecial = 2, UsuarioActual.Empresa.RFC, "rene.molina@adsistemas.mx")
- Dim ClaveServicio As String = If(CvePACEspecial = 2, UsuarioActual.Empresa.RFC.ToLower, "rene2018")
+
+ Dim UsuarioServicio As String = "rene.molina@adssistemas.mx"
+ Dim ClaveServicio As String = "Facturacion2021#"
+
Dim Clave As String = UsuarioActual.Empresa.ContraseñaKey
Dim EmisorRFC As String = UsuarioActual.Empresa.RFC
- Dim UrlServicio As String = "" ' Produccion
+
Dim RutaArchivo As String = String.Format("{0}XML\{1}\", UsuarioActual.Empresa.Ruta, Ventas.TipoDocto)
Dim NombreArchivoXML As String = ObjCFDITimbre.Comprobante.SerieFolio
Dim SubTotal As Decimal = 0
Dim TimbraProduccion As Boolean = True
If Not Directory.Exists(RutaArchivo) Then Directory.CreateDirectory(RutaArchivo)
- UrlServicio = "https://cfdi.gofac.com.mx/timbrado.asmx?WSDL"
If Not UsuarioActual.Empresa.FacturaProduccion OrElse UsuarioActual.CveEmpresa = 1 Then
@@ -5644,9 +5670,6 @@ Public Class Timbrado
Clave = "12345678a"
TimbraProduccion = False
- UsuarioServicio = "UserTest"
- ClaveServicio = "1234567890"
-
End If
#Region "Valida"
@@ -5699,483 +5722,8 @@ Public Class Timbrado
swmili = sw.ElapsedMilliseconds
sw.Start()
+ Dim RespGeneracionXML As String = GenerarXMLGoCFDIv40(cfdi, EmisorRFC, ArchivoCertificado, llaveBase64, Clave, Ventas, UsuarioActual, CvePACEspecial)
- 'cfdi.QuitarCerosDecimalDerecha = True ' no limita a 2 decimales, el atributo, de cantidad y precio unitario
-#Region "Certificado"
- cfdi.CertArchivo(ArchivoCertificado)
-#End Region
-
-
- sw.Stop()
- swTiempo.AppendFormat("Certificado : ({0}) {1} ", sw.ElapsedMilliseconds - swmili, sw.ElapsedMilliseconds)
- swmili = sw.ElapsedMilliseconds
- sw.Start()
-
-#Region "Comprobante"
-
- cfdi.Comprobante(
- ObjCFDITimbre.Comprobante.Serie,
- ObjCFDITimbre.Comprobante.Folio,
- ObjCFDITimbre.Comprobante.Fecha.ToString("yyyy-MM-ddTHH:mm:ss"),
- ObjCFDITimbre.Comprobante.FormadePago,
- ObjCFDITimbre.Comprobante.CondicionesdePago,
- ObjCFDITimbre.Comprobante.SubTotal,
- ObjCFDITimbre.Comprobante.Descuentos,
- ObjCFDITimbre.Comprobante.Moneda,
- ObjCFDITimbre.Comprobante.TipoCambio.ToString,
- ObjCFDITimbre.Comprobante.Total,
- ObjCFDITimbre.Comprobante.TipoComprobante,
- ObjCFDITimbre.Comprobante.Exportacion,
- ObjCFDITimbre.Comprobante.MetodoPago,
- ObjCFDITimbre.Comprobante.LugarExpedicion,
- ObjCFDITimbre.Comprobante.Confirmacion)
-
- If ObjCFDITimbre.CFDIRelacionados.TipoRelacion <> "" Then
- cfdi.CfdiRelacionados(ObjCFDITimbre.CFDIRelacionados.TipoRelacion)
- For Each uid As String In ObjCFDITimbre.CFDIRelacionados.UUID
- cfdi.CfdiRelacionado(uid)
- Next
- End If
-#Region "Emisor"
- ' cfdi.agregarCfdiRelacionados()
- cfdi.Emisor(EmisorRFC, UsuarioActual.Empresa.Empresa, UsuarioActual.Empresa.CodigoRegimenFiscal, "")
-
-#End Region
-
-#Region "Receptor"
-
- cfdi.Receptor(ObjCFDITimbre.Receptor.RFC, ObjCFDITimbre.Receptor.Nombre, ObjCFDITimbre.Receptor.DomicilioFiscalReceptor, ObjCFDITimbre.Receptor.ResidenciaFiscal, ObjCFDITimbre.Receptor.NumeroRegistroTributario, ObjCFDITimbre.Receptor.RegimenFiscalReceptor, ObjCFDITimbre.Receptor.UsoCFDI)
-
-#End Region
-
-#End Region
-
-#Region "Conceptos"
-
- 'Nodo conceptos, se agregan los PS
-
- If ObjCFDITimbre.Conceptos IsNot Nothing AndAlso ObjCFDITimbre.Conceptos.Count > 0 Then
- For Each concep As CFDIConceptos In ObjCFDITimbre.Conceptos
- cfdi.Concepto(concep.ClaveProdServ, concep.Noidentificacion, concep.Cantidad, concep.ClaveUnidad, concep.Unidad, concep.Descripcion, concep.ValorUnitario, concep.Importe, concep.Descuento, concep.ObjetoImpuesto)
- For Each imp As CFDIConceptosImpuestos In concep.Impuestos
- If imp.TrasladooRetencion = "T" Then
- cfdi.ConceptoTraslado(imp.Base, imp.Impuesto, imp.TipoFactor, imp.TasaOCuota, imp.Importe)
- Else
- cfdi.ConceptoRetencion(imp.Base, imp.Impuesto, imp.TipoFactor, imp.TasaOCuota, imp.Importe)
- End If
- Next
- If concep.CuentaPredial <> "" Then cfdi.CuentaPredial(concep.CuentaPredial)
- If concep.NumeroPedimento <> "" Then cfdi.InformacionAduanera(concep.NumeroPedimento)
- Next
- End If
-
-#End Region
-
- If ObjCFDITimbre.Comprobante.TipoComprobante.Contiene("I", "E") Then
-
-#Region "Impuestos"
- 'SI NO ES FACTURA EN 0 AGREGA LOS IMPUESTOS
- If Ventas.Total <> 0 OrElse (ObjCFDITimbre.TotalImpuestosRetenidos > 0 OrElse ObjCFDITimbre.TotalImpuestosTrasladados > 0) Then
- cfdi.Impuestos(ObjCFDITimbre.TotalImpuestosRetenidos, ObjCFDITimbre.TotalImpuestosTrasladados)
- End If
-#End Region
-#Region " Traslados y Retenciones"
-
-
- If ObjCFDITimbre.Retenciones.Sum(Function(x) x.Importe) > 0 Then
- ''se acumulan los importes
- For Each Ret In ObjCFDITimbre.Retenciones
- cfdi.Retencion(Ret.Impuesto, Ret.Importe)
- Next
- End If
-
- ''se acumulan los importes
- For Each Tras In ObjCFDITimbre.Traslados
- cfdi.Traslado(Tras.Base, Tras.Impuesto, Tras.TipoFactor, Tras.TasaOCuota, Tras.Importe)
- Next
-#End Region
-
-#Region "Impuestos Locales"
-
- If ObjCFDITimbre.RetencionesLocales.Sum(Function(x) x.Importe) > 0 OrElse ObjCFDITimbre.TrasladosLocales.Sum(Function(x) x.Importe) > 0 Then
-
- cfdi.ImpuestosLocales(ObjCFDITimbre.RetencionesLocales.Sum(Function(x) x.Importe), ObjCFDITimbre.TrasladosLocales.Sum(Function(x) x.Importe))
-
- For Each ret As CFDIRetencionesLocales In ObjCFDITimbre.RetencionesLocales
- If ret.Importe > 0 Then
- cfdi.RetencionLocal(ret.ImpuestoLocalRetenido, ret.TasaRetencion, ret.Importe)
- End If
- Next
-
- For Each ret As CFDITrasladosLocales In ObjCFDITimbre.TrasladosLocales
- If ret.Importe > 0 Then
- cfdi.TrasladoLocal(ret.ImpuestoLocalTraslado, ret.TasaTraslado, ret.Importe)
- End If
- Next
- End If
-
- 'If Ventas.CveComplementoTimbrado > 0 Then
-
- ' Select Case Ventas.CveComplementoTimbrado
- ' Case 5 'INE Proceso Ordinario Directivo Estatal"
- ' cfdi.Ine11("Ordinario", "Directivo Estatal", "0")
-
- ' cfdi.IneEntidad(Ventas.ComplementoINE.INEEntidad, "")
- ' cfdi.IneContabilidad(Ventas.ComplementoINE.INEIdContabilidad)
- ' Case 6 'INE Proceso Ordinario Ejecutivo Estatal"
- ' cfdi.Ine11("Ordinario", "Ejecutivo Estatal", "0")
-
- ' cfdi.IneEntidad(Ventas.ComplementoINE.INEEntidad, "")
- ' cfdi.IneContabilidad(Ventas.ComplementoINE.INEIdContabilidad)
- ' Case 7 'INE Proceso Ordinario Ejecutivo Nacional"
-
- ' cfdi.Ine11("Ordinario", "Ejecutivo Nacional", Ventas.ComplementoINE.INEIdContabilidad.ToString)
- ' Case 8 'INE PreCampaña
- ' cfdi.Ine11(Ventas.ComplementoINE.INETipoProceso, "", "0")
-
- ' cfdi.IneEntidad(Ventas.ComplementoINE.INEEntidad, Ventas.ComplementoINE.INETipoComite)
- ' cfdi.IneContabilidad(Ventas.ComplementoINE.INEIdContabilidad)
- ' End Select
-
- 'End If
-
-
-
-#End Region
-
-
-#Region "Comercio Exterior"
-
- 'If Ventas.Cliente.AplicaComercioExterior And ObjCFDITimbre.Complementos.ComercioExterior11.AplicaComercioExteriorSubProyecto Then
- ' If ObjCFDITimbre.Complementos.ComercioExterior11 IsNot Nothing Then
-
- ' 'DATOS GENERALES
- ' cfdi.ComercioExterior11(ObjCFDITimbre.Complementos.ComercioExterior11.MotivoTraslado,
- ' ObjCFDITimbre.Complementos.ComercioExterior11.TipoOperacion,
- ' ObjCFDITimbre.Complementos.ComercioExterior11.ClavedePedimento,
- ' ObjCFDITimbre.Complementos.ComercioExterior11.CertificadoOrigen,
- ' ObjCFDITimbre.Complementos.ComercioExterior11.NumCertificadoOrigen,
- ' ObjCFDITimbre.Complementos.ComercioExterior11.NumeroExportadorConfiable,
- ' ObjCFDITimbre.Complementos.ComercioExterior11.Incoterm,
- ' ObjCFDITimbre.Complementos.ComercioExterior11.Subdivision,
- ' ObjCFDITimbre.Complementos.ComercioExterior11.Observaciones,
- ' ObjCFDITimbre.Complementos.ComercioExterior11.TipoCambioUSD,
- ' ObjCFDITimbre.Complementos.ComercioExterior11.TotalUSD)
- ' 'EMISOR
- ' cfdi.ComercioExterior11Emisor(If(EmisorRFC.Length >= 12, "", ObjCFDITimbre.Complementos.ComercioExterior11.Emisor.CURP))
- ' cfdi.ComercioExterior11Domicilio(ObjCFDITimbre.Complementos.ComercioExterior11.Emisor.Calle,
- ' ObjCFDITimbre.Complementos.ComercioExterior11.Emisor.NumeroExterior,
- ' ObjCFDITimbre.Complementos.ComercioExterior11.Emisor.NumeroInterior,
- ' ObjCFDITimbre.Complementos.ComercioExterior11.Emisor.Colonia,
- ' ObjCFDITimbre.Complementos.ComercioExterior11.Emisor.Localidad,
- ' ObjCFDITimbre.Complementos.ComercioExterior11.Emisor.Referencia,
- ' ObjCFDITimbre.Complementos.ComercioExterior11.Emisor.Municipio,
- ' ObjCFDITimbre.Complementos.ComercioExterior11.Emisor.Estado,
- ' ObjCFDITimbre.Complementos.ComercioExterior11.Emisor.Pais,
- ' ObjCFDITimbre.Complementos.ComercioExterior11.Emisor.CP)
- ' 'RECEPTOR
- ' cfdi.ComercioExterior11Receptor(ObjCFDITimbre.Complementos.ComercioExterior11.Receptor.NumRegIdTrib)
- ' cfdi.ComercioExterior11DomicilioReceptor(ObjCFDITimbre.Complementos.ComercioExterior11.Receptor.Calle,
- ' ObjCFDITimbre.Complementos.ComercioExterior11.Receptor.NumeroExterior,
- ' ObjCFDITimbre.Complementos.ComercioExterior11.Receptor.NumeroInterior,
- ' ObjCFDITimbre.Complementos.ComercioExterior11.Receptor.Colonia,
- ' ObjCFDITimbre.Complementos.ComercioExterior11.Receptor.Localidad,
- ' ObjCFDITimbre.Complementos.ComercioExterior11.Receptor.Referencia,
- ' ObjCFDITimbre.Complementos.ComercioExterior11.Receptor.Municipio,
- ' ObjCFDITimbre.Complementos.ComercioExterior11.Receptor.Estado,
- ' ObjCFDITimbre.Complementos.ComercioExterior11.Receptor.Pais,
- ' ObjCFDITimbre.Complementos.ComercioExterior11.Receptor.CP)
- ' cfdi.ComercioExterior11Destinatario(ObjCFDITimbre.Complementos.ComercioExterior11.Destinatario.NumRegIdTrib,
- ' ObjCFDITimbre.Complementos.ComercioExterior11.Destinatario.Nombre,
- ' ObjCFDITimbre.Complementos.ComercioExterior11.Destinatario.Calle,
- ' ObjCFDITimbre.Complementos.ComercioExterior11.Destinatario.NumeroExterior,
- ' ObjCFDITimbre.Complementos.ComercioExterior11.Destinatario.NumeroInterior,
- ' ObjCFDITimbre.Complementos.ComercioExterior11.Destinatario.Colonia,
- ' ObjCFDITimbre.Complementos.ComercioExterior11.Destinatario.Localidad,
- ' ObjCFDITimbre.Complementos.ComercioExterior11.Destinatario.Referencia,
- ' ObjCFDITimbre.Complementos.ComercioExterior11.Destinatario.Municipio,
- ' ObjCFDITimbre.Complementos.ComercioExterior11.Destinatario.Estado,
- ' ObjCFDITimbre.Complementos.ComercioExterior11.Destinatario.Pais,
- ' ObjCFDITimbre.Complementos.ComercioExterior11.Destinatario.CP)
- ' 'MERCANCIAS
- ' If ObjCFDITimbre.Complementos.ComercioExterior11.Mercancias IsNot Nothing AndAlso ObjCFDITimbre.Complementos.ComercioExterior11.Mercancias.Count > 0 Then
- ' For Each concep As CFDIComercioExterior11Mercancias In ObjCFDITimbre.Complementos.ComercioExterior11.Mercancias
- ' cfdi.ComercioExterior11Mercancia(concep.NoIdentificacion, concep.FraccionArancelaria, concep.CantidadAduana, concep.UnidadAduana, concep.ValorUnitarioAduana, concep.ValorDolares)
- ' If concep.DescripcionesEspecificas.Marca <> "" Then
- ' cfdi.ComercioExterior11MercanciaDescripcionesEspeciales(concep.DescripcionesEspecificas.Marca,
- ' concep.DescripcionesEspecificas.Modelo,
- ' concep.DescripcionesEspecificas.SubModelo,
- ' concep.DescripcionesEspecificas.NumeroSerie)
- ' End If
- ' Next
-
- ' End If
-
-
- ' End If
- 'End If
-
-#End Region
-
-
- End If
-
-
-
-#Region "C O M P L E M E N T O C A R T A P O R T E"
-
-
- If ObjCFDITimbre.Complementos.CartaPorte IsNot Nothing Then
-
- Dim Carta As CFDICartaPorte = ObjCFDITimbre.Complementos.CartaPorte
-
- ''DATOS GENERALES
- cfdi.CartaPorte(Carta.TranspInternac, Carta.EntradaSalidaMercancia, "", Carta.ViaEntradaSalida, Carta.TotalDistanciaRecorrida)
-
- 'UBICACIONES
- If Carta.Ubicaciones IsNot Nothing AndAlso Carta.Ubicaciones.Count > 0 Then
- For Each ubica As CFDICartaPorteUbicacion In Carta.Ubicaciones
- 'origen
- cfdi.CartaPorteUbicacion(ubica.TipoUbicacion, ubica.IDUbicacion, ubica.RFCRemitenteDestinatario, ubica.NombreRemitenteDestinatario, ubica.NumRegIdTrib, ubica.ResidenciaFiscal, ubica.NumEstacion, ubica.NombreEstacion, ubica.NavegacionTrafico, ubica.FechaHoraSalidaLlegada, ubica.TipoEstacion, ubica.DistanciaRecorrida)
- 'cfdi.CartaPorteOrigen(ubica.Origen.IDOrigen, ubica.Origen.RFCRemitente, ubica.Origen.NombreRemitente, ubica.NumRegIdTrib, ubica.Origen.ResidenciaFiscal, ubica.Origen.NumEstacion, ubica.Origen.NombreEstacion, ubica.Origen.NavegacionTrafico, ubica.Origen.FechaHoraSalida)
- cfdi.CartaPorteDomicilio(ubica.Domicilio.Calle, ubica.Domicilio.NumeroExterior, ubica.Domicilio.NumeroInterior, ubica.Domicilio.Colonia, ubica.Domicilio.Localidad, ubica.Domicilio.Referencia, ubica.Domicilio.Municipio, ubica.Domicilio.Estado, ubica.Domicilio.Pais, ubica.Domicilio.CP)
- Next
-
- End If
-
- 'MERCANCIAS
- If Carta.Mercancias IsNot Nothing Then
- cfdi.CartaPorteMercancias(Carta.Mercancias.PesoBrutoTotal, Carta.Mercancias.UnidadPeso, Carta.Mercancias.PesoNetoTotal, Carta.Mercancias.NumTotalMercancias, Carta.Mercancias.CargoporTasacion)
- If Carta.Mercancias IsNot Nothing AndAlso Carta.Mercancias.Mercancias.Count > 0 Then
- For Each concep As CFDICartaPorteMercancia In Carta.Mercancias.Mercancias
- cfdi.CartaPorteMercancia(concep.BienesTransp, concep.ClaveSTCC, concep.Descripción, concep.Cantidad, concep.ClaveUnidad, concep.Unidad, concep.Dimensiones, concep.MaterialPeligroso, concep.ClaveMaterialPeligroso, If(concep.ClaveMaterialPeligroso <> "", concep.Embalaje, ""), If(concep.ClaveMaterialPeligroso <> "", concep.DescripEmbalaje, ""), concep.PesoenKg, concep.ValorMercancia, concep.Moneda, concep.FraccionArrancelaria, concep.UUIDComercioExt)
- For Each transp In concep.MercanciasCantidadTransporta
- cfdi.CartaPorteCantidadTransporta(transp.Cantidad, transp.IDOrigen, transp.IDDestino, transp.CvesTransportes)
- Next
- Next
- 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
-
- End If
-
-
-#End Region
-
-
-#Region "Complemento Pago"
-
- If ObjCFDITimbre.Comprobante.TipoComprobante = "P" Then
-
- cfdi.Pago(ObjCFDITimbre.ComplementoPagos.FechaPago.ToString("yyyy-MM-ddTHH:mm:ss"),
- ObjCFDITimbre.ComplementoPagos.FormaDePagoP,
- ObjCFDITimbre.ComplementoPagos.MonedaP,
- ObjCFDITimbre.ComplementoPagos.TipoCambioP,
- ObjCFDITimbre.ComplementoPagos.Monto,
- ObjCFDITimbre.ComplementoPagos.NumOperacion,
- ObjCFDITimbre.ComplementoPagos.RfcEmisorCtaOrd,
- ObjCFDITimbre.ComplementoPagos.NomBancoOrdExt,
- ObjCFDITimbre.ComplementoPagos.CtaOrdenante,
- ObjCFDITimbre.ComplementoPagos.RfcEmisorCtaBen,
- ObjCFDITimbre.ComplementoPagos.CtaBeneficiario,
- ObjCFDITimbre.ComplementoPagos.TipoCadPago,
- ObjCFDITimbre.ComplementoPagos.CertPago,
- ObjCFDITimbre.ComplementoPagos.CadPago,
- ObjCFDITimbre.ComplementoPagos.SelloPago)
-
-
- If ObjCFDITimbre.ComplementoPagos.DocumentosRelacionados.Count > 0 Then
-
-
- For Each doc As CFDIComplementoPagosDocsRelacionados In ObjCFDITimbre.ComplementoPagos.DocumentosRelacionados
- cfdi.PagoDoctoRelacionado(doc.IdDocumento,
- doc.Serie,
- doc.Folio,
- doc.MonedaDR,
- doc.TipoCambioDR,
- doc.MetodoDePagoDR,
- doc.NumParcialidad,
- doc.ImpSaldoAnt,
- doc.ImpPagado,
- doc.ImpSaldoInsoluto)
-
- Next
-
- 'Estos impuestos aplicarían para anticipos
- If ObjCFDITimbre.ComplementoPagos.TotalImpuestosRetenidos > 0 OrElse ObjCFDITimbre.ComplementoPagos.TotalImpuestosTrasladados > 0 Then
-
- cfdi.PagoImpuestos(ObjCFDITimbre.ComplementoPagos.TotalImpuestosRetenidos, ObjCFDITimbre.ComplementoPagos.TotalImpuestosTrasladados)
- If (ObjCFDITimbre.ComplementoPagos.Impuestos).Where(Function(x) x.TrasladooRetencion = "R").Count > 0 Then
- For Each Ret As CFDIConceptosImpuestos In (ObjCFDITimbre.ComplementoPagos.Impuestos).Where(Function(x) x.TrasladooRetencion = "R")
- cfdi.PagoRetencion(Ret.Impuesto, Ret.Importe)
- Next
- End If
- If (ObjCFDITimbre.ComplementoPagos.Impuestos).Where(Function(x) x.TrasladooRetencion = "T").Count > 0 Then
- For Each Tra As CFDIConceptosImpuestos In (ObjCFDITimbre.ComplementoPagos.Impuestos).Where(Function(x) x.TrasladooRetencion = "T")
- cfdi.PagoTraslado(Tra.Impuesto, Tra.TipoFactor, Tra.TasaOCuota, Tra.Importe)
- Next
- End If
-
- End If
-
-
-
- End If
-
- End If
-#End Region
-
-
-
-#Region "Nomina12"
- If ObjCFDITimbre.Comprobante.TipoComprobante = "N" Then
-
- 'cfdi.Esquema.AgregarEsquema("http://www.sat.gob.mx/nomina12 http://www.sat.gob.mx/sitio_internet/cfd/nomina/nomina12.xsd")
- cfdi.Nomina12(ObjCFDITimbre.Nomina.TipoNomina, ObjCFDITimbre.Nomina.FechaPago.ToString("yyyy-MM-dd"), ObjCFDITimbre.Nomina.FechaInicio.ToDate().ToString("yyyy-MM-dd"), ObjCFDITimbre.Nomina.FechaFin.ToDate().ToString("yyyy-MM-dd"), ObjCFDITimbre.Nomina.NumDiasPagados, If(ObjCFDITimbre.Nomina.Percepciones IsNot Nothing AndAlso ObjCFDITimbre.Nomina.Percepciones.Count > 0, ObjCFDITimbre.Nomina.TotalPercepciones, 0), If(ObjCFDITimbre.Nomina.Deducciones IsNot Nothing AndAlso ObjCFDITimbre.Nomina.Deducciones.Count > 0, ObjCFDITimbre.Nomina.TotalDeducciones, 0), If(ObjCFDITimbre.Nomina.OtrosPagos IsNot Nothing AndAlso ObjCFDITimbre.Nomina.OtrosPagos.Count > 0, ObjCFDITimbre.Nomina.TotalOtrosPagos, 0))
-
- cfdi.Nomina12Emisor(ObjCFDITimbre.Emisor.CURP, If(ObjCFDITimbre.Nomina.Receptor.TipoContrato.Contiene("09", "10", "99"), "", ObjCFDITimbre.Emisor.RegistroPatronal), ObjCFDITimbre.Emisor.RFC)
-
- If UsuarioActual.Empresa.UsaAC Then cfdi.Nomina12EntidadSNCF("IF", 90)
-
-
-#Region "Receptor"
-
- cfdi.Nomina12Receptor(ObjCFDITimbre.Nomina.Receptor.CURP,
- ObjCFDITimbre.Nomina.Receptor.NSS,
- ObjCFDITimbre.Nomina.Receptor.FechaInicioContrato.ToDate().ToString("yyyy-MM-dd"),
- ObjCFDITimbre.Nomina.Receptor.Antiguedad,
- ObjCFDITimbre.Nomina.Receptor.TipoContrato,
- ObjCFDITimbre.Nomina.Receptor.Sindicalizado,
- ObjCFDITimbre.Nomina.Receptor.CodigoTipoJornada,
- ObjCFDITimbre.Nomina.Receptor.CodigoRegimenContratacion,
- ObjCFDITimbre.Nomina.Receptor.CodigoEmpleado,
- ObjCFDITimbre.Nomina.Receptor.Departamento,
- ObjCFDITimbre.Nomina.Receptor.Puesto,
- ObjCFDITimbre.Nomina.Receptor.CodigoRiesgoPuesto,
- If(ObjCFDITimbre.Nomina.TipoNomina = "E", "99", ObjCFDITimbre.Nomina.Receptor.TipoPeriodo),
- ObjCFDITimbre.Nomina.Receptor.CodigoBanco,
- ObjCFDITimbre.Nomina.Receptor.NumeroCuenta,
- ObjCFDITimbre.Nomina.Receptor.SBC,
- ObjCFDITimbre.Nomina.Receptor.SDI,
- ObjCFDITimbre.Nomina.Receptor.CodigoEntidadFederativa)
- 'cfdi.Nomina12SubContratacion("", "0")
- 'cfdi.agregarNominaPercepcionesPercepcionAccionesOTitulos12("100", "200");
- 'cfdi.agregarNominaPercepcionesSeparacionIndemnizacion12("100", "10", "1000", "100", "50");
- 'cfdi.agregarNominaPercepcionesJubilacionPensionRetiro12("50", "100", "10", "100", "0");
-
-
- End If
-#End Region
- If ObjCFDITimbre.Nomina IsNot Nothing Then
- 'If cfdi.Nomina12SeparacionIndemnizacion Then
- If ObjCFDITimbre.Nomina.Percepciones IsNot Nothing AndAlso ObjCFDITimbre.Nomina.Percepciones.Count > 0 Then
- cfdi.Nomina12Percepciones(ObjCFDITimbre.Nomina.TotalSueldos, ObjCFDITimbre.Nomina.TotalIndemnizacion, ObjCFDITimbre.Nomina.TotalJubilacion, ObjCFDITimbre.Nomina.TotalPercepcionesGravado, ObjCFDITimbre.Nomina.TotalPercepcionesExento)
- For Each percep As CFDINominaPercepciones In ObjCFDITimbre.Nomina.Percepciones
- cfdi.Nomina12Percepcion(percep.TipoPercepcion, percep.Clave, percep.Concepto, Math.Round(percep.ImporteGravado, 2), Math.Round(percep.ImporteExento, 2))
- If percep.TipoPercepcion.ToEntero() = 19 Then
-
- If ObjCFDITimbre.Nomina.HorasExtras IsNot Nothing AndAlso ObjCFDITimbre.Nomina.HorasExtras.Count > 0 Then
- For Each HoraExtra As CFDINominaHorasExtras In ObjCFDITimbre.Nomina.HorasExtras
- cfdi.Nomina12HorasExtra(HoraExtra.Dias.ToEntero, HoraExtra.TipoHoras, HoraExtra.HorasExtra, HoraExtra.ImportePagado)
- Next
- End If
- End If
- Next
- End If
-
- If ObjCFDITimbre.IStimbreFiniquito Then
- 'ObjCFDITimbre.Nomina.
- Dim UltimoSueldoOrdinario As Double = ObjCFDITimbre.Nomina.UltimoSueldoOrdinario.ToString().ToDouble()
- Dim TotalIndemnizacion As Double = ObjCFDITimbre.Nomina.TotalIndemnizacion
- Dim t1 As Double = If(UltimoSueldoOrdinario < TotalIndemnizacion, UltimoSueldoOrdinario, TotalIndemnizacion)
- Dim t2 As Double = If(UltimoSueldoOrdinario < TotalIndemnizacion, TotalIndemnizacion, UltimoSueldoOrdinario)
- cfdi.Nomina12SeparacionIndemnizacion(TotalIndemnizacion, ObjCFDITimbre.Nomina.Antiguedad, UltimoSueldoOrdinario, t1, t2 - t1)
-
- End If
- 'deducciones al final
- If ObjCFDITimbre.Nomina.Deducciones IsNot Nothing AndAlso ObjCFDITimbre.Nomina.Deducciones.Count > 0 Then
- cfdi.Nomina12Deducciones(ObjCFDITimbre.Nomina.TotalDeduccionesOtras, Math.Round(ObjCFDITimbre.Nomina.TotalDeduccionesImpuestosRetenidos, 2))
- For Each deduc As CFDINominaDeducciones In ObjCFDITimbre.Nomina.Deducciones
- cfdi.Nomina12Deduccion(deduc.TipoDeduccion, deduc.Clave, deduc.Concepto, Math.Round(deduc.Importe, 2))
- Next
- End If
- If ObjCFDITimbre.Nomina.OtrosPagos IsNot Nothing Then
- ' cfdi.agregarNominaOtrosPagosOtroPago12("002", "002", "Subsidio", "10.00");
- ' cfdi.agregarNominaOtrosPagosOtroPagoSubsidioAlEmpleo12("10.00");
- If ObjCFDITimbre.Nomina.OtrosPagos IsNot Nothing AndAlso ObjCFDITimbre.Nomina.OtrosPagos.Count > 0 Then
- For Each otpag As CFDINominaOtrosPagos In ObjCFDITimbre.Nomina.OtrosPagos
- cfdi.Nomina12OtroPago(otpag.TipoOtroPago, otpag.Clave, otpag.Concepto, otpag.Importe)
- If otpag.TipoOtroPago = "002" Then
- cfdi.Nomina12SubsidioAlEmpleo(otpag.Subsidiocausado)
- End If
-
- If otpag.TipoOtroPago = "004" AndAlso otpag.Importe > 0 Then
- If otpag.ejercicio > 0 Then
- cfdi.CompensacionSaldosAFavor(otpag.SaldoAFavor, otpag.ejercicio, otpag.RemanenteSalFav) 'otpag.SaldoAFavor
- End If
- End If
-
- Next
- End If
- End If
- If ObjCFDITimbre.Nomina.Incapacidades IsNot Nothing AndAlso ObjCFDITimbre.Nomina.Incapacidades.Count > 0 Then
- For Each Incap As CFDINominaIncapacidades In ObjCFDITimbre.Nomina.Incapacidades
- cfdi.Nomina12Incapacidad(Incap.DiasIncapacidad.ToEntero, Incap.TipoIncapacidad, Incap.Importe)
- Next
- End If
- End If
-#End Region
-
- sw.Stop()
- swTiempo.AppendFormat("Armado: ({0}) {1} ", sw.ElapsedMilliseconds - swmili, sw.ElapsedMilliseconds)
- swmili = sw.ElapsedMilliseconds
- sw.Start()
-#Region "Genera XML"
- Dim ArchivoGenerado As Boolean = False
- Try
- cfdi.GenerarXmlB64(llaveBase64, Clave)
- ArchivoGenerado = True
- Catch ex As Exception
- Retorno = cfdi.Mensaje
- If Retorno = "" OrElse IsNothing(Retorno) Then
- Retorno = $"llaveBase64 ={llaveBase64} Clave ={Clave} {ex.ToString()}"
- End If
- MensajeErrorCFDI = Retorno
- End Try
-
-#End Region
sw.Stop()
swTiempo.AppendFormat("Genera: ({0}) {1} ", sw.ElapsedMilliseconds - swmili, sw.ElapsedMilliseconds)
swmili = sw.ElapsedMilliseconds
@@ -6184,7 +5732,18 @@ Public Class Timbrado
Dim msgErrorGeneracion As String = If(String.IsNullOrEmpty(cfdi.Mensaje), "", cfdi.Mensaje)
#Region "Timbra"
- If ArchivoGenerado Then
+ If RespGeneracionXML = "" Then
+ 'OBTENER EL XML DE LA VARIABLE PRIVADA "_xml" YA QUE NO ES ACCESIBLE POR MEDIO DE LA PROPIEDAD "XML" ANTES DE TIMBRAR
+ Dim valorXML = ""
+ Try
+
+ Dim tipo = GetType(GoFac.Cfdi4)
+ Dim info = tipo.GetField("_xml", BindingFlags.NonPublic Or BindingFlags.Instance)
+ valorXML = info?.GetValue(cfdi).ToString()
+ Catch ex As Exception
+ valorXML = ""
+ OnError("Ocurrió un error al generar el xml", ex)
+ End Try
Dim Respuesta As String = ""
@@ -6196,12 +5755,11 @@ Public Class Timbrado
New JProperty("certBase64", certBase64),
New JProperty("keyBase64", llaveBase64),
New JProperty("keyPass", Clave),
- New JProperty("xmlBase64", cfdi.Xml.ToBase64Encode()),
+ New JProperty("xmlBase64", valorXML.ToString().ToBase64Encode()),
New JProperty("prueba", (Not TimbraProduccion).ToString().ToLower),
New JProperty("opciones", New String(0) {""})
)
- 'Respuesta = EnviarInformacionPADE("https://timbrado.pade.mx/servicio/rest/timbrado/timbrarConCSD", payload.ToString(), TokenAuth)
- Respuesta = EnviarInformacionPADE("https://timbrado.pade.mx/servicio/rest/timbrado/timbrarConCSD", payload.ToString(), TokenAuth)
+ Respuesta = EnviarInformacionPADE("https://timbrado.pade.mx/servicio/rest/timbrado40/timbrarConCSD", payload.ToString(), TokenAuth)
End If
' Aumentamos el timeout de la operación
@@ -6227,7 +5785,13 @@ Public Class Timbrado
If result.timbradoOk Then
Dim FolioFiscal As String = result.UUID
'GUARDA EL XML RETORNADO POR EL PAC
- 'cfdi.EscribirXML(result.xmlBase64.ToBase64Decode(), RutaArchivo, NombreArchivoXML)
+ Try
+ Dim xdoc As New XmlDocument()
+ xdoc.LoadXml(result.xmlBase64.ToBase64Decode())
+ xdoc.Save(RutaArchivo & NombreArchivoXML & ".xml")
+ Catch ex As Exception
+ OnError("Ocurrió un error al guardar el xml", ex)
+ End Try
sw.Stop()
swTiempo.AppendFormat("Guardado: ({0}) {1} ", sw.ElapsedMilliseconds - swmili, sw.ElapsedMilliseconds)
@@ -6342,7 +5906,6 @@ Public Class Timbrado
End Function
#End Region
-
Public Class PADEServicioTimbradoResp
@@ -6498,7 +6061,7 @@ Public Class Timbrado
comprobante.FormaPago = ObjCFDITimbre.Comprobante.FormadePago
If ObjCFDITimbre.Comprobante.TipoComprobante.Contiene("I", "E", "N") Then comprobante.CondicionesDePago = ObjCFDITimbre.Comprobante.CondicionesdePago
- comprobante.SubTotal = ObjCFDITimbre.Comprobante.Subtotal.RoundSQL(NumDecimalesImporte)
+ comprobante.SubTotal = ObjCFDITimbre.Comprobante.SubTotal.RoundSQL(NumDecimalesImporte)
If ObjCFDITimbre.Comprobante.TipoComprobante.Contiene("I", "E", "N") Then
If ObjCFDITimbre.Comprobante.Descuentos > 0 Then
comprobante.DescuentoSpecified = True
diff --git a/Bancos/IE.aspx.vb b/Bancos/IE.aspx.vb
index b6d2a0315..8be4b0926 100644
--- a/Bancos/IE.aspx.vb
+++ b/Bancos/IE.aspx.vb
@@ -4624,8 +4624,8 @@ Partial Class Bancos_IE
End If
Else
- Dim Resp As RespuestaCancelacionSAT = ObjCancelacion.CFDICancelar(UsuarioActual.Empresa, FolioFiscalCancelar, 0, RFCReceptorCancelar, UsuarioActual.Empresa.RFC, CvePACCancelacion, CveSATMotivoCancelacion:=CveSATMotivoCancelacion)
- If Resp.Verificado Then
+ Dim respCancelacion = ObjCancelacion.CFDICancelar(UsuarioActual.Empresa, FolioFiscalCancelar, 0, RFCReceptorCancelar, UsuarioActual.Empresa.RFC, CvePACCancelacion, CveSATMotivoCancelacion:=CveSATMotivoCancelacion)
+ If respCancelacion.Verificado Then
If Banc.UpdateComplementoPago(CveComplementoPagoCancelar, "-1", -1, UsuarioActual.CveEmpresa, 2, CvePACCancelacion, FechaCancelacion:=ObjCancelacion.CancelacionFecha, SelloCancelacion:=ObjCancelacion.CancelacionAcuse, CveSATMotivoCancelacion:=CveSATMotivoCancelacion) Then
CargaComplementosPago()
@@ -6695,9 +6695,9 @@ Partial Class Bancos_IE
End If
Else
- Dim Resp As RespuestaCancelacionSAT = ObjCancelacion.CFDICancelar(UsuarioActual.Empresa, FolioFiscalCancelar, 0, RFCReceptorCancelar, UsuarioActual.Empresa.RFC, CvePACCancelacion, CveSATMotivoCancelacion:=CveSATMotivoCancelacion)
- If Resp.Verificado Then
+ Dim resp = ObjCancelacion.CFDICancelar(UsuarioActual.Empresa, FolioFiscalCancelar, 0, RFCReceptorCancelar, UsuarioActual.Empresa.RFC, CvePACCancelacion, CveSATMotivoCancelacion:=CveSATMotivoCancelacion)
+ If resp.Verificado Then
If ObjBanco.UpdateComplementoPago(CveComplementoPagoCancelar, "-1", -1, UsuarioActual.CveEmpresa, 2, CvePACCancelacion, FechaCancelacion:=ObjCancelacion.CancelacionFecha, SelloCancelacion:=ObjCancelacion.CancelacionAcuse, CveSATMotivoCancelacion:=CveSATMotivoCancelacion) Then
diff --git a/Bancos/RepComplementoPago.aspx.vb b/Bancos/RepComplementoPago.aspx.vb
index 001edbfc8..d02dcc978 100644
--- a/Bancos/RepComplementoPago.aspx.vb
+++ b/Bancos/RepComplementoPago.aspx.vb
@@ -596,8 +596,8 @@ Partial Class Bancos_RepComplementoPago
End If
Else
-
- If ObjCancelacion.CFDICancelar(UsuarioActual.Empresa, Can_FolioFiscalCancelar, 0, Can_RFCReceptorCancelar, UsuarioActual.Empresa.RFC, Can_CvePACCancelacion, CveSATMotivoCancelacion:=CveSATMotivoCancelacion) Then
+ 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
Alert("El complemento se cancelo correctamente.")
diff --git a/Bin/Profact.TimbraCFDI.dll b/Bin/Profact.TimbraCFDI.dll
index 5bf77d18a..b1c756dcf 100644
Binary files a/Bin/Profact.TimbraCFDI.dll and b/Bin/Profact.TimbraCFDI.dll differ
diff --git a/GPS/Trayectos.aspx b/GPS/Trayectos.aspx
index b7e70ad7d..bf619391a 100644
--- a/GPS/Trayectos.aspx
+++ b/GPS/Trayectos.aspx
@@ -88,8 +88,11 @@
-
-
+
+
+
+
+
@@ -146,7 +149,7 @@
-
+
diff --git a/GPS/Trayectos.aspx.vb b/GPS/Trayectos.aspx.vb
index 611d4da95..6b851af94 100644
--- a/GPS/Trayectos.aspx.vb
+++ b/GPS/Trayectos.aspx.vb
@@ -37,9 +37,18 @@ Partial Class GPS_Trayectos
Set(value As DataTable)
ViewState("DtPosiciones") = value
End Set
- End Property
+ End Property
+ Private Property DtTrayectos As DataTable
+ Get
+ Return CType(ViewState("DtTrayectos"), DataTable)
+ End Get
+ Set(value As DataTable)
+ ViewState("DtTrayectos") = value
+ End Set
+ End Property
+
#End Region
-
+
Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
If Not Page.IsPostBack Then
DirectCast(Master.FindControl("TSM"), ScriptManager).EnablePageMethods = True
@@ -52,7 +61,6 @@ Partial Class GPS_Trayectos
CargaDispositivos()
CargaGeoReferencias()
CargaEstatus()
- CargaDdlTrayectos()
CargaTrayectos()
End Sub
@@ -98,28 +106,32 @@ Partial Class GPS_Trayectos
Dim CveEstatus As Integer = -1
If ChkActivas.Checked AndAlso DdlEstatusTrayecto.SelectedValue.ToEntero() <= 0 Then
- CveEstatus = -2
+ CveEstatus = -2
Else
CveEstatus = DdlEstatusTrayecto.SelectedValue.ToEntero()
End If
Dim ObjGPS As New ClsGPS
If ObjGPS.GetTrayectos(-1, DdlDispositivoFiltro.SelectedValue.ToEntero(), UsuarioActual.CveCliente, CveEstatus, FechaI, FechaF) Then
- GvBarra.DataSource = ObjGPS.DtResultados
+ DtTrayectos = ObjGPS.DtResultados.Copy()
End If
ObjGPS.Dispose()
+
+ GvBarra.DataSource = DtTrayectos
GvBarra.DataBind()
UPGV.Update()
End Sub
- Public Sub CargaDdlTrayectos()
- Dim ObjGPS As New ClsGPS
- If ObjGPS.GetTrayectos(-1, -1, UsuarioActual.CveCliente) Then
- DdlTrayecto.DataSource = ObjGPS.DtResultados.FiltraParametros("EsFin = True")
- End If
- ObjGPS.Dispose()
+ Public Sub CargaDdlTrayectos()
+ 'Dim ObjGPS As New ClsGPS
+ 'If ObjGPS.GetTrayectos(-1, -1, UsuarioActual.CveCliente) Then
+ ' DdlTrayecto.DataSource = ObjGPS.DtResultados.FiltraParametros("EsFin = True")
+ 'End If
+ 'ObjGPS.Dispose()
+
+ DdlTrayecto.DataSource = DtTrayectos
DdlTrayecto.DataBind()
- UpAgregar.Update()
+ UpDdlTrayecto.Update()
End Sub
Public Sub CargaEstatus()
Dim ObjGPS As New ClsGPS
@@ -469,5 +481,9 @@ Partial Class GPS_Trayectos
TimmerRefresh.Enabled = ChkTimmer.Checked
UPGV.Update()
- End Sub
+ End Sub
+ Protected Sub LnkAddE_Click(sender As Object, e As EventArgs)
+ CargaDdlTrayectos()
+ RegistraScript("$('#DivCrearApatir').modal({backdrop: 'static', keyboard: false});")
+ End Sub
End Class
diff --git a/Inventarios/RepTraspasoEmitido.aspx.cs b/Inventarios/RepTraspasoEmitido.aspx.cs
index c670c1054..fbb396b49 100644
--- a/Inventarios/RepTraspasoEmitido.aspx.cs
+++ b/Inventarios/RepTraspasoEmitido.aspx.cs
@@ -62,7 +62,8 @@ public partial class Inventarios_RepTraspasoEmitido : ClsPaginas
int CveEstatusTimbrado = 0;
string FolioFiscal = Gvr.DataKey("FolioFiscal").ToString(),SelloCancelacion ="";
int CveMovimiento = Gvr.DataKey("CveMovimiento").ToEntero();
- if (ObjCancelacion.CFDICancelar(UsuarioActual.Empresa, FolioFiscal, 0, UsuarioActual.Empresa.RFC, UsuarioActual.Empresa.RFC, 4,false))
+ var resp = ObjCancelacion.CFDICancelar(UsuarioActual.Empresa, FolioFiscal, 0, UsuarioActual.Empresa.RFC, UsuarioActual.Empresa.RFC, 4, false);
+ if (resp.Verificado)
{
CancelacionFecha = ObjCancelacion.CancelacionFecha;
SelloCancelacion = ObjCancelacion.CancelacionAcuse;
diff --git a/Ventas/Clientes.aspx.vb b/Ventas/Clientes.aspx.vb
index f999d2e09..495e49793 100644
--- a/Ventas/Clientes.aspx.vb
+++ b/Ventas/Clientes.aspx.vb
@@ -2064,20 +2064,25 @@ Partial Class Clientes
DdlSucursalFormaPago33.DataSource = GlobalDTVtaFormaPago
DdlSucursalFormaPago33.DataBind()
End Sub
- Private Sub CargaComboCFDI()
+ Private Sub CargaComboCFDI()
+ Dim RegimenFiscalCliente = DdlRegimenFiscal.SelectedValue.ToString()
+ If UsuarioActual.Empresa.Funcionalidad(350) <> "1" Then
+ RegimenFiscalCliente = "-1"
+ End If
+
DdlUsoCFDI.Items.Clear()
- DdlUsoCFDI.DataSource = GlobalDTSATUsosCFDI(UsuarioActual.Empresa.EsPersonaFisica)
+ DdlUsoCFDI.DataSource = GlobalDTSATUsosCFDI(UsuarioActual.Empresa.EsPersonaFisica, RegimenFiscalReceptor:=RegimenFiscalCliente)
DdlUsoCFDI.DataBind()
DdlUsoCFDI.Items.Insert(0, New ListItem("Seleccione", "-1"))
DdlSucursalUsoCFDI.Items.Clear()
- DdlSucursalUsoCFDI.DataSource = GlobalDTSATUsosCFDI(UsuarioActual.Empresa.EsPersonaFisica)
+ DdlSucursalUsoCFDI.DataSource = GlobalDTSATUsosCFDI(UsuarioActual.Empresa.EsPersonaFisica, RegimenFiscalReceptor:=RegimenFiscalCliente)
DdlSucursalUsoCFDI.DataBind()
- End Sub
+ End Sub
#End Region
-
+
#Region "V E R M Á S"
-
+
Protected Sub BtnVerMasVentas_Click(sender As Object, e As EventArgs)
If BtnVerMasVentas.Text = "Ver Más" Then
CargaHistorial(-1)
diff --git a/Ventas/PV.aspx.vb b/Ventas/PV.aspx.vb
index 280686c3a..e7065a8a7 100644
--- a/Ventas/PV.aspx.vb
+++ b/Ventas/PV.aspx.vb
@@ -758,6 +758,15 @@ Partial Class PV
End Set
End Property
+ Private Property CantidadAntesEdicion As Decimal
+ Get
+ Return If(IsNothing(ViewState("CantidadAntesEdicion")), "0", ViewState("CantidadAntesEdicion").ToString()).ToDecimal()
+ End Get
+ Set(value As Decimal)
+ ViewState("CantidadAntesEdicion") = value
+ End Set
+ End Property
+
#End Region
#Region "PROPIEDADES CONTRATOS"
@@ -1071,6 +1080,7 @@ Partial Class PV
ViewState("ClienteRetIVA") = 0
ViewState("ClienteRetISR") = 0
ViewState("EnviarCorreoCliente") = False
+ Me.CantidadAntesEdicion = 0
HdnPorcentajeDescuentoMaximo.Value = If(UsuarioActual.DescuentoAutorizado > 0, UsuarioActual.DescuentoAutorizado, 15).ToString()
CveVentaDetalle = -1
EstablecioFolio = False
@@ -5125,7 +5135,15 @@ Partial Class PV
If DdlTipoComprobante.SelectedValue <> "Cot" Then
'VALIDA EXISTENCIA
If UsuarioActual.CveEmpresa.Contiene({1, 72, 80, 119, 140}) Then
- If Existencia - TmpDT.SUM("Cantidad", $"CvePS = {CvePS}") < TxtCantidad.Text.ToDouble Then
+ Dim CantidadAgregada As Decimal = TmpDT.SUMD("Cantidad", $"CvePS = {CvePS}")
+
+ If Modalidad = "U" Then
+ CantidadAgregada = CantidadAgregada - CantidadAntesEdicion + TxtCantidad.Text.ToDecimal()
+ Else
+ CantidadAgregada = CantidadAgregada + TxtCantidad.Text.ToDecimal()
+ End If
+
+ If Existencia < CantidadAgregada Then
Alert("No cuenta con la cantidad suficiente en inventario. Cuenta con " + Existencia.FormatoNumero(2) + ".", TipoMensaje.MsgAdvertencia)
Return False
End If
@@ -5229,6 +5247,7 @@ Partial Class PV
End Sub
Private Sub CargaAgregar()
Modalidad = "A"
+ CantidadAntesEdicion = 0
LnkAgregarPS.Text = "Agregar"
CargaBCI()
LimpiaAgregar()
@@ -5268,6 +5287,7 @@ Partial Class PV
End If
DdlPSIndexChange(DdlPS.SelectedValue.ToEntero, DdlPS)
DdlUnidadMedida.SelectedValueExist(GvRow.DataKey("CveUM"))
+ CantidadAntesEdicion = GvRow.DataKey("Cantidad").ToDecimal()
TxtCantidad.Text = GvRow.DataKey("Cantidad")
'Dim TotalCargos As Decimal = 0
@@ -5324,6 +5344,9 @@ Partial Class PV
RegistraScript("$('#DivAddVenta').modal({backdrop: 'static', keyboard: false});", "EdicionVenta")
End Sub
Protected Sub LnkAgregarPS_Click(sender As Object, e As EventArgs)
+
+ Dim DrPS As DataRow = GlobalDTPS(UsuarioActual.CveEmpresa, CvePS:=DdlPS.SelectedValue.ToEntero).FiltroPrimero("")
+
If ChkAjuste.Checked Then
Dim FolioGarantia As MFolioGarantiaMensaje = ValidaFolioGarantia(DdlPSAjuste.SelectedValue.ToEntero(), DdlFolioGarantia.SelectedValue.ToEntero())
@@ -5337,25 +5360,34 @@ Partial Class PV
Exit Sub
End If
- If String.IsNullOrEmpty(TxtAnioVehiculo.Text.Trim()) Then
- Alert("El campo año esta vacío.", TipoMensaje.MsgAdvertencia)
- Exit Sub
- End If
+ If DrPS IsNot Nothing Then
+ 'SOLO DEBE AGREGAR POLIZA VIRTUAL SI ES ACUMULADOR
+ If DrPS("CveClasificacion").ToString().ToEntero().Contiene(20520, 20522, 20513, 20511, 20521, 20512, 20514, 20229) Then
+ If String.IsNullOrEmpty(TxtAnioVehiculo.Text.Trim()) Then
+ Alert("El campo año esta vacío.", TipoMensaje.MsgAdvertencia)
+ Exit Sub
+ End If
- If TxtAnioVehiculo.Text.ToDecimal() < 1900 Then
- Alert("El campo año debe ser mayor a 1900.", TipoMensaje.MsgAdvertencia)
- Exit Sub
+ If TxtAnioVehiculo.Text.ToDecimal() < 1900 Then
+ Alert("El campo año debe ser mayor a 1900.", TipoMensaje.MsgAdvertencia)
+ Exit Sub
+ End If
+ End If
End If
-
Else
- If Not String.IsNullOrEmpty(TxtAnioVehiculo.Text.Trim()) Then
- If TxtAnioVehiculo.Text.ToDecimal() < 1900 Then
- Alert("El año del vehiculo del vehículo no tiene el formato correcto.", TipoMensaje.MsgAdvertencia)
- Exit Sub
+ If DrPS IsNot Nothing Then
+ 'SOLO DEBE AGREGAR POLIZA VIRTUAL SI ES ACUMULADOR
+ If DrPS("CveClasificacion").ToString().ToEntero().Contiene(20520, 20522, 20513, 20511, 20521, 20512, 20514, 20229) Then
+ If Not String.IsNullOrEmpty(TxtAnioVehiculo.Text.Trim()) Then
+ If TxtAnioVehiculo.Text.ToDecimal() < 1900 Then
+ Alert("El año del vehiculo del vehículo no tiene el formato correcto.", TipoMensaje.MsgAdvertencia)
+ Exit Sub
+ End If
+ End If
End If
End If
- End If
+ End If
If AgregarPS() Then
diff --git a/Ventas/RepVentaDetalle.aspx b/Ventas/RepVentaDetalle.aspx
index 4e87ac242..093dde449 100644
--- a/Ventas/RepVentaDetalle.aspx
+++ b/Ventas/RepVentaDetalle.aspx
@@ -308,6 +308,11 @@
diff --git a/Ventas/RepVentas.aspx.vb b/Ventas/RepVentas.aspx.vb
index 178f87921..50806af27 100644
--- a/Ventas/RepVentas.aspx.vb
+++ b/Ventas/RepVentas.aspx.vb
@@ -100,7 +100,7 @@ Partial Class Ventas_RepVentas
'SI ES EL USUARIO SISTEMA MOSTRAR LA MODALIDAD CONTABLE (TEMPORAL)
'If UsuarioActual.CveUsuario = 100 Then
- divModalidadcontable.Visible = True
+ 'divModalidadcontable.Visible = True
'End If
'Modalidad Cotizacion
@@ -268,7 +268,11 @@ Partial Class Ventas_RepVentas
'Carga Clasificacion Cliente
DdlClienteClasificacion.DataSource = GlobalDTClienteClasificaciones(UsuarioActual.CveEmpresa)
DdlClienteClasificacion.DataBind()
- DdlClienteClasificacion.Items.Insert(0, New ListItem("Todos", "-1"))
+ DdlClienteClasificacion.Items.Insert(0, New ListItem("Todos", "-1"))
+
+ DdlTipoRelacion.DataSource = GlobalDTVtaTiposRelacion
+ DdlTipoRelacion.DataBind()
+ DdlTipoRelacion.Items.Insert(0, New ListItem("Todos", "-1"))
txtFechaI.Text = Now.FirstDayOfMonth.ToShortDateString
txtFechaF.Text = Now.ToShortDateString
@@ -321,7 +325,7 @@ Partial Class Ventas_RepVentas
If ObjVentas.GetRepVentas(FechaI, FechaF, FechaIEjec, FechaFEjec, CveCliente, DdlSubProyectoEjecucion.SelectedValue.ToEntero, Vendedores,
DdlUsuario.SelectedValue.ToEntero, Estatus, "-1", UsuarioActual.CveEmpresa, DdlGrupo.SelectedValue.ToEntero, TipoComprobante, DdlProyecto.SelectedValue.ToEntero, Sucursales, RblTipoCambio.SelectedValue.ToEntero, TCEspecifico, CveUsuarioConsulta:=UsuarioActual.CveUsuario,
CveClienteClasificacion:=DdlClienteClasificacion.SelectedValue.ToEntero, CveCondicionesPago:=DdlCondicionesPago.SelectedValue.ToEntero, TipoCliente:=DdlTipoCliente.SelectedValue.ToEntero, ModalidadContable:=ModalidadContable,
- EsDistribuidor:=DdlDistribuidor.selectedvalue.toentero) Then
+ EsDistribuidor:=DdlDistribuidor.SelectedValue.ToEntero, CveTipoRelacion:=DdlTipoRelacion.SelectedValue.ToEntero()) Then
GvDatos.DataSource = ObjVentas.DtResultados
DtVentas = ObjVentas.DtResultados
Else
@@ -507,7 +511,7 @@ Partial Class Ventas_RepVentas
'LIGA A DETALLE
- Dim Liga As String = $"/Ventas/RepVentaDetalle.aspx?GPO={DdlGrupo.SelectedValue}&Anio={e.Row.DBCampo("Anio")}&Mes={e.Row.DBCampo("Mes")}&AnioMes={e.Row.DBCampo("AnioMes")}&Fecha={e.Row.DBCampo("Fecha")}&AnioEjec={e.Row.DBCampo("AnioEjec")}&MesEjec={e.Row.DBCampo("MesEjec")}&AnioMesEjec={e.Row.DBCampo("AnioMesEjec")}&FechaEjec={e.Row.DBCampo("FechaEjec")}&CveCliente={e.Row.DBCampo("CveCliente")}&CveVendedor={ e.Row.DBCampo("CveVendedor")}&CveUsuario={e.Row.DBCampo("CveUsuario")}&CveEstatusFactura={e.Row.DBCampo("CveEstatusFactura")}&FechaI={FechaInicial}&FechaF={FechaFinal}&FechaIEjec={FechaIEjec}&FechaFEjec={FechaFEjec}&IVA={e.Row.DBCampo("GPO_IVA")}&CveCorte={ e.Row.DBCampo("CveCorte")}&TipoDocto={ DdlTipoComprobante.GetSelectedValuesM}&CveSubProyectoEjecucion={e.Row.DBCampo("CveSubProyectoEjecucion")}&CveSubProyecto={CveSubProyecto}&CveProyecto={CveProyecto}&TipoCambio={TipoCambio}&TCEspecifico={TCEspecifico}&CveMoneda={CveMoneda}&CveClienteClasificacion={e.Row.DBCampo("CveClienteClasificacion")}&CveCondicionesPago={DdlCondicionesPago.SelectedValue}&TipoCliente={ If(DdlGrupo.SelectedValue.ToEntero = 20, e.Row.DBCampo("TipoCliente"), DdlTipoCliente.SelectedValue)}&ModalidadContable={If(ChkLecturaAdmin.Checked, 0, 1)}"
+ Dim Liga As String = $"/Ventas/RepVentaDetalle.aspx?GPO={DdlGrupo.SelectedValue}&Anio={e.Row.DBCampo("Anio")}&Mes={e.Row.DBCampo("Mes")}&AnioMes={e.Row.DBCampo("AnioMes")}&Fecha={e.Row.DBCampo("Fecha")}&AnioEjec={e.Row.DBCampo("AnioEjec")}&MesEjec={e.Row.DBCampo("MesEjec")}&AnioMesEjec={e.Row.DBCampo("AnioMesEjec")}&FechaEjec={e.Row.DBCampo("FechaEjec")}&CveCliente={e.Row.DBCampo("CveCliente")}&CveVendedor={ e.Row.DBCampo("CveVendedor")}&CveUsuario={e.Row.DBCampo("CveUsuario")}&CveEstatusFactura={e.Row.DBCampo("CveEstatusFactura")}&FechaI={FechaInicial}&FechaF={FechaFinal}&FechaIEjec={FechaIEjec}&FechaFEjec={FechaFEjec}&IVA={e.Row.DBCampo("GPO_IVA")}&CveCorte={ e.Row.DBCampo("CveCorte")}&TipoDocto={ DdlTipoComprobante.GetSelectedValuesM}&CveSubProyectoEjecucion={e.Row.DBCampo("CveSubProyectoEjecucion")}&CveSubProyecto={CveSubProyecto}&CveProyecto={CveProyecto}&TipoCambio={TipoCambio}&TCEspecifico={TCEspecifico}&CveMoneda={CveMoneda}&CveClienteClasificacion={e.Row.DBCampo("CveClienteClasificacion")}&CveCondicionesPago={DdlCondicionesPago.SelectedValue}&TipoCliente={ If(DdlGrupo.SelectedValue.ToEntero = 20, e.Row.DBCampo("TipoCliente"), DdlTipoCliente.SelectedValue)}&ModalidadContable={If(ChkLecturaAdmin.Checked, 0, 1)}&CveTipoRelacion={DdlTipoRelacion.SelectedValue}"
e.Row.FCLiteral("LtlGrupo").Text = "" & e.Row.FCLiteral("LtlGrupo").Text & ""
diff --git a/Ventas/Ventas.aspx b/Ventas/Ventas.aspx
index 3db0a9422..cdad8f00a 100644
--- a/Ventas/Ventas.aspx
+++ b/Ventas/Ventas.aspx
@@ -1080,7 +1080,7 @@
-
+
@@ -1186,7 +1186,7 @@
-
+
diff --git a/Ventas/Ventas.aspx.vb b/Ventas/Ventas.aspx.vb
index 909f471b5..beeb7be43 100644
--- a/Ventas/Ventas.aspx.vb
+++ b/Ventas/Ventas.aspx.vb
@@ -2576,6 +2576,9 @@ Partial Class Ventas
DdlSubProyectoDatos.Enabled = False
BtnEmitirImprimir.Visible = False
BtnCrearApartirDe.Visible = True
+ If UsuarioActual.Empresa.Funcionalidad(531) = "1" Then
+ BtnCrearApartirDe.Visible = False
+ End If
If UsuarioActual.TienePermisoProceso(302) AndAlso DdlTipoComprobante.SelectedValue = "Ing" Then BtnEditar.Visible = True
'DdlEstatus.Enabled = True
@@ -2863,6 +2866,9 @@ Partial Class Ventas
'DdlSucursal.Enabled = False
BtnCrearApartirDe.Visible = True
+ If UsuarioActual.Empresa.Funcionalidad(531) = "1" Then
+ BtnCrearApartirDe.Visible = False
+ End If
'DdlEstatus.Enabled = True
ImgAddObs.Visible = True
@@ -15973,6 +15979,7 @@ Partial Class Ventas
If UsuarioActual.Empresa.EstatusFacturacion Then
CreaObjetosVenta()
+
'PARA CUANDO YA ESTA GUARDADA LA VENTA
ObjFactura.CveVenta = CveVenta
ObjFactura.Serie = Serie
@@ -16177,11 +16184,14 @@ Partial Class Ventas
Dim RFCReceptor As String = GvRow.DataKey("RFCReceptor")
Dim CvePACCancelacion As Integer = GvRow.DataKey("CvePAC").ToEntero()
- If ObjCancelacion.CFDICancelar(UsuarioActual.Empresa, FolioFiscal, 0, RFCReceptor, RFCEmisor, CvePACCancelacion) Then
+
+ Dim RespCancelacion = ObjCancelacion.CFDICancelar(UsuarioActual.Empresa, FolioFiscal, 0, RFCReceptor, RFCEmisor, CvePACCancelacion)
+
+ If RespCancelacion.Verificado Then
If ObjBanco.UpdateComplementoPago(CveComplementoPago, "-1", -1, UsuarioActual.CveEmpresa, 2, CvePACCancelacion, FechaCancelacion:=ObjCancelacion.CancelacionFecha, SelloCancelacion:=ObjCancelacion.CancelacionAcuse) Then
CargaComplementosPago()
- Alert("El complemento se cancelo correctamente.")
+ Alert("El complemento se canceló correctamente.")
End If
Else
@@ -16413,8 +16423,8 @@ Partial Class Ventas
If Not ObjVentas.UpdateEstatusFactura(13, FolioFiscal, "", Now, CveVenta, IDPoliza) Then 'Marcamos la factura como refacturada, si no se cancelo en el SAT el estatus nos dejara cancelarla despues
ErrorCancelar = True
End If
-
- If ObjCancelacion.CFDICancelar(UsuarioActual.Empresa, FolioFiscal, Total, RFCReceptor, UsuarioActual.Empresa.RFC) Then
+ Dim RespCancelacion = ObjCancelacion.CFDICancelar(UsuarioActual.Empresa, FolioFiscal, Total, RFCReceptor, UsuarioActual.Empresa.RFC)
+ If RespCancelacion.Verificado Then
'falta verificar traer el acuse y reenviarlo
If UsuarioActual.Empresa.UsaAC Then
@@ -17199,8 +17209,8 @@ Partial Class Ventas
DdlIVA.SelectedValue = "1"
PorcentajeIVA = ViewState("IVA").ToString().ToDecimal
Case 0.08
- DdlIVA.SelectedValue = If(EsCreaApartirDe, $"{(TmpDT.MAX("PorcentajeIVA").ToDecimal + 1).ToString()}", "1.08")
- PorcentajeIVA = If(EsCreaApartirDe, TmpDT.MAX("PorcentajeIVA").ToDecimal, ViewState("IVA").ToString().ToDecimal)
+ DdlIVA.SelectedValue = If(EsCreaApartirDe, $"{(TmpDT.MAX("PorcentajeIVA").ToDecimal() + 1).RoundSQL(2).ToString()}", "1.08")
+ PorcentajeIVA = If(EsCreaApartirDe, TmpDT.MAX("PorcentajeIVA").ToDecimal, ViewState("IVA").ToString().ToDecimal).RoundSQL(2)
DdlIVA.Visible = If(Not CveVenta > 0 Or EsCreaApartirDe Or CveDevolucion > 0, True, False)
Case 0.16
DdlIVA.SelectedValue = "1.16"
@@ -23638,49 +23648,50 @@ Partial Class Ventas
RegistraScript("$('#ModalCancelarDocumento').modal('hide');")
End Sub
- Private Sub CancelarRefacturada()
- Dim CancelacionFecha As Date
- Dim ObjVentas As New ClsVentas() : ObjVentas.IniciaTransacSQL()
- Dim CancelacionAcuse As String = ""
- Dim Mensaje As String = ""
- Dim ObjCancelacion As New Timbrado
- Dim TotalT As Decimal = TxtTotal.Text.ToDecimal
- Dim RFCReceptor As String = LblRFC.Text.Trim
- Dim CvePACCancelacion As Integer = CvePAC
- Dim CveEstatus As Integer = 4
+ 'Private Sub CancelarRefacturada()
+ ' Dim CancelacionFecha As Date
+ ' Dim ObjVentas As New ClsVentas() : ObjVentas.IniciaTransacSQL()
+ ' Dim CancelacionAcuse As String = ""
+ ' Dim Mensaje As String = ""
+ ' Dim ObjCancelacion As New Timbrado
+ ' Dim TotalT As Decimal = TxtTotal.Text.ToDecimal
+ ' Dim RFCReceptor As String = LblRFC.Text.Trim
+ ' Dim CvePACCancelacion As Integer = CvePAC
+ ' Dim CveEstatus As Integer = 4
- Try
- If FolioFiscal <> "" Then
- If ObjCancelacion.CFDICancelar(UsuarioActual.Empresa, FolioFiscal, TotalT, RFCReceptor, UsuarioActual.Empresa.RFC, CvePACCancelacion) Then
- 'Generamos el acuse y mandamos mail de con el acuse de cancelación - DF 13/01/2017
- CancelacionFecha = ObjCancelacion.CancelacionFecha
- CancelacionAcuse = ObjCancelacion.CancelacionAcuse
- CveEstatus = 5
- Else
- Alert("Los servicios de cancelación del SAT no se encuentran disponibles o presentan time out. Intente de nuevo en unos minutos. Origen del error: WebService www.sat.gob.mx", TipoMensaje.MsgError)
- Exit Sub
- End If
- Else
- CancelacionFecha = Now.Date
- CancelacionAcuse = ""
- End If
+ ' Try
+ ' If FolioFiscal <> "" Then
+ ' Dim resp = ObjCancelacion.CFDICancelar(UsuarioActual.Empresa, FolioFiscal, TotalT, RFCReceptor, UsuarioActual.Empresa.RFC, CvePACCancelacion)
+ ' If resp.Verificado Then
+ ' 'Generamos el acuse y mandamos mail de con el acuse de cancelación - DF 13/01/2017
+ ' CancelacionFecha = ObjCancelacion.CancelacionFecha
+ ' CancelacionAcuse = ObjCancelacion.CancelacionAcuse
+ ' CveEstatus = 5
+ ' Else
+ ' Alert("Los servicios de cancelación del SAT no se encuentran disponibles o presentan time out. Intente de nuevo en unos minutos. Origen del error: WebService www.sat.gob.mx", TipoMensaje.MsgError)
+ ' Exit Sub
+ ' End If
+ ' Else
+ ' CancelacionFecha = Now.Date
+ ' CancelacionAcuse = ""
+ ' End If
- If ObjVentas.UpdateEstatusFactura(CveEstatus, FolioFiscal, CancelacionAcuse, CancelacionFecha, CveVenta, IdPoliza, CvePAC:=CvePACCancelacion) Then
- ObjVentas.Commit()
- Alert("El nuevo estatus se guardó correctamente")
- Else
- ObjVentas.RollBack()
- Alert("Ocurrió un error al intentar cancelar la factura")
- End If
+ ' If ObjVentas.UpdateEstatusFactura(CveEstatus, FolioFiscal, CancelacionAcuse, CancelacionFecha, CveVenta, IdPoliza, CvePAC:=CvePACCancelacion) Then
+ ' ObjVentas.Commit()
+ ' Alert("El nuevo estatus se guardó correctamente")
+ ' Else
+ ' ObjVentas.RollBack()
+ ' Alert("Ocurrió un error al intentar cancelar la factura")
+ ' End If
- Catch ex As Exception
- ObjVentas.RollBack()
- Mensaje = "Ocurrio un error al Cancelar la factura"
- GuardaLog($"{ex.Message}")
- End Try
+ ' Catch ex As Exception
+ ' ObjVentas.RollBack()
+ ' Mensaje = "Ocurrio un error al Cancelar la factura"
+ ' GuardaLog($"{ex.Message}")
+ ' End Try
- ObjVentas.Dispose()
- End Sub
+ ' ObjVentas.Dispose()
+ 'End Sub
Private Function DecodeBase64(ByVal strXMLCodificado As String) As String
Try
Dim decbuff As Byte() = Convert.FromBase64String(strXMLCodificado)
@@ -23769,9 +23780,9 @@ Partial Class Ventas
Dim LigaRedirigir As String = ""
'Si es cancelacion de una refactura ignoramos las condiciones
- If Me.CveEstatus = 13 Then
- CancelarRefacturada()
- End If
+ 'If Me.CveEstatus = 13 Then
+ ' CancelarRefacturada()
+ 'End If
Dim ObjFacturaCancelacion As New Modelos.Factura(UsuarioActual, CveVenta, UsuarioActual.CveEmpresa, EsCancelacion:=True)
Try
diff --git a/asmx/WSGPSApp.asmx b/asmx/WSGPSApp.asmx
index 1d97ac264..55d68a4c4 100644
--- a/asmx/WSGPSApp.asmx
+++ b/asmx/WSGPSApp.asmx
@@ -91,6 +91,25 @@ Public Class WSGPSApp
End Set
End Property
#End Region
+ Private Sub CreaObjetoEmpresa(ByRef UsuarioActual As Usuario)
+
+ Dim ObjEmpresa As New ClsSisEmpresas()
+ If ObjEmpresa.GetEmpresas(UsuarioActual.CveEmpresa, "-1", "-1", "-1", "-1") Then
+ If ObjEmpresa.GetEmpresasFuncionalidades(UsuarioActual.CveEmpresa) Then
+ Dim dttmp As Data.DataTable = ObjEmpresa.DtResultados
+
+ Dim EmpresasFuncionalidades As New HybridDictionary
+ For Each Row As Data.DataRow In dttmp.Rows
+ EmpresasFuncionalidades.Add(Convert.ToInt32(Row("CveFuncionalidad")), Row("Valor").ToString)
+ Next
+ ObjEmpresa.Empresa.SetFuncionalidades(EmpresasFuncionalidades)
+ End If
+
+ UsuarioActual.Empresa = ObjEmpresa.Empresa
+ End If
+ ObjEmpresa.Dispose()
+ End Sub
+
Public Function Login(params As String) As String
@@ -134,15 +153,22 @@ Public Class WSGPSApp
Clientes.Add(New WsClientePortalGPS With {.CveCliente = Row("CveCliente").ToString.ToEntero, .Cliente = Row("Cliente").ToString})
Next
If UsuarioActual.CveCliente <= 0 AndAlso Clientes.Any() Then
- UsuarioRetorno.CveCliente = Clientes.FirstOrDefault().CveCliente
- If UsuarioRetorno.CveCliente > 0 Then
- If UsuarioActual.Empresa.Funcionalidad(704).Contiene(UsuarioRetorno.CveCliente.ToString()) Then
- UsuarioRetorno.RastreoSoloInicio = True
- End If
+ UsuarioRetorno.CveCliente = Clientes.FirstOrDefault().CveCliente
+ If UsuarioRetorno.CveCliente > 0 Then
+ CreaObjetoEmpresa(UsuarioActual)
+ If UsuarioActual.Empresa.Funcionalidad(704).Contiene(UsuarioRetorno.CveCliente.ToString()) OrElse UsuarioActual.CveUsuario = 3612 Then
+ UsuarioRetorno.RastreoSoloInicio = True
+ End If
End If
End If
End If
+ End If
+
+ 'MARCA PARA EL RASTREO SOLO INICIO
+ If UsuarioRetorno.CveUsuario = 3612 Then
+ UsuarioRetorno.RastreoSoloInicio = True
End If
+
UsuarioRetorno.Clientes = Clientes
DtClientes.Dispose()
DtClientes = Nothing
@@ -201,18 +227,25 @@ Public Class WSGPSApp
Clientes.Add(New WsClientePortalGPS With {.CveCliente = Row("CveCliente").ToString.ToEntero, .Cliente = Row("Cliente").ToString})
Next
If UsuarioActual.CveCliente <= 0 AndAlso Clientes.Any() Then
- UsuarioRetorno.CveCliente = Clientes.FirstOrDefault().CveCliente
- If UsuarioActual.CveCliente <= 0 AndAlso Clientes.Any() Then
- UsuarioRetorno.CveCliente = Clientes.FirstOrDefault().CveCliente
- If UsuarioRetorno.CveCliente > 0 Then
- If UsuarioActual.Empresa.Funcionalidad(704).Contiene(UsuarioRetorno.CveCliente.ToString()) Then
- UsuarioRetorno.RastreoSoloInicio = True
- End If
- End If
+ UsuarioRetorno.CveCliente = Clientes.FirstOrDefault().CveCliente
+ If UsuarioActual.CveCliente <= 0 AndAlso Clientes.Any() Then
+ UsuarioRetorno.CveCliente = Clientes.FirstOrDefault().CveCliente
+ If UsuarioRetorno.CveCliente > 0 Then
+ CreaObjetoEmpresa(UsuarioActual)
+ If UsuarioActual.Empresa.Funcionalidad(704).Contiene(UsuarioRetorno.CveCliente.ToString()) OrElse UsuarioActual.CveUsuario = 3612 Then
+ UsuarioRetorno.RastreoSoloInicio = True
+ End If
+ End If
End If
End If
End If
+ End If
+
+ 'MARCA PARA EL RASTREO SOLO INICIO
+ If UsuarioRetorno.CveUsuario = 3612 Then
+ UsuarioRetorno.RastreoSoloInicio = True
End If
+
UsuarioRetorno.Clientes = Clientes
DtClientes.Dispose()
DtClientes = Nothing
@@ -1005,13 +1038,6 @@ Public Class WSGPSApp
End Function
#Region "F U N C I O N E S"
- Private Sub CreaObjetoEmpresa(ByRef UsuarioActual As Usuario)
- Dim ObjEmpresa As New ClsSisEmpresas()
- If ObjEmpresa.GetEmpresas(UsuarioActual.CveEmpresa, "-1", "-1", "-1", "-1") Then
- UsuarioActual.Empresa = ObjEmpresa.Empresa
- End If
- ObjEmpresa.Dispose()
- End Sub
Private Function CargarEventos(CveCliente As Integer, FechaI As DateTime, FechaF As DateTime) As MWSDashboard2
Dim ObjGPS As New ClsGPS
Dim dash As New MWSDashboard2
@@ -1139,7 +1165,7 @@ Namespace ADGPSModels
Public Property Contrasenia As String
Public Property TienePermisoOC As Boolean
- Public Property TienePermisoPS As Boolean
+ Public Property TienePermisoPS As Boolean
Public Property RastreoSoloInicio As Boolean = False
End Class