diff --git a/Compras/eFacturas.aspx b/Compras/eFacturas.aspx
index 5f537d57a..dea3762d5 100644
--- a/Compras/eFacturas.aspx
+++ b/Compras/eFacturas.aspx
@@ -274,7 +274,7 @@
diff --git a/Compras/eFacturas.aspx.vb b/Compras/eFacturas.aspx.vb
index 6b8ec27dc..bf1189f9b 100644
--- a/Compras/eFacturas.aspx.vb
+++ b/Compras/eFacturas.aspx.vb
@@ -1,119 +1,119 @@
-Option Strict On
-Option Explicit On
-
-Imports System.Data
-Imports Extensiones
-Imports System.Diagnostics
-Imports System.IO
-Imports System.IO.Compression
-Imports System.Xml
-Imports Microsoft.Reporting.WebForms
-Imports System.Globalization
-Imports ADSistemaLibrary.SatXml
-Imports ADSistemaLibrary.SatXml.XmlSatCFDI
-
-Partial Class Compras_eFacturas
- Inherits ClsPaginas
-
-#Region "Propiedades"
- 'CFDi
- Private _Folio As String
- Private Property SeriePago As String
- Set(value As String)
- ViewState("SeriePago") = value
- End Set
- Get
- Return ViewState("SeriePago").ToString
- End Get
- End Property
- Private Property FolioPago As String
- Set(value As String)
- ViewState("FolioPago") = value
- End Set
- Get
- Return ViewState("FolioPago").ToString
- End Get
- End Property
- Private Property Destino As String
- Set(value As String)
- ViewState("Destino") = value
- End Set
- Get
- Return ViewState("Destino").ToString
- End Get
- End Property
- Private Property CveFactura As Integer
- Set(value As Integer)
- ViewState("CveFactura") = value
- End Set
- Get
- Return CInt(ViewState("CveFactura"))
- End Get
- End Property
- Private Property CveFacturaPago As Integer
- Set(value As Integer)
- ViewState("CveFacturaPago") = value
- End Set
- Get
- Return CInt(ViewState("CveFacturaPago"))
- End Get
- End Property
- Private Property CveProveedor As Integer
- Set(value As Integer)
- ViewState("CveProveedor") = value
- End Set
- Get
- Return CInt(ViewState("CveProveedor"))
- End Get
- End Property
- Private Property Folio1 As String
- Set(value As String)
- ViewState("Folio1") = value
- End Set
- Get
- Return (ViewState("Folio1")).ToString
- End Get
- End Property
- Private Property Proveedor As String
- Set(value As String)
- ViewState("Proveedor") = value
- End Set
- Get
- Return (ViewState("Proveedor")).ToString
- End Get
- End Property
-
- Private Property Ejecutable As String
- Set(value As String)
- ViewState("Ejecutable") = value
- End Set
- Get
- Return ViewState("Ejecutable").ToString
- End Get
- End Property
-
- Private Property ChecandoCorreo As Boolean
- Set(value As Boolean)
- ViewState("ChecandoCorreo") = value
- End Set
- Get
- Return CType(ViewState("ChecandoCorreo"), Boolean)
- End Get
- End Property
-
- Private DTConceptos As DataTable
- Private Property Folio() As String
- Get
- Return _Folio
- End Get
- Set
- _Folio = Value
- End Set
- End Property
-
+Option Strict On
+Option Explicit On
+
+Imports System.Data
+Imports Extensiones
+Imports System.Diagnostics
+Imports System.IO
+Imports System.IO.Compression
+Imports System.Xml
+Imports Microsoft.Reporting.WebForms
+Imports System.Globalization
+Imports ADSistemaLibrary.SatXml
+Imports ADSistemaLibrary.SatXml.XmlSatCFDI
+
+Partial Class Compras_eFacturas
+ Inherits ClsPaginas
+
+#Region "Propiedades"
+ 'CFDi
+ Private _Folio As String
+ Private Property SeriePago As String
+ Set(value As String)
+ ViewState("SeriePago") = value
+ End Set
+ Get
+ Return ViewState("SeriePago").ToString
+ End Get
+ End Property
+ Private Property FolioPago As String
+ Set(value As String)
+ ViewState("FolioPago") = value
+ End Set
+ Get
+ Return ViewState("FolioPago").ToString
+ End Get
+ End Property
+ Private Property Destino As String
+ Set(value As String)
+ ViewState("Destino") = value
+ End Set
+ Get
+ Return ViewState("Destino").ToString
+ End Get
+ End Property
+ Private Property CveFactura As Integer
+ Set(value As Integer)
+ ViewState("CveFactura") = value
+ End Set
+ Get
+ Return CInt(ViewState("CveFactura"))
+ End Get
+ End Property
+ Private Property CveFacturaPago As Integer
+ Set(value As Integer)
+ ViewState("CveFacturaPago") = value
+ End Set
+ Get
+ Return CInt(ViewState("CveFacturaPago"))
+ End Get
+ End Property
+ Private Property CveProveedor As Integer
+ Set(value As Integer)
+ ViewState("CveProveedor") = value
+ End Set
+ Get
+ Return CInt(ViewState("CveProveedor"))
+ End Get
+ End Property
+ Private Property Folio1 As String
+ Set(value As String)
+ ViewState("Folio1") = value
+ End Set
+ Get
+ Return (ViewState("Folio1")).ToString
+ End Get
+ End Property
+ Private Property Proveedor As String
+ Set(value As String)
+ ViewState("Proveedor") = value
+ End Set
+ Get
+ Return (ViewState("Proveedor")).ToString
+ End Get
+ End Property
+
+ Private Property Ejecutable As String
+ Set(value As String)
+ ViewState("Ejecutable") = value
+ End Set
+ Get
+ Return ViewState("Ejecutable").ToString
+ End Get
+ End Property
+
+ Private Property ChecandoCorreo As Boolean
+ Set(value As Boolean)
+ ViewState("ChecandoCorreo") = value
+ End Set
+ Get
+ Return CType(ViewState("ChecandoCorreo"), Boolean)
+ End Get
+ End Property
+
+ Private DTConceptos As DataTable
+ Private Property Folio() As String
+ Get
+ Return _Folio
+ End Get
+ Set
+ _Folio = Value
+ End Set
+ End Property
+
Private Property Serie() As String
- Get
+ Get
If m_Serie Is Nothing Then
Return ""
Else
@@ -121,2430 +121,2430 @@ Partial Class Compras_eFacturas
End If
- End Get
- Set
- m_Serie = Value
- End Set
- End Property
- Private m_Serie As String
-
- Private _fecha As String
- Private Property fecha() As String
- Get
- Return _fecha
- End Get
- Set
- _fecha = Value
- End Set
- End Property
-
- Private _tipoDeComprobante As String
- Private Property tipoDeComprobante() As String
- Get
- Return _tipoDeComprobante
- End Get
- Set
- _tipoDeComprobante = Value
- End Set
- End Property
-
- Private _formaDePago As String
- Private Property formaDePago() As String
- Get
- Return _formaDePago
- End Get
- Set
- _formaDePago = Value
- End Set
- End Property
-
- Private _subTotal As String
- Private Property subTotal() As String
- Get
- Return _subTotal
- End Get
- Set
- _subTotal = Value
- End Set
- End Property
-
- Private _descuento As String
- Private Property descuento() As String
- Get
- Return _descuento
- End Get
- Set
- _descuento = Value
- End Set
- End Property
- Private _total As String
- Private Property total() As String
- Get
- Return _total
- End Get
- Set
- _total = Value
- End Set
- End Property
-
- Private _moneda As String
- Private Property moneda() As String
- Get
- Return _moneda
- End Get
- Set
- _moneda = Value
- End Set
- End Property
-
- Private _metodoDePago As String
- Private Property metodoDePago() As String
- Get
- Return _metodoDePago
- End Get
- Set
- _metodoDePago = Value
- End Set
- End Property
-
- Private _condicionesDePago As String
- Private Property condicionesDePago() As String
- Get
- Return _condicionesDePago
- End Get
- Set
- _condicionesDePago = Value
- End Set
- End Property
-
- Private _LugarExpedicion As String
- Private Property LugarExpedicion() As String
- Get
- Return _LugarExpedicion
- End Get
- Set
- _LugarExpedicion = Value
- End Set
- End Property
-
- Private _NumCtaPagoNumCtaPago As String
- Private Property NumCtaPagoNumCtaPago() As String
- Get
- Return _NumCtaPagoNumCtaPago
- End Get
- Set
- _NumCtaPagoNumCtaPago = Value
- End Set
- End Property
-
- Private _noCertificado As String
- Private Property noCertificado() As String
- Get
- Return _noCertificado
- End Get
- Set
- _noCertificado = Value
- End Set
- End Property
-
- ''Emisor
- Private _EmiRFC As String
- Private Property EmiRFC() As String
- Get
- Return _EmiRFC
- End Get
- Set
- _EmiRFC = Value
- End Set
- End Property
-
- Private _EmiNombre As String
- Private Property EmiNombre() As String
- Get
- Return _EmiNombre
- End Get
- Set
- _EmiNombre = Value
- End Set
- End Property
-
- Private _DomFisCalle As String
- Private Property DomFisCalle() As String
- Get
- Return _DomFisCalle
- End Get
- Set
- _DomFisCalle = Value
- End Set
- End Property
-
- Private _DomFisNoExt As String
- Private Property DomFisNoExt() As String
- Get
- Return _DomFisNoExt
- End Get
- Set
- _DomFisNoExt = Value
- End Set
- End Property
- 'Dim _DomFisNoInt As String
-
- Private _DomFisCol As String
- Private Property DomFisCol() As String
- Get
- Return _DomFisCol
- End Get
- Set
- _DomFisCol = Value
- End Set
- End Property
-
- Private _DomFisCP As String
- Private Property DomFisCP() As String
- Get
- Return _DomFisCP
- End Get
- Set
- _DomFisCP = Value
- End Set
- End Property
-
- Private _DomFisMun As String
- Private Property DomFisMun() As String
- Get
- Return _DomFisMun
- End Get
- Set
- _DomFisMun = Value
- End Set
- End Property
-
- Private _DomFisLoc As String
- Private Property DomFisLoc() As String
- Get
- Return _DomFisLoc
- End Get
- Set
- _DomFisLoc = Value
- End Set
- End Property
-
- Private _DomFisEst As String
- Private Property DomFisEst() As String
- Get
- Return _DomFisEst
- End Get
- Set
- _DomFisEst = Value
- End Set
- End Property
-
- Private _DomFisPais As String
- Private Property DomFisPais() As String
- Get
- Return _DomFisPais
- End Get
- Set
- _DomFisPais = Value
- End Set
- End Property
-
- Private _ExpEnCalle As String
- Private Property ExpEnCalle() As String
- Get
- Return _ExpEnCalle
- End Get
- Set
- _ExpEnCalle = Value
- End Set
- End Property
-
- Private _ExpEnNoExt As String
- Private Property ExpEnNoExt() As String
- Get
- Return _ExpEnNoExt
- End Get
- Set
- _ExpEnNoExt = Value
- End Set
- End Property
-
-
- Private ExpEnCol As String
-
- Private _ExpEnCP As String
- Private Property ExpEnCP() As String
- Get
- Return _ExpEnCP
- End Get
- Set
- _ExpEnCP = Value
- End Set
- End Property
-
- Private _ExpEnMun As String
- Private Property ExpEnMun() As String
- Get
- Return _ExpEnMun
- End Get
- Set
- _ExpEnMun = Value
- End Set
- End Property
-
- Private _ExpEnLoc As String
- Private Property ExpEnLoc() As String
- Get
- Return _ExpEnLoc
- End Get
- Set
- _ExpEnLoc = Value
- End Set
- End Property
-
- Private _ExpEnEst As String
- Private Property ExpEnEst() As String
- Get
- Return _ExpEnEst
- End Get
- Set
- _ExpEnEst = Value
- End Set
- End Property
- Private _ExpEnPais As String
- Private Property ExpEnPais() As String
- Get
- Return _ExpEnPais
- End Get
- Set
- _ExpEnPais = Value
- End Set
- End Property
-
- Private _Regimen As String
- Private Property Regimen() As String
- Get
- Return _Regimen
- End Get
- Set
- _Regimen = Value
- End Set
- End Property
-
- ''Receptor
- Private _RecRfc As String
- Private Property RecRfc() As String
- Get
- Return _RecRfc
- End Get
- Set
- _RecRfc = Value
- End Set
- End Property
-
- Private _RecNombre As String
- Private Property RecNombre() As String
- Get
- Return _RecNombre
- End Get
- Set
- _RecNombre = Value
- End Set
- End Property
-
- Private _DomRecCalle As String
- Private Property DomRecCalle() As String
- Get
- Return _DomRecCalle
- End Get
- Set
- _DomRecCalle = Value
- End Set
- End Property
-
- Private _DomRecFisNoExt As String
- Private Property DomRecFisNoExt() As String
- Get
- Return _DomRecFisNoExt
- End Get
- Set
- _DomRecFisNoExt = Value
- End Set
- End Property
-
- Private _DomRecFisNoInt As String
- Private Property DomRecFisNoInt() As String
- Get
- Return _DomRecFisNoInt
- End Get
- Set
- _DomRecFisNoInt = Value
- End Set
- End Property
-
- Private _DomRecCol As String
- Private Property DomRecCol() As String
- Get
- Return _DomRecCol
- End Get
- Set
- _DomRecCol = Value
- End Set
- End Property
-
- Private _DomRecCP As String
- Private Property DomRecCP() As String
- Get
- Return _DomRecCP
- End Get
- Set
- _DomRecCP = Value
- End Set
- End Property
-
- Private _DomRecMun As String
- Private Property DomRecMun() As String
- Get
- Return _DomRecMun
- End Get
- Set
- _DomRecMun = Value
- End Set
- End Property
-
- Private _DomRecLoc As String
- Private Property DomRecLoc() As String
- Get
- Return _DomRecLoc
- End Get
- Set
- _DomRecLoc = Value
- End Set
- End Property
-
- Private _DomRecEst As String
- Private Property DomRecEst() As String
- Get
- Return _DomRecEst
- End Get
- Set
- _DomRecEst = Value
- End Set
- End Property
-
- Private _DomRecPais As String
- Private Property DomRecPais() As String
- Get
- Return _DomRecPais
- End Get
- Set
- _DomRecPais = Value
- End Set
- End Property
-
- 'IVA
- Private _TrasladoIVA As Double
- Private Property TrasladoIVA() As Double
- Get
- Return _TrasladoIVA
- End Get
- Set
- _TrasladoIVA = Value
- End Set
- End Property
-
- 'TFD
- Private _TFDUUID As String
- Private Property TFDUUID() As String
- Get
- Return _TFDUUID
- End Get
- Set
- _TFDUUID = Value
- End Set
- End Property
-
- Private _TFDFechaTimbrado As String
- Private Property TFDFechaTimbrado() As String
- Get
- Return _TFDFechaTimbrado
- End Get
- Set
- _TFDFechaTimbrado = Value
- End Set
- End Property
-
- Private _TFDSelloCFD As String
- Private Property TFDSelloCFD() As String
- Get
- Return _TFDSelloCFD
- End Get
- Set
- _TFDSelloCFD = Value
- End Set
- End Property
-
- Private _TFDNoCertSAT As String
- Private Property TFDNoCertSAT() As String
- Get
- Return _TFDNoCertSAT
- End Get
- Set
- _TFDNoCertSAT = Value
- End Set
- End Property
-
- Private _TFDSelloSAT As String
- Private Property TFDSelloSAT() As String
- Get
- Return _TFDSelloSAT
- End Get
- Set
- _TFDSelloSAT = Value
- End Set
- End Property
-
-#End Region
-
- Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load
- If Not Page.IsPostBack Then
- ChecandoCorreo = False
- GvD.Columns(GvD.Columns.Count - 1).Visible = (UsuarioActual.CveRol = 1)
- 'GvD.Columns(GvD.Columns.Count - 2).Visible = (UsuarioActual.CveRol = 1)
- 'GvD.Columns(GvD.Columns.Count - 3).Visible = (UsuarioActual.CveRol = 1)
- ViewState("Orden") = String.Empty
-
- txtFechaI.Text = Now.AddMonths(-1).FirstDayOfMonth().ToShortDateString ' String.Format("01/01/{0}", If(Now.Month > 6, Now.Year, Now.Year - 1))
-
- txtFechaF.Text = Now.ToShortDateString 'txtFechaI.Text.ToDate.AddMonths(1).AddDays(-1).ToShortDateString
-
- Destino = String.Format("{0}Compras\", UsuarioActual.Empresa.Ruta) 'string.format("{0}Empresas\{1}\Compras\", AppDomain.CurrentDomain.BaseDirectory ,UsuarioActual.CveEmpresa & "\Compras\"
- Ejecutable = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Utilerias\ADSUtilerias.exe")
- Form.DefaultButton = BtnConsultar.UniqueID
-
- DdlResponsable.DataSource = GlobalDTUsuarioResponsable.FiltraParametros(String.Format("CveEmpresa = {0}", UsuarioActual.CveEmpresa))
- DdlResponsable.DataBind()
- DdlResponsable.Items.Insert(0, New ListItem("Todos", "-1"))
-
- DdlClasificacionProv.DataSource = GlobalDTProveedorClasificacion(UsuarioActual.CveEmpresa)
- DdlClasificacionProv.DataBind()
- DdlClasificacionProv.Items.Insert(0, New ListItem("Todos", "-1"))
-
- TxtFechaBitInicio.Text = Now.ToString("dd/MM/yyyy")
- TxtFechaBitFin.Text = Now.ToString("dd/MM/yyyy")
-
- TxtFolio.Focus()
-
- If UsuarioActual.Sesion("eFact-Proveedor").ToString <> "" Then TxtProveedor.Text = UsuarioActual.Sesion("eFact-Proveedor").ToString.Trim
- If UsuarioActual.Sesion("eFact-FI").ToString <> "" Then txtFechaI.Text = UsuarioActual.Sesion("eFact-FI").ToString.Trim
- If UsuarioActual.Sesion("eFact-FF").ToString <> "" Then txtFechaF.Text = UsuarioActual.Sesion("eFact-FF").ToString.Trim
- If UsuarioActual.CveUsuario = 100 Then lbDescargar.Visible = True
-
- If UsuarioActual.TienePermisoProceso(81) Then GvD.Columns(11).Visible = True : GvD.Columns(12).Visible = True
- If UsuarioActual.TienePermisoProceso(206) Then GvD.Columns(10).Visible = False
- If UsuarioActual.Empresa.Funcionalidad(156) = "1" Then GvD.Columns(5).Visible = True
- CargaGvBitacora()
- CargaDatos()
- End If
- removeasincevent()
- End Sub
- 'Private Sub CompararString()
- ' Dim cont As Integer = 10000
- ' Dim Sb As New StringBuilder
- ' For i = 0 To cont
- ' Sb.AppendFormat("a{0}", i)
- ' Next
- 'End Sub
-
- Protected Sub BtnConsultar_Click(sender As Object, e As System.EventArgs) Handles BtnConsultar.Click
- CargaDatos()
- End Sub
-
- Private Sub CargaDatos()
- Dim Folio, RFC, Proveedor As String
- Folio = If(TxtFolio.Text.Trim.Length > 0, String.Format("%{0}%", TxtFolio.Text.Trim.ToUpper), "-1")
- RFC = "-1" 'If(TxtRFC.Text.Trim.Length > 0, TxtRFC.Text.Trim, "-1")
- Proveedor = If(TxtProveedor.Text.Trim.Length > 0, String.Format("%{0}%", TxtProveedor.Text.Trim.ToUpper.Replace(" ", "%")), "-1")
-
- UsuarioActual.Sesion("eFact-Proveedor") = TxtProveedor.Text.Trim
- If Folio = "" Then UsuarioActual.Sesion("eFact-FI") = txtFechaI.Text
- If Folio = "" Then UsuarioActual.Sesion("eFact-FF") = txtFechaF.Text
- Dim FechaI, FechaF As Date
- FechaI = txtFechaI.Text.ToDate
- FechaF = txtFechaF.Text.ToDate
- If Folio <> "-1" Then
- FechaI = MinFecha
- FechaF = MaxFecha
- txtFechaI.Text = MinFecha.ToString
- txtFechaF.Text = Now.ToShortDateString
- End If
- Dim DtPagos As DataTable = Nothing
- Dim ObjDatos As New ClsCompras
- If ObjDatos.GetFacturas(-1, Folio, FechaI, FechaF, RFC, Proveedor, DdlValidado.SelectedValue.ToEntero, DdlResponsable.SelectedValue.ToEntero, DdlClasificacionProv.SelectedValue.ToEntero, DdlCveTipoProveedor.SelectedValue.ToEntero, DdlTipoComprobante.SelectedValue.ToString, UsuarioActual.CveEmpresa) Then
- If ObjDatos.DtResultados.Rows.Count > 0 Then
- GvD.DataSource = ObjDatos.DtResultados.FiltraParametros("TipoComprobante <> 'P'") '.AsEnumerable().Take(100).CopyToDataTable()
- DtPagos = ObjDatos.DtResultados.FiltraParametros("TipoComprobante = 'P'")
- Else
- GvD.DataSource = Nothing
- End If
- End If
- LblRegistros.Text = String.Format("{0} Registros", ObjDatos.DtResultados.FiltraParametros("TipoComprobante <> 'P'").Rows.Count.ToString("N0"))
- LblTotalPagos.Text = String.Format("{0} Pagos", ObjDatos.DtResultados.FiltraParametros("TipoComprobante = 'P'").Rows.Count.ToString("N0"))
- ObjDatos.Dispose()
-
- If DtPagos IsNot Nothing AndAlso DtPagos.Rows.Count > 0 Then
- GvPagos.DataSource = DtPagos
- End If
- GvPagos.DataBind()
- UpPagos.Update()
-
- GvD.DataBind()
-
- UpDatos.Update()
- UPRegistros.Update()
- End Sub
-
- Protected Sub LnkExportar_Click(sender As Object, e As EventArgs) Handles LnkExportar.Click
- GenerarPDF("Excel")
- End Sub
-
- Protected Sub ImgRefresh_Click(sender As Object, e As EventArgs) Handles ImgRefresh.Click
-
- If VerificaCorreo() Then
- CargaDatos()
- End If
-
- End Sub
-
- Private Function VerificaCorreo(Optional ValidaRowCount As Boolean = False) As Boolean
- Dim Retorno As Boolean = False
-
- Dim ObjProcess As Process = Nothing
- Dim Mensajes As String = ""
- Dim error1 As Boolean = False
- Dim CountProcesados As Integer = 0
-
- Try
- ObjProcess = New Process()
- ObjProcess.StartInfo.RedirectStandardOutput = True
- ObjProcess.StartInfo.FileName = Ejecutable
- ObjProcess.StartInfo.Arguments = $"--mod eFacturas --e {UsuarioActual.CveEmpresa} --c "
- ObjProcess.StartInfo.UseShellExecute = False
- ObjProcess.StartInfo.WindowStyle = ProcessWindowStyle.Normal
- ObjProcess.Start()
-
-
- Dim myStreamReader As StreamReader = ObjProcess.StandardOutput
-
- 'Read the standard output of the spawned process.
- Mensajes = myStreamReader.ReadLine()
- If Mensajes.Length > 0 Then
-
- Dim msgs As String() = Mensajes.Split("|"c)
- Dim NFacturas As Integer = 0
-
-
-
-
- If msgs.Length >= 2 Then
- Try
- NFacturas = msgs(0).ToEntero
- CountProcesados = msgs(0).ToEntero
- Mensajes = $"La actualización se realizó correctamente.
Facturas agregadas: { NFacturas }"
- Catch ex As Exception
- NFacturas = 0
- Mensajes = "La actualización se realizó correctamente"
- End Try
- Else
- Mensajes = "La actualización se realizó correctamente"
- End If
-
-
-
- LnkNoRecibidas_Click(LnkNoRecibias, EventArgs.Empty, ValidaRowCount:=ValidaRowCount)
-
-
- 'Else
- ' Dim Str As New StringBuilder
- ' Dim conta As Integer = 1
- ' Str.Append("Se encontraron las siguientes facturas con problema:
| Serie | Folio | Fecha | Proveedor | Importe | Motivo |
")
- ' Dim ARR As String() = Mensajes.Split("&"c)
- ' Dim ArrDetalle As String()
- ' For Each d As String In ARR
- ' Str.Append("")
- ' ArrDetalle = d.Split("|"c)
- ' For Each det As String In ArrDetalle
- ' Str.AppendFormat("| {1} | ", If(conta Mod 2 = 0, "TextoAlterno", "Texto"), det)
- ' Next
- ' Str.Append("
")
- ' conta += 1
- ' Next
- ' Str.Append("
")
- ' Mensajes = Str.ToString
- End If
- ObjProcess.WaitForExit()
- ObjProcess.Close()
- Retorno = True
- Catch ex As Exception
- error1 = True
- OnError("Ocurrió un error al ejecutar el actualizador.", ex)
- End Try
-
-
- LblFacturasProcesadasCount.Text = "Procesados:" & CountProcesados
- RegistraScript("$('#ModalBitacoraEfacturas').modal()")
- CargaDatosBitacora()
-
- 'If Not error1 Then Alert(Mensajes, TipoMensaje.MsgInformacion)
-
-
- Return Retorno
- End Function
-
- Protected Sub BtnBuscarBitacora_Click(sender As Object, e As EventArgs) Handles BtnBuscarBitacora.Click
- CargaDatosBitacora()
- End Sub
-
-
- Protected Sub LnkBitacotaFacturas_Click(sender As Object, e As EventArgs)
-
- RegistraScript("$('#ModalBitacoraEfacturas').modal()")
- CargaDatosBitacora()
- End Sub
-
-
- Private Sub CargaDatosBitacora()
-
- LblFacturasProcesadasCount.Text = ""
-
- Dim ObjCompras As New ClsCompras
-
- If ObjCompras.GetFacturasBitacoraGet(TxtFechaBitInicio.Text.ToDate, TxtFechaBitFin.Text.ToDate, UsuarioActual.CveEmpresa) Then
- GvBitacoraEfacturas.DataSource = ObjCompras.DtResultados
- Else
- GvBitacoraEfacturas.DataSource = Nothing
- End If
-
- ObjCompras.Dispose()
- GvBitacoraEfacturas.DataBind()
- UpModalBitacoraEfacturas.Update()
-
- End Sub
-
-#Region "G V D A T O S"
- Protected Sub GvDatos_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles GvD.RowDataBound
- If e.Row.RowType = DataControlRowType.DataRow Then
- e.Row.FindControl("lnkRegenerarPDF").Visible = (UsuarioActual.CveRol = 1)
- 'e.Row.FindControl("lnkDownPdf").Visible = (UsuarioActual.CveRol = 1)
- 'e.Row.FindControl("lnkXML").Visible = (UsuarioActual.CveRol = 1)
- Select Case e.Row.DBCampo("TipoComprobante")
- Case "I"
- e.Row.FCLabel("LtTipoComprobante").Text = "Ingreso"
- e.Row.FCLabel("LtTipoComprobante").CssClass = "label label-sm label-success"
- e.Row.FCLabel("LtTipoComprobante").Attributes.Add("data-toggle", "tooltip")
- e.Row.FCLabel("LtTipoComprobante").Attributes.Add("title", "Ingreso")
- Case "E"
- e.Row.FCLabel("LtTipoComprobante").Text = "Egreso"
- e.Row.FCLabel("LtTipoComprobante").CssClass = "label label-sm label-warning"
- e.Row.FCLabel("LtTipoComprobante").Attributes.Add("data-toggle", "tooltip")
- e.Row.FCLabel("LtTipoComprobante").Attributes.Add("title", "Egreso")
- Case "P"
- e.Row.FCLabel("LtTipoComprobante").Text = "Pago"
- e.Row.FCLabel("LtTipoComprobante").CssClass = "label label-sm label-primary"
- e.Row.FCLabel("LtTipoComprobante").Attributes.Add("data-toggle", "tooltip")
- e.Row.FCLabel("LtTipoComprobante").Attributes.Add("title", "Complemento Pago")
- End Select
-
- e.Row.Cells(2).Attributes.Add("data-order", e.Row.DBCampo("FechaFactura").ToDate.Ticks.ToString)
-
- If File.Exists(String.Format("{0}{1}\{2}", Destino, e.Row.DBCampo("RFCDe"), e.Row.DBCampo("XML"))) Then
- e.Row.FCLiteral("LtlXML").Text = String.Format("Ver", HttpUtility.UrlEncode(e.Row.DBCampo("RFCDe")), HttpUtility.UrlEncode(e.Row.DBCampo("XML")))
- If e.Row.DBCampo("TipoComprobante") = "P" Then
- e.Row.FCLinkButton("LnkAgregarPago").Visible = True
- End If
- Else
- e.Row.FCLiteral("LtlXML").Text = "N/D"
- If e.Row.DBCampo("TipoComprobante") = "P" Then
- e.Row.FCLinkButton("LnkAgregarPago").Visible = False
- End If
- End If
-
- If File.Exists(String.Format("{0}{1}/{2}", Destino, e.Row.DBCampo("RFCDe"), e.Row.DBCampo("PDF"))) Then
- e.Row.FCLiteral("LtlPDF").Text = String.Format("Ver", HttpUtility.UrlEncode(e.Row.DBCampo("RFCDe")), HttpUtility.UrlEncode(e.Row.DBCampo("PDF")))
- Else
- e.Row.FCLiteral("LtlPDF").Text = "N/D"
- End If
-
- If e.Row.DBCampo("FueValidado").Contiene("1", "2", "3") Then
- e.Row.FCLinkButton("ImgValidarCFDi").Visible = False
- e.Row.FCLiteral("LtlValidado").Visible = True
- If e.Row.DBCampo("FueValidado") = "2" Then
- e.Row.FCLiteral("LtlValidado").Text = "Cancelada"
- e.Row.ForeColor = Drawing.Color.Red
- e.Row.FCHyperLink("HplProveedor").ForeColor = Drawing.Color.Red
- ElseIf e.Row.DBCampo("FueValidado") = "3" Then
- e.Row.FCLiteral("LtlValidado").Text = "Omitida"
- e.Row.ForeColor = Drawing.Color.Gray
- e.Row.FCHyperLink("HplProveedor").ForeColor = Drawing.Color.Gray
- End If
- Else
- If e.Row.DBCampo("TipoFactura") = "CFD" Then
- e.Row.FCLinkButton("ImgValidarCFDi").CommandName = "ValidarCFD"
- e.Row.FCLinkButton("ImgValidarCFDi").OnClientClick = "return confirm('La factura se validó en el sitio del SAT de comprobantes fiscales?');"
- End If
- e.Row.FCLinkButton("ImgValidarCFDi").Visible = True
- e.Row.FCLiteral("LtlValidado").Visible = False
-
- End If
- If e.Row.DBCampo("CveCompra") <> "" Then
- e.Row.FCLiteral("LtlFolio").Text = String.Format("{1}", e.Row.DBCampo("CveCompra"), e.Row.DBCampo("SerieFolio")) '1\Compras\GAPC480413QL3\A-69.xml
- End If
-
- If e.Row.DBCampo("CveProveedor") = "" Then
- e.Row.FCHyperLink("HplProv").Visible = True
- e.Row.FCHyperLink("HplProv").NavigateUrl = String.Format("/Compras/Proveedores.aspx?CveFactura={0}", e.Row.DBCampo("CveFactura"))
-
- Else
-
- Dim BloquePorComplemento As Integer = e.Row.DataKey("BloquePorComplemento").ToEntero
-
- e.Row.FCHyperLink("HplProveedor").NavigateUrl = String.Format("/Compras/Proveedores.aspx?CveProveedor={0}", e.Row.DBCampo("CveProveedor"))
-
- If e.Row.DBCampo("CveCompra") = "" AndAlso (e.Row.DBCampo("FueValidado") = "1") Then ' OrElse UsuarioActual.CveEmpresa = 66
-
- If e.Row.DBCampo("TipoComprobante") = "P" Then
- e.Row.FCHyperLink("HplAgregar").Visible = False
- Else
- e.Row.FCHyperLink("HplAgregar").NavigateUrl = String.Format("/Compras/Compras.aspx?CveFactura={0}&RFC={1}", e.Row.DBCampo("CveFactura"), e.Row.DBCampo("RFCDe"))
-
- If BloquePorComplemento > 0 Then
- e.Row.FCHyperLink("HplAgregar").Enabled = False
- e.Row.FCHyperLink("HplAgregar").Attributes.Add("title", "Bloqueo por complemento")
- End If
-
- End If
-
- Else
- e.Row.FCHyperLink("HplAgregar").Visible = False
- End If
-
-
-
- End If
-
-
- If e.Row.RowState = DataControlRowState.Edit OrElse e.Row.RowState = 5 Then
- End If
-
- End If
- End Sub
- Protected Sub GvDatos_RowUpdating(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewUpdateEventArgs) Handles GvD.RowUpdating
- Dim ObjDatos As New ClsCompras
- Dim FueValidado As Integer = 0
- If GvD.Rows(e.RowIndex).FCCheckBox("ChkFueValidado").Checked Then FueValidado = 1
- If ObjDatos.UpdateEstatus(FueValidado, GvD.DataKeys(e.RowIndex).Value.ToString.ToEntero) Then
- GvD.EditIndex = -1
- BtnConsultar_Click(sender, e)
- End If
- ObjDatos.Dispose()
-
-
- CargaDatos()
- End Sub
- Protected Sub GvDatos_RowCancelingEdit(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewCancelEditEventArgs) Handles GvD.RowCancelingEdit
- GvD.EditIndex = -1
- CargaDatos()
- End Sub
-
-
- Protected Sub imgD_Click(sender As Object, e As EventArgs)
- Dim gvRow As GridViewRow = DirectCast((DirectCast(sender, LinkButton)).NamingContainer, GridViewRow)
- CveFactura = gvRow.DataKey("CveFactura").ToString.ToEntero
- Folio1 = gvRow.DataKey("SerieFolio").ToString
- Proveedor = gvRow.DataKey("NombreProveedor").ToString
- TxtDescripcion.Text = ""
- RegistraScript("$('#divDescripcion').modal()")
- UpDescripcion.Update()
- End Sub
-
- Protected Sub GvDatos_RowEditing(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewEditEventArgs) Handles GvD.RowEditing
- GvD.EditIndex = e.NewEditIndex
- CargaDatos()
- End Sub
-
- Protected Sub GvDatos_RowCommand(sender As Object, e As GridViewCommandEventArgs) Handles GvD.RowCommand
- Dim ImgBtn As LinkButton = DirectCast(e.CommandSource, LinkButton)
- Dim GvRow As GridViewRow = DirectCast(ImgBtn.BindingContainer, GridViewRow)
- Dim ObjDatos As New ClsCompras
- Dim Correcto As Boolean = False
-
- Select Case e.CommandName
- Case "ValidarCFDi"
- Dim ObjValidacion As New ClsValidaCFDi(GvRow.DataKey("UUID"), GvRow.DataKey("RFCDe"), GvRow.DataKey("RFCPara"), GvRow.DataKey("Total").ToDecimal)
- If ObjValidacion.EsValida > 0 Then
- If ObjValidacion.EsValida = 2 Then
- Alert("La factura está cancelada ante el SAT.", TipoMensaje.MsgInformacion)
- End If
- Correcto = ObjDatos.UpdateEstatus(ObjValidacion.EsValida, GvRow.DataKey("CveFactura").ToEntero)
- Else
- Alert("La Factura no se pudo validar.", TipoMensaje.MsgAdvertencia)
- End If
- ObjValidacion.Dispose()
- Case "ValidarCFD"
- Correcto = ObjDatos.UpdateEstatus(1, GvRow.DataKey("CveFactura").ToEntero)
-
- Case "Omitir"
- Correcto = ObjDatos.UpdateEstatus(3, GvRow.DataKey("CveFactura").ToEntero)
- End Select
-
- ObjDatos.Dispose()
- If Correcto Then
- CargaDatos()
- End If
-
- End Sub
-#End Region
-
-#Region "G V P A G O S"
- Protected Sub GvPagos_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles GvPagos.RowDataBound
- If e.Row.RowType = DataControlRowType.DataRow Then
-
- If e.Row.DBCampo("TipoComprobante") = "P" Then
- e.Row.FCLabel("LtTipoComprobante").Text = "Pago"
- e.Row.FCLabel("LtTipoComprobante").CssClass = "label label-sm label-primary"
- e.Row.FCLabel("LtTipoComprobante").Attributes.Add("data-toggle", "tooltip")
- e.Row.FCLabel("LtTipoComprobante").Attributes.Add("title", "Complemento Pago")
- End If
-
- e.Row.Cells(2).Attributes.Add("data-order", e.Row.DBCampo("FechaFactura").ToDate.Ticks.ToString)
-
- If File.Exists(String.Format("{0}{1}\{2}", Destino, e.Row.DBCampo("RFCDe"), e.Row.DBCampo("XML"))) Then
- e.Row.FCLiteral("LtlXML").Text = String.Format("Ver", HttpUtility.UrlEncode(e.Row.DBCampo("RFCDe")), HttpUtility.UrlEncode(e.Row.DBCampo("XML")))
- If e.Row.DBCampo("TipoComprobante") = "P" And e.Row.DBCampo("FueValidado") = "1" Then
- e.Row.FCLinkButton("LnkAgregarPagoP").Visible = True
- End If
- Else
- e.Row.FCLiteral("LtlXML").Text = "N/D" ' String.Format("{0}{1}\{2}", Destino, e.Row.DBCampo("RFCDe"), e.Row.DBCampo("XML")) '
- If e.Row.DBCampo("TipoComprobante") = "P" Then
- e.Row.FCLinkButton("LnkAgregarPagoP").Visible = False
- End If
- End If
-
- If File.Exists(String.Format("{0}{1}/{2}", Destino, e.Row.DBCampo("RFCDe"), e.Row.DBCampo("PDF"))) Then
- e.Row.FCLiteral("LtlPDF").Text = String.Format("Ver", HttpUtility.UrlEncode(e.Row.DBCampo("RFCDe")), HttpUtility.UrlEncode(e.Row.DBCampo("PDF")))
- Else
- e.Row.FCLiteral("LtlPDF").Text = "N/D" ' String.Format("{0}{1}/{2}", Destino, e.Row.DBCampo("RFCDe"), e.Row.DBCampo("PDF"))
- End If
-
- If e.Row.DBCampo("FueValidado").Contiene("1", "2", "3") Then
- e.Row.FCLinkButton("ImgValidarCFDi").Visible = False
- e.Row.FCLiteral("LtlValidado").Visible = True
- If e.Row.DBCampo("FueValidado") = "2" Then
- e.Row.FCLiteral("LtlValidado").Text = "Cancelada"
- e.Row.ForeColor = Drawing.Color.Red
- e.Row.FCHyperLink("HplProveedor").ForeColor = Drawing.Color.Red
- ElseIf e.Row.DBCampo("FueValidado") = "3" Then
- e.Row.FCLiteral("LtlValidado").Text = "Omitida"
- e.Row.ForeColor = Drawing.Color.Gray
- e.Row.FCHyperLink("HplProveedor").ForeColor = Drawing.Color.Gray
- End If
- Else
- If e.Row.DBCampo("TipoFactura") = "CFD" Then
- e.Row.FCLinkButton("ImgValidarCFDi").CommandName = "ValidarCFD"
- e.Row.FCLinkButton("ImgValidarCFDi").OnClientClick = "return confirm('La factura se validó en el sitio del SAT de comprobantes fiscales?');"
- End If
- e.Row.FCLinkButton("ImgValidarCFDi").Visible = True
- e.Row.FCLiteral("LtlValidado").Visible = False
-
- End If
- If e.Row.DBCampo("CveCompra") <> "" Then
- e.Row.FCLiteral("LtlFolio").Text = String.Format("{1}", e.Row.DBCampo("CveCompra"), e.Row.DBCampo("SerieFolio")) '1\Compras\GAPC480413QL3\A-69.xml
- End If
-
- If e.Row.DBCampo("CveProveedor") = "" Then
- e.Row.FCHyperLink("HplProv").Visible = True
- e.Row.FCHyperLink("HplProv").NavigateUrl = String.Format("/Compras/Proveedores.aspx?CveFactura={0}", e.Row.DBCampo("CveFactura"))
-
- Else
- e.Row.FCHyperLink("HplProveedor").NavigateUrl = String.Format("/Compras/Proveedores.aspx?CveProveedor={0}", e.Row.DBCampo("CveProveedor"))
-
- If e.Row.DBCampo("CveCompra") = "" AndAlso (e.Row.DBCampo("FueValidado") = "1") Then ' OrElse UsuarioActual.CveEmpresa = 66
- '
- If e.Row.DBCampo("TipoComprobante") = "P" Then
- e.Row.FCHyperLink("HplAgregarP").Visible = False
- Else
- e.Row.FCHyperLink("HplAgregarP").NavigateUrl = String.Format("/Compras/Compras.aspx?CveFactura={0}&RFC={1}", e.Row.DBCampo("CveFactura"), e.Row.DBCampo("RFCDe"))
- End If
-
-
- Else
- 'si ya tiene cvecompra es que ya está validada
- e.Row.FCHyperLink("HplAgregarP").Visible = False
- End If
-
- End If
-
-
- Dim CveComplementoPagoCompra As Integer = e.Row.DataKey("CveComplementoPagoCompra").ToString.ToEntero
-
-
- If CveComplementoPagoCompra > 0 Then
- e.Row.FCLinkButton("LnkAgregarPagoP").CssClass = "btn btn-sm green"
- e.Row.FCLinkButton("LnkAgregarPagoP").Text = ""
- 'e.Row.FCLinkButton("LnkAgregarPagoP").ToolTip = "Ver vinculación"
- e.Row.FCLinkButton("LnkAgregarPagoP").Attributes.Add("Title", "Ver vinculación")
- Else
- e.Row.FCLinkButton("LnkAgregarPagoP").CssClass = "btn btn-sm blue"
- e.Row.FCLinkButton("LnkAgregarPagoP").Text = ""
- 'e.Row.FCLinkButton("LnkAgregarPagoP").ToolTip = "Vincular Pago"
- e.Row.FCLinkButton("LnkAgregarPagoP").Attributes.Add("Title", "Vincular Pago")
- End If
-
- End If
- End Sub
- Protected Sub GvPagos_RowUpdating(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewUpdateEventArgs) Handles GvPagos.RowUpdating
- Dim ObjDatos As New ClsCompras
- Dim FueValidado As Integer = 0
- If GvPagos.Rows(e.RowIndex).FCCheckBox("ChkFueValidado").Checked Then FueValidado = 1
- If ObjDatos.UpdateEstatus(FueValidado, GvD.DataKeys(e.RowIndex).Value.ToString.ToEntero) Then
- GvPagos.EditIndex = -1
- End If
- ObjDatos.Dispose()
- CargaDatos()
- End Sub
- Protected Sub GvPagos_RowCancelingEdit(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewCancelEditEventArgs) Handles GvPagos.RowCancelingEdit
- GvPagos.EditIndex = -1
- CargaDatos()
- End Sub
- Protected Sub GvPagos_RowEditing(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewEditEventArgs) Handles GvPagos.RowEditing
- GvPagos.EditIndex = e.NewEditIndex
- CargaDatos()
- End Sub
- Protected Sub imgDP_Click(sender As Object, e As EventArgs)
- Dim gvRow As GridViewRow = DirectCast((DirectCast(sender, LinkButton)).NamingContainer, GridViewRow)
- CveFactura = gvRow.DataKey("CveFactura").ToString.ToEntero
- Folio1 = gvRow.DataKey("SerieFolio").ToString
- Proveedor = gvRow.DataKey("NombreProveedor").ToString
- TxtDescripcion.Text = ""
- RegistraScript("$('#divDescripcionPago').modal()")
- UpDescripcionPago.Update()
- End Sub
-
- Protected Sub GvPagos_RowCommand(sender As Object, e As GridViewCommandEventArgs) Handles GvPagos.RowCommand
- Dim ImgBtn As LinkButton = DirectCast(e.CommandSource, LinkButton)
- Dim GvRow As GridViewRow = DirectCast(ImgBtn.BindingContainer, GridViewRow)
- Dim ObjDatos As New ClsCompras
- Dim Correcto As Boolean = False
-
- Select Case e.CommandName
- Case "ValidarCFDi"
- Dim ObjValidacion As New ClsValidaCFDi(GvRow.DataKey("UUID"), GvRow.DataKey("RFCDe"), GvRow.DataKey("RFCPara"), 0)
- If ObjValidacion.EsValida > 0 Then
- If ObjValidacion.EsValida = 2 Then
- Alert("La factura está cancelada ante el SAT.", TipoMensaje.MsgInformacion)
- End If
- Correcto = ObjDatos.UpdateEstatus(ObjValidacion.EsValida, GvRow.DataKey("CveFactura").ToEntero)
- Else
- Alert("La Factura no se pudo validar.", TipoMensaje.MsgAdvertencia)
- End If
- ObjValidacion.Dispose()
- Case "ValidarCFD"
- Correcto = ObjDatos.UpdateEstatus(1, GvRow.DataKey("CveFactura").ToEntero)
-
- Case "Omitir"
- Correcto = ObjDatos.UpdateEstatus(3, GvRow.DataKey("CveFactura").ToEntero)
- End Select
-
- ObjDatos.Dispose()
- If Correcto Then
- CargaDatos()
- End If
- End Sub
-#End Region
- Protected Sub ImgCFDiMasivo_Click(sender As Object, e As EventArgs) Handles LnkCFDiMasivo.Click
- Dim ObjDatos As New ClsCompras
- ObjDatos.IniciaTransacSQL()
- Dim ErrorTrans As Boolean = False
- If Tab.ActiveTabIndex = 0 Then
- For Each GvRow As GridViewRow In GvD.Rows
- If GvRow.DataKey("TipoFactura") = "CFDi" AndAlso GvRow.DataKey("FueValidado").Contiene("0", "1") Then
- Dim ObjValidacion As New ClsValidaCFDi(GvRow.DataKey("UUID"), GvRow.DataKey("RFCDe"), GvRow.DataKey("RFCPara"), GvRow.DataKey("Total").ToDecimal)
- If ObjValidacion.EsValida > 0 Then
- If Not ObjDatos.UpdateEstatus(ObjValidacion.EsValida, GvRow.DataKey("CveFactura").ToEntero) Then
- ErrorTrans = True
- End If
- End If
- ObjValidacion.Dispose()
- End If
- Next
- ElseIf Tab.ActiveTabIndex = 1 Then
- For Each GvRow As GridViewRow In GvPagos.Rows
- If GvRow.DataKey("TipoFactura") = "CFDi" AndAlso GvRow.DataKey("FueValidado").Contiene("0", "1") Then
- Dim ObjValidacion As New ClsValidaCFDi(GvRow.DataKey("UUID"), GvRow.DataKey("RFCDe"), GvRow.DataKey("RFCPara"), 0)
- If ObjValidacion.EsValida > 0 Then
- If Not ObjDatos.UpdateEstatus(ObjValidacion.EsValida, GvRow.DataKey("CveFactura").ToEntero) Then
- ErrorTrans = True
- End If
- End If
- ObjValidacion.Dispose()
- End If
- Next
- End If
- If Not ErrorTrans Then
- ObjDatos.Commit()
- Alert("La verificación masiva ha terminado", TipoMensaje.MsgInformacion)
- CargaDatos()
- Else
- ObjDatos.RollBack()
- End If
- ObjDatos.Dispose()
- End Sub
- Protected Sub LnkNoRecibidas_Click(sender As Object, e As EventArgs, Optional ValidaRowCount As Boolean = False) Handles LnkNoRecibias.Click
- Dim DtNoRecibidas As New DataTable
- Dim Ruta As String = String.Format("{0}\Empresas\{1}\Compras\NoRecibidas-{1}.xml", AppDomain.CurrentDomain.BaseDirectory, UsuarioActual.CveEmpresa)
- Dim Str As New StringBuilder
- If IO.File.Exists(Ruta) Then
- DtNoRecibidas.ReadXml(Ruta)
-
- Dim conta As Integer = 1
- Str.Append("Se encontraron las siguientes facturas con problema:
| Serie | Folio | Fecha | Proveedor | Importe | Motivo | Correo | F. Recepción |
")
-
- For Each dr As DataRow In DtNoRecibidas.FiltraParametros("", "Fecha DESC").Rows
-
- Str.AppendFormat("", If(conta Mod 2 = 0, "TextoAlterno", "Texto"))
-
- Str.AppendFormat("| {0} | ", dr("Serie"))
- Str.AppendFormat("{0} | ", dr("Folio"))
- Str.AppendFormat("{0} | ", If(dr("Fecha").ToString <> "", dr("Fecha").ToString.ToDate.ToShortDateString, ""))
- Str.AppendFormat("{0} | ", dr("Proveedor"))
- Str.AppendFormat("{0} | ", dr("Importe").ToString.ToDouble.FormatoNumero)
- Str.AppendFormat("{0} | ", dr("Motivo"))
- Str.AppendFormat("{0} | ", If(dr("Correo").ToString.Length > 20, dr("Correo").ToString.Substring(0, 20), dr("Correo").ToString()))
- Str.AppendFormat("{0} | ", dr("FechaRecepcion").ToString.ToDate.ToShortDateString)
-
- Str.Append("
")
- conta += 1
- Next
- Str.Append("
")
- Else
- Str.Append("No se encontraron facturas pendientes de recibir.")
- End If
-
- If ValidaRowCount Then 'si las facturas no recividas son matores a cero se muestra el mensaje
- If DtNoRecibidas.Rows.Count > 0 Then
- Alert(Str.ToString, TipoMensaje.MsgInformacion)
- End If
- Else
- Alert(Str.ToString, TipoMensaje.MsgInformacion)
- End If
-
- DtNoRecibidas.Dispose()
-
- CargaDatos()
- End Sub
-
-#Region "G E N E R A P D F "
- Private Sub GenerarPDF(Optional Tipo As String = "PDF")
- Dim ObjDatos As New ClsCompras
- Dim FechaI As String = txtFechaI.Text
- Dim FechaF As String = txtFechaF.Text
- If txtFechaI.Text = "" Then FechaI = "-1"
- If txtFechaF.Text = "" Then FechaF = "-1"
- Dim Folio = If(TxtFolio.Text.Trim.Length > 0, String.Format("%{0}%", TxtFolio.Text.Trim.ToUpper), "-1")
- Dim Proveedor = If(TxtProveedor.Text.Trim.Length > 0, String.Format("%{0}%", TxtProveedor.Text.Trim.ToUpper.Replace(" ", "%")), "-1")
-
- If ObjDatos.GetFacturas(-1, Folio, txtFechaI.Text.Trim.ToDate, txtFechaF.Text.Trim.ToDate, "-1", Proveedor, DdlValidado.SelectedValue.ToEntero, DdlResponsable.SelectedValue.ToEntero, DdlClasificacionProv.SelectedValue.ToEntero, DdlCveTipoProveedor.SelectedValue.ToEntero, DdlTipoComprobante.SelectedValue.ToString, UsuarioActual.CveEmpresa) Then
-
- Dim Imagen As New System.IO.FileInfo(String.Format("{0}/Logo.png", UsuarioActual.Empresa.Ruta))
- Dim logouri = String.Format("{0}://{1}:{2}/Empresas/{3}/Logo.png", Request.Url.Scheme, Request.Url.Host, Request.Url.Port, UsuarioActual.CveEmpresa)
-
- Dim dt As DataTable
-
-
-
- If Tab.ActiveTabIndex = 0 Then
- dt = ObjDatos.DtResultados.FiltraParametros("TipoComprobante <> 'P'")
- Else
- dt = ObjDatos.DtResultados.FiltraParametros("TipoComprobante = 'P' ")
- End If
-
-
-
- Dim params As New List(Of ReportParameter)
- params.Add(New ReportParameter("NombreEmpresa", UsuarioActual.Empresa.Empresa))
- params.Add(New ReportParameter("FechaInicio", FechaI))
- params.Add(New ReportParameter("FechaFin", FechaF))
- params.Add(New ReportParameter("UsuarioImprimio", UsuarioActual.Nombre))
- params.Add(New ReportParameter("FechaImpresion", Now.ToDateTime.ToShortDateString))
- If Imagen.Exists Then
- params.Add(New ReportParameter("LogoPath", logouri))
- Else
- params.Add(New ReportParameter("LogoPath", ""))
- End If
-
- ImprimirPDF("Empresas/Grales/Formatos/RepFacturas.rdlc", dt, params, $"FacturasBuzon_{Now.ToString("yyyyMMyyddmmss")}", Tipo)
- Else
- Alert("No hay datos consultados", TipoMensaje.MsgAdvertencia)
- End If
-
- End Sub
- Protected Sub LnkPdf_Click(sender As Object, e As EventArgs) Handles LnkPdf.Click
- GenerarPDF()
- End Sub
-#End Region
-
-#Region "S U B I R - F A C T U R A S - M A S I V A M E N T E"
- Private Sub LnkSubirFacturas_Click(sender As Object, e As EventArgs) Handles LnkSubirFacturas.Click
- RegistraScript(String.Format("$('#{0}').modal();", "ModalFacturas"))
- End Sub
- Private Sub BtnGuardarFaturas_Click(sender As Object, e As EventArgs) Handles BtnGuardarFaturas.Click
-
- If UsuarioActual.Empresa.SendMail.Trim.Length = 0 Then
- Alert("La Empresa no tiene configurado el envió de correo.", TipoMensaje.MsgAdvertencia)
- Exit Sub
- End If
-
-
-
- Dim sw As New Diagnostics.Stopwatch
- Dim swmili As Long = 0
- Dim swTiempo As New StringBuilder
- sw.Start()
-
-
- Dim FileExtension As String = "-1"
- Dim filesgral As List(Of Archivo) = Anexo.getfiles().Archivos
- Dim filemove As String = ""
-
- Dim ListXML As New List(Of String)
- Dim ListPDF As New List(Of String)
- Dim ListDirectorios As New List(Of String)
-
-
-
- For Each fileItem As Archivo In filesgral
- FileExtension = IO.Path.GetExtension(String.Format("{0}Temp\{1}", AppDomain.CurrentDomain.BaseDirectory, fileItem.filename)).Replace(".", "")
- filemove = fileItem.filename
-
- If filemove <> "" Then
- filemove.FilesMove("", String.Format("Empresas\{0}\Temp\Facturas", UsuarioActual.CveEmpresa))
- 'AGREGA XML A LA LISTA
- If FileExtension.ToUpper = "XML" Then
- ListXML.Add(String.Format("{0}Temp\Facturas\{1}", UsuarioActual.Empresa.Ruta, filemove))
- End If
-
- End If
- Next
-
-
- Dim fileEntries As String() = Directory.GetFiles(String.Format("{0}Empresas\{1}\Temp\Facturas", AppDomain.CurrentDomain.BaseDirectory, UsuarioActual.CveEmpresa))
-
- Dim ListaDirectoriosTemporales As New List(Of String)
- Dim ListaComprimidos As New List(Of String)
-
- 'Dim fileName As String
- Dim ArchivoExtension As String
- Dim sOnlyFilename As String
-
- For Each filePath In fileEntries
- ArchivoExtension = IO.Path.GetExtension(String.Format("{0}", filePath)).Replace(".", "")
- sOnlyFilename = System.IO.Path.GetFileName(filePath)
- If ArchivoExtension.ToUpper = "RAR" Or ArchivoExtension.ToUpper = "ZIP" Then
- ListaComprimidos.Add(filePath)
- 'CREO DIRECTORIO ALEATORIO
- Dim Aleatorio As New Random
- Dim TempDirectorio As String = String.Format("{0}Empresas\{1}\{2}\{3}{4}", Request.PhysicalApplicationPath, UsuarioActual.CveEmpresa, "Temp\Facturas", Date.Now.Ticks, Aleatorio.Next(100, 999))
- Directory.CreateDirectory(TempDirectorio)
- ListaDirectoriosTemporales.Add(TempDirectorio)
- 'AGREGA DIRECTORIO A LA LISTA
- ListDirectorios.Add(TempDirectorio)
- 'DESCOMPRIME RAR
- DescomprimeFacturas(filePath, TempDirectorio)
- 'AGREGA XML A LA LISTA
- ListXML.AddRange(Directory.GetFiles(TempDirectorio))
- End If
-
-
- Next
-
- Dim Arreglo As New ArrayList()
- ' Dim Archivos As String() = Directory.GetFiles(String.Format("{0}Empresas\{1}\Temp", AppDomain.CurrentDomain.BaseDirectory, UsuarioActual.CveEmpresa))
- 'Dim NombreArchivo As String
- Dim Bandera = True
- Dim Retorno = ""
- Dim ListaArchivosMail As New List(Of ClsSisMail.ArchivoMail)
-
-
- sw.Stop()
- swTiempo.AppendFormat("ReadFiles: ({0}) {1} ", sw.ElapsedMilliseconds - swmili, sw.ElapsedMilliseconds)
- swmili = sw.ElapsedMilliseconds
- sw.Start()
-
- Anexo.Text = ""
- UPAddFacturas.Update()
-
- For Each filePath In ListXML
-
- If File.Exists(filePath) Then
- Dim ArchivoAdjunto As New ClsSisMail.ArchivoMail
- ArchivoAdjunto.ArchivoBinario = File.ReadAllBytes(filePath)
- ArchivoAdjunto.Ruta = filePath
- ArchivoAdjunto.NombreArchivo = New FileInfo(filePath).Name
-
- ListaArchivosMail.Add(ArchivoAdjunto)
-
- End If
-
- Next
-
- sw.Stop()
- swTiempo.AppendFormat("Fill ClsSisMail.ArchivoMail: ({0}) {1} ", sw.ElapsedMilliseconds - swmili, sw.ElapsedMilliseconds)
- swmili = sw.ElapsedMilliseconds
- sw.Start()
- If ListaArchivosMail.Count > 0 Then
-
- Dim Correo As New ClsSisMail
-
- 'If Correo.SendMail(UsuarioActual.Empresa, "sig.buzon@gmail.com", "Facturas Efacturas " & Now.ToString("yyyyMMddhhmmss"), "Facturas", Archivos:=ListaArchivosMail) Then
-
-
-
-
- If Correo.SendMail(UsuarioActual.Empresa, UsuarioActual.Empresa.Buzon_Mail, "Facturas Efacturas " & Now.ToString("yyyyMMddhhmmss"), "Facturas", Archivos:=ListaArchivosMail) Then
-
- sw.Stop()
- swTiempo.AppendFormat("EnvioCorreo: ({0}) {1} ", sw.ElapsedMilliseconds - swmili, sw.ElapsedMilliseconds)
- swmili = sw.ElapsedMilliseconds
- sw.Start()
- System.Threading.Thread.Sleep(3000)
- 'ProcesaBuzon()
-
- sw.Stop()
- swTiempo.AppendFormat("espera: ({0}) {1} ", sw.ElapsedMilliseconds - swmili, sw.ElapsedMilliseconds)
- swmili = sw.ElapsedMilliseconds
- sw.Start()
- VerificaCorreo(True)
-
- sw.Stop()
- swTiempo.AppendFormat("Verifica En la app: ({0}) {1} ", sw.ElapsedMilliseconds - swmili, sw.ElapsedMilliseconds)
- swmili = sw.ElapsedMilliseconds
- sw.Start()
- Else
- Alert("Se presento un error al procesar las facturas.")
- End If
-
- End If
-
-
- sw.Stop()
- swTiempo.AppendFormat("BorrarInicio: ({0}) {1} ", sw.ElapsedMilliseconds - swmili, sw.ElapsedMilliseconds)
- swmili = sw.ElapsedMilliseconds
- sw.Start()
- For Each filePath In ListXML
- Try
- File.Delete(filePath)
- Catch ex As Exception
- End Try
- Next
-
- For Each s As String In ListaComprimidos
- Try
- File.Delete(s)
- Catch ex As Exception
- End Try
- Next
-
- For Each d As String In ListaDirectoriosTemporales
- Try
- Directory.Delete(d, True)
- Catch ex As Exception
- End Try
- Next
-
-
- sw.Stop()
- swTiempo.AppendFormat("BorrarEnd: ({0}) {1} ", sw.ElapsedMilliseconds - swmili, sw.ElapsedMilliseconds)
- swmili = sw.ElapsedMilliseconds
-
- GuardaLogefacturas(swTiempo.ToString())
-
-
- 'ArchivoExtension = IO.Path.GetExtension(String.Format("{0}", filePath)).Replace(".", "")
- 'NombreArchivo = System.IO.Path.GetFileName(filePath)
- 'If ArchivoExtension.ToUpper = "XML" Then
- ' Dim ArchivoInfo As New FileInfo(filePath)
- ' Dim Fact2 As Modelos.eFactura = GuardaArchivoXML(filePath)
-
- ' If Fact2 IsNot Nothing Then
- ' Fact2.DirectorioTemporal = ArchivoInfo.DirectoryName & "\"
- ' Arreglo.Add(Fact2)
- ' End If
- 'End If
-
-
- 'If Arreglo.Count > 0 Then
- ' For Each Fact As Modelos.eFactura In Arreglo
- ' ' si es exploraciones, no debe de insertar del 2013
-
- ' If UsuarioActual.CveEmpresa = 13 And Convert.ToDateTime(Fact.Fecha).Year < 2014 And Fact.TipodeComprobante <> "egreso" Then
- ' Bandera = False
- ' 'ModExtensiones.GuardaLog("'*******noingreso :" + Fact.ArchivoXML + " RFC: " + tRF + " Anio" + Convert.ToDateTime(Fact.Fecha).Year)
- ' End If
-
- ' 'por default, no alimentar facturas menores al 2013
-
- ' If Convert.ToDateTime(Fact.Fecha).Year < 2013 Then
- ' Bandera = False
- ' 'ModExtensiones.GuardaLog("'*******noingreso :" + Fact.ArchivoXML + " RFC: " + tRF + " Anio" + Convert.ToDateTime(Fact.Fecha).Year)
- ' End If
- ' If Bandera Then
- ' If Not String.IsNullOrEmpty(Fact.TFDUUID) Then
- ' Dim Valida As New ClsValidaCFDi(Fact.TFDUUID, Fact.EmisorRFC, Fact.ReceptorRFC, Fact.Total, Fact.Fecha)
- ' If Valida.EsValida = 1 Then
- ' Fact.Validada = 1
- ' End If
- ' Valida.Dispose()
-
- ' If Not String.IsNullOrEmpty(Fact.ArchivoPDF) Then
- ' Retorno = AgregaFactura(Fact)
- ' Else
- ' If GeneraPDF(Fact.DirectorioTemporal, Fact) Then
- ' ListPDF.Add(Fact.ArchivoPDF)
- ' Retorno = AgregaFactura(Fact)
- ' ' ModExtensiones.GuardaLog("'*******se genero el pdf :" + String.Format("{0}Empresas\{1}\Temp", AppDomain.CurrentDomain.BaseDirectory, UsuarioActual.CveEmpresa) + Fact.ArchivoXML + " RFC: " + tRF + " Anio" + Convert.ToDateTime(Fact.Fecha).Year + "Retorno:" + Retorno)
- ' Else
- ' ' ModExtensiones.GuardaLog("'*******no se genero el pdf :" + String.Format("{0}Empresas\{1}\Temp", AppDomain.CurrentDomain.BaseDirectory, UsuarioActual.CveEmpresa) + Fact.ArchivoXML + " RFC: " + tRF + " Anio" + Convert.ToDateTime(Fact.Fecha).Year + "Retorno:" + Retorno)
-
- ' End If
- ' End If
- ' End If
- ' End If
-
- ' Bandera = True
- ' Try
- ' If File.Exists(String.Format("{0}{1}", Fact.DirectorioTemporal, Fact.ArchivoXML)) Then
- ' File.Delete(String.Format("{0}{1}", Fact.DirectorioTemporal, Fact.ArchivoXML))
- ' End If
-
- ' If File.Exists(String.Format("{0}{1}", Fact.DirectorioTemporal, Fact.ArchivoPDF)) Then
- ' File.Delete(String.Format("{0}{1}", Fact.DirectorioTemporal, Fact.ArchivoPDF))
- ' End If
- ' Catch ex As Exception
-
- ' End Try
- ' Next
- 'End If
-
-
- RegistraScript(String.Format("$('#{0}').modal('hide');", "ModalFacturas"))
- 'Alert(String.Format("Se cargaron {0} Facturas", Arreglo.Count), TipoMensaje.MsgInformacion)
- End Sub
-
- Public Sub GuardaLogefacturas(Str As String)
- Dim ArchivoW As StreamWriter
- Dim strLineaTMP As String
-
- ' strLineaTMP = Chr(13) & Chr(10) & Day(Now) & "/" & Month(Now) & "/" & Year(Now) & " " & Hour(Now) & ":" & Minuto & ". " & Str & Chr(13) & Chr(10)
- strLineaTMP = String.Format("{0}{1}Log: {2}{3}:{4}", Chr(13), Chr(10), Str, DateTime.Now.ToShortDateString, DateTime.Now.ToShortTimeString)
- Try
- ArchivoW = New StreamWriter(String.Format("{0}\Logefacturas.txt", AppDomain.CurrentDomain.BaseDirectory), True, System.Text.Encoding.UTF8)
- Catch ex As UnauthorizedAccessException
- 'Alert("No hay permisos para guardar en el Log.", Extensiones.TipoMensaje.MsgError)
- Exit Sub
- Catch ex As Exception
- Exit Sub
- End Try
-
- Try
- ArchivoW.WriteLine(strLineaTMP)
- Catch
- End Try
-
- ArchivoW.Close()
- ArchivoW.Dispose()
- End Sub
- Private Function AgregaFactura(Fact As Modelos.eFactura) As String
- Dim Retorno As String = ""
- Dim Correcto As Boolean = False
-
- If Fact.Version = "3.2" Then Fact.TipodeComprobante = Fact.TipodeComprobante.Substring(0, 1)
-
-
- Dim ObjDatos As New ClsCompras
- ObjDatos.IniciaTransacSQL()
- ObjDatos.CveFactura = 0
- Dim Ret As Integer = ObjDatos.AddFactura(Fact.Serie, Fact.Folio, Convert.ToDateTime(Fact.Fecha), Fact.EmisorNombre, Fact.EmisorRFC, Fact.subTotal,
- Fact.TrasladoIVA, Fact.Total, Fact.TFDUUID, Fact.ReceptorRFC, Fact.ArchivoXML, Fact.ArchivoPDF,
- Fact.Version, Fact.Descuento, Fact.Moneda, Fact.TipodeComprobante, Fact.TipoCambio, Fact.Validada,
- Fact.CveEmpresa, Fact.sUPPrefijo)
-
- If Ret >= 0 Then
- If Not Directory.Exists(Destino + Fact.EmisorRFC) Then
- Directory.CreateDirectory(Destino + Fact.EmisorRFC)
- End If
- 'Try
- ' If File.Exists(Destino & Retorno.EmisorRFC & "\" & NombreArchivo) Then File.Delete(Destino & Retorno.EmisorRFC & "\" & NombreArchivo)
- ' File.Move(Temporal & NombreArchivo, Destino & Retorno.EmisorRFC & "\" & NombreArchivo)
-
- 'Catch ex As IOException
- ' GuardaLog("'ERROR :" & ex.Message)
- 'End Try
-
- Select Case Ret
- Case 0
-
- Correcto = True
- Dim RRutaDestino As String = String.Format("{0}{1}\{2}.xml", Destino, Fact.EmisorRFC, ObjDatos.CveFactura)
- 'ModExtensiones.GuardaLog(String.Format(" '--------{0} Compra ya insertada : {1}{2} - {3}", ContadorGeneral, Fact.Serie, Fact.Folio, RRutaDestino))
-
- If Not File.Exists(RRutaDestino) Then
- File.Move(String.Format("{0}Temp\{1}", AppDomain.CurrentDomain.BaseDirectory, Fact.ArchivoXML), RRutaDestino)
- ObjDatos.UpdateArchivo(ObjDatos.CveFactura, "XML")
- ModExtensiones.GuardaLog(" '--------XML Actualizado ")
- End If
-
- Correcto = True
- Exit Select
- Case 1
- 'muevo el archivo y lo renombro
- Dim StrMover As String = ""
- Try
- File.Move(String.Format("{0}\{1}", Fact.DirectorioTemporal, Fact.ArchivoXML), String.Format("{0}{1}\{2}.xml", Destino, Fact.EmisorRFC, ObjDatos.CveFactura))
- File.Move(String.Format("{0}\{1}", Fact.DirectorioTemporal, Fact.ArchivoPDF), String.Format("{0}{1}\{2}.pdf", Destino, Fact.EmisorRFC, ObjDatos.CveFactura))
- ModExtensiones.GuardaLog(" '++++++++ Archivo :" + String.Format("{0}\{1}", Fact.DirectorioTemporal, Fact.ArchivoXML) + " - " + String.Format("{0}{1}\{2}.xml", Destino, Fact.EmisorRFC, ObjDatos.CveFactura))
- ModExtensiones.GuardaLog(" '++++++++ Archivo :" + String.Format("{0}\{1}", Fact.DirectorioTemporal, Fact.ArchivoPDF) + " - " + String.Format("{0}{1}\{2}.pdf", Destino, Fact.EmisorRFC, ObjDatos.CveFactura))
- 'si se movieron los dos archivos, los marca como correcto
- If File.Exists(String.Format("{0}{1}\{2}.xml", Destino, Fact.EmisorRFC, ObjDatos.CveFactura)) AndAlso File.Exists(String.Format("{0}{1}\{2}.pdf", Destino, Fact.EmisorRFC, ObjDatos.CveFactura)) Then
- Correcto = True
- End If
- Catch ex As Exception
- StrMover = ex.Message
- End Try
-
-
- ModExtensiones.GuardaLog(Convert.ToString(" '++++++++ Compra Insertada :" + Fact.Serie + Fact.Folio + " - Correcto:" + (If(Correcto, "Si", "No" + " Obs: "))) & StrMover)
- Exit Select
- End Select
- End If
- If Correcto Then
- ObjDatos.Commit()
- 'ya se insertó o está insertada
- Dim Idioma As New CultureInfo("es-MX")
- 'regreso el format 2014-07 Julio
- Retorno = Fact.Fecha.ToDate().ToString("yyyy-MM MMMM", Idioma)
- Else
- ObjDatos.RollBack()
- End If
- ObjDatos.Dispose()
-
- Return Retorno
-
- End Function
- Private Sub CargarFacturas(PathArchivo As String, NombreArchivo As String)
- Dim RFC As String = CargaEmisordeXML(String.Format("{0}", PathArchivo), "RFC", UsuarioActual.Empresa.RFC)
- If RFC IsNot Nothing Then
- If NombreArchivo <> "" Then
- DirectoryExistsCreate(String.Format("{0}Compras", UsuarioActual.Empresa.Ruta))
- DirectoryExistsCreate(String.Format("{0}Compras\{1}", UsuarioActual.Empresa.Ruta, RFC.ToUpper))
-
- Try
- File.Move(PathArchivo, String.Format("{0}Empresas\{1}\Compras\{2}\{3}", AppDomain.CurrentDomain.BaseDirectory, UsuarioActual.CveEmpresa, RFC.ToUpper, NombreArchivo))
- Catch ex As Exception
- Alert("Error")
- End Try
-
- 'NombreArchivo.FilesMove(NombreArchivo, String.Format("Empresas\{0}\Compras\{1}", UsuarioActual.CveEmpresa, RFC.ToUpper))
- End If
- End If
- End Sub
- Private Sub DescomprimeFacturas(PathArchivo As String, Directorio As String)
- If Not Directory.Exists(Directorio) Then
- Directory.CreateDirectory(Directorio)
- End If
- Using archive As ZipArchive = ZipFile.OpenRead(String.Format("{0}", PathArchivo))
-
- For Each entry As ZipArchiveEntry In archive.Entries
- If entry.FullName.EndsWith(".xml", StringComparison.OrdinalIgnoreCase) Then
-
- 'If File.Exists(String.Format("{0}Empresas\{1}\Temp\{2}\{3}", AppDomain.CurrentDomain.BaseDirectory, UsuarioActual.CveEmpresa, Directorio, entry.Name)) Then
- ' File.Delete(String.Format("{0}Empresas\{1}\Temp\{2}\{3}", AppDomain.CurrentDomain.BaseDirectory, UsuarioActual.CveEmpresa, Directorio, entry.Name))
- 'End If
-
- 'entry.ExtractToFile(String.Format("{0}Empresas\{1}\Temp\{2}\{3}", AppDomain.CurrentDomain.BaseDirectory, UsuarioActual.CveEmpresa, Directorio, entry.Name))
-
- If File.Exists(String.Format("{0}\{1}", Directorio, entry.Name)) Then
- File.Delete(String.Format("{0}\{1}", Directorio, entry.Name))
- End If
-
- entry.ExtractToFile(String.Format("{0}\{1}", Directorio, entry.Name))
-
- End If
- Next
-
- End Using
- End Sub
- Public Shared Function CargaEmisordeXML(ArchivoXML As String, CampoXML As String, RFCEmpresaActual As String) As String
- Dim Valor As [String] = Nothing
-
- If File.Exists(ArchivoXML) Then
- Dim NombreArchivo As String = Path.GetFileName(ArchivoXML)
- Dim invalidChars As Char() = Path.GetInvalidFileNameChars()
- Dim invalidString As String = Regex.Escape(New String(invalidChars))
- Dim NombreValido As String = Regex.Replace(NombreArchivo, (Convert.ToString("[") & invalidString) + "]", "")
-
- Try
- Dim XmlDoc As New XmlDocument()
- XmlDoc.Load(ArchivoXML)
- Dim nodo As XmlNode = XmlDoc.DocumentElement.ChildNodes(0)
- Dim node As XmlNode
- Dim cfdVer As String = "http://www.sat.gob.mx/cfd/3"
- Dim RfcXML As String = ""
- Dim Prefijo As String = If(XmlDoc.DocumentElement.Prefix = "", "cfd", XmlDoc.DocumentElement.Prefix)
- Dim namespaces As New XmlNamespaceManager(XmlDoc.NameTable)
-
- If Not Prefijo.ToLower().Equals("cfdi") Then
- cfdVer = "http://www.sat.gob.mx/cfd/2"
- End If
- namespaces.AddNamespace(Prefijo, cfdVer)
- namespaces.AddNamespace("tfd", "http://www.sat.gob.mx/TimbreFiscalDigital")
- namespaces.AddNamespace("implocal", "http://www.sat.gob.mx/implocal")
- namespaces.AddNamespace("registrofiscal", "http://www.sat.gob.mx/registrofiscal")
-
- node = XmlDoc.SelectSingleNode([String].Format("//{0}:Receptor", Prefijo), namespaces)
- If node IsNot Nothing Then
- RfcXML = ValorXML(node, "RFC")
- End If
- If RfcXML = RFCEmpresaActual Then
- Valor = ValorXML(nodo, CampoXML)
-
-
- End If
- Catch exx As XmlException
- Valor = Nothing
- 'Using file__1 As New System.IO.StreamWriter([String].Format("{0}\UtileriasLOG.txt", Path.GetDirectoryName(Application.StartupPath)), True, System.Text.Encoding.UTF8)
- ' file__1.WriteLine("{DateTime.Now}: {exx.Message}")
- ' file__1.Close()
- ' file__1.Dispose()
- 'End Using
- End Try
- End If
- Return Valor
- End Function
- Private Shared Function ValorXML(n As XmlNode, Campo As String, Optional retorno As [String] = "") As String
- If n Is Nothing Then
- Return retorno
- End If
-
- Dim o As XmlNode = n.Attributes.Cast(Of XmlAttribute)().SingleOrDefault(Function(a) String.Compare(a.Name, Campo, StringComparison.CurrentCultureIgnoreCase) = 0)
- If o Is Nothing Then
- Return retorno
- Else
- Return o.Value
- End If
-
- End Function
- Private Function CargaDatosXML(XMLDoc As XmlDocument) As Modelos.eFactura
- Dim nodo As XmlNode = XMLDoc.DocumentElement
-
- If nodo.ChildNodes.Count = 2 Then
- nodo = nodo.ChildNodes(1)
- End If
-
- Dim Fact As Modelos.eFactura = Nothing
- Dim node As XmlNode = Nothing
- Dim RFC As String = ""
-
- Dim Prefijo As String = If(String.IsNullOrEmpty(XMLDoc.DocumentElement.Prefix), "cfd", XMLDoc.DocumentElement.Prefix)
- Dim cfdVer As String = "http://www.sat.gob.mx/cfd/3"
- Dim namespaces As New XmlNamespaceManager(XMLDoc.NameTable)
-
- If Prefijo.ToLower() <> "cfdi" Then
- cfdVer = "http://www.sat.gob.mx/cfd/2"
- End If
- namespaces.AddNamespace(Prefijo, cfdVer)
- namespaces.AddNamespace("tfd", "http://www.sat.gob.mx/TimbreFiscalDigital")
- namespaces.AddNamespace("implocal", "http://www.sat.gob.mx/implocal")
- namespaces.AddNamespace("registrofiscal", "http://www.sat.gob.mx/registrofiscal")
-
- node = XMLDoc.SelectSingleNode(String.Format("//{0}:Receptor", Prefijo), namespaces)
- 'AndAlso node.ChildNodes.Count > 0
- If node IsNot Nothing Then
- RFC = ValorXML(node, "RFC")
- End If
-
- 'solo si el rfc receptor es el mismo al de la empresa seleccionada
-
- If RFC = UsuarioActual.Empresa.RFC AndAlso Convert.ToDateTime(ValorXML(nodo, "fecha")).Year >= 2013 Then
- Fact = New Modelos.eFactura()
-
- 'Fact.CveEmpresa = CveEmpresa
- Fact.Serie = ValorXML(nodo, "serie")
- If Not String.IsNullOrEmpty(Fact.Serie) Then
- Fact.Serie = Fact.Serie
- End If
-
- Fact.Version = ValorXML(nodo, "version").Replace("..", ".")
- Fact.Folio = ValorXML(nodo, "folio").TrimStart("0"c)
- Fact.Fecha = ValorXML(nodo, "fecha")
- Fact.subTotal = Convert.ToDouble(ValorXML(nodo, "subTotal").Replace("..", "."))
- Fact.Total = Convert.ToDouble(ValorXML(nodo, "total"))
- Fact.Moneda = ValorXML(nodo, "Moneda")
- Fact.TipodeComprobante = ValorXML(nodo, "tipoDeComprobante")
- Fact.TipoCambio = Convert.ToDouble(ValorXML(nodo, "TipoCambio", "1.0"))
- Fact.Descuento = Convert.ToDouble(ValorXML(nodo, "descuento", "0"))
- Fact.CveEmpresa = UsuarioActual.CveEmpresa
-
- Fact.sUPPrefijo = Prefijo
-
- node = XMLDoc.SelectSingleNode(String.Format("//{0}:Emisor", Prefijo), namespaces)
-
- If node IsNot Nothing AndAlso node.ChildNodes.Count > 0 Then
- Fact.EmisorRFC = ValorXML(node, "RFC")
- Fact.EmisorNombre = ValorXML(node, "nombre")
- End If
- node = XMLDoc.SelectSingleNode(String.Format("//{0}:Receptor", Prefijo), namespaces)
- ' AndAlso node.ChildNodes.Count > 0
- If node IsNot Nothing Then
- Fact.ReceptorRFC = ValorXML(node, "RFC")
- End If
-
- node = XMLDoc.SelectSingleNode(String.Format("//{0}:Impuestos", Prefijo), namespaces)
-
- If node IsNot Nothing AndAlso node.ChildNodes.Count > 0 Then
- Dim nodeRetenciones As XmlNodeList = XMLDoc.SelectNodes(String.Format("//{0}:Retencion", Prefijo), namespaces)
-
- Fact.TotalRetenciones = Convert.ToDouble(ValorXML(node, "totalImpuestosRetenidos", "0"))
-
- For Each retencion As XmlNode In nodeRetenciones
- If retencion.Attributes.GetNamedItem("impuesto").Value = "IVA" Then
- Fact.RetencionIVA += Convert.ToDouble(retencion.Attributes.GetNamedItem("importe").Value)
- End If
- If retencion.Attributes.GetNamedItem("impuesto").Value = "ISR" Then
- Fact.RetencionISR += Convert.ToDouble(retencion.Attributes.GetNamedItem("importe").Value)
- ' Do something.
- End If
- Next
- Fact.SumaTotalRetenciones += Fact.RetencionIVA
- Fact.SumaTotalRetenciones += Fact.RetencionISR
-
- Fact.TotalTraslados = Convert.ToDouble(ValorXML(node, "totalImpuestosTrasladados", "0"))
-
- 'Dim o As XmlNode = traslado.Attributes.Cast(Of XmlAttribute)().SingleOrDefault(Function(a) String.Compare(a.Name, "impuesto", StringComparison.CurrentCultureIgnoreCase) = 0)
- Dim nodeTraslados As XmlNodeList = XMLDoc.SelectNodes(String.Format("//{0}:Traslado", Prefijo), namespaces)
-
- For Each traslado As XmlNode In nodeTraslados
- ' If traslado.Attributes.GetNamedItem("impuesto").Value = "IVA"
- Dim impuesto As XmlNode = traslado.Attributes.Cast(Of XmlAttribute)().SingleOrDefault(Function(a) String.Compare(a.Name, "impuesto", StringComparison.CurrentCultureIgnoreCase) = 0)
- If impuesto.Value = "IVA" Then
-
- Dim ImporteTRaslado As XmlNode = traslado.Attributes.Cast(Of XmlAttribute)().SingleOrDefault(Function(a) String.Compare(a.Name, "Importe", StringComparison.CurrentCultureIgnoreCase) = 0)
- Fact.TrasladoIVA += Convert.ToDouble(ImporteTRaslado.Value)
- 'If traslado.Attributes("impuesto").Value = "ISR" Then
- ' TrasladoISR = traslado.Attributes("importe").Value
- 'End If
- ' Do something.
- End If
- Next
- Fact.SumaTotalTraslados += Fact.TrasladoIVA
- End If
-
-
- Dim nodeComp As XmlNode = XMLDoc.SelectSingleNode(String.Format("//{0}:Complemento", Prefijo), namespaces)
- Dim FacturaMisCuentasSAT As Boolean = False
-
-
- If nodeComp IsNot Nothing AndAlso nodeComp.ChildNodes.Count > 0 Then
- Dim nodeTFD As XmlNode = nodeComp.SelectSingleNode(String.Format("//{0}:TimbreFiscalDigital", "tfd"), namespaces)
-
- Fact.TFDUUID = ValorXML(nodeTFD, "UUID", "")
-
- Dim nodeRF As XmlNode = nodeComp.SelectSingleNode(String.Format("//{0}:CFDIRegistroFiscal ", "registrofiscal"), namespaces)
- If nodeRF IsNot Nothing Then
- Fact.Folio = ValorXML(nodeRF, "folio").TrimStart("0"c)
- FacturaMisCuentasSAT = True
-
- End If
- Else
- Fact.TFDUUID = ""
- If String.IsNullOrEmpty(Fact.TFDUUID) AndAlso Fact.sUPPrefijo.ToLower() = "cfdi" Then
- 'Mensajes.AppendFormat("{0}|{1}|{2}|{3}|{4}|{5}{6}&", ValorXML(nodo, "serie"), ValorXML(nodo, "folio"), ValorXML(nodo, "fecha").ToDate().ToShortDateString(), Fact.EmisorNombre, ValorXML(nodo, "total").ToDouble().FormatoNumero(),
- '"Factura no timbrada correctamente.", "")
- 'CargaMensaje(ValorXML(nodo, "serie"), ValorXML(nodo, "folio"), ValorXML(nodo, "fecha").ToDate(), Fact.EmisorNombre, ValorXML(nodo, "total").ToDouble(), "Factura no timbrada correctamente.",
- '"", DateTime.Now)
- End If
-
- 'limpio los valores porque realmente no es una factura
-
- Fact = Nothing
- End If
- 'verifico si el metodo de pago esta dentro de la opcion valida
-
-
- If Convert.ToDateTime(ValorXML(nodo, "fecha")) >= ("2016/07/15").ToDate() Then
- Dim CasoPermitido As Boolean = False
- 'If CveEmpresa.Contiene(72, 80) AndAlso ValorXML(nodo, "MetododePago").ToUpper().PadRight(13, " "c).Substring(0, 13) = "TRANSFERENCIA" Then
- ' CasoPermitido = True
- 'End If
-
- 'If CveEmpresa = 5 OrElse FacturaMisCuentasSAT Then
- ' CasoPermitido = True
- 'End If
-
- If Not CasoPermitido Then
- If (Not (ValorXML(nodo, "MetododePago").ToUpper().PadLeft(2, "0"c).Substring(0, 2).Contiene("01", "02", "03", "04", "05", "06",
- "07", "08", "09", "10", "11", "12",
- "13", "14", "15", "16", "17", "28",
- "98", "99", "NA") OrElse ValorXML(nodo, "MetododePago").ToUpper().Contiene("NO APLICA", "N/A", "N.A.", "NO IDENTIFICADO"))) Then
- Dim node2 As XmlNode = XMLDoc.SelectSingleNode(String.Format("//{0}:Emisor", Prefijo), namespaces)
- Dim Nombre As String = ""
-
- If node2 IsNot Nothing AndAlso node2.ChildNodes.Count > 0 Then
- Nombre = ValorXML(node2, "nombre")
- End If
-
- 'CargaMensaje(ValorXML(nodo, "serie"), ValorXML(nodo, "folio"), ValorXML(nodo, "fecha").ToDate(), ValorXML(node2, "nombre"), ValorXML(nodo, "total").ToDouble(), "Método de Pago Incorrecto:" + ValorXML(nodo, "MetododePago"),
- 'CorreoActual, FechaRecepcionCorreo)
-
- Return Nothing
- End If
-
-
- End If
-
- 'faltan leer los impuestos locales
- 'node = XMLDoc.SelectSingleNode(String.Format("//{0}:ImpuestosLocales", "implocal"), namespaces)
- 'If node IsNot Nothing AndAlso node.ChildNodes.Count > 0 Then
- ' Dim nodeRetenciones As XmlNodeList = XMLDoc.SelectNodes(String.Format("//{0}:Retencion", Prefijo), namespaces)
-
- ' Fact.TotalRetenciones = ValorXML(node, "totalImpuestosRetenidos", "0").ToDouble
-
- ' For Each retencion As XmlNode In nodeRetenciones
- ' If retencion.Attributes("impuesto").Value = "IVA" Then
- ' Fact.RetencionIVA += retencion.Attributes("importe").Value.ToDouble
- ' End If
- ' If retencion.Attributes("impuesto").Value = "ISR" Then
- ' Fact.RetencionISR += retencion.Attributes("importe").Value.ToDouble
- ' End If
- ' ' Do something.
- ' Next
- ' Fact.SumaTotalRetenciones += Fact.RetencionIVA
- ' Fact.SumaTotalRetenciones += Fact.RetencionISR
-
- ' Fact.TotalTraslados = ValorXML(node, "totalImpuestosTrasladados", "0").ToDouble
-
- ' Dim nodeTraslados As XmlNodeList = XMLDoc.SelectNodes(String.Format("//{0}:Traslado", Prefijo), namespaces)
- ' For Each traslado As XmlNode In nodeTraslados
- ' If traslado.Attributes("impuesto").Value = "IVA" Then
- ' Fact.TrasladoIVA += traslado.Attributes("importe").Value.ToDouble
- ' End If
- ' 'If traslado.Attributes("impuesto").Value = "ISR" Then
- ' ' TrasladoISR = traslado.Attributes("importe").Value
- ' 'End If
- ' ' Do something.
- ' Next
- ' Fact.SumaTotalTraslados += Fact.TrasladoIVA
- 'End If
-
-
- End If
- Else
- 'ModExtensiones.GuardaLog((Convert.ToString("'*******RFC incorrecto RFC Emp:") & RFC) + " RFC Fact: " + RFCReceptor)
- 'obtengo los datos del xml, para
-
- Dim node2 As XmlNode = XMLDoc.SelectSingleNode(String.Format("//{0}:Emisor", Prefijo), namespaces)
-
-
- 'If node2 IsNot Nothing AndAlso node2.ChildNodes.Count > 0 Then
- ' Mensajes.AppendFormat("{0}|{1}|{2}|{3}|{4}|{5}{6}&", ValorXML(nodo, "serie"), ValorXML(nodo, "folio"), ValorXML(nodo, "fecha").ToDate().ToShortDateString(), ValorXML(node2, "nombre"), ValorXML(nodo, "total").ToDouble().FormatoNumero(),
- ' "RFC Incorrecto:", RFC)
- ' CargaMensaje(ValorXML(nodo, "serie"), ValorXML(nodo, "folio"), ValorXML(nodo, "fecha").ToDate(), ValorXML(node2, "nombre"), ValorXML(nodo, "total").ToDouble(), Convert.ToString("RFC Incorrecto:") & RFC,
- ' CorreoActual, FechaRecepcionCorreo)
- 'Else
- ' CargaMensaje("", "", "01/01/2000".ToDate(), "", 0.0, Convert.ToString("RFC Incorrecto:") & RFC,
- ' CorreoActual, FechaRecepcionCorreo)
-
-
- 'End If
- End If
-
- Return Fact
- End Function
- Private Function GuardaArchivoXML(Archivo As String) As Modelos.eFactura
- ' , Destino As String, Temporal As String
- Dim Retorno As Modelos.eFactura = Nothing
-
- If File.Exists(Archivo) Then
- Dim NombreArchivo As String = Path.GetFileName(Archivo)
- Dim invalidChars As Char() = Path.GetInvalidFileNameChars()
- Dim invalidString As String = Regex.Escape(New String(invalidChars))
- Dim valid As String = Regex.Replace(NombreArchivo, (Convert.ToString("[") & invalidString) + "]", "")
-
- NombreArchivo = valid
-
- Try
- Dim XMLDoc As New XmlDocument()
-
- XMLDoc.Load(Archivo)
- Retorno = CargaDatosXML(XMLDoc)
-
- Catch exx As XmlException
- Retorno = Nothing
- 'Dim texto As Dynamic = File.ReadAllText(Archivo)
- Dim txt_utf8 As New UTF8Encoding()
- 'REEMPLAZA CARACTERES ESPECIALES Y VUELVE A LEER EL DOCUMENTO
-
- 'texto = RemoveIllegalXMLCharacters(texto)
- ' SE RENOMBRA EL ARCHIVO, PERO SE QUITO POR SI NO COINCIDE EL PDF CON EL NOMBRE
- 'Archivo = Archivo.ToUpper.Replace(".XML", "-2.XML")
- 'NombreArchivo = IO.Path.GetFileName(Archivo)
- 'File.WriteAllText(Archivo, texto)
-
-
- ' Dim xmltr As New XmlTextReader(New MemoryStream(RemoveIllegalXMLCharacters(texto)))
- Dim XMLDoc As New XmlDocument()
-
- Try
- XMLDoc.Load(Archivo)
- Retorno = CargaDatosXML(XMLDoc)
- Catch ex As Exception
- Retorno = Nothing
-
-
-
- End Try
- Catch ex As Exception
-
-
- Retorno = Nothing
- End Try
-
- 'si se cargaron todos los datos
- If Retorno IsNot Nothing AndAlso Not String.IsNullOrEmpty(Retorno.TFDUUID) Then
- 'XML
- Retorno.ArchivoXML = NombreArchivo
- End If
- End If
- Return Retorno
-
- End Function
- Private Sub CargaImpuestosXML(XMLDoc As XmlDocument)
- Dim Prefijo As String = If(String.IsNullOrEmpty(XMLDoc.DocumentElement.Prefix), "cfd", XMLDoc.DocumentElement.Prefix)
- Dim cfdVer As String = "http://www.sat.gob.mx/cfd/3"
- Dim namespaces As New XmlNamespaceManager(XMLDoc.NameTable)
-
- If Prefijo.ToLower() <> "cfdi" Then
- cfdVer = "http://www.sat.gob.mx/cfd/2"
- End If
- namespaces.AddNamespace(Prefijo, cfdVer)
- namespaces.AddNamespace("tfd", "http://www.sat.gob.mx/TimbreFiscalDigital")
- namespaces.AddNamespace("implocal", "http://www.sat.gob.mx/implocal")
- namespaces.AddNamespace("registrofiscal", "http://www.sat.gob.mx/registrofiscal")
-
- TrasladoIVA = 0
- '_TrasladoIVA = XMLDoc.DocumentElement.ChildNodes(3).Attributes("totalImpuestosTrasladados").Value
-
- Dim nodeTraslados As XmlNodeList = XMLDoc.SelectNodes(String.Format("//{0}:Traslado", Prefijo), namespaces)
- For Each traslado As XmlNode In nodeTraslados
- If traslado.Attributes.GetNamedItem("impuesto").Value = "IVA" Then
- TrasladoIVA += traslado.Attributes.GetNamedItem("importe").Value.ToDouble()
-
- End If
- Next
-
- Dim nodeComp As XmlNode = XMLDoc.SelectSingleNode(String.Format("//{0}:Complemento", Prefijo), namespaces)
-
-
- If nodeComp IsNot Nothing AndAlso nodeComp.ChildNodes.Count > 0 Then
- Dim nodeTFD As XmlNode = nodeComp.SelectSingleNode(String.Format("//{0}:TimbreFiscalDigital", "tfd"), namespaces)
-
- _TFDUUID = ValorXML(nodeTFD, "UUID", "")
- _TFDFechaTimbrado = ValorXML(nodeTFD, "FechaTimbrado", "")
- _TFDSelloCFD = ValorXML(nodeTFD, "selloCFD", "")
- _TFDNoCertSAT = ValorXML(nodeTFD, "noCertificadoSAT", "")
- _TFDSelloSAT = ValorXML(nodeTFD, "selloSAT", "")
-
- Dim nodeRF As XmlNode = nodeComp.SelectSingleNode(String.Format("//{0}:CFDIRegistroFiscal ", "registrofiscal"), namespaces)
- If nodeRF IsNot Nothing Then
- _Folio = ValorXML(nodeRF, "folio").TrimStart("0"c)
-
-
- End If
- End If
-
- End Sub
- Private Shared Sub CargaTFD(XMLDoc As XmlDocument)
- '_TFDUUID = XMLDoc.DocumentElement("cfdi:Complemento").FirstChild.Attributes("UUID").InnerText
- '_TFDFechaTimbrado = XMLDoc.DocumentElement("cfdi:Complemento").FirstChild.Attributes("FechaTimbrado").InnerText
- '_TFDSelloCFD = XMLDoc.DocumentElement("cfdi:Complemento").FirstChild.Attributes("selloCFD").InnerText
- '_TFDNoCertSAT = XMLDoc.DocumentElement("cfdi:Complemento").FirstChild.Attributes("noCertificadoSAT").InnerText
- '_TFDSelloSAT = XMLDoc.DocumentElement("cfdi:Complemento").FirstChild.Attributes("selloSAT").InnerText
- End Sub
- Public Function GeneraPDF(Ruta As String, Fact As Modelos.eFactura) As Boolean
- Dim RutaXML As String = String.Empty
- Dim RutaPDF As String = String.Empty
- Dim Retorno As Boolean = False
- Try
-
- Dim XMLDoc As New XmlDocument()
- Dim TmpArchivoPDF As String = String.Format("{0}{1}-ttt.pdf", Ruta, Path.GetFileNameWithoutExtension(Fact.ArchivoXML))
- Dim TmpArchivoQR As String = String.Format("{0}{1}-ttt.jpg", Ruta, Path.GetFileNameWithoutExtension(Fact.ArchivoXML))
- Dim ArchivoXML As String = String.Format("{0}{1}", Ruta, Fact.ArchivoXML)
-
- ' If Not File.Exists(TmpArchivoPDF) Then
- XMLDoc.Load(ArchivoXML)
- CreaDTConceptos()
- CargaComprobanteXML(XMLDoc)
- CargaEmisorXML(XMLDoc)
- CargaReceptorXML(XMLDoc)
- CargaConceptosXML(XMLDoc)
- CargaImpuestosXML(XMLDoc)
- CargaTFD(XMLDoc)
-
- Dim QR As New ClbNegBICFDv3_2.ClsNegCBBGenerar()
- Dim dtotal As Decimal = (If(total.ToDecimal() <= 0.0D, 0.0001D, total.ToDecimal()))
- QR.GenerarCBB(EmiRFC, RecRfc, dtotal, TFDUUID, TmpArchivoQR)
-
-
- If System.IO.File.Exists(TmpArchivoQR) Then
- 'Dim ArchivoBaseXLS As String = String.Format("{0}FacturaPDF.xlsm", Ruta.Replace("Temp", "Compras"))
- If GeneraPDFNew(TmpArchivoPDF, TFDUUID, subTotal, descuento, total, TrasladoIVA.ToString(),
- moneda, formaDePago, TFDNoCertSAT, TFDFechaTimbrado.ToDate(), noCertificado, DTConceptos,
- TFDSelloCFD, TFDSelloSAT, TmpArchivoQR, Serie + Folio, tipoDeComprobante, "",
- RecRfc, RecNombre, DomRecCalle, DomRecCol, DomRecFisNoExt, DomRecFisNoInt,
- DomRecCP, DomRecMun, DomRecEst, Regimen, condicionesDePago, metodoDePago,
- NumCtaPagoNumCtaPago, fecha.ToDate()) Then
- Fact.ArchivoPDF = Path.GetFileName(TmpArchivoPDF)
-
- Retorno = True
- End If
-
- File.Delete(TmpArchivoQR)
-
- RutaPDF = TmpArchivoPDF
- Else
- Retorno = False
- End If
- 'Else
- 'RutaPDF = TmpArchivoPDF
- 'End If
-
-
-
- If DTConceptos IsNot Nothing Then
- DTConceptos.Dispose()
- End If
- Catch ex As Exception
- ModExtensiones.GuardaLog("11189" + ex.Message)
- End Try
-
-
- Return Retorno
- End Function
- Private Sub CargaComprobanteXML(XMLDoc As XmlDocument)
- Dim nodo As XmlNode = XMLDoc.DocumentElement
- Serie = ValorXML(nodo, "serie", "")
- _Folio = ValorXML(nodo, "folio", "")
- _fecha = ValorXML(nodo, "fecha", "")
- _tipoDeComprobante = ValorXML(nodo, "tipoDeComprobante", "")
- _formaDePago = ValorXML(nodo, "formaDePago", "")
- _subTotal = ValorXML(nodo, "subTotal", "0")
- _descuento = ValorXML(nodo, "descuento", "0")
- _total = ValorXML(nodo, "total", "0")
- _moneda = ValorXML(nodo, "Moneda")
- _metodoDePago = ValorXML(nodo, "metodoDePago", "")
- _condicionesDePago = ValorXML(nodo, "condicionesDePago", "")
- _LugarExpedicion = ValorXML(nodo, "LugarExpedicion", "")
- _NumCtaPagoNumCtaPago = ValorXML(nodo, "NumCtaPago", "")
-
-
- _noCertificado = XMLDoc.DocumentElement.Attributes.GetNamedItem("noCertificado").Value
- End Sub
- Private Sub CargaEmisorXML(XMLDoc As XmlDocument)
- Dim nodo As XmlNode = XMLDoc.DocumentElement.ChildNodes(0)
- _EmiRFC = ValorXML(nodo, "rfc", "")
- _EmiNombre = ValorXML(nodo, "nombre", "")
-
- nodo = XMLDoc.DocumentElement.ChildNodes(0).ChildNodes(0)
- _DomFisCalle = ValorXML(nodo, "calle", "")
- _DomFisNoExt = ValorXML(nodo, "noExterior", "")
- 'LblDomFisNoInt.Text = XMLDoc.DocumentElement.ChildNodes(0).ChildNodes(0).Attributes("noInterior").Value
- _DomFisCol = ValorXML(nodo, "colonia", "")
- _DomFisCP = ValorXML(nodo, "codigoPostal", "")
- _DomFisMun = ValorXML(nodo, "municipio", "")
- _DomFisLoc = ValorXML(nodo, "localidad", "")
- _DomFisEst = ValorXML(nodo, "estado", "")
- _DomFisPais = ValorXML(nodo, "pais", "")
-
- nodo = XMLDoc.DocumentElement.ChildNodes(0).ChildNodes(1)
- _ExpEnCalle = ValorXML(nodo, "calle", "")
- _ExpEnNoExt = ValorXML(nodo, "noExterior", "")
- 'LblExpEnNoInt.Text = XMLDoc.DocumentElement.ChildNodes(0).ChildNodes(1).Attributes("noInterior").Value
- ExpEnCol = ValorXML(nodo, "colonia", "")
- _ExpEnCP = ValorXML(nodo, "codigoPostal", "")
- _ExpEnMun = ValorXML(nodo, "municipio", "")
- _ExpEnLoc = ValorXML(nodo, "localidad", "")
- _ExpEnEst = ValorXML(nodo, "estado", "")
- _ExpEnPais = ValorXML(nodo, "pais", "")
-
- nodo = XMLDoc.DocumentElement.ChildNodes(0).ChildNodes(2)
- _Regimen = ValorXML(nodo, "Regimen", "")
- End Sub
- Private Sub CargaReceptorXML(XMLDoc As XmlDocument)
- Dim nodo As XmlNode = XMLDoc.DocumentElement.ChildNodes(1)
- _RecRfc = ValorXML(nodo, "rfc", "")
- _RecNombre = ValorXML(nodo, "nombre", "")
-
- nodo = XMLDoc.DocumentElement.ChildNodes(1).ChildNodes(0)
-
- _DomRecCalle = ValorXML(nodo, "calle", "")
- _DomRecFisNoExt = ValorXML(nodo, "noExterior", "")
- _DomRecFisNoInt = ValorXML(nodo, "noInterior", "")
- _DomRecCol = ValorXML(nodo, "colonia", "")
- _DomRecCP = ValorXML(nodo, "codigoPostal", "")
- _DomRecMun = ValorXML(nodo, "municipio", "")
- _DomRecLoc = ValorXML(nodo, "localidad", "")
- _DomRecEst = ValorXML(nodo, "estado", "")
- _DomRecPais = ValorXML(nodo, "pais", "")
- End Sub
- Private Sub CargaConceptosXML(XMLDoc As XmlDocument)
- Dim i As Integer = 0
- 'Dim SB As New StringBuilder()
- 'SB.Append("")
- 'SB.AppendLine("| cantidad | descripcion | valorUnitario | importe | unidad |
")
- Dim nodo As XmlNode = Nothing
- For i = 0 To XMLDoc.DocumentElement.ChildNodes(2).ChildNodes.Count - 1
- nodo = XMLDoc.DocumentElement.ChildNodes(2).ChildNodes(i)
- 'SB.Append("")
- 'SB.Append("| " & XMLDoc.DocumentElement.ChildNodes(2).ChildNodes(i).Attributes("cantidad").Value & " | ")
- 'SB.Append("" & XMLDoc.DocumentElement.ChildNodes(2).ChildNodes(i).Attributes("descripcion").Value & " | ")
- 'SB.Append("" & XMLDoc.DocumentElement.ChildNodes(2).ChildNodes(i).Attributes("valorUnitario").Value & " | ")
- 'SB.Append("" & XMLDoc.DocumentElement.ChildNodes(2).ChildNodes(i).Attributes("importe").Value & " | ")
- 'SB.Append("" & XMLDoc.DocumentElement.ChildNodes(2).ChildNodes(i).Attributes("unidad").Value & " | ")
- 'SB.Append("
")
-
- AddPS(nodo.Attributes.GetNamedItem("cantidad").Value.ToDouble(), nodo.Attributes.GetNamedItem("unidad").Value, nodo.Attributes.GetNamedItem("descripcion").Value, nodo.Attributes.GetNamedItem("valorUnitario").Value.ToDouble(), 0, nodo.Attributes.GetNamedItem("importe").Value.ToDouble())
- Next
- 'SB.Append("
")
- 'If i > 0 Then Response.Write(SB.ToString)
- 'SB.Clear()
- End Sub
- Private Sub AddPS(Cantidad As Double, UM As String, PS As String, PU As Double, IVA As Double, Optional Total As Double = 0)
- If PS <> "IVA" Then
- Dim Row As DataRow = Nothing
- Row = DTConceptos.NewRow()
- Row("Consec") = DTConceptos.Rows.Count + 1
- Row("Cantidad") = Cantidad
- Row("UM") = UM
- Row("PS") = PS
- Row("PU") = PU
- Row("IVA") = IVA
- Row("Total") = If(Total > 0, Total, (Cantidad * PU))
- DTConceptos.Rows.Add(Row)
- End If
- End Sub
- Private Function GeneraPDFNew(TmpArchivoPDF As String, FolioFiscal As String, SubTotal As String, Descuento As String, Total As String, IVA As String,
- Moneda As String, FormaDePago As String, NoSerieCertificado As String, FechaCertificacion As DateTime, NoSerieCertificadoContribuyente As String, DTConceptos As DataTable,
- SelloCFDi As String, SelloSAT As String, CBB As String, Folio As String, TipodeComprobante As String, CadenaOriginalCFD As String,
- RFC As String, Cliente As String, Direccion As String, Colonia As String, NoExt As String, NoInt As String,
- CP As String, Ciudad As String, Estado As String, Regimen As String, CondicionPago As String, MetodoPago As String,
- NumCtaPago As String, fecha As System.DateTime) As Boolean
- Dim Retorno = False
- Dim NombreArchivo As String = TmpArchivoPDF
- Dim CadenaOriginal As String = (Convert.ToString((Convert.ToString((Convert.ToString("||1.0|") & FolioFiscal) + "|" + FechaCertificacion.ToString("yyyy-MM-dd") + "T" + FechaCertificacion.ToString("HH:mm:ss") + "|") & SelloCFDi) + "|") & NoSerieCertificado) + "||"
- Dim RutaFormato As String = String.Format("{0}Empresas\Grales\Formatos\CFDI.rdlc", AppDomain.CurrentDomain.BaseDirectory)
- 'Dim ArchivoTempXLS As String = String.Format("{0}\GenSis{1}-{2}", Path.GetDirectoryName(ArchivoBaseXLS), Now.Ticks, Path.GetFileName(ArchivoBaseXLS))
-
- Dim Fiscal As String = String.Format("Domicilio Fiscal {0}{1} {2}{0}Col.{3}{0}CP. {4} {5},{6},{7}", vbCr, DomFisCalle, DomFisNoExt, DomFisCol, DomFisCP,
- DomFisMun, DomFisEst, DomFisPais)
- Try
- Dim parametros As New List(Of ReportParameter)()
- 'params.Add(New ReportParameter("ArchivoBaseXLS", ArchivoBaseXLS))
- 'params.Add(New ReportParameter("TmpArchivoPDF", TmpArchivoPDF))
- parametros.Add(New ReportParameter("FolioFiscal", FolioFiscal))
- parametros.Add(New ReportParameter("SubTotal", SubTotal.FormatoNumero()))
- parametros.Add(New ReportParameter("Descuento", Descuento.FormatoNumero()))
- parametros.Add(New ReportParameter("Total", Total.FormatoNumero()))
- parametros.Add(New ReportParameter("IVA", IVA.FormatoNumero()))
- parametros.Add(New ReportParameter("Moneda", Moneda))
- parametros.Add(New ReportParameter("FormaDePago", FormaDePago))
- parametros.Add(New ReportParameter("NoSerieCertificado", NoSerieCertificado))
- parametros.Add(New ReportParameter("FechaCertificacion", FechaCertificacion.ToString("yyyy-MM-dd") + "T" + FechaCertificacion.ToString("HH:mm:ss")))
- parametros.Add(New ReportParameter("NoSerieCertificadoContribuyente", NoSerieCertificadoContribuyente))
- parametros.Add(New ReportParameter("SelloCFDi", SelloCFDi))
- parametros.Add(New ReportParameter("SelloSAT", SelloSAT))
- parametros.Add(New ReportParameter("CBB", String.Format("file:///{0}", CBB)))
- parametros.Add(New ReportParameter("Folio", Folio))
- parametros.Add(New ReportParameter("TipodeComprobante", TipodeComprobante.ToUpper()))
- parametros.Add(New ReportParameter("CadenaOriginalCFD", CadenaOriginalCFD))
- parametros.Add(New ReportParameter("RFC", RFC))
- parametros.Add(New ReportParameter("Cliente", Cliente))
- parametros.Add(New ReportParameter("Direccion", Direccion))
- parametros.Add(New ReportParameter("Colonia", Colonia))
- parametros.Add(New ReportParameter("NoExt", NoExt))
- parametros.Add(New ReportParameter("NoInt", NoInt))
- parametros.Add(New ReportParameter("CP", CP))
- parametros.Add(New ReportParameter("Ciudad", Ciudad))
- parametros.Add(New ReportParameter("Estado", Estado))
- parametros.Add(New ReportParameter("Regimen", Regimen))
- parametros.Add(New ReportParameter("CondicionPago", CondicionPago))
- parametros.Add(New ReportParameter("MetodoPago", MetodoPago))
- parametros.Add(New ReportParameter("NumCtaPago", NumCtaPago))
- parametros.Add(New ReportParameter("fecha", fecha.ToString("yyyy-MM-dd") + "T" + fecha.ToString("HH:mm:ss")))
- parametros.Add(New ReportParameter("Fiscal", Fiscal))
- parametros.Add(New ReportParameter("EmiNombre", EmiNombre))
- parametros.Add(New ReportParameter("EmiRFC", EmiRFC))
- parametros.Add(New ReportParameter("NoSerieCertificado", NoSerieCertificado))
- parametros.Add(New ReportParameter("TotalLetra", Total.ToDouble().Texto2Letras(CveMoneda:=If(Moneda = "MXN", 1, If(Moneda = "USD", 2, 3)))))
- parametros.Add(New ReportParameter("Empresa", UsuarioActual.Empresa.Empresa))
-
- 'params.Add(New ReportParameter("DTConceptos", DTConceptos))
-
- Dim rds As New ReportDataSource()
- rds.Name = "DsOC"
- rds.Value = DTConceptos
- Dim Archivo As New System.IO.FileInfo(RutaFormato)
-
- If Archivo.Exists Then
- Dim MR As New ReportViewer()
- MR.LocalReport.DataSources.Add(rds)
- MR.LocalReport.ReportPath = RutaFormato
- MR.ProcessingMode = ProcessingMode.Local
- MR.LocalReport.EnableExternalImages = True
- MR.LocalReport.SetParameters(parametros)
- MR.LocalReport.Refresh()
-
-
- Dim warnings As Warning() = Nothing
- Dim streamids As String() = Nothing
- Dim mimeType As String = Nothing
- Dim encoding As String = Nothing
- Dim extension As String = Nothing
- Dim bytes As Byte() = Nothing
- bytes = MR.LocalReport.Render("PDF", Nothing, mimeType, encoding, extension, streamids,
- warnings)
-
- Using fs As New FileStream(NombreArchivo, FileMode.Create)
- fs.Write(bytes, 0, bytes.Length)
- fs.Close()
- End Using
- Retorno = True
- Else
- ModExtensiones.GuardaLog(String.Format("No existe formato Base"))
-
-
- End If
- Catch ex As Exception
- ModExtensiones.GuardaLog(String.Format("Ocurrio un Error al generar el reporte RLDC"))
- Retorno = False
- End Try
- Return Retorno
- End Function
- Private Sub CreaDTConceptos()
- DTConceptos = New DataTable()
- DTConceptos.Columns.Add("Consec", GetType(Integer))
- DTConceptos.Columns.Add("Cantidad", GetType(Double))
- DTConceptos.Columns.Add("UM", GetType(String))
- DTConceptos.Columns.Add("PS", GetType(String))
- DTConceptos.Columns.Add("PU", GetType(Double))
- DTConceptos.Columns.Add("IVA", GetType(Double))
- DTConceptos.Columns.Add("Total", GetType(Double))
- End Sub
-#End Region
-
-#Region "D E S C A R G A R - F A C T U R A "
- Protected Sub lbDescargar_Click(sender As Object, e As EventArgs) Handles lbDescargar.Click
-
- Dim Retorno As Boolean = False
-
- Dim ObjProcess As Process = Nothing
- Dim Mensajes As String = ""
- Dim error1 As Boolean = False
- Dim CountProcesados As Integer = 0
-
-
-
- Try
- ObjProcess = New Process()
- ObjProcess.StartInfo.RedirectStandardOutput = True
- ObjProcess.StartInfo.FileName = Ejecutable
- ObjProcess.StartInfo.Arguments = $"--mod dsat2 --cveemp {UsuarioActual.CveEmpresa} --rfc {UsuarioActual.Empresa.RFC} --ciec {UsuarioActual.Empresa.CIEC} --razon {UsuarioActual.Empresa.Empresa} --fi {txtFechaI.Text} --ff {txtFechaF.Text}"
- ObjProcess.StartInfo.UseShellExecute = False
- ObjProcess.StartInfo.WindowStyle = ProcessWindowStyle.Normal
- ObjProcess.Start()
-
-
- Dim myStreamReader As StreamReader = ObjProcess.StandardOutput
-
- 'Read the standard output of the spawned process.
- Mensajes = myStreamReader.ReadLine()
- If Mensajes.Length > 0 Then
-
- Dim msgs As String() = Mensajes.Split("|"c)
- Dim NFacturas As Integer = 0
-
- If msgs.Length >= 2 Then
- Try
- NFacturas = msgs(0).ToEntero
- CountProcesados = msgs(0).ToEntero
- Mensajes = $"La actualización se realizó correctamente.
Facturas agregadas: { NFacturas }"
- Catch ex As Exception
- NFacturas = 0
- Mensajes = "La actualización se realizó correctamente"
- End Try
- Else
- Mensajes = "La descarga se realizó correctamente"
- End If
- End If
- ObjProcess.WaitForExit()
- ObjProcess.Close()
- Retorno = True
- Catch ex As Exception
- error1 = True
- OnError("Ocurrió un error al ejecutar el actualizador.", ex)
- End Try
-
- If Retorno Then CargaDatos()
-
-
-
-
- 'Dim Retorno As Boolean = False
- ''Codigo anterior no borrar puede hacer el paro
-
- 'Dim ObjProcess As Process = Nothing
- 'Dim Mensajes As String = ""
- 'Dim EjecutableUtilerias = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Utilerias\UtileriasAD.exe")
- 'Dim Folder = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Empresas\")
- 'Dim error1 As Boolean = False
- 'Dim en As New CultureInfo("en-US")
- 'Dim fechai = txtFechaI.Text.Trim.ToDate.ToString("d", en)
- 'Dim fechaf = txtFechaF.Text.Trim.ToDate.ToString("d", en)
- 'Try
- ' ObjProcess = New Process()
- ' ObjProcess.StartInfo.RedirectStandardOutput = True
- ' ObjProcess.StartInfo.FileName = EjecutableUtilerias
- ' ObjProcess.StartInfo.Verb = "runas"
- ' ObjProcess.StartInfo.Arguments = $"{UsuarioActual.CveEmpresa} {Folder} 1 {fechai} {fechaf}"
- ' ObjProcess.StartInfo.UseShellExecute = False
- ' ObjProcess.StartInfo.WindowStyle = ProcessWindowStyle.Normal
- ' ObjProcess.Start()
- ' ObjProcess.WaitForExit()
- ' ObjProcess.Close()
- 'Catch ex As Exception
- ' error1 = True
- ' OnError("Ocurrió un error al ejecutar el actualizador.", ex)
- 'End Try
-
- '' ProcesaBuzon()
-
- End Sub
-
-
- 'Private Sub ProcesaBuzon()
- ' Dim ObjProcess As Process = Nothing
- ' Dim Mensajes As String = ""
- ' Dim EjecutableUtilerias = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Utilerias\ADSUtilerias.exe")
- ' Dim Folder = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Empresas\")
- ' Dim error1 As Boolean = False
- ' Dim en As New CultureInfo("en-US")
- ' Dim fechai = txtFechaI.Text.Trim.ToDate.ToString("d", en)
- ' Dim fechaf = txtFechaF.Text.Trim.ToDate.ToString("d", en)
- ' Dim Salida As String = ""
- ' Try
- ' ObjProcess = New Process()
- ' ObjProcess.StartInfo.RedirectStandardOutput = True
- ' ObjProcess.StartInfo.FileName = EjecutableUtilerias
- ' ObjProcess.StartInfo.Verb = "runas"
- ' ObjProcess.StartInfo.Arguments = $"--mod dsat --e {UsuarioActual.CveEmpresa} --op 1 --fd {Folder} --fi {fechai} --ff {fechaf}"
- ' ObjProcess.StartInfo.UseShellExecute = False
- ' ObjProcess.StartInfo.WindowStyle = ProcessWindowStyle.Normal
- ' ObjProcess.Start()
- ' Salida = ObjProcess.StandardOutput.ReadToEnd()
- ' ObjProcess.WaitForExit()
- ' ObjProcess.Close()
- ' Catch ex As Exception
- ' error1 = True
- ' OnError("Ocurrió un error al ejecutar el actualizador.", ex)
- ' End Try
- 'End Sub
-
-#End Region
-
-#Region "B I T A C O R A"
- Private Sub CargaGvBitacora()
- Dim ObjGral As New ClsGenerales
- If ObjGral.GetHistorialBitacoraRemoveGet("Compras", UsuarioActual.CveEmpresa) Then
- GvBitacora.DataSource = ObjGral.DtResultados
- ObjGral.Dispose()
- End If
- GvBitacora.DataBind()
- End Sub
-
- Private Sub BtnRemove_Click(sender As Object, e As EventArgs) Handles BtnRemove.Click
- Dim Borrar As Boolean = False
- If Not TxtDescripcion.Text = "" Then
- Dim ObjGral As New ClsGenerales
- If ObjGral.AddHistorialBitacora(Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, "", "", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, 1, TxtDescripcion.Text, "Compras", Folio1 + " / " + Proveedor) Then
- Borrar = True
- End If
- ObjGral.Dispose()
- If Borrar = True Then
- Dim ObjCompras As New ClsCompras
- If ObjCompras.DeleteFactura(CveFactura) Then
- GvD.EditIndex = -1
- RegistraScript(String.Format("$('#{0}').modal('hide');", "divDescripcion"))
- Alert("La factura se eliminó correctamente.", TipoMensaje.MsgInformacion)
- CargaDatos()
- UpBitacora.Update()
- End If
-
- ObjCompras.Dispose()
-
- End If
- End If
- CargaGvBitacora()
- UpBitacora.Update()
- End Sub
- Private Sub BtnEliminarPago_Click(sender As Object, e As EventArgs) Handles BtnEliminarPago.Click
- Dim Borrar As Boolean = False
- If Not TxtDescripcion.Text = "" Then
- Dim ObjGral As New ClsGenerales
- If ObjGral.AddHistorialBitacora(Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, "", "", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, 1, TxtDescripcion.Text, "Compras", Folio1 + " / " + Proveedor) Then
- Borrar = True
- End If
- ObjGral.Dispose()
- If Borrar = True Then
- Dim ObjCompras As New ClsCompras
- If ObjCompras.DeleteFactura(CveFactura) Then
- GvPagos.EditIndex = -1
- RegistraScript("$('#divDescripcionPago').modal('hide');")
- Alert("La factura se eliminó correctamente.", TipoMensaje.MsgInformacion)
- CargaDatos()
- UpBitacora.Update()
- End If
-
- ObjCompras.Dispose()
- End If
- End If
- CargaGvBitacora()
- UpBitacora.Update()
- End Sub
-
- Private Sub BtnMostrar_Click(sender As Object, e As EventArgs) Handles BtnMostrar.Click
- GvBitacora.Visible = True
- BtnOcultar.Visible = True
- BtnMostrar.Visible = False
- UpBitacora.Update()
- End Sub
-
- Private Sub BtnOcultar_Click(sender As Object, e As EventArgs) Handles BtnOcultar.Click
- GvBitacora.Visible = False
- BtnOcultar.Visible = False
- BtnMostrar.Visible = True
- UpBitacora.Update()
+ End Get
+ Set
+ m_Serie = Value
+ End Set
+ End Property
+ Private m_Serie As String
+
+ Private _fecha As String
+ Private Property fecha() As String
+ Get
+ Return _fecha
+ End Get
+ Set
+ _fecha = Value
+ End Set
+ End Property
+
+ Private _tipoDeComprobante As String
+ Private Property tipoDeComprobante() As String
+ Get
+ Return _tipoDeComprobante
+ End Get
+ Set
+ _tipoDeComprobante = Value
+ End Set
+ End Property
+
+ Private _formaDePago As String
+ Private Property formaDePago() As String
+ Get
+ Return _formaDePago
+ End Get
+ Set
+ _formaDePago = Value
+ End Set
+ End Property
+
+ Private _subTotal As String
+ Private Property subTotal() As String
+ Get
+ Return _subTotal
+ End Get
+ Set
+ _subTotal = Value
+ End Set
+ End Property
+
+ Private _descuento As String
+ Private Property descuento() As String
+ Get
+ Return _descuento
+ End Get
+ Set
+ _descuento = Value
+ End Set
+ End Property
+ Private _total As String
+ Private Property total() As String
+ Get
+ Return _total
+ End Get
+ Set
+ _total = Value
+ End Set
+ End Property
+
+ Private _moneda As String
+ Private Property moneda() As String
+ Get
+ Return _moneda
+ End Get
+ Set
+ _moneda = Value
+ End Set
+ End Property
+
+ Private _metodoDePago As String
+ Private Property metodoDePago() As String
+ Get
+ Return _metodoDePago
+ End Get
+ Set
+ _metodoDePago = Value
+ End Set
+ End Property
+
+ Private _condicionesDePago As String
+ Private Property condicionesDePago() As String
+ Get
+ Return _condicionesDePago
+ End Get
+ Set
+ _condicionesDePago = Value
+ End Set
+ End Property
+
+ Private _LugarExpedicion As String
+ Private Property LugarExpedicion() As String
+ Get
+ Return _LugarExpedicion
+ End Get
+ Set
+ _LugarExpedicion = Value
+ End Set
+ End Property
+
+ Private _NumCtaPagoNumCtaPago As String
+ Private Property NumCtaPagoNumCtaPago() As String
+ Get
+ Return _NumCtaPagoNumCtaPago
+ End Get
+ Set
+ _NumCtaPagoNumCtaPago = Value
+ End Set
+ End Property
+
+ Private _noCertificado As String
+ Private Property noCertificado() As String
+ Get
+ Return _noCertificado
+ End Get
+ Set
+ _noCertificado = Value
+ End Set
+ End Property
+
+ ''Emisor
+ Private _EmiRFC As String
+ Private Property EmiRFC() As String
+ Get
+ Return _EmiRFC
+ End Get
+ Set
+ _EmiRFC = Value
+ End Set
+ End Property
+
+ Private _EmiNombre As String
+ Private Property EmiNombre() As String
+ Get
+ Return _EmiNombre
+ End Get
+ Set
+ _EmiNombre = Value
+ End Set
+ End Property
+
+ Private _DomFisCalle As String
+ Private Property DomFisCalle() As String
+ Get
+ Return _DomFisCalle
+ End Get
+ Set
+ _DomFisCalle = Value
+ End Set
+ End Property
+
+ Private _DomFisNoExt As String
+ Private Property DomFisNoExt() As String
+ Get
+ Return _DomFisNoExt
+ End Get
+ Set
+ _DomFisNoExt = Value
+ End Set
+ End Property
+ 'Dim _DomFisNoInt As String
+
+ Private _DomFisCol As String
+ Private Property DomFisCol() As String
+ Get
+ Return _DomFisCol
+ End Get
+ Set
+ _DomFisCol = Value
+ End Set
+ End Property
+
+ Private _DomFisCP As String
+ Private Property DomFisCP() As String
+ Get
+ Return _DomFisCP
+ End Get
+ Set
+ _DomFisCP = Value
+ End Set
+ End Property
+
+ Private _DomFisMun As String
+ Private Property DomFisMun() As String
+ Get
+ Return _DomFisMun
+ End Get
+ Set
+ _DomFisMun = Value
+ End Set
+ End Property
+
+ Private _DomFisLoc As String
+ Private Property DomFisLoc() As String
+ Get
+ Return _DomFisLoc
+ End Get
+ Set
+ _DomFisLoc = Value
+ End Set
+ End Property
+
+ Private _DomFisEst As String
+ Private Property DomFisEst() As String
+ Get
+ Return _DomFisEst
+ End Get
+ Set
+ _DomFisEst = Value
+ End Set
+ End Property
+
+ Private _DomFisPais As String
+ Private Property DomFisPais() As String
+ Get
+ Return _DomFisPais
+ End Get
+ Set
+ _DomFisPais = Value
+ End Set
+ End Property
+
+ Private _ExpEnCalle As String
+ Private Property ExpEnCalle() As String
+ Get
+ Return _ExpEnCalle
+ End Get
+ Set
+ _ExpEnCalle = Value
+ End Set
+ End Property
+
+ Private _ExpEnNoExt As String
+ Private Property ExpEnNoExt() As String
+ Get
+ Return _ExpEnNoExt
+ End Get
+ Set
+ _ExpEnNoExt = Value
+ End Set
+ End Property
+
+
+ Private ExpEnCol As String
+
+ Private _ExpEnCP As String
+ Private Property ExpEnCP() As String
+ Get
+ Return _ExpEnCP
+ End Get
+ Set
+ _ExpEnCP = Value
+ End Set
+ End Property
+
+ Private _ExpEnMun As String
+ Private Property ExpEnMun() As String
+ Get
+ Return _ExpEnMun
+ End Get
+ Set
+ _ExpEnMun = Value
+ End Set
+ End Property
+
+ Private _ExpEnLoc As String
+ Private Property ExpEnLoc() As String
+ Get
+ Return _ExpEnLoc
+ End Get
+ Set
+ _ExpEnLoc = Value
+ End Set
+ End Property
+
+ Private _ExpEnEst As String
+ Private Property ExpEnEst() As String
+ Get
+ Return _ExpEnEst
+ End Get
+ Set
+ _ExpEnEst = Value
+ End Set
+ End Property
+ Private _ExpEnPais As String
+ Private Property ExpEnPais() As String
+ Get
+ Return _ExpEnPais
+ End Get
+ Set
+ _ExpEnPais = Value
+ End Set
+ End Property
+
+ Private _Regimen As String
+ Private Property Regimen() As String
+ Get
+ Return _Regimen
+ End Get
+ Set
+ _Regimen = Value
+ End Set
+ End Property
+
+ ''Receptor
+ Private _RecRfc As String
+ Private Property RecRfc() As String
+ Get
+ Return _RecRfc
+ End Get
+ Set
+ _RecRfc = Value
+ End Set
+ End Property
+
+ Private _RecNombre As String
+ Private Property RecNombre() As String
+ Get
+ Return _RecNombre
+ End Get
+ Set
+ _RecNombre = Value
+ End Set
+ End Property
+
+ Private _DomRecCalle As String
+ Private Property DomRecCalle() As String
+ Get
+ Return _DomRecCalle
+ End Get
+ Set
+ _DomRecCalle = Value
+ End Set
+ End Property
+
+ Private _DomRecFisNoExt As String
+ Private Property DomRecFisNoExt() As String
+ Get
+ Return _DomRecFisNoExt
+ End Get
+ Set
+ _DomRecFisNoExt = Value
+ End Set
+ End Property
+
+ Private _DomRecFisNoInt As String
+ Private Property DomRecFisNoInt() As String
+ Get
+ Return _DomRecFisNoInt
+ End Get
+ Set
+ _DomRecFisNoInt = Value
+ End Set
+ End Property
+
+ Private _DomRecCol As String
+ Private Property DomRecCol() As String
+ Get
+ Return _DomRecCol
+ End Get
+ Set
+ _DomRecCol = Value
+ End Set
+ End Property
+
+ Private _DomRecCP As String
+ Private Property DomRecCP() As String
+ Get
+ Return _DomRecCP
+ End Get
+ Set
+ _DomRecCP = Value
+ End Set
+ End Property
+
+ Private _DomRecMun As String
+ Private Property DomRecMun() As String
+ Get
+ Return _DomRecMun
+ End Get
+ Set
+ _DomRecMun = Value
+ End Set
+ End Property
+
+ Private _DomRecLoc As String
+ Private Property DomRecLoc() As String
+ Get
+ Return _DomRecLoc
+ End Get
+ Set
+ _DomRecLoc = Value
+ End Set
+ End Property
+
+ Private _DomRecEst As String
+ Private Property DomRecEst() As String
+ Get
+ Return _DomRecEst
+ End Get
+ Set
+ _DomRecEst = Value
+ End Set
+ End Property
+
+ Private _DomRecPais As String
+ Private Property DomRecPais() As String
+ Get
+ Return _DomRecPais
+ End Get
+ Set
+ _DomRecPais = Value
+ End Set
+ End Property
+
+ 'IVA
+ Private _TrasladoIVA As Double
+ Private Property TrasladoIVA() As Double
+ Get
+ Return _TrasladoIVA
+ End Get
+ Set
+ _TrasladoIVA = Value
+ End Set
+ End Property
+
+ 'TFD
+ Private _TFDUUID As String
+ Private Property TFDUUID() As String
+ Get
+ Return _TFDUUID
+ End Get
+ Set
+ _TFDUUID = Value
+ End Set
+ End Property
+
+ Private _TFDFechaTimbrado As String
+ Private Property TFDFechaTimbrado() As String
+ Get
+ Return _TFDFechaTimbrado
+ End Get
+ Set
+ _TFDFechaTimbrado = Value
+ End Set
+ End Property
+
+ Private _TFDSelloCFD As String
+ Private Property TFDSelloCFD() As String
+ Get
+ Return _TFDSelloCFD
+ End Get
+ Set
+ _TFDSelloCFD = Value
+ End Set
+ End Property
+
+ Private _TFDNoCertSAT As String
+ Private Property TFDNoCertSAT() As String
+ Get
+ Return _TFDNoCertSAT
+ End Get
+ Set
+ _TFDNoCertSAT = Value
+ End Set
+ End Property
+
+ Private _TFDSelloSAT As String
+ Private Property TFDSelloSAT() As String
+ Get
+ Return _TFDSelloSAT
+ End Get
+ Set
+ _TFDSelloSAT = Value
+ End Set
+ End Property
+
+#End Region
+
+ Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load
+ If Not Page.IsPostBack Then
+ ChecandoCorreo = False
+ 'GvD.Columns(GvD.Columns.Count - 1).Visible = True '(UsuarioActual.CveRol = 1)
+ 'GvD.Columns(GvD.Columns.Count - 2).Visible = (UsuarioActual.CveRol = 1)
+ 'GvD.Columns(GvD.Columns.Count - 3).Visible = (UsuarioActual.CveRol = 1)
+ ViewState("Orden") = String.Empty
+
+ txtFechaI.Text = Now.AddMonths(-1).FirstDayOfMonth().ToShortDateString ' String.Format("01/01/{0}", If(Now.Month > 6, Now.Year, Now.Year - 1))
+
+ txtFechaF.Text = Now.ToShortDateString 'txtFechaI.Text.ToDate.AddMonths(1).AddDays(-1).ToShortDateString
+
+ Destino = String.Format("{0}Compras\", UsuarioActual.Empresa.Ruta) 'string.format("{0}Empresas\{1}\Compras\", AppDomain.CurrentDomain.BaseDirectory ,UsuarioActual.CveEmpresa & "\Compras\"
+ Ejecutable = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Utilerias\ADSUtilerias.exe")
+ Form.DefaultButton = BtnConsultar.UniqueID
+
+ DdlResponsable.DataSource = GlobalDTUsuarioResponsable.FiltraParametros(String.Format("CveEmpresa = {0}", UsuarioActual.CveEmpresa))
+ DdlResponsable.DataBind()
+ DdlResponsable.Items.Insert(0, New ListItem("Todos", "-1"))
+
+ DdlClasificacionProv.DataSource = GlobalDTProveedorClasificacion(UsuarioActual.CveEmpresa)
+ DdlClasificacionProv.DataBind()
+ DdlClasificacionProv.Items.Insert(0, New ListItem("Todos", "-1"))
+
+ TxtFechaBitInicio.Text = Now.ToString("dd/MM/yyyy")
+ TxtFechaBitFin.Text = Now.ToString("dd/MM/yyyy")
+
+ TxtFolio.Focus()
+
+ If UsuarioActual.Sesion("eFact-Proveedor").ToString <> "" Then TxtProveedor.Text = UsuarioActual.Sesion("eFact-Proveedor").ToString.Trim
+ If UsuarioActual.Sesion("eFact-FI").ToString <> "" Then txtFechaI.Text = UsuarioActual.Sesion("eFact-FI").ToString.Trim
+ If UsuarioActual.Sesion("eFact-FF").ToString <> "" Then txtFechaF.Text = UsuarioActual.Sesion("eFact-FF").ToString.Trim
+ If UsuarioActual.CveUsuario = 100 Then lbDescargar.Visible = True
+
+ If UsuarioActual.TienePermisoProceso(81) Then GvD.Columns(11).Visible = True : GvD.Columns(12).Visible = True
+ If UsuarioActual.TienePermisoProceso(206) Then GvD.Columns(10).Visible = False
+ If UsuarioActual.Empresa.Funcionalidad(156) = "1" Then GvD.Columns(5).Visible = True
+ CargaGvBitacora()
+ CargaDatos()
+ End If
+ removeasincevent()
+ End Sub
+ 'Private Sub CompararString()
+ ' Dim cont As Integer = 10000
+ ' Dim Sb As New StringBuilder
+ ' For i = 0 To cont
+ ' Sb.AppendFormat("a{0}", i)
+ ' Next
+ 'End Sub
+
+ Protected Sub BtnConsultar_Click(sender As Object, e As System.EventArgs) Handles BtnConsultar.Click
+ CargaDatos()
End Sub
-#End Region
+ Private Sub CargaDatos()
+ Dim Folio, RFC, Proveedor As String
+ Folio = If(TxtFolio.Text.Trim.Length > 0, String.Format("%{0}%", TxtFolio.Text.Trim.ToUpper), "-1")
+ RFC = "-1" 'If(TxtRFC.Text.Trim.Length > 0, TxtRFC.Text.Trim, "-1")
+ Proveedor = If(TxtProveedor.Text.Trim.Length > 0, String.Format("%{0}%", TxtProveedor.Text.Trim.ToUpper.Replace(" ", "%")), "-1")
+
+ UsuarioActual.Sesion("eFact-Proveedor") = TxtProveedor.Text.Trim
+ If Folio = "" Then UsuarioActual.Sesion("eFact-FI") = txtFechaI.Text
+ If Folio = "" Then UsuarioActual.Sesion("eFact-FF") = txtFechaF.Text
+ Dim FechaI, FechaF As Date
+ FechaI = txtFechaI.Text.ToDate
+ FechaF = txtFechaF.Text.ToDate
+ If Folio <> "-1" Then
+ FechaI = MinFecha
+ FechaF = MaxFecha
+ txtFechaI.Text = MinFecha.ToString
+ txtFechaF.Text = Now.ToShortDateString
+ End If
+ Dim DtPagos As DataTable = Nothing
+ Dim ObjDatos As New ClsCompras
+ If ObjDatos.GetFacturas(-1, Folio, FechaI, FechaF, RFC, Proveedor, DdlValidado.SelectedValue.ToEntero, DdlResponsable.SelectedValue.ToEntero, DdlClasificacionProv.SelectedValue.ToEntero, DdlCveTipoProveedor.SelectedValue.ToEntero, DdlTipoComprobante.SelectedValue.ToString, UsuarioActual.CveEmpresa) Then
+ If ObjDatos.DtResultados.Rows.Count > 0 Then
+ GvD.DataSource = ObjDatos.DtResultados.FiltraParametros("TipoComprobante <> 'P'") '.AsEnumerable().Take(100).CopyToDataTable()
+ DtPagos = ObjDatos.DtResultados.FiltraParametros("TipoComprobante = 'P'")
+ Else
+ GvD.DataSource = Nothing
+ End If
+ End If
+ LblRegistros.Text = String.Format("{0} Registros", ObjDatos.DtResultados.FiltraParametros("TipoComprobante <> 'P'").Rows.Count.ToString("N0"))
+ LblTotalPagos.Text = String.Format("{0} Pagos", ObjDatos.DtResultados.FiltraParametros("TipoComprobante = 'P'").Rows.Count.ToString("N0"))
+ ObjDatos.Dispose()
+
+ If DtPagos IsNot Nothing AndAlso DtPagos.Rows.Count > 0 Then
+ GvPagos.DataSource = DtPagos
+ End If
+ GvPagos.DataBind()
+ UpPagos.Update()
+
+ GvD.DataBind()
+
+ UpDatos.Update()
+ UPRegistros.Update()
+ End Sub
+
+ Protected Sub LnkExportar_Click(sender As Object, e As EventArgs) Handles LnkExportar.Click
+ GenerarPDF("Excel")
+ End Sub
+
+ Protected Sub ImgRefresh_Click(sender As Object, e As EventArgs) Handles ImgRefresh.Click
+
+ If VerificaCorreo() Then
+ CargaDatos()
+ End If
+
+ End Sub
+
+ Private Function VerificaCorreo(Optional ValidaRowCount As Boolean = False) As Boolean
+ Dim Retorno As Boolean = False
+
+ Dim ObjProcess As Process = Nothing
+ Dim Mensajes As String = ""
+ Dim error1 As Boolean = False
+ Dim CountProcesados As Integer = 0
+
+ Try
+ ObjProcess = New Process()
+ ObjProcess.StartInfo.RedirectStandardOutput = True
+ ObjProcess.StartInfo.FileName = Ejecutable
+ ObjProcess.StartInfo.Arguments = $"--mod eFacturas --e {UsuarioActual.CveEmpresa} --c "
+ ObjProcess.StartInfo.UseShellExecute = False
+ ObjProcess.StartInfo.WindowStyle = ProcessWindowStyle.Normal
+ ObjProcess.Start()
+
+
+ Dim myStreamReader As StreamReader = ObjProcess.StandardOutput
+
+ 'Read the standard output of the spawned process.
+ Mensajes = myStreamReader.ReadLine()
+ If Mensajes.Length > 0 Then
+
+ Dim msgs As String() = Mensajes.Split("|"c)
+ Dim NFacturas As Integer = 0
+
+
+
+
+ If msgs.Length >= 2 Then
+ Try
+ NFacturas = msgs(0).ToEntero
+ CountProcesados = msgs(0).ToEntero
+ Mensajes = $"La actualización se realizó correctamente.
Facturas agregadas: { NFacturas }"
+ Catch ex As Exception
+ NFacturas = 0
+ Mensajes = "La actualización se realizó correctamente"
+ End Try
+ Else
+ Mensajes = "La actualización se realizó correctamente"
+ End If
+
+
+
+ LnkNoRecibidas_Click(LnkNoRecibias, EventArgs.Empty, ValidaRowCount:=ValidaRowCount)
+
+
+ 'Else
+ ' Dim Str As New StringBuilder
+ ' Dim conta As Integer = 1
+ ' Str.Append("Se encontraron las siguientes facturas con problema:
| Serie | Folio | Fecha | Proveedor | Importe | Motivo |
")
+ ' Dim ARR As String() = Mensajes.Split("&"c)
+ ' Dim ArrDetalle As String()
+ ' For Each d As String In ARR
+ ' Str.Append("")
+ ' ArrDetalle = d.Split("|"c)
+ ' For Each det As String In ArrDetalle
+ ' Str.AppendFormat("| {1} | ", If(conta Mod 2 = 0, "TextoAlterno", "Texto"), det)
+ ' Next
+ ' Str.Append("
")
+ ' conta += 1
+ ' Next
+ ' Str.Append("
")
+ ' Mensajes = Str.ToString
+ End If
+ ObjProcess.WaitForExit()
+ ObjProcess.Close()
+ Retorno = True
+ Catch ex As Exception
+ error1 = True
+ OnError("Ocurrió un error al ejecutar el actualizador.", ex)
+ End Try
+
+
+ LblFacturasProcesadasCount.Text = "Procesados:" & CountProcesados
+ RegistraScript("$('#ModalBitacoraEfacturas').modal()")
+ CargaDatosBitacora()
+
+ 'If Not error1 Then Alert(Mensajes, TipoMensaje.MsgInformacion)
+
+
+ Return Retorno
+ End Function
+
+ Protected Sub BtnBuscarBitacora_Click(sender As Object, e As EventArgs) Handles BtnBuscarBitacora.Click
+ CargaDatosBitacora()
+ End Sub
+
+
+ Protected Sub LnkBitacotaFacturas_Click(sender As Object, e As EventArgs)
+
+ RegistraScript("$('#ModalBitacoraEfacturas').modal()")
+ CargaDatosBitacora()
+ End Sub
+
+
+ Private Sub CargaDatosBitacora()
+
+ LblFacturasProcesadasCount.Text = ""
+
+ Dim ObjCompras As New ClsCompras
+
+ If ObjCompras.GetFacturasBitacoraGet(TxtFechaBitInicio.Text.ToDate, TxtFechaBitFin.Text.ToDate, UsuarioActual.CveEmpresa) Then
+ GvBitacoraEfacturas.DataSource = ObjCompras.DtResultados
+ Else
+ GvBitacoraEfacturas.DataSource = Nothing
+ End If
+
+ ObjCompras.Dispose()
+ GvBitacoraEfacturas.DataBind()
+ UpModalBitacoraEfacturas.Update()
+
+ End Sub
+
+#Region "G V D A T O S"
+ Protected Sub GvDatos_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles GvD.RowDataBound
+ If e.Row.RowType = DataControlRowType.DataRow Then
+ e.Row.FindControl("lnkRegenerarPDF").Visible = True ' (UsuarioActual.CveRol = 1)
+ 'e.Row.FindControl("lnkDownPdf").Visible = (UsuarioActual.CveRol = 1)
+ 'e.Row.FindControl("lnkXML").Visible = (UsuarioActual.CveRol = 1)
+ Select Case e.Row.DBCampo("TipoComprobante")
+ Case "I"
+ e.Row.FCLabel("LtTipoComprobante").Text = "Ingreso"
+ e.Row.FCLabel("LtTipoComprobante").CssClass = "label label-sm label-success"
+ e.Row.FCLabel("LtTipoComprobante").Attributes.Add("data-toggle", "tooltip")
+ e.Row.FCLabel("LtTipoComprobante").Attributes.Add("title", "Ingreso")
+ Case "E"
+ e.Row.FCLabel("LtTipoComprobante").Text = "Egreso"
+ e.Row.FCLabel("LtTipoComprobante").CssClass = "label label-sm label-warning"
+ e.Row.FCLabel("LtTipoComprobante").Attributes.Add("data-toggle", "tooltip")
+ e.Row.FCLabel("LtTipoComprobante").Attributes.Add("title", "Egreso")
+ Case "P"
+ e.Row.FCLabel("LtTipoComprobante").Text = "Pago"
+ e.Row.FCLabel("LtTipoComprobante").CssClass = "label label-sm label-primary"
+ e.Row.FCLabel("LtTipoComprobante").Attributes.Add("data-toggle", "tooltip")
+ e.Row.FCLabel("LtTipoComprobante").Attributes.Add("title", "Complemento Pago")
+ End Select
+
+ e.Row.Cells(2).Attributes.Add("data-order", e.Row.DBCampo("FechaFactura").ToDate.Ticks.ToString)
+
+ If File.Exists(String.Format("{0}{1}\{2}", Destino, e.Row.DBCampo("RFCDe"), e.Row.DBCampo("XML"))) Then
+ e.Row.FCLiteral("LtlXML").Text = String.Format("Ver", HttpUtility.UrlEncode(e.Row.DBCampo("RFCDe")), HttpUtility.UrlEncode(e.Row.DBCampo("XML")))
+ If e.Row.DBCampo("TipoComprobante") = "P" Then
+ e.Row.FCLinkButton("LnkAgregarPago").Visible = True
+ End If
+ Else
+ e.Row.FCLiteral("LtlXML").Text = "N/D"
+ If e.Row.DBCampo("TipoComprobante") = "P" Then
+ e.Row.FCLinkButton("LnkAgregarPago").Visible = False
+ End If
+ End If
+
+ If File.Exists(String.Format("{0}{1}/{2}", Destino, e.Row.DBCampo("RFCDe"), e.Row.DBCampo("PDF"))) Then
+ e.Row.FCLiteral("LtlPDF").Text = String.Format("Ver", HttpUtility.UrlEncode(e.Row.DBCampo("RFCDe")), HttpUtility.UrlEncode(e.Row.DBCampo("PDF")))
+ Else
+ e.Row.FCLiteral("LtlPDF").Text = "N/D"
+ End If
+
+ If e.Row.DBCampo("FueValidado").Contiene("1", "2", "3") Then
+ e.Row.FCLinkButton("ImgValidarCFDi").Visible = False
+ e.Row.FCLiteral("LtlValidado").Visible = True
+ If e.Row.DBCampo("FueValidado") = "2" Then
+ e.Row.FCLiteral("LtlValidado").Text = "Cancelada"
+ e.Row.ForeColor = Drawing.Color.Red
+ e.Row.FCHyperLink("HplProveedor").ForeColor = Drawing.Color.Red
+ ElseIf e.Row.DBCampo("FueValidado") = "3" Then
+ e.Row.FCLiteral("LtlValidado").Text = "Omitida"
+ e.Row.ForeColor = Drawing.Color.Gray
+ e.Row.FCHyperLink("HplProveedor").ForeColor = Drawing.Color.Gray
+ End If
+ Else
+ If e.Row.DBCampo("TipoFactura") = "CFD" Then
+ e.Row.FCLinkButton("ImgValidarCFDi").CommandName = "ValidarCFD"
+ e.Row.FCLinkButton("ImgValidarCFDi").OnClientClick = "return confirm('La factura se validó en el sitio del SAT de comprobantes fiscales?');"
+ End If
+ e.Row.FCLinkButton("ImgValidarCFDi").Visible = True
+ e.Row.FCLiteral("LtlValidado").Visible = False
+
+ End If
+ If e.Row.DBCampo("CveCompra") <> "" Then
+ e.Row.FCLiteral("LtlFolio").Text = String.Format("{1}", e.Row.DBCampo("CveCompra"), e.Row.DBCampo("SerieFolio")) '1\Compras\GAPC480413QL3\A-69.xml
+ End If
+
+ If e.Row.DBCampo("CveProveedor") = "" Then
+ e.Row.FCHyperLink("HplProv").Visible = True
+ e.Row.FCHyperLink("HplProv").NavigateUrl = String.Format("/Compras/Proveedores.aspx?CveFactura={0}", e.Row.DBCampo("CveFactura"))
+
+ Else
+
+ Dim BloquePorComplemento As Integer = e.Row.DataKey("BloquePorComplemento").ToEntero
+
+ e.Row.FCHyperLink("HplProveedor").NavigateUrl = String.Format("/Compras/Proveedores.aspx?CveProveedor={0}", e.Row.DBCampo("CveProveedor"))
+
+ If e.Row.DBCampo("CveCompra") = "" AndAlso (e.Row.DBCampo("FueValidado") = "1") Then ' OrElse UsuarioActual.CveEmpresa = 66
+
+ If e.Row.DBCampo("TipoComprobante") = "P" Then
+ e.Row.FCHyperLink("HplAgregar").Visible = False
+ Else
+ e.Row.FCHyperLink("HplAgregar").NavigateUrl = String.Format("/Compras/Compras.aspx?CveFactura={0}&RFC={1}", e.Row.DBCampo("CveFactura"), e.Row.DBCampo("RFCDe"))
+
+ If BloquePorComplemento > 0 Then
+ e.Row.FCHyperLink("HplAgregar").Enabled = False
+ e.Row.FCHyperLink("HplAgregar").Attributes.Add("title", "Bloqueo por complemento")
+ End If
+
+ End If
+
+ Else
+ e.Row.FCHyperLink("HplAgregar").Visible = False
+ End If
+
+
+
+ End If
+
+
+ If e.Row.RowState = DataControlRowState.Edit OrElse e.Row.RowState = 5 Then
+ End If
+
+ End If
+ End Sub
+ Protected Sub GvDatos_RowUpdating(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewUpdateEventArgs) Handles GvD.RowUpdating
+ Dim ObjDatos As New ClsCompras
+ Dim FueValidado As Integer = 0
+ If GvD.Rows(e.RowIndex).FCCheckBox("ChkFueValidado").Checked Then FueValidado = 1
+ If ObjDatos.UpdateEstatus(FueValidado, GvD.DataKeys(e.RowIndex).Value.ToString.ToEntero) Then
+ GvD.EditIndex = -1
+ BtnConsultar_Click(sender, e)
+ End If
+ ObjDatos.Dispose()
+
+
+ CargaDatos()
+ End Sub
+ Protected Sub GvDatos_RowCancelingEdit(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewCancelEditEventArgs) Handles GvD.RowCancelingEdit
+ GvD.EditIndex = -1
+ CargaDatos()
+ End Sub
+
+
+ Protected Sub imgD_Click(sender As Object, e As EventArgs)
+ Dim gvRow As GridViewRow = DirectCast((DirectCast(sender, LinkButton)).NamingContainer, GridViewRow)
+ CveFactura = gvRow.DataKey("CveFactura").ToString.ToEntero
+ Folio1 = gvRow.DataKey("SerieFolio").ToString
+ Proveedor = gvRow.DataKey("NombreProveedor").ToString
+ TxtDescripcion.Text = ""
+ RegistraScript("$('#divDescripcion').modal()")
+ UpDescripcion.Update()
+ End Sub
+
+ Protected Sub GvDatos_RowEditing(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewEditEventArgs) Handles GvD.RowEditing
+ GvD.EditIndex = e.NewEditIndex
+ CargaDatos()
+ End Sub
+
+ Protected Sub GvDatos_RowCommand(sender As Object, e As GridViewCommandEventArgs) Handles GvD.RowCommand
+ Dim ImgBtn As LinkButton = DirectCast(e.CommandSource, LinkButton)
+ Dim GvRow As GridViewRow = DirectCast(ImgBtn.BindingContainer, GridViewRow)
+ Dim ObjDatos As New ClsCompras
+ Dim Correcto As Boolean = False
+
+ Select Case e.CommandName
+ Case "ValidarCFDi"
+ Dim ObjValidacion As New ClsValidaCFDi(GvRow.DataKey("UUID"), GvRow.DataKey("RFCDe"), GvRow.DataKey("RFCPara"), GvRow.DataKey("Total").ToDecimal)
+ If ObjValidacion.EsValida > 0 Then
+ If ObjValidacion.EsValida = 2 Then
+ Alert("La factura está cancelada ante el SAT.", TipoMensaje.MsgInformacion)
+ End If
+ Correcto = ObjDatos.UpdateEstatus(ObjValidacion.EsValida, GvRow.DataKey("CveFactura").ToEntero)
+ Else
+ Alert("La Factura no se pudo validar.", TipoMensaje.MsgAdvertencia)
+ End If
+ ObjValidacion.Dispose()
+ Case "ValidarCFD"
+ Correcto = ObjDatos.UpdateEstatus(1, GvRow.DataKey("CveFactura").ToEntero)
+
+ Case "Omitir"
+ Correcto = ObjDatos.UpdateEstatus(3, GvRow.DataKey("CveFactura").ToEntero)
+ End Select
+
+ ObjDatos.Dispose()
+ If Correcto Then
+ CargaDatos()
+ End If
+
+ End Sub
+#End Region
+
+#Region "G V P A G O S"
+ Protected Sub GvPagos_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles GvPagos.RowDataBound
+ If e.Row.RowType = DataControlRowType.DataRow Then
+
+ If e.Row.DBCampo("TipoComprobante") = "P" Then
+ e.Row.FCLabel("LtTipoComprobante").Text = "Pago"
+ e.Row.FCLabel("LtTipoComprobante").CssClass = "label label-sm label-primary"
+ e.Row.FCLabel("LtTipoComprobante").Attributes.Add("data-toggle", "tooltip")
+ e.Row.FCLabel("LtTipoComprobante").Attributes.Add("title", "Complemento Pago")
+ End If
+
+ e.Row.Cells(2).Attributes.Add("data-order", e.Row.DBCampo("FechaFactura").ToDate.Ticks.ToString)
+
+ If File.Exists(String.Format("{0}{1}\{2}", Destino, e.Row.DBCampo("RFCDe"), e.Row.DBCampo("XML"))) Then
+ e.Row.FCLiteral("LtlXML").Text = String.Format("Ver", HttpUtility.UrlEncode(e.Row.DBCampo("RFCDe")), HttpUtility.UrlEncode(e.Row.DBCampo("XML")))
+ If e.Row.DBCampo("TipoComprobante") = "P" And e.Row.DBCampo("FueValidado") = "1" Then
+ e.Row.FCLinkButton("LnkAgregarPagoP").Visible = True
+ End If
+ Else
+ e.Row.FCLiteral("LtlXML").Text = "N/D" ' String.Format("{0}{1}\{2}", Destino, e.Row.DBCampo("RFCDe"), e.Row.DBCampo("XML")) '
+ If e.Row.DBCampo("TipoComprobante") = "P" Then
+ e.Row.FCLinkButton("LnkAgregarPagoP").Visible = False
+ End If
+ End If
+
+ If File.Exists(String.Format("{0}{1}/{2}", Destino, e.Row.DBCampo("RFCDe"), e.Row.DBCampo("PDF"))) Then
+ e.Row.FCLiteral("LtlPDF").Text = String.Format("Ver", HttpUtility.UrlEncode(e.Row.DBCampo("RFCDe")), HttpUtility.UrlEncode(e.Row.DBCampo("PDF")))
+ Else
+ e.Row.FCLiteral("LtlPDF").Text = "N/D" ' String.Format("{0}{1}/{2}", Destino, e.Row.DBCampo("RFCDe"), e.Row.DBCampo("PDF"))
+ End If
+
+ If e.Row.DBCampo("FueValidado").Contiene("1", "2", "3") Then
+ e.Row.FCLinkButton("ImgValidarCFDi").Visible = False
+ e.Row.FCLiteral("LtlValidado").Visible = True
+ If e.Row.DBCampo("FueValidado") = "2" Then
+ e.Row.FCLiteral("LtlValidado").Text = "Cancelada"
+ e.Row.ForeColor = Drawing.Color.Red
+ e.Row.FCHyperLink("HplProveedor").ForeColor = Drawing.Color.Red
+ ElseIf e.Row.DBCampo("FueValidado") = "3" Then
+ e.Row.FCLiteral("LtlValidado").Text = "Omitida"
+ e.Row.ForeColor = Drawing.Color.Gray
+ e.Row.FCHyperLink("HplProveedor").ForeColor = Drawing.Color.Gray
+ End If
+ Else
+ If e.Row.DBCampo("TipoFactura") = "CFD" Then
+ e.Row.FCLinkButton("ImgValidarCFDi").CommandName = "ValidarCFD"
+ e.Row.FCLinkButton("ImgValidarCFDi").OnClientClick = "return confirm('La factura se validó en el sitio del SAT de comprobantes fiscales?');"
+ End If
+ e.Row.FCLinkButton("ImgValidarCFDi").Visible = True
+ e.Row.FCLiteral("LtlValidado").Visible = False
+
+ End If
+ If e.Row.DBCampo("CveCompra") <> "" Then
+ e.Row.FCLiteral("LtlFolio").Text = String.Format("{1}", e.Row.DBCampo("CveCompra"), e.Row.DBCampo("SerieFolio")) '1\Compras\GAPC480413QL3\A-69.xml
+ End If
+
+ If e.Row.DBCampo("CveProveedor") = "" Then
+ e.Row.FCHyperLink("HplProv").Visible = True
+ e.Row.FCHyperLink("HplProv").NavigateUrl = String.Format("/Compras/Proveedores.aspx?CveFactura={0}", e.Row.DBCampo("CveFactura"))
+
+ Else
+ e.Row.FCHyperLink("HplProveedor").NavigateUrl = String.Format("/Compras/Proveedores.aspx?CveProveedor={0}", e.Row.DBCampo("CveProveedor"))
+
+ If e.Row.DBCampo("CveCompra") = "" AndAlso (e.Row.DBCampo("FueValidado") = "1") Then ' OrElse UsuarioActual.CveEmpresa = 66
+ '
+ If e.Row.DBCampo("TipoComprobante") = "P" Then
+ e.Row.FCHyperLink("HplAgregarP").Visible = False
+ Else
+ e.Row.FCHyperLink("HplAgregarP").NavigateUrl = String.Format("/Compras/Compras.aspx?CveFactura={0}&RFC={1}", e.Row.DBCampo("CveFactura"), e.Row.DBCampo("RFCDe"))
+ End If
+
+
+ Else
+ 'si ya tiene cvecompra es que ya está validada
+ e.Row.FCHyperLink("HplAgregarP").Visible = False
+ End If
+
+ End If
+
+
+ Dim CveComplementoPagoCompra As Integer = e.Row.DataKey("CveComplementoPagoCompra").ToString.ToEntero
+
+
+ If CveComplementoPagoCompra > 0 Then
+ e.Row.FCLinkButton("LnkAgregarPagoP").CssClass = "btn btn-sm green"
+ e.Row.FCLinkButton("LnkAgregarPagoP").Text = ""
+ 'e.Row.FCLinkButton("LnkAgregarPagoP").ToolTip = "Ver vinculación"
+ e.Row.FCLinkButton("LnkAgregarPagoP").Attributes.Add("Title", "Ver vinculación")
+ Else
+ e.Row.FCLinkButton("LnkAgregarPagoP").CssClass = "btn btn-sm blue"
+ e.Row.FCLinkButton("LnkAgregarPagoP").Text = ""
+ 'e.Row.FCLinkButton("LnkAgregarPagoP").ToolTip = "Vincular Pago"
+ e.Row.FCLinkButton("LnkAgregarPagoP").Attributes.Add("Title", "Vincular Pago")
+ End If
+
+ End If
+ End Sub
+ Protected Sub GvPagos_RowUpdating(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewUpdateEventArgs) Handles GvPagos.RowUpdating
+ Dim ObjDatos As New ClsCompras
+ Dim FueValidado As Integer = 0
+ If GvPagos.Rows(e.RowIndex).FCCheckBox("ChkFueValidado").Checked Then FueValidado = 1
+ If ObjDatos.UpdateEstatus(FueValidado, GvD.DataKeys(e.RowIndex).Value.ToString.ToEntero) Then
+ GvPagos.EditIndex = -1
+ End If
+ ObjDatos.Dispose()
+ CargaDatos()
+ End Sub
+ Protected Sub GvPagos_RowCancelingEdit(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewCancelEditEventArgs) Handles GvPagos.RowCancelingEdit
+ GvPagos.EditIndex = -1
+ CargaDatos()
+ End Sub
+ Protected Sub GvPagos_RowEditing(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewEditEventArgs) Handles GvPagos.RowEditing
+ GvPagos.EditIndex = e.NewEditIndex
+ CargaDatos()
+ End Sub
+ Protected Sub imgDP_Click(sender As Object, e As EventArgs)
+ Dim gvRow As GridViewRow = DirectCast((DirectCast(sender, LinkButton)).NamingContainer, GridViewRow)
+ CveFactura = gvRow.DataKey("CveFactura").ToString.ToEntero
+ Folio1 = gvRow.DataKey("SerieFolio").ToString
+ Proveedor = gvRow.DataKey("NombreProveedor").ToString
+ TxtDescripcion.Text = ""
+ RegistraScript("$('#divDescripcionPago').modal()")
+ UpDescripcionPago.Update()
+ End Sub
+
+ Protected Sub GvPagos_RowCommand(sender As Object, e As GridViewCommandEventArgs) Handles GvPagos.RowCommand
+ Dim ImgBtn As LinkButton = DirectCast(e.CommandSource, LinkButton)
+ Dim GvRow As GridViewRow = DirectCast(ImgBtn.BindingContainer, GridViewRow)
+ Dim ObjDatos As New ClsCompras
+ Dim Correcto As Boolean = False
+
+ Select Case e.CommandName
+ Case "ValidarCFDi"
+ Dim ObjValidacion As New ClsValidaCFDi(GvRow.DataKey("UUID"), GvRow.DataKey("RFCDe"), GvRow.DataKey("RFCPara"), 0)
+ If ObjValidacion.EsValida > 0 Then
+ If ObjValidacion.EsValida = 2 Then
+ Alert("La factura está cancelada ante el SAT.", TipoMensaje.MsgInformacion)
+ End If
+ Correcto = ObjDatos.UpdateEstatus(ObjValidacion.EsValida, GvRow.DataKey("CveFactura").ToEntero)
+ Else
+ Alert("La Factura no se pudo validar.", TipoMensaje.MsgAdvertencia)
+ End If
+ ObjValidacion.Dispose()
+ Case "ValidarCFD"
+ Correcto = ObjDatos.UpdateEstatus(1, GvRow.DataKey("CveFactura").ToEntero)
+
+ Case "Omitir"
+ Correcto = ObjDatos.UpdateEstatus(3, GvRow.DataKey("CveFactura").ToEntero)
+ End Select
+
+ ObjDatos.Dispose()
+ If Correcto Then
+ CargaDatos()
+ End If
+ End Sub
+#End Region
+ Protected Sub ImgCFDiMasivo_Click(sender As Object, e As EventArgs) Handles LnkCFDiMasivo.Click
+ Dim ObjDatos As New ClsCompras
+ ObjDatos.IniciaTransacSQL()
+ Dim ErrorTrans As Boolean = False
+ If Tab.ActiveTabIndex = 0 Then
+ For Each GvRow As GridViewRow In GvD.Rows
+ If GvRow.DataKey("TipoFactura") = "CFDi" AndAlso GvRow.DataKey("FueValidado").Contiene("0", "1") Then
+ Dim ObjValidacion As New ClsValidaCFDi(GvRow.DataKey("UUID"), GvRow.DataKey("RFCDe"), GvRow.DataKey("RFCPara"), GvRow.DataKey("Total").ToDecimal)
+ If ObjValidacion.EsValida > 0 Then
+ If Not ObjDatos.UpdateEstatus(ObjValidacion.EsValida, GvRow.DataKey("CveFactura").ToEntero) Then
+ ErrorTrans = True
+ End If
+ End If
+ ObjValidacion.Dispose()
+ End If
+ Next
+ ElseIf Tab.ActiveTabIndex = 1 Then
+ For Each GvRow As GridViewRow In GvPagos.Rows
+ If GvRow.DataKey("TipoFactura") = "CFDi" AndAlso GvRow.DataKey("FueValidado").Contiene("0", "1") Then
+ Dim ObjValidacion As New ClsValidaCFDi(GvRow.DataKey("UUID"), GvRow.DataKey("RFCDe"), GvRow.DataKey("RFCPara"), 0)
+ If ObjValidacion.EsValida > 0 Then
+ If Not ObjDatos.UpdateEstatus(ObjValidacion.EsValida, GvRow.DataKey("CveFactura").ToEntero) Then
+ ErrorTrans = True
+ End If
+ End If
+ ObjValidacion.Dispose()
+ End If
+ Next
+ End If
+ If Not ErrorTrans Then
+ ObjDatos.Commit()
+ Alert("La verificación masiva ha terminado", TipoMensaje.MsgInformacion)
+ CargaDatos()
+ Else
+ ObjDatos.RollBack()
+ End If
+ ObjDatos.Dispose()
+ End Sub
+ Protected Sub LnkNoRecibidas_Click(sender As Object, e As EventArgs, Optional ValidaRowCount As Boolean = False) Handles LnkNoRecibias.Click
+ Dim DtNoRecibidas As New DataTable
+ Dim Ruta As String = String.Format("{0}\Empresas\{1}\Compras\NoRecibidas-{1}.xml", AppDomain.CurrentDomain.BaseDirectory, UsuarioActual.CveEmpresa)
+ Dim Str As New StringBuilder
+ If IO.File.Exists(Ruta) Then
+ DtNoRecibidas.ReadXml(Ruta)
+
+ Dim conta As Integer = 1
+ Str.Append("Se encontraron las siguientes facturas con problema:
| Serie | Folio | Fecha | Proveedor | Importe | Motivo | Correo | F. Recepción |
")
+
+ For Each dr As DataRow In DtNoRecibidas.FiltraParametros("", "Fecha DESC").Rows
+
+ Str.AppendFormat("", If(conta Mod 2 = 0, "TextoAlterno", "Texto"))
+
+ Str.AppendFormat("| {0} | ", dr("Serie"))
+ Str.AppendFormat("{0} | ", dr("Folio"))
+ Str.AppendFormat("{0} | ", If(dr("Fecha").ToString <> "", dr("Fecha").ToString.ToDate.ToShortDateString, ""))
+ Str.AppendFormat("{0} | ", dr("Proveedor"))
+ Str.AppendFormat("{0} | ", dr("Importe").ToString.ToDouble.FormatoNumero)
+ Str.AppendFormat("{0} | ", dr("Motivo"))
+ Str.AppendFormat("{0} | ", If(dr("Correo").ToString.Length > 20, dr("Correo").ToString.Substring(0, 20), dr("Correo").ToString()))
+ Str.AppendFormat("{0} | ", dr("FechaRecepcion").ToString.ToDate.ToShortDateString)
+
+ Str.Append("
")
+ conta += 1
+ Next
+ Str.Append("
")
+ Else
+ Str.Append("No se encontraron facturas pendientes de recibir.")
+ End If
+
+ If ValidaRowCount Then 'si las facturas no recividas son matores a cero se muestra el mensaje
+ If DtNoRecibidas.Rows.Count > 0 Then
+ Alert(Str.ToString, TipoMensaje.MsgInformacion)
+ End If
+ Else
+ Alert(Str.ToString, TipoMensaje.MsgInformacion)
+ End If
+
+ DtNoRecibidas.Dispose()
+
+ CargaDatos()
+ End Sub
+
+#Region "G E N E R A P D F "
+ Private Sub GenerarPDF(Optional Tipo As String = "PDF")
+ Dim ObjDatos As New ClsCompras
+ Dim FechaI As String = txtFechaI.Text
+ Dim FechaF As String = txtFechaF.Text
+ If txtFechaI.Text = "" Then FechaI = "-1"
+ If txtFechaF.Text = "" Then FechaF = "-1"
+ Dim Folio = If(TxtFolio.Text.Trim.Length > 0, String.Format("%{0}%", TxtFolio.Text.Trim.ToUpper), "-1")
+ Dim Proveedor = If(TxtProveedor.Text.Trim.Length > 0, String.Format("%{0}%", TxtProveedor.Text.Trim.ToUpper.Replace(" ", "%")), "-1")
+
+ If ObjDatos.GetFacturas(-1, Folio, txtFechaI.Text.Trim.ToDate, txtFechaF.Text.Trim.ToDate, "-1", Proveedor, DdlValidado.SelectedValue.ToEntero, DdlResponsable.SelectedValue.ToEntero, DdlClasificacionProv.SelectedValue.ToEntero, DdlCveTipoProveedor.SelectedValue.ToEntero, DdlTipoComprobante.SelectedValue.ToString, UsuarioActual.CveEmpresa) Then
+
+ Dim Imagen As New System.IO.FileInfo(String.Format("{0}/Logo.png", UsuarioActual.Empresa.Ruta))
+ Dim logouri = String.Format("{0}://{1}:{2}/Empresas/{3}/Logo.png", Request.Url.Scheme, Request.Url.Host, Request.Url.Port, UsuarioActual.CveEmpresa)
+
+ Dim dt As DataTable
+
+
+
+ If Tab.ActiveTabIndex = 0 Then
+ dt = ObjDatos.DtResultados.FiltraParametros("TipoComprobante <> 'P'")
+ Else
+ dt = ObjDatos.DtResultados.FiltraParametros("TipoComprobante = 'P' ")
+ End If
+
+
+
+ Dim params As New List(Of ReportParameter)
+ params.Add(New ReportParameter("NombreEmpresa", UsuarioActual.Empresa.Empresa))
+ params.Add(New ReportParameter("FechaInicio", FechaI))
+ params.Add(New ReportParameter("FechaFin", FechaF))
+ params.Add(New ReportParameter("UsuarioImprimio", UsuarioActual.Nombre))
+ params.Add(New ReportParameter("FechaImpresion", Now.ToDateTime.ToShortDateString))
+ If Imagen.Exists Then
+ params.Add(New ReportParameter("LogoPath", logouri))
+ Else
+ params.Add(New ReportParameter("LogoPath", ""))
+ End If
+
+ ImprimirPDF("Empresas/Grales/Formatos/RepFacturas.rdlc", dt, params, $"FacturasBuzon_{Now.ToString("yyyyMMyyddmmss")}", Tipo)
+ Else
+ Alert("No hay datos consultados", TipoMensaje.MsgAdvertencia)
+ End If
+
+ End Sub
+ Protected Sub LnkPdf_Click(sender As Object, e As EventArgs) Handles LnkPdf.Click
+ GenerarPDF()
+ End Sub
+#End Region
+
+#Region "S U B I R - F A C T U R A S - M A S I V A M E N T E"
+ Private Sub LnkSubirFacturas_Click(sender As Object, e As EventArgs) Handles LnkSubirFacturas.Click
+ RegistraScript(String.Format("$('#{0}').modal();", "ModalFacturas"))
+ End Sub
+ Private Sub BtnGuardarFaturas_Click(sender As Object, e As EventArgs) Handles BtnGuardarFaturas.Click
+
+ If UsuarioActual.Empresa.SendMail.Trim.Length = 0 Then
+ Alert("La Empresa no tiene configurado el envió de correo.", TipoMensaje.MsgAdvertencia)
+ Exit Sub
+ End If
+
+
+
+ Dim sw As New Diagnostics.Stopwatch
+ Dim swmili As Long = 0
+ Dim swTiempo As New StringBuilder
+ sw.Start()
+
+
+ Dim FileExtension As String = "-1"
+ Dim filesgral As List(Of Archivo) = Anexo.getfiles().Archivos
+ Dim filemove As String = ""
+
+ Dim ListXML As New List(Of String)
+ Dim ListPDF As New List(Of String)
+ Dim ListDirectorios As New List(Of String)
+
+
+
+ For Each fileItem As Archivo In filesgral
+ FileExtension = IO.Path.GetExtension(String.Format("{0}Temp\{1}", AppDomain.CurrentDomain.BaseDirectory, fileItem.filename)).Replace(".", "")
+ filemove = fileItem.filename
+
+ If filemove <> "" Then
+ filemove.FilesMove("", String.Format("Empresas\{0}\Temp\Facturas", UsuarioActual.CveEmpresa))
+ 'AGREGA XML A LA LISTA
+ If FileExtension.ToUpper = "XML" Then
+ ListXML.Add(String.Format("{0}Temp\Facturas\{1}", UsuarioActual.Empresa.Ruta, filemove))
+ End If
+
+ End If
+ Next
+
+
+ Dim fileEntries As String() = Directory.GetFiles(String.Format("{0}Empresas\{1}\Temp\Facturas", AppDomain.CurrentDomain.BaseDirectory, UsuarioActual.CveEmpresa))
+
+ Dim ListaDirectoriosTemporales As New List(Of String)
+ Dim ListaComprimidos As New List(Of String)
+
+ 'Dim fileName As String
+ Dim ArchivoExtension As String
+ Dim sOnlyFilename As String
+
+ For Each filePath In fileEntries
+ ArchivoExtension = IO.Path.GetExtension(String.Format("{0}", filePath)).Replace(".", "")
+ sOnlyFilename = System.IO.Path.GetFileName(filePath)
+ If ArchivoExtension.ToUpper = "RAR" Or ArchivoExtension.ToUpper = "ZIP" Then
+ ListaComprimidos.Add(filePath)
+ 'CREO DIRECTORIO ALEATORIO
+ Dim Aleatorio As New Random
+ Dim TempDirectorio As String = String.Format("{0}Empresas\{1}\{2}\{3}{4}", Request.PhysicalApplicationPath, UsuarioActual.CveEmpresa, "Temp\Facturas", Date.Now.Ticks, Aleatorio.Next(100, 999))
+ Directory.CreateDirectory(TempDirectorio)
+ ListaDirectoriosTemporales.Add(TempDirectorio)
+ 'AGREGA DIRECTORIO A LA LISTA
+ ListDirectorios.Add(TempDirectorio)
+ 'DESCOMPRIME RAR
+ DescomprimeFacturas(filePath, TempDirectorio)
+ 'AGREGA XML A LA LISTA
+ ListXML.AddRange(Directory.GetFiles(TempDirectorio))
+ End If
+
+
+ Next
+
+ Dim Arreglo As New ArrayList()
+ ' Dim Archivos As String() = Directory.GetFiles(String.Format("{0}Empresas\{1}\Temp", AppDomain.CurrentDomain.BaseDirectory, UsuarioActual.CveEmpresa))
+ 'Dim NombreArchivo As String
+ Dim Bandera = True
+ Dim Retorno = ""
+ Dim ListaArchivosMail As New List(Of ClsSisMail.ArchivoMail)
+
+
+ sw.Stop()
+ swTiempo.AppendFormat("ReadFiles: ({0}) {1} ", sw.ElapsedMilliseconds - swmili, sw.ElapsedMilliseconds)
+ swmili = sw.ElapsedMilliseconds
+ sw.Start()
+
+ Anexo.Text = ""
+ UPAddFacturas.Update()
+
+ For Each filePath In ListXML
+
+ If File.Exists(filePath) Then
+ Dim ArchivoAdjunto As New ClsSisMail.ArchivoMail
+ ArchivoAdjunto.ArchivoBinario = File.ReadAllBytes(filePath)
+ ArchivoAdjunto.Ruta = filePath
+ ArchivoAdjunto.NombreArchivo = New FileInfo(filePath).Name
+
+ ListaArchivosMail.Add(ArchivoAdjunto)
+
+ End If
+
+ Next
+
+ sw.Stop()
+ swTiempo.AppendFormat("Fill ClsSisMail.ArchivoMail: ({0}) {1} ", sw.ElapsedMilliseconds - swmili, sw.ElapsedMilliseconds)
+ swmili = sw.ElapsedMilliseconds
+ sw.Start()
+ If ListaArchivosMail.Count > 0 Then
+
+ Dim Correo As New ClsSisMail
+
+ 'If Correo.SendMail(UsuarioActual.Empresa, "sig.buzon@gmail.com", "Facturas Efacturas " & Now.ToString("yyyyMMddhhmmss"), "Facturas", Archivos:=ListaArchivosMail) Then
+
+
+
+
+ If Correo.SendMail(UsuarioActual.Empresa, UsuarioActual.Empresa.Buzon_Mail, "Facturas Efacturas " & Now.ToString("yyyyMMddhhmmss"), "Facturas", Archivos:=ListaArchivosMail) Then
+
+ sw.Stop()
+ swTiempo.AppendFormat("EnvioCorreo: ({0}) {1} ", sw.ElapsedMilliseconds - swmili, sw.ElapsedMilliseconds)
+ swmili = sw.ElapsedMilliseconds
+ sw.Start()
+ System.Threading.Thread.Sleep(3000)
+ 'ProcesaBuzon()
+
+ sw.Stop()
+ swTiempo.AppendFormat("espera: ({0}) {1} ", sw.ElapsedMilliseconds - swmili, sw.ElapsedMilliseconds)
+ swmili = sw.ElapsedMilliseconds
+ sw.Start()
+ VerificaCorreo(True)
+
+ sw.Stop()
+ swTiempo.AppendFormat("Verifica En la app: ({0}) {1} ", sw.ElapsedMilliseconds - swmili, sw.ElapsedMilliseconds)
+ swmili = sw.ElapsedMilliseconds
+ sw.Start()
+ Else
+ Alert("Se presento un error al procesar las facturas.")
+ End If
+
+ End If
+
+
+ sw.Stop()
+ swTiempo.AppendFormat("BorrarInicio: ({0}) {1} ", sw.ElapsedMilliseconds - swmili, sw.ElapsedMilliseconds)
+ swmili = sw.ElapsedMilliseconds
+ sw.Start()
+ For Each filePath In ListXML
+ Try
+ File.Delete(filePath)
+ Catch ex As Exception
+ End Try
+ Next
+
+ For Each s As String In ListaComprimidos
+ Try
+ File.Delete(s)
+ Catch ex As Exception
+ End Try
+ Next
+
+ For Each d As String In ListaDirectoriosTemporales
+ Try
+ Directory.Delete(d, True)
+ Catch ex As Exception
+ End Try
+ Next
+
+
+ sw.Stop()
+ swTiempo.AppendFormat("BorrarEnd: ({0}) {1} ", sw.ElapsedMilliseconds - swmili, sw.ElapsedMilliseconds)
+ swmili = sw.ElapsedMilliseconds
+
+ GuardaLogefacturas(swTiempo.ToString())
+
+
+ 'ArchivoExtension = IO.Path.GetExtension(String.Format("{0}", filePath)).Replace(".", "")
+ 'NombreArchivo = System.IO.Path.GetFileName(filePath)
+ 'If ArchivoExtension.ToUpper = "XML" Then
+ ' Dim ArchivoInfo As New FileInfo(filePath)
+ ' Dim Fact2 As Modelos.eFactura = GuardaArchivoXML(filePath)
+
+ ' If Fact2 IsNot Nothing Then
+ ' Fact2.DirectorioTemporal = ArchivoInfo.DirectoryName & "\"
+ ' Arreglo.Add(Fact2)
+ ' End If
+ 'End If
+
+
+ 'If Arreglo.Count > 0 Then
+ ' For Each Fact As Modelos.eFactura In Arreglo
+ ' ' si es exploraciones, no debe de insertar del 2013
+
+ ' If UsuarioActual.CveEmpresa = 13 And Convert.ToDateTime(Fact.Fecha).Year < 2014 And Fact.TipodeComprobante <> "egreso" Then
+ ' Bandera = False
+ ' 'ModExtensiones.GuardaLog("'*******noingreso :" + Fact.ArchivoXML + " RFC: " + tRF + " Anio" + Convert.ToDateTime(Fact.Fecha).Year)
+ ' End If
+
+ ' 'por default, no alimentar facturas menores al 2013
+
+ ' If Convert.ToDateTime(Fact.Fecha).Year < 2013 Then
+ ' Bandera = False
+ ' 'ModExtensiones.GuardaLog("'*******noingreso :" + Fact.ArchivoXML + " RFC: " + tRF + " Anio" + Convert.ToDateTime(Fact.Fecha).Year)
+ ' End If
+ ' If Bandera Then
+ ' If Not String.IsNullOrEmpty(Fact.TFDUUID) Then
+ ' Dim Valida As New ClsValidaCFDi(Fact.TFDUUID, Fact.EmisorRFC, Fact.ReceptorRFC, Fact.Total, Fact.Fecha)
+ ' If Valida.EsValida = 1 Then
+ ' Fact.Validada = 1
+ ' End If
+ ' Valida.Dispose()
+
+ ' If Not String.IsNullOrEmpty(Fact.ArchivoPDF) Then
+ ' Retorno = AgregaFactura(Fact)
+ ' Else
+ ' If GeneraPDF(Fact.DirectorioTemporal, Fact) Then
+ ' ListPDF.Add(Fact.ArchivoPDF)
+ ' Retorno = AgregaFactura(Fact)
+ ' ' ModExtensiones.GuardaLog("'*******se genero el pdf :" + String.Format("{0}Empresas\{1}\Temp", AppDomain.CurrentDomain.BaseDirectory, UsuarioActual.CveEmpresa) + Fact.ArchivoXML + " RFC: " + tRF + " Anio" + Convert.ToDateTime(Fact.Fecha).Year + "Retorno:" + Retorno)
+ ' Else
+ ' ' ModExtensiones.GuardaLog("'*******no se genero el pdf :" + String.Format("{0}Empresas\{1}\Temp", AppDomain.CurrentDomain.BaseDirectory, UsuarioActual.CveEmpresa) + Fact.ArchivoXML + " RFC: " + tRF + " Anio" + Convert.ToDateTime(Fact.Fecha).Year + "Retorno:" + Retorno)
+
+ ' End If
+ ' End If
+ ' End If
+ ' End If
+
+ ' Bandera = True
+ ' Try
+ ' If File.Exists(String.Format("{0}{1}", Fact.DirectorioTemporal, Fact.ArchivoXML)) Then
+ ' File.Delete(String.Format("{0}{1}", Fact.DirectorioTemporal, Fact.ArchivoXML))
+ ' End If
+
+ ' If File.Exists(String.Format("{0}{1}", Fact.DirectorioTemporal, Fact.ArchivoPDF)) Then
+ ' File.Delete(String.Format("{0}{1}", Fact.DirectorioTemporal, Fact.ArchivoPDF))
+ ' End If
+ ' Catch ex As Exception
+
+ ' End Try
+ ' Next
+ 'End If
+
+
+ RegistraScript(String.Format("$('#{0}').modal('hide');", "ModalFacturas"))
+ 'Alert(String.Format("Se cargaron {0} Facturas", Arreglo.Count), TipoMensaje.MsgInformacion)
+ End Sub
+
+ Public Sub GuardaLogefacturas(Str As String)
+ Dim ArchivoW As StreamWriter
+ Dim strLineaTMP As String
+
+ ' strLineaTMP = Chr(13) & Chr(10) & Day(Now) & "/" & Month(Now) & "/" & Year(Now) & " " & Hour(Now) & ":" & Minuto & ". " & Str & Chr(13) & Chr(10)
+ strLineaTMP = String.Format("{0}{1}Log: {2}{3}:{4}", Chr(13), Chr(10), Str, DateTime.Now.ToShortDateString, DateTime.Now.ToShortTimeString)
+ Try
+ ArchivoW = New StreamWriter(String.Format("{0}\Logefacturas.txt", AppDomain.CurrentDomain.BaseDirectory), True, System.Text.Encoding.UTF8)
+ Catch ex As UnauthorizedAccessException
+ 'Alert("No hay permisos para guardar en el Log.", Extensiones.TipoMensaje.MsgError)
+ Exit Sub
+ Catch ex As Exception
+ Exit Sub
+ End Try
+
+ Try
+ ArchivoW.WriteLine(strLineaTMP)
+ Catch
+ End Try
+
+ ArchivoW.Close()
+ ArchivoW.Dispose()
+ End Sub
+ Private Function AgregaFactura(Fact As Modelos.eFactura) As String
+ Dim Retorno As String = ""
+ Dim Correcto As Boolean = False
+
+ If Fact.Version = "3.2" Then Fact.TipodeComprobante = Fact.TipodeComprobante.Substring(0, 1)
+
+
+ Dim ObjDatos As New ClsCompras
+ ObjDatos.IniciaTransacSQL()
+ ObjDatos.CveFactura = 0
+ Dim Ret As Integer = ObjDatos.AddFactura(Fact.Serie, Fact.Folio, Convert.ToDateTime(Fact.Fecha), Fact.EmisorNombre, Fact.EmisorRFC, Fact.subTotal,
+ Fact.TrasladoIVA, Fact.Total, Fact.TFDUUID, Fact.ReceptorRFC, Fact.ArchivoXML, Fact.ArchivoPDF,
+ Fact.Version, Fact.Descuento, Fact.Moneda, Fact.TipodeComprobante, Fact.TipoCambio, Fact.Validada,
+ Fact.CveEmpresa, Fact.sUPPrefijo)
+
+ If Ret >= 0 Then
+ If Not Directory.Exists(Destino + Fact.EmisorRFC) Then
+ Directory.CreateDirectory(Destino + Fact.EmisorRFC)
+ End If
+ 'Try
+ ' If File.Exists(Destino & Retorno.EmisorRFC & "\" & NombreArchivo) Then File.Delete(Destino & Retorno.EmisorRFC & "\" & NombreArchivo)
+ ' File.Move(Temporal & NombreArchivo, Destino & Retorno.EmisorRFC & "\" & NombreArchivo)
+
+ 'Catch ex As IOException
+ ' GuardaLog("'ERROR :" & ex.Message)
+ 'End Try
+
+ Select Case Ret
+ Case 0
+
+ Correcto = True
+ Dim RRutaDestino As String = String.Format("{0}{1}\{2}.xml", Destino, Fact.EmisorRFC, ObjDatos.CveFactura)
+ 'ModExtensiones.GuardaLog(String.Format(" '--------{0} Compra ya insertada : {1}{2} - {3}", ContadorGeneral, Fact.Serie, Fact.Folio, RRutaDestino))
+
+ If Not File.Exists(RRutaDestino) Then
+ File.Move(String.Format("{0}Temp\{1}", AppDomain.CurrentDomain.BaseDirectory, Fact.ArchivoXML), RRutaDestino)
+ ObjDatos.UpdateArchivo(ObjDatos.CveFactura, "XML")
+ ModExtensiones.GuardaLog(" '--------XML Actualizado ")
+ End If
+
+ Correcto = True
+ Exit Select
+ Case 1
+ 'muevo el archivo y lo renombro
+ Dim StrMover As String = ""
+ Try
+ File.Move(String.Format("{0}\{1}", Fact.DirectorioTemporal, Fact.ArchivoXML), String.Format("{0}{1}\{2}.xml", Destino, Fact.EmisorRFC, ObjDatos.CveFactura))
+ File.Move(String.Format("{0}\{1}", Fact.DirectorioTemporal, Fact.ArchivoPDF), String.Format("{0}{1}\{2}.pdf", Destino, Fact.EmisorRFC, ObjDatos.CveFactura))
+ ModExtensiones.GuardaLog(" '++++++++ Archivo :" + String.Format("{0}\{1}", Fact.DirectorioTemporal, Fact.ArchivoXML) + " - " + String.Format("{0}{1}\{2}.xml", Destino, Fact.EmisorRFC, ObjDatos.CveFactura))
+ ModExtensiones.GuardaLog(" '++++++++ Archivo :" + String.Format("{0}\{1}", Fact.DirectorioTemporal, Fact.ArchivoPDF) + " - " + String.Format("{0}{1}\{2}.pdf", Destino, Fact.EmisorRFC, ObjDatos.CveFactura))
+ 'si se movieron los dos archivos, los marca como correcto
+ If File.Exists(String.Format("{0}{1}\{2}.xml", Destino, Fact.EmisorRFC, ObjDatos.CveFactura)) AndAlso File.Exists(String.Format("{0}{1}\{2}.pdf", Destino, Fact.EmisorRFC, ObjDatos.CveFactura)) Then
+ Correcto = True
+ End If
+ Catch ex As Exception
+ StrMover = ex.Message
+ End Try
+
+
+ ModExtensiones.GuardaLog(Convert.ToString(" '++++++++ Compra Insertada :" + Fact.Serie + Fact.Folio + " - Correcto:" + (If(Correcto, "Si", "No" + " Obs: "))) & StrMover)
+ Exit Select
+ End Select
+ End If
+ If Correcto Then
+ ObjDatos.Commit()
+ 'ya se insertó o está insertada
+ Dim Idioma As New CultureInfo("es-MX")
+ 'regreso el format 2014-07 Julio
+ Retorno = Fact.Fecha.ToDate().ToString("yyyy-MM MMMM", Idioma)
+ Else
+ ObjDatos.RollBack()
+ End If
+ ObjDatos.Dispose()
+
+ Return Retorno
+
+ End Function
+ Private Sub CargarFacturas(PathArchivo As String, NombreArchivo As String)
+ Dim RFC As String = CargaEmisordeXML(String.Format("{0}", PathArchivo), "RFC", UsuarioActual.Empresa.RFC)
+ If RFC IsNot Nothing Then
+ If NombreArchivo <> "" Then
+ DirectoryExistsCreate(String.Format("{0}Compras", UsuarioActual.Empresa.Ruta))
+ DirectoryExistsCreate(String.Format("{0}Compras\{1}", UsuarioActual.Empresa.Ruta, RFC.ToUpper))
+
+ Try
+ File.Move(PathArchivo, String.Format("{0}Empresas\{1}\Compras\{2}\{3}", AppDomain.CurrentDomain.BaseDirectory, UsuarioActual.CveEmpresa, RFC.ToUpper, NombreArchivo))
+ Catch ex As Exception
+ Alert("Error")
+ End Try
+
+ 'NombreArchivo.FilesMove(NombreArchivo, String.Format("Empresas\{0}\Compras\{1}", UsuarioActual.CveEmpresa, RFC.ToUpper))
+ End If
+ End If
+ End Sub
+ Private Sub DescomprimeFacturas(PathArchivo As String, Directorio As String)
+ If Not Directory.Exists(Directorio) Then
+ Directory.CreateDirectory(Directorio)
+ End If
+ Using archive As ZipArchive = ZipFile.OpenRead(String.Format("{0}", PathArchivo))
+
+ For Each entry As ZipArchiveEntry In archive.Entries
+ If entry.FullName.EndsWith(".xml", StringComparison.OrdinalIgnoreCase) Then
+
+ 'If File.Exists(String.Format("{0}Empresas\{1}\Temp\{2}\{3}", AppDomain.CurrentDomain.BaseDirectory, UsuarioActual.CveEmpresa, Directorio, entry.Name)) Then
+ ' File.Delete(String.Format("{0}Empresas\{1}\Temp\{2}\{3}", AppDomain.CurrentDomain.BaseDirectory, UsuarioActual.CveEmpresa, Directorio, entry.Name))
+ 'End If
+
+ 'entry.ExtractToFile(String.Format("{0}Empresas\{1}\Temp\{2}\{3}", AppDomain.CurrentDomain.BaseDirectory, UsuarioActual.CveEmpresa, Directorio, entry.Name))
+
+ If File.Exists(String.Format("{0}\{1}", Directorio, entry.Name)) Then
+ File.Delete(String.Format("{0}\{1}", Directorio, entry.Name))
+ End If
+
+ entry.ExtractToFile(String.Format("{0}\{1}", Directorio, entry.Name))
+
+ End If
+ Next
+
+ End Using
+ End Sub
+ Public Shared Function CargaEmisordeXML(ArchivoXML As String, CampoXML As String, RFCEmpresaActual As String) As String
+ Dim Valor As [String] = Nothing
+
+ If File.Exists(ArchivoXML) Then
+ Dim NombreArchivo As String = Path.GetFileName(ArchivoXML)
+ Dim invalidChars As Char() = Path.GetInvalidFileNameChars()
+ Dim invalidString As String = Regex.Escape(New String(invalidChars))
+ Dim NombreValido As String = Regex.Replace(NombreArchivo, (Convert.ToString("[") & invalidString) + "]", "")
+
+ Try
+ Dim XmlDoc As New XmlDocument()
+ XmlDoc.Load(ArchivoXML)
+ Dim nodo As XmlNode = XmlDoc.DocumentElement.ChildNodes(0)
+ Dim node As XmlNode
+ Dim cfdVer As String = "http://www.sat.gob.mx/cfd/3"
+ Dim RfcXML As String = ""
+ Dim Prefijo As String = If(XmlDoc.DocumentElement.Prefix = "", "cfd", XmlDoc.DocumentElement.Prefix)
+ Dim namespaces As New XmlNamespaceManager(XmlDoc.NameTable)
+
+ If Not Prefijo.ToLower().Equals("cfdi") Then
+ cfdVer = "http://www.sat.gob.mx/cfd/2"
+ End If
+ namespaces.AddNamespace(Prefijo, cfdVer)
+ namespaces.AddNamespace("tfd", "http://www.sat.gob.mx/TimbreFiscalDigital")
+ namespaces.AddNamespace("implocal", "http://www.sat.gob.mx/implocal")
+ namespaces.AddNamespace("registrofiscal", "http://www.sat.gob.mx/registrofiscal")
+
+ node = XmlDoc.SelectSingleNode([String].Format("//{0}:Receptor", Prefijo), namespaces)
+ If node IsNot Nothing Then
+ RfcXML = ValorXML(node, "RFC")
+ End If
+ If RfcXML = RFCEmpresaActual Then
+ Valor = ValorXML(nodo, CampoXML)
+
+
+ End If
+ Catch exx As XmlException
+ Valor = Nothing
+ 'Using file__1 As New System.IO.StreamWriter([String].Format("{0}\UtileriasLOG.txt", Path.GetDirectoryName(Application.StartupPath)), True, System.Text.Encoding.UTF8)
+ ' file__1.WriteLine("{DateTime.Now}: {exx.Message}")
+ ' file__1.Close()
+ ' file__1.Dispose()
+ 'End Using
+ End Try
+ End If
+ Return Valor
+ End Function
+ Private Shared Function ValorXML(n As XmlNode, Campo As String, Optional retorno As [String] = "") As String
+ If n Is Nothing Then
+ Return retorno
+ End If
+
+ Dim o As XmlNode = n.Attributes.Cast(Of XmlAttribute)().SingleOrDefault(Function(a) String.Compare(a.Name, Campo, StringComparison.CurrentCultureIgnoreCase) = 0)
+ If o Is Nothing Then
+ Return retorno
+ Else
+ Return o.Value
+ End If
+
+ End Function
+ Private Function CargaDatosXML(XMLDoc As XmlDocument) As Modelos.eFactura
+ Dim nodo As XmlNode = XMLDoc.DocumentElement
+
+ If nodo.ChildNodes.Count = 2 Then
+ nodo = nodo.ChildNodes(1)
+ End If
+
+ Dim Fact As Modelos.eFactura = Nothing
+ Dim node As XmlNode = Nothing
+ Dim RFC As String = ""
+
+ Dim Prefijo As String = If(String.IsNullOrEmpty(XMLDoc.DocumentElement.Prefix), "cfd", XMLDoc.DocumentElement.Prefix)
+ Dim cfdVer As String = "http://www.sat.gob.mx/cfd/3"
+ Dim namespaces As New XmlNamespaceManager(XMLDoc.NameTable)
+
+ If Prefijo.ToLower() <> "cfdi" Then
+ cfdVer = "http://www.sat.gob.mx/cfd/2"
+ End If
+ namespaces.AddNamespace(Prefijo, cfdVer)
+ namespaces.AddNamespace("tfd", "http://www.sat.gob.mx/TimbreFiscalDigital")
+ namespaces.AddNamespace("implocal", "http://www.sat.gob.mx/implocal")
+ namespaces.AddNamespace("registrofiscal", "http://www.sat.gob.mx/registrofiscal")
+
+ node = XMLDoc.SelectSingleNode(String.Format("//{0}:Receptor", Prefijo), namespaces)
+ 'AndAlso node.ChildNodes.Count > 0
+ If node IsNot Nothing Then
+ RFC = ValorXML(node, "RFC")
+ End If
+
+ 'solo si el rfc receptor es el mismo al de la empresa seleccionada
+
+ If RFC = UsuarioActual.Empresa.RFC AndAlso Convert.ToDateTime(ValorXML(nodo, "fecha")).Year >= 2013 Then
+ Fact = New Modelos.eFactura()
+
+ 'Fact.CveEmpresa = CveEmpresa
+ Fact.Serie = ValorXML(nodo, "serie")
+ If Not String.IsNullOrEmpty(Fact.Serie) Then
+ Fact.Serie = Fact.Serie
+ End If
+
+ Fact.Version = ValorXML(nodo, "version").Replace("..", ".")
+ Fact.Folio = ValorXML(nodo, "folio").TrimStart("0"c)
+ Fact.Fecha = ValorXML(nodo, "fecha")
+ Fact.subTotal = Convert.ToDouble(ValorXML(nodo, "subTotal").Replace("..", "."))
+ Fact.Total = Convert.ToDouble(ValorXML(nodo, "total"))
+ Fact.Moneda = ValorXML(nodo, "Moneda")
+ Fact.TipodeComprobante = ValorXML(nodo, "tipoDeComprobante")
+ Fact.TipoCambio = Convert.ToDouble(ValorXML(nodo, "TipoCambio", "1.0"))
+ Fact.Descuento = Convert.ToDouble(ValorXML(nodo, "descuento", "0"))
+ Fact.CveEmpresa = UsuarioActual.CveEmpresa
+
+ Fact.sUPPrefijo = Prefijo
+
+ node = XMLDoc.SelectSingleNode(String.Format("//{0}:Emisor", Prefijo), namespaces)
+
+ If node IsNot Nothing AndAlso node.ChildNodes.Count > 0 Then
+ Fact.EmisorRFC = ValorXML(node, "RFC")
+ Fact.EmisorNombre = ValorXML(node, "nombre")
+ End If
+ node = XMLDoc.SelectSingleNode(String.Format("//{0}:Receptor", Prefijo), namespaces)
+ ' AndAlso node.ChildNodes.Count > 0
+ If node IsNot Nothing Then
+ Fact.ReceptorRFC = ValorXML(node, "RFC")
+ End If
+
+ node = XMLDoc.SelectSingleNode(String.Format("//{0}:Impuestos", Prefijo), namespaces)
+
+ If node IsNot Nothing AndAlso node.ChildNodes.Count > 0 Then
+ Dim nodeRetenciones As XmlNodeList = XMLDoc.SelectNodes(String.Format("//{0}:Retencion", Prefijo), namespaces)
+
+ Fact.TotalRetenciones = Convert.ToDouble(ValorXML(node, "totalImpuestosRetenidos", "0"))
+
+ For Each retencion As XmlNode In nodeRetenciones
+ If retencion.Attributes.GetNamedItem("impuesto").Value = "IVA" Then
+ Fact.RetencionIVA += Convert.ToDouble(retencion.Attributes.GetNamedItem("importe").Value)
+ End If
+ If retencion.Attributes.GetNamedItem("impuesto").Value = "ISR" Then
+ Fact.RetencionISR += Convert.ToDouble(retencion.Attributes.GetNamedItem("importe").Value)
+ ' Do something.
+ End If
+ Next
+ Fact.SumaTotalRetenciones += Fact.RetencionIVA
+ Fact.SumaTotalRetenciones += Fact.RetencionISR
+
+ Fact.TotalTraslados = Convert.ToDouble(ValorXML(node, "totalImpuestosTrasladados", "0"))
+
+ 'Dim o As XmlNode = traslado.Attributes.Cast(Of XmlAttribute)().SingleOrDefault(Function(a) String.Compare(a.Name, "impuesto", StringComparison.CurrentCultureIgnoreCase) = 0)
+ Dim nodeTraslados As XmlNodeList = XMLDoc.SelectNodes(String.Format("//{0}:Traslado", Prefijo), namespaces)
+
+ For Each traslado As XmlNode In nodeTraslados
+ ' If traslado.Attributes.GetNamedItem("impuesto").Value = "IVA"
+ Dim impuesto As XmlNode = traslado.Attributes.Cast(Of XmlAttribute)().SingleOrDefault(Function(a) String.Compare(a.Name, "impuesto", StringComparison.CurrentCultureIgnoreCase) = 0)
+ If impuesto.Value = "IVA" Then
+
+ Dim ImporteTRaslado As XmlNode = traslado.Attributes.Cast(Of XmlAttribute)().SingleOrDefault(Function(a) String.Compare(a.Name, "Importe", StringComparison.CurrentCultureIgnoreCase) = 0)
+ Fact.TrasladoIVA += Convert.ToDouble(ImporteTRaslado.Value)
+ 'If traslado.Attributes("impuesto").Value = "ISR" Then
+ ' TrasladoISR = traslado.Attributes("importe").Value
+ 'End If
+ ' Do something.
+ End If
+ Next
+ Fact.SumaTotalTraslados += Fact.TrasladoIVA
+ End If
+
+
+ Dim nodeComp As XmlNode = XMLDoc.SelectSingleNode(String.Format("//{0}:Complemento", Prefijo), namespaces)
+ Dim FacturaMisCuentasSAT As Boolean = False
+
+
+ If nodeComp IsNot Nothing AndAlso nodeComp.ChildNodes.Count > 0 Then
+ Dim nodeTFD As XmlNode = nodeComp.SelectSingleNode(String.Format("//{0}:TimbreFiscalDigital", "tfd"), namespaces)
+
+ Fact.TFDUUID = ValorXML(nodeTFD, "UUID", "")
+
+ Dim nodeRF As XmlNode = nodeComp.SelectSingleNode(String.Format("//{0}:CFDIRegistroFiscal ", "registrofiscal"), namespaces)
+ If nodeRF IsNot Nothing Then
+ Fact.Folio = ValorXML(nodeRF, "folio").TrimStart("0"c)
+ FacturaMisCuentasSAT = True
+
+ End If
+ Else
+ Fact.TFDUUID = ""
+ If String.IsNullOrEmpty(Fact.TFDUUID) AndAlso Fact.sUPPrefijo.ToLower() = "cfdi" Then
+ 'Mensajes.AppendFormat("{0}|{1}|{2}|{3}|{4}|{5}{6}&", ValorXML(nodo, "serie"), ValorXML(nodo, "folio"), ValorXML(nodo, "fecha").ToDate().ToShortDateString(), Fact.EmisorNombre, ValorXML(nodo, "total").ToDouble().FormatoNumero(),
+ '"Factura no timbrada correctamente.", "")
+ 'CargaMensaje(ValorXML(nodo, "serie"), ValorXML(nodo, "folio"), ValorXML(nodo, "fecha").ToDate(), Fact.EmisorNombre, ValorXML(nodo, "total").ToDouble(), "Factura no timbrada correctamente.",
+ '"", DateTime.Now)
+ End If
+
+ 'limpio los valores porque realmente no es una factura
+
+ Fact = Nothing
+ End If
+ 'verifico si el metodo de pago esta dentro de la opcion valida
+
+
+ If Convert.ToDateTime(ValorXML(nodo, "fecha")) >= ("2016/07/15").ToDate() Then
+ Dim CasoPermitido As Boolean = False
+ 'If CveEmpresa.Contiene(72, 80) AndAlso ValorXML(nodo, "MetododePago").ToUpper().PadRight(13, " "c).Substring(0, 13) = "TRANSFERENCIA" Then
+ ' CasoPermitido = True
+ 'End If
+
+ 'If CveEmpresa = 5 OrElse FacturaMisCuentasSAT Then
+ ' CasoPermitido = True
+ 'End If
+
+ If Not CasoPermitido Then
+ If (Not (ValorXML(nodo, "MetododePago").ToUpper().PadLeft(2, "0"c).Substring(0, 2).Contiene("01", "02", "03", "04", "05", "06",
+ "07", "08", "09", "10", "11", "12",
+ "13", "14", "15", "16", "17", "28",
+ "98", "99", "NA") OrElse ValorXML(nodo, "MetododePago").ToUpper().Contiene("NO APLICA", "N/A", "N.A.", "NO IDENTIFICADO"))) Then
+ Dim node2 As XmlNode = XMLDoc.SelectSingleNode(String.Format("//{0}:Emisor", Prefijo), namespaces)
+ Dim Nombre As String = ""
+
+ If node2 IsNot Nothing AndAlso node2.ChildNodes.Count > 0 Then
+ Nombre = ValorXML(node2, "nombre")
+ End If
+
+ 'CargaMensaje(ValorXML(nodo, "serie"), ValorXML(nodo, "folio"), ValorXML(nodo, "fecha").ToDate(), ValorXML(node2, "nombre"), ValorXML(nodo, "total").ToDouble(), "Método de Pago Incorrecto:" + ValorXML(nodo, "MetododePago"),
+ 'CorreoActual, FechaRecepcionCorreo)
+
+ Return Nothing
+ End If
+
+
+ End If
+
+ 'faltan leer los impuestos locales
+ 'node = XMLDoc.SelectSingleNode(String.Format("//{0}:ImpuestosLocales", "implocal"), namespaces)
+ 'If node IsNot Nothing AndAlso node.ChildNodes.Count > 0 Then
+ ' Dim nodeRetenciones As XmlNodeList = XMLDoc.SelectNodes(String.Format("//{0}:Retencion", Prefijo), namespaces)
+
+ ' Fact.TotalRetenciones = ValorXML(node, "totalImpuestosRetenidos", "0").ToDouble
+
+ ' For Each retencion As XmlNode In nodeRetenciones
+ ' If retencion.Attributes("impuesto").Value = "IVA" Then
+ ' Fact.RetencionIVA += retencion.Attributes("importe").Value.ToDouble
+ ' End If
+ ' If retencion.Attributes("impuesto").Value = "ISR" Then
+ ' Fact.RetencionISR += retencion.Attributes("importe").Value.ToDouble
+ ' End If
+ ' ' Do something.
+ ' Next
+ ' Fact.SumaTotalRetenciones += Fact.RetencionIVA
+ ' Fact.SumaTotalRetenciones += Fact.RetencionISR
+
+ ' Fact.TotalTraslados = ValorXML(node, "totalImpuestosTrasladados", "0").ToDouble
+
+ ' Dim nodeTraslados As XmlNodeList = XMLDoc.SelectNodes(String.Format("//{0}:Traslado", Prefijo), namespaces)
+ ' For Each traslado As XmlNode In nodeTraslados
+ ' If traslado.Attributes("impuesto").Value = "IVA" Then
+ ' Fact.TrasladoIVA += traslado.Attributes("importe").Value.ToDouble
+ ' End If
+ ' 'If traslado.Attributes("impuesto").Value = "ISR" Then
+ ' ' TrasladoISR = traslado.Attributes("importe").Value
+ ' 'End If
+ ' ' Do something.
+ ' Next
+ ' Fact.SumaTotalTraslados += Fact.TrasladoIVA
+ 'End If
+
+
+ End If
+ Else
+ 'ModExtensiones.GuardaLog((Convert.ToString("'*******RFC incorrecto RFC Emp:") & RFC) + " RFC Fact: " + RFCReceptor)
+ 'obtengo los datos del xml, para
+
+ Dim node2 As XmlNode = XMLDoc.SelectSingleNode(String.Format("//{0}:Emisor", Prefijo), namespaces)
+
+
+ 'If node2 IsNot Nothing AndAlso node2.ChildNodes.Count > 0 Then
+ ' Mensajes.AppendFormat("{0}|{1}|{2}|{3}|{4}|{5}{6}&", ValorXML(nodo, "serie"), ValorXML(nodo, "folio"), ValorXML(nodo, "fecha").ToDate().ToShortDateString(), ValorXML(node2, "nombre"), ValorXML(nodo, "total").ToDouble().FormatoNumero(),
+ ' "RFC Incorrecto:", RFC)
+ ' CargaMensaje(ValorXML(nodo, "serie"), ValorXML(nodo, "folio"), ValorXML(nodo, "fecha").ToDate(), ValorXML(node2, "nombre"), ValorXML(nodo, "total").ToDouble(), Convert.ToString("RFC Incorrecto:") & RFC,
+ ' CorreoActual, FechaRecepcionCorreo)
+ 'Else
+ ' CargaMensaje("", "", "01/01/2000".ToDate(), "", 0.0, Convert.ToString("RFC Incorrecto:") & RFC,
+ ' CorreoActual, FechaRecepcionCorreo)
+
+
+ 'End If
+ End If
+
+ Return Fact
+ End Function
+ Private Function GuardaArchivoXML(Archivo As String) As Modelos.eFactura
+ ' , Destino As String, Temporal As String
+ Dim Retorno As Modelos.eFactura = Nothing
+
+ If File.Exists(Archivo) Then
+ Dim NombreArchivo As String = Path.GetFileName(Archivo)
+ Dim invalidChars As Char() = Path.GetInvalidFileNameChars()
+ Dim invalidString As String = Regex.Escape(New String(invalidChars))
+ Dim valid As String = Regex.Replace(NombreArchivo, (Convert.ToString("[") & invalidString) + "]", "")
+
+ NombreArchivo = valid
+
+ Try
+ Dim XMLDoc As New XmlDocument()
+
+ XMLDoc.Load(Archivo)
+ Retorno = CargaDatosXML(XMLDoc)
+
+ Catch exx As XmlException
+ Retorno = Nothing
+ 'Dim texto As Dynamic = File.ReadAllText(Archivo)
+ Dim txt_utf8 As New UTF8Encoding()
+ 'REEMPLAZA CARACTERES ESPECIALES Y VUELVE A LEER EL DOCUMENTO
+
+ 'texto = RemoveIllegalXMLCharacters(texto)
+ ' SE RENOMBRA EL ARCHIVO, PERO SE QUITO POR SI NO COINCIDE EL PDF CON EL NOMBRE
+ 'Archivo = Archivo.ToUpper.Replace(".XML", "-2.XML")
+ 'NombreArchivo = IO.Path.GetFileName(Archivo)
+ 'File.WriteAllText(Archivo, texto)
+
+
+ ' Dim xmltr As New XmlTextReader(New MemoryStream(RemoveIllegalXMLCharacters(texto)))
+ Dim XMLDoc As New XmlDocument()
+
+ Try
+ XMLDoc.Load(Archivo)
+ Retorno = CargaDatosXML(XMLDoc)
+ Catch ex As Exception
+ Retorno = Nothing
+
+
+
+ End Try
+ Catch ex As Exception
+
+
+ Retorno = Nothing
+ End Try
+
+ 'si se cargaron todos los datos
+ If Retorno IsNot Nothing AndAlso Not String.IsNullOrEmpty(Retorno.TFDUUID) Then
+ 'XML
+ Retorno.ArchivoXML = NombreArchivo
+ End If
+ End If
+ Return Retorno
+
+ End Function
+ Private Sub CargaImpuestosXML(XMLDoc As XmlDocument)
+ Dim Prefijo As String = If(String.IsNullOrEmpty(XMLDoc.DocumentElement.Prefix), "cfd", XMLDoc.DocumentElement.Prefix)
+ Dim cfdVer As String = "http://www.sat.gob.mx/cfd/3"
+ Dim namespaces As New XmlNamespaceManager(XMLDoc.NameTable)
+
+ If Prefijo.ToLower() <> "cfdi" Then
+ cfdVer = "http://www.sat.gob.mx/cfd/2"
+ End If
+ namespaces.AddNamespace(Prefijo, cfdVer)
+ namespaces.AddNamespace("tfd", "http://www.sat.gob.mx/TimbreFiscalDigital")
+ namespaces.AddNamespace("implocal", "http://www.sat.gob.mx/implocal")
+ namespaces.AddNamespace("registrofiscal", "http://www.sat.gob.mx/registrofiscal")
+
+ TrasladoIVA = 0
+ '_TrasladoIVA = XMLDoc.DocumentElement.ChildNodes(3).Attributes("totalImpuestosTrasladados").Value
+
+ Dim nodeTraslados As XmlNodeList = XMLDoc.SelectNodes(String.Format("//{0}:Traslado", Prefijo), namespaces)
+ For Each traslado As XmlNode In nodeTraslados
+ If traslado.Attributes.GetNamedItem("impuesto").Value = "IVA" Then
+ TrasladoIVA += traslado.Attributes.GetNamedItem("importe").Value.ToDouble()
+
+ End If
+ Next
+
+ Dim nodeComp As XmlNode = XMLDoc.SelectSingleNode(String.Format("//{0}:Complemento", Prefijo), namespaces)
+
+
+ If nodeComp IsNot Nothing AndAlso nodeComp.ChildNodes.Count > 0 Then
+ Dim nodeTFD As XmlNode = nodeComp.SelectSingleNode(String.Format("//{0}:TimbreFiscalDigital", "tfd"), namespaces)
+
+ _TFDUUID = ValorXML(nodeTFD, "UUID", "")
+ _TFDFechaTimbrado = ValorXML(nodeTFD, "FechaTimbrado", "")
+ _TFDSelloCFD = ValorXML(nodeTFD, "selloCFD", "")
+ _TFDNoCertSAT = ValorXML(nodeTFD, "noCertificadoSAT", "")
+ _TFDSelloSAT = ValorXML(nodeTFD, "selloSAT", "")
+
+ Dim nodeRF As XmlNode = nodeComp.SelectSingleNode(String.Format("//{0}:CFDIRegistroFiscal ", "registrofiscal"), namespaces)
+ If nodeRF IsNot Nothing Then
+ _Folio = ValorXML(nodeRF, "folio").TrimStart("0"c)
+
+
+ End If
+ End If
+
+ End Sub
+ Private Shared Sub CargaTFD(XMLDoc As XmlDocument)
+ '_TFDUUID = XMLDoc.DocumentElement("cfdi:Complemento").FirstChild.Attributes("UUID").InnerText
+ '_TFDFechaTimbrado = XMLDoc.DocumentElement("cfdi:Complemento").FirstChild.Attributes("FechaTimbrado").InnerText
+ '_TFDSelloCFD = XMLDoc.DocumentElement("cfdi:Complemento").FirstChild.Attributes("selloCFD").InnerText
+ '_TFDNoCertSAT = XMLDoc.DocumentElement("cfdi:Complemento").FirstChild.Attributes("noCertificadoSAT").InnerText
+ '_TFDSelloSAT = XMLDoc.DocumentElement("cfdi:Complemento").FirstChild.Attributes("selloSAT").InnerText
+ End Sub
+ Public Function GeneraPDF(Ruta As String, Fact As Modelos.eFactura) As Boolean
+ Dim RutaXML As String = String.Empty
+ Dim RutaPDF As String = String.Empty
+ Dim Retorno As Boolean = False
+ Try
+
+ Dim XMLDoc As New XmlDocument()
+ Dim TmpArchivoPDF As String = String.Format("{0}{1}-ttt.pdf", Ruta, Path.GetFileNameWithoutExtension(Fact.ArchivoXML))
+ Dim TmpArchivoQR As String = String.Format("{0}{1}-ttt.jpg", Ruta, Path.GetFileNameWithoutExtension(Fact.ArchivoXML))
+ Dim ArchivoXML As String = String.Format("{0}{1}", Ruta, Fact.ArchivoXML)
+
+ ' If Not File.Exists(TmpArchivoPDF) Then
+ XMLDoc.Load(ArchivoXML)
+ CreaDTConceptos()
+ CargaComprobanteXML(XMLDoc)
+ CargaEmisorXML(XMLDoc)
+ CargaReceptorXML(XMLDoc)
+ CargaConceptosXML(XMLDoc)
+ CargaImpuestosXML(XMLDoc)
+ CargaTFD(XMLDoc)
+
+ Dim QR As New ClbNegBICFDv3_2.ClsNegCBBGenerar()
+ Dim dtotal As Decimal = (If(total.ToDecimal() <= 0.0D, 0.0001D, total.ToDecimal()))
+ QR.GenerarCBB(EmiRFC, RecRfc, dtotal, TFDUUID, TmpArchivoQR)
+
+
+ If System.IO.File.Exists(TmpArchivoQR) Then
+ 'Dim ArchivoBaseXLS As String = String.Format("{0}FacturaPDF.xlsm", Ruta.Replace("Temp", "Compras"))
+ If GeneraPDFNew(TmpArchivoPDF, TFDUUID, subTotal, descuento, total, TrasladoIVA.ToString(),
+ moneda, formaDePago, TFDNoCertSAT, TFDFechaTimbrado.ToDate(), noCertificado, DTConceptos,
+ TFDSelloCFD, TFDSelloSAT, TmpArchivoQR, Serie + Folio, tipoDeComprobante, "",
+ RecRfc, RecNombre, DomRecCalle, DomRecCol, DomRecFisNoExt, DomRecFisNoInt,
+ DomRecCP, DomRecMun, DomRecEst, Regimen, condicionesDePago, metodoDePago,
+ NumCtaPagoNumCtaPago, fecha.ToDate()) Then
+ Fact.ArchivoPDF = Path.GetFileName(TmpArchivoPDF)
+
+ Retorno = True
+ End If
+
+ File.Delete(TmpArchivoQR)
+
+ RutaPDF = TmpArchivoPDF
+ Else
+ Retorno = False
+ End If
+ 'Else
+ 'RutaPDF = TmpArchivoPDF
+ 'End If
+
+
+
+ If DTConceptos IsNot Nothing Then
+ DTConceptos.Dispose()
+ End If
+ Catch ex As Exception
+ ModExtensiones.GuardaLog("11189" + ex.Message)
+ End Try
+
+
+ Return Retorno
+ End Function
+ Private Sub CargaComprobanteXML(XMLDoc As XmlDocument)
+ Dim nodo As XmlNode = XMLDoc.DocumentElement
+ Serie = ValorXML(nodo, "serie", "")
+ _Folio = ValorXML(nodo, "folio", "")
+ _fecha = ValorXML(nodo, "fecha", "")
+ _tipoDeComprobante = ValorXML(nodo, "tipoDeComprobante", "")
+ _formaDePago = ValorXML(nodo, "formaDePago", "")
+ _subTotal = ValorXML(nodo, "subTotal", "0")
+ _descuento = ValorXML(nodo, "descuento", "0")
+ _total = ValorXML(nodo, "total", "0")
+ _moneda = ValorXML(nodo, "Moneda")
+ _metodoDePago = ValorXML(nodo, "metodoDePago", "")
+ _condicionesDePago = ValorXML(nodo, "condicionesDePago", "")
+ _LugarExpedicion = ValorXML(nodo, "LugarExpedicion", "")
+ _NumCtaPagoNumCtaPago = ValorXML(nodo, "NumCtaPago", "")
+
+
+ _noCertificado = XMLDoc.DocumentElement.Attributes.GetNamedItem("noCertificado").Value
+ End Sub
+ Private Sub CargaEmisorXML(XMLDoc As XmlDocument)
+ Dim nodo As XmlNode = XMLDoc.DocumentElement.ChildNodes(0)
+ _EmiRFC = ValorXML(nodo, "rfc", "")
+ _EmiNombre = ValorXML(nodo, "nombre", "")
+
+ nodo = XMLDoc.DocumentElement.ChildNodes(0).ChildNodes(0)
+ _DomFisCalle = ValorXML(nodo, "calle", "")
+ _DomFisNoExt = ValorXML(nodo, "noExterior", "")
+ 'LblDomFisNoInt.Text = XMLDoc.DocumentElement.ChildNodes(0).ChildNodes(0).Attributes("noInterior").Value
+ _DomFisCol = ValorXML(nodo, "colonia", "")
+ _DomFisCP = ValorXML(nodo, "codigoPostal", "")
+ _DomFisMun = ValorXML(nodo, "municipio", "")
+ _DomFisLoc = ValorXML(nodo, "localidad", "")
+ _DomFisEst = ValorXML(nodo, "estado", "")
+ _DomFisPais = ValorXML(nodo, "pais", "")
+
+ nodo = XMLDoc.DocumentElement.ChildNodes(0).ChildNodes(1)
+ _ExpEnCalle = ValorXML(nodo, "calle", "")
+ _ExpEnNoExt = ValorXML(nodo, "noExterior", "")
+ 'LblExpEnNoInt.Text = XMLDoc.DocumentElement.ChildNodes(0).ChildNodes(1).Attributes("noInterior").Value
+ ExpEnCol = ValorXML(nodo, "colonia", "")
+ _ExpEnCP = ValorXML(nodo, "codigoPostal", "")
+ _ExpEnMun = ValorXML(nodo, "municipio", "")
+ _ExpEnLoc = ValorXML(nodo, "localidad", "")
+ _ExpEnEst = ValorXML(nodo, "estado", "")
+ _ExpEnPais = ValorXML(nodo, "pais", "")
+
+ nodo = XMLDoc.DocumentElement.ChildNodes(0).ChildNodes(2)
+ _Regimen = ValorXML(nodo, "Regimen", "")
+ End Sub
+ Private Sub CargaReceptorXML(XMLDoc As XmlDocument)
+ Dim nodo As XmlNode = XMLDoc.DocumentElement.ChildNodes(1)
+ _RecRfc = ValorXML(nodo, "rfc", "")
+ _RecNombre = ValorXML(nodo, "nombre", "")
+
+ nodo = XMLDoc.DocumentElement.ChildNodes(1).ChildNodes(0)
+
+ _DomRecCalle = ValorXML(nodo, "calle", "")
+ _DomRecFisNoExt = ValorXML(nodo, "noExterior", "")
+ _DomRecFisNoInt = ValorXML(nodo, "noInterior", "")
+ _DomRecCol = ValorXML(nodo, "colonia", "")
+ _DomRecCP = ValorXML(nodo, "codigoPostal", "")
+ _DomRecMun = ValorXML(nodo, "municipio", "")
+ _DomRecLoc = ValorXML(nodo, "localidad", "")
+ _DomRecEst = ValorXML(nodo, "estado", "")
+ _DomRecPais = ValorXML(nodo, "pais", "")
+ End Sub
+ Private Sub CargaConceptosXML(XMLDoc As XmlDocument)
+ Dim i As Integer = 0
+ 'Dim SB As New StringBuilder()
+ 'SB.Append("")
+ 'SB.AppendLine("| cantidad | descripcion | valorUnitario | importe | unidad |
")
+ Dim nodo As XmlNode = Nothing
+ For i = 0 To XMLDoc.DocumentElement.ChildNodes(2).ChildNodes.Count - 1
+ nodo = XMLDoc.DocumentElement.ChildNodes(2).ChildNodes(i)
+ 'SB.Append("")
+ 'SB.Append("| " & XMLDoc.DocumentElement.ChildNodes(2).ChildNodes(i).Attributes("cantidad").Value & " | ")
+ 'SB.Append("" & XMLDoc.DocumentElement.ChildNodes(2).ChildNodes(i).Attributes("descripcion").Value & " | ")
+ 'SB.Append("" & XMLDoc.DocumentElement.ChildNodes(2).ChildNodes(i).Attributes("valorUnitario").Value & " | ")
+ 'SB.Append("" & XMLDoc.DocumentElement.ChildNodes(2).ChildNodes(i).Attributes("importe").Value & " | ")
+ 'SB.Append("" & XMLDoc.DocumentElement.ChildNodes(2).ChildNodes(i).Attributes("unidad").Value & " | ")
+ 'SB.Append("
")
+
+ AddPS(nodo.Attributes.GetNamedItem("cantidad").Value.ToDouble(), nodo.Attributes.GetNamedItem("unidad").Value, nodo.Attributes.GetNamedItem("descripcion").Value, nodo.Attributes.GetNamedItem("valorUnitario").Value.ToDouble(), 0, nodo.Attributes.GetNamedItem("importe").Value.ToDouble())
+ Next
+ 'SB.Append("
")
+ 'If i > 0 Then Response.Write(SB.ToString)
+ 'SB.Clear()
+ End Sub
+ Private Sub AddPS(Cantidad As Double, UM As String, PS As String, PU As Double, IVA As Double, Optional Total As Double = 0)
+ If PS <> "IVA" Then
+ Dim Row As DataRow = Nothing
+ Row = DTConceptos.NewRow()
+ Row("Consec") = DTConceptos.Rows.Count + 1
+ Row("Cantidad") = Cantidad
+ Row("UM") = UM
+ Row("PS") = PS
+ Row("PU") = PU
+ Row("IVA") = IVA
+ Row("Total") = If(Total > 0, Total, (Cantidad * PU))
+ DTConceptos.Rows.Add(Row)
+ End If
+ End Sub
+ Private Function GeneraPDFNew(TmpArchivoPDF As String, FolioFiscal As String, SubTotal As String, Descuento As String, Total As String, IVA As String,
+ Moneda As String, FormaDePago As String, NoSerieCertificado As String, FechaCertificacion As DateTime, NoSerieCertificadoContribuyente As String, DTConceptos As DataTable,
+ SelloCFDi As String, SelloSAT As String, CBB As String, Folio As String, TipodeComprobante As String, CadenaOriginalCFD As String,
+ RFC As String, Cliente As String, Direccion As String, Colonia As String, NoExt As String, NoInt As String,
+ CP As String, Ciudad As String, Estado As String, Regimen As String, CondicionPago As String, MetodoPago As String,
+ NumCtaPago As String, fecha As System.DateTime) As Boolean
+ Dim Retorno = False
+ Dim NombreArchivo As String = TmpArchivoPDF
+ Dim CadenaOriginal As String = (Convert.ToString((Convert.ToString((Convert.ToString("||1.0|") & FolioFiscal) + "|" + FechaCertificacion.ToString("yyyy-MM-dd") + "T" + FechaCertificacion.ToString("HH:mm:ss") + "|") & SelloCFDi) + "|") & NoSerieCertificado) + "||"
+ Dim RutaFormato As String = String.Format("{0}Empresas\Grales\Formatos\CFDI.rdlc", AppDomain.CurrentDomain.BaseDirectory)
+ 'Dim ArchivoTempXLS As String = String.Format("{0}\GenSis{1}-{2}", Path.GetDirectoryName(ArchivoBaseXLS), Now.Ticks, Path.GetFileName(ArchivoBaseXLS))
+
+ Dim Fiscal As String = String.Format("Domicilio Fiscal {0}{1} {2}{0}Col.{3}{0}CP. {4} {5},{6},{7}", vbCr, DomFisCalle, DomFisNoExt, DomFisCol, DomFisCP,
+ DomFisMun, DomFisEst, DomFisPais)
+ Try
+ Dim parametros As New List(Of ReportParameter)()
+ 'params.Add(New ReportParameter("ArchivoBaseXLS", ArchivoBaseXLS))
+ 'params.Add(New ReportParameter("TmpArchivoPDF", TmpArchivoPDF))
+ parametros.Add(New ReportParameter("FolioFiscal", FolioFiscal))
+ parametros.Add(New ReportParameter("SubTotal", SubTotal.FormatoNumero()))
+ parametros.Add(New ReportParameter("Descuento", Descuento.FormatoNumero()))
+ parametros.Add(New ReportParameter("Total", Total.FormatoNumero()))
+ parametros.Add(New ReportParameter("IVA", IVA.FormatoNumero()))
+ parametros.Add(New ReportParameter("Moneda", Moneda))
+ parametros.Add(New ReportParameter("FormaDePago", FormaDePago))
+ parametros.Add(New ReportParameter("NoSerieCertificado", NoSerieCertificado))
+ parametros.Add(New ReportParameter("FechaCertificacion", FechaCertificacion.ToString("yyyy-MM-dd") + "T" + FechaCertificacion.ToString("HH:mm:ss")))
+ parametros.Add(New ReportParameter("NoSerieCertificadoContribuyente", NoSerieCertificadoContribuyente))
+ parametros.Add(New ReportParameter("SelloCFDi", SelloCFDi))
+ parametros.Add(New ReportParameter("SelloSAT", SelloSAT))
+ parametros.Add(New ReportParameter("CBB", String.Format("file:///{0}", CBB)))
+ parametros.Add(New ReportParameter("Folio", Folio))
+ parametros.Add(New ReportParameter("TipodeComprobante", TipodeComprobante.ToUpper()))
+ parametros.Add(New ReportParameter("CadenaOriginalCFD", CadenaOriginalCFD))
+ parametros.Add(New ReportParameter("RFC", RFC))
+ parametros.Add(New ReportParameter("Cliente", Cliente))
+ parametros.Add(New ReportParameter("Direccion", Direccion))
+ parametros.Add(New ReportParameter("Colonia", Colonia))
+ parametros.Add(New ReportParameter("NoExt", NoExt))
+ parametros.Add(New ReportParameter("NoInt", NoInt))
+ parametros.Add(New ReportParameter("CP", CP))
+ parametros.Add(New ReportParameter("Ciudad", Ciudad))
+ parametros.Add(New ReportParameter("Estado", Estado))
+ parametros.Add(New ReportParameter("Regimen", Regimen))
+ parametros.Add(New ReportParameter("CondicionPago", CondicionPago))
+ parametros.Add(New ReportParameter("MetodoPago", MetodoPago))
+ parametros.Add(New ReportParameter("NumCtaPago", NumCtaPago))
+ parametros.Add(New ReportParameter("fecha", fecha.ToString("yyyy-MM-dd") + "T" + fecha.ToString("HH:mm:ss")))
+ parametros.Add(New ReportParameter("Fiscal", Fiscal))
+ parametros.Add(New ReportParameter("EmiNombre", EmiNombre))
+ parametros.Add(New ReportParameter("EmiRFC", EmiRFC))
+ parametros.Add(New ReportParameter("NoSerieCertificado", NoSerieCertificado))
+ parametros.Add(New ReportParameter("TotalLetra", Total.ToDouble().Texto2Letras(CveMoneda:=If(Moneda = "MXN", 1, If(Moneda = "USD", 2, 3)))))
+ parametros.Add(New ReportParameter("Empresa", UsuarioActual.Empresa.Empresa))
+
+ 'params.Add(New ReportParameter("DTConceptos", DTConceptos))
+
+ Dim rds As New ReportDataSource()
+ rds.Name = "DsOC"
+ rds.Value = DTConceptos
+ Dim Archivo As New System.IO.FileInfo(RutaFormato)
+
+ If Archivo.Exists Then
+ Dim MR As New ReportViewer()
+ MR.LocalReport.DataSources.Add(rds)
+ MR.LocalReport.ReportPath = RutaFormato
+ MR.ProcessingMode = ProcessingMode.Local
+ MR.LocalReport.EnableExternalImages = True
+ MR.LocalReport.SetParameters(parametros)
+ MR.LocalReport.Refresh()
+
+
+ Dim warnings As Warning() = Nothing
+ Dim streamids As String() = Nothing
+ Dim mimeType As String = Nothing
+ Dim encoding As String = Nothing
+ Dim extension As String = Nothing
+ Dim bytes As Byte() = Nothing
+ bytes = MR.LocalReport.Render("PDF", Nothing, mimeType, encoding, extension, streamids,
+ warnings)
+
+ Using fs As New FileStream(NombreArchivo, FileMode.Create)
+ fs.Write(bytes, 0, bytes.Length)
+ fs.Close()
+ End Using
+ Retorno = True
+ Else
+ ModExtensiones.GuardaLog(String.Format("No existe formato Base"))
+
+
+ End If
+ Catch ex As Exception
+ ModExtensiones.GuardaLog(String.Format("Ocurrio un Error al generar el reporte RLDC"))
+ Retorno = False
+ End Try
+ Return Retorno
+ End Function
+ Private Sub CreaDTConceptos()
+ DTConceptos = New DataTable()
+ DTConceptos.Columns.Add("Consec", GetType(Integer))
+ DTConceptos.Columns.Add("Cantidad", GetType(Double))
+ DTConceptos.Columns.Add("UM", GetType(String))
+ DTConceptos.Columns.Add("PS", GetType(String))
+ DTConceptos.Columns.Add("PU", GetType(Double))
+ DTConceptos.Columns.Add("IVA", GetType(Double))
+ DTConceptos.Columns.Add("Total", GetType(Double))
+ End Sub
+#End Region
+
+#Region "D E S C A R G A R - F A C T U R A "
+ Protected Sub lbDescargar_Click(sender As Object, e As EventArgs) Handles lbDescargar.Click
+
+ Dim Retorno As Boolean = False
+
+ Dim ObjProcess As Process = Nothing
+ Dim Mensajes As String = ""
+ Dim error1 As Boolean = False
+ Dim CountProcesados As Integer = 0
+
+
+
+ Try
+ ObjProcess = New Process()
+ ObjProcess.StartInfo.RedirectStandardOutput = True
+ ObjProcess.StartInfo.FileName = Ejecutable
+ ObjProcess.StartInfo.Arguments = $"--mod dsat2 --cveemp {UsuarioActual.CveEmpresa} --rfc {UsuarioActual.Empresa.RFC} --ciec {UsuarioActual.Empresa.CIEC} --razon {UsuarioActual.Empresa.Empresa} --fi {txtFechaI.Text} --ff {txtFechaF.Text}"
+ ObjProcess.StartInfo.UseShellExecute = False
+ ObjProcess.StartInfo.WindowStyle = ProcessWindowStyle.Normal
+ ObjProcess.Start()
+
+
+ Dim myStreamReader As StreamReader = ObjProcess.StandardOutput
+
+ 'Read the standard output of the spawned process.
+ Mensajes = myStreamReader.ReadLine()
+ If Mensajes.Length > 0 Then
+
+ Dim msgs As String() = Mensajes.Split("|"c)
+ Dim NFacturas As Integer = 0
+
+ If msgs.Length >= 2 Then
+ Try
+ NFacturas = msgs(0).ToEntero
+ CountProcesados = msgs(0).ToEntero
+ Mensajes = $"La actualización se realizó correctamente.
Facturas agregadas: { NFacturas }"
+ Catch ex As Exception
+ NFacturas = 0
+ Mensajes = "La actualización se realizó correctamente"
+ End Try
+ Else
+ Mensajes = "La descarga se realizó correctamente"
+ End If
+ End If
+ ObjProcess.WaitForExit()
+ ObjProcess.Close()
+ Retorno = True
+ Catch ex As Exception
+ error1 = True
+ OnError("Ocurrió un error al ejecutar el actualizador.", ex)
+ End Try
+
+ If Retorno Then CargaDatos()
+
+
+
+
+ 'Dim Retorno As Boolean = False
+ ''Codigo anterior no borrar puede hacer el paro
+
+ 'Dim ObjProcess As Process = Nothing
+ 'Dim Mensajes As String = ""
+ 'Dim EjecutableUtilerias = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Utilerias\UtileriasAD.exe")
+ 'Dim Folder = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Empresas\")
+ 'Dim error1 As Boolean = False
+ 'Dim en As New CultureInfo("en-US")
+ 'Dim fechai = txtFechaI.Text.Trim.ToDate.ToString("d", en)
+ 'Dim fechaf = txtFechaF.Text.Trim.ToDate.ToString("d", en)
+ 'Try
+ ' ObjProcess = New Process()
+ ' ObjProcess.StartInfo.RedirectStandardOutput = True
+ ' ObjProcess.StartInfo.FileName = EjecutableUtilerias
+ ' ObjProcess.StartInfo.Verb = "runas"
+ ' ObjProcess.StartInfo.Arguments = $"{UsuarioActual.CveEmpresa} {Folder} 1 {fechai} {fechaf}"
+ ' ObjProcess.StartInfo.UseShellExecute = False
+ ' ObjProcess.StartInfo.WindowStyle = ProcessWindowStyle.Normal
+ ' ObjProcess.Start()
+ ' ObjProcess.WaitForExit()
+ ' ObjProcess.Close()
+ 'Catch ex As Exception
+ ' error1 = True
+ ' OnError("Ocurrió un error al ejecutar el actualizador.", ex)
+ 'End Try
+
+ '' ProcesaBuzon()
+
+ End Sub
+
+
+ 'Private Sub ProcesaBuzon()
+ ' Dim ObjProcess As Process = Nothing
+ ' Dim Mensajes As String = ""
+ ' Dim EjecutableUtilerias = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Utilerias\ADSUtilerias.exe")
+ ' Dim Folder = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Empresas\")
+ ' Dim error1 As Boolean = False
+ ' Dim en As New CultureInfo("en-US")
+ ' Dim fechai = txtFechaI.Text.Trim.ToDate.ToString("d", en)
+ ' Dim fechaf = txtFechaF.Text.Trim.ToDate.ToString("d", en)
+ ' Dim Salida As String = ""
+ ' Try
+ ' ObjProcess = New Process()
+ ' ObjProcess.StartInfo.RedirectStandardOutput = True
+ ' ObjProcess.StartInfo.FileName = EjecutableUtilerias
+ ' ObjProcess.StartInfo.Verb = "runas"
+ ' ObjProcess.StartInfo.Arguments = $"--mod dsat --e {UsuarioActual.CveEmpresa} --op 1 --fd {Folder} --fi {fechai} --ff {fechaf}"
+ ' ObjProcess.StartInfo.UseShellExecute = False
+ ' ObjProcess.StartInfo.WindowStyle = ProcessWindowStyle.Normal
+ ' ObjProcess.Start()
+ ' Salida = ObjProcess.StandardOutput.ReadToEnd()
+ ' ObjProcess.WaitForExit()
+ ' ObjProcess.Close()
+ ' Catch ex As Exception
+ ' error1 = True
+ ' OnError("Ocurrió un error al ejecutar el actualizador.", ex)
+ ' End Try
+ 'End Sub
+
+#End Region
+
+#Region "B I T A C O R A"
+ Private Sub CargaGvBitacora()
+ Dim ObjGral As New ClsGenerales
+ If ObjGral.GetHistorialBitacoraRemoveGet("Compras", UsuarioActual.CveEmpresa) Then
+ GvBitacora.DataSource = ObjGral.DtResultados
+ ObjGral.Dispose()
+ End If
+ GvBitacora.DataBind()
+ End Sub
+
+ Private Sub BtnRemove_Click(sender As Object, e As EventArgs) Handles BtnRemove.Click
+ Dim Borrar As Boolean = False
+ If Not TxtDescripcion.Text = "" Then
+ Dim ObjGral As New ClsGenerales
+ If ObjGral.AddHistorialBitacora(Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, "", "", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, 1, TxtDescripcion.Text, "Compras", Folio1 + " / " + Proveedor) Then
+ Borrar = True
+ End If
+ ObjGral.Dispose()
+ If Borrar = True Then
+ Dim ObjCompras As New ClsCompras
+ If ObjCompras.DeleteFactura(CveFactura) Then
+ GvD.EditIndex = -1
+ RegistraScript(String.Format("$('#{0}').modal('hide');", "divDescripcion"))
+ Alert("La factura se eliminó correctamente.", TipoMensaje.MsgInformacion)
+ CargaDatos()
+ UpBitacora.Update()
+ End If
+
+ ObjCompras.Dispose()
+
+ End If
+ End If
+ CargaGvBitacora()
+ UpBitacora.Update()
+ End Sub
+ Private Sub BtnEliminarPago_Click(sender As Object, e As EventArgs) Handles BtnEliminarPago.Click
+ Dim Borrar As Boolean = False
+ If Not TxtDescripcion.Text = "" Then
+ Dim ObjGral As New ClsGenerales
+ If ObjGral.AddHistorialBitacora(Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, "", "", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, 1, TxtDescripcion.Text, "Compras", Folio1 + " / " + Proveedor) Then
+ Borrar = True
+ End If
+ ObjGral.Dispose()
+ If Borrar = True Then
+ Dim ObjCompras As New ClsCompras
+ If ObjCompras.DeleteFactura(CveFactura) Then
+ GvPagos.EditIndex = -1
+ RegistraScript("$('#divDescripcionPago').modal('hide');")
+ Alert("La factura se eliminó correctamente.", TipoMensaje.MsgInformacion)
+ CargaDatos()
+ UpBitacora.Update()
+ End If
+
+ ObjCompras.Dispose()
+ End If
+ End If
+ CargaGvBitacora()
+ UpBitacora.Update()
+ End Sub
+
+ Private Sub BtnMostrar_Click(sender As Object, e As EventArgs) Handles BtnMostrar.Click
+ GvBitacora.Visible = True
+ BtnOcultar.Visible = True
+ BtnMostrar.Visible = False
+ UpBitacora.Update()
+ End Sub
+
+ Private Sub BtnOcultar_Click(sender As Object, e As EventArgs) Handles BtnOcultar.Click
+ GvBitacora.Visible = False
+ BtnOcultar.Visible = False
+ BtnMostrar.Visible = True
+ UpBitacora.Update()
+ End Sub
+
+#End Region
Property MSGComplemento As String
@@ -2602,343 +2602,343 @@ Partial Class Compras_eFacturas
End Property
-#Region "V I N C U L A R P A G O"
+#Region "V I N C U L A R P A G O"
+
+ Protected Sub LnkAgregarPago_Click(sender As Object, e As EventArgs)
+
- Protected Sub LnkAgregarPago_Click(sender As Object, e As EventArgs)
-
-
MSGComplemento = ""
- ViculacionConPUE = False
- ListaComprasPUE.Clear()
+ ViculacionConPUE = False
+ ListaComprasPUE.Clear()
ComplementoConPUE = ""
Dim ListaComprasPUEInterna As New List(Of Integer)
- Dim gvRow As GridViewRow = DirectCast((DirectCast(sender, LinkButton)).NamingContainer, GridViewRow)
- Dim CveComplementoPagoCompra As Integer = gvRow.DataKey("CveComplementoPagoCompra").ToString.ToEntero
-
- If CveComplementoPagoCompra > 0 Then
- DVMensajecomplementoVinculado.Visible = True
- Else
- DVMensajecomplementoVinculado.Visible = False
- End If
-
- Dim SerieFolioIE As String = ""
- Dim UUIDPago As String = ""
- 'Dim ImportePago As Decimal = 0
- Dim StrUUID As New StringBuilder
- Dim Monto As Decimal = 0
- Dim nodePagos As XmlNode = Nothing
- Dim nodePagos2 As XmlNode = Nothing
- Dim nodeComp As XmlNode = Nothing
- Dim nodeaGral As XmlNode = Nothing
- Dim nodeTFD As XmlNode = Nothing
- Dim ImporteIES As Double = 0
- Dim DiferenciaImportes As Double = 0
- Dim TextoDiferenciaImporte As String = ""
- Dim FechaPago As Date
+ Dim gvRow As GridViewRow = DirectCast((DirectCast(sender, LinkButton)).NamingContainer, GridViewRow)
+ Dim CveComplementoPagoCompra As Integer = gvRow.DataKey("CveComplementoPagoCompra").ToString.ToEntero
+
+ If CveComplementoPagoCompra > 0 Then
+ DVMensajecomplementoVinculado.Visible = True
+ Else
+ DVMensajecomplementoVinculado.Visible = False
+ End If
+
+ Dim SerieFolioIE As String = ""
+ Dim UUIDPago As String = ""
+ 'Dim ImportePago As Decimal = 0
+ Dim StrUUID As New StringBuilder
+ Dim Monto As Decimal = 0
+ Dim nodePagos As XmlNode = Nothing
+ Dim nodePagos2 As XmlNode = Nothing
+ Dim nodeComp As XmlNode = Nothing
+ Dim nodeaGral As XmlNode = Nothing
+ Dim nodeTFD As XmlNode = Nothing
+ Dim ImporteIES As Double = 0
+ Dim DiferenciaImportes As Double = 0
+ Dim TextoDiferenciaImporte As String = ""
+ Dim FechaPago As Date
Dim PagosCantidad As Integer = 0
- Dim XMLDoc As New XmlDocument
- Dim Archivo As String = String.Format("{0}Empresas\{1}\Compras\{2}\{3}", AppDomain.CurrentDomain.BaseDirectory, UsuarioActual.CveEmpresa, gvRow.DataKey("RFCDe"), gvRow.DataKey("XML"))
- If IO.File.Exists(Archivo) Then
-
-
- Dim SXML As String = File.ReadAllText(Archivo).Replace(vbLf, " ").Replace(vbCrLf, " ")
-
- SXML = SXML.Trim((Convert.ToChar(0)))
-
- XMLDoc.LoadXml(SXML)
-
- Dim Xml As New StringBuilder
- Dim namespaces As New XmlNamespaceManager(XMLDoc.NameTable)
-
- namespaces.AddNamespace(XMLDoc.DocumentElement.Prefix, "http://www.sat.gob.mx/cfd/3")
- namespaces.AddNamespace("tfd", "http://www.sat.gob.mx/TimbreFiscalDigital")
- namespaces.AddNamespace("pago10", "http://www.sat.gob.mx/Pagos")
- nodeComp = XMLDoc.SelectSingleNode(String.Format("//{0}:Complemento", XMLDoc.DocumentElement.Prefix), namespaces)
-
- nodeaGral = XMLDoc.SelectSingleNode(String.Format("//{0}:Comprobante", XMLDoc.DocumentElement.Prefix), namespaces)
-
- nodeTFD = nodeComp.SelectSingleNode(String.Format("//{0}:TimbreFiscalDigital", "tfd"), namespaces)
- nodePagos = nodeComp.SelectSingleNode(String.Format("//{0}:Pagos/{0}:Pago", "pago10"), namespaces)
- nodePagos2 = nodeComp.SelectSingleNode(String.Format("//{0}:Pagos", "pago10"), namespaces)
- 'Monto = ValorXML(nodePagos, "Monto").ToDecimal
-
- Dim nodePago As XmlNodeList = nodePagos.SelectNodes(String.Format("//{0}:DoctoRelacionado", "pago10"), namespaces)
-
- SeriePago = ValorXML(nodeaGral, "Serie")
- FolioPago = ValorXML(nodeaGral, "Folio")
-
- UUIDPago = ValorXML(nodeTFD, "UUID")
- LblUUID.Text = UUIDPago
-
- Dim DTDocumentosRelacionados As New DataTable
- DTDocumentosRelacionados.Columns.Add("Serie")
- DTDocumentosRelacionados.Columns.Add("SerieFolio")
-
- DTDocumentosRelacionados.Columns.Add("IdDocumento")
- DTDocumentosRelacionados.Columns.Add("Folio", GetType(Integer))
- DTDocumentosRelacionados.Columns.Add("MonedaDR")
- DTDocumentosRelacionados.Columns.Add("MetodoDePagoDR")
- DTDocumentosRelacionados.Columns.Add("ImpPagado", GetType(Decimal))
-
- DTDocumentosRelacionados.Columns.Add("CveFactura", GetType(Integer))
- DTDocumentosRelacionados.Columns.Add("CveCompra", GetType(Integer))
- DTDocumentosRelacionados.Columns.Add("CveIE", GetType(Integer))
- DTDocumentosRelacionados.Columns.Add("Fecha", GetType(Date))
-
- DTDocumentosRelacionados.Columns.Add("FolioPago")
- DTDocumentosRelacionados.Columns.Add("ImportePago", GetType(Decimal))
- DTDocumentosRelacionados.Columns.Add("FechaPago", GetType(Date))
- DTDocumentosRelacionados.Columns.Add("CveMetodoPago", GetType(Integer))
- DTDocumentosRelacionados.Columns.Add("SerieFolioCompra")
-
-
-
- Dim nodePagosN As XmlNodeList
- nodePagosN = nodeComp.SelectNodes(String.Format("//{0}:Pagos", "pago10"), namespaces)
-
-
-
- For Each NodosPagos As XmlNode In nodePagosN
- For Each innernode As XmlNode In NodosPagos
-
- FechaPago = ValorXML(innernode, "FechaPago").ToDate
- PagosCantidad = PagosCantidad + 1
-
- For Each node As XmlNode In innernode
-
- Dim Nrow As DataRow = DTDocumentosRelacionados.NewRow
-
- Nrow("Serie") = ValorXML(node, "Serie")
- Nrow("Folio") = ValorXML(node, "Folio").ToEntero
- Nrow("SerieFolio") = ValorXML(node, "Serie") & "-" & ValorXML(node, "Folio").ToEntero
- Nrow("IdDocumento") = ValorXML(node, "IdDocumento")
- Nrow("MonedaDR") = ValorXML(node, "MonedaDR")
- Nrow("MetodoDePagoDR") = ValorXML(node, "MetodoDePagoDR")
-
- Monto = Monto + ValorXML(node, "ImpPagado").ToDecimal
-
- Nrow("ImpPagado") = ValorXML(node, "ImpPagado").ToDecimal
- Nrow("Fecha") = FechaPago
-
- DTDocumentosRelacionados.Rows.Add(Nrow)
- StrUUID.AppendFormat("'{0}',", ValorXML(node, "IdDocumento").Replace("'", ""))
- Next
-
- Next
- Next
-
- 'ImportePago
- 'For Each node As XmlNode In nodePago
-
- ' Dim Nrow As DataRow = DTDocumentosRelacionados.NewRow
-
- ' Nrow("Serie") = ValorXML(node, "Serie")
- ' Nrow("Folio") = ValorXML(node, "Folio").ToEntero
- ' Nrow("SerieFolio") = ValorXML(node, "Serie") & "-" & ValorXML(node, "Folio").ToEntero
- ' Nrow("IdDocumento") = ValorXML(node, "IdDocumento")
- ' Nrow("MonedaDR") = ValorXML(node, "MonedaDR")
- ' Nrow("MetodoDePagoDR") = ValorXML(node, "MetodoDePagoDR")
- ' Nrow("ImpPagado") = ValorXML(node, "ImpPagado").ToDecimal
- ' Nrow("Fecha") = FechaPago
-
- ' DTDocumentosRelacionados.Rows.Add(Nrow)
- ' StrUUID.AppendFormat("'{0}',", ValorXML(node, "IdDocumento").Replace("'", ""))
- 'Next
-
- Dim ObjCompraFolios As New ClsCompras
- If ObjCompraFolios.GetCompararComplementoPago(gvRow.DataKey("CveProveedor").ToEntero, Monto, nodePagos2.InnerXml.Replace("pago10:", ""), UsuarioActual.CveEmpresa, OP:=2) Then
- '
- '.GetCompararComplementoPago(gvRow.DataKey("CveProveedor").ToEntero, Monto, nodePagos2.InnerXml.Replace("pago10:", ""), UsuarioActual.CveEmpresa) Then
- If ObjCompraFolios.DtResultados.Rows.Count > 0 Then
- For Each drow As DataRow In ObjCompraFolios.DtResultados.Rows
-
- For Each dRow2 As DataRow In DTDocumentosRelacionados.Rows
-
- If dRow2("IdDocumento").ToString.ToUpper = drow("IdDocumento").ToString.ToUpper Then
-
- dRow2("CveCompra") = drow("CveCompra").ToString.ToEntero
- dRow2("CveFactura") = drow("CveFactura").ToString.ToEntero
- dRow2("CveMetodoPago") = drow("CveMetodoPago").ToString.ToEntero
- dRow2("SerieFolioCompra") = drow("SerieFolioCompra").ToString
-
-
- If drow("CveIE").ToString.ToEntero > 0 Then
-
- dRow2("CveIE") = drow("CveIE").ToString.ToEntero
- dRow2("ImportePago") = drow("Importe").ToString.ToDecimal
-
-
- End If
-
- dRow2("FolioPago") = drow("FolioIE")
- dRow2("FechaPago") = drow("FechaDocumento")
-
-
-
-
- End If
- Next
- Next
- End If
- End If
-
- ObjCompraFolios.Dispose()
- GVPDocumentosRelacionadosPagos.DataSource = DTDocumentosRelacionados
- GVPDocumentosRelacionadosPagos.DataBind()
-
-
- For Each dRow2 As DataRow In DTDocumentosRelacionados.Rows
- If dRow2("CveMetodoPago").ToString.ToEntero > 0 Then
- If dRow2("CveMetodoPago").ToString.ToEntero = 1 Then
- MSGComplemento = MSGComplemento & $" Compra {dRow2("SerieFolioCompra").ToString } bloqueado Tipo ""PUE"". "
-
- ListaComprasPUEInterna.Add(dRow2("CveCompra").ToString.ToEntero)
-
+ Dim XMLDoc As New XmlDocument
+ Dim Archivo As String = String.Format("{0}Empresas\{1}\Compras\{2}\{3}", AppDomain.CurrentDomain.BaseDirectory, UsuarioActual.CveEmpresa, gvRow.DataKey("RFCDe"), gvRow.DataKey("XML"))
+ If IO.File.Exists(Archivo) Then
+
+
+ Dim SXML As String = File.ReadAllText(Archivo).Replace(vbLf, " ").Replace(vbCrLf, " ")
+
+ SXML = SXML.Trim((Convert.ToChar(0)))
+
+ XMLDoc.LoadXml(SXML)
+
+ Dim Xml As New StringBuilder
+ Dim namespaces As New XmlNamespaceManager(XMLDoc.NameTable)
+
+ namespaces.AddNamespace(XMLDoc.DocumentElement.Prefix, "http://www.sat.gob.mx/cfd/3")
+ namespaces.AddNamespace("tfd", "http://www.sat.gob.mx/TimbreFiscalDigital")
+ namespaces.AddNamespace("pago10", "http://www.sat.gob.mx/Pagos")
+ nodeComp = XMLDoc.SelectSingleNode(String.Format("//{0}:Complemento", XMLDoc.DocumentElement.Prefix), namespaces)
+
+ nodeaGral = XMLDoc.SelectSingleNode(String.Format("//{0}:Comprobante", XMLDoc.DocumentElement.Prefix), namespaces)
+
+ nodeTFD = nodeComp.SelectSingleNode(String.Format("//{0}:TimbreFiscalDigital", "tfd"), namespaces)
+ nodePagos = nodeComp.SelectSingleNode(String.Format("//{0}:Pagos/{0}:Pago", "pago10"), namespaces)
+ nodePagos2 = nodeComp.SelectSingleNode(String.Format("//{0}:Pagos", "pago10"), namespaces)
+ 'Monto = ValorXML(nodePagos, "Monto").ToDecimal
+
+ Dim nodePago As XmlNodeList = nodePagos.SelectNodes(String.Format("//{0}:DoctoRelacionado", "pago10"), namespaces)
+
+ SeriePago = ValorXML(nodeaGral, "Serie")
+ FolioPago = ValorXML(nodeaGral, "Folio")
+
+ UUIDPago = ValorXML(nodeTFD, "UUID")
+ LblUUID.Text = UUIDPago
+
+ Dim DTDocumentosRelacionados As New DataTable
+ DTDocumentosRelacionados.Columns.Add("Serie")
+ DTDocumentosRelacionados.Columns.Add("SerieFolio")
+
+ DTDocumentosRelacionados.Columns.Add("IdDocumento")
+ DTDocumentosRelacionados.Columns.Add("Folio", GetType(Integer))
+ DTDocumentosRelacionados.Columns.Add("MonedaDR")
+ DTDocumentosRelacionados.Columns.Add("MetodoDePagoDR")
+ DTDocumentosRelacionados.Columns.Add("ImpPagado", GetType(Decimal))
+
+ DTDocumentosRelacionados.Columns.Add("CveFactura", GetType(Integer))
+ DTDocumentosRelacionados.Columns.Add("CveCompra", GetType(Integer))
+ DTDocumentosRelacionados.Columns.Add("CveIE", GetType(Integer))
+ DTDocumentosRelacionados.Columns.Add("Fecha", GetType(Date))
+
+ DTDocumentosRelacionados.Columns.Add("FolioPago")
+ DTDocumentosRelacionados.Columns.Add("ImportePago", GetType(Decimal))
+ DTDocumentosRelacionados.Columns.Add("FechaPago", GetType(Date))
+ DTDocumentosRelacionados.Columns.Add("CveMetodoPago", GetType(Integer))
+ DTDocumentosRelacionados.Columns.Add("SerieFolioCompra")
+
+
+
+ Dim nodePagosN As XmlNodeList
+ nodePagosN = nodeComp.SelectNodes(String.Format("//{0}:Pagos", "pago10"), namespaces)
+
+
+
+ For Each NodosPagos As XmlNode In nodePagosN
+ For Each innernode As XmlNode In NodosPagos
+
+ FechaPago = ValorXML(innernode, "FechaPago").ToDate
+ PagosCantidad = PagosCantidad + 1
+
+ For Each node As XmlNode In innernode
+
+ Dim Nrow As DataRow = DTDocumentosRelacionados.NewRow
+
+ Nrow("Serie") = ValorXML(node, "Serie")
+ Nrow("Folio") = ValorXML(node, "Folio").ToEntero
+ Nrow("SerieFolio") = ValorXML(node, "Serie") & "-" & ValorXML(node, "Folio").ToEntero
+ Nrow("IdDocumento") = ValorXML(node, "IdDocumento")
+ Nrow("MonedaDR") = ValorXML(node, "MonedaDR")
+ Nrow("MetodoDePagoDR") = ValorXML(node, "MetodoDePagoDR")
+
+ Monto = Monto + ValorXML(node, "ImpPagado").ToDecimal
+
+ Nrow("ImpPagado") = ValorXML(node, "ImpPagado").ToDecimal
+ Nrow("Fecha") = FechaPago
+
+ DTDocumentosRelacionados.Rows.Add(Nrow)
+ StrUUID.AppendFormat("'{0}',", ValorXML(node, "IdDocumento").Replace("'", ""))
+ Next
+
+ Next
+ Next
+
+ 'ImportePago
+ 'For Each node As XmlNode In nodePago
+
+ ' Dim Nrow As DataRow = DTDocumentosRelacionados.NewRow
+
+ ' Nrow("Serie") = ValorXML(node, "Serie")
+ ' Nrow("Folio") = ValorXML(node, "Folio").ToEntero
+ ' Nrow("SerieFolio") = ValorXML(node, "Serie") & "-" & ValorXML(node, "Folio").ToEntero
+ ' Nrow("IdDocumento") = ValorXML(node, "IdDocumento")
+ ' Nrow("MonedaDR") = ValorXML(node, "MonedaDR")
+ ' Nrow("MetodoDePagoDR") = ValorXML(node, "MetodoDePagoDR")
+ ' Nrow("ImpPagado") = ValorXML(node, "ImpPagado").ToDecimal
+ ' Nrow("Fecha") = FechaPago
+
+ ' DTDocumentosRelacionados.Rows.Add(Nrow)
+ ' StrUUID.AppendFormat("'{0}',", ValorXML(node, "IdDocumento").Replace("'", ""))
+ 'Next
+
+ Dim ObjCompraFolios As New ClsCompras
+ If ObjCompraFolios.GetCompararComplementoPago(gvRow.DataKey("CveProveedor").ToEntero, Monto, nodePagos2.InnerXml.Replace("pago10:", ""), UsuarioActual.CveEmpresa, OP:=2) Then
+ '
+ '.GetCompararComplementoPago(gvRow.DataKey("CveProveedor").ToEntero, Monto, nodePagos2.InnerXml.Replace("pago10:", ""), UsuarioActual.CveEmpresa) Then
+ If ObjCompraFolios.DtResultados.Rows.Count > 0 Then
+ For Each drow As DataRow In ObjCompraFolios.DtResultados.Rows
+
+ For Each dRow2 As DataRow In DTDocumentosRelacionados.Rows
+
+ If dRow2("IdDocumento").ToString.ToUpper = drow("IdDocumento").ToString.ToUpper Then
+
+ dRow2("CveCompra") = drow("CveCompra").ToString.ToEntero
+ dRow2("CveFactura") = drow("CveFactura").ToString.ToEntero
+ dRow2("CveMetodoPago") = drow("CveMetodoPago").ToString.ToEntero
+ dRow2("SerieFolioCompra") = drow("SerieFolioCompra").ToString
+
+
+ If drow("CveIE").ToString.ToEntero > 0 Then
+
+ dRow2("CveIE") = drow("CveIE").ToString.ToEntero
+ dRow2("ImportePago") = drow("Importe").ToString.ToDecimal
+
+
+ End If
+
+ dRow2("FolioPago") = drow("FolioIE")
+ dRow2("FechaPago") = drow("FechaDocumento")
+
+
+
+
+ End If
+ Next
+ Next
+ End If
+ End If
+
+ ObjCompraFolios.Dispose()
+ GVPDocumentosRelacionadosPagos.DataSource = DTDocumentosRelacionados
+ GVPDocumentosRelacionadosPagos.DataBind()
+
+
+ For Each dRow2 As DataRow In DTDocumentosRelacionados.Rows
+ If dRow2("CveMetodoPago").ToString.ToEntero > 0 Then
+ If dRow2("CveMetodoPago").ToString.ToEntero = 1 Then
+ MSGComplemento = MSGComplemento & $" Compra {dRow2("SerieFolioCompra").ToString } bloqueado Tipo ""PUE"". "
+
+ ListaComprasPUEInterna.Add(dRow2("CveCompra").ToString.ToEntero)
+
ComplementoConPUE = $"{SeriePago}-{FolioPago}"
- End If
- End If
- Next
-
- Else
- Alert("Ocurrió un error al cargar los archivos de complementos pago", TipoMensaje.MsgError)
- End If
-
- CveFacturaPago = gvRow.DataKey("CveFactura").ToEntero
- CveProveedor = gvRow.DataKey("CveProveedor").ToEntero
- Dim ObjCompras As New ClsCompras
-
- If ObjCompras.GetCompararComplementoPago(gvRow.DataKey("CveProveedor").ToEntero, Monto, nodePagos2.InnerXml.Replace("pago10:", ""), UsuarioActual.CveEmpresa) Then
- GvVincularPago.DataSource = ObjCompras.DtResultados
-
- If ObjCompras.DtResultados.Rows.Count > 0 Then
- SerieFolioIE = ObjCompras.DtResultados.Rows(0)("SerieFolio").ToString
- DivVincularPagoManualmente.Visible = False
- BtnVincularPago.Visible = True
-
- Else
- DivVincularPagoManualmente.Visible = True
- BtnVincularPago.Visible = False
- End If
- 'ImportePago = ObjCompras.DtResultados.SUMD("Monto")
- Else
- DivVincularPagoManualmente.Visible = False
- BtnVincularPago.Visible = False
- End If
-
-
-
- For Each drow As DataRow In ObjCompras.DtResultados.FiltraParametros("CveIE > 0 AND FechaDocumento IS NOT NULL", "", {"FechaDocumento"}).Rows
-
- Dim FechaDocumento As Date = drow("FechaDocumento").ToString.ToDate
-
- Dim FT1 As Date = FechaDocumento.AddDays(-6)
- Dim FT2 As Date = FechaDocumento.AddDays(7)
-
- If Not (FechaPago >= FT1 And FechaPago < FT2) Then
-
- BtnVincularPago.Visible = False
- MSGComplemento = MSGComplemento & " Existen mas de 3 días de diferencia entre la fecha del documento y la fecha de complemento. "
-
- Exit For
- End If
-
- Next
-
+ End If
+ End If
+ Next
+
+ Else
+ Alert("Ocurrió un error al cargar los archivos de complementos pago", TipoMensaje.MsgError)
+ End If
+
+ CveFacturaPago = gvRow.DataKey("CveFactura").ToEntero
+ CveProveedor = gvRow.DataKey("CveProveedor").ToEntero
+ Dim ObjCompras As New ClsCompras
+
+ If ObjCompras.GetCompararComplementoPago(gvRow.DataKey("CveProveedor").ToEntero, Monto, nodePagos2.InnerXml.Replace("pago10:", ""), UsuarioActual.CveEmpresa) Then
+ GvVincularPago.DataSource = ObjCompras.DtResultados
+
+ If ObjCompras.DtResultados.Rows.Count > 0 Then
+ SerieFolioIE = ObjCompras.DtResultados.Rows(0)("SerieFolio").ToString
+ DivVincularPagoManualmente.Visible = False
+ BtnVincularPago.Visible = True
+
+ Else
+ DivVincularPagoManualmente.Visible = True
+ BtnVincularPago.Visible = False
+ End If
+ 'ImportePago = ObjCompras.DtResultados.SUMD("Monto")
+ Else
+ DivVincularPagoManualmente.Visible = False
+ BtnVincularPago.Visible = False
+ End If
+
+
+
+ For Each drow As DataRow In ObjCompras.DtResultados.FiltraParametros("CveIE > 0 AND FechaDocumento IS NOT NULL", "", {"FechaDocumento"}).Rows
+
+ Dim FechaDocumento As Date = drow("FechaDocumento").ToString.ToDate
+
+ Dim FT1 As Date = FechaDocumento.AddDays(-6)
+ Dim FT2 As Date = FechaDocumento.AddDays(7)
+
+ If Not (FechaPago >= FT1 And FechaPago < FT2) Then
+
+ BtnVincularPago.Visible = False
+ MSGComplemento = MSGComplemento & " Existen mas de 3 días de diferencia entre la fecha del documento y la fecha de complemento. "
+
+ Exit For
+ End If
+
+ Next
+
If MSGComplemento.Trim.Length > 0 Then
' BtnVincularPago.Visible = False
ViculacionConPUE = True
- End If
-
-
-
- 'saco la información de lo vinculado en el ie
-
- ImporteIES = ObjCompras.DtResultados.FiltraParametros("CveIE > 0").SUM("Importe")
-
-
- DiferenciaImportes = Monto - ImporteIES
- ObjCompras.Dispose()
-
-
- If Math.Abs(DiferenciaImportes) > 5 Then
- TextoDiferenciaImporte = $" - IE ${ImporteIES.FormatoNumero} Diferencia { DiferenciaImportes.FormatoNumero() }
"
- BtnVincularPago.Visible = False
- MSGComplemento = MSGComplemento & $" Existe una diferencia mayor a $5.00 ({Math.Abs(DiferenciaImportes)})"
- Else
- 'BtnVincularPago.Visible = True
- 'TextoDiferenciaImporte = ""
- End If
-
-
- LblSerieFolioPago.Text = $"{SeriePago}-{FolioPago}"
- LblImportePago.Text = Monto.ToString("###,###,###.00") 'ImportePago.FormatoNumero
- LblPagosCantidad.Text = PagosCantidad.ToString
- LblImporteIE.Text = ImporteIES.FormatoNumero
- LblDiferencia.Text = If(DiferenciaImportes <> 0, DiferenciaImportes.FormatoNumero, "")
-
-
- If MSGComplemento.Trim.Length > 0 And CveComplementoPagoCompra <= 0 Then
- LblMensajeComlementoError.Text = MSGComplemento
- DVMensajecomplementoError.Visible = True
-
- Else
- LblMensajeComlementoError.Text = ""
- DVMensajecomplementoError.Visible = False
-
- End If
-
-
- GvVincularPago.DataBind()
+ End If
+
+
+
+ 'saco la información de lo vinculado en el ie
+
+ ImporteIES = ObjCompras.DtResultados.FiltraParametros("CveIE > 0").SUM("Importe")
+
+
+ DiferenciaImportes = Monto - ImporteIES
+ ObjCompras.Dispose()
+
+
+ If Math.Abs(DiferenciaImportes) > 5 Then
+ TextoDiferenciaImporte = $" - IE ${ImporteIES.FormatoNumero} Diferencia { DiferenciaImportes.FormatoNumero() }
"
+ BtnVincularPago.Visible = False
+ MSGComplemento = MSGComplemento & $" Existe una diferencia mayor a $5.00 ({Math.Abs(DiferenciaImportes)})"
+ Else
+ 'BtnVincularPago.Visible = True
+ 'TextoDiferenciaImporte = ""
+ End If
+
+
+ LblSerieFolioPago.Text = $"{SeriePago}-{FolioPago}"
+ LblImportePago.Text = Monto.ToString("###,###,###.00") 'ImportePago.FormatoNumero
+ LblPagosCantidad.Text = PagosCantidad.ToString
+ LblImporteIE.Text = ImporteIES.FormatoNumero
+ LblDiferencia.Text = If(DiferenciaImportes <> 0, DiferenciaImportes.FormatoNumero, "")
+
+
+ If MSGComplemento.Trim.Length > 0 And CveComplementoPagoCompra <= 0 Then
+ LblMensajeComlementoError.Text = MSGComplemento
+ DVMensajecomplementoError.Visible = True
+
+ Else
+ LblMensajeComlementoError.Text = ""
+ DVMensajecomplementoError.Visible = False
+
+ End If
+
+
+ GvVincularPago.DataBind()
UpVincularPago.Update()
ListaComprasPUE = ListaComprasPUEInterna
- RegistraScript("$('#ModalVincularPago').modal('show')", "VincularPagoModalShow")
- End Sub
-
- Private Sub BtnVincularPago_Click(sender As Object, e As EventArgs) Handles BtnVincularPago.Click
-
- 'VERIFICA QUE HALLA UN PAGO
- 'Dim Contador = 0
- 'For Each Gv As GridViewRow In GvVincularPago.Rows
- ' If Gv.FCCheckBox("ChkVincularPago").Checked Then
- ' Contador = 1
- ' Exit For
- ' End If
- 'Next
- 'If Contador = 0 Then
- ' Alert("Tiene que seleccionar algun pago. Por favor verifique y vuelta a intentar.", TipoMensaje.MsgAdvertencia)
- ' Exit Sub
- 'End If
-
- Dim TieneError = False
- Dim ObjCompra As New ClsCompras
- ObjCompra.IniciaTransacSQL()
-
-
- For Each Gv As GridViewRow In GvVincularPago.Rows
-
- If Not ObjCompra.AddComplementoPago(Gv.DataKey("CveIE").ToEntero, Gv.DataKey("CveCompra").ToEntero, Gv.DataKey("Monto").ToDecimal, Gv.DataKey("CvePrePolizaDetalle").ToEntero, CveFacturaPago) > 0 Then
- TieneError = True
- End If
-
-
- Next
-
- If Not TieneError AndAlso Not ObjCompra.AddVincularPago(CveFacturaPago) Then
- TieneError = True
- End If
-
+ RegistraScript("$('#ModalVincularPago').modal('show')", "VincularPagoModalShow")
+ End Sub
+
+ Private Sub BtnVincularPago_Click(sender As Object, e As EventArgs) Handles BtnVincularPago.Click
+
+ 'VERIFICA QUE HALLA UN PAGO
+ 'Dim Contador = 0
+ 'For Each Gv As GridViewRow In GvVincularPago.Rows
+ ' If Gv.FCCheckBox("ChkVincularPago").Checked Then
+ ' Contador = 1
+ ' Exit For
+ ' End If
+ 'Next
+ 'If Contador = 0 Then
+ ' Alert("Tiene que seleccionar algun pago. Por favor verifique y vuelta a intentar.", TipoMensaje.MsgAdvertencia)
+ ' Exit Sub
+ 'End If
+
+ Dim TieneError = False
+ Dim ObjCompra As New ClsCompras
+ ObjCompra.IniciaTransacSQL()
+
+
+ For Each Gv As GridViewRow In GvVincularPago.Rows
+
+ If Not ObjCompra.AddComplementoPago(Gv.DataKey("CveIE").ToEntero, Gv.DataKey("CveCompra").ToEntero, Gv.DataKey("Monto").ToDecimal, Gv.DataKey("CvePrePolizaDetalle").ToEntero, CveFacturaPago) > 0 Then
+ TieneError = True
+ End If
+
+
+ Next
+
+ If Not TieneError AndAlso Not ObjCompra.AddVincularPago(CveFacturaPago) Then
+ TieneError = True
+ End If
+
If Not TieneError Then
Dim objEventos As New ClsOIEventos(ObjCompra.IniciaTransacSQL)
@@ -2958,415 +2958,415 @@ Partial Class Compras_eFacturas
End If
- ObjCompra.Commit()
-
- Alert("El pago fue vinculado correctamente", TipoMensaje.MsgInformacion)
+ ObjCompra.Commit()
+
+ Alert("El pago fue vinculado correctamente", TipoMensaje.MsgInformacion)
RegistraScript("$('#ModalVincularPago').modal('hide')", "VincularPagoModalHide")
- CargaDatos()
- Else
- ObjCompra.RollBack()
- Alert("Ocurrió un error al vincular el pago. Por favor verifique y vuelva a intentar", TipoMensaje.MsgError)
- End If
- ObjCompra.Dispose()
-
-
- End Sub
-
- Protected Sub ChkVincularPago_CheckedChanged(sender As Object, e As EventArgs)
-
- For Each Gvr As GridViewRow In GvVincularPago.Rows
- Gvr.FCCheckBox("ChkVincularPago").Checked = False
- Next
-
- CType(sender, CheckBox).Checked = True
- End Sub
-
- Protected Sub BtnVincularManualmente_Click(sender As Object, e As EventArgs)
- If HdnCveIE.Value <> "-1" AndAlso IsNumeric(HdnCveIE.Value) AndAlso HdnCveIE.Value.ToEntero > 0 Then
- Dim ImportePago As Double = 0
- Dim ImporteIES As Double = 0
- Dim SerieFolioIE As String = ""
- Dim ObjCompras As New ClsCompras
- If ObjCompras.GetCompararComplementoPago(CveProveedor, -1, "", UsuarioActual.CveEmpresa, HdnCveIE.Value.ToEntero) Then
- GvVincularPago.DataSource = ObjCompras.DtResultados
- If ObjCompras.DtResultados.Rows.Count > 0 Then
- SerieFolioIE = ObjCompras.DtResultados.Rows(0)("SerieFolio").ToString
- End If
- ImportePago = ObjCompras.DtResultados.SUMD("Monto")
- End If
-
- ImporteIES = ObjCompras.DtResultados.FiltraParametros("CveIE > 0").SUM("Importe")
- ObjCompras.Dispose()
-
- BtnVincularPago.Visible = True
-
- LblSerieFolioPago.Text = $"{SeriePago}-{FolioPago}"
- LblImportePago.Text = ImportePago.FormatoNumero
- 'LblSerieFolioIE.Text = SerieFolioIE
- LblImporteIE.Text = ImporteIES.FormatoNumero
-
- GvVincularPago.DataBind()
- UpVincularPago.Update()
- ObjCompras.Dispose()
- End If
- End Sub
-
- Private Sub GVPDocumentosRelacionadosPagos_RowCreated(sender As Object, e As GridViewRowEventArgs) Handles GVPDocumentosRelacionadosPagos.RowCreated
-
- If e.Row.RowType = DataControlRowType.Header Then
- Dim HeaderGrid = DirectCast(sender, GridView)
- Dim HeaderGridRow = New GridViewRow(0, 0, DataControlRowType.Header, DataControlRowState.Insert)
- Dim HeaderCell = New TableCell
-
- HeaderCell.Text = "Documentos Relacionados"
- HeaderCell.ColumnSpan = 8
- HeaderCell.Attributes.Add("style", "border-top: 1px solid #ddd; vertical-align: top; background-color: #DDD; color: #333333;font-family: 'Open Sans', sans-serif;font-size: 12px; text-align:center!important; font-weight: bold;")
- HeaderGridRow.Cells.Add(HeaderCell)
- GVPDocumentosRelacionadosPagos.Controls(0).Controls.AddAt(0, HeaderGridRow)
-
- End If
-
- End Sub
-
- Private Sub GVPDocumentosRelacionadosPagos_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles GVPDocumentosRelacionadosPagos.RowDataBound
-
- If e.Row.RowType = DataControlRowType.DataRow Then
-
- If e.Row.DataKey("CveFactura").ToEntero > 0 Then
-
- If e.Row.DataKey("CveCompra").ToEntero > 0 Then
- e.Row.Cells(4).Text = ""
- e.Row.ToolTip = "Compra registrada"
- e.Row.Cells(4).ForeColor = Drawing.Color.Green
-
- Else
- e.Row.Cells(4).Text = ""
- e.Row.ToolTip = "Factura recibida sin registrar"
- End If
-
-
- Else
- e.Row.Cells(4).Text = ""
- e.Row.ToolTip = "No se encontro el Folio Fiscal en el sistema"
- e.Row.Cells(4).ForeColor = Drawing.Color.Red
- End If
- End If
-
- End Sub
-
-
-#End Region
-
-
-
- Public Sub ImprimirPDFXML(NombreArchivo As String, rutaxml As String)
- Dim objxml As XmlSatCFDI = XmlSatCFDI.readXML(rutaxml)
-
- Dim rutaReporte As String = String.Format("{0}{1}", AppDomain.CurrentDomain.BaseDirectory, "\Empresas\Grales\Formatos\CFDIV3.rdlc")
- Dim QR As ClbNegBICFDv3_2.ClsNegCBBGenerar = New ClbNegBICFDv3_2.ClsNegCBBGenerar()
- Dim cQr As Byte() = QR.GenerarCBBBytes(objxml.emisor.Rfc, objxml.receptor.Rfc, objxml.comprobante.Total, objxml.complemento.UUID)
- Dim parametros As List(Of ReportParameter) = New List(Of ReportParameter)()
- parametros.Add(New ReportParameter("comprobante_Certificado", objxml.comprobante.Certificado))
- parametros.Add(New ReportParameter("comprobante_CondicionesDePago", objxml.comprobante.CondicionesDePago))
- parametros.Add(New ReportParameter("comprobante_Confirmacion", objxml.comprobante.Confirmacion))
- parametros.Add(New ReportParameter("comprobante_Fecha", objxml.comprobante.Fecha))
- parametros.Add(New ReportParameter("comprobante_Serie", objxml.comprobante.Serie))
- parametros.Add(New ReportParameter("comprobante_Folio", objxml.comprobante.Folio))
- parametros.Add(New ReportParameter("comprobante_Descuento", objxml.comprobante.Descuento.ToString("N2")))
- parametros.Add(New ReportParameter("comprobante_SubTotal", objxml.comprobante.SubTotal.ToString("N2")))
- parametros.Add(New ReportParameter("comprobante_Total", objxml.comprobante.Total.ToString("N2")))
- parametros.Add(New ReportParameter("comprobante_Version", objxml.comprobante.Version))
- parametros.Add(New ReportParameter("comprobante_TipoDeComprobante", objxml.comprobante.TipoDeComprobanteTexto))
- parametros.Add(New ReportParameter("comprobante_FormaPago", objxml.comprobante.FormaPagoTexto))
- parametros.Add(New ReportParameter("comprobante_LugarExpedicion", objxml.comprobante.LugarExpedicion))
- parametros.Add(New ReportParameter("comprobante_NoCertificado", objxml.comprobante.NoCertificado))
- parametros.Add(New ReportParameter("comprobante_Sello", objxml.comprobante.Sello))
- parametros.Add(New ReportParameter("comprobante_Moneda", objxml.comprobante.Moneda))
- parametros.Add(New ReportParameter("comprobante_TipoCambio", objxml.comprobante.TipoCambio.ToString("N2")))
- parametros.Add(New ReportParameter("comprobante_MetodoPago", objxml.comprobante.MetodoPagoTexto))
- parametros.Add(New ReportParameter("emisor_Rfc", objxml.emisor.Rfc))
- parametros.Add(New ReportParameter("emisor_Nombre", objxml.emisor.Nombre))
- parametros.Add(New ReportParameter("emisor_RegimenFiscal", objxml.emisor.RegimenFiscalTexto))
- parametros.Add(New ReportParameter("receptor_Rfc", objxml.receptor.Rfc))
- parametros.Add(New ReportParameter("receptor_Nombre", objxml.receptor.Nombre))
- parametros.Add(New ReportParameter("receptor_NumRegIdTrib", objxml.receptor.NumRegIdTrib))
- parametros.Add(New ReportParameter("receptor_ResidenciaFiscal", objxml.receptor.ResidenciaFiscal))
- parametros.Add(New ReportParameter("receptor_UsoCFDI", objxml.receptor.UsoCFDITexto))
- parametros.Add(New ReportParameter("complemento_FechaTimbrado", objxml.complemento.FechaTimbrado))
- parametros.Add(New ReportParameter("complemento_NoCertificadoSAT", objxml.complemento.NoCertificadoSAT))
- parametros.Add(New ReportParameter("complemento_RfcProvCertif", objxml.complemento.RfcProvCertif))
- parametros.Add(New ReportParameter("complemento_SelloCFD", objxml.complemento.SelloCFD))
- parametros.Add(New ReportParameter("complemento_SelloSAT", objxml.complemento.SelloSAT))
- parametros.Add(New ReportParameter("complemento_UUID", objxml.complemento.UUID))
- parametros.Add(New ReportParameter("complemento_CadenaOriginal", objxml.complemento.CadenaOriginal))
-
- Using MR As ReportViewer = New ReportViewer()
- Dim rdsTotales As ReportDataSource = New ReportDataSource()
- Dim ltotales As List(Of utilValores) = New List(Of utilValores)()
- ltotales.Add(New utilValores("Subtotal", objxml.comprobante.SubTotal.ToString("N2")))
-
- If objxml.comprobante.Descuento > 0 Then
- ltotales.Add(New utilValores("Descuento", objxml.comprobante.Descuento.ToString("N2")))
- End If
-
- For Each item As CFDIImpuesto In objxml.Impuestos
-
- If item.Importe > 0 Then
- Dim TasaOCuota As Decimal = 0
- Decimal.TryParse(item.TasaOCuota, TasaOCuota)
- ltotales.Add(New utilValores($"Impuestos {item.Tipo} {item.ImpuestoTexto} {(If(item.TipoFactor = "Tasa", (TasaOCuota * 100).ToString("N4"), item.TasaOCuota))} {(If(item.TipoFactor = "Tasa", "%", ""))}", item.Importe.ToString("N2")))
- End If
- Next
-
- ltotales.Add(New utilValores("Total", objxml.comprobante.Total.ToString("N2")))
- rdsTotales.Name = "dsTotales"
- rdsTotales.Value = ltotales
- MR.LocalReport.DataSources.Add(rdsTotales)
- Dim rds2 As ReportDataSource = New ReportDataSource()
- Dim limagenes As List(Of utilImage) = New List(Of utilImage)()
- limagenes.Add(New utilImage(cQr))
- rds2.Name = "dsImagenes"
- rds2.Value = limagenes
- MR.LocalReport.DataSources.Add(rds2)
- Dim rdsrelacionados As ReportDataSource = New ReportDataSource()
- rdsrelacionados.Name = "dsRelacionados"
- rdsrelacionados.Value = objxml.cFDIRelacionados
- MR.LocalReport.DataSources.Add(rdsrelacionados)
- Dim rds1 As ReportDataSource = New ReportDataSource()
- rds1.Name = "dsConceptos"
- rds1.Value = objxml.GetConceptosforpdf()
- MR.LocalReport.DataSources.Add(rds1)
- MR.LocalReport.ReportPath = rutaReporte
- MR.ProcessingMode = ProcessingMode.Local
- MR.LocalReport.EnableExternalImages = True
- MR.LocalReport.SetParameters(parametros)
- MR.LocalReport.Refresh()
- Dim warnings As Warning() = Nothing
- Dim streamids As String() = Nothing
- Dim mimeType As String = Nothing
- Dim encoding As String = Nothing
- Dim extension As String = Nothing
- Dim bytes As Byte() = Nothing
- bytes = MR.LocalReport.Render("PDF", Nothing, mimeType, encoding, extension, streamids, warnings)
-
- Using fs As FileStream = New FileStream(NombreArchivo, FileMode.Create)
- fs.Write(bytes, 0, bytes.Length)
- fs.Close()
- End Using
- End Using
- End Sub
- Protected Sub lnkRegenerarPDF_Click(sender As Object, e As EventArgs)
- Dim gvrow As GridViewRow = DirectCast(DirectCast(sender, LinkButton).NamingContainer, GridViewRow)
- Dim strRFCde As String = gvrow.DataKey("RFCde")
- Dim strXml As String
- Dim strPDF As String
- Dim dirbase As String = String.Format("{0}{1}{2}{3}{4}\", AppDomain.CurrentDomain.BaseDirectory, "\Empresas\", UsuarioActual.CveEmpresa, "\Compras\", strRFCde)
- If Directory.Exists(dirbase) Then
- strXml = String.Format("{0}{1}", dirbase, gvrow.DataKey("XML"))
- strPDF = String.Format("{0}{1}", dirbase, gvrow.DataKey("PDF"))
- If File.Exists(strXml) Then
- ImprimirPDFXML(strPDF, strXml)
- Alert("el pdf se regenero satisfactoriamente.")
- Else
- Alert($"No se encontro el xml favor de contactar a soporte tecnico{strXml.Replace("\", "/")}")
- End If
- Else
- Alert($"No se encontro el xml favor de contactar a soporte tecnico{dirbase.Replace("\", "/")}")
- End If
- ',PDF
- '
- 'ImprimirPDFXML("C:\Generar PFX\405504.pdf", "C:\Generar PFX\405504.xml")
- End Sub
- Private Sub removeasincevent()
-
- 'For Each GvRow As GridViewRow In GvD.Rows
- ' Dim lnkDownPdf As LinkButton = GvRow.FCLinkButton("lnkDownPdf")
- ' Dim lnkXML As LinkButton = GvRow.FCLinkButton("lnkXML")
- ' If lnkDownPdf.Visible Then
-
- ' ScriptManager.GetCurrent(Me).RegisterPostBackControl(lnkDownPdf)
- ' End If
- ' If lnkXML.Visible Then
- ' ScriptManager.GetCurrent(Me).RegisterPostBackControl(lnkXML)
- ' End If
- 'Next
- End Sub
- Protected Sub lnkDownPdf_Click(sender As Object, e As EventArgs)
- Dim gvrow As GridViewRow = DirectCast(DirectCast(sender, LinkButton).NamingContainer, GridViewRow)
- Dim strRFCde As String = gvrow.DataKey("RFCde")
- Dim strPDF As String
- Dim dirbase As String = String.Format("{0}{1}{2}{3}{4}\", AppDomain.CurrentDomain.BaseDirectory, "\Empresas\", UsuarioActual.CveEmpresa, "\Compras\", strRFCde)
- strPDF = String.Format("{0}{1}", dirbase, gvrow.DataKey("PDF"))
- If File.Exists(strPDF) Then
- Dim file As New System.IO.FileInfo(strPDF)
- Dim mimeType As String = "text/plain"
- Try
- mimeType = MimeMapping.GetMimeMapping(strPDF)
- Catch ex As Exception
- End Try
- Response.Clear()
- Response.ClearHeaders()
- Response.ClearContent()
- Response.AddHeader("Content-Disposition", $"attachment; filename= {Uri.EscapeDataString(file.Name)}")
- Response.AddHeader("Content-Length", file.Length.ToString())
- Response.ContentType = mimeType
- Response.Flush()
- Response.TransmitFile(file.FullName)
- Response.End()
- End If
- End Sub
- Protected Sub lnkXML_Click(sender As Object, e As EventArgs)
- Dim gvrow As GridViewRow = DirectCast(DirectCast(sender, LinkButton).NamingContainer, GridViewRow)
- Dim strRFCde As String = gvrow.DataKey("RFCde")
- Dim strXml As String
- Dim dirbase As String = String.Format("{0}{1}{2}{3}{4}\", AppDomain.CurrentDomain.BaseDirectory, "\Empresas\", UsuarioActual.CveEmpresa, "\Compras\", strRFCde)
- strXml = String.Format("{0}{1}", dirbase, gvrow.DataKey("XML"))
- If File.Exists(strXml) Then
- Dim file As New System.IO.FileInfo(strXml)
- Dim mimeType As String = "text/plain"
- Try
- mimeType = MimeMapping.GetMimeMapping(strXml)
- Catch ex As Exception
- End Try
- Response.Clear()
- Response.ClearHeaders()
- Response.ClearContent()
- Response.AddHeader("Content-Disposition", $"attachment; filename= {Uri.EscapeDataString(file.Name)}")
- Response.AddHeader("Content-Length", file.Length.ToString())
- Response.ContentType = mimeType
- Response.Flush()
- Response.TransmitFile(file.FullName)
- Response.End()
- End If
- End Sub
- Protected Sub LnkRegenerarPdfnew_Click(sender As Object, e As EventArgs)
- Dim gvrow As GridViewRow = DirectCast(DirectCast(sender, LinkButton).NamingContainer, GridViewRow)
- Dim objxml As XmlSatCFDI = XmlSatCFDI.readXML(String.Format("{0}{1}\{2}", Destino, gvrow.DataKey("RFCDe"), gvrow.DataKey("XML")))
- If Not IsNothing(objxml) Then
- Dim rutaReporte As String = String.Format("{0}{1}", AppDomain.CurrentDomain.BaseDirectory, "\Empresas\Grales\Formatos\CFDIV3.rdlc")
- If Not IsNothing(objxml.complemento.Pagos) Then
- rutaReporte = String.Format("{0}{1}", AppDomain.CurrentDomain.BaseDirectory, "\Empresas\Grales\Formatos\CFDIV3Pago.rdlc")
- End If
- Dim NombreArchivo As String = String.Format("{0}{1}\{2}", Destino, gvrow.DataKey("RFCDe"), gvrow.DataKey("PDF"))
-
-
- Dim QR As ClbNegBICFDv3_2.ClsNegCBBGenerar = New ClbNegBICFDv3_2.ClsNegCBBGenerar()
- Dim cQr As Byte() = QR.GenerarCBBBytes(objxml.emisor.Rfc, objxml.receptor.Rfc, If(IsNothing(objxml.complemento.Pagos), objxml.comprobante.Total, objxml.complemento.Pagos.Monto), objxml.complemento.UUID)
- Dim parametros As List(Of ReportParameter) = New List(Of ReportParameter)()
- parametros.Add(New ReportParameter("comprobante_Certificado", objxml.comprobante.Certificado))
- parametros.Add(New ReportParameter("comprobante_CondicionesDePago", objxml.comprobante.CondicionesDePago))
- parametros.Add(New ReportParameter("comprobante_Confirmacion", objxml.comprobante.Confirmacion))
- parametros.Add(New ReportParameter("comprobante_Fecha", objxml.comprobante.Fecha))
- parametros.Add(New ReportParameter("comprobante_Serie", objxml.comprobante.Serie))
- parametros.Add(New ReportParameter("comprobante_Folio", objxml.comprobante.Folio))
- parametros.Add(New ReportParameter("comprobante_Descuento", objxml.comprobante.Descuento.ToString("N2")))
- parametros.Add(New ReportParameter("comprobante_SubTotal", objxml.comprobante.SubTotal.ToString("N2")))
- parametros.Add(New ReportParameter("comprobante_Total", objxml.comprobante.Total.ToString("N2")))
- parametros.Add(New ReportParameter("comprobante_Version", objxml.comprobante.Version))
- parametros.Add(New ReportParameter("comprobante_TipoDeComprobante", objxml.comprobante.TipoDeComprobanteTexto))
- parametros.Add(New ReportParameter("comprobante_FormaPago", objxml.comprobante.FormaPagoTexto))
- parametros.Add(New ReportParameter("comprobante_LugarExpedicion", objxml.comprobante.LugarExpedicion))
- parametros.Add(New ReportParameter("comprobante_NoCertificado", objxml.comprobante.NoCertificado))
- parametros.Add(New ReportParameter("comprobante_Sello", objxml.comprobante.Sello))
- parametros.Add(New ReportParameter("comprobante_Moneda", objxml.comprobante.Moneda))
- parametros.Add(New ReportParameter("comprobante_TipoCambio", objxml.comprobante.TipoCambio.ToString("N2")))
- parametros.Add(New ReportParameter("comprobante_MetodoPago", objxml.comprobante.MetodoPagoTexto))
- parametros.Add(New ReportParameter("emisor_Rfc", objxml.emisor.Rfc))
- parametros.Add(New ReportParameter("emisor_Nombre", objxml.emisor.Nombre))
- parametros.Add(New ReportParameter("emisor_RegimenFiscal", objxml.emisor.RegimenFiscalTexto))
- parametros.Add(New ReportParameter("receptor_Rfc", objxml.receptor.Rfc))
- parametros.Add(New ReportParameter("receptor_Nombre", objxml.receptor.Nombre))
- parametros.Add(New ReportParameter("receptor_NumRegIdTrib", objxml.receptor.NumRegIdTrib))
- parametros.Add(New ReportParameter("receptor_ResidenciaFiscal", objxml.receptor.ResidenciaFiscal))
- parametros.Add(New ReportParameter("receptor_UsoCFDI", objxml.receptor.UsoCFDITexto))
- parametros.Add(New ReportParameter("complemento_FechaTimbrado", objxml.complemento.FechaTimbrado))
- parametros.Add(New ReportParameter("complemento_NoCertificadoSAT", objxml.complemento.NoCertificadoSAT))
- parametros.Add(New ReportParameter("complemento_RfcProvCertif", objxml.complemento.RfcProvCertif))
- parametros.Add(New ReportParameter("complemento_SelloCFD", objxml.complemento.SelloCFD))
- parametros.Add(New ReportParameter("complemento_SelloSAT", objxml.complemento.SelloSAT))
- parametros.Add(New ReportParameter("complemento_UUID", objxml.complemento.UUID))
- parametros.Add(New ReportParameter("complemento_CadenaOriginal", objxml.complemento.CadenaOriginal))
- If Not IsNothing(objxml.complemento.Pagos) Then
- parametros.Add(New ReportParameter("CPFechaPago", objxml.complemento.Pagos.FechaPago))
- parametros.Add(New ReportParameter("CPFormaDePagoP", objxml.complemento.Pagos.FormaDePagoP))
- parametros.Add(New ReportParameter("CPFormaDePagoPText", objxml.complemento.Pagos.FormaDePagoPText))
- parametros.Add(New ReportParameter("CPMonedaP", objxml.complemento.Pagos.MonedaP))
- parametros.Add(New ReportParameter("CPMonto", objxml.complemento.Pagos.Monto.ToString()))
- parametros.Add(New ReportParameter("CPTipoCambioP", objxml.complemento.Pagos.TipoCambioP.ToString()))
- parametros.Add(New ReportParameter("CPNumOperacion", objxml.complemento.Pagos.NumOperacion))
- parametros.Add(New ReportParameter("CPNomBancoOrdExt", objxml.complemento.Pagos.NomBancoOrdExt))
- parametros.Add(New ReportParameter("CPRfcEmisorCtaOrd", objxml.complemento.Pagos.RfcEmisorCtaOrd))
- parametros.Add(New ReportParameter("CPCtaOrdenante", objxml.complemento.Pagos.CtaOrdenante))
- parametros.Add(New ReportParameter("CPRfcEmisorCtaBen", objxml.complemento.Pagos.RfcEmisorCtaBen))
- parametros.Add(New ReportParameter("CPCtaBeneficiario", objxml.complemento.Pagos.CtaBeneficiario))
-
- End If
- Using MR As ReportViewer = New ReportViewer()
- Dim rdsTotales As ReportDataSource = New ReportDataSource()
- Dim ltotales As List(Of utilValores) = New List(Of utilValores)()
- ltotales.Add(New utilValores("Subtotal", objxml.comprobante.SubTotal.ToString("N2")))
-
- If objxml.comprobante.Descuento > 0 Then
- ltotales.Add(New utilValores("Descuento", objxml.comprobante.Descuento.ToString("N2")))
- End If
-
- For Each item As CFDIImpuesto In objxml.Impuestos
-
- If item.Importe > 0 Then
- Dim TasaOCuota As Decimal = 0
- Decimal.TryParse(item.TasaOCuota, TasaOCuota)
- ltotales.Add(New utilValores($"Impuestos {item.Tipo} {item.ImpuestoTexto} {(If(item.TipoFactor = "Tasa", (TasaOCuota * 100).ToString("N4"), item.TasaOCuota))} {(If(item.TipoFactor = "Tasa", "%", ""))}", item.Importe.ToString("N2")))
- End If
- Next
-
- ltotales.Add(New utilValores("Total", objxml.comprobante.Total.ToString("N2")))
- rdsTotales.Name = "dsTotales"
- rdsTotales.Value = ltotales
- MR.LocalReport.DataSources.Add(rdsTotales)
- Dim rds2 As ReportDataSource = New ReportDataSource()
- Dim limagenes As List(Of utilImage) = New List(Of utilImage)()
- limagenes.Add(New utilImage(cQr))
- rds2.Name = "dsImagenes"
- rds2.Value = limagenes
- MR.LocalReport.DataSources.Add(rds2)
- Dim rdsrelacionados As ReportDataSource = New ReportDataSource()
- rdsrelacionados.Name = "dsRelacionados"
- rdsrelacionados.Value = objxml.cFDIRelacionados
- MR.LocalReport.DataSources.Add(rdsrelacionados)
- Dim rds1 As ReportDataSource = New ReportDataSource()
- rds1.Name = "dsConceptos"
- rds1.Value = objxml.GetConceptosforpdf()
- MR.LocalReport.DataSources.Add(rds1)
-
- If Not IsNothing(objxml.complemento.Pagos) Then
-
- Dim rdsp As ReportDataSource = New ReportDataSource()
- rdsp.Name = "dsPagos"
- rdsp.Value = objxml.complemento.Pagos.doctosRelacionados
- MR.LocalReport.DataSources.Add(rdsp)
- End If
-
- MR.LocalReport.ReportPath = rutaReporte
- MR.ProcessingMode = ProcessingMode.Local
- MR.LocalReport.EnableExternalImages = True
- MR.LocalReport.SetParameters(parametros)
- MR.LocalReport.Refresh()
- Dim warnings As Warning() = Nothing
- Dim streamids As String() = Nothing
- Dim mimeType As String = Nothing
- Dim encoding As String = Nothing
- Dim extension As String = Nothing
- Dim bytes As Byte() = Nothing
- bytes = MR.LocalReport.Render("PDF", Nothing, mimeType, encoding, extension, streamids, warnings)
-
- Using fs As FileStream = New FileStream(NombreArchivo, FileMode.Create)
- fs.Write(bytes, 0, bytes.Length)
- fs.Close()
- End Using
- End Using
- Alert("PDF Generado!")
- Else
- Alert("no se pudo procesar el archivo xml")
- End If
- End Sub
+ CargaDatos()
+ Else
+ ObjCompra.RollBack()
+ Alert("Ocurrió un error al vincular el pago. Por favor verifique y vuelva a intentar", TipoMensaje.MsgError)
+ End If
+ ObjCompra.Dispose()
+
+
+ End Sub
+
+ Protected Sub ChkVincularPago_CheckedChanged(sender As Object, e As EventArgs)
+
+ For Each Gvr As GridViewRow In GvVincularPago.Rows
+ Gvr.FCCheckBox("ChkVincularPago").Checked = False
+ Next
+
+ CType(sender, CheckBox).Checked = True
+ End Sub
+
+ Protected Sub BtnVincularManualmente_Click(sender As Object, e As EventArgs)
+ If HdnCveIE.Value <> "-1" AndAlso IsNumeric(HdnCveIE.Value) AndAlso HdnCveIE.Value.ToEntero > 0 Then
+ Dim ImportePago As Double = 0
+ Dim ImporteIES As Double = 0
+ Dim SerieFolioIE As String = ""
+ Dim ObjCompras As New ClsCompras
+ If ObjCompras.GetCompararComplementoPago(CveProveedor, -1, "", UsuarioActual.CveEmpresa, HdnCveIE.Value.ToEntero) Then
+ GvVincularPago.DataSource = ObjCompras.DtResultados
+ If ObjCompras.DtResultados.Rows.Count > 0 Then
+ SerieFolioIE = ObjCompras.DtResultados.Rows(0)("SerieFolio").ToString
+ End If
+ ImportePago = ObjCompras.DtResultados.SUMD("Monto")
+ End If
+
+ ImporteIES = ObjCompras.DtResultados.FiltraParametros("CveIE > 0").SUM("Importe")
+ ObjCompras.Dispose()
+
+ BtnVincularPago.Visible = True
+
+ LblSerieFolioPago.Text = $"{SeriePago}-{FolioPago}"
+ LblImportePago.Text = ImportePago.FormatoNumero
+ 'LblSerieFolioIE.Text = SerieFolioIE
+ LblImporteIE.Text = ImporteIES.FormatoNumero
+
+ GvVincularPago.DataBind()
+ UpVincularPago.Update()
+ ObjCompras.Dispose()
+ End If
+ End Sub
+
+ Private Sub GVPDocumentosRelacionadosPagos_RowCreated(sender As Object, e As GridViewRowEventArgs) Handles GVPDocumentosRelacionadosPagos.RowCreated
+
+ If e.Row.RowType = DataControlRowType.Header Then
+ Dim HeaderGrid = DirectCast(sender, GridView)
+ Dim HeaderGridRow = New GridViewRow(0, 0, DataControlRowType.Header, DataControlRowState.Insert)
+ Dim HeaderCell = New TableCell
+
+ HeaderCell.Text = "Documentos Relacionados"
+ HeaderCell.ColumnSpan = 8
+ HeaderCell.Attributes.Add("style", "border-top: 1px solid #ddd; vertical-align: top; background-color: #DDD; color: #333333;font-family: 'Open Sans', sans-serif;font-size: 12px; text-align:center!important; font-weight: bold;")
+ HeaderGridRow.Cells.Add(HeaderCell)
+ GVPDocumentosRelacionadosPagos.Controls(0).Controls.AddAt(0, HeaderGridRow)
+
+ End If
+
+ End Sub
+
+ Private Sub GVPDocumentosRelacionadosPagos_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles GVPDocumentosRelacionadosPagos.RowDataBound
+
+ If e.Row.RowType = DataControlRowType.DataRow Then
+
+ If e.Row.DataKey("CveFactura").ToEntero > 0 Then
+
+ If e.Row.DataKey("CveCompra").ToEntero > 0 Then
+ e.Row.Cells(4).Text = ""
+ e.Row.ToolTip = "Compra registrada"
+ e.Row.Cells(4).ForeColor = Drawing.Color.Green
+
+ Else
+ e.Row.Cells(4).Text = ""
+ e.Row.ToolTip = "Factura recibida sin registrar"
+ End If
+
+
+ Else
+ e.Row.Cells(4).Text = ""
+ e.Row.ToolTip = "No se encontro el Folio Fiscal en el sistema"
+ e.Row.Cells(4).ForeColor = Drawing.Color.Red
+ End If
+ End If
+
+ End Sub
+
+
+#End Region
+
+
+
+ Public Sub ImprimirPDFXML(NombreArchivo As String, rutaxml As String)
+ Dim objxml As XmlSatCFDI = XmlSatCFDI.readXML(rutaxml)
+
+ Dim rutaReporte As String = String.Format("{0}{1}", AppDomain.CurrentDomain.BaseDirectory, "\Empresas\Grales\Formatos\CFDIV3.rdlc")
+ Dim QR As ClbNegBICFDv3_2.ClsNegCBBGenerar = New ClbNegBICFDv3_2.ClsNegCBBGenerar()
+ Dim cQr As Byte() = QR.GenerarCBBBytes(objxml.emisor.Rfc, objxml.receptor.Rfc, objxml.comprobante.Total, objxml.complemento.UUID)
+ Dim parametros As List(Of ReportParameter) = New List(Of ReportParameter)()
+ parametros.Add(New ReportParameter("comprobante_Certificado", objxml.comprobante.Certificado))
+ parametros.Add(New ReportParameter("comprobante_CondicionesDePago", objxml.comprobante.CondicionesDePago))
+ parametros.Add(New ReportParameter("comprobante_Confirmacion", objxml.comprobante.Confirmacion))
+ parametros.Add(New ReportParameter("comprobante_Fecha", objxml.comprobante.Fecha))
+ parametros.Add(New ReportParameter("comprobante_Serie", objxml.comprobante.Serie))
+ parametros.Add(New ReportParameter("comprobante_Folio", objxml.comprobante.Folio))
+ parametros.Add(New ReportParameter("comprobante_Descuento", objxml.comprobante.Descuento.ToString("N2")))
+ parametros.Add(New ReportParameter("comprobante_SubTotal", objxml.comprobante.SubTotal.ToString("N2")))
+ parametros.Add(New ReportParameter("comprobante_Total", objxml.comprobante.Total.ToString("N2")))
+ parametros.Add(New ReportParameter("comprobante_Version", objxml.comprobante.Version))
+ parametros.Add(New ReportParameter("comprobante_TipoDeComprobante", objxml.comprobante.TipoDeComprobanteTexto))
+ parametros.Add(New ReportParameter("comprobante_FormaPago", objxml.comprobante.FormaPagoTexto))
+ parametros.Add(New ReportParameter("comprobante_LugarExpedicion", objxml.comprobante.LugarExpedicion))
+ parametros.Add(New ReportParameter("comprobante_NoCertificado", objxml.comprobante.NoCertificado))
+ parametros.Add(New ReportParameter("comprobante_Sello", objxml.comprobante.Sello))
+ parametros.Add(New ReportParameter("comprobante_Moneda", objxml.comprobante.Moneda))
+ parametros.Add(New ReportParameter("comprobante_TipoCambio", objxml.comprobante.TipoCambio.ToString("N2")))
+ parametros.Add(New ReportParameter("comprobante_MetodoPago", objxml.comprobante.MetodoPagoTexto))
+ parametros.Add(New ReportParameter("emisor_Rfc", objxml.emisor.Rfc))
+ parametros.Add(New ReportParameter("emisor_Nombre", objxml.emisor.Nombre))
+ parametros.Add(New ReportParameter("emisor_RegimenFiscal", objxml.emisor.RegimenFiscalTexto))
+ parametros.Add(New ReportParameter("receptor_Rfc", objxml.receptor.Rfc))
+ parametros.Add(New ReportParameter("receptor_Nombre", objxml.receptor.Nombre))
+ parametros.Add(New ReportParameter("receptor_NumRegIdTrib", objxml.receptor.NumRegIdTrib))
+ parametros.Add(New ReportParameter("receptor_ResidenciaFiscal", objxml.receptor.ResidenciaFiscal))
+ parametros.Add(New ReportParameter("receptor_UsoCFDI", objxml.receptor.UsoCFDITexto))
+ parametros.Add(New ReportParameter("complemento_FechaTimbrado", objxml.complemento.FechaTimbrado))
+ parametros.Add(New ReportParameter("complemento_NoCertificadoSAT", objxml.complemento.NoCertificadoSAT))
+ parametros.Add(New ReportParameter("complemento_RfcProvCertif", objxml.complemento.RfcProvCertif))
+ parametros.Add(New ReportParameter("complemento_SelloCFD", objxml.complemento.SelloCFD))
+ parametros.Add(New ReportParameter("complemento_SelloSAT", objxml.complemento.SelloSAT))
+ parametros.Add(New ReportParameter("complemento_UUID", objxml.complemento.UUID))
+ parametros.Add(New ReportParameter("complemento_CadenaOriginal", objxml.complemento.CadenaOriginal))
+
+ Using MR As ReportViewer = New ReportViewer()
+ Dim rdsTotales As ReportDataSource = New ReportDataSource()
+ Dim ltotales As List(Of utilValores) = New List(Of utilValores)()
+ ltotales.Add(New utilValores("Subtotal", objxml.comprobante.SubTotal.ToString("N2")))
+
+ If objxml.comprobante.Descuento > 0 Then
+ ltotales.Add(New utilValores("Descuento", objxml.comprobante.Descuento.ToString("N2")))
+ End If
+
+ For Each item As CFDIImpuesto In objxml.Impuestos
+
+ If item.Importe > 0 Then
+ Dim TasaOCuota As Decimal = 0
+ Decimal.TryParse(item.TasaOCuota, TasaOCuota)
+ ltotales.Add(New utilValores($"Impuestos {item.Tipo} {item.ImpuestoTexto} {(If(item.TipoFactor = "Tasa", (TasaOCuota * 100).ToString("N4"), item.TasaOCuota))} {(If(item.TipoFactor = "Tasa", "%", ""))}", item.Importe.ToString("N2")))
+ End If
+ Next
+
+ ltotales.Add(New utilValores("Total", objxml.comprobante.Total.ToString("N2")))
+ rdsTotales.Name = "dsTotales"
+ rdsTotales.Value = ltotales
+ MR.LocalReport.DataSources.Add(rdsTotales)
+ Dim rds2 As ReportDataSource = New ReportDataSource()
+ Dim limagenes As List(Of utilImage) = New List(Of utilImage)()
+ limagenes.Add(New utilImage(cQr))
+ rds2.Name = "dsImagenes"
+ rds2.Value = limagenes
+ MR.LocalReport.DataSources.Add(rds2)
+ Dim rdsrelacionados As ReportDataSource = New ReportDataSource()
+ rdsrelacionados.Name = "dsRelacionados"
+ rdsrelacionados.Value = objxml.cFDIRelacionados
+ MR.LocalReport.DataSources.Add(rdsrelacionados)
+ Dim rds1 As ReportDataSource = New ReportDataSource()
+ rds1.Name = "dsConceptos"
+ rds1.Value = objxml.GetConceptosforpdf()
+ MR.LocalReport.DataSources.Add(rds1)
+ MR.LocalReport.ReportPath = rutaReporte
+ MR.ProcessingMode = ProcessingMode.Local
+ MR.LocalReport.EnableExternalImages = True
+ MR.LocalReport.SetParameters(parametros)
+ MR.LocalReport.Refresh()
+ Dim warnings As Warning() = Nothing
+ Dim streamids As String() = Nothing
+ Dim mimeType As String = Nothing
+ Dim encoding As String = Nothing
+ Dim extension As String = Nothing
+ Dim bytes As Byte() = Nothing
+ bytes = MR.LocalReport.Render("PDF", Nothing, mimeType, encoding, extension, streamids, warnings)
+
+ Using fs As FileStream = New FileStream(NombreArchivo, FileMode.Create)
+ fs.Write(bytes, 0, bytes.Length)
+ fs.Close()
+ End Using
+ End Using
+ End Sub
+ Protected Sub lnkRegenerarPDF_Click(sender As Object, e As EventArgs)
+ Dim gvrow As GridViewRow = DirectCast(DirectCast(sender, LinkButton).NamingContainer, GridViewRow)
+ Dim strRFCde As String = gvrow.DataKey("RFCde")
+ Dim strXml As String
+ Dim strPDF As String
+ Dim dirbase As String = String.Format("{0}{1}{2}{3}{4}\", AppDomain.CurrentDomain.BaseDirectory, "\Empresas\", UsuarioActual.CveEmpresa, "\Compras\", strRFCde)
+ If Directory.Exists(dirbase) Then
+ strXml = String.Format("{0}{1}", dirbase, gvrow.DataKey("XML"))
+ strPDF = String.Format("{0}{1}", dirbase, gvrow.DataKey("PDF"))
+ If File.Exists(strXml) Then
+ ImprimirPDFXML(strPDF, strXml)
+ Alert("el pdf se regenero satisfactoriamente.")
+ Else
+ Alert($"No se encontro el xml favor de contactar a soporte tecnico{strXml.Replace("\", "/")}")
+ End If
+ Else
+ Alert($"No se encontro el xml favor de contactar a soporte tecnico{dirbase.Replace("\", "/")}")
+ End If
+ ',PDF
+ '
+ 'ImprimirPDFXML("C:\Generar PFX\405504.pdf", "C:\Generar PFX\405504.xml")
+ End Sub
+ Private Sub removeasincevent()
+
+ 'For Each GvRow As GridViewRow In GvD.Rows
+ ' Dim lnkDownPdf As LinkButton = GvRow.FCLinkButton("lnkDownPdf")
+ ' Dim lnkXML As LinkButton = GvRow.FCLinkButton("lnkXML")
+ ' If lnkDownPdf.Visible Then
+
+ ' ScriptManager.GetCurrent(Me).RegisterPostBackControl(lnkDownPdf)
+ ' End If
+ ' If lnkXML.Visible Then
+ ' ScriptManager.GetCurrent(Me).RegisterPostBackControl(lnkXML)
+ ' End If
+ 'Next
+ End Sub
+ Protected Sub lnkDownPdf_Click(sender As Object, e As EventArgs)
+ Dim gvrow As GridViewRow = DirectCast(DirectCast(sender, LinkButton).NamingContainer, GridViewRow)
+ Dim strRFCde As String = gvrow.DataKey("RFCde")
+ Dim strPDF As String
+ Dim dirbase As String = String.Format("{0}{1}{2}{3}{4}\", AppDomain.CurrentDomain.BaseDirectory, "\Empresas\", UsuarioActual.CveEmpresa, "\Compras\", strRFCde)
+ strPDF = String.Format("{0}{1}", dirbase, gvrow.DataKey("PDF"))
+ If File.Exists(strPDF) Then
+ Dim file As New System.IO.FileInfo(strPDF)
+ Dim mimeType As String = "text/plain"
+ Try
+ mimeType = MimeMapping.GetMimeMapping(strPDF)
+ Catch ex As Exception
+ End Try
+ Response.Clear()
+ Response.ClearHeaders()
+ Response.ClearContent()
+ Response.AddHeader("Content-Disposition", $"attachment; filename= {Uri.EscapeDataString(file.Name)}")
+ Response.AddHeader("Content-Length", file.Length.ToString())
+ Response.ContentType = mimeType
+ Response.Flush()
+ Response.TransmitFile(file.FullName)
+ Response.End()
+ End If
+ End Sub
+ Protected Sub lnkXML_Click(sender As Object, e As EventArgs)
+ Dim gvrow As GridViewRow = DirectCast(DirectCast(sender, LinkButton).NamingContainer, GridViewRow)
+ Dim strRFCde As String = gvrow.DataKey("RFCde")
+ Dim strXml As String
+ Dim dirbase As String = String.Format("{0}{1}{2}{3}{4}\", AppDomain.CurrentDomain.BaseDirectory, "\Empresas\", UsuarioActual.CveEmpresa, "\Compras\", strRFCde)
+ strXml = String.Format("{0}{1}", dirbase, gvrow.DataKey("XML"))
+ If File.Exists(strXml) Then
+ Dim file As New System.IO.FileInfo(strXml)
+ Dim mimeType As String = "text/plain"
+ Try
+ mimeType = MimeMapping.GetMimeMapping(strXml)
+ Catch ex As Exception
+ End Try
+ Response.Clear()
+ Response.ClearHeaders()
+ Response.ClearContent()
+ Response.AddHeader("Content-Disposition", $"attachment; filename= {Uri.EscapeDataString(file.Name)}")
+ Response.AddHeader("Content-Length", file.Length.ToString())
+ Response.ContentType = mimeType
+ Response.Flush()
+ Response.TransmitFile(file.FullName)
+ Response.End()
+ End If
+ End Sub
+ Protected Sub LnkRegenerarPdfnew_Click(sender As Object, e As EventArgs)
+ Dim gvrow As GridViewRow = DirectCast(DirectCast(sender, LinkButton).NamingContainer, GridViewRow)
+ Dim objxml As XmlSatCFDI = XmlSatCFDI.readXML(String.Format("{0}{1}\{2}", Destino, gvrow.DataKey("RFCDe"), gvrow.DataKey("XML")))
+ If Not IsNothing(objxml) Then
+ Dim rutaReporte As String = String.Format("{0}{1}", AppDomain.CurrentDomain.BaseDirectory, "\Empresas\Grales\Formatos\CFDIV3.rdlc")
+ If Not IsNothing(objxml.complemento.Pagos) Then
+ rutaReporte = String.Format("{0}{1}", AppDomain.CurrentDomain.BaseDirectory, "\Empresas\Grales\Formatos\CFDIV3Pago.rdlc")
+ End If
+ Dim NombreArchivo As String = String.Format("{0}{1}\{2}", Destino, gvrow.DataKey("RFCDe"), gvrow.DataKey("PDF"))
+
+
+ Dim QR As ClbNegBICFDv3_2.ClsNegCBBGenerar = New ClbNegBICFDv3_2.ClsNegCBBGenerar()
+ Dim cQr As Byte() = QR.GenerarCBBBytes(objxml.emisor.Rfc, objxml.receptor.Rfc, If(IsNothing(objxml.complemento.Pagos), objxml.comprobante.Total, objxml.complemento.Pagos.Monto), objxml.complemento.UUID)
+ Dim parametros As List(Of ReportParameter) = New List(Of ReportParameter)()
+ parametros.Add(New ReportParameter("comprobante_Certificado", objxml.comprobante.Certificado))
+ parametros.Add(New ReportParameter("comprobante_CondicionesDePago", objxml.comprobante.CondicionesDePago))
+ parametros.Add(New ReportParameter("comprobante_Confirmacion", objxml.comprobante.Confirmacion))
+ parametros.Add(New ReportParameter("comprobante_Fecha", objxml.comprobante.Fecha))
+ parametros.Add(New ReportParameter("comprobante_Serie", objxml.comprobante.Serie))
+ parametros.Add(New ReportParameter("comprobante_Folio", objxml.comprobante.Folio))
+ parametros.Add(New ReportParameter("comprobante_Descuento", objxml.comprobante.Descuento.ToString("N2")))
+ parametros.Add(New ReportParameter("comprobante_SubTotal", objxml.comprobante.SubTotal.ToString("N2")))
+ parametros.Add(New ReportParameter("comprobante_Total", objxml.comprobante.Total.ToString("N2")))
+ parametros.Add(New ReportParameter("comprobante_Version", objxml.comprobante.Version))
+ parametros.Add(New ReportParameter("comprobante_TipoDeComprobante", objxml.comprobante.TipoDeComprobanteTexto))
+ parametros.Add(New ReportParameter("comprobante_FormaPago", objxml.comprobante.FormaPagoTexto))
+ parametros.Add(New ReportParameter("comprobante_LugarExpedicion", objxml.comprobante.LugarExpedicion))
+ parametros.Add(New ReportParameter("comprobante_NoCertificado", objxml.comprobante.NoCertificado))
+ parametros.Add(New ReportParameter("comprobante_Sello", objxml.comprobante.Sello))
+ parametros.Add(New ReportParameter("comprobante_Moneda", objxml.comprobante.Moneda))
+ parametros.Add(New ReportParameter("comprobante_TipoCambio", objxml.comprobante.TipoCambio.ToString("N2")))
+ parametros.Add(New ReportParameter("comprobante_MetodoPago", objxml.comprobante.MetodoPagoTexto))
+ parametros.Add(New ReportParameter("emisor_Rfc", objxml.emisor.Rfc))
+ parametros.Add(New ReportParameter("emisor_Nombre", objxml.emisor.Nombre))
+ parametros.Add(New ReportParameter("emisor_RegimenFiscal", objxml.emisor.RegimenFiscalTexto))
+ parametros.Add(New ReportParameter("receptor_Rfc", objxml.receptor.Rfc))
+ parametros.Add(New ReportParameter("receptor_Nombre", objxml.receptor.Nombre))
+ parametros.Add(New ReportParameter("receptor_NumRegIdTrib", objxml.receptor.NumRegIdTrib))
+ parametros.Add(New ReportParameter("receptor_ResidenciaFiscal", objxml.receptor.ResidenciaFiscal))
+ parametros.Add(New ReportParameter("receptor_UsoCFDI", objxml.receptor.UsoCFDITexto))
+ parametros.Add(New ReportParameter("complemento_FechaTimbrado", objxml.complemento.FechaTimbrado))
+ parametros.Add(New ReportParameter("complemento_NoCertificadoSAT", objxml.complemento.NoCertificadoSAT))
+ parametros.Add(New ReportParameter("complemento_RfcProvCertif", objxml.complemento.RfcProvCertif))
+ parametros.Add(New ReportParameter("complemento_SelloCFD", objxml.complemento.SelloCFD))
+ parametros.Add(New ReportParameter("complemento_SelloSAT", objxml.complemento.SelloSAT))
+ parametros.Add(New ReportParameter("complemento_UUID", objxml.complemento.UUID))
+ parametros.Add(New ReportParameter("complemento_CadenaOriginal", objxml.complemento.CadenaOriginal))
+ If Not IsNothing(objxml.complemento.Pagos) Then
+ parametros.Add(New ReportParameter("CPFechaPago", objxml.complemento.Pagos.FechaPago))
+ parametros.Add(New ReportParameter("CPFormaDePagoP", objxml.complemento.Pagos.FormaDePagoP))
+ parametros.Add(New ReportParameter("CPFormaDePagoPText", objxml.complemento.Pagos.FormaDePagoPText))
+ parametros.Add(New ReportParameter("CPMonedaP", objxml.complemento.Pagos.MonedaP))
+ parametros.Add(New ReportParameter("CPMonto", objxml.complemento.Pagos.Monto.ToString()))
+ parametros.Add(New ReportParameter("CPTipoCambioP", objxml.complemento.Pagos.TipoCambioP.ToString()))
+ parametros.Add(New ReportParameter("CPNumOperacion", objxml.complemento.Pagos.NumOperacion))
+ parametros.Add(New ReportParameter("CPNomBancoOrdExt", objxml.complemento.Pagos.NomBancoOrdExt))
+ parametros.Add(New ReportParameter("CPRfcEmisorCtaOrd", objxml.complemento.Pagos.RfcEmisorCtaOrd))
+ parametros.Add(New ReportParameter("CPCtaOrdenante", objxml.complemento.Pagos.CtaOrdenante))
+ parametros.Add(New ReportParameter("CPRfcEmisorCtaBen", objxml.complemento.Pagos.RfcEmisorCtaBen))
+ parametros.Add(New ReportParameter("CPCtaBeneficiario", objxml.complemento.Pagos.CtaBeneficiario))
+
+ End If
+ Using MR As ReportViewer = New ReportViewer()
+ Dim rdsTotales As ReportDataSource = New ReportDataSource()
+ Dim ltotales As List(Of utilValores) = New List(Of utilValores)()
+ ltotales.Add(New utilValores("Subtotal", objxml.comprobante.SubTotal.ToString("N2")))
+
+ If objxml.comprobante.Descuento > 0 Then
+ ltotales.Add(New utilValores("Descuento", objxml.comprobante.Descuento.ToString("N2")))
+ End If
+
+ For Each item As CFDIImpuesto In objxml.Impuestos
+
+ If item.Importe > 0 Then
+ Dim TasaOCuota As Decimal = 0
+ Decimal.TryParse(item.TasaOCuota, TasaOCuota)
+ ltotales.Add(New utilValores($"Impuestos {item.Tipo} {item.ImpuestoTexto} {(If(item.TipoFactor = "Tasa", (TasaOCuota * 100).ToString("N4"), item.TasaOCuota))} {(If(item.TipoFactor = "Tasa", "%", ""))}", item.Importe.ToString("N2")))
+ End If
+ Next
+
+ ltotales.Add(New utilValores("Total", objxml.comprobante.Total.ToString("N2")))
+ rdsTotales.Name = "dsTotales"
+ rdsTotales.Value = ltotales
+ MR.LocalReport.DataSources.Add(rdsTotales)
+ Dim rds2 As ReportDataSource = New ReportDataSource()
+ Dim limagenes As List(Of utilImage) = New List(Of utilImage)()
+ limagenes.Add(New utilImage(cQr))
+ rds2.Name = "dsImagenes"
+ rds2.Value = limagenes
+ MR.LocalReport.DataSources.Add(rds2)
+ Dim rdsrelacionados As ReportDataSource = New ReportDataSource()
+ rdsrelacionados.Name = "dsRelacionados"
+ rdsrelacionados.Value = objxml.cFDIRelacionados
+ MR.LocalReport.DataSources.Add(rdsrelacionados)
+ Dim rds1 As ReportDataSource = New ReportDataSource()
+ rds1.Name = "dsConceptos"
+ rds1.Value = objxml.GetConceptosforpdf()
+ MR.LocalReport.DataSources.Add(rds1)
+
+ If Not IsNothing(objxml.complemento.Pagos) Then
+
+ Dim rdsp As ReportDataSource = New ReportDataSource()
+ rdsp.Name = "dsPagos"
+ rdsp.Value = objxml.complemento.Pagos.doctosRelacionados
+ MR.LocalReport.DataSources.Add(rdsp)
+ End If
+
+ MR.LocalReport.ReportPath = rutaReporte
+ MR.ProcessingMode = ProcessingMode.Local
+ MR.LocalReport.EnableExternalImages = True
+ MR.LocalReport.SetParameters(parametros)
+ MR.LocalReport.Refresh()
+ Dim warnings As Warning() = Nothing
+ Dim streamids As String() = Nothing
+ Dim mimeType As String = Nothing
+ Dim encoding As String = Nothing
+ Dim extension As String = Nothing
+ Dim bytes As Byte() = Nothing
+ bytes = MR.LocalReport.Render("PDF", Nothing, mimeType, encoding, extension, streamids, warnings)
+
+ Using fs As FileStream = New FileStream(NombreArchivo, FileMode.Create)
+ fs.Write(bytes, 0, bytes.Length)
+ fs.Close()
+ End Using
+ End Using
+ Alert("PDF Generado!")
+ Else
+ Alert("no se pudo procesar el archivo xml")
+ End If
+ End Sub
End Class
\ No newline at end of file