This commit is contained in:
HECTOR RODRIGUEZ
2021-06-04 03:26:22 -07:00
21 changed files with 1924 additions and 276 deletions

View File

@@ -1996,6 +1996,25 @@ Public Class ClsGPS
#End Region
#Region "V E H I C U L O S"
Public Function GetRepUnidades(CveEmpresa As Integer, CveCliente As Integer, Optional FechaI As DateTime = MinFecha, Optional FechaF As DateTime = MaxFecha, Optional CveEstatus As Integer = -1) As Boolean
Dim Retorno As Boolean = False
DataAdapter("PA_GPS_RepUnidades")
With SqlAdapter.SelectCommand.Parameters
.Add("@CveEmpresa", SqlDbType.Int).Value = CveEmpresa
.Add("@CveCliente", SqlDbType.Int).Value = CveCliente
.Add("@FechaI", SqlDbType.DateTime).Value = FechaI
.Add("@FechaF", SqlDbType.DateTime).Value = FechaF
.Add("@CveEstatus", SqlDbType.Int).Value = CveEstatus
End With
Try
SqlAdapter.Fill(Data)
Retorno = True
Catch ex As Exception
OnError("Ocurrió un error al obtener el reporte de los vehículos.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo())
End Try
Return Retorno
End Function
Public Function VehiculoAdd(Modelo As String, Color As String, Serie As String, Nombre As String, NoEconomico As String, CveUsuario As Integer, CveCliente As Integer) As Boolean
Dim Retorno As Boolean = False
DataAdapter("PA_GPS_VehiculoAdd")

View File

@@ -4608,6 +4608,7 @@ Public Class ClsPaginas
PaginaDict.Add("/GPS/RepGastos.aspx".ToUpper(), 685)
PaginaDict.Add("/GPS/RecursoConfiableTracking.aspx".ToUpper(), 692)
PaginaDict.Add("/GPS/KimberlyClarkTracking.aspx".ToUpper(), -1)
PaginaDict.Add("/GPS/RepUnidades.aspx".ToUpper(), 780)
#End Region
'INVENTARIOS
#Region "Inventarios"
@@ -5941,6 +5942,19 @@ Public Class ClsPaginas
Dim TipoDocumentoRef As String = ""
Dim AplicaPagare As String = "1"
Dim RFCReceptor As String = ""
If String.IsNullOrEmpty(Vta.RFCReceptor) Then
RFCReceptor = Vta.Cliente.RFC
If Vta.FacturarSucursal Then
If Vta.ClienteSucursal IsNot Nothing Then
RFCReceptor = Vta.ClienteSucursal.RFC
End If
End If
Else
RFCReceptor = Vta.RFCReceptor
End If
Dim RutaCBB As String = String.Format("{0}CBB\{1}.jpg", Ruta, Vta.SerieFolio)
Dim ImagenCBB As New System.IO.FileInfo(RutaCBB)
Dim ImgCBB As String '= String.Format("{0}://{1}:{2}/Empresas/{3}/CBB/{4}.jpg", Request.Url.Scheme, Request.Url.Host, Request.Url.Port, UsuarioActual.CveEmpresa, Vta.SerieFolio)
@@ -6070,7 +6084,7 @@ Public Class ClsPaginas
'Si no tiene CBB, SE GENERA
If Not ImagenCBB.Exists Then
Dim CBB As New ClbNegBICFDv3_2.ClsNegCBBGenerar()
CBB.GenerarCBB(UsuarioActual.Empresa.RFC, Vta.Cliente.RFC, Vta.Total.ToString.ToDecimal, Vta.FolioFiscal, RutaCBB)
CBB.GenerarCBB(UsuarioActual.Empresa.RFC, RFCReceptor, Vta.Total.ToString.ToDecimal, Vta.FolioFiscal, RutaCBB)
End If
ImgCBB = String.Format("{0}://{1}:{2}/Empresas/{3}/CBB/{4}.jpg", Request.Url.Scheme, Request.Url.Host, Request.Url.Port, UsuarioActual.CveEmpresa, Vta.SerieFolio)
@@ -6085,7 +6099,7 @@ Public Class ClsPaginas
'CLIENTE
params.Add(New CrystalParametro("ClienteCodigo", Vta.Cliente.Codigo))
params.Add(New CrystalParametro("ClienteNombre", If(Vta.ClienteSucursal.ImprimeNombreSucursal = "True", If(Vta.CveClienteSucursal > 0, Vta.ClienteSucursal.Sucursal, Vta.Cliente.Nombre), If(Vta.AtencionA <> "" AndAlso Vta.TipoDocto.Contiene("Ing", "Rem") AndAlso Vta.Cliente.RFC = "XAXX010101000", $"{Vta.Cliente.Nombre}({Vta.AtencionA})", Vta.Cliente.Nombre))))
params.Add(New CrystalParametro("ClienteNombre", If(Vta.ClienteSucursal.ImprimeNombreSucursal = "True", If(Vta.CveClienteSucursal > 0, Vta.ClienteSucursal.Sucursal, Vta.Cliente.Nombre), If(Vta.AtencionA <> "" AndAlso Vta.TipoDocto.Contiene("Ing", "Rem") AndAlso RFCReceptor = "XAXX010101000", $"{Vta.Cliente.Nombre}({Vta.AtencionA})", Vta.Cliente.Nombre))))
params.Add(New CrystalParametro("ClienteDireccion", ClienteDireccion))
params.Add(New CrystalParametro("ClienteLugar", ClienteLugar))
@@ -6117,7 +6131,7 @@ Public Class ClsPaginas
params.Add(New CrystalParametro("SelloSAT", Vta.SelloSAT))
params.Add(New CrystalParametro("QR", ImgCBB))
params.Add(New CrystalParametro("ClienteRFC", Vta.Cliente.RFC))
params.Add(New CrystalParametro("ClienteRFC", RFCReceptor))
params.Add(New CrystalParametro("FormaPago", Vta.FormaPagoText))
params.Add(New CrystalParametro("Moneda", Vta.Moneda))
params.Add(New CrystalParametro("TipoCambio", Vta.TipoCambio.ToString))
@@ -6452,7 +6466,18 @@ Public Class ClsPaginas
Dim NombreArchivoDescarga As String = ""
Dim TipoDocumento As String = ""
Dim TipoDocumentoRef As String = ""
Dim RFCReceptor As String = ""
If String.IsNullOrEmpty(Vta.RFCReceptor) Then
RFCReceptor = Vta.Cliente.RFC
If Vta.FacturarSucursal Then
If Vta.ClienteSucursal IsNot Nothing Then
RFCReceptor = Vta.ClienteSucursal.RFC
End If
End If
Else
RFCReceptor = Vta.RFCReceptor
End If
Dim RutaCBB As String = String.Format("{0}CBB\{1}.jpg", Ruta, Vta.SerieFolio)
Dim ImagenCBB As New System.IO.FileInfo(RutaCBB)
@@ -6607,7 +6632,7 @@ Public Class ClsPaginas
'Si no tiene CBB, SE GENERA
If Not ImagenCBB.Exists AndAlso Vta.CveCliente.ToEntero > 0 Then
Dim CBB As New ClbNegBICFDv3_2.ClsNegCBBGenerar()
CBB.GenerarCBB(UsuarioActual.Empresa.RFC, Vta.Cliente.RFC, Vta.Total.ToString.ToDecimal, Vta.FolioFiscal, RutaCBB)
CBB.GenerarCBB(UsuarioActual.Empresa.RFC, RFCReceptor, Vta.Total.ToString.ToDecimal, Vta.FolioFiscal, RutaCBB)
End If
ImgCBB = String.Format("{0}://{1}:{2}/Empresas/{3}/CBB/{4}.jpg", Request.Url.Scheme, Request.Url.Host, Request.Url.Port, UsuarioActual.CveEmpresa, Vta.SerieFolio)
@@ -6628,14 +6653,14 @@ Public Class ClsPaginas
params.Add(New ReportParameter("ClienteNombre", If(Vta.ClienteSucursal.ImprimeNombreSucursal = "True", If(Vta.CveClienteSucursal > 0, Vta.ClienteSucursal.Sucursal, Vta.Cliente.Nombre), If(Vta.AtencionA <> "" AndAlso Vta.TipoDocto.Contiene("Ing", "Rem") AndAlso Vta.Cliente.RFC = "XAXX010101000", $"{Vta.Cliente.Nombre}({Vta.AtencionA})", Vta.Cliente.Nombre))))
params.Add(New ReportParameter("ClienteDireccion", ClienteDireccion))
params.Add(New ReportParameter("ClienteLugar", ClienteLugar))
params.Add(New ReportParameter("ClienteRFC", Vta.Cliente.RFC))
params.Add(New ReportParameter("ClienteRFC", RFCReceptor))
End If
If Vta.CveEmpresaCRM.ToEntero > 0 Then
params.Add(New ReportParameter("ClienteCodigo", Vta.Cliente.Codigo))
params.Add(New ReportParameter("ClienteNombre", Vta.Cliente.Nombre))
params.Add(New ReportParameter("ClienteDireccion", ClienteDireccion))
params.Add(New ReportParameter("ClienteLugar", ClienteLugar))
params.Add(New ReportParameter("ClienteRFC", Vta.Cliente.RFC))
params.Add(New ReportParameter("ClienteRFC", RFCReceptor))
End If
'TOTALES

View File

@@ -1687,6 +1687,34 @@ Public Class ClsVentas
Return Retorno
End Function
Public Function GetRepPSDiario(CveSubProyecto As Integer, CvePS As Integer, FechaConsulta As Date, CveEmpresa As Integer, Optional CveUsuarioConsulta As Integer = -1, Optional GPO As Integer = -1,
Optional CveMoneda As Integer = -1, Optional TipoCambio As Integer = -1, Optional TCEspecifico As Double = 0) As Boolean
Dim Retorno As Boolean = False
DataAdapter("PA_Vta_RepPSDiarioGet")
With SqlAdapter.SelectCommand.Parameters
.Add("@CveSubProyecto", SqlDbType.Int).Value = CveSubProyecto
.Add("@CvePS", SqlDbType.Int).Value = CvePS
.Add("@FechaConsulta", SqlDbType.Date).Value = FechaConsulta
.Add("@CveEmpresa", SqlDbType.Int).Value = CveEmpresa
.Add("@CveUsuarioConsulta", SqlDbType.Int).Value = CveUsuarioConsulta
.Add("@GPO", SqlDbType.Int).Value = GPO
.Add("@CveMoneda", SqlDbType.Int).Value = CveMoneda
.Add("@TipoCambio", SqlDbType.Int).Value = TipoCambio
.Add("@TCEspecifico", SqlDbType.Float).Value = TCEspecifico
End With
Try
Dataset = New DataSet()
SqlAdapter.Fill(Dataset)
Retorno = True
Catch ex As Exception
OnError("Ocurrió un error al obtener el Reporte diario.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo)
End Try
Return Retorno
End Function
Public Function GetRepNCxAplicar(CveClienteSucursal As Integer, CveSubProyecto As Integer, CveCliente As Integer, FechaInicio As DateTime, FechaFin As DateTime, ConSaldo As Integer, CveEmpresa As Integer) As Boolean
Dim Retorno As Boolean = False
@@ -2512,12 +2540,13 @@ Public Class ClsVentas
Return Retorno
End Function
Public Function AddVentasRelacionadas(CveVenta As Integer, CveVentaRelacionada As Integer) As Boolean
Public Function AddVentasRelacionadas(CveVenta As Integer, CveVentaRelacionada As Integer, Optional FolioFiscal As String = "") As Boolean
Dim Retorno As Boolean = False
DataAdapter("PA_Vta_VentasRelacionadasAdd")
With SqlAdapter.SelectCommand.Parameters
.Add("@CveVenta", SqlDbType.Int).Value = CveVenta
.Add("@CveVentaRelacionada", SqlDbType.Int).Value = CveVentaRelacionada
.Add("@FolioFiscal", SqlDbType.VarChar).Value = FolioFiscal
End With
Try
SqlAdapter.Fill(Data)

View File

@@ -2058,24 +2058,36 @@ Namespace Modelos
End Sub
Private Function CancelarMovimientosUsados(factura As Modelos.Factura, UsuarioActual As Usuario, ByRef ObjAcum As ClsAcumuladores) As Boolean
Dim Retorno As Boolean = True
If ObjAcum.DistribuidorMovtosGet(factura.CveCliente, UsuarioActual.CveEmpresa, CveVentaRNCCargo:=factura.CveVenta, CveConcepto:=2) Then
Dim CveConceptoSalida As Integer = 2
Dim DtSalidas As DataTable = ObjAcum.DtResultados.FiltraParametros("Cantidad > 0")
If DtSalidas IsNot Nothing AndAlso DtSalidas.Rows.Count > 0 Then
For Each RowSalida As DataRow In DtSalidas.Rows
Dim CveConcepto As Integer = -1
Select Case factura.TipoDocto
Case "Ing"
CveConcepto = 2
Case "Dev"
CveConcepto = 1
Case "RNC"
CveConcepto = 1
Case "Egs"
CveConcepto = 6
End Select
If ObjAcum.DistribuidorMovtosGet(factura.CveCliente, UsuarioActual.CveEmpresa, CveVentaRNCCargo:=factura.CveVenta, CveConcepto:=CveConcepto) Then
Dim DtMovimientos As DataTable = ObjAcum.DtResultados.FiltraParametros("Cantidad > 0")
If DtMovimientos IsNot Nothing AndAlso DtMovimientos.Rows.Count > 0 Then
For Each RowSalida As DataRow In DtMovimientos.Rows
Dim Cantidad As Decimal = RowSalida("Cantidad").ToString().ToDecimal() * -1
If Not ObjAcum.DistribuidorMovtosAdd(factura.CveCliente, Cantidad, RowSalida("CveTamaño").ToString.ToEntero, CveConceptoSalida, factura.CveVenta, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, 0D, "") Then
If Not ObjAcum.DistribuidorMovtosAdd(factura.CveCliente, Cantidad, RowSalida("CveTamaño").ToString.ToEntero, CveConcepto, factura.CveVenta, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, 0D, "") Then
Retorno = False
Exit For
End If
Next
DtSalidas.Dispose()
DtMovimientos.Dispose()
End If
End If
Return Retorno
End Function
Private Function GuardarUsados(ByRef ObjAcum As ClsAcumuladores, ByRef ObjVentas As ClsVentas, ByRef ObjInventario As ClsInventarios, factura As Modelos.Factura, ByRef Optional Resp As MMensajeFactura = Nothing) As Boolean
Dim Resultado As Boolean = True
@@ -5420,7 +5432,7 @@ Namespace Modelos
'CANCELA MOVIMIENTOS DE USADOS
If Not ErrorCancelar Then
If ObjFactura.TipoDocto = "Ing" Then
If ObjFactura.TipoDocto.Contiene("Ing", "Dev", "RNC", "Egs") Then
If Not CancelarMovimientosUsados(ObjFactura, UsuarioActual, ObjAcum) Then
ErrorCancelar = True
MensajeError = "Ocurrió un error al cancelar los movimientos de usados"

View File

@@ -8,6 +8,7 @@ Imports System.Net.Http
Imports System.Xml
Imports System.Data
Imports System.Xml.Serialization
Imports System.Net
Public Class Timbrado
@@ -495,6 +496,84 @@ Public Class Timbrado
End If
MsgCancelacion.AppendFormat("{0} --Código:{1} -- XML: {2}", objCan.MensajeError, objCan.CodigoError, objCan.Xml)
Case 5
CancelacionAcuse = ""
Retorno = False
MsgCancelacion.AppendFormat("5.1-")
Dim TimbraProduccion As Boolean = True
Dim EmisorRFC As String = Empresa.RFC
Dim ArchivoLLave As String = $"{Empresa.Ruta}Certificados\{Empresa.ArchivoKey}"
Dim ArchivoCertificado As String = $"{Empresa.Ruta}Certificados\{Empresa.ArchivoCer}"
Dim Clave As String = Empresa.ContraseñaKey
Dim UsuarioServicio As String = "rene.molina@adssistemas.mx"
Dim ClaveServicio As String = "Facturacion2021#"
If Not Empresa.FacturaProduccion OrElse Empresa.CveEmpresa = 1 Then
EmisorRFC = "ZUÑ920208KL4"
ArchivoLLave = $"{Empresa.Ruta}Certificados\CSD01_ZUÑ920208KL4.key"
ArchivoCertificado = $"{Empresa.Ruta}Certificados\CSD01_ZUÑ920208KL4.cer"
Clave = "12345678a"
TimbraProduccion = False
End If
Dim llaveByte As Byte(), certByte As Byte()
Dim llaveBase64 As String = "", certBase64 As String = ""
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 False
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 False
End Try
Dim Contrato As String = "72330711-cac6-4106-8051-cbcda1aef495"
Dim Respuesta As String = EnviarInformacionCancelacionPADESOAP("https://timbrado.pade.mx/servicio/Timbrado3.3?wsdl", UsuarioServicio, ClaveServicio, Contrato, EmisorRFC, RFCReceptor, certBase64, llaveBase64, Clave, FolioFiscal, Total, TimbraProduccion)
If Not String.IsNullOrEmpty(Respuesta) Then
Dim result As PADEServicioCancelacionResp = Nothing
Dim serializer As XmlSerializer = New XmlSerializer(GetType(PADEServicioCancelacionResp))
Try
Using reader As TextReader = New StringReader(Respuesta)
result = CType(serializer.Deserialize(reader), PADEServicioCancelacionResp)
End Using
Catch ex As Exception
OnError("Ocurrió un error al obtener los resultados", ex)
End Try
If result IsNot Nothing Then
If result.statusOk Then
Dim cancelacion = result.cancelaciones.First()
If cancelacion IsNot Nothing Then
'EN PROCESO, CANCELABLE SIN ACEPTACION,CANCEALDO PREVIAMENTE
If cancelacion.codigo.Contiene("96", "201", "202") Then
CancelacionFecha = Now
Retorno = True
CancelacionAcuse = result.acuseCancelBase64
End If
CancelacionMensaje = cancelacion.mensaje
Else
CancelacionMensaje = result.mensaje
End If
End If
End If
Else
End If
End Select
@@ -504,6 +583,99 @@ Public Class Timbrado
Return Retorno
End Function
<Serializable(), XmlRoot("servicioCancel")>
Public Class PADEServicioCancelacionResp
<XmlElement("statusOk")>
Public Property statusOk As Boolean
<XmlElement("codigo")>
Public Property codigo As String
<XmlElement("mensaje")>
Public Property mensaje As String
<XmlElement("procesados")>
Public Property procesados As Integer
<XmlElement("cancelados")>
Public Property cancelados As Integer
<XmlArray("cancelaciones")>
<XmlArrayItem("cancelacion")>
Public Property cancelaciones As List(Of PADECancelacion)
<XmlElement("acuseCancelBase64")>
Public Property acuseCancelBase64 As String
End Class
<Serializable(), XmlRoot("cancelacion")>
Public Class PADECancelacion
<XmlElement("uuid")>
Public Property uuid As String
<XmlElement("codigo")>
Public Property codigo As String
<XmlElement("mensaje")>
Public Property mensaje As String
End Class
Private Function EnviarInformacionCancelacionPADESOAP(ByVal url As String, UsuarioServicio As String, PassServicio As String, contrato As String, rfcEmisor As String, rfcReceptor As String,
certBase64 As String, keyBase64 As String, keyPass As String, arregloUUID As String, Total As Decimal, TimbraProduccion As Boolean) As String
Dim retorno = ""
Try
Dim request As HttpWebRequest = CType(WebRequest.Create($"{url}"), HttpWebRequest)
'request.Headers.Add("SOAPAction:http://tempuri.org/TestCfd33 ")
request.ContentType = "text/xml;charset=""utf-8"""
request.Accept = "text/xml"
request.Method = "POST"
Dim XMLString As String = $"<Envelope xmlns=""http://schemas.xmlsoap.org/soap/envelope/"">
<Body>
<cancelarConOpciones xmlns=""timbrado.ws.pade.mx"">
<contrato xmlns="""">{contrato}</contrato>
<usuario xmlns="""">{UsuarioServicio}</usuario>
<passwd xmlns="""">{PassServicio}</passwd>
<rfcEmisor xmlns="""">{rfcEmisor}</rfcEmisor>
<arregloUUID xmlns="""">{arregloUUID}|{rfcReceptor}|{rfcEmisor}|{Total}</arregloUUID>
<cert xmlns="""">{certBase64}</cert>
<key xmlns="""">{keyBase64}</key>
<keyPass xmlns="""">{keyPass}</keyPass>
<opciones xmlns="""">{If(TimbraProduccion, "", "MODO_PRUEBA:3")}</opciones>
</cancelarConOpciones>
</Body>
</Envelope>"
Dim SOAPReqBody As XmlDocument = New XmlDocument()
SOAPReqBody.LoadXml(XMLString)
Using stream As Stream = request.GetRequestStream()
SOAPReqBody.Save(stream)
End Using
Dim response As String = ""
Using Serviceres As WebResponse = request.GetResponse()
Using rd As StreamReader = New StreamReader(Serviceres.GetResponseStream())
response = rd.ReadToEnd()
End Using
End Using
If Not String.IsNullOrEmpty(response) Then
Dim xmlRetorno = New XmlDocument()
xmlRetorno.LoadXml(response)
Dim elemList As XmlNodeList = xmlRetorno.GetElementsByTagName("return")
If elemList.Count > 0 Then
If elemList(0).ChildNodes.Count > 0 Then
retorno = elemList(0).ChildNodes(0).Value
End If
End If
End If
Catch ex As Exception
retorno = ""
OnError("Ocurrió un error al cancelar", ex)
End Try
Return retorno
End Function
Public Function PreparaTimbrePago(EmisorRFC As String, EmisorNombre As String, EmisorRegimenFiscal As String,
ReceptorRFC As String, ReceptorNombre As String, Serie As String, Folio As String, FechaTimbrado As DateTime,
CuentaPago As String, FechaPago As DateTime, FormaPago As String, MonedaPago As String, Monto As Double, LugarExpedicion As String,
@@ -700,9 +872,15 @@ Public Class Timbrado
UsuarioServicio = UsuarioActual.Empresa.BIUsuario
ClaveServicio = UsuarioActual.Empresa.BIContraseña
Clave = "12345678a"
EmisorRFC = "AAA010101AAA"
ArchivoLLave = $"{UsuarioActual.Empresa.Ruta}Certificados\CSD01_AAA010101AAA.key"
ArchivoCertificado = $"{UsuarioActual.Empresa.Ruta}Certificados\CSD01_AAA010101AAA.cer"
'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 = "http://portalmacropro.com.mx/srvCFDi33prueba/service1.asmx"
TimbraProduccion = False
End If
@@ -1052,9 +1230,14 @@ Public Class Timbrado
If Not UsuarioActual.Empresa.FacturaProduccion OrElse UsuarioActual.CveEmpresa = 1 Then
EmisorRFC = "AAA010101AAA"
ArchivoLLave = $"{UsuarioActual.Empresa.Ruta}Certificados\CSD01_AAA010101AAA.key"
ArchivoCertificado = $"{UsuarioActual.Empresa.Ruta}Certificados\CSD01_AAA010101AAA.cer"
'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"
Clave = "12345678a"
TimbraProduccion = False
Select Case UsuarioActual.Empresa.CvePAC
@@ -1633,9 +1816,14 @@ Public Class Timbrado
If Not UsuarioActual.Empresa.FacturaProduccion OrElse UsuarioActual.CveEmpresa = 1 Then
EmisorRFC = "AAA010101AAA"
ArchivoLLave = $"{UsuarioActual.Empresa.Ruta}Certificados\CSD01_AAA010101AAA.key"
ArchivoCertificado = $"{UsuarioActual.Empresa.Ruta}Certificados\CSD01_AAA010101AAA.cer"
'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"
Clave = "12345678a"
TimbraProduccion = False
Select Case CvePACEspecial
@@ -2026,19 +2214,19 @@ Public Class Timbrado
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
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
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
Next
End If
End If
Next
End If
If ObjCFDITimbre.IStimbreFiniquito Then
'ObjCFDITimbre.Nomina.
@@ -2051,39 +2239,39 @@ Public Class Timbrado
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
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
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
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()
sw.Stop()
swTiempo.AppendFormat("Armado: ({0}) {1} ", sw.ElapsedMilliseconds - swmili, sw.ElapsedMilliseconds)
swmili = sw.ElapsedMilliseconds
sw.Start()
@@ -2683,27 +2871,27 @@ Public Class Timbrado
swmili = sw.ElapsedMilliseconds
sw.Start()
Dim msgErrorGeneracion As String = If(String.IsNullOrEmpty(cfdi.MensajeError), "", cfdi.MensajeError)
#Region "Timbra"
If ArchivoGenerado Then
'Dim opciones As String() = New String(0) {""}
'Dim pade = New PADETimbrado.PadeTimbradoServiceClient
Dim Respuesta As String = ""
'Dim Respuesta As String = pade.timbradoConCSD("72330711-cac6-4106-8051-cbcda1aef495", UsuarioServicio, ClaveServicio, cfdi.Xml, certByte, llaveByte, Clave, Not TimbraProduccion, opciones)
If String.IsNullOrEmpty(msgErrorGeneracion) Then
Dim TokenAuth As String = $"{UsuarioServicio}:{ClaveServicio}".ToBase64Encode()
Dim TokenAuth As String = $"{UsuarioServicio}:{ClaveServicio}".ToBase64Encode()
Dim payload As New JObject(
New JProperty("contrato", "72330711-cac6-4106-8051-cbcda1aef495"),
New JProperty("certBase64", certBase64),
New JProperty("keyBase64", llaveBase64),
New JProperty("keyPass", Clave),
New JProperty("xmlBase64", cfdi.Xml.ToBase64Encode()),
New JProperty("prueba", (Not TimbraProduccion).ToString().ToLower),
New JProperty("opciones", New String(0) {""})
)
Dim Respuesta = EnviarInformacionPADE("https://timbrado.pade.mx/servicio/rest/timbrado/timbrarConCSD", payload.ToString(), TokenAuth)
Dim payload As New JObject(
New JProperty("contrato", "72330711-cac6-4106-8051-cbcda1aef495"),
New JProperty("certBase64", certBase64),
New JProperty("keyBase64", llaveBase64),
New JProperty("keyPass", Clave),
New JProperty("xmlBase64", cfdi.Xml.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)
End If
' Aumentamos el timeout de la operación
If Not String.IsNullOrEmpty(Respuesta) Then
@@ -2722,8 +2910,8 @@ Public Class Timbrado
If result IsNot Nothing Then
If result.timbradoOk Then
Dim FolioFiscal As String = result.UUID
cfdi.EscribirXML(cfdi.Xml, RutaArchivo, NombreArchivoXML)
'GUARDA EL XML RETORNADO POR EL PAC
cfdi.EscribirXML(result.xmlBase64.ToBase64Decode(), RutaArchivo, NombreArchivoXML)
If ObjCFDITimbre.Comprobante.TipoComprobante <> "P" Then
@@ -2786,14 +2974,13 @@ Public Class Timbrado
Retorno = ""
Else
If String.IsNullOrEmpty(result.mensaje) Then
Retorno = Respuesta
Retorno = Respuesta + msgErrorGeneracion
MensajeErrorCFDI = ""
Else
Retorno = result.mensaje
MensajeErrorCFDI = result.codigo
If cfdi.Xml <> "" Then cfdi.EscribirXML(cfdi.Xml, RutaArchivo, NombreArchivoXML)
End If
End If
Else
If String.IsNullOrEmpty(Respuesta) Then
@@ -2805,12 +2992,22 @@ Public Class Timbrado
End If
End If
Else
Retorno = "Ocurrió un error al obtener la respuesta"
MensajeErrorCFDI = ""
If String.IsNullOrEmpty(msgErrorGeneracion) Then
Retorno = "Ocurrió un error al obtener la respuesta"
MensajeErrorCFDI = ""
Else
Retorno = msgErrorGeneracion
MensajeErrorCFDI = ""
End If
End If
Else
Retorno = "Ocurrió un error al generar el xml"
MensajeErrorCFDI = ""
If String.IsNullOrEmpty(msgErrorGeneracion) Then
Retorno = "Ocurrió un error al generar el xml"
MensajeErrorCFDI = ""
Else
Retorno = msgErrorGeneracion
MensajeErrorCFDI = ""
End If
End If
#End Region
@@ -2854,6 +3051,10 @@ Public Class Timbrado
Public Property mensaje As String
<XmlElement("UUID")>
Public Property UUID As String
<XmlElement("FechaTimbrado")>
Public Property FechaTimbrado As DateTime
<XmlElement("xmlBase64")>
Public Property xmlBase64 As String
End Class
@@ -2907,9 +3108,15 @@ Public Class Timbrado
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 = "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 = "http://generacfdi.com.mx/rvltimbrado/service1.asmx?WSDL" '"http://108.60.211.43/rvltimbrado/service1.asmx"
End If

View File

@@ -3,6 +3,7 @@
Imports Fluent
Imports System
Imports System.Web
Imports System.Net
Imports System.Net.Http
Imports System.Web.Http
Imports System.Data
@@ -11,6 +12,9 @@ Imports Newtonsoft.Json.Linq
Imports Extensiones
Imports System.IO
Imports System.Runtime.CompilerServices
Imports System.Xml
Imports System.Xml.Serialization
Imports System.Linq
Public Class SIGPolizaVirtual : Implements IHttpHandler, IRequiresSessionState
@@ -56,11 +60,19 @@ Public Class SIGPolizaVirtual : Implements IHttpHandler, IRequiresSessionState
#End Region
Public Sub ProcessRequest(ByVal context As HttpContext) Implements IHttpHandler.ProcessRequest
context.Response.ContentType = "application/json"
context.Response.ContentType = "application/xml"
Dim UsuarioActual = ValidaUsuarioSistema(1, 100)
'Dim ObjFactura As New Modelos.Factura(usuario, 898028, 140)
CancelarFacturaPADE(context, UsuarioActual)
End Sub
Private Sub TimbrarFacturaPADE(ByVal context As HttpContext, UsuarioActual As Usuario)
Dim UsuarioServicio As String = "rene.molina@adssistemas.mx"
Dim ClaveServicio As String = "Facturacion2021#"
@@ -125,11 +137,189 @@ Public Class SIGPolizaVirtual : Implements IHttpHandler, IRequiresSessionState
New JProperty("opciones", New String(0) {""})
)
Dim resp = EnviarInformacionPADE("https://timbrado.pade.mx/servicio/rest/timbrado/timbrarConCSD", payload.ToString(), TokenAuth)
Dim Respuesta = EnviarInformacionPADE("https://timbrado.pade.mx/servicio/rest/timbrado/timbrarConCSD", payload.ToString(), TokenAuth)
context.Response.Write(resp)
If Not String.IsNullOrEmpty(Respuesta) Then
Dim result As PADEServicioTimbradoResp = Nothing
Dim serializer As XmlSerializer = New XmlSerializer(GetType(PADEServicioTimbradoResp))
Try
Using reader As TextReader = New StringReader(Respuesta)
result = CType(serializer.Deserialize(reader), PADEServicioTimbradoResp)
End Using
Catch ex As Exception
OnError("Ocurrió un error al obtener los resultados", ex)
End Try
If result IsNot Nothing Then
Dim xmlGuardar = result.xmlBase64.ToBase64Decode()
context.Response.Write(xmlGuardar)
Else
context.Response.Write(Respuesta)
End If
Else
context.Response.Write(Respuesta)
End If
End Sub
Private Sub CancelarFacturaPADE(ByVal context As HttpContext, UsuarioActual As Usuario)
Dim UsuarioServicio As String = "rene.molina@adssistemas.mx"
Dim ClaveServicio As String = "Facturacion2021#"
Dim EmisorRFC As String = "ZUÑ920208KL4"
Dim ArchivoLLave As String = $"{UsuarioActual.Empresa.Ruta}Certificados\CSD01_ZUÑ920208KL4.key"
Dim ArchivoCertificado As String = $"{UsuarioActual.Empresa.Ruta}Certificados\CSD01_ZUÑ920208KL4.cer"
Dim Clave = "12345678a"
Dim TimbraProduccion = False
If Not File.Exists(ArchivoCertificado) Then
context.Response.Write("El archivo de llave privada no existe")
Exit Sub
End If
If Not File.Exists(ArchivoLLave) Then
context.Response.Write("El archivo de llave privada no existe")
Exit Sub
End If
If UsuarioActual.Empresa.ContraseñaKey = "" Then
context.Response.Write("La clave no puede ser vacía")
Exit Sub
End If
Dim llaveByte As Byte(), certByte As Byte()
Dim llaveBase64 As String = "", certBase64 As String = ""
Dim cfdi As New GoFac.GoCfdi()
Dim complemento As String = ""
Dim complementoConcepto As String = ""
Try
llaveByte = System.IO.File.ReadAllBytes(ArchivoLLave)
llaveBase64 = Convert.ToBase64String(llaveByte)
Catch ex As Exception
context.Response.Write($"Error al leer la llave privada: {ex.Message}")
Exit Sub
End Try
Try
certByte = System.IO.File.ReadAllBytes(ArchivoCertificado)
certBase64 = Convert.ToBase64String(certByte)
Catch ex As Exception
context.Response.Write($"Error al leer el certificado: {ex.Message}")
Exit Sub
End Try
Dim TokenAuth As String = ToBase64Encode($"{UsuarioServicio}:{ClaveServicio}")
Dim Contrato As String = "72330711-cac6-4106-8051-cbcda1aef495"
Dim FolioFiscal As String = "9A46AD71-560B-4048-8B40-80ADC57C1CDC"
'Dim Respuesta As String = EnviarInformacionCancelacionPADE("https://timbrado.pade.mx/servicio/rest/cancelacion/cancelar", TokenAuth, Contrato, EmisorRFC, certBase64, llaveBase64, Clave, FolioFiscal)
'context.Response.Write(Respuesta)
Dim Respuesta As String = EnviarInformacionCancelacionPADESOAP("https://timbrado.pade.mx/servicio/Timbrado3.3?wsdl", UsuarioServicio, ClaveServicio, Contrato, EmisorRFC, certBase64, llaveBase64, Clave, FolioFiscal, TimbraProduccion)
If Not String.IsNullOrEmpty(Respuesta) Then
Dim result As PADEServicioCancelacionResp = Nothing
Dim serializer As XmlSerializer = New XmlSerializer(GetType(PADEServicioCancelacionResp))
Try
Using reader As TextReader = New StringReader(Respuesta)
result = CType(serializer.Deserialize(reader), PADEServicioCancelacionResp)
End Using
Catch ex As Exception
OnError("Ocurrió un error al obtener los resultados", ex)
End Try
If result IsNot Nothing Then
context.Response.ContentType = "application/json"
context.Response.Write(JsonConvert.SerializeObject(result))
Else
context.Response.Write(Respuesta)
End If
Else
context.Response.Write(Respuesta)
End If
'Dim arrayFolioFiscal = New String(0) {FolioFiscal}
'Dim arrayOpciones = New List(Of String)
'If Not TimbraProduccion Then
' arrayOpciones.Add("MODO_PRUEBA:1")
'End If
'Dim pade = New PADE33.PadeTimbradoServiceClient()
'Dim Res = pade.cancelarConOpciones(Contrato, UsuarioServicio, ClaveServicio, EmisorRFC, arrayFolioFiscal, certByte, llaveByte, Clave, arrayOpciones.ToArray())
'context.Response.Write(Res)
End Sub
Private Function EnviarInformacionCancelacionPADESOAP(ByVal url As String, UsuarioServicio As String, PassServicio As String, contrato As String, rfcEmisor As String,
certBase64 As String, keyBase64 As String, keyPass As String, arregloUUID As String, TimbraProduccion As Boolean) As String
Dim retorno = ""
Try
Dim request As HttpWebRequest = CType(WebRequest.Create($"{url}"), HttpWebRequest)
'request.Headers.Add("SOAPAction:http://tempuri.org/TestCfd33 ")
request.ContentType = "text/xml;charset=""utf-8"""
request.Accept = "text/xml"
request.Method = "POST"
Dim XMLString As String = $"<Envelope xmlns=""http://schemas.xmlsoap.org/soap/envelope/"">
<Body>
<cancelarConOpciones xmlns=""timbrado.ws.pade.mx"">
<contrato xmlns="""">{contrato}</contrato>
<usuario xmlns="""">{UsuarioServicio}</usuario>
<passwd xmlns="""">{PassServicio}</passwd>
<rfcEmisor xmlns="""">{rfcEmisor}</rfcEmisor>
<arregloUUID xmlns="""">{arregloUUID}</arregloUUID>
<cert xmlns="""">{certBase64}</cert>
<key xmlns="""">{keyBase64}</key>
<keyPass xmlns="""">{keyPass}</keyPass>
<opciones xmlns="""">{If(TimbraProduccion, "", "MODO_PRUEBA:3")}</opciones>
</cancelarConOpciones>
</Body>
</Envelope>"
Dim SOAPReqBody As XmlDocument = New XmlDocument()
SOAPReqBody.LoadXml(XMLString)
Using stream As Stream = request.GetRequestStream()
SOAPReqBody.Save(stream)
End Using
Dim response As String = ""
Using Serviceres As WebResponse = request.GetResponse()
Using rd As StreamReader = New StreamReader(Serviceres.GetResponseStream())
response = rd.ReadToEnd()
End Using
End Using
If Not String.IsNullOrEmpty(response) Then
Dim xmlRetorno = New XmlDocument()
xmlRetorno.LoadXml(response)
Dim elemList As XmlNodeList = xmlRetorno.GetElementsByTagName("return")
If elemList.Count > 0 Then
If elemList(0).ChildNodes.Count > 0 Then
retorno = elemList(0).ChildNodes(0).Value
End If
End If
End If
Catch ex As Exception
retorno = ""
OnError("Ocurrió un error al cancelar", ex)
End Try
Return retorno
End Function
Public ReadOnly Property IsReusable() As Boolean Implements IHttpHandler.IsReusable
Get
@@ -159,6 +349,46 @@ Public Class SIGPolizaVirtual : Implements IHttpHandler, IRequiresSessionState
End Function
Private Function EnviarInformacionCancelacionPADE(url As String, tokenAuth As String, contrato As String, rfcEmisor As String,
certBase64 As String, keyBase64 As String, keyPass As String, arregloUUID As String) As String
Dim Retorno As String = ""
Try
Dim urlParametros As String = String.Format("contrato={0}&rfcEmisor={1}&certBase64={2}&keyBase64={3}&keyPass={4}&arregloUUID={5}&opciones={6}", contrato, rfcEmisor, certBase64, keyBase64, keyPass, arregloUUID, "MODO_PRUEBA:1")
Dim urlRequest As String = String.Format("{0}?{1}", url, urlParametros)
Using httpClient = New HttpClient()
httpClient.Timeout = New TimeSpan(0, 1, 0)
Using request = New HttpRequestMessage(HttpMethod.Post, New Uri(urlRequest))
request.Headers.Add("Authorization", $"Basic {tokenAuth}")
Dim response = httpClient.SendAsync(request, HttpCompletionOption.ResponseHeadersRead).Result
Retorno = response.Content.ReadAsStringAsync().Result
'Dim Parametros = New List(Of KeyValuePair(Of String, String))
'Parametros.Add(New KeyValuePair(Of String, String)("contrato", contrato))
'Parametros.Add(New KeyValuePair(Of String, String)("rfcEmisor", rfcEmisor))
'Parametros.Add(New KeyValuePair(Of String, String)("certBase64", certBase64))
'Parametros.Add(New KeyValuePair(Of String, String)("keyBase64", keyBase64))
'Parametros.Add(New KeyValuePair(Of String, String)("keyPass", keyPass))
'Parametros.Add(New KeyValuePair(Of String, String)("arregloUUID", arregloUUID))
'Using content = New FormUrlEncodedContent(Parametros)
' request.Content = content
'End Using
End Using
End Using
Catch ex As Exception
Retorno = ""
OnError("Ocurrió un error al enviar la informacion", ex)
End Try
Return Retorno
End Function
Public Function ToBase64Encode(ByVal plainText As String) As String
Dim plainTextBytes = System.Text.Encoding.UTF8.GetBytes(plainText)
Return System.Convert.ToBase64String(plainTextBytes)
@@ -170,6 +400,53 @@ Public Class SIGPolizaVirtual : Implements IHttpHandler, IRequiresSessionState
Return System.Text.Encoding.UTF8.GetString(base64EncodedBytes)
End Function
<Serializable(), XmlRoot("servicioTimbrado")>
Public Class PADEServicioTimbradoResp
<XmlElement("id")>
Public Property id As String
<XmlElement("timbradoOk")>
Public Property timbradoOk As Boolean
<XmlElement("contrato")>
Public Property contrato As String
<XmlElement("codigo")>
Public Property codigo As String
<XmlElement("mensaje")>
Public Property mensaje As String
<XmlElement("UUID")>
Public Property UUID As String
<XmlElement("FechaTimbrado")>
Public Property FechaTimbrado As DateTime
<XmlElement("xmlBase64")>
Public Property xmlBase64 As String
End Class
<Serializable(), XmlRoot("servicioCancel")>
Public Class PADEServicioCancelacionResp
<XmlElement("statusOk")>
Public Property statusOk As Boolean
<XmlElement("codigo")>
Public Property codigo As String
<XmlElement("mensaje")>
Public Property mensaje As String
<XmlElement("procesados")>
Public Property procesados As Integer
<XmlElement("cancelados")>
Public Property cancelados As Integer
<XmlArray("cancelaciones")>
<XmlArrayItem("cancelacion")>
Public Property cancelaciones As List(Of PADECancelacion)
End Class
<Serializable(), XmlRoot("cancelacion")>
Public Class PADECancelacion
<XmlElement("uuid")>
Public Property uuid As String
<XmlElement("codigo")>
Public Property codigo As String
<XmlElement("mensaje")>
Public Property mensaje As String
End Class
Public Property XMLPrueba As String = "<?xml version=""1.0"" encoding=""UTF-8""?><cfdi:Comprobante xmlns:cfdi=""http://www.sat.gob.mx/cfd/3"" xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" xsi:schemaLocation=""http://www.sat.gob.mx/cfd/3 http://www.sat.gob.mx/sitio_internet/cfd/3/cfdv33.xsd"" Version=""3.3"" Serie=""HM"" Folio=""1682"" Fecha=""2021-05-20T17:43:32"" Sello=""BdE1N3CwiqU6KKOWT80N6X/9kELGK22bRmfHfXHUaYvOCmOixuAN3a0yyd5Yzf4lD0sVs+OScZ1rgNKhWWyRwAJzw/avfGod2l7LIGbyYLGoUHUPpY3swDgTk+zq29PUbf3500YPf4qkXx3GcKYkIb4TnQPnvFnjE8FvcV+p8wETuvijm5T3HzFKCXG6ePrERIt2PN1NM26p2NIOzMSUksSNUtC6rqEI8G2yIUIMZqQ4bHTo1WdV0UPKBaqjkPLyY8Q1TMFZDbiudE454bUJWjxv6KYicXgfH17HJY91XTncCgwwrwlcPrKK7ea/xPzYumHMurEl5arjfqE6+nI3Fw=="" FormaPago=""01"" NoCertificado=""30001000000400002442"" Certificado=""MIIFuzCCA6OgAwIBAgIUMzAwMDEwMDAwMDA0MDAwMDI0NDIwDQYJKoZIhvcNAQELBQAwggErMQ8wDQYDVQQDDAZBQyBVQVQxLjAsBgNVBAoMJVNFUlZJQ0lPIERFIEFETUlOSVNUUkFDSU9OIFRSSUJVVEFSSUExGjAYBgNVBAsMEVNBVC1JRVMgQXV0aG9yaXR5MSgwJgYJKoZIhvcNAQkBFhlvc2Nhci5tYXJ0aW5lekBzYXQuZ29iLm14MR0wGwYDVQQJDBQzcmEgY2VycmFkYSBkZSBjYWRpejEOMAwGA1UEEQwFMDYzNzAxCzAJBgNVBAYTAk1YMRkwFwYDVQQIDBBDSVVEQUQgREUgTUVYSUNPMREwDwYDVQQHDAhDT1lPQUNBTjERMA8GA1UELRMIMi41LjQuNDUxJTAjBgkqhkiG9w0BCQITFnJlc3BvbnNhYmxlOiBBQ0RNQS1TQVQwHhcNMTkwNjE3MjAxODA2WhcNMjMwNjE3MjAxODA2WjCB4jEnMCUGA1UEAxQeWkFQQVRFUklBIFVSVEFETyDRRVJJIFNBIERFIENWMScwJQYDVQQpFB5aQVBBVEVSSUEgVVJUQURPINFFUkkgU0EgREUgQ1YxJzAlBgNVBAoUHlpBUEFURVJJQSBVUlRBRE8g0UVSSSBTQSBERSBDVjElMCMGA1UELRQcWlXROTIwMjA4S0w0IC8gS0FITzY0MTEwMUIzOTEeMBwGA1UEBRMVIC8gS0FITzY0MTEwMUhOVExLUzA2MR4wHAYDVQQLFBVaYXBhdGVy7WEgVXJ0YWRvINFlcmkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCX4ICuLAA/GYfEdRUMBLolOHKOUTDyw//CQjcj6dmCUWP8Y2UIhbq1JJ5nClsmhg6WThXjYqzRiYSAYagzrtwWri8I7oURIoTDeuxU69UOg1shuCEo89prJfx8ZIGKwB+GedC6dFdKGZLKn4ksSuyfntXmW4rZLup2j24mQx+jpdmcQIGMe6A/2668ZhpYpCw/vwfH8edkS5X41yp/zj6Z9mIySRWaMHm5eT/X0D01l3gX2gJVXY5ebUsKIEmDCP5pmBmyFyJjqYUhYi3+nYARrVPdZ53RPigcoLspXyIBVf2CPansqOYiRIqxLjfsL6B1qGJmpFN1RHd+XF9GzkHzAgMBAAGjHTAbMAwGA1UdEwEB/wQCMAAwCwYDVR0PBAQDAgbAMA0GCSqGSIb3DQEBCwUAA4ICAQAw5nqLkVuaTWX/qnPqWpOlSfrfVF2plqAPu1sdgzU/vZGgZCLxq3cY3Dg02khdsM74A3fYFQGxFFo6zDt5Ru9VySBks2gmbebRuuYKAKHMoi0tNpvI2arOMaiJsq2yzGAox6e+MXhhQ1oV+28HaxjYIWuVSwWAzie+n6VloWXMDDxTg7t9URJ7d8E7ZrPZ2X0+7h6b8sfnOjTljUm+Mt6e6AIl1+lA7Ar4YeJgIOeU/RKSOcvrCGDNtz7kpn0XdsFC/m1xG1bIdhyv0zkRmKvtpVGROsSEHPLBwuTENIkm0Cw2/FQsPrG8S9Yer451Jv0H+heFfJXqVrHv8Azba5OkotK5IlPaHm9voxfhwI1aXHbUS+NwpTHHOeVsvzsC9LQDiLGO3MQLn7VFZebFa84CddwLWf/JTyPYIcg3I/BRDFqbrVNRRDJwVlxIgbU7ZhRIcjiRLFx6UbAd8B2fe+GHgxw/x/6Pop65ca32iGAJgojtXWdD5gZvh6PlhEhWMhIOCvAesE52L4wmIHofAIZjlPRXNaitZ74xDEIpQ9f5X0w/4ltB7OOBYYfu8z9lzCc4M2iSmtq1rvSYxnLI/nvt7D0uYrq82ZeG3kzungcS8qNjufGJeEHNeyDxMXF9rYU4KLxK8KLzA2Ldh7+3zywU/pwXhW/aTS42EViWPbffng=="" CondicionesDePago=""01 - Efectivo"" SubTotal=""100.00"" Moneda=""MXN"" TipoCambio=""1"" Total=""116.00"" TipoDeComprobante=""I"" MetodoPago=""PPD"" LugarExpedicion=""82250""><cfdi:Emisor Rfc=""ZUÑ920208KL4"" Nombre=""Empresa de DEMO"" RegimenFiscal=""601"" /><cfdi:Receptor Rfc=""VOC990129I26"" Nombre=""Cliente Demostracion"" UsoCFDI=""G03"" /><cfdi:Conceptos><cfdi:Concepto ClaveProdServ=""10101902"" NoIdentificacion=""124"" Cantidad=""1.00"" ClaveUnidad=""EA"" Unidad=""PZA"" Descripcion=""ESCOBA "" ValorUnitario=""100.00"" Importe=""100.00""><cfdi:Impuestos><cfdi:Traslados><cfdi:Traslado Base=""100.00"" Impuesto=""002"" TipoFactor=""Tasa"" TasaOCuota=""0.160000"" Importe=""16.00"" /></cfdi:Traslados></cfdi:Impuestos></cfdi:Concepto></cfdi:Conceptos><cfdi:Impuestos TotalImpuestosTrasladados=""16.00""><cfdi:Traslados><cfdi:Traslado Impuesto=""002"" TipoFactor=""Tasa"" TasaOCuota=""0.160000"" Importe=""16.00"" /></cfdi:Traslados></cfdi:Impuestos></cfdi:Comprobante>"

View File

@@ -911,7 +911,7 @@ Partial Class ContabilidadC_RegPrePolizaS
If idCuentaContabilizacion = 1 AndAlso (IdCtaContable = 0) Then
idCuentaContabilizacion = 0
End If
If Importe > 0 Then
If Importe <> 0 Then
Dim tCveCuenta As Integer = gvr.DataKey("CveCuenta").ToEntero
'If gvr.datakey("CveConcepto") = "299" Then
@@ -929,15 +929,9 @@ Partial Class ContabilidadC_RegPrePolizaS
Exit For
End If
End If
Next
'If CvePeriodo > 0 Then
' If Not ObjNom.UpdateProvisionNomina(CvePeriodo, CvePrePoliza, UsuarioActual.CveEmpresa) Then
' MsgError = "No se pudo actualizar el periodo de la nómina"
' End If
'End If
If ObjMov.ValidacionPrePolizaCuadre(CvePrePoliza, 1) Then
Next
If MsgError = "" AndAlso ObjMov.ValidacionPrePolizaCuadre(CvePrePoliza, 1) Then
If ObjMov.ValorPolizaDescuadre > 0 Then
GuardaLogAD($"Contabilidad/RegPrePolizas | Error:{ObjMov.MensajePolizaDescuadre} Diferencia:{ObjMov.ValorDiferencia} | CvePrePoliza:{CvePrePoliza}", "LogPrePolizas")
MsgError = ObjMov.MensajePolizaDescuadre
@@ -986,7 +980,8 @@ Partial Class ContabilidadC_RegPrePolizaS
GvMov.DataBind()
TxtFecha.Text = ""
TxtObservaciones.Text = ""
Else
Else
Alert(MsgError.ToString, ModExtensiones.TipoMensaje.MsgError)
ObjIE.RollBack()
If Conta IsNot Nothing Then Conta.RollBack()
End If

264
GPS/RepUnidades.aspx Normal file
View File

@@ -0,0 +1,264 @@
<%@ Page Title="" Language="VB" MasterPageFile="~/Site.master" AutoEventWireup="false" CodeFile="RepUnidades.aspx.vb" Inherits="GPS_RepUnidades" %>
<asp:Content ID="Content1" ContentPlaceHolderID="CP" runat="Server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="Css" runat="Server">
<style>
.select2-selection__rendered {
margin-top: 0px;
height: 25px;
}
.dataTables_scrollBody table th {
padding: 0px !important;
padding-right: 4px !important;
padding-left: 4px !important;
}
.table-scrollable {
margin: 0px !important;
}
.dataTables_scrollFoot {
display: none;
}
.dataTables_scroll {
margin-bottom: 0px;
}
.table.dataTable {
margin-top: 0px !important;
}
.table table-striped table-hover dataTable no-footer {
margin-top: 0px !important;
}
.Excede {
overflow: hidden;
text-overflow: ellipsis;
}
.psagregar > div.comboxes {
display: inline-block;
width: 250px;
}
.psagregar > div.codigo input {
width: 79px;
}
.psagregar > div.codigo {
display: inline-block;
width: 80px;
}
.psagregar > div.codigo > input[type="submit"] {
display: none;
}
.widget-thumb {
padding: 15px;
border-radius: 4px;
}
.widget-thumb.bordered {
border: 3px solid whitesmoke;
}
.widget-thumb .widget-thumb-heading {
font-size: 14px;
font-weight: 700;
color: #8e9daa;
margin: 0px 5px;
text-align: center;
}
.widget-thumb .widget-thumb-wrap {
overflow: hidden;
}
.widget-thumb .widget-thumb-wrap .widget-thumb-icon {
float: left;
width: 60px;
height: 60px;
display: inline-block;
font-size: 20px;
line-height: 41px;
color: #fff;
text-align: center;
padding: 10px;
margin-right: 15px;
}
.widget-thumb .widget-thumb-body {
overflow: hidden;
padding: 5px;
}
.widget-thumb .widget-thumb-body .widget-thumb-subtitle {
padding-top: 2px;
display: block;
font-size: 14px;
font-weight: 600;
color: #8e9daa;
}
.widget-thumb .widget-thumb-body .widget-thumb-body-stat {
display: block;
font-size: 20px;
font-weight: 600;
color: #3e4f5e;
}
</style>
</asp:Content>
<asp:Content ID="Content3" ContentPlaceHolderID="E" runat="Server">
Reporte de Unidades
</asp:Content>
<asp:Content ID="Content4" ContentPlaceHolderID="HB" runat="Server">
</asp:Content>
<asp:Content ID="Content5" ContentPlaceHolderID="H" runat="Server">
</asp:Content>
<asp:Content ID="Content6" ContentPlaceHolderID="HA" runat="Server">
</asp:Content>
<asp:Content ID="Content7" ContentPlaceHolderID="C" runat="Server">
<asp:UpdatePanel ID="UPFiltros" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<div class="portlet solid grey-cascade portlet-filter" style="">
<div class="portlet-title portlet-filterT smalltitle " style="">
<div class="tools">
<asp:Button ID="BtnConsultar" OnClick="BtnConsultar_Click" runat="server" ValidationGroup="GrpGuardar" Text="Consultar" class="btn btn-primary" />
</div>
<div class="titlefiltros caption" style="margin-top: -8px;">
<ul class="list-inline" style="font-size: 12px;">
<li>Empresa:
<asp:DropDownList ID="DdlEmpresa" runat="server" OnSelectedIndexChanged="DdlEmpresa_SelectedIndexChanged" AutoPostBack="true" Width="200px" DataTextField="Empresa" DataValueField="CveEmpresa" CssClass="form-control input-sm select2me">
</asp:DropDownList>
</li>
<li>Cliente:
<asp:DropDownList ID="DdlCliente" runat="server" Width="200px" DataTextField="Nombre" DataValueField="CveCliente" CssClass="form-control input-sm select2me">
</asp:DropDownList>
</li>
<li>Fecha Inicio:
<div class="input-group input-sm date date-picker " data-date-format="dd/mm/yyyy hh:mm" style="display: inline-block;">
<asp:TextBox ID="txtFechaI" runat="server" CssClass="form-control input-sm ADDateTimePicker" CausesValidation="true" MaxLength="18" Width="132px "></asp:TextBox>
</div>
</li>
<li>Fecha Fin:
<div class="input-group input-sm date date-picker " data-date-format="dd/mm/yyyy" style="display: inline-block;">
<asp:TextBox ID="txtFechaF" runat="server" CssClass="form-control input-sm ADDateTimePicker" CausesValidation="true" MaxLength="18" Width="132px "></asp:TextBox>
</div>
</li>
<li>Estatus:
<asp:DropDownList ID="DdlEstatus" runat="server" Width="100px" CssClass="form-control input-sm select2me">
<asp:ListItem Selected="True" Value="-1" Text="Todos"></asp:ListItem>
<asp:ListItem Value="1" Text="Activo"></asp:ListItem>
<asp:ListItem Value="0" Text="Inactivo"></asp:ListItem>
</asp:DropDownList>
</li>
</ul>
</div>
</div>
</div>
</ContentTemplate>
</asp:UpdatePanel>
<asp:UpdatePanel ID="UpDatos" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<div class="row">
<div class="col-md-4 col-sm-6 col-xs-12">
<div class="widget-thumb text-uppercase bordered">
<h4 class="widget-thumb-heading">Total Unidades</h4>
<div class="widget-thumb-wrap">
<i class="widget-thumb-icon bg-blue fa fa-car"></i>
<div class="widget-thumb-body">
<div class="row">
<div class="col-md-12">
<span class="widget-thumb-body-stat">
<asp:Literal ID="LtlTotalUnidades" Text="0" runat="server" />
</span>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="col-md-4 col-sm-6 col-xs-12">
<div class="widget-thumb text-uppercase bordered">
<h4 class="widget-thumb-heading">Unidades Activas</h4>
<div class="widget-thumb-wrap">
<i class="widget-thumb-icon bg-green-jungle fa fa-car"></i>
<div class="widget-thumb-body">
<div class="row">
<div class="col-md-12">
<span class="widget-thumb-body-stat">
<asp:Literal ID="LtlActivas" Text="0" runat="server" />
</span>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="col-md-4 col-sm-6 col-xs-12">
<div class="widget-thumb text-uppercase bordered">
<h4 class="widget-thumb-heading">Unidades Inactivas</h4>
<div class="widget-thumb-wrap">
<i class="widget-thumb-icon bg-red fa fa-car"></i>
<div class="widget-thumb-body">
<div class="row">
<div class="col-md-12">
<span class="widget-thumb-body-stat">
<asp:Literal ID="LtlInactivas" Text="0" runat="server" />
</span>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="portlet light smmallpadding traspasorow bordered">
<div class="portlet-title">
<div class="caption font-green">
<i class="icon-pin font-green"></i>
<span class="caption-subject bold uppercase">Unidades</span>
</div>
<div class="actions">
<div class="btn-group">
</div>
</div>
<div class="tools">
<a href="javascript:;" class="collapse"></a>
</div>
</div>
<div class="portlet-body rowpadding">
<asp:GridView ID="GvDatos" runat="server" GridLines="None" OnRowDataBound="GvDatos_RowDataBound" CssClass="table table-striped table-advance table-hover Widthall ScrollAD" data-sort="true" data-rows="1" AutoGenerateColumns="False" EmptyDataText="No se encontraron registros" ToolTip="Listado de unidades">
<Columns>
<asp:BoundField DataField="NombreVehiculo" ItemStyle-Width="12.5%" HeaderText="Vehículo - NoEconomico" ItemStyle-HorizontalAlign="Left" />
<asp:BoundField DataField="Empresa" ItemStyle-Width="12.5%" HeaderText="Empresa" ItemStyle-HorizontalAlign="Left" />
<asp:BoundField DataField="Cliente" ItemStyle-Width="12.5%" HeaderText="Cliente" ItemStyle-HorizontalAlign="Left" />
<asp:BoundField DataField="SSID" ItemStyle-Width="12.5%" HeaderText="SSID" ItemStyle-HorizontalAlign="Center" />
<asp:BoundField DataField="Telefono" ItemStyle-Width="12.5%" HeaderText="Telefono" ItemStyle-HorizontalAlign="Center" />
<asp:BoundField DataField="IMEI" ItemStyle-Width="12.5%" HeaderText="IMEI" ItemStyle-HorizontalAlign="Center" />
<asp:BoundField DataField="FechaIng" DataFormatString="{0:dd/MM/yyyy}" ItemStyle-Width="12.5%" HeaderText="Fecha Ingreso" ItemStyle-HorizontalAlign="Center" />
<asp:BoundField DataField="FechaAlta" DataFormatString="{0:dd/MM/yyyy}" ItemStyle-Width="12.5%" HeaderText="Fecha Alta" ItemStyle-HorizontalAlign="Center" />
<asp:TemplateField ItemStyle-Width="12.5%" HeaderText="Estatus" ItemStyle-HorizontalAlign="Center">
<ItemTemplate>
<asp:Label ID="LblEstatus" runat="server" Text='<%# Eval("Estatus") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</div>
</div>
</ContentTemplate>
</asp:UpdatePanel>
</asp:Content>
<asp:Content ID="Content8" ContentPlaceHolderID="JS" runat="Server">
</asp:Content>

97
GPS/RepUnidades.aspx.vb Normal file
View File

@@ -0,0 +1,97 @@
Option Strict On
Option Explicit On
Imports System.Data
Imports Extensiones
Partial Class GPS_RepUnidades
Inherits ClsPaginas
Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load
If Not IsPostBack Then
CargaCombos()
End If
End Sub
Private Sub CargaCombos()
If UsuarioActual.CveRol = 1 Then
DdlEmpresa.DataSource = GlobalDTEmpresas().FiltraParametros("CvePlataforma = 3")
DdlEmpresa.DataBind()
DdlEmpresa.Items.Insert(0, New ListItem("Todas", "-1"))
DdlCliente.Items.Insert(0, New ListItem("Seleccione", "-1"))
Else
DdlEmpresa.DataSource = GlobalDTEmpresas().FiltraParametros($"CvePlataforma = 3 AND CveEmpresa = {UsuarioActual.CveEmpresa}")
DdlEmpresa.DataBind()
CargaClientes()
End If
UPFiltros.Update()
End Sub
Protected Sub GvDatos_RowDataBound(sender As Object, e As GridViewRowEventArgs)
If e.Row.RowType = DataControlRowType.DataRow Then
Select Case e.Row.DBCampo("TipoFila")
Case "1"
e.Row.CssClass = "Totales"
Case "2"
e.Row.CssClass = "SubTotales"
Case "3"
If e.Row.DBCampo("CveEstatus") = "0" Then
e.Row.FCLabel("LblEstatus").CssClass = "badge badge-danger"
Else
e.Row.FCLabel("LblEstatus").CssClass = "badge badge-success"
End If
End Select
End If
End Sub
Protected Sub BtnConsultar_Click(sender As Object, e As EventArgs)
CargaDatos()
End Sub
Private Sub CargaDatos()
Dim FechaI As DateTime = MinFecha, FechaF As DateTime = MaxFecha
If Not String.IsNullOrEmpty(txtFechaI.Text) Then
FechaI = txtFechaI.Text.ToDateTime()
End If
If Not String.IsNullOrEmpty(txtFechaF.Text) Then
FechaF = txtFechaF.Text.ToDateTime()
End If
Using ObjGPS As New ClsGPS
If ObjGPS.GetRepUnidades(DdlEmpresa.SelectedValue.ToEntero(), DdlCliente.SelectedValue.ToEntero(), FechaI:=FechaI, FechaF:=FechaF, CveEstatus:=DdlEstatus.SelectedValue.ToEntero()) Then
GvDatos.DataSource = ObjGPS.DtResultados
Dim DtUnidades As DataTable = ObjGPS.DtResultados.FiltraParametros("CveDispositivo > 0", DistinctColumns:={"CveDispositivo", "CveEstatus"})
LtlTotalUnidades.Text = DtUnidades.Rows.Count.ToString()
LtlActivas.Text = DtUnidades.COUNT("CveDispositivo", "CveEstatus = 1").ToString()
LtlInactivas.Text = DtUnidades.COUNT("CveDispositivo", "CveEstatus = 0").ToString()
End If
End Using
GvDatos.DataBind()
UpDatos.Update()
End Sub
Protected Sub DdlEmpresa_SelectedIndexChanged(sender As Object, e As EventArgs)
CargaClientes()
UpDatos.Update()
End Sub
Private Sub CargaClientes()
If DdlEmpresa.SelectedValue.ToEntero() > 0 Then
DdlCliente.DataSource = GlobalDTCliente(DdlEmpresa.SelectedValue.ToEntero())
Else
DdlCliente.DataSource = Nothing
End If
DdlCliente.DataBind()
DdlCliente.Items.Insert(0, New ListItem("Todos", "-1"))
End Sub
End Class

View File

@@ -644,7 +644,10 @@
}, 250);
}
function creaPoligono(coords, color, Geocerca, Estatus, InicioFin, CveEstatus, CveEstatusAnterior, cruzo) {
var geoReferenciaSeguir = '';
var estatusSiguiente = '';
function creaPoligono(coords, color, Geocerca, Estatus, InicioFin, CveEstatus, CveEstatusAnterior, cruzo, geocercaASeguir, estatusaSeguir) {
var polygon = new google.maps.Polygon({
paths: coords,
strokeColor: color,
@@ -656,6 +659,11 @@
polygon.setMap(map);
polygons.push(polygon);
if (geocercaASeguir != '') {
geoReferenciaSeguir = geocercaASeguir;
estatusSiguiente = estatusaSeguir;
}
CreaMarcadorPoligono(coords, Geocerca, Estatus, InicioFin, CveEstatus, CveEstatusAnterior, cruzo)
}
@@ -935,7 +943,7 @@
}
}
LblETA.innerText = formatETA(duracionTotal);
LblETA.innerHTML = formatETA(duracionTotal) + '<br> <b>Geocerca:</b> ' + geoReferenciaSeguir + '.<br> <b>Estatus:</b> ' + estatusSiguiente;
})
.catch((error) => {
alert('Error:' + error);

View File

@@ -50,6 +50,15 @@ Partial Class GPS_TrayectoDetalle
ViewState("CveEstatusActual") = value
End Set
End Property
Private Property OrdenActual As Integer
Get
Return CType(ViewState("OrdenActual"), Integer)
End Get
Set(value As Integer)
ViewState("OrdenActual") = value
End Set
End Property
#End Region
@@ -148,6 +157,7 @@ Partial Class GPS_TrayectoDetalle
LblTitulo.Text = $"Trayecto: {RowEstatus("Trayecto")}"
LtlEstatusActual.Text = RowEstatus("Estatus").ToString()
CveEstatusActual = RowEstatus("CveEstatusActual").ToString().ToEntero()
OrdenActual = RowEstatus("OrdenActual").ToString().ToEntero()
If CBool(RowEstatus("EsFin")) Then
BtnTerminarTrayeto.Visible = False
@@ -158,7 +168,7 @@ Partial Class GPS_TrayectoDetalle
LtlDispositivo.Text = RowEstatus("Vehiculo").ToString()
LtlFechaI.Text = If(String.IsNullOrEmpty(RowEstatus("FechaInicio").ToString()), "No ha ingresado a la geocerca de inicio", String.Format("{0:dd/MM/yyyy HH:mm tt}", RowEstatus("FechaInicio").ToString().ToDateTime()))
LtlFechaF.Text = If(String.IsNullOrEmpty(RowEstatus("FechaFin").ToString()), "No ha Terminado", String.Format("{0:dd/MM/yyyy HH:mm tt}", RowEstatus("FechaFin").ToString().ToDateTime()))
LtlFechaF.Text = If(String.IsNullOrEmpty(RowEstatus("FechaFin").ToString()), "No ha terminado", String.Format("{0:dd/MM/yyyy HH:mm tt}", RowEstatus("FechaFin").ToString().ToDateTime()))
LtlVMedia.Text = String.Format("{0:N2} KM/H", RowEstatus("VMedia"))
LtlVMax.Text = String.Format("{0:N2} KM/H", RowEstatus("VMax"))
LtlTiempo.Text = String.Format("{0}", RowEstatus("TiempoOperativo"))
@@ -214,18 +224,41 @@ Partial Class GPS_TrayectoDetalle
Dim CoordAnterior As String = ""
Dim CveEstatus As Integer = -1
Dim CveEstatusAnterior As Integer = -1
Dim GeoreferenciaASeguir As String = ""
Dim EstatusSiguiente As String = ""
Dim OrdenEstatus As Integer = 0
'GEOCERCAS
For Each Row As DataRow In DtGeocercas.Rows
count += 1
Coord = SQLToGmaps(Row("Geom").ToString, "POLYGON")
CveEstatus = Row("CveEstatusTrayecto").ToString.ToEntero
CveEstatusAnterior = Row("CveEstatusAnterior").ToString.ToEntero
OrdenEstatus = Row("OrdenEstatus").ToString.ToEntero
Dim EsInicio As Boolean = CBool(IfNull(Row("EsInicio"), 0))
Dim EsFin As Boolean = CBool(IfNull(Row("EsFin"), 0))
Dim InicioFin As Integer = If(EsInicio, 1, If(EsFin, 2, 0))
Dim Cruzo As String = IfNull(Row("Cruzo"), "0").ToString()
RegistraScript($"creaPoligono({Coord}, '{Row("Color").ToString}', '{Row("GeoReferencia")}', '{Row("EstatusTrayecto")}',{InicioFin},{CveEstatus},{CveEstatusAnterior},{Cruzo})", count.ToString())
'MARCA PARA QUE NO CALCULE EL TIEMPO DE LAS GEOCERCAS RESTANTES
If Not String.IsNullOrEmpty(GeoreferenciaASeguir) Then
Cruzo = "1"
End If
'VERIFICA SI SE ACTUALIZO MANUALMENTE
If Cruzo = "0" Then
If OrdenEstatus <= OrdenActual Then
Cruzo = "1"
End If
End If
If Cruzo = "0" Then
GeoreferenciaASeguir = Row("GeoReferencia").ToString()
EstatusSiguiente = Row("EstatusTrayecto").ToString()
End If
RegistraScript($"creaPoligono({Coord}, '{Row("Color").ToString}', '{Row("GeoReferencia")}', '{Row("EstatusTrayecto")}',{InicioFin},{CveEstatus},{CveEstatusAnterior},{Cruzo},'{GeoreferenciaASeguir}','{EstatusSiguiente}')", count.ToString())
Next
End If
@@ -324,11 +357,16 @@ Partial Class GPS_TrayectoDetalle
Dim ObjGPS As New ClsGPS
Try
If ObjGPS.GetEstatusTrayectos(-1, UsuarioActual.CveCliente) Then
DtEstatus = ObjGPS.DtResultados.Copy()
Dim CveEstatusFinal As Integer = -1
If ObjGPS.GetTrayectosGeoReferencias(CveTrayecto) Then
'TOMA LA GEOCERCA FINAL
Dim Row As DataRow = ObjGPS.DtResultados.FiltroPrimero($"EsFin = True")
If Row IsNot Nothing Then
CveEstatusFinal = Row("CveEstatusTrayecto").ToString().ToEntero()
End If
End If
Dim CveEstatusFinal As Integer = DtEstatus.FiltroPrimeroValor("CveEstatusTrayecto", "EsFin = True").ToEntero()
If CveEstatusFinal > 0 Then
If ObjGPS.UpdateTrayectoEstatus(CveTrayecto, CveEstatusFinal) Then
Alert("El trayecto se finalizo correctamente", JSBtnAceptar:="RefrescarPagina();", ShowCloseButton:=False)
@@ -336,6 +374,19 @@ Partial Class GPS_TrayectoDetalle
Else
Alert("No se pudo obtener el estatus final", TipoMensaje.MsgError)
End If
'If ObjGPS.GetEstatusTrayectos(-1, UsuarioActual.CveCliente) Then
' DtEstatus = ObjGPS.DtResultados.Copy()
'End If
'Dim CveEstatusFinal As Integer = DtEstatus.FiltroPrimeroValor("CveEstatusTrayecto", "EsFin = True").ToEntero()
'If CveEstatusFinal > 0 Then
' If ObjGPS.UpdateTrayectoEstatus(CveTrayecto, CveEstatusFinal) Then
' Alert("El trayecto se finalizo correctamente", JSBtnAceptar:="RefrescarPagina();", ShowCloseButton:=False)
' End If
'Else
' Alert("No se pudo obtener el estatus final", TipoMensaje.MsgError)
'End If
Catch ex As Exception
OnError("Ocurrió un error al actualizar el trayecto", ex)
End Try

View File

@@ -322,6 +322,40 @@
<asp:RequiredFieldValidator ID="RequiredFieldValidator5" runat="server" InitialValue="-1" CssClass="help-block errorimput" ControlToValidate="DdlDispositivoNuevo" ErrorMessage="<b><span style='text-decoration: underline'>ERROR:</span></b><br />El campo <b>''Dispositivo''</b> es necesario, por favor ingréselo." ValidationGroup="GrpNuevo"></asp:RequiredFieldValidator>
<label for="<%= DdlDispositivoNuevo.ClientID.ToString()%>" style="width: 50%">Vehículo:</label>
</div>
<div class="form-group form-md-line-input">
Notificar:
<asp:CheckBox ID="ChkNotificarApartirDe" AutoPostBack="true" OnCheckedChanged="ChkNotificacionApartirDe_CheckedChanged" Checked="false" CssClass="md-checksd" runat="server" />
</div>
<div class="row" id="DivNotificarApartirDe" runat="server" visible="false">
<div class="col-md-12">
<div class="row">
<div class="col-md-12">
<div class="form-group form-md-line-input input-iconright">
<asp:TextBox ID="TxtCorreNotApartidDe" runat="server" CssClass="form-control" CausesValidation="true"></asp:TextBox>
<label for="<%= TxtCorreNotApartidDe.ClientID.ToString()%>">Correo(s):</label>
</div>
</div>
</div>
<div class="row">
<div class="col-md-6">
<div class="form-group form-md-line-input input-iconright">
<asp:DropDownList ID="DdlIntervaloAPartirDe" CssClass="form-control select2me" runat="server">
<asp:ListItem Selected="True" Text="30 Min" Value="30"></asp:ListItem>
<asp:ListItem Text="60 Min" Value="60"></asp:ListItem>
<asp:ListItem Text="2 Hrs" Value="120"></asp:ListItem>
</asp:DropDownList>
<label for="<%= DdlIntervaloAPartirDe.ClientID.ToString()%>" style="width: 50%">Intervalo:</label>
</div>
</div>
<div class="col-md-6">
<div class="form-group form-md-line-input">
Enviar Liga:
<asp:CheckBox ID="ChkEnviarLigaApartirDe" Checked="false" CssClass="make-switchsd" runat="server" />
</div>
</div>
</div>
</div>
</div>
<div class="row" style="margin-left: 0px; margin-top: 5px; margin-bottom: 5px; text-align: right" align="left">
<div style="margin-right: 15px">
<input type="text" id="TxtBusqued2a" class="form-control input-sm" onkeyup="<%= String.Format("FiltrarTabla('TxtBusqued2a','{0}')", GvEstatus.ClientID) %>" style="display: inline-block; margin-right: -20px; width: 150px;" />

View File

@@ -113,8 +113,8 @@ Partial Class GPS_Trayectos
Dim ObjGPS As New ClsGPS
If ObjGPS.GetEstatusTrayectos(-1, UsuarioActual.CveCliente) Then
GvEstatus.DataSource = ObjGPS.DtResultados.FiltraParametros("CveCliente > 0")
GvEstatusNuevo.DataSource = ObjGPS.DtResultados
DdlEstatusTrayecto.DataSource = ObjGPS.DtResultados
GvEstatusNuevo.DataSource = ObjGPS.DtResultados.FiltraParametros("CveCliente > 0")
DdlEstatusTrayecto.DataSource = ObjGPS.DtResultados.FiltraParametros("CveCliente > 0")
End If
ObjGPS.Dispose()
GvEstatus.DataBind()
@@ -237,7 +237,9 @@ Partial Class GPS_Trayectos
Dim Nombre As String = TxtNombreNuevo.Text
Dim CveDispositivo As Integer = DdlDispositivoNuevo.SelectedValue.ToEntero
If CveDispositivo > 0 Then
Dim CveTrayectoNuevo As Integer = ObjGPS.AddTrayecto(Nombre, DateTime.Now, "", CveDispositivo, UsuarioActual.CveCliente)
Dim CveTrayectoNuevo As Integer = ObjGPS.AddTrayecto(Nombre, DateTime.Now, "", CveDispositivo, UsuarioActual.CveCliente, EnviarNotificacion:=ChkNotificarApartirDe.Checked,
CorreosNotificacion:=TxtCorreNotApartidDe.Text, Intervalo:=If(ChkNotificarApartirDe.Checked, DdlIntervaloAPartirDe.SelectedValue.ToEntero(), 0),
EnviarLiga:=ChkEnviarLigaApartirDe.Checked)
If CveTrayectoNuevo > 0 Then
For Each Row As GridViewRow In GvEstatusNuevo.Rows
If Row.RowType = DataControlRowType.DataRow Then
@@ -413,6 +415,10 @@ Partial Class GPS_Trayectos
DivNotificaciones.Visible = ChkNotificacion.Checked
UpAgregar.Update()
End Sub
Protected Sub ChkNotificacionApartirDe_CheckedChanged(sender As Object, e As EventArgs)
DivNotificarApartirDe.Visible = ChkNotificarApartirDe.Checked
UpDdlTrayecto.Update()
End Sub
Protected Sub LnkEnviar_Click(sender As Object, e As EventArgs)
Dim GvRow As GridViewRow = DirectCast(DirectCast(sender, LinkButton).NamingContainer, GridViewRow)

View File

@@ -972,8 +972,8 @@ Partial Class Inventarios_EntregaAlmacen
If CBool(e.Row.DBCampo("AplicaCaducidad")) Then
e.Row.FCTextBox("TxtCaducidad").Visible = True
e.Row.FCLinkButton("LnkCaducidad").Visible = True
e.Row.FCTextBox("TxtCaducidad").readonly = True
CType(e.row.FindControl("RFVCaducidad"), RequiredFieldValidator).Enabled = False
e.Row.FCTextBox("TxtCaducidad").ReadOnly = True
CType(e.Row.FindControl("RFVCaducidad"), RequiredFieldValidator).Enabled = False
' e.Row.FCTextBox("TxtCaducidad").enabled = True
Else
e.Row.FCTextBox("TxtCaducidad").Visible = False
@@ -982,7 +982,7 @@ Partial Class Inventarios_EntregaAlmacen
If CBool(e.Row.DBCampo("AplicaLote")) Then
e.Row.FCTextBox("TxtLote").Visible = True
e.Row.FCTextBox("TxtLote").readonly = True
e.Row.FCTextBox("TxtLote").ReadOnly = True
'e.Row.FCTextBox("TxtLote").enabled = True
Else
e.Row.FCTextBox("TxtLote").Visible = False
@@ -2261,7 +2261,6 @@ Partial Class Inventarios_EntregaAlmacen
If ErrorMovInv Then Exit For
Else
ErrorMovInv = True
End If
@@ -2574,10 +2573,10 @@ Partial Class Inventarios_EntregaAlmacen
End If
End If
'DEVOLUCION APARTADOS
End If
'DEVOLUCION APARTADOS
If Not ErrorMovInv Then
If TipoMovimiento = 2 Then
If ObjInventario.VentasAlmacenApartadosGet(CveVentaSurtir) Then
@@ -2588,95 +2587,96 @@ Partial Class Inventarios_EntregaAlmacen
Dim CveAlmacenOrigen = If(CveAlmacenTraspasoDestino > 0, CveAlmacenTraspasoDestino, DdlAlmacen.SelectedValue.ToEntero())
Dim CveSeccionAlmacen As Integer = 0
Dim ValorTraspaso As Decimal = 0
For Each Dr As DataRow In DtTempApartados.Rows
If CveMovimientoSalidaApartado = -1 Or CveAlmacenApartado <> Dr("CveAlmacen").ToString().ToEntero() Then
CveMovimientoSalidaApartado = ObjInventario.AddMovimiento(CveAlmacenOrigen, 8, 1, TxtFecha.Text.ToDate, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, CveVentaSurtir, -1, -1,
Observaciones:=TxtObservaciones.Text.Trim, Guia:=TxtGuia.Text, CveContrato:=CveContrato, CveVendedor:=CveVendedor, CveCliente:=CveCliente,
CveAlmacenDestino:=Dr("CveAlmacen").ToString().ToEntero(), Modulo:="RE/G9")
FolioSalida = ObjInventario.Folio
CveAlmacenApartado = Dr("CveAlmacen").ToString().ToEntero()
Dim DrMovto = DtTraspasos.NewRow
DrMovto("Almacen") = Dr("Almacen").ToString().ToEntero()
DrMovto("CveAlmacen") = Dr("CveAlmacen").ToString().ToEntero()
DrMovto("CveMovimientoSalida") = CveMovimientoSalidaApartado
DrMovto("FolioSalida") = FolioSalida
DtTraspasos.Rows.Add(DrMovto)
End If
If Not CveMovimientoSalidaApartado > 0 Then
ErrorMovInv = True
TextoError.AppendFormat("Ocurrió un error al guardar los movimientos de control de apartados")
Exit For
End If
'If CBool(Dr("AplicaSeccion")) Then
' CveSeccionAlmacen = GlobalDTInvPSSeccionesAlmacen(UsuarioActual.CveEmpresa, CveAlmacenOrigen, Dr("CvePS").ToString().ToEntero()).FiltroPrimeroValor("CveSeccionAlmacen").ToEntero()
' Dim a As String = String.Format("CveAlmacen={0}-CvePS:{1}-CveseccionAlmacen={2}", CveAlmacenOrigen, Dr("CvePS"), CveSeccionAlmacen)
'Else
' CveSeccionAlmacen = -1
'End If
CveSeccionAlmacen = -3
If Not ObjInventario.AddMovimientoDetalle(CveMovimientoSalidaApartado, Dr("Cantidad").ToString().ToDecimal, Dr("CveUM").ToString().ToEntero(), Dr("CvePS").ToString().ToEntero(), Dr("PU").ToString().ToDecimal, CveAF:=Dr("CveAF").ToString().ToEntero(), Serie:=Dr("Serie").ToString(), CveVentaDetalle:=Dr("CveVentaDetalle").ToString().ToEntero(), Lote:=Dr("Lote").ToString(), CveSeccionAlmacen:=CveSeccionAlmacen) Then
ErrorMovInv = True
TextoError.AppendFormat("Ocurrió un error al guardar los movimientos de control de apartados")
Exit For
End If
Next
If Not ErrorMovInv Then
'SI TIENE APARTADOS DEBE GENERAR LOS TRASPASOS
If DtTempApartados.Rows.Count > 0 Then
Dim CvePrePolizaTraspaso As Integer = ObjConta.AddPrePolizas("EA/Apart", 53, 0, 0, 1, TxtFecha.Text.ToDate, "Traspaso Apartado", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa)
If CvePrePolizaTraspaso > 0 Then
For Each Dr As DataRow In DtTempApartados.Rows
If Not ObjConta.AddPrePolizasDetalle(CvePrePolizaTraspaso, True, ValorTraspaso, TxtObservaciones.Text, 68, TxtObservaciones.Text, TxtFecha.Text.ToDate, -1, -1, CveMovimientoAlmacen:=CveMovimientoSalidaApartado, Contabilizable:=False, ImporteMX:=ValorTraspaso) Then
ErrorMovInv = True
If CveMovimientoSalidaApartado = -1 Or CveAlmacenApartado <> Dr("CveAlmacen").ToString().ToEntero() Then
CveMovimientoSalidaApartado = ObjInventario.AddMovimiento(CveAlmacenOrigen, 8, 1, TxtFecha.Text.ToDate, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, CveVentaSurtir, -1, -1,
Observaciones:=TxtObservaciones.Text.Trim, Guia:=TxtGuia.Text, CveContrato:=CveContrato, CveVendedor:=CveVendedor, CveCliente:=CveCliente,
CveAlmacenDestino:=Dr("CveAlmacen").ToString().ToEntero(), Modulo:="RE/G9")
FolioSalida = ObjInventario.Folio
CveAlmacenApartado = Dr("CveAlmacen").ToString().ToEntero()
Dim DrMovto = DtTraspasos.NewRow
DrMovto("Almacen") = Dr("Almacen").ToString().ToEntero()
DrMovto("CveAlmacen") = Dr("CveAlmacen").ToString().ToEntero()
DrMovto("CveMovimientoSalida") = CveMovimientoSalidaApartado
DrMovto("FolioSalida") = FolioSalida
DtTraspasos.Rows.Add(DrMovto)
End If
For Each Dr1 As DataRow In DtTraspasos.Rows
CveMovimientoSalida = Dr1("CveMovimientoSalida").ToString().ToEntero()
If Not CveMovimientoSalidaApartado > 0 Then
ErrorMovInv = True
TextoError.AppendFormat("Ocurrió un error al guardar los movimientos de control de apartados")
Exit For
End If
CveSeccionAlmacen = -3
CveMovimientoEntradaApartado = ObjInventario.AddMovimiento(Dr1("CveAlmacen").ToString().ToEntero(), 9, 1, TxtFecha.Text.ToDate, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa,
-1, CveVentaSurtir, -1, -1, Observaciones:=TxtObservaciones.Text.Trim, CveAlmacenDestino:=DdlAlmacen.SelectedValue.ToEntero(),
CveMovimientoRelacionado:=CveMovimientoSalida, Guia:=TxtGuia.Text, CveContrato:=CveContrato, CveVendedor:=CveVendedor,
CveCliente:=CveCliente, Modulo:="RE/G10")
FolioEntrada = ObjInventario.Folio
If Not ObjInventario.AddMovimientoDetalle(CveMovimientoSalidaApartado, Dr("Cantidad").ToString().ToDecimal, Dr("CveUM").ToString().ToEntero(), Dr("CvePS").ToString().ToEntero(), Dr("PU").ToString().ToDecimal, CveAF:=Dr("CveAF").ToString().ToEntero(), Serie:=Dr("Serie").ToString(), CveVentaDetalle:=Dr("CveVentaDetalle").ToString().ToEntero(), Lote:=Dr("Lote").ToString(), CveSeccionAlmacen:=CveSeccionAlmacen) Then
ErrorMovInv = True
TextoError.AppendFormat("Ocurrió un error al guardar los movimientos de control de apartados")
Exit For
End If
Next
If Not CveMovimientoEntradaApartado > 0 Then
ErrorMovInv = True
TextoError.AppendFormat("Ocurrió un error al procesar los movimientos de traspaso de apartado. Por favor vuelva a intentar.")
Exit For
End If
If Not ErrorMovInv Then
Dr1("CveMovimientoEntrada") = CveMovimientoEntradaApartado
Dr1("FolioEntrada") = FolioEntrada
Dim CvePrePolizaTraspaso As Integer = ObjConta.AddPrePolizas("EA/Apart", 53, 0, 0, 1, TxtFecha.Text.ToDate, "Traspaso Apartado", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa)
If CvePrePolizaTraspaso > 0 Then
If ObjInventario.GetMovimientosDetalle(CveMovimientoSalida, UsuarioActual.CveEmpresa) Then
ValorTraspaso = ObjInventario.DtResultados.SUMD("Total").RoundSQL
For Each Dr As DataRow In ObjInventario.DtResultados.Rows
For Each Dr1 As DataRow In DtTraspasos.Rows
CveMovimientoSalida = Dr1("CveMovimientoSalida").ToString().ToEntero()
CveSeccionAlmacen = -3
CveMovimientoEntradaApartado = ObjInventario.AddMovimiento(Dr1("CveAlmacen").ToString().ToEntero(), 9, 1, TxtFecha.Text.ToDate, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa,
-1, CveVentaSurtir, -1, -1, Observaciones:=TxtObservaciones.Text.Trim, CveAlmacenDestino:=DdlAlmacen.SelectedValue.ToEntero(),
CveMovimientoRelacionado:=CveMovimientoSalida, Guia:=TxtGuia.Text, CveContrato:=CveContrato, CveVendedor:=CveVendedor,
CveCliente:=CveCliente, Modulo:="RE/G10")
FolioEntrada = ObjInventario.Folio
If Not ObjInventario.AddMovimientoDetalle(CveMovimientoEntradaApartado, Dr("Cantidad").ToString().ToDecimal, Dr("CveUM").ToString().ToEntero(), Dr("CvePS").ToString().ToEntero(), Dr("PU").ToString().ToDecimal, CveAF:=Dr("CveAF").ToString().ToEntero(), Serie:=Dr("Serie").ToString(), CveMovimientoDetalleEntrada:=Dr("CveMovimientoDetalle").ToString().ToEntero(), Lote:=Dr("Lote").ToString(), CveSeccionAlmacen:=CveSeccionAlmacen) Then
ErrorMovInv = True
TextoError.AppendFormat("Ocurrió un error al procesar los conceptos de traspaso de apartado. Por favor vuelva a intentar.")
Exit For
End If
Next
End If
If Not CveMovimientoEntradaApartado > 0 Then
ErrorMovInv = True
TextoError.AppendFormat("Ocurrió un error al procesar los movimientos de traspaso de apartado. Por favor vuelva a intentar.")
Exit For
End If
If ErrorMovInv Then Exit For
Dr1("CveMovimientoEntrada") = CveMovimientoEntradaApartado
Dr1("FolioEntrada") = FolioEntrada
If Not ErrorMovInv AndAlso Not ObjConta.AddPrePolizasDetalle(CvePrePolizaTraspaso, False, ValorTraspaso, TxtObservaciones.Text, 68, TxtObservaciones.Text, TxtFecha.Text.ToDate, -1, -1, CveMovimientoAlmacen:=CveMovimientoEntradaApartado, Contabilizable:=False, ImporteMX:=ValorTraspaso) Then
ErrorMovInv = True
End If
Next
If ObjInventario.GetMovimientosDetalle(CveMovimientoSalida, UsuarioActual.CveEmpresa) Then
ValorTraspaso = ObjInventario.DtResultados.SUMD("Total").RoundSQL
For Each Dr As DataRow In ObjInventario.DtResultados.Rows
CveSeccionAlmacen = -3
If Not ObjInventario.AddMovimientoDetalle(CveMovimientoEntradaApartado, Dr("Cantidad").ToString().ToDecimal, Dr("CveUM").ToString().ToEntero(), Dr("CvePS").ToString().ToEntero(), Dr("PU").ToString().ToDecimal, CveAF:=Dr("CveAF").ToString().ToEntero(), Serie:=Dr("Serie").ToString(), CveMovimientoDetalleEntrada:=Dr("CveMovimientoDetalle").ToString().ToEntero(), Lote:=Dr("Lote").ToString(), CveSeccionAlmacen:=CveSeccionAlmacen) Then
ErrorMovInv = True
TextoError.AppendFormat("Ocurrió un error al procesar los conceptos de traspaso de apartado. Por favor vuelva a intentar.")
Exit For
End If
Next
End If
If ErrorMovInv Then Exit For
Else
ErrorMovInv = True
If Not ObjConta.AddPrePolizasDetalle(CvePrePolizaTraspaso, True, ValorTraspaso, TxtObservaciones.Text, 68, TxtObservaciones.Text, TxtFecha.Text.ToDate, -1, -1, CveMovimientoAlmacen:=CveMovimientoSalida, Contabilizable:=False, ImporteMX:=ValorTraspaso) Then
ErrorMovInv = True
End If
If Not ErrorMovInv AndAlso Not ObjConta.AddPrePolizasDetalle(CvePrePolizaTraspaso, False, ValorTraspaso, TxtObservaciones.Text, 68, TxtObservaciones.Text, TxtFecha.Text.ToDate, -1, -1, CveMovimientoAlmacen:=CveMovimientoEntradaApartado, Contabilizable:=False, ImporteMX:=ValorTraspaso) Then
ErrorMovInv = True
End If
Next
Else
ErrorMovInv = True
End If
End If
End If
End If
@@ -3260,10 +3260,10 @@ Partial Class Inventarios_EntregaAlmacen
'sino es transitorio, los transitorios, ya no se hace otro movimiento
ConceptoMovimiento = If(ChkTransitorio.Checked, 2, 27)
Almacen2 = If(ChkTransitorio.Checked, DdlAlmacenTransitorio.SelectedValue.ToEntero(), CveAlmacenTraspasoDestino)
CveMovimientoEntrada = ObjInventario.AddMovimiento(Almacen2, ConceptoMovimiento, 1, TxtFecha.Text.ToDate, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, -1, -1, -1, Observaciones:=TxtObservaciones.Text.Trim,
Guia:="", CveContrato:=CveContrato, CveMovimientoRelacionado:=CveMovimientoSalida, CveAlmacenDestino:=CveAlmacenTraspasoDestino,
Recibio:=If(ChkTransitorio.Checked, TxtResponsable.Text.Trim, ""), Modulo:="RE/GT1", CveOP:=CveOP)
Almacen2 = If(ChkTransitorio.Checked, DdlAlmacenTransitorio.SelectedValue.ToEntero(), CveAlmacenTraspasoDestino)
CveMovimientoEntrada = ObjInventario.AddMovimiento(Almacen2, ConceptoMovimiento, 1, TxtFecha.Text.ToDate, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, -1, -1, -1, Observaciones:=TxtObservaciones.Text.Trim,
Guia:="", CveContrato:=CveContrato, CveMovimientoRelacionado:=CveMovimientoSalida, CveAlmacenDestino:=CveAlmacenTraspasoDestino,
Recibio:=If(ChkTransitorio.Checked, TxtResponsable.Text.Trim, ""), Modulo:="RE/GT1", CveOP:=CveOP)
FolioEntrada = ObjInventario.Folio
If CveMovimientoEntrada > 0 Then
If ObjInventario.GetMovimientosDetalle(CveMovimientoSalida, UsuarioActual.CveEmpresa) Then

View File

@@ -1582,9 +1582,15 @@ Partial Class Sistemas_UsuarioDetalle
GvSubProyectos.Columns(0).Visible = False
End Sub
Protected Sub CboProyecto_SelectedIndexChanged(sender As Object, e As EventArgs) Handles DdlProyecto.SelectedIndexChanged
CargaSubProyectos(DdlProyecto.SelectedValue.ToEntero)
CargaSubProyectos(DdlProyecto.SelectedValue.ToEntero, DdlEmpresaAsignaciones.SelectedValue.ToEntero())
End Sub
Private Sub CargaSubProyectos(Optional CveProyectoFiltrado As Integer = -1)
Private Sub CargaSubProyectos(Optional CveProyectoFiltrado As Integer = -1, Optional CveEmpresaFiltro As Integer = -1)
Dim CveEmpresaRef As Integer = UsuarioActual.CveEmpresa
If CveEmpresaFiltro > 0 Then
CveEmpresaRef = CveEmpresaFiltro
End If
DdlSubProyecto.Items.Clear()
If CveProyectoFiltrado > 0 Then
Dim SubProyectosSinGV As String = GetSubProyectosSinGV()
@@ -1609,7 +1615,7 @@ Partial Class Sistemas_UsuarioDetalle
Else
'DdlSubProyecto.DataSource = GlobalDTSubProyectos(If(CveProyectoFiltrado > 0, CveProyectoFiltrado, DdlProyecto.SelectedValue.ToEntero)).FiltraParametros(If(SubProyectosSinGV.Length > 0, SubProyectosSinGV, ""))
DdlSubProyecto.DataSource = GlobalDTSubProyectos(If(CveProyectoFiltrado > 0, CveProyectoFiltrado, DdlProyecto.SelectedValue.ToEntero), CveEmpresa:=UsuarioActual.CveEmpresa).FiltraParametros(If(SubProyectosSinGV.Length > 0, SubProyectosSinGV, ""))
DdlSubProyecto.DataSource = GlobalDTSubProyectos(If(CveProyectoFiltrado > 0, CveProyectoFiltrado, DdlProyecto.SelectedValue.ToEntero), CveEmpresa:=CveEmpresaRef).FiltraParametros(If(SubProyectosSinGV.Length > 0, SubProyectosSinGV, ""))
'NO SE PARA QUE SE USA - COMENTADO IPP 30 AGOSTO 2017
'If SubProyectosSinGV.Length > 0 Then
' Dim SubProyectoFiltrado As DataTable = GlobalDTSubProyectos(DdlProyecto.SelectedValue.ToEntero).FiltraParametros(SubProyectosSinGV)

View File

@@ -176,7 +176,7 @@ public partial class Ventas_RepCancelacionesPorRespuesta : ClsPaginas
}
sb.AppendFormat("Folio Fiscal: {0} <br/>", uuid);
sb.AppendFormat("Codigo Estado: {0} <br/>", resp.CodigoEstatus);
sb.AppendFormat("Código Estado: {0} <br/>", resp.CodigoEstatus);
sb.AppendFormat("Estado: {0} <br/>", resp.Estado);
sb.AppendFormat("Es Cancelable: {0} <br/>", string.IsNullOrEmpty(resp.EsCancelable) ? "Desconocido" : resp.EsCancelable);
sb.AppendFormat("Estatus de Cancelación: {0} <br/><br/>", string.IsNullOrEmpty(resp.EsCancelable) ? "Desconocido" : resp.EstatusCancelacion);
@@ -225,6 +225,16 @@ public partial class Ventas_RepCancelacionesPorRespuesta : ClsPaginas
{
retorno.EnviarAcuse = true;
CveEstatus = respCancelacion.CveEstatus;
var ObjVentas = new ClsVentas();
if (ObjVentas.UpdateEstatusVenta(CveVenta, CveEstatus, UsuarioActual.CveEmpresa))
{
sb.Append("El estatus de la factura fue cambiado a 'Cancelada'.");
}
else
{
sb.Append("Ocurrió un error al cambiar el estatus de la factura.");
}
ObjVentas.Dispose();
sb.Append("El documento se canceló correctamente.");
sb.Append($"</br> <a href='/Compras/PopUpVerFactura.aspx?P={Encripta($"OP=CAN&CVEVTA={CveVenta}")}' class='Texto' target='_blank'>Imprimir Acuse</a>");
if (!EsRefacturacion)
@@ -254,6 +264,21 @@ public partial class Ventas_RepCancelacionesPorRespuesta : ClsPaginas
}
ObjVentas.Dispose();
}
else if (resp.Estado.ToUpper().Trim() == "VIGENTE" && string.IsNullOrEmpty(resp.EstatusCancelacion))
{
//ASIGNAMOS ESTATUS EMITIDA
CveEstatus = 3;
var ObjVentas = new ClsVentas();
if (ObjVentas.UpdateEstatusVenta(CveVenta, CveEstatus, UsuarioActual.CveEmpresa))
{
sb.Append("El estatus de la factura fue cambiado a 'Emitida'.");
}
else
{
sb.Append("Ocurrió un error al cambiar el estatus de la factura.");
}
ObjVentas.Dispose();
}
}
}
else

View File

@@ -67,6 +67,9 @@
<li>
<asp:LinkButton ID="ImgExcel" runat="server"> <i class="fa fa-file-excel-o" style="font-weight:bold;"></i> Excel</asp:LinkButton>
</li>
<li>
<asp:LinkButton ID="LnkRepDiario" runat="server" Visible="false" OnClick="LnkRepDiario_Click"> <i class="fa fa-file-o" style="font-weight:bold;"></i> Reporte Diario</asp:LinkButton>
</li>
</asp:Content>
<asp:Content ID="Content5" ContentPlaceHolderID="H" runat="Server">
</asp:Content>
@@ -134,33 +137,32 @@
</div>
</div>
</div>
<div class="portlet-body" style="display: none">
<div class="row">
<label class="col-md-1 truncate">Productos Servicios:</label>
<div class="col-md-2">
<ADS:Dropdownlost runat="server" ID="DdlPS" CssStyle="width:55%;" CssClass="DdlPS" CssClassDdl="select2me " DataTextField="PSCodigo" DataValueField="CvePS" />
</div>
<label class="col-md-1 truncate">Clasificación:</label>
<div class="col-md-2">
<asp:ListBox ID="DdlClasificacion" AutoPostBack="true" Class="table-group-action-input form-control input-inline input-small input-sm select2me" runat="server" AppendDataBoundItems="true" DataTextField="Clasificacion" DataValueField="CveClasificacion" Style="width: 100%" data-text="Todos" SelectionMode="Multiple">
</asp:ListBox>
</div>
<label runat="server" id="LblLinea" data-placement="top" class="col-md-1" visible="false">Linea:</label>
<div runat="server" id="DivLinea" class="col-md-2" visible="false">
<asp:ListBox ID="DdlLinea" CssClass="select2me" runat="server" DataTextField="ClasificacionDetalle" DataValueField="CveClasificacionDetalle" Style="width: 100%" data-text="Todos" SelectionMode="Multiple"></asp:ListBox>
</div>
<label runat="server" id="LblMarca" title="Proveedor" data-toggle="tooltip" data-placement="top" class="col-md-1" visible="false">Marca:</label>
<div runat="server" id="DivMarca" class="col-md-2" visible="false">
<asp:ListBox ID="DdlMarcaPSDes" CssClass="select2me" runat="server" DataTextField="Marca" DataValueField="CveMarca" Style="width: 100%" data-text="Todos" SelectionMode="Multiple"></asp:ListBox>
</div>
</div>
<asp:Panel ID="pnlOrden" Visible="false" runat="server" CssClass="row">
<label class="col-md-1 truncate">Productos Servicios:</label>
<div class="col-md-2">
<ADS:Dropdownlost runat="server" ID="DdlPS" CssStyle="width:55%;" CssClass="DdlPS" CssClassDdl="select2me " DataTextField="PSCodigo" DataValueField="CvePS" />
</div>
<label class="col-md-1 truncate">Clasificación:</label>
<div class="col-md-2">
<asp:ListBox ID="DdlClasificacion" AutoPostBack="true" Class="table-group-action-input form-control input-inline input-small input-sm select2me" runat="server" AppendDataBoundItems="true" DataTextField="Clasificacion" DataValueField="CveClasificacion" Style="width: 100%" data-text="Todos" SelectionMode="Multiple"></asp:ListBox>
</div>
<label runat="server" id="LblLinea" data-placement="top" class="col-md-1" visible="false">Linea:</label>
<div runat="server" id="DivLinea" class="col-md-2" visible="false">
<asp:ListBox ID="DdlLinea" CssClass="select2me" runat="server" DataTextField="ClasificacionDetalle" DataValueField="CveClasificacionDetalle" Style="width: 100%" data-text="Todos" SelectionMode="Multiple"></asp:ListBox>
</div>
<label runat="server" id="LblMarca" title="Proveedor" data-toggle="tooltip" data-placement="top" class="col-md-1" visible="false">Marca:</label>
<div runat="server" id="DivMarca" class="col-md-2" visible="false">
<asp:ListBox ID="DdlMarcaPSDes" CssClass="select2me" runat="server" DataTextField="Marca" DataValueField="CveMarca" Style="width: 100%" data-text="Todos" SelectionMode="Multiple"></asp:ListBox>
</div>
</div>
<asp:Panel ID="pnlOrden" Visible="false" runat="server" CssClass="row">
<label class="col-md-1 truncate">Orden:</label>
<div class="col-md-2">
<asp:DropDownList ID="DdlOrden" runat="server" CssClass="select2me" Width="100%">
@@ -180,7 +182,7 @@
</div>
</div>
</div>--%>
</asp:Panel>
</asp:Panel>
</div>
</div>
</ContentTemplate>
@@ -190,14 +192,13 @@
<asp:GridView ID="GvDatos" runat="server" AutoGenerateColumns="False" EmptyDataText="No se encontraron productos con los filtros especificados" ToolTip="Listado de Ventas"
CssClass="table table-striped table-advance table-hover Widthall ScrollAD" data-sort="true" Style="text-align: center;" GridLines="None" Width="99%">
<Columns>
<asp:TemplateField HeaderText="Grupo" ItemStyle-HorizontalAlign="Left">
<asp:TemplateField HeaderText="Grupo" ItemStyle-HorizontalAlign="Left">
<ItemTemplate>
<asp:Literal ID="LtlGrupo" runat="server" Text='<%# Eval("GPO") %>'></asp:Literal>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField ItemStyle-HorizontalAlign="Left">
<HeaderTemplate >
<asp:TemplateField ItemStyle-HorizontalAlign="Left">
<HeaderTemplate>
</HeaderTemplate>
<ItemTemplate>
<asp:Literal ID="LtlGrupoPS" runat="server" Text='<%# Eval("PS") %>'></asp:Literal>

View File

@@ -4,10 +4,12 @@ Option Strict On
Imports Extensiones
Imports System.Data
Imports Microsoft.Reporting.WebForms
Imports GemBox.Spreadsheet
Imports System.Globalization
Partial Class Ventas_RepPS
Inherits ClsPaginas
Inherits ClsPaginas
#Region "P R O P I E D A D E S"
Private Property DtReporte As DataTable
Get
@@ -16,9 +18,9 @@ Partial Class Ventas_RepPS
Set(value As DataTable)
ViewState("DtReporte") = value
End Set
End Property
End Property
#End Region
Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load
If Not IsPostBack Then
pnlOrden.Visible = False
@@ -34,6 +36,10 @@ Partial Class Ventas_RepPS
'DdlMarca.Items.Insert(0, New ListItem("Todos", "-1"))
End If
If UsuarioActual.TienePermisoProceso(320) Then
LnkRepDiario.Visible = True
End If
CargaDatosIniciales()
CargaCombos()
@@ -179,9 +185,9 @@ Partial Class Ventas_RepPS
End Sub
Protected Sub BtnConsultar_Click(sender As Object, e As EventArgs)
CargaDatos()
End Sub
End Sub
#Region " IMPRIMIR "
Protected Sub LnkPdf_Click(sender As Object, e As EventArgs) Handles LnkPdf.Click
If GvDatos.Rows.Count > 0 Then
@@ -227,8 +233,404 @@ Partial Class Ventas_RepPS
Alert("No hay información para mostrar.", TipoMensaje.MsgAdvertencia)
End If
End Sub
End Sub
#End Region
Protected Sub LnkRepDiario_Click(sender As Object, e As EventArgs)
Dim CveMoneda As Integer = -1
Dim TC As Integer = 1
Dim TCEspecifico As Decimal = -1
Dim DataSet As DataSet = New DataSet
Dim ObjVentas As New ClsVentas()
If ObjVentas.GetRepPSDiario(-1, -1, Now, UsuarioActual.CveEmpresa, CveUsuarioConsulta:=UsuarioActual.CveUsuario, GPO:=-1, CveMoneda:=CveMoneda, TipoCambio:=TC, TCEspecifico:=TCEspecifico) Then
DataSet = ObjVentas.DataSetResultados.Copy()
End If
ObjVentas.Dispose()
If DataSet IsNot Nothing Then
SpreadsheetInfo.SetLicense(ModExtensiones.SerialGemBoxSpreadsheet)
Dim FileExcel As New ExcelFile()
Dim worksheetName As String = $"{ToShortMonthName(Now).ToUpper()}{Now.Day}"
Const invalidCharsRegex As String = "[/\\*'?[\]:]+"
Const maxLength As Integer = 31
Dim safeName As String = Regex.Replace(worksheetName, invalidCharsRegex, " ").Replace(" ", " ").Trim()
If String.IsNullOrEmpty(safeName) Then
safeName = "RepPSDiario" ' cannot be empty
ElseIf safeName.Length > maxLength Then
safeName = safeName.Substring(0, maxLength)
End If
Dim worksheet = FileExcel.Worksheets.Add(safeName)
Dim CellRangeTitulo = worksheet.Cells.GetSubrangeAbsolute(0, 0, 0, 12)
CellRangeTitulo.Merged = True
CellRangeTitulo.Value = $"{UsuarioActual.Empresa.Empresa}. VENTA DEL DIA {Now.Day} DE {ToMonthName(Now).ToUpper()} DEL {Now.Year}."
CellRangeTitulo.Style.VerticalAlignment = VerticalAlignmentStyle.Center
CellRangeTitulo.Style.HorizontalAlignment = HorizontalAlignmentStyle.Center
#Region "V E N T A S - L L A N T A S, R I N E S, A L I N E A C I O N E S"
worksheet.Cells(2, 0).Value = "Sucursal"
'TITULO DE LLANTAS
worksheet.Cells.GetSubrangeAbsolute(1, 1, 1, 3).Merged = True
worksheet.Cells(1, 3).Value = "LLANTAS"
worksheet.Cells(2, 1).Value = "Ant"
worksheet.Cells(2, 2).Value = "Dia"
worksheet.Cells(2, 3).Value = "Acum"
'TITULO DE RINES
worksheet.Cells.GetSubrangeAbsolute(1, 4, 1, 6).Merged = True
worksheet.Cells(1, 6).Value = "RINES"
worksheet.Cells(2, 4).Value = "Ant"
worksheet.Cells(2, 5).Value = "Dia"
worksheet.Cells(2, 6).Value = "Acum"
'TITULO DE ALINEACIONES
worksheet.Cells.GetSubrangeAbsolute(1, 7, 1, 9).Merged = True
worksheet.Cells(1, 9).Value = "ALINEACIONES"
worksheet.Cells(2, 7).Value = "Ant"
worksheet.Cells(2, 8).Value = "Dia"
worksheet.Cells(2, 9).Value = "Acum"
'TITULO DE VENTAS DEL DIA
worksheet.Cells.GetSubrangeAbsolute(1, 10, 1, 12).Merged = True
worksheet.Cells(1, 12).Value = "VENTA EN PESOS"
worksheet.Cells(2, 10).Value = "Ant"
worksheet.Cells(2, 11).Value = "Dia"
worksheet.Cells(2, 12).Value = "Acum"
Dim StyleTitleTable1 = worksheet.Cells.GetSubrangeAbsolute(1, 1, 1, 12).Style
StyleTitleTable1.Font.Weight = ExcelFont.BoldWeight
StyleTitleTable1.Font.Name = "Calibri"
StyleTitleTable1.Font.Size = 8 * 20
StyleTitleTable1.Borders.SetBorders(MultipleBorders.All, SpreadsheetColor.FromName(ColorName.Black), LineStyle.Thin)
StyleTitleTable1.VerticalAlignment = VerticalAlignmentStyle.Center
StyleTitleTable1.HorizontalAlignment = HorizontalAlignmentStyle.Center
Dim StyleSubTitleTable1 = worksheet.Cells.GetSubrangeAbsolute(2, 0, 2, 12).Style
StyleSubTitleTable1.Font.Weight = ExcelFont.BoldWeight
StyleSubTitleTable1.Font.Name = "Calibri"
StyleSubTitleTable1.Font.Size = 8 * 20
StyleSubTitleTable1.Borders.SetBorders(MultipleBorders.All, SpreadsheetColor.FromName(ColorName.Black), LineStyle.Thin)
StyleSubTitleTable1.VerticalAlignment = VerticalAlignmentStyle.Center
StyleSubTitleTable1.HorizontalAlignment = HorizontalAlignmentStyle.Center
Dim DtSucursalesLLantasAlin As DataTable = DataSet.Tables(0)
'INICIA DESDE LA CUARTA FILA
Dim IdxSucursalesLlantasAlin As Integer = 3
For Each Row As DataRow In DtSucursalesLLantasAlin.Rows
worksheet.Cells(IdxSucursalesLlantasAlin, 0).Value = Row("SubProyecto")
worksheet.Cells(IdxSucursalesLlantasAlin, 1).Value = Row("LlantasCantidadAnterior")
worksheet.Cells(IdxSucursalesLlantasAlin, 2).Value = Row("LlantasCantidadDia")
'worksheet.Cells(IdxSucursalesLlantasAlin, 3).Value = Row("LlantasCantidadAcumulada")
worksheet.Cells(IdxSucursalesLlantasAlin, 3).Formula = $"=SUM({worksheet.Cells(IdxSucursalesLlantasAlin, 1).Name}:{worksheet.Cells(IdxSucursalesLlantasAlin, 2).Name})"
worksheet.Cells(IdxSucursalesLlantasAlin, 4).Value = Row("RinCantidadAnterior")
worksheet.Cells(IdxSucursalesLlantasAlin, 5).Value = Row("RinCantidadDia")
'worksheet.Cells(IdxSucursalesLlantasAlin, 6).Value = Row("RinCantidadAcumulada")
worksheet.Cells(IdxSucursalesLlantasAlin, 6).Formula = $"=SUM({worksheet.Cells(IdxSucursalesLlantasAlin, 4).Name}:{worksheet.Cells(IdxSucursalesLlantasAlin, 5).Name})"
worksheet.Cells(IdxSucursalesLlantasAlin, 7).Value = Row("AlinCantidadAnterior")
worksheet.Cells(IdxSucursalesLlantasAlin, 8).Value = Row("AlinCantidadDia")
'worksheet.Cells(IdxSucursalesLlantasAlin, 9).Value = Row("AlinCantidadAcumulada")
worksheet.Cells(IdxSucursalesLlantasAlin, 9).Formula = $"=SUM({worksheet.Cells(IdxSucursalesLlantasAlin, 7).Name}:{worksheet.Cells(IdxSucursalesLlantasAlin, 8).Name})"
worksheet.Cells(IdxSucursalesLlantasAlin, 10).Value = Row("VentaAnterior")
worksheet.Cells(IdxSucursalesLlantasAlin, 11).Value = Row("VentaDia")
'worksheet.Cells(IdxSucursalesLlantasAlin, 12).Value = Row("VentaAcumulada")
worksheet.Cells(IdxSucursalesLlantasAlin, 12).Formula = $"=SUM({worksheet.Cells(IdxSucursalesLlantasAlin, 10).Name}:{worksheet.Cells(IdxSucursalesLlantasAlin, 11).Name})"
Dim StyleData = worksheet.Cells.GetSubrangeAbsolute(IdxSucursalesLlantasAlin, 0, IdxSucursalesLlantasAlin, 12).Style
StyleData.Font.Weight = ExcelFont.BoldWeight
StyleData.Font.Name = "Calibri"
StyleData.Font.Size = 8 * 20
StyleData.VerticalAlignment = VerticalAlignmentStyle.Center
StyleData.HorizontalAlignment = HorizontalAlignmentStyle.Center
StyleData.Borders.SetBorders(MultipleBorders.All, SpreadsheetColor.FromName(ColorName.Black), LineStyle.Thin)
StyleData.NumberFormat = "_-* #,##0.00_-;-* #,##0.00_-;_-* ""-""??_-;_-@_-"
'LAS VENTAS DEL DIA NO DEBEN ESTAR EN NEGRITAS
worksheet.Cells(IdxSucursalesLlantasAlin, 0).Style.Font.Weight = ExcelFont.NormalWeight
worksheet.Cells(IdxSucursalesLlantasAlin, 0).Style.HorizontalAlignment = HorizontalAlignmentStyle.Left
worksheet.Cells(IdxSucursalesLlantasAlin, 2).Style.Font.Weight = ExcelFont.NormalWeight
worksheet.Cells(IdxSucursalesLlantasAlin, 5).Style.Font.Weight = ExcelFont.NormalWeight
worksheet.Cells(IdxSucursalesLlantasAlin, 8).Style.Font.Weight = ExcelFont.NormalWeight
worksheet.Cells(IdxSucursalesLlantasAlin, 11).Style.Font.Weight = ExcelFont.NormalWeight
IdxSucursalesLlantasAlin += 1
Next
'LA FILA DE LOS TOTALES DEBE ESTAR EN NEGITAS
worksheet.Cells.GetSubrangeAbsolute(IdxSucursalesLlantasAlin - 1, 0, IdxSucursalesLlantasAlin - 1, 12).Style.Font.Weight = ExcelFont.BoldWeight
DtSucursalesLLantasAlin.Dispose()
#End Region
#Region "V E N T A S - S E R V I C I O S D E I N S T A L A C I O N, A M O R T I G U A D O R E S, P O L I Z A S"
Dim IdxRefSucursalesServiciosAmortPolizas As Integer = IdxSucursalesLlantasAlin + 3
worksheet.Cells(IdxRefSucursalesServiciosAmortPolizas, 0).Value = "Sucursal"
'TITULO SERVICIOS DE INSTALACION
worksheet.Cells.GetSubrangeAbsolute(IdxRefSucursalesServiciosAmortPolizas - 1, 1, IdxRefSucursalesServiciosAmortPolizas - 1, 3).Merged = True
worksheet.Cells(IdxRefSucursalesServiciosAmortPolizas - 1, 3).Value = "SERVICIOS DE INSTALACION"
worksheet.Cells(IdxRefSucursalesServiciosAmortPolizas, 1).Value = "Ant"
worksheet.Cells(IdxRefSucursalesServiciosAmortPolizas, 2).Value = "Dia"
worksheet.Cells(IdxRefSucursalesServiciosAmortPolizas, 3).Value = "Acum"
'TITULO AMORTIGUADORES
worksheet.Cells.GetSubrangeAbsolute(IdxRefSucursalesServiciosAmortPolizas - 1, 4, IdxRefSucursalesServiciosAmortPolizas - 1, 6).Merged = True
worksheet.Cells(IdxRefSucursalesServiciosAmortPolizas - 1, 6).Value = "AMORTIGUADORES"
worksheet.Cells(IdxRefSucursalesServiciosAmortPolizas, 4).Value = "Ant"
worksheet.Cells(IdxRefSucursalesServiciosAmortPolizas, 5).Value = "Dia"
worksheet.Cells(IdxRefSucursalesServiciosAmortPolizas, 6).Value = "Acum"
'TITULO DE POLIZAS
worksheet.Cells.GetSubrangeAbsolute(IdxRefSucursalesServiciosAmortPolizas - 1, 7, IdxRefSucursalesServiciosAmortPolizas - 1, 9).Merged = True
worksheet.Cells(IdxRefSucursalesServiciosAmortPolizas - 1, 9).Value = "POLIZAS"
worksheet.Cells(IdxRefSucursalesServiciosAmortPolizas, 7).Value = "Ant"
worksheet.Cells(IdxRefSucursalesServiciosAmortPolizas, 8).Value = "Dia"
worksheet.Cells(IdxRefSucursalesServiciosAmortPolizas, 9).Value = "Acum"
'TITULO DE VENTAS DEL DIA
worksheet.Cells.GetSubrangeAbsolute(IdxRefSucursalesServiciosAmortPolizas - 1, 10, IdxRefSucursalesServiciosAmortPolizas - 1, 12).Merged = True
worksheet.Cells(IdxRefSucursalesServiciosAmortPolizas - 1, 12).Value = "MANO DE OBRA PESOS"
worksheet.Cells(IdxRefSucursalesServiciosAmortPolizas, 10).Value = "Ant"
worksheet.Cells(IdxRefSucursalesServiciosAmortPolizas, 11).Value = "Dia"
worksheet.Cells(IdxRefSucursalesServiciosAmortPolizas, 12).Value = "Acum"
Dim StyleTitleTable2 = worksheet.Cells.GetSubrangeAbsolute(IdxRefSucursalesServiciosAmortPolizas - 1, 1, IdxRefSucursalesServiciosAmortPolizas - 1, 12).Style
StyleTitleTable2.Font.Weight = ExcelFont.BoldWeight
StyleTitleTable2.Font.Name = "Calibri"
StyleTitleTable2.Font.Size = 8 * 20
StyleTitleTable2.Borders.SetBorders(MultipleBorders.All, SpreadsheetColor.FromName(ColorName.Black), LineStyle.Thin)
StyleTitleTable2.VerticalAlignment = VerticalAlignmentStyle.Center
StyleTitleTable2.HorizontalAlignment = HorizontalAlignmentStyle.Center
Dim StyleSubTitleTable2 = worksheet.Cells.GetSubrangeAbsolute(IdxRefSucursalesServiciosAmortPolizas, 0, IdxRefSucursalesServiciosAmortPolizas, 12).Style
StyleSubTitleTable2.Font.Weight = ExcelFont.BoldWeight
StyleSubTitleTable2.Font.Name = "Calibri"
StyleSubTitleTable2.Font.Size = 8 * 20
StyleSubTitleTable2.Borders.SetBorders(MultipleBorders.All, SpreadsheetColor.FromName(ColorName.Black), LineStyle.Thin)
StyleSubTitleTable2.VerticalAlignment = VerticalAlignmentStyle.Center
StyleSubTitleTable2.HorizontalAlignment = HorizontalAlignmentStyle.Center
Dim DtSucursalesServiciosAmortPolizas As DataTable = DataSet.Tables(1)
'INICIA DESDE LA CUARTA FILA
Dim IdxSucursalesServiciosAmortPolizas As Integer = IdxRefSucursalesServiciosAmortPolizas + 1
For Each Row As DataRow In DtSucursalesServiciosAmortPolizas.Rows
worksheet.Cells(IdxSucursalesServiciosAmortPolizas, 0).Value = Row("SubProyecto")
worksheet.Cells(IdxSucursalesServiciosAmortPolizas, 1).Value = Row("ServiciosCantidadAnterior")
worksheet.Cells(IdxSucursalesServiciosAmortPolizas, 2).Value = Row("ServiciosCantidadDia")
'worksheet.Cells(IdxSucursalesServiciosAmortPolizas, 3).Value = Row("ServiciosCantidadAcumulada")
worksheet.Cells(IdxSucursalesServiciosAmortPolizas, 3).Formula = $"=SUM({worksheet.Cells(IdxSucursalesServiciosAmortPolizas, 1).Name}:{worksheet.Cells(IdxSucursalesServiciosAmortPolizas, 2).Name})"
worksheet.Cells(IdxSucursalesServiciosAmortPolizas, 4).Value = Row("AmortCantidadAnterior")
worksheet.Cells(IdxSucursalesServiciosAmortPolizas, 5).Value = Row("AmortCantidadDia")
'worksheet.Cells(IdxSucursalesServiciosAmortPolizas, 6).Value = Row("AmortCantidadAcumulada")
worksheet.Cells(IdxSucursalesServiciosAmortPolizas, 6).Formula = $"=SUM({worksheet.Cells(IdxSucursalesServiciosAmortPolizas, 4).Name}:{worksheet.Cells(IdxSucursalesServiciosAmortPolizas, 5).Name})"
worksheet.Cells(IdxSucursalesServiciosAmortPolizas, 7).Value = Row("PolizasCantidadAnterior")
worksheet.Cells(IdxSucursalesServiciosAmortPolizas, 8).Value = Row("PolizasCantidadDia")
'worksheet.Cells(IdxSucursalesServiciosAmortPolizas, 9).Value = Row("PolizasCantidadAcumulada")
worksheet.Cells(IdxSucursalesServiciosAmortPolizas, 9).Formula = $"=SUM({worksheet.Cells(IdxSucursalesServiciosAmortPolizas, 7).Name}:{worksheet.Cells(IdxSucursalesServiciosAmortPolizas, 8).Name})"
worksheet.Cells(IdxSucursalesServiciosAmortPolizas, 10).Value = Row("VentaAnterior")
worksheet.Cells(IdxSucursalesServiciosAmortPolizas, 11).Value = Row("VentaDia")
'worksheet.Cells(IdxSucursalesServiciosAmortPolizas, 12).Value = Row("VentaAcumulada")
worksheet.Cells(IdxSucursalesServiciosAmortPolizas, 12).Formula = $"=SUM({worksheet.Cells(IdxSucursalesServiciosAmortPolizas, 10).Name}:{worksheet.Cells(IdxSucursalesServiciosAmortPolizas, 11).Name})"
Dim StyleData = worksheet.Cells.GetSubrangeAbsolute(IdxSucursalesServiciosAmortPolizas, 0, IdxSucursalesServiciosAmortPolizas, 12).Style
StyleData.Font.Weight = ExcelFont.BoldWeight
StyleData.Font.Name = "Calibri"
StyleData.Font.Size = 8 * 20
StyleData.VerticalAlignment = VerticalAlignmentStyle.Center
StyleData.HorizontalAlignment = HorizontalAlignmentStyle.Center
StyleData.Borders.SetBorders(MultipleBorders.All, SpreadsheetColor.FromName(ColorName.Black), LineStyle.Thin)
StyleData.NumberFormat = "_-* #,##0.00_-;-* #,##0.00_-;_-* ""-""??_-;_-@_-"
'LAS VENTAS DEL DIA NO DEBEN ESTAR EN NEGRITAS
worksheet.Cells(IdxSucursalesServiciosAmortPolizas, 0).Style.Font.Weight = ExcelFont.NormalWeight
worksheet.Cells(IdxSucursalesServiciosAmortPolizas, 0).Style.HorizontalAlignment = HorizontalAlignmentStyle.Left
worksheet.Cells(IdxSucursalesServiciosAmortPolizas, 2).Style.Font.Weight = ExcelFont.NormalWeight
worksheet.Cells(IdxSucursalesServiciosAmortPolizas, 5).Style.Font.Weight = ExcelFont.NormalWeight
worksheet.Cells(IdxSucursalesServiciosAmortPolizas, 8).Style.Font.Weight = ExcelFont.NormalWeight
worksheet.Cells(IdxSucursalesServiciosAmortPolizas, 11).Style.Font.Weight = ExcelFont.NormalWeight
IdxSucursalesServiciosAmortPolizas += 1
Next
'LA FILA DE LOS TOTALES DEBE ESTAR EN NEGITAS
worksheet.Cells.GetSubrangeAbsolute(IdxSucursalesServiciosAmortPolizas - 1, 0, IdxSucursalesServiciosAmortPolizas - 1, 12).Style.Font.Weight = ExcelFont.BoldWeight
DtSucursalesServiciosAmortPolizas.Dispose()
#End Region
#Region "P O R C E N T A J E S"
Dim IdxRefPorcentajes As Integer = IdxSucursalesServiciosAmortPolizas + 3
worksheet.Cells(IdxRefPorcentajes, 0).Value = "Sucursal"
'TITULO SERVICIOS
worksheet.Cells.GetSubrangeAbsolute(IdxRefPorcentajes - 1, 1, IdxRefPorcentajes - 1, 2).Merged = True
worksheet.Cells(IdxRefPorcentajes - 1, 2).Value = "INSTALACION"
worksheet.Cells(IdxRefPorcentajes, 1).Value = "Cant"
worksheet.Cells(IdxRefPorcentajes, 2).Value = "%"
'TITULO POLIZAS
worksheet.Cells.GetSubrangeAbsolute(IdxRefPorcentajes - 1, 3, IdxRefPorcentajes - 1, 4).Merged = True
worksheet.Cells(IdxRefPorcentajes - 1, 4).Value = "POLIZAS"
worksheet.Cells(IdxRefPorcentajes, 3).Value = "Cant"
worksheet.Cells(IdxRefPorcentajes, 4).Value = "%"
'TITULO DE ALINEACIONES
worksheet.Cells.GetSubrangeAbsolute(IdxRefPorcentajes - 1, 5, IdxRefPorcentajes - 1, 6).Merged = True
worksheet.Cells(IdxRefPorcentajes - 1, 6).Value = "ALINEACIONES"
worksheet.Cells(IdxRefPorcentajes, 5).Value = "Cant"
worksheet.Cells(IdxRefPorcentajes, 6).Value = "%"
Dim StyleTitleTable3 = worksheet.Cells.GetSubrangeAbsolute(IdxRefPorcentajes - 1, 1, IdxRefPorcentajes - 1, 6).Style
StyleTitleTable3.Font.Weight = ExcelFont.BoldWeight
StyleTitleTable3.Font.Name = "Calibri"
StyleTitleTable3.Font.Size = 8 * 20
StyleTitleTable3.Borders.SetBorders(MultipleBorders.All, SpreadsheetColor.FromName(ColorName.Black), LineStyle.Thin)
StyleTitleTable3.VerticalAlignment = VerticalAlignmentStyle.Center
StyleTitleTable3.HorizontalAlignment = HorizontalAlignmentStyle.Center
Dim StyleSubTitleTable3 = worksheet.Cells.GetSubrangeAbsolute(IdxRefPorcentajes, 0, IdxRefPorcentajes, 6).Style
StyleSubTitleTable3.Font.Weight = ExcelFont.BoldWeight
StyleSubTitleTable3.Font.Name = "Calibri"
StyleSubTitleTable3.Font.Size = 8 * 20
StyleSubTitleTable3.Borders.SetBorders(MultipleBorders.All, SpreadsheetColor.FromName(ColorName.Black), LineStyle.Thin)
StyleSubTitleTable3.VerticalAlignment = VerticalAlignmentStyle.Center
StyleSubTitleTable3.HorizontalAlignment = HorizontalAlignmentStyle.Center
Dim DtPorcentajes As DataTable = DataSet.Tables(2)
'INICIA DESDE LA CUARTA FILA
Dim IdxPorcentajes As Integer = IdxRefPorcentajes + 1
For Each Row As DataRow In DtPorcentajes.Rows
worksheet.Cells(IdxPorcentajes, 0).Value = Row("SubProyecto")
worksheet.Cells(IdxPorcentajes, 1).Value = Row("Servicios")
worksheet.Cells(IdxPorcentajes, 2).Value = Row("ServiciosPorcentaje")
worksheet.Cells(IdxPorcentajes, 3).Value = Row("Polizas")
worksheet.Cells(IdxPorcentajes, 4).Value = Row("PolizasPorcentaje")
worksheet.Cells(IdxPorcentajes, 5).Value = Row("Alineaciones")
worksheet.Cells(IdxPorcentajes, 6).Value = Row("AlinPorcentaje")
Dim StyleData = worksheet.Cells.GetSubrangeAbsolute(IdxPorcentajes, 0, IdxPorcentajes, 6).Style
StyleData.Font.Weight = ExcelFont.BoldWeight
StyleData.Font.Name = "Calibri"
StyleData.Font.Size = 8 * 20
StyleData.VerticalAlignment = VerticalAlignmentStyle.Center
StyleData.HorizontalAlignment = HorizontalAlignmentStyle.Center
StyleData.Borders.SetBorders(MultipleBorders.All, SpreadsheetColor.FromName(ColorName.Black), LineStyle.Thin)
StyleData.NumberFormat = "_-* #,##0.00_-;-* #,##0.00_-;_-* ""-""??_-;_-@_-"
'LAS VENTAS DEL DIA NO DEBEN ESTAR EN NEGRITAS
worksheet.Cells(IdxPorcentajes, 0).Style.Font.Weight = ExcelFont.NormalWeight
worksheet.Cells(IdxPorcentajes, 0).Style.HorizontalAlignment = HorizontalAlignmentStyle.Left
worksheet.Cells(IdxPorcentajes, 1).Style.Font.Weight = ExcelFont.NormalWeight
worksheet.Cells(IdxPorcentajes, 3).Style.Font.Weight = ExcelFont.NormalWeight
worksheet.Cells(IdxPorcentajes, 5).Style.Font.Weight = ExcelFont.NormalWeight
IdxPorcentajes += 1
Next
'LA FILA DE LOS TOTALES DEBE ESTAR EN NEGITAS
worksheet.Cells.GetSubrangeAbsolute(IdxPorcentajes - 1, 0, IdxPorcentajes - 1, 6).Style.Font.Weight = ExcelFont.BoldWeight
DtPorcentajes.Dispose()
#End Region
#Region "A Ñ O A N T E R I O R"
Dim IdxRefAnioAnteriorLlantas As Integer = IdxPorcentajes + 3
worksheet.Cells(IdxRefAnioAnteriorLlantas, 0).Value = "Sucursal"
worksheet.Cells(IdxRefAnioAnteriorLlantas, 1).Value = (Now.Year - 1).ToString()
worksheet.Cells(IdxRefAnioAnteriorLlantas, 2).Value = Now.Year.ToString()
worksheet.Cells(IdxRefAnioAnteriorLlantas, 3).Value = "Dif"
Dim StyleTitleTable4 = worksheet.Cells.GetSubrangeAbsolute(IdxRefAnioAnteriorLlantas, 0, IdxRefAnioAnteriorLlantas, 3).Style
StyleTitleTable4.Font.Weight = ExcelFont.BoldWeight
StyleTitleTable4.Font.Name = "Calibri"
StyleTitleTable4.Font.Size = 8 * 20
StyleTitleTable4.Borders.SetBorders(MultipleBorders.All, SpreadsheetColor.FromName(ColorName.Black), LineStyle.Thin)
StyleTitleTable4.VerticalAlignment = VerticalAlignmentStyle.Center
StyleTitleTable4.HorizontalAlignment = HorizontalAlignmentStyle.Center
Dim DtAnioAnteriorLLantas As DataTable = DataSet.Tables(3)
'INICIA DESDE LA CUARTA FILA
Dim IdxAnioAnteriorLlantas As Integer = IdxRefAnioAnteriorLlantas + 1
For Each Row As DataRow In DtAnioAnteriorLLantas.FiltraParametros("TipoFila > 1").Rows
worksheet.Cells(IdxAnioAnteriorLlantas, 0).Value = Row("Grupo")
worksheet.Cells(IdxAnioAnteriorLlantas, 1).Value = Row("LLantasAnioAnterior")
worksheet.Cells(IdxAnioAnteriorLlantas, 2).Value = Row("LLantas")
worksheet.Cells(IdxAnioAnteriorLlantas, 3).Formula = $"=({worksheet.Cells(IdxAnioAnteriorLlantas, 1).Name} - {worksheet.Cells(IdxAnioAnteriorLlantas, 2).Name})"
Dim StyleData = worksheet.Cells.GetSubrangeAbsolute(IdxAnioAnteriorLlantas, 0, IdxAnioAnteriorLlantas, 3).Style
StyleData.Font.Weight = ExcelFont.NormalWeight
StyleData.Font.Name = "Calibri"
StyleData.Font.Size = 8 * 20
StyleData.VerticalAlignment = VerticalAlignmentStyle.Center
StyleData.HorizontalAlignment = HorizontalAlignmentStyle.Center
StyleData.Borders.SetBorders(MultipleBorders.All, SpreadsheetColor.FromName(ColorName.Black), LineStyle.Thin)
StyleData.NumberFormat = "_-* #,##0.00_-;-* #,##0.00_-;_-* ""-""??_-;_-@_-"
If Row("TipoFila").ToString() = "2" Then
StyleData.Font.Weight = ExcelFont.BoldWeight
StyleData.FillPattern.SetPattern(FillPatternStyle.Solid, SpreadsheetColor.FromArgb(255, 215, 0), SpreadsheetColor.FromArgb(255, 255, 255))
End If
IdxAnioAnteriorLlantas += 1
Next
For Each Row As DataRow In DtAnioAnteriorLLantas.FiltraParametros("TipoFila = 1").Rows
worksheet.Cells(IdxAnioAnteriorLlantas, 0).Value = Row("Grupo")
worksheet.Cells(IdxAnioAnteriorLlantas, 1).Value = Row("LLantasAnioAnterior")
worksheet.Cells(IdxAnioAnteriorLlantas, 2).Value = Row("LLantas")
worksheet.Cells(IdxAnioAnteriorLlantas, 3).Formula = $"=(+{worksheet.Cells(IdxAnioAnteriorLlantas, 1).Name} - {worksheet.Cells(IdxAnioAnteriorLlantas, 2).Name})"
Dim StyleData = worksheet.Cells.GetSubrangeAbsolute(IdxAnioAnteriorLlantas, 0, IdxAnioAnteriorLlantas, 3).Style
StyleData.Font.Weight = ExcelFont.BoldWeight
StyleData.Font.Name = "Calibri"
StyleData.Font.Size = 8 * 20
StyleData.VerticalAlignment = VerticalAlignmentStyle.Center
StyleData.HorizontalAlignment = HorizontalAlignmentStyle.Center
StyleData.Borders.SetBorders(MultipleBorders.All, SpreadsheetColor.FromName(ColorName.Black), LineStyle.Thin)
StyleData.NumberFormat = "_-* #,##0.00_-;-* #,##0.00_-;_-* ""-""??_-;_-@_-"
StyleData.FillPattern.SetPattern(FillPatternStyle.Solid, SpreadsheetColor.FromArgb(255, 215, 0), SpreadsheetColor.FromArgb(255, 255, 255))
IdxAnioAnteriorLlantas += 1
Next
DtAnioAnteriorLLantas.Dispose()
#End Region
Dim columnCount = worksheet.CalculateMaxUsedColumns()
For i = 0 To columnCount
worksheet.Columns(i).AutoFit(1, worksheet.Rows(0), worksheet.Rows(worksheet.Rows.Count - 1))
Next
FileExcel.Save(Response, $"DIARIO_{Now.ToString("dd_MM_yyyy")}.xlsx", SaveOptions.XlsxDefault)
End If
End Sub
Public Function ToMonthName(ByVal dateTime As DateTime) As String
Return New CultureInfo("es-MX").DateTimeFormat.GetMonthName(dateTime.Month)
End Function
Public Function ToShortMonthName(ByVal dateTime As DateTime) As String
Return New CultureInfo("es-MX").DateTimeFormat.GetAbbreviatedMonthName(dateTime.Month)
End Function
End Class

View File

@@ -453,7 +453,21 @@ Partial Class Ventas_RepVentas
FechaInicial = New DateTime(Anio, Mes, 1).ToString("dd/MM/yyyy")
End If
FechaFinal = New DateTime(Anio, Mes, Dia).ToString("dd/MM/yyyy")
Dim FechaFinalRef = New DateTime(Anio, Mes, Dia)
'ASIGNAR LA FECHA FINAL DEL GRUPO, SI ES MENOR A LA FECHA DEL FILTRO
If FechaF <> "-1" Then
If FechaFRef < FechaFinalRef Then
FechaFinal = FechaFRef.ToString("dd/MM/yyyy")
Else
FechaFinal = FechaFinalRef.ToString("dd/MM/yyyy")
End If
Else
FechaFinal = FechaFinalRef.ToString("dd/MM/yyyy")
End If
End If
Case 3 ' AÑO/MES
@@ -479,7 +493,19 @@ Partial Class Ventas_RepVentas
FechaInicial = New DateTime(Anio, Mes, 1).ToString("dd/MM/yyyy")
End If
FechaFinal = New DateTime(Anio, Mes, Dia).ToString("dd/MM/yyyy")
Dim FechaFinalRef = New DateTime(Anio, Mes, Dia)
'ASIGNAR LA FECHA FINAL DEL GRUPO, SI ES MENOR A LA FECHA DEL FILTRO
If FechaF <> "-1" Then
If FechaFRef < FechaFinalRef Then
FechaFinal = FechaFRef.ToString("dd/MM/yyyy")
Else
FechaFinal = FechaFinalRef.ToString("dd/MM/yyyy")
End If
Else
FechaFinal = FechaFinalRef.ToString("dd/MM/yyyy")
End If
End If
Case 4 ' FECHA

View File

@@ -353,7 +353,7 @@
<asp:HyperLink ID="HlCuentaTerminal" data-toggle="modal" data-target="#ModalCuentaTerminal" runat="server" Visible="false"><i class="fa fa-money"></i> Asignar Cuenta de Terminal</asp:HyperLink>
</li>
<li>
<asp:HyperLink ID="HplFolioFiscalModal" data-toggle="modal" data-target="#ModalFolioFiscal" runat="server" Visible="false"><i class="fa fa-plus"></i> Asignar Folio Fiscal</asp:HyperLink>
<asp:HyperLink ID="HplFolioFiscalModal" data-toggle="modal" data-target="#ModalFolioFiscal" runat="server" Visible="false"><i class="fa fa-pencil"></i> Asignar Folio Fiscal</asp:HyperLink>
</li>
<li>
<asp:LinkButton runat="server" ID="LnkImprimirFormatoCicovisa" Visible="false" OnClick="LnkImprimirFormatoCicovisa_Click">Imprimir Formato Cicovisa</asp:LinkButton>
@@ -4812,10 +4812,19 @@
<asp:RadioButtonList ID="RblTipo" runat="server" AutoPostBack="true" RepeatDirection="Horizontal" CssClass="input-group col-md-12" CellSpacing="100">
<asp:ListItem Value="3" Class="one" Selected="True"><label><b>Total x Concepto</b></label></asp:ListItem>
<asp:ListItem Value="1" Class="one"><label><b>Total General</b></label></asp:ListItem>
<asp:ListItem Value="2" Class="one"><label><b>Total x Remisión</b></label></asp:ListItem>
<asp:ListItem Value="2" Class="one"><label><b>Total x Remisión</b></label></asp:ListItem>
</asp:RadioButtonList>
</div>
</div>
<div class="row" id="DivPSRemision" runat="server" visible="false">
<div class="col-md-6">
<div class="form-group form-md-line-input input-iconright">
<label for="<%= DdlPSRemision.ClientID.ToString()%>">Producto/Servicio:</label>
<ADS:Dropdownlost runat="server" ID="DdlPSRemision" CssStyle="width: 100%;" CssClass=" form-control input-sm DdlPS" IncluyeTodos="false" CssClassDdl="select2me form-control" DataTextField="PSCodigo" DataValueField="CvePS" />
</div>
</div>
</div>
<br />
<div class="row">
<div class="col-md-8">
<asp:CheckBox ID="ChkRemProductos" runat="server" AutoPostBack="true" Text="Mostrar Productos" />
@@ -6230,7 +6239,7 @@
<button type="button" class="close" data-dismiss="modal">&times;</button>
<h4 class="modal-title">Facturas Relacionadas</h4>
</div>
<div class="modal-body">
<div class="modal-body" style="width:900px;">
<div class="row">
<div class="col-md-2">
<label>Relación:</label>
@@ -6249,7 +6258,19 @@
<asp:DropDownList ID="DdlFacturaARelacionar" runat="server" AutoPostBack="true" AppendDataBoundItems="true" DataTextField="Folio" DataValueField="CveVenta" Width="100%" CssClass="select2me"></asp:DropDownList>
</div>
<div class="col-md-2">
<asp:LinkButton ID="LnkAgregarFacturaRelacionada" runat="server" CssClass="btn btn-sm btn-primary" OnClick="LnkAgregarFacturaRelacionada_Click"><i class="fa fa-plus"></i>Agregar</asp:LinkButton>
<asp:LinkButton ID="LnkAgregarFacturaRelacionada" runat="server" CssClass="btn btn-sm btn-primary" OnClick="LnkAgregarFacturaRelacionada_Click"><i class="fa fa-plus"></i>Agregar Factura</asp:LinkButton>
</div>
</div>
<br />
<div id="DivFolioFiscalAgregar" runat="server" class="row">
<div class="col-md-2">
<label>Folio Fiscal:</label>
</div>
<div class="col-md-8">
<asp:TextBox ID="TxtFolioFiscalRelacionar" runat="server" Text="" Width="100%" CssClass="form-control input-sm"></asp:TextBox>
</div>
<div class="col-md-2">
<asp:LinkButton ID="LnkAgregarFolioFiscalRelacionada" runat="server" CssClass="btn btn-sm btn-primary" OnClick="LnkAgregarFolioFiscalRelacionada_Click"><i class="fa fa-plus"></i>Agregar Folio</asp:LinkButton>
</div>
</div>
<br />
@@ -6290,8 +6311,10 @@
<div class="modal-body">
<asp:UpdatePanel runat="server" ID="UpdatePanel3" UpdateMode="Conditional">
<ContentTemplate>
Folio Fiscal
<asp:TextBox ID="TxtModalFolioFiscal" runat="server" Width="250px"></asp:TextBox>
<div class="row">
<div class="col-md-2"> Folio Fiscal</div>
<div class="col-md-10"> <asp:TextBox ID="TxtModalFolioFiscal" runat="server" Width="100%"></asp:TextBox></div>
</div>
</ContentTemplate>
</asp:UpdatePanel>
</div>
@@ -6870,7 +6893,7 @@
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Cerrar</button>
<button type="button" class="btn btn-default" data-dismiss="modal">Cerrar</button>
<asp:Button Text="Aplicar Remisiones" ID="BtnAplicarRNCDevoluciones" OnClick="BtnAplicarRNCDevoluciones_Click" CssClass="btn btn-primary" runat="server" ValidationGroup="VGAplicarRNC" />
</div>
</div>

View File

@@ -2226,6 +2226,7 @@ Partial Class Ventas
CargaClasificaciones()
CargaPS(-1, DdlPS)
CargaPSRemision(-1, DdlPSRemision)
CargaPSPyME(-1, DdlPSPyME)
CreaDTVentas()
@@ -2312,7 +2313,7 @@ Partial Class Ventas
End If
'MUESTRA EL MODAL PARA PODER RELACIONAR FACTURAS
If UsuarioActual.Empresa.Funcionalidad(592) = "1" Then
If UsuarioActual.TienePermisoProceso(321) Then
HlFacturasRelaciondas.Visible = True
End If
@@ -2322,7 +2323,7 @@ Partial Class Ventas
ViewState("CveVenta") = Request("CveVenta")
If CargaVenta() Then
If UsuarioActual.Empresa.Funcionalidad(592) = "1" Then
If UsuarioActual.TienePermisoProceso(321) Then
CargaRelacionadasPendientes()
End If
@@ -4112,8 +4113,9 @@ Partial Class Ventas
'TxtIEPS.Text = If(TmpDT.SUM("IEPS") > 0, TmpDT.SUM("IEPS").FormatoNumero, TxtIEPS.Text)
End If
If DdlTipoComprobante.SelectedValue.Contiene("Egs", "Ing", "Ant", "Dev") AndAlso LblFolioFiscal.Text.Trim = "" Then HplFolioFiscalModal.Visible = True
If UsuarioActual.TienePermisoProceso(318) Then
If DdlTipoComprobante.SelectedValue.Contiene("Egs", "Ing", "Ant", "Dev") AndAlso String.IsNullOrEmpty(LblFolioFiscal.Text.Trim) Then HplFolioFiscalModal.Visible = True
End If
Select Case DbRowVenta("TipoDocto").ToString()
Case "Ing"
@@ -5963,7 +5965,7 @@ Partial Class Ventas
Private Sub CargaRelacionadasPendientes()
If CveVenta > 0 AndAlso UsuarioActual.Empresa.Funcionalidad(592) = "1" Then
If CveVenta > 0 AndAlso UsuarioActual.TienePermisoProceso(321) Then
Me.TmpDTFacturasRelacionadas = New DataTable()
Me.TmpDTFacturasRelacionadas.Columns.Add(New DataColumn("CveVenta", GetType(Integer)))
Me.TmpDTFacturasRelacionadas.Columns.Add(New DataColumn("SerieFolio", GetType(String)))
@@ -6051,6 +6053,37 @@ Partial Class Ventas
UpFacturasRelacionadas.Update()
End If
End Sub
Protected Sub LnkAgregarFolioFiscalRelacionada_Click(sender As Object, e As EventArgs)
If CveVenta <= 0 OrElse EsCreaApartirDe Then
If Me.TmpDTFacturasRelacionadas Is Nothing Then
CreaTmpFacturasRelacionadas()
End If
'If TmpDTFacturasRelacionadas.COUNT("CveVenta", $"CveVenta ={DdlFacturaARelacionar.SelectedValue.ToEntero()}") > 0 Then
' Alert("La factura ya fue agregada", TipoMensaje.MsgAdvertencia)
' Exit Sub
'End If
Dim idx As Integer = TmpDTFacturasRelacionadas.MIN("CveVenta", $"CveVenta <= 0").ToEntero()
If idx = 0 Then
idx = -1
End If
Dim Row As DataRow = TmpDTFacturasRelacionadas.NewRow()
Row("CveVenta") = idx - 1
Row("SerieFolio") = "SIN ASIGNAR"
Row("FolioFiscal") = TxtFolioFiscalRelacionar.Text
Me.TmpDTFacturasRelacionadas.Rows.Add(Row)
GvFacturasRelacionadas.DataSource = Me.TmpDTFacturasRelacionadas
GvFacturasRelacionadas.DataBind()
UpFacturasRelacionadas.Update()
End If
End Sub
Protected Sub BtnAgregarFacturasRelaciondas_Click(sender As Object, e As EventArgs)
If CveVenta <= 0 OrElse EsCreaApartirDe Then
@@ -6477,6 +6510,9 @@ Partial Class Ventas
ElseIf LimiteRestanteSucursal < LimiteRestanteCliente Then
Retorno = LimiteRestanteSucursal
PorcentajeCredito = PorcentajeSaldoSucursal
ElseIf LimiteRestanteSucursal = LimiteRestanteCliente Then
Retorno = LimiteRestanteSucursal
PorcentajeCredito = PorcentajeSaldoSucursal
End If
Else
@@ -6546,6 +6582,29 @@ Partial Class Ventas
Objeto.ddlWS.Attributes.Add("data-AplicaparaVenta", "1")
End If
End Sub
Private Sub CargaPSRemision(CveClasificacion As Integer, Objeto As ADServerControl.Dropdownlost)
Objeto.setEsWebService(UsuarioActual.Empresa.Funcionalidad(141).ToString() = "1")
If Not UsuarioActual.Empresa.Funcionalidad(141).ToString() = "1" Then
Objeto.ddl.Items.Clear()
'Objeto.ddl.DataSource = GlobalDTProductosServicios(UsuarioActual.CveEmpresa, CveClasificacion:=CveClasificacion, AplicaParaVenta:=1, Estatus:=1)
Objeto.ddl.DataSource = GlobalDTPSSimplificado(UsuarioActual.CveEmpresa, CveClasificacion:=CveClasificacion, Estatus:=1, AplicaParaVenta:=1)
Objeto.ddl.DataBind()
Objeto.ddl.Items.Insert(0, New ListItem("*** Actualizar listado de Productos o Servicios ***", "-2"))
Objeto.ddl.Items.Insert(0, New ListItem("Seleccione el Producto", "-1"))
Else
Dim cvesubproyecto As String = "-1"
Objeto.Attributes.Add("data-cvesubproyecto", cvesubproyecto)
Objeto.ddlWS.Attributes.Add("data-cveclasificacion", CveClasificacion.ToString())
Objeto.ddlWS.Attributes.Add("data-pagina", "ventas/ventas")
Objeto.ddlWS.Attributes.Add("data-Estatus", "1")
Objeto.ddlWS.Attributes.Add("data-AplicaparaVenta", "1")
End If
End Sub
Private Sub CargaNC(pCveVenta As Integer)
If pCveVenta > 0 AndAlso DdlTipoComprobante.SelectedValue.Contiene("Egs", "Dev") Or DdlTipoComprobante.SelectedValue.Contiene("Ing", "Ant") Then
@@ -9112,6 +9171,13 @@ Partial Class Ventas
DtVentasNC.AcceptChanges()
End If
'ASIGNAR RFC RECEPTOR
If ObjFacturaBonificacion.Timbre IsNot Nothing Then
If ObjFacturaBonificacion.Timbre.Receptor IsNot Nothing Then
ObjFacturaBonificacion.RFCReceptor = ObjFacturaBonificacion.Timbre.Receptor.RFC
End If
End If
End Sub
@@ -9981,6 +10047,13 @@ Partial Class Ventas
ObjFactura.DescuentoProntoPago = HdnProntoPago.Value.ToDecimal()
ObjFactura.NuevaFactura = Me.NuevaFactura
'ASIGNAR RFC RECEPTOR
If ObjFactura.Timbre IsNot Nothing Then
If ObjFactura.Timbre.Receptor IsNot Nothing Then
ObjFactura.RFCReceptor = ObjFactura.Timbre.Receptor.RFC
End If
End If
End Sub
Private Sub CreaObjetosVentaDevolucion()
@@ -10273,6 +10346,13 @@ Partial Class Ventas
End If
ObjFacturaDevolucion.Timbre = PreParaTimbre(ObjFacturaDevolucion)
'ASIGNAR RFC RECEPTOR
If ObjFacturaDevolucion.Timbre IsNot Nothing Then
If ObjFacturaDevolucion.Timbre.Receptor IsNot Nothing Then
ObjFacturaDevolucion.RFCReceptor = ObjFacturaDevolucion.Timbre.Receptor.RFC
End If
End If
End Sub
Private Function PreParaTimbre(Obj As Modelos.Factura) As CFDITimbre
@@ -10378,7 +10458,7 @@ Partial Class Ventas
End If
'SI LAS FACTURAS SE RELACIONARAN MANUALMENTE SE AGREGAN
If UsuarioActual.Empresa.Funcionalidad(592) = "1" AndAlso Me.AplicaRelacionManual AndAlso DdlTipoRelacionARelacionar.SelectedValue.ToEntero() > 0 Then
If UsuarioActual.TienePermisoProceso(321) AndAlso Me.AplicaRelacionManual AndAlso DdlTipoRelacionARelacionar.SelectedValue.ToEntero() > 0 Then
Dim CveTipoRelacion As Integer = DdlTipoRelacionARelacionar.SelectedValue.ToEntero()
@@ -10432,7 +10512,7 @@ Partial Class Ventas
Dim concepto As New CFDIConceptos With {.Cantidad = drr("Cantidad").ToString().ToDecimal,
.Descripcion = tPS,
.ValorUnitario = drr("PU").ToString().ToDecimal,
.Importe = drr("TotalImporte").ToString().ToDecimal,
.Importe = If(UsuarioActual.Empresa.CvePAC = 3, drr("Total").ToString().ToDecimal, drr("TotalImporte").ToString().ToDecimal),
.Descuento = drr("Descuento").ToString().ToDecimal.RoundSQL(2),
.Unidad = drr("UM").ToString(),
.ClaveUnidad = drr("SATClaveUM").ToString(),
@@ -11025,11 +11105,20 @@ Partial Class Ventas
End If
End If
If UsuarioActual.Empresa.Funcionalidad(592) = "1" AndAlso Me.AplicaRelacionManual Then
If UsuarioActual.TienePermisoProceso(321) AndAlso Me.AplicaRelacionManual Then
For Each GvRow As GridViewRow In GvFacturasRelacionadas.Rows
If GvRow.RowType = DataControlRowType.DataRow Then
If Not ObjVentas.AddVentasRelacionadas(ObjVentas.CveVenta, GvRow.DataKey("CveVenta").ToEntero()) Then
ErrorList.Add("Ocurrió un error al relacionar las ventas entre si comuníquese a Soporte Técnico")
If GvRow.DataKey("CveVenta").ToEntero() > 0 Then
If Not ObjVentas.AddVentasRelacionadas(ObjVentas.CveVenta, GvRow.DataKey("CveVenta").ToEntero()) Then
ErrorList.Add("Ocurrió un error al relacionar las ventas entre si comuníquese a Soporte Técnico")
End If
Else
Dim FolioFiscalRelacionado As String = GvRow.DataKey("FolioFiscal")
If Not String.IsNullOrEmpty(FolioFiscalRelacionado) Then
If Not ObjVentas.AddVentasRelacionadas(ObjVentas.CveVenta, -1, FolioFiscal:=FolioFiscalRelacionado) Then
ErrorList.Add("Ocurrió un error al relacionar las ventas entre si comuníquese a Soporte Técnico")
End If
End If
End If
End If
Next
@@ -14843,6 +14932,19 @@ Partial Class Ventas
Alert("La amortización no se pudo realizar ya que los importes no cubren la totalidad del documento. Por favor verifique y vuelva a intentar.", TipoMensaje.MsgAdvertencia)
End If
End If
If Amortizacion > SubTotalRef Then
'[IPP] LIMPIA LO SELECCIONADO EN CASO DE QUE NO SEA AMORTIZACIÓN DEL 100% 15Junio2018
Amortizacion = 0
For Each gvr As GridViewRow In GVAnticipos.Rows
gvr.FCCheckBox($"Chk{gvr.RowIndex}").Checked = False
Next
If CveVenta <= 0 Then
Alert($"La amortización no se pudo realizar ya que los importes exceden la totalidad del documento.<br/> Importe sugerido para amortizar:<b>{SubTotalRef.FormatoNumero(2)}</b>.<br/> Por favor verifique y vuelva a intentar", TipoMensaje.MsgAdvertencia)
End If
End If
LblAmortizacion.Text = Amortizacion.FormatoNumero(2)
@@ -16178,7 +16280,7 @@ Partial Class Ventas
Private Sub DdlSubProyectoDatos_SelectedIndexChanged(sender As Object, e As EventArgs) Handles DdlSubProyectoDatos.SelectedIndexChanged
CambiaSucursalGeneral()
End Sub
Private Sub CambiaSucursalGeneral()
Private Sub CambiaSucursalGeneral(Optional RecargarPartidas As Boolean = True)
Dim ObjSubProyectos As New ClsSubProyectos
'Dim ObjSucursal As New ClsSucursales
If ObjSubProyectos.GetSubProyectos() Then
@@ -16192,7 +16294,7 @@ Partial Class Ventas
'DdlSubProyecto.SelectedValue = "-1"
DdlSubProyecto.DataBind()
DdlSubProyecto.SelectedValueExist(DdlSubProyectoDatos.SelectedValue)
CambiaSucursal()
CambiaSucursal(RecargarPartidas)
DdlSubProyectoEjecucion.SelectedValueExist(DdlSubProyectoDatos.SelectedValue)
DdlSubProyectoCobranza.SelectedValueExist(DdlSubProyectoDatos.SelectedValue)
@@ -16210,12 +16312,16 @@ Partial Class Ventas
UpDetalle.Update()
End Sub
Private Sub CambiaSucursal()
Private Sub CambiaSucursal(Optional RecargarPartidas As Boolean = True)
CargaFormatoSucursal()
CargaFolios()
CargaVendedores()
CargarAlmacenes()
RecargaSucursalPartidas()
If RecargarPartidas Then
RecargaSucursalPartidas()
End If
DdlPS.Attributes.Remove("data-cvesubproyecto")
DdlPS.Attributes.Add("data-cvesubproyecto", DdlSubProyectoDatos.SelectedValue)
@@ -16225,6 +16331,7 @@ Partial Class Ventas
UpPS.Update()
End Sub
Private Sub RecargaSucursalPartidas()
Dim CveSubProyecto As Integer = DdlSubProyectoDatos.SelectedValue.ToEntero()
Dim SubProyecto As String = ""
If CveSubProyecto > 0 Then
@@ -23321,12 +23428,12 @@ Partial Class Ventas
Private Sub CargaPSPyME(CveClasificacion As Integer, Objeto As ADServerControl.Dropdownlost)
DdlPSPyME.setEsWebService(True)
Objeto.setEsWebService(True)
DdlPSPyME.Attributes.Add("data-cvesubproyecto", DdlSubProyectoDatos.SelectedValue)
DdlPSPyME.ddlWS.Attributes.Add("data-cveclasificacion", CveClasificacion.ToString())
DdlPSPyME.ddlWS.Attributes.Add("data-pagina", "ventas/ventas")
DdlPSPyME.ddlWS.Attributes.Add("data-Estatus", "1")
Objeto.Attributes.Add("data-cvesubproyecto", DdlSubProyectoDatos.SelectedValue)
Objeto.ddlWS.Attributes.Add("data-cveclasificacion", CveClasificacion.ToString())
Objeto.ddlWS.Attributes.Add("data-pagina", "ventas/ventas")
Objeto.ddlWS.Attributes.Add("data-Estatus", "1")
End Sub
@@ -24053,6 +24160,7 @@ Partial Class Ventas
Dim FileExtension As String = "-1"
Dim Filesgral As List(Of Archivo) = TxtFileCliente.getfiles().Archivos
Dim Filename As String = ""
Dim ErrorCarga As Boolean = False
For Each fileItem As Archivo In Filesgral
Try
@@ -24071,6 +24179,17 @@ Partial Class Ventas
Count = +1
Next
End If
If fileItem Is Nothing Then
ErrorCarga = True
Exit For
Else
If fileItem.FileUrl Is Nothing Then
ErrorCarga = True
Exit For
End If
End If
DtDocumentacionCliente(IndexDocumentoCliente)("RutaArchivo") = fileItem.FileUrl
DtDocumentacionCliente(IndexDocumentoCliente)("UpArchivo") = "1"
@@ -24083,6 +24202,11 @@ Partial Class Ventas
Next
If ErrorCarga Then
Alert("No se pudo cargar el archivo", TipoMensaje.MsgAdvertencia)
Exit Sub
End If
GvDocumentosCliente.DataSource = DtDocumentacionCliente
GvDocumentosCliente.DataBind()
@@ -28357,8 +28481,11 @@ Partial Class Ventas
HuboCambioRemi = Not HuboCambioRemi
'TOTAL X CONCEPTO
If RblTipo.SelectedValue = "3" Then
'DivPSRemision.Visible = False
ChkRemProductos.Visible = True
Else
'DivPSRemision.Visible = True
CargaPSRemision(-1, DdlPSRemision)
ChkRemProductos.Visible = False
ChkRemProductos.Checked = False
End If
@@ -28367,6 +28494,12 @@ Partial Class Ventas
End Sub
Protected Sub BtnGuardarRemisiones_Click(sender As Object, e As EventArgs) Handles BtnGuardarRemisiones.Click
If GvRem.Rows.Count > 0 Or GvRemPS.Rows.Count > 0 Then
If RblTipo.SelectedValue.Contiene("1", "2") AndAlso DdlPSRemision.SelectedValue.ToEntero() <= 0 Then
Alert("Debe seleccionar un producto para facturar la remisión", TipoMensaje.MsgAdvertencia)
Exit Sub
End If
'Checa las facturas selecionadas
If Not VerificaRemisiones(DTRemisiones) Then
Alert("La cantidad/total debe ser mayor que 0", TipoMensaje.MsgAdvertencia)
@@ -28468,9 +28601,9 @@ Partial Class Ventas
Next
IsTotalxConcepto = False
Dim PU As Decimal = dtSeleccionadas.SUM("SubTotal").ToDecimal
Dim PS As DataRow = GlobalDTPS(UsuarioActual.CveEmpresa)(0)
Dim PS As DataRow = GlobalDTPS(UsuarioActual.CveEmpresa, CvePS:=DdlPSRemision.SelectedValue.ToEntero())(0)
Dim IVA As Double = If(dtSeleccionadas.SUM("Iva") > 0, dtSeleccionadas.SUM("Iva") / dtSeleccionadas.SUM("SubTotal"), 0.16)
Dim rowSP As DataRow = GlobalDTSubProyectos(-1, -1, UsuarioActual.CveEmpresa)(0)
Dim rowSP As DataRow = GlobalDTSubProyectos(-1, CveSubProyecto:=DdlSubProyectoDatos.SelectedValue.ToEntero(), CveEmpresa:=UsuarioActual.CveEmpresa)(0)
AgregarProductoServicio(1, PS("CveUM").ToString().ToEntero(), PS("UnidadMedida").ToString(), PS("CveClasificacion").ToString().ToEntero(),
PS("Clasificacion").ToString(), PS("CvePS").ToString().ToEntero(), PS("PS").ToString(), "", PU, 0,
@@ -28496,8 +28629,8 @@ Partial Class Ventas
End If
Next
Dim PS As DataRow = GlobalDTPS(UsuarioActual.CveEmpresa)(0)
Dim rowSP As DataRow = GlobalDTSubProyectos(-1, -1, UsuarioActual.CveEmpresa)(0)
Dim PS As DataRow = GlobalDTPS(UsuarioActual.CveEmpresa, CvePS:=DdlPSRemision.SelectedValue.ToEntero())(0)
Dim rowSP As DataRow = GlobalDTSubProyectos(-1, CveSubProyecto:=DdlSubProyectoDatos.SelectedValue.ToEntero(), CveEmpresa:=UsuarioActual.CveEmpresa)(0)
Dim IVA As Double = If(dtSeleccionadas.SUM("Iva") > 0, dtSeleccionadas.SUM("Iva") / dtSeleccionadas.SUM("SubTotal"), 0.16)
For Each gvr As GridViewRow In GvRem.Rows
If gvr.FCCheckBox("Chk").Checked Then
@@ -29283,7 +29416,7 @@ Partial Class Ventas
End If
End If
ObjCliente.Dispose()
DdlTipoRetencion_SelectedIndexChanged(DdlTipoRetencion, EventArgs.Empty)
'DdlTipoRetencion_SelectedIndexChanged(DdlTipoRetencion, EventArgs.Empty)
TrVistaPrevia.Visible = True
TxtFechaVencimientoCotizacion.Text = Now.ToShortDateString
@@ -29293,7 +29426,7 @@ Partial Class Ventas
GvPS.Columns(18).Visible = True
CambiaTipoDocto()
CambiaSucursalGeneral()
CambiaSucursalGeneral(RecargarPartidas:=False)
CargaAnticipos(CveCliente)
CargaRestriccionesCreditoCliente(CveVenta:=-1)
@@ -29314,6 +29447,14 @@ Partial Class Ventas
CalculaTotalesVenta()
Dim PorcentajeRetIVA = (TmpDT.MAX("PorcentajeRetIVA").ToDecimal() * 100)
If PorcentajeRetIVA > 0 Then
TrRetIVA.Style.Add("display", "")
UsuarioActual.Empresa.MostrarRetIVA = True
DdlTipoRetencion.Visible = True
End If
UpnTools.Update()
UpCliente.Update()
UpParametros.Update()