diff --git a/App_Code/ClsCompras.vb b/App_Code/ClsCompras.vb
index e70d402ef..211711478 100644
--- a/App_Code/ClsCompras.vb
+++ b/App_Code/ClsCompras.vb
@@ -4,6 +4,7 @@ Option Strict On
Imports System.Data
Imports System.Data.SqlClient
Imports Extensiones
+Imports iText.StyledXmlParser.Css.Resolve.Shorthand.Impl
Public Class ClsCompras
Implements IDisposable
@@ -3115,6 +3116,29 @@ Public Class ClsCompras
Return Retorno
End Function
+
+ Public Function GetComprobacionPagosContabilizados(CvePersonal As Integer, CveCajaChica As Integer, NumeroReembolso As String, CveEmpresa As Integer) As Boolean
+ Dim Retorno As Boolean = False
+ DataAdapter("PA_Comp_ComprobacionPagosContabilizadosGet")
+
+ With SqlAdapter.SelectCommand.Parameters
+ .Add("@CvePersonal", SqlDbType.Int).Value = CvePersonal
+ .Add("@CveCajaChica", SqlDbType.Int).Value = CveCajaChica
+ .Add("@NumeroReembolso", SqlDbType.VarChar).Value = NumeroReembolso
+ .Add("@CveEmpresa", SqlDbType.Int).Value = CveEmpresa
+ .Add("@CveComprobacion", SqlDbType.Int).Direction = ParameterDirection.Output
+ End With
+
+ Try
+ SqlAdapter.Fill(Data)
+ Retorno = True
+ Catch ex As Exception
+ OnError("Ocurrió un error al consultar los pagos.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo)
+ End Try
+
+ Return Retorno
+ End Function
+
Public Function GetRepComprasInventarios(FechaIC As Date, FechaFC As Date, FechaI As Date, FechaF As Date, CveEmpresa As Integer, CveSubProyecto As Integer, CveProveedor As Integer) As Boolean
Dim Retorno As Boolean = False
DataAdapter("PA_Comp_InventariosRepGet")
diff --git a/App_Code/ClsContabilidad.vb b/App_Code/ClsContabilidad.vb
index 3e40a0e45..d49198115 100644
--- a/App_Code/ClsContabilidad.vb
+++ b/App_Code/ClsContabilidad.vb
@@ -865,6 +865,37 @@ Public Class ClsContabilidad
End Function
+ Public Function PrePolizaCompraCambiaReembolso(CvePrePoliza As Integer, CvePrePolizaVieja As Integer, CveCompra As Integer, CveEmpresa As Integer, Opcion As Integer) As Boolean
+ Dim Retorno As Boolean = False
+
+ SeUnifico = False
+ YaEstabaUnifida = False
+ EstaContabilizada = False
+
+ DataAdapter("PA_Conta_PrePolizaCompraCambiaReembolso")
+
+ With SqlAdapter.SelectCommand.Parameters
+ .Add("@CvePrePoliza", SqlDbType.Int).Value = CvePrePoliza
+ .Add("@CvePrePolizaVieja", SqlDbType.Int).Value = CvePrePolizaVieja
+ .Add("@CveCompra", SqlDbType.Int).Value = CveCompra
+ .Add("@CveEmpresa", SqlDbType.Int).Value = CveEmpresa
+ .Add("@Opcion", SqlDbType.Int).Value = Opcion
+ End With
+
+ Try
+
+ SqlAdapter.Fill(Data)
+ Retorno = True
+ Catch ex1 As SqlException
+ OnError("Ocurrió un error al actualizar prepolizas", ex1, SqlAdapter.SelectCommand.Parameters.ParametrosInfo)
+ Catch ex As Exception
+ OnError("Ocurrió un error al actualizar prepolizas", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo)
+ End Try
+
+ Return Retorno
+
+ End Function
+
Public Function PrePolizaSimplificacion(CvePrePoliza As Integer, CveEmpresa As Integer) As Boolean
Dim Retorno As Boolean = False
DataAdapter("PA_Conta_PrePolizasSimplificacion")
@@ -878,9 +909,9 @@ Public Class ClsContabilidad
SqlAdapter.Fill(Data)
Retorno = True
Catch ex1 As SqlException
- OnError("Ocurrió un error al simplificar prepolizas", ex1, SqlAdapter.SelectCommand.Parameters.ParametrosInfo)
+ OnError("Ocurrió un error al actualizar prepolizas", ex1, SqlAdapter.SelectCommand.Parameters.ParametrosInfo)
Catch ex As Exception
- OnError("Ocurrió un error al simplificar prepolizas", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo)
+ OnError("Ocurrió un error al actualizar prepolizas", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo)
End Try
Return Retorno
diff --git a/App_Code/ClsPaginas.vb b/App_Code/ClsPaginas.vb
index 578f763ff..d72277ae2 100644
--- a/App_Code/ClsPaginas.vb
+++ b/App_Code/ClsPaginas.vb
@@ -173,9 +173,13 @@ Public Class ClsPaginas
Dim tHora As Integer = 0
'If UsuarioActual IsNot Nothing AndAlso UsuarioActual.Empresa IsNot Nothing Then tHora = UsuarioActual.Empresa.UTCOffset
Try
- If HttpContext.Current.Session IsNot Nothing AndAlso HttpContext.Current.Session("UsuarioSIG") IsNot Nothing AndAlso CType(HttpContext.Current.Session("UsuarioSIG"), Usuario).Empresa IsNot Nothing Then tHora = CType(HttpContext.Current.Session("UsuarioSIG"), Usuario).Empresa.UTCOffset
+ If HttpContext.Current IsNot Nothing Then
+ If HttpContext.Current.Session IsNot Nothing AndAlso HttpContext.Current.Session("UsuarioSIG") IsNot Nothing AndAlso CType(HttpContext.Current.Session("UsuarioSIG"), Usuario).Empresa IsNot Nothing Then
+ tHora = CType(HttpContext.Current.Session("UsuarioSIG"), Usuario).Empresa.UTCOffset
+ End If
+ End If
Catch ex As Exception
-
+ tHora = 0
End Try
Return If(tHora <> 0, Now.ToUniversalTime.AddMinutes(tHora), Now)
diff --git a/App_Code/modExtensiones.vb b/App_Code/modExtensiones.vb
index f9233fa4d..dc36ee5f2 100644
--- a/App_Code/modExtensiones.vb
+++ b/App_Code/modExtensiones.vb
@@ -331,7 +331,7 @@ Namespace Extensiones
Public Sub GuardaLogAD(Mensaje As String, Optional Archivo As String = "Log")
Dim ArchivoW As StreamWriter
- Dim MensajeFormato As String = String.Format("{0}{1}Log: {2} | Fecha:{3}", Chr(13), Chr(10), Mensaje, ClsPaginas.NowADS().ToString("dd/MM/yyyy HH:mm"))
+ Dim MensajeFormato As String = String.Format("{0}{1}Log: {2} | Fecha:{3}", Chr(13), Chr(10), Mensaje, DateTime.Now.ToString("dd/MM/yyyy HH:mm"))
Try
ArchivoW = New StreamWriter(String.Format("{0}\Log\{1}.txt", AppDomain.CurrentDomain.BaseDirectory, Archivo), True, System.Text.Encoding.UTF8)
diff --git a/Compras/Compras.aspx.vb b/Compras/Compras.aspx.vb
index 5b51e5a52..dd10e1160 100644
--- a/Compras/Compras.aspx.vb
+++ b/Compras/Compras.aspx.vb
@@ -13,6 +13,9 @@ Imports MoreLinq
Imports System.Data.SqlClient
Imports ClsPaginas
Imports System.Activities.Expressions
+Imports Microsoft.Data.Edm.Expressions
+Imports Telerik.Web.UI
+Imports DocumentFormat.OpenXml.Math
Partial Class Compras_Compras
Inherits ClsPaginas
@@ -3549,7 +3552,7 @@ Partial Class Compras_Compras
ViewState("CveProveedor") = ObjProveedor.CveProveedor
ViewState("CveTipoProveedor") = ObjProveedor.CveTipoProveedor
- RFCProveedor = ObjProveedor.RFC
+ RFCProveedor = ObjProveedor.RFC
If ObjProveedor.CveTipoProveedor = 2 Then
LblProveedor.Text = "Acreedor:"
Else
@@ -8693,10 +8696,6 @@ Partial Class Compras_Compras
Next
- 'If Not validaNumeroReembolso() Then
- ' Exit Sub
- 'End If
-
Dim ObjCompra As New ClsCompras
Dim ObjProveedores As New ClsCompProveedores(ObjCompra.IniciaTransacSQL())
Dim ObjInventario As New ClsInventarios(ObjCompra.IniciaTransacSQL)
@@ -9240,6 +9239,9 @@ Partial Class Compras_Compras
End If
+ If Retorno AndAlso Not validaNumeroReembolso(ObjCompra.IniciaTransacSQL()) Then
+ Retorno = False
+ End If
Catch ex As Exception
Alert("Ocurrió un error al actualizar la compra", TipoMensaje.MsgError)
@@ -9248,6 +9250,9 @@ Partial Class Compras_Compras
Finally
+
+
+
If Retorno Then
If ObjContabilidad.MensajePolizaDescuadre IsNot Nothing AndAlso ObjContabilidad.MensajePolizaDescuadre.ToString <> "" Then
Alert(ObjContabilidad.MensajePolizaDescuadre.ToString)
@@ -9290,12 +9295,109 @@ Partial Class Compras_Compras
End Sub
- Private Function validaNumeroReembolso() As Boolean
+ Private Function validaNumeroReembolso(transaccionSql As SqlTransaction) As Boolean
- If NumeroReembolsoOriginal <> TxtNumeroReembolso.Text Then
+
+ Dim objCompras As New ClsCompras(transaccionSql)
+ Dim objConta As New ClsContabilidad(transaccionSql)
+
+
+ Dim tienePagoContabilizado As Boolean = False
+ Dim ErrorProceso As Boolean = False
+
+ Dim CvePrePolizaReembolsoActual As Integer = CvePrePoliza
+ Dim CvePrePolizaReembolsoNuevo As Integer = -1
+
+ If TxtRembolsoNumero.Text.Trim.Length > 0 Then
+
+ Dim CvePersonalVal As Integer = -1
+ Dim CveCajaChicaVal As Integer = -1
+
+ If RblRembolso.SelectedValue.ToEntero = 1 Then
+ CvePersonalVal = DdlRembolsoPersonal.SelectedValue.ToEntero
+ Else
+ CveCajaChicaVal = DdlRembolsoCajaChica.SelectedValue.ToEntero
+ End If
+
+ If objCompras.GetComprobacion(CvePersonalVal, CveCajaChicaVal, TxtRembolsoNumero.Text.Trim, UsuarioActual.CveEmpresa) Then
+
+ If objCompras.DtResultados.Rows.Count > 0 Then
+ CvePrePolizaReembolsoNuevo = objCompras.DtResultados.Rows(0)("CvePrePoliza").ToString.ToEntero
+ Else
+
+ Dim tConcepto As String = If(DdlRembolsoPersonal.SelectedValue.ToEntero > 0, DdlRembolsoPersonal.SelectedItem.Text, DdlRembolsoCajaChica.SelectedItem.Text)
+
+ tConcepto = String.Format("{0}-{1}", tConcepto, TxtRembolsoNumero.Text.Trim)
+
+ CvePrePolizaReembolsoNuevo = objConta.AddPrePolizas("Compras Comproba", 1, 0, 0, 1, TxtFecha.Text.ToDate, tConcepto, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa)
+
+ If Not objCompras.AddComprobacion(DdlRembolsoPersonal.SelectedValue.ToEntero, DdlRembolsoCajaChica.SelectedValue.ToEntero, TxtRembolsoNumero.Text.Trim, CvePrePolizaReembolsoNuevo, UsuarioActual.CveEmpresa) > 0 Then
+ ErrorProceso = True
+ End If
+
+
+ End If
+ End If
+
+
+ If NumeroReembolsoOriginal = "" And TxtRembolsoNumero.Text.Trim.Length > 0 Then
+
+
+ If objCompras.GetComprobacionPagosContabilizados(CvePersonalVal, CveCajaChicaVal, TxtRembolsoNumero.Text.Trim, UsuarioActual.CveEmpresa) Then
+
+ If objCompras.DtResultados IsNot Nothing AndAlso objCompras.DtResultados.Rows.Count > 0 Then
+ tienePagoContabilizado = True
+ End If
+
+ If tienePagoContabilizado Then
+ Alert($"No se puede actualizar el número de reembolso {TxtRembolsoNumero.Text}, ya tiene pagos contabilizados.", TipoMensaje.MsgAdvertencia)
+ Return False
+ End If
+
+
+ If objConta.GetPrePoliza(CvePrePoliza, UsuarioActual.CveEmpresa) Then
+
+ Dim FolioPoliza As Integer = objConta.DtResultados.Rows(0)("FolioPoliza").ToString.ToEntero
+
+ If FolioPoliza > 0 Then
+ If Not objConta.ContabilizaDesContabilizaPrePoliza(CvePrePoliza, False, UsuarioActual.CveEmpresa) Then
+ ErrorProceso = True
+ End If
+ End If
+
+ End If
+
+
+ Else
+ ErrorProceso = True
+ End If
+
+
+
+ ElseIf NumeroReembolsoOriginal.Length > 0 And TxtRembolsoNumero.Text.Trim.Length > 0 Then
+ 'cambiar de prepoliza la compra actual, de la prepoliza actual a la nueva
+ If Not objConta.PrePolizaCompraCambiaReembolso(CvePrePolizaReembolsoNuevo, CvePrePoliza, CveCompra, UsuarioActual.CveEmpresa, 1) Then
+ ErrorProceso = True
+ End If
+ End If
+
+
+ Else
+
+ If NumeroReembolsoOriginal.Length > 0 And TxtRembolsoNumero.Text.Trim.Length = 0 Then
+ 'Actualizar PrePoliza Actual de Donde CveCompra = CveCompra poner CvePrePolizaOriginal
+ If Not objConta.PrePolizaCompraCambiaReembolso(-1, CvePrePoliza, CveCompra, UsuarioActual.CveEmpresa, 2) Then
+ ErrorProceso = True
+ End If
+ End If
End If
+
+
+
+ Return If(ErrorProceso, False, True)
+
End Function
Private Sub MandaCorreoActualizacionDetalle()
@@ -10785,7 +10887,7 @@ Partial Class Compras_Compras
If ChkConsignacion.Checked Then
End If
- UpINV.Update()
+ UpInv.Update()
End Sub
@@ -11611,6 +11713,8 @@ Partial Class Compras_Compras
#Region " AJUSTA IMPORTES "
Private Sub AjustaImporteUltimoConcepto(ImporteAjuste As Decimal, Optional EsCarga As Boolean = False)
+
+
If ImporteAjuste = 0 Then Exit Sub
Dim Amortizacion As Decimal = 0
@@ -17322,18 +17426,18 @@ Partial Class Compras_Compras
End If
End If
- Select Case Modalidad
- Case "A"
- If Math.Round(DdlIVA.SelectedValue.ToDouble - 1, 2) <> TmpDT.MAX("IVAPorcentaje").ToDouble And TmpDT.MAX("IVAPorcentaje").ToDouble <> 0 And Math.Round(DdlIVA.SelectedValue.ToDouble - 1, 2) <> 0 And TmpDT.Rows.Count > 0 Then
- Alert("No puede haber dos tipos de IVA en la compra.", TipoMensaje.MsgAdvertencia)
- Exit Sub
- End If
- Case "U"
- If Math.Round(DdlIVA.SelectedValue.ToDouble - 1, 2) <> TmpDT.FiltraParametros($"Consec <> {Index}").MAX("IVAPorcentaje").ToDouble And TmpDT.FiltraParametros($"Consec <> {Index}").MAX("IVAPorcentaje").ToDouble <> 0 And Math.Round(DdlIVA.SelectedValue.ToDouble - 1, 2) <> 0 And TmpDT.FiltraParametros($"Consec <> {Index}").Rows.Count > 0 Then
- Alert("No puede haber dos tipos de IVA en la compra.", TipoMensaje.MsgAdvertencia)
- Exit Sub
- End If
- End Select
+ 'Select Case Modalidad
+ ' Case "A"
+ ' If Math.Round(DdlIVA.SelectedValue.ToDouble - 1, 2) <> TmpDT.MAX("IVAPorcentaje").ToDouble And TmpDT.MAX("IVAPorcentaje").ToDouble <> 0 And Math.Round(DdlIVA.SelectedValue.ToDouble - 1, 2) <> 0 And TmpDT.Rows.Count > 0 Then
+ ' Alert("No puede haber dos tipos de IVA en la compra.", TipoMensaje.MsgAdvertencia)
+ ' Exit Sub
+ ' End If
+ ' Case "U"
+ ' If Math.Round(DdlIVA.SelectedValue.ToDouble - 1, 2) <> TmpDT.FiltraParametros($"Consec <> {Index}").MAX("IVAPorcentaje").ToDouble And TmpDT.FiltraParametros($"Consec <> {Index}").MAX("IVAPorcentaje").ToDouble <> 0 And Math.Round(DdlIVA.SelectedValue.ToDouble - 1, 2) <> 0 And TmpDT.FiltraParametros($"Consec <> {Index}").Rows.Count > 0 Then
+ ' Alert("No puede haber dos tipos de IVA en la compra.", TipoMensaje.MsgAdvertencia)
+ ' Exit Sub
+ ' End If
+ 'End Select
Dim Total As Decimal = (TxtCantidad.Text.ToDecimal * TxtPrecio.Text.ToDecimal) - TxtDescuentoModal.Text.ToDecimal
diff --git a/Compras/eFacturas.aspx b/Compras/eFacturas.aspx
index 34fdee2b6..fc05ef3e2 100644
--- a/Compras/eFacturas.aspx
+++ b/Compras/eFacturas.aspx
@@ -69,9 +69,9 @@
Solicitudes SAT
-
+ <%--
Bitácora Facturas
-
+ --%>
Vinculación Masiva Complementos
@@ -1360,7 +1360,7 @@
-
diff --git a/Compras/eFacturas.aspx.vb b/Compras/eFacturas.aspx.vb
index 3405f0e7e..f95f0a88a 100644
--- a/Compras/eFacturas.aspx.vb
+++ b/Compras/eFacturas.aspx.vb
@@ -27,6 +27,7 @@ Imports SharpCompress.Reader
Imports System.Drawing
Imports Microsoft.Owin.Security.Provider
Imports Telerik.Web.UI
+Imports Stimulsoft.Base.StiDbType
'Imports Telerik.Web.UI
@@ -785,7 +786,7 @@ Partial Class Compras_eFacturas
End If
CargaGvBitacora()
- CargaDatos()
+ CargaDatos(NowADS())
MostrarSolcitudesSAT()
If UsuarioActual.CveRol = 1 Then
@@ -810,10 +811,10 @@ Partial Class Compras_eFacturas
End Sub
Protected Sub BtnConsultar_Click(sender As Object, e As System.EventArgs) Handles BtnConsultar.Click
- CargaDatos()
+ CargaDatos(NowADS())
End Sub
- Private Sub CargaDatos()
+ Private Sub CargaDatos(NowEmpresa As DateTime)
DTTraslados = New DataTable
@@ -832,7 +833,7 @@ Partial Class Compras_eFacturas
FechaI = MinFecha
FechaF = MaxFecha
txtFechaI.Text = MinFecha.ToString
- txtFechaF.Text = NowADS().ToShortDateString
+ txtFechaF.Text = NowEmpresa.ToShortDateString
End If
Dim DtPagos As DataTable = Nothing
@@ -887,13 +888,13 @@ Partial Class Compras_eFacturas
End Sub
Protected Sub LnkExportar_Click(sender As Object, e As EventArgs) Handles LnkExportar.Click
- GenerarPDF("Excel")
+ GenerarPDF(NowADS(), "Excel")
End Sub
Protected Sub ImgRefresh_Click(sender As Object, e As EventArgs) Handles ImgRefresh.Click
If VerificaCorreo() Then
- CargaDatos()
+ CargaDatos(NowADS())
End If
End Sub
@@ -982,7 +983,7 @@ Partial Class Compras_eFacturas
End Sub
- Protected Sub LnkBitacotaFacturas_Click(sender As Object, e As EventArgs)
+ Protected Sub LnkBitacoraFacturas_Click(sender As Object, e As EventArgs)
RegistraScript("$('#ModalBitacoraEfacturas').modal()")
CargaDatosBitacora()
@@ -1137,11 +1138,11 @@ Partial Class Compras_eFacturas
ObjDatos.Dispose()
- CargaDatos()
+ CargaDatos(NowADS())
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()
+ CargaDatos(NowADS())
End Sub
@@ -1157,7 +1158,7 @@ Partial Class Compras_eFacturas
Protected Sub GvDatos_RowEditing(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewEditEventArgs) Handles GvD.RowEditing
GvD.EditIndex = e.NewEditIndex
- CargaDatos()
+ CargaDatos(NowADS())
End Sub
Protected Sub GvDatos_RowCommand(sender As Object, e As GridViewCommandEventArgs) Handles GvD.RowCommand
@@ -1187,7 +1188,7 @@ Partial Class Compras_eFacturas
ObjDatos.Dispose()
If Correcto Then
- CargaDatos()
+ CargaDatos(NowADS())
End If
End Sub
@@ -1300,15 +1301,15 @@ Partial Class Compras_eFacturas
GvPagos.EditIndex = -1
End If
ObjDatos.Dispose()
- CargaDatos()
+ CargaDatos(NowADS())
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()
+ CargaDatos(NowADS())
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()
+ CargaDatos(NowADS())
End Sub
Protected Sub imgDP_Click(sender As Object, e As EventArgs)
Dim gvRow As GridViewRow = DirectCast((DirectCast(sender, LinkButton)).NamingContainer, GridViewRow)
@@ -1347,7 +1348,7 @@ Partial Class Compras_eFacturas
ObjDatos.Dispose()
If Correcto Then
- CargaDatos()
+ CargaDatos(NowADS())
End If
End Sub
#End Region
@@ -1386,7 +1387,7 @@ Partial Class Compras_eFacturas
If Not ErrorTrans Then
Alert("La verificación masiva ha terminado", TipoMensaje.MsgInformacion)
- CargaDatos()
+ CargaDatos(NowADS())
End If
@@ -1432,11 +1433,11 @@ Partial Class Compras_eFacturas
DtNoRecibidas.Dispose()
- CargaDatos()
+ CargaDatos(NowADS())
End Sub
#Region "G E N E R A P D F "
- Private Sub GenerarPDF(Optional Tipo As String = "PDF")
+ Private Sub GenerarPDF(Fecha As DateTime, Optional Tipo As String = "PDF")
Dim ObjDatos As New ClsCompras
Dim FechaI As String = txtFechaI.Text
Dim FechaF As String = txtFechaF.Text
@@ -1470,7 +1471,7 @@ Partial Class Compras_eFacturas
params.Add(New ReportParameter("FechaInicio", FechaI))
params.Add(New ReportParameter("FechaFin", FechaF))
params.Add(New ReportParameter("UsuarioImprimio", UsuarioActual.Nombre))
- params.Add(New ReportParameter("FechaImpresion", NowADS().ToDateTime.ToShortDateString))
+ params.Add(New ReportParameter("FechaImpresion", Fecha.ToDateTime.ToShortDateString))
If Imagen.Exists Then
params.Add(New ReportParameter("LogoPath", $"file//:{Imagen.FullName}"))
@@ -1481,9 +1482,9 @@ Partial Class Compras_eFacturas
If Tab.ActiveTabIndex = 2 Then
- ImprimirPDF("Empresas/Grales/Formatos/RepFacturas.rdlc", DTTraslados, params, $"FacturasBuzon_{NowADS().ToString("yyyyMMyyddmmss")}", Tipo)
+ ImprimirPDF("Empresas/Grales/Formatos/RepFacturas.rdlc", DTTraslados, params, $"FacturasBuzon_{Fecha.ToString("yyyyMMyyddmmss")}", Tipo)
Else
- ImprimirPDF("Empresas/Grales/Formatos/RepFacturas.rdlc", dt, params, $"FacturasBuzon_{NowADS().ToString("yyyyMMyyddmmss")}", Tipo)
+ ImprimirPDF("Empresas/Grales/Formatos/RepFacturas.rdlc", dt, params, $"FacturasBuzon_{Fecha.ToString("yyyyMMyyddmmss")}", Tipo)
End If
@@ -1491,7 +1492,7 @@ Partial Class Compras_eFacturas
End Sub
Protected Sub LnkPdf_Click(sender As Object, e As EventArgs) Handles LnkPdf.Click
- GenerarPDF()
+ GenerarPDF(NowADS())
End Sub
#End Region
@@ -1556,7 +1557,7 @@ Partial Class Compras_eFacturas
End Sub
- Private Sub SubirFacturas(ByRef ListComprimidos As List(Of String), ByRef ListXML As List(Of String), ByRef ListPDF As List(Of String))
+ Private Sub SubirFacturas(ByRef ListComprimidos As List(Of String), ByRef ListXML As List(Of String), ByRef ListPDF As List(Of String), Optional Validada As Integer = 0)
Dim DTLOG As New DataTable
DTLOG.Columns.Add("Serie", GetType(String))
DTLOG.Columns.Add("Folio", GetType(String))
@@ -1638,35 +1639,6 @@ Partial Class Compras_eFacturas
Next
- 'Dim fileEntries As String() = Directory.GetFiles(String.Format("{0}Temp\Facturas", UsuarioActual.Empresa.Ruta))
-
- '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 As String 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
- ' ListXML.Add(filePath)
- ' End If
- 'Next
-
- 'Dim Arreglo As New ArrayList()
- 'Dim Bandera As Boolean = True
- 'Dim Retorno As String = ""
- '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()
@@ -1710,12 +1682,13 @@ Partial Class Compras_eFacturas
If File.Exists(filePathXML) Then
Dim a As New ComprobanteFactura(eFacturasLog)
- Dim FF As Factura = a.CargaComprobanteXML(File.ReadAllText(filePathXML), UsuarioActual.Empresa.Ruta, UsuarioActual.Empresa.RFC, UsuarioActual.CveEmpresa, True, rowLog, NombreArchivo:=fInfoXML.Name)
+ Dim FF As Factura = a.CargaComprobanteXML(File.ReadAllText(filePathXML), UsuarioActual.Empresa.Ruta, UsuarioActual.Empresa.RFC, UsuarioActual.CveEmpresa, True, rowLog, NombreArchivo:=fInfoXML.Name, Validada:=Validada)
If FF IsNot Nothing AndAlso FF.CveFactura > 0 Then
If RutaPDF = "" Then
- a.GeneraPDF(UsuarioActual.Empresa.Ruta, FF, UsuarioActual.Empresa.Ruta, True)
+ Dim Hilo As New System.Threading.Thread(Sub() ProcesarPDF(UsuarioActual, a, FF))
+ Hilo.Start()
Else
Dim PDfDestino As String = $"{UsuarioActual.Empresa.Ruta}\Compras\{FF.EmisorRFC}\{FF.CveFactura}.PDF"
If File.Exists(PDfDestino) Then
@@ -1736,40 +1709,6 @@ Partial Class Compras_eFacturas
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 " & NowADS().ToString("yyyyMMddhhmmss"), "Facturas", Archivos:=ListaArchivosMail) Then
-
- ' If Correo.SendMail(UsuarioActual.Empresa, UsuarioActual.Empresa.Buzon_Mail, "Facturas Efacturas " & NowADS().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()
-
- ' If VerificaCorreo(True) Then
- ' CargaDatos()
- ' End If
-
- ' 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)
@@ -1777,38 +1716,6 @@ Partial Class Compras_eFacturas
sw.Start()
- 'For Each filePath As String In ListXML
- ' Try
- ' File.Delete(filePath)
- ' Catch ex As Exception
- ' End Try
- 'Next
-
-
- 'For Each filePath As String In ListPDF
- ' 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
-
For Each s As String In ListXML
Try
File.Delete(s)
@@ -1829,74 +1736,6 @@ Partial Class Compras_eFacturas
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", ModExtensiones.DirectorioBaseEmpresas, 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", ModExtensiones.DirectorioBaseEmpresas, 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
-
-
mesajeFaturasSubidas(DTLOG)
@@ -1905,6 +1744,10 @@ Partial Class Compras_eFacturas
'Alert(String.Format("Se cargaron {0} Facturas", Arreglo.Count), TipoMensaje.MsgInformacion)
End Sub
+ Private Sub ProcesarPDF(UsuarioActual As Usuario, a As ComprobanteFactura, FF As Factura)
+ a.GeneraPDF(UsuarioActual, UsuarioActual.Empresa.Ruta, FF, UsuarioActual.Empresa.Ruta, True)
+ End Sub
+
Private Sub mesajeFaturasSubidas(DTLOG As DataTable)
@@ -2430,7 +2273,7 @@ Partial Class Compras_eFacturas
'_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
+ Public Function GeneraPDF(UsuarioActual As Usuario, 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
@@ -2709,33 +2552,30 @@ Partial Class Compras_eFacturas
Using nom As ClsNominas = New ClsNominas()
- 'PRUEBAS
- If UsuarioActual.CveRol = 1 AndAlso UsuarioActual.CveEmpresa = 119 Then
- If nom.SolicitudesGet(1589, UsuarioActual.CveEmpresa, CveTipoSolicitud:=2, Estatus:=-1, Top:=1) Then
- GVSolicitudesPendientes.DataSource = nom.DtResultados
+ If nom.SolicitudesGet(-1, UsuarioActual.CveEmpresa, CveTipoSolicitud:=2, Estatus:=0, Top:=50) Then
+ GVSolicitudesPendientes.DataSource = nom.DtResultados
- If nom.DtResultados.Rows.Count > 0 Then
- LnkverificarSolicitudes.Visible = True
- End If
-
- GVSolicitudesPendientes.DataBind()
+ If nom.DtResultados.Rows.Count > 0 Then
+ LnkverificarSolicitudes.Visible = True
End If
- Else
- If nom.SolicitudesGet(-1, UsuarioActual.CveEmpresa, CveTipoSolicitud:=2, Estatus:=0, Top:=50) Then
- GVSolicitudesPendientes.DataSource = nom.DtResultados
- If nom.DtResultados.Rows.Count > 0 Then
- LnkverificarSolicitudes.Visible = True
- End If
-
- GVSolicitudesPendientes.DataBind()
- End If
+ GVSolicitudesPendientes.DataBind()
End If
+ 'If nom.SolicitudesGet(1611, UsuarioActual.CveEmpresa, CveTipoSolicitud:=2, Estatus:=-1, Top:=50) Then
+ ' GVSolicitudesPendientes.DataSource = nom.DtResultados
- If nom.SolicitudesGet(-1, UsuarioActual.CveEmpresa, CveTipoSolicitud:=2, Estatus:=1, Top:=1) Then
- GVSolicitudesNominas.DataSource = nom.DtResultados
- GVSolicitudesNominas.DataBind()
+ ' If nom.DtResultados.Rows.Count > 0 Then
+ ' LnkverificarSolicitudes.Visible = True
+ ' End If
+
+ ' GVSolicitudesPendientes.DataBind()
+ 'End If
+
+
+ If nom.SolicitudesGet(-1, UsuarioActual.CveEmpresa, CveTipoSolicitud:=2, Estatus:=1, Top:=50) Then
+ GVSolicitudesHistorial.DataSource = nom.DtResultados
+ GVSolicitudesHistorial.DataBind()
End If
End Using
@@ -3009,6 +2849,8 @@ Partial Class Compras_eFacturas
Protected Sub LnkverificarSolicitudes_Click(ByVal sender As Object, ByVal e As EventArgs)
Try
Dim sbResultado As StringBuilder = New StringBuilder()
+ Dim sbArchivosFaltantes As New StringBuilder()
+
Dim TipoMensaje As ModExtensiones.TipoMensaje = ModExtensiones.TipoMensaje.MsgInformacion
Dim ListComprimidos As New List(Of String)
@@ -3028,7 +2870,7 @@ Partial Class Compras_eFacturas
Dim SeVerifico As Boolean = False
Dim ResultadoSolicitudOK As Boolean = False
- Dim api As New GeneralesAPIeFacturas()
+ Dim api As New GeneralesAPIeFacturas(If(EsProduccion, "http://localhost:4001/", "http://localhost:60281/"))
Dim Verificar As Boolean = True
@@ -3068,42 +2910,41 @@ Partial Class Compras_eFacturas
If ResultadoSolicitudOK And Verificar Then
- 'Dim ObjApiVerificacion As JToken = CType(api.VerificaSolicitudesNominas(UsuarioActual.CveEmpresa, CveTipoSolicitud, CveSolicitudActual), JToken)
+ If EsProduccion Then
+ Dim ObjApiVerificacion As JToken = CType(api.VerificaSolicitudesNominas(UsuarioActual.CveEmpresa, CveTipoSolicitud, CveSolicitudActual), JToken)
- 'If Not (ObjApiVerificacion Is Nothing) Then
- ' resultVerificacion = ObjApiVerificacion.[Select](Function(token) token.Values().Aggregate(Function(i, j) $"{i}|{j}").Value(Of String)()).ToList()
+ If Not (ObjApiVerificacion Is Nothing) Then
+ resultVerificacion = ObjApiVerificacion.[Select](Function(token) token.Values().Aggregate(Function(i, j) $"{i}|{j}").Value(Of String)()).ToList()
- ' If UsuarioActual.CveRol = 1 Then
- ' Dim respesta = New StringBuilder
- ' For Each s As String In resultVerificacion
- ' respesta.AppendLine($"{s} - ")
- ' Next
+ ResultadoVerificaionOK = Boolean.Parse(resultVerificacion(0))
+ SeVerifico = True
+ Else
+ TipoMensaje = ModExtensiones.TipoMensaje.MsgAdvertencia
+ End If
+ Else
+ ResultadoVerificaionOK = True
+ SeVerifico = True
+ End If
- ' Alert(respesta.ToString)
- ' End If
-
- ' ResultadoVerificaionOK = Boolean.Parse(resultVerificacion(0))
- ' SeVerifico = True
- 'Else
- ' TipoMensaje = ModExtensiones.TipoMensaje.MsgAdvertencia
- 'End If
-
- Dim Archivo = New FileInfo(String.Format("{0}DescargasSATXML\Compras\{1}.gzip", UsuarioActual.Empresa.Ruta, CveSolicitudDetalle))
+ Dim Archivo = New FileInfo(String.Format("{0}DescargasSATXML\Compras\{1}.zip", UsuarioActual.Empresa.Ruta, CveSolicitudDetalle))
Dim fileName = Archivo.Name
Dim filemove = Archivo.FullName
- If Archivo.Exists Then
+ If ResultadoVerificaionOK AndAlso Archivo.Exists Then
Try
'COPIAR ARCHIVO A LA CARPETA DE PROCESAMIENTO DE FACTURAS, SE ELIMINARAN ESOS ARCHIVOS TEMPORALES
Dim destFile = String.Format("{0}Temp\Facturas\{1}", UsuarioActual.Empresa.Ruta, fileName)
File.Copy(filemove, destFile, overwrite:=True)
- ListComprimidos.Add(destFile)
- ResultadoVerificaionOK = True
- SeVerifico = True
+ If File.Exists(destFile) Then
+ ListComprimidos.Add(destFile)
+ Else
+ sbArchivosFaltantes.AppendFormat("
Folio: {0} Archivo: {1}", Folio, fileName)
+ End If
Catch ex As Exception
ex.ToString().GuardaLog()
+ sbArchivosFaltantes.AppendFormat("
Folio: {0} Archivo: {1}. Error al procesar", Folio, fileName)
End Try
End If
@@ -3119,8 +2960,8 @@ Partial Class Compras_eFacturas
TipoMensaje = ModExtensiones.TipoMensaje.MsgAdvertencia
End If
- If SeVerifico AndAlso UsuarioActual.CveRol = 1 AndAlso UsuarioActual.CveEmpresa = 119 Then
- SubirFacturas(ListComprimidos, ListXML, ListPDF)
+ If SeVerifico Then
+ SubirFacturas(ListComprimidos, ListXML, ListPDF, Validada:=1)
End If
'If UsuarioActual.CveRol = 1 Then
@@ -3146,6 +2987,11 @@ Partial Class Compras_eFacturas
Next
Alert(sbResultado.ToString(), TipoMensaje)
+
+ If sbArchivosFaltantes.Length > 0 Then
+ Alert($"No se pudieron procesar los siguientes folios. {sbArchivosFaltantes.ToString()}", TipoMensaje.MsgError)
+ End If
+
cargasolicitudes()
Catch ex As Exception
Alert(ex.StackTrace)
@@ -3161,17 +3007,24 @@ Partial Class Compras_eFacturas
RegistraScript("$('#ModalAgregarSolicitud').modal('show');")
End Sub
- Protected Sub GVSolicitudesNominas_RowDataBound(ByVal sender As Object, ByVal e As GridViewRowEventArgs)
+ Protected Sub GVSolicitudesHistorial_RowDataBound(ByVal sender As Object, ByVal e As GridViewRowEventArgs)
If e.Row.RowType = DataControlRowType.DataRow Then
If e.Row.DataKey("ArchivoXML").Length > 0 Then
- Dim UrlDescarga As String = $"{UsuarioActual.Empresa.Ruta}NomXMLSAT\\Descargas\\{e.Row.DataKey("ArchivoXML")}"
+ Dim UrlDescarga As String = $"{UsuarioActual.Empresa.Ruta}DescargasSATXML\\Compras\\{e.Row.DataKey("CveSolicitudDetalle")}.zip"
If System.IO.File.Exists(UrlDescarga) Then
Dim LnkDescargaXML As LinkButton = e.Row.FCLinkButton("LnkDescargaXML")
ScriptManager.GetCurrent(Me).RegisterPostBackControl(LnkDescargaXML)
LnkDescargaXML.Visible = True
+ Else
+ Dim UrlDescarga2 As String = $"{UsuarioActual.Empresa.Ruta}NomXMLSAT\\Descargas\\{e.Row.DataKey("ArchivoXML")}"
+ If System.IO.File.Exists(UrlDescarga2) Then
+ Dim LnkDescargaXML As LinkButton = e.Row.FCLinkButton("LnkDescargaXML")
+ ScriptManager.GetCurrent(Me).RegisterPostBackControl(LnkDescargaXML)
+ LnkDescargaXML.Visible = True
+ End If
End If
End If
@@ -3193,9 +3046,14 @@ Partial Class Compras_eFacturas
Protected Sub LnkDescargaXML_Click(ByVal sender As Object, ByVal e As EventArgs)
Dim GvRow As GridViewRow = CType((CType(sender, LinkButton)).NamingContainer, GridViewRow)
- Dim UrlDescarga As String = $"{UsuarioActual.Empresa.Ruta}NomXMLSAT\\Descargas\\{GvRow.DataKey("ArchivoXML")}"
+ Dim UrlDescarga As String = $"{UsuarioActual.Empresa.Ruta}DescargasSATXML\\Compras\\{GvRow.DataKey("CveSolicitudDetalle")}.zip"
Dim Archivo As New System.IO.FileInfo(UrlDescarga)
+ If Not Archivo.Exists Then
+ Dim UrlDescarga2 As String = $"{UsuarioActual.Empresa.Ruta}NomXMLSAT\\Descargas\\{GvRow.DataKey("ArchivoXML")}"
+ Archivo = New System.IO.FileInfo(UrlDescarga2)
+ End If
+
If Archivo.Exists Then
Response.Clear()
Response.AddHeader("Content-Disposition", "attachment; filename=" & Archivo.Name)
@@ -3205,6 +3063,7 @@ Partial Class Compras_eFacturas
Response.TransmitFile(Archivo.FullName)
Response.[End]()
End If
+
End Sub
Private Sub MostrarSolcitudesSAT()
@@ -3341,7 +3200,7 @@ Partial Class Compras_eFacturas
GvD.EditIndex = -1
RegistraScript(String.Format("$('#{0}').modal('hide');", "divDescripcion"))
Alert("La factura se eliminó correctamente.", TipoMensaje.MsgInformacion)
- CargaDatos()
+ CargaDatos(NowADS())
UpBitacora.Update()
End If
@@ -3366,7 +3225,7 @@ Partial Class Compras_eFacturas
GvPagos.EditIndex = -1
RegistraScript("$('#divDescripcionPago').modal('hide');")
Alert("La factura se eliminó correctamente.", TipoMensaje.MsgInformacion)
- CargaDatos()
+ CargaDatos(NowADS())
UpBitacora.Update()
End If
@@ -4038,7 +3897,7 @@ Partial Class Compras_eFacturas
Alert("El pago fue vinculado correctamente", TipoMensaje.MsgInformacion)
RegistraScript("$('#ModalVincularPago').modal('hide')", "VincularPagoModalHide")
- CargaDatos()
+ CargaDatos(NowADS())
Else
ObjCompra.RollBack()
Alert("Ocurrió un error al vincular el pago. Por favor verifique y vuelva a intentar", TipoMensaje.MsgError)
@@ -4489,7 +4348,7 @@ Partial Class Compras_eFacturas
Alert($"PDF Error se genero nulo", TipoMensaje.MsgAdvertencia)
End If
- CargaDatos()
+ CargaDatos(NowADS())
Catch ex As Exception
Alert($"PDF Error {ex.Message} -- > {ex.StackTrace}", TipoMensaje.MsgAdvertencia)
@@ -4963,7 +4822,7 @@ Partial Class Compras_eFacturas
If CountVinculados > 0 Then
Alert($"Se vincularon {CountVinculados} complementos")
- CargaDatos()
+ CargaDatos(NowADS())
End If
@@ -5098,7 +4957,7 @@ Partial Class Compras_eFacturas
ObjDatos.Dispose()
If Correcto Then
- CargaDatos()
+ CargaDatos(NowADS())
End If
End Sub
@@ -5171,7 +5030,7 @@ Partial Class Compras_eFacturas
If ProcesoOk Then
RegistraScript("$('#DvModalVincularTrasaldo').modal('hide');")
- CargaDatos()
+ CargaDatos(NowADS())
Alert("Traslado Vinculado correctamente.")
End If
@@ -5493,7 +5352,7 @@ Partial Class Compras_eFacturas
Next
If Not ErrorProceso Then
- CargaDatos()
+ CargaDatos(NowADS())
If Contador > 0 Then
Alert($"Se registraron {Contador} Compras")
End If
@@ -7779,7 +7638,7 @@ Namespace ADS.eFacturas
' End If
'End Sub
- Public Function CargaComprobanteXML(StrFuente As String, DirectorioEmpresa As String, RFCEmpresa As String, CveEmpresa As Integer, Registrar As Boolean, ByRef rowLog As DataRow, NombreArchivo As String) As Factura
+ Public Function CargaComprobanteXML(StrFuente As String, DirectorioEmpresa As String, RFCEmpresa As String, CveEmpresa As Integer, Registrar As Boolean, ByRef rowLog As DataRow, NombreArchivo As String, Optional Validada As Integer = 0) As Factura
Dim SeValido As Boolean = False
@@ -8039,6 +7898,8 @@ Namespace ADS.eFacturas
If Fact.ReceptorRFC = RFCEmpresa Then
+ Fact.Validada = Validada
+
Dim ObjCompra As New ClsCompras
Dim Correcto As Boolean = False
@@ -8134,7 +7995,7 @@ Namespace ADS.eFacturas
- Public Function GeneraPDF(ByVal Ruta As String, ByVal Fact As Factura, DirectorioEmpresa As String, Guardar As Boolean) As Boolean
+ Public Function GeneraPDF(UsuarioActual As Usuario, ByVal Ruta As String, ByVal Fact As Factura, DirectorioEmpresa As String, Guardar As Boolean) As Boolean
Dim RutaXML As String = String.Empty
Dim RutaPDF As String = String.Empty
Dim Retorno As Boolean = False
@@ -8197,7 +8058,7 @@ Namespace ADS.eFacturas
If (Fact.Version = "3.3" Or Fact.Version = "4.0") Then
Dim cxml As XmlSatCFDI = XmlSatCFDI.readXML(ArchivoXML, ArchivoLog)
ModExtensiones.GuardaLogAD(String.Format(" *********** UUID : {0} ***********", cxml.complemento.UUID), ArchivoLog)
- cxml.ImprimirPDF(TmpArchivoPDF, DirectorioEmpresa, Fact.TipoComprobante)
+ cxml.ImprimirPDF(UsuarioActual, TmpArchivoPDF, DirectorioEmpresa, Fact.TipoComprobante)
Fact.ArchivoPDF = Path.GetFileName(TmpArchivoPDF)
Try
@@ -8216,9 +8077,9 @@ Namespace ADS.eFacturas
ModExtensiones.GuardaLogAD(String.Format(" *********** TFDUUID : {0} ***********", Fact.UUID), ArchivoLog)
Dim DomFiscal As String = String.Format("Domicilio Fiscal {0}{1} {2}{0}Col.{3}{0}CP. {4} {5},{6},{7}", vbCr, Fact.DomFisCalle, Fact.DomFisNoExt, Fact.DomFisCol, Fact.DomFisCP, Fact.DomFisMun, Fact.DomFisEst, Fact.DomFisPais)
- If GeneraPDFNew(TmpArchivoPDF, Fact.UUID, Fact.SubTotal, Fact.Descuento, Fact.Total, Fact.TrasladoIVA.FormatoNumero(), Fact.Moneda, Fact.FormaDePago, Fact.TFDNoCertSAT, Fact.TFDFechaTimbrado.ToDate(), Fact.noCertificado,
+ If GeneraPDFNew(UsuarioActual, TmpArchivoPDF, Fact.UUID, Fact.SubTotal, Fact.Descuento, Fact.Total, Fact.TrasladoIVA.FormatoNumero(), Fact.Moneda, Fact.FormaDePago, Fact.TFDNoCertSAT, Fact.TFDFechaTimbrado.ToDate(), Fact.noCertificado,
Fact.DTConceptos, Fact.TFDSelloCFD, Fact.TFDSelloSAT, TmpArchivoQR, Fact.Serie + Fact.Folio, Fact.TipoComprobante, "", Fact.ReceptorRFC, Fact.RecNombre, Fact.DomRecCalle, Fact.DomRecCol, Fact.DomRecFisNoExt,
- Fact.DomRecFisNoInt, Fact.DomRecCP, Fact.DomRecMun, Fact.DomRecEst, Fact.Regimen, Fact.condicionesDePago, Fact.MetododePago, Fact.NumCtaPagoNumCtaPago, NowADS, Fact.DtPagos, Fact.DtDocumentosR, Fact.RetencionIVA,
+ Fact.DomRecFisNoInt, Fact.DomRecCP, Fact.DomRecMun, Fact.DomRecEst, Fact.Regimen, Fact.condicionesDePago, Fact.MetododePago, Fact.NumCtaPagoNumCtaPago, DateTime.Now, Fact.DtPagos, Fact.DtDocumentosR, Fact.RetencionIVA,
Fact.RetencionISR, Fact.EmiNombre, Fact.EmiRFC, Fact.ReceptorNombre, DirectorioEmpresa, DomFiscal) Then
Fact.ArchivoPDF = Path.GetFileName(TmpArchivoPDF)
@@ -8259,7 +8120,7 @@ Namespace ADS.eFacturas
End Function
- Private Function GeneraPDFNew(ByVal TmpArchivoPDF As String, ByVal FolioFiscal As String, ByVal SubTotal As Decimal, ByVal Descuento As Decimal, ByVal Total As Decimal, ByVal IVA As String, ByVal Moneda As String, ByVal FormaDePago As String,
+ Private Function GeneraPDFNew(UsuarioActual As Usuario, ByVal TmpArchivoPDF As String, ByVal FolioFiscal As String, ByVal SubTotal As Decimal, ByVal Descuento As Decimal, ByVal Total As Decimal, ByVal IVA As String, ByVal Moneda As String, ByVal FormaDePago As String,
ByVal NoSerieCertificado As String, ByVal FechaCertificacion As DateTime, ByVal NoSerieCertificadoContribuyente As String, ByVal DTConceptos As DataTable, ByVal SelloCFDi As String, ByVal SelloSAT As String,
ByVal CBB As String, ByVal Folio As String, ByVal TipodeComprobante As String, ByVal CadenaOriginalCFD As String, ByVal RFC As String, ByVal Cliente As String, ByVal Direccion As String, ByVal Colonia As String,
ByVal NoExt As String, ByVal NoInt As String, ByVal CP As String, ByVal Ciudad As String, ByVal Estado As String, ByVal Regimen As String, ByVal CondicionPago As String, ByVal MetodoPago As String, ByVal NumCtaPago As String,
@@ -8267,7 +8128,7 @@ Namespace ADS.eFacturas
Optional EmiNombre As String = "", Optional EmiRFC As String = "", Optional NombreEmpresa As String = "", Optional DirectorioEmpresa As String = "", Optional DomFiscal As String = "") As Boolean
- Dim RutaRDLC As String = If(TipodeComprobante = "Pag", $"{DirectorioEmpresa}..\Grales\Formatos\CFDIPago.rdlc", $"{DirectorioEmpresa}..\Grales\Formatos\CFDI.rdlc")
+ Dim RutaRDLC As String = If(TipodeComprobante = "Pag", "Grales\Formatos\CFDIPago.rdlc", "Grales\Formatos\CFDI.rdlc")
Dim Retorno As Boolean = False
Dim NombreArchivo As String = TmpArchivoPDF
@@ -8319,47 +8180,44 @@ Namespace ADS.eFacturas
parametros.Add(New ReportParameter("Empresa", NombreEmpresa))
+ Dim listaDs As New List(Of ReportDataSource)
- Using MR As New ReportViewer()
- Dim rds1 As New ReportDataSource()
- rds1.Name = "DsOC"
- rds1.Value = DTConceptos
+ Dim rds1 As New ReportDataSource()
+ rds1.Name = "DsOC"
+ rds1.Value = DTConceptos
- MR.LocalReport.DataSources.Add(rds1)
+ 'MR.LocalReport.DataSources.Add(rds1)
+ listaDs.Add(rds1)
- If DtPagos IsNot Nothing Then
- Dim rds2 As New ReportDataSource()
- rds2.Name = "DsPago"
- rds2.Value = DtPagos
- MR.LocalReport.DataSources.Add(rds2)
- End If
- If DtRelacionados IsNot Nothing Then
- Dim rds3 As New ReportDataSource()
- rds3.Name = "DsDocRelacionados"
- rds3.Value = DtRelacionados
- MR.LocalReport.DataSources.Add(rds3)
- End If
+ If DtPagos IsNot Nothing Then
+ Dim rds2 As New ReportDataSource()
+ rds2.Name = "DsPago"
+ rds2.Value = DtPagos
+ 'MR.LocalReport.DataSources.Add(rds2)
+ listaDs.Add(rds2)
+ End If
- MR.LocalReport.ReportPath = RutaFormato
- MR.ProcessingMode = ProcessingMode.Local
- MR.LocalReport.EnableExternalImages = True
- MR.LocalReport.SetParameters(parametros)
- MR.LocalReport.Refresh()
+ If DtRelacionados IsNot Nothing Then
+ Dim rds3 As New ReportDataSource()
+ rds3.Name = "DsDocRelacionados"
+ rds3.Value = DtRelacionados
+ 'MR.LocalReport.DataSources.Add(rds3)
+ listaDs.Add(rds3)
+ End If
- 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)
+ Dim bytes As Byte() = Nothing
+
+ bytes = StreamPDF(UsuarioActual, RutaRDLC, listaDs, parametros, NombreArchivo:=NombreArchivo, Formato:="PDF")
+ If bytes IsNot Nothing Then
Using fs As New FileStream(NombreArchivo, FileMode.Create)
fs.Write(bytes, 0, bytes.Length)
fs.Close()
End Using
- End Using
- Retorno = True
+ Retorno = True
+ Else
+ Retorno = False
+ End If
Else
ModExtensiones.GuardaLogAD("ERROR: No existe Formato Base", ArchivoLog)
End If
@@ -8423,7 +8281,7 @@ Namespace ADS.eFacturas
Dim Pagos As New List(Of Pago)()
For Each nodePago As XmlNode In NodosNodePagos
- Dim FechaPago As DateTime = NowADS()
+ Dim FechaPago As DateTime = DateTime.Now
Try
FechaPago = ValorXML(nodePago, "FechaPago").ToDate()
Catch e As Exception
@@ -8501,6 +8359,115 @@ Namespace ADS.eFacturas
End Function
+ Public Function StreamPDF(UsuarioActual As Usuario, RutaReporte As String, DataSource As List(Of ReportDataSource), Parametros As List(Of ReportParameter), Optional NombreArchivo As String = "Reporte", Optional Formato As String = "PDF", Optional MR As ReportViewer = Nothing, Optional SubReportData As Modelos.MSubReportData = Nothing) As Byte()
+ 'limpio ReportViwer
+ Dim sw As Stopwatch = Stopwatch.StartNew()
+
+
+ Dim Bytes As Byte() = Nothing
+ Dim CveUsuario As Integer = 0
+ Dim CveEmpresa As Integer = 0
+ Dim RutaEmpresa As String = ""
+ If UsuarioActual IsNot Nothing Then
+ CveUsuario = UsuarioActual.CveUsuario
+ CveEmpresa = UsuarioActual.CveEmpresa
+ RutaEmpresa = UsuarioActual.Empresa.Ruta
+ End If
+
+ Dim bdir As String = If(RutaReporte.Contains("Empresas"), ModExtensiones.DirectorioBaseEmpresas, AppDomain.CurrentDomain.BaseDirectory)
+ 'TOMAR LA RUTA BASE PARA EL DIRECTORIO DE LA EMPRESA
+ If Not String.IsNullOrEmpty(RutaEmpresa) AndAlso Not RutaReporte.Contains("Grales") AndAlso Not RutaReporte.Contains("Contabilidad/Reportes/") AndAlso Not RutaReporte.Contains("Contabilidad/Reportes/") AndAlso Not RutaReporte.Contains("AC/Reportes/") Then
+ bdir = RutaEmpresa.Replace($"{CveEmpresa}/", "")
+ End If
+ RutaReporte.Replace("/", "\")
+ If Not RutaReporte.ToUpper().StartsWith(bdir.ToUpper()) Then
+ RutaReporte = String.Format("{0}{1}", bdir, RutaReporte)
+ End If
+ If EsProduccion Then
+ Dim wsreport As New WSRDLC2.WebServiceSoapClient
+ Dim params As New List(Of WSRDLC2.ReportParameter)
+ Dim reportobjects As New List(Of WSRDLC2.ReportObjects)
+ Dim jsonData As String = Nothing
+ If SubReportData IsNot Nothing Then
+ jsonData = Newtonsoft.Json.JsonConvert.SerializeObject(SubReportData)
+ End If
+ Dim ds As New DataSet
+ For Each rpds As ReportDataSource In DataSource
+ If rpds.Value IsNot Nothing Then
+ If rpds.Value.GetType().ToString() = "System.Data.DataTable" Then
+ Dim dt As DataTable = DirectCast(rpds.Value, Data.DataTable)
+ dt = dt.Copy()
+ dt.TableName = rpds.Name
+ ds.Tables.Add(dt)
+ Else
+ Dim ojext As New WSRDLC2.ReportObjects
+ ojext.Name = rpds.Name
+ ojext.Value = rpds.Value
+ reportobjects.Add(ojext)
+ End If
+ Else
+ Dim dt As DataTable = New DataTable()
+ dt.TableName = If(String.IsNullOrEmpty(rpds.Name), "DataTable1", rpds.Name)
+ ds.Tables.Add(dt)
+ End If
+ Next
+ For Each rpds As ReportParameter In Parametros
+ Dim param As New WSRDLC2.ReportParameter
+ param.Name = rpds.Name
+ 'SI ES TEXTO, QUITAR TABS Y OTROS ESPACIOS QUE DEN PROBLEMAS AL MANDAR LA PETICION
+ If rpds IsNot Nothing AndAlso rpds.Values IsNot Nothing AndAlso rpds.Values.Count > 0 AndAlso rpds.Values(0) IsNot Nothing AndAlso rpds.Values(0).GetType() = GetType(String) Then
+ param.Values = {rpds.Values(0).Replace(vbVerticalTab, "")}
+ Else
+ param.Values = {rpds.Values(0)}
+ End If
+ params.Add(param)
+ Next
+ Bytes = wsreport.StreamNEWPDFBytes(RutaReporte, ds, reportobjects.ToArray(), params.ToArray(), NombreArchivo, Formato, CveEmpresa, CveUsuario, jsonData)
+ wsreport = Nothing
+ params = Nothing
+ ds.Dispose() : ds = Nothing
+ Else
+ If IsNothing(MR) Then MR = New ReportViewer
+ Try
+ ' MasterReporteador.LocalReport.DataSources.Clear()
+ For Each RDS As ReportDataSource In DataSource
+ MR.LocalReport.DataSources.Add(RDS)
+ Next
+ 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
+ Bytes = MR.LocalReport.Render(Formato, Nothing, MimeType, Encoding, Extension, StreamIds, Warnings)
+ Catch ex As Microsoft.Reporting.WebForms.ScriptManagerNotFoundException
+ GuardaLog($"Error: { If(ex.InnerException.Message IsNot Nothing, ex.InnerException.Message, ex.Message) } | Descripcion: {If(ex.InnerException IsNot Nothing AndAlso ex.InnerException.InnerException IsNot Nothing AndAlso ex.InnerException.InnerException.Message IsNot Nothing, ex.InnerException.InnerException.Message, If(ex.InnerException IsNot Nothing AndAlso ex.InnerException.Message IsNot Nothing, ex.InnerException.Message, "Sin descripcion"))} - Ruta {RutaReporte}")
+ 'HAY QUE VALIDAR QUE LOS OBJETOS QUE SE USAN PARA GUARDAR LOG EXISTEN!!! IPP 14 AGOSTO 2017
+ 'GuardaLog($"Error: {ex.InnerException.Message} | Descripcion: {If(ex.InnerException.InnerException IsNot Nothing, ex.InnerException.InnerException.Message, "Sin descripcion")} - Ruta {RutaReporte}")
+ Catch ex As Exception
+ GuardaLog($"Error: { If(ex.InnerException.Message IsNot Nothing, ex.InnerException.Message, ex.Message) } | Descripcion: {If(ex.InnerException IsNot Nothing AndAlso ex.InnerException.InnerException IsNot Nothing AndAlso ex.InnerException.InnerException.Message IsNot Nothing, ex.InnerException.InnerException.Message, If(ex.InnerException IsNot Nothing AndAlso ex.InnerException.Message IsNot Nothing, ex.InnerException.Message, "Sin descripcion"))} - Ruta {RutaReporte}")
+ 'HAY QUE VALIDAR QUE LOS OBJETOS QUE SE USAN PARA GUARDAR LOG EXISTEN!!! IPP 14 AGOSTO 2017
+ 'GuardaLog($"Error {ex.InnerException.Message} | Descripcion: {If(ex.InnerException.InnerException IsNot Nothing, ex.InnerException.InnerException.Message, "Sin descripcion")} - Ruta {RutaReporte}")
+ End Try
+ Try
+ MR.Dispose()
+ Catch ex As Exception
+ GuardaLog($"Error: { ex.ToString() }")
+ End Try
+ MR = Nothing
+
+ End If
+ sw.Stop()
+ If sw.Elapsed.TotalSeconds > 5 Then
+ GuardaLog($"Reporte:{RutaReporte} | Tiempo Renderizado Milisegundos: {sw.ElapsedMilliseconds},Total Segundos: {sw.Elapsed.TotalSeconds} ")
+ End If
+ Return Bytes
+ End Function
+
End Class
@@ -8975,10 +8942,10 @@ Namespace ADS.eFacturas
End If
End Function
- Public Sub ImprimirPDF(NombreArchivo As String, DirectorioEmpresa As String, TipodeComprobante As String)
+ Public Sub ImprimirPDF(UsuarioActual As Usuario, NombreArchivo As String, DirectorioEmpresa As String, TipodeComprobante As String)
Dim objxml As XmlSatCFDI = Me
- Dim rutaReporte As String = If(TipodeComprobante = "Pag", $"{DirectorioEmpresa}..\Grales\Formatos\CFDIV3Pago.rdlc", $"{DirectorioEmpresa}..\Grales\Formatos\CFDIV3.rdlc")
+ Dim rutaReporte As String = If(TipodeComprobante = "Pag", "Grales\Formatos\CFDIV3Pago.rdlc", "Grales\Formatos\CFDIV3.rdlc")
Dim cQr As Byte() = Nothing
@@ -9043,7 +9010,8 @@ Namespace ADS.eFacturas
parametros.Add(New ReportParameter("CPCtaBeneficiario", objxml.complemento.Pagos.CtaBeneficiario))
End If
- Using MR As New ReportViewer()
+ Try
+ Dim listaDS As New List(Of ReportDataSource)
Dim rdsTotales As New ReportDataSource()
Dim ltotales As New List(Of utilValores)()
ltotales.Add(New utilValores("Subtotal", objxml.comprobante.SubTotal.ToString("N2")))
@@ -9062,51 +9030,49 @@ Namespace ADS.eFacturas
ltotales.Add(New utilValores("Total", objxml.comprobante.Total.ToString("N2")))
rdsTotales.Name = "dsTotales"
rdsTotales.Value = ltotales
- MR.LocalReport.DataSources.Add(rdsTotales)
+ listaDS.Add(rdsTotales)
Dim rds2 As New ReportDataSource()
Dim limagenes As New List(Of utilImage)()
limagenes.Add(New utilImage(cQr))
rds2.Name = "dsImagenes"
rds2.Value = limagenes
- MR.LocalReport.DataSources.Add(rds2)
+ listaDS.Add(rds2)
Dim rdsrelacionados As New ReportDataSource()
rdsrelacionados.Name = "dsRelacionados"
rdsrelacionados.Value = objxml.cFDIRelacionados
- MR.LocalReport.DataSources.Add(rdsrelacionados)
+ listaDS.Add(rdsrelacionados)
Dim rds1 As New ReportDataSource()
rds1.Name = "dsConceptos"
rds1.Value = objxml.GetConceptosforpdf()
- MR.LocalReport.DataSources.Add(rds1)
+ listaDS.Add(rds1)
If objxml.complemento.Pagos IsNot Nothing Then
Dim rdsp As New ReportDataSource()
rdsp.Name = "dsPagos"
rdsp.Value = objxml.complemento.Pagos.doctosRelacionados
- MR.LocalReport.DataSources.Add(rdsp)
+ listaDS.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)
Dim bytes As Byte() = Nothing
- bytes = MR.LocalReport.Render("PDF", Nothing, mimeType, encoding, extension, streamids, warnings)
+ bytes = StreamPDF(UsuarioActual, rutaReporte, listaDs, parametros, NombreArchivo:=NombreArchivo, Formato:="PDF")
+
+ If bytes IsNot Nothing Then
+ Using fs As New FileStream(NombreArchivo, FileMode.Create)
+ fs.Write(bytes, 0, bytes.Length)
+ fs.Close()
+ End Using
+ End If
+
+ Catch ex As Exception
+ ex.ToString().GuardaLogAD()
+ End Try
- Using fs As New FileStream(NombreArchivo, FileMode.Create)
- fs.Write(bytes, 0, bytes.Length)
- fs.Close()
- End Using
- End Using
End Sub
Public Class utilValores
@@ -9124,6 +9090,117 @@ Namespace ADS.eFacturas
End Sub
Public Property ImagenByte As Byte()
End Class
+
+ Public Function StreamPDF(UsuarioActual As Usuario, RutaReporte As String, DataSource As List(Of ReportDataSource), Parametros As List(Of ReportParameter), Optional NombreArchivo As String = "Reporte", Optional Formato As String = "PDF", Optional MR As ReportViewer = Nothing, Optional SubReportData As Modelos.MSubReportData = Nothing) As Byte()
+ 'limpio ReportViwer
+ Dim sw As Stopwatch = Stopwatch.StartNew()
+
+
+ Dim Bytes As Byte() = Nothing
+ Dim CveUsuario As Integer = 0
+ Dim CveEmpresa As Integer = 0
+ Dim RutaEmpresa As String = ""
+ If UsuarioActual IsNot Nothing Then
+ CveUsuario = UsuarioActual.CveUsuario
+ CveEmpresa = UsuarioActual.CveEmpresa
+ RutaEmpresa = UsuarioActual.Empresa.Ruta
+ End If
+
+ Dim bdir As String = If(RutaReporte.Contains("Empresas"), ModExtensiones.DirectorioBaseEmpresas, AppDomain.CurrentDomain.BaseDirectory)
+ 'TOMAR LA RUTA BASE PARA EL DIRECTORIO DE LA EMPRESA
+ If Not String.IsNullOrEmpty(RutaEmpresa) AndAlso Not RutaReporte.Contains("Grales") AndAlso Not RutaReporte.Contains("Contabilidad/Reportes/") AndAlso Not RutaReporte.Contains("Contabilidad/Reportes/") AndAlso Not RutaReporte.Contains("AC/Reportes/") Then
+ bdir = RutaEmpresa.Replace($"{CveEmpresa}/", "")
+ End If
+ RutaReporte.Replace("/", "\")
+ If Not RutaReporte.ToUpper().StartsWith(bdir.ToUpper()) Then
+ RutaReporte = String.Format("{0}{1}", bdir, RutaReporte)
+ End If
+ If EsProduccion Then
+ Dim wsreport As New WSRDLC2.WebServiceSoapClient
+ Dim params As New List(Of WSRDLC2.ReportParameter)
+ Dim reportobjects As New List(Of WSRDLC2.ReportObjects)
+ Dim jsonData As String = Nothing
+ If SubReportData IsNot Nothing Then
+ jsonData = Newtonsoft.Json.JsonConvert.SerializeObject(SubReportData)
+ End If
+ Dim ds As New DataSet
+ For Each rpds As ReportDataSource In DataSource
+ If rpds.Value IsNot Nothing Then
+ If rpds.Value.GetType().ToString() = "System.Data.DataTable" Then
+ Dim dt As DataTable = DirectCast(rpds.Value, Data.DataTable)
+ dt = dt.Copy()
+ dt.TableName = rpds.Name
+ ds.Tables.Add(dt)
+ Else
+ Dim ojext As New WSRDLC2.ReportObjects
+ ojext.Name = rpds.Name
+ ojext.Value = rpds.Value
+ reportobjects.Add(ojext)
+ End If
+ Else
+ Dim dt As DataTable = New DataTable()
+ dt.TableName = If(String.IsNullOrEmpty(rpds.Name), "DataTable1", rpds.Name)
+ ds.Tables.Add(dt)
+ End If
+ Next
+ For Each rpds As ReportParameter In Parametros
+ Dim param As New WSRDLC2.ReportParameter
+ param.Name = rpds.Name
+ 'SI ES TEXTO, QUITAR TABS Y OTROS ESPACIOS QUE DEN PROBLEMAS AL MANDAR LA PETICION
+ If rpds IsNot Nothing AndAlso rpds.Values IsNot Nothing AndAlso rpds.Values.Count > 0 AndAlso rpds.Values(0) IsNot Nothing AndAlso rpds.Values(0).GetType() = GetType(String) Then
+ param.Values = {rpds.Values(0).Replace(vbVerticalTab, "")}
+ Else
+ param.Values = {rpds.Values(0)}
+ End If
+ params.Add(param)
+ Next
+ Bytes = wsreport.StreamNEWPDFBytes(RutaReporte, ds, reportobjects.ToArray(), params.ToArray(), NombreArchivo, Formato, CveEmpresa, CveUsuario, jsonData)
+ wsreport = Nothing
+ params = Nothing
+ ds.Dispose() : ds = Nothing
+ Else
+ If IsNothing(MR) Then MR = New ReportViewer
+ Try
+ ' MasterReporteador.LocalReport.DataSources.Clear()
+ For Each RDS As ReportDataSource In DataSource
+ MR.LocalReport.DataSources.Add(RDS)
+ Next
+ 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
+ Bytes = MR.LocalReport.Render(Formato, Nothing, MimeType, Encoding, Extension, StreamIds, Warnings)
+ Catch ex As Microsoft.Reporting.WebForms.ScriptManagerNotFoundException
+ GuardaLog($"Error: { If(ex.InnerException.Message IsNot Nothing, ex.InnerException.Message, ex.Message) } | Descripcion: {If(ex.InnerException IsNot Nothing AndAlso ex.InnerException.InnerException IsNot Nothing AndAlso ex.InnerException.InnerException.Message IsNot Nothing, ex.InnerException.InnerException.Message, If(ex.InnerException IsNot Nothing AndAlso ex.InnerException.Message IsNot Nothing, ex.InnerException.Message, "Sin descripcion"))} - Ruta {RutaReporte}")
+ 'HAY QUE VALIDAR QUE LOS OBJETOS QUE SE USAN PARA GUARDAR LOG EXISTEN!!! IPP 14 AGOSTO 2017
+ 'GuardaLog($"Error: {ex.InnerException.Message} | Descripcion: {If(ex.InnerException.InnerException IsNot Nothing, ex.InnerException.InnerException.Message, "Sin descripcion")} - Ruta {RutaReporte}")
+ Catch ex As Exception
+ GuardaLog($"Error: { If(ex.InnerException.Message IsNot Nothing, ex.InnerException.Message, ex.Message) } | Descripcion: {If(ex.InnerException IsNot Nothing AndAlso ex.InnerException.InnerException IsNot Nothing AndAlso ex.InnerException.InnerException.Message IsNot Nothing, ex.InnerException.InnerException.Message, If(ex.InnerException IsNot Nothing AndAlso ex.InnerException.Message IsNot Nothing, ex.InnerException.Message, "Sin descripcion"))} - Ruta {RutaReporte}")
+ 'HAY QUE VALIDAR QUE LOS OBJETOS QUE SE USAN PARA GUARDAR LOG EXISTEN!!! IPP 14 AGOSTO 2017
+ 'GuardaLog($"Error {ex.InnerException.Message} | Descripcion: {If(ex.InnerException.InnerException IsNot Nothing, ex.InnerException.InnerException.Message, "Sin descripcion")} - Ruta {RutaReporte}")
+ End Try
+
+ Try
+ MR.Dispose()
+ Catch ex As Exception
+ GuardaLog($"Error: { ex.ToString() }")
+ End Try
+
+ MR = Nothing
+
+ End If
+ sw.Stop()
+ If sw.Elapsed.TotalSeconds > 5 Then
+ GuardaLog($"Reporte:{RutaReporte} | Tiempo Renderizado Milisegundos: {sw.ElapsedMilliseconds},Total Segundos: {sw.Elapsed.TotalSeconds} ")
+ End If
+ Return Bytes
+ End Function
End Class
Public Module InlineAssignHelper
diff --git a/Ventas/Ventas.aspx.vb b/Ventas/Ventas.aspx.vb
index 05ce189f9..26a8e02ba 100644
--- a/Ventas/Ventas.aspx.vb
+++ b/Ventas/Ventas.aspx.vb
@@ -7572,7 +7572,7 @@ Partial Class Ventas
UpFacturasRelacionadas.Update()
End Sub
Protected Sub CreaTmpFacturasRelacionadas()
- If CveVenta <= 0 OrElse EsCreaApartirDe Then
+ If CveVenta <= 0 OrElse EsCreaApartirDe OrElse Me.AplicoNCFacturaActual Then
Me.TmpDTFacturasRelacionadas = New DataTable()
Me.TmpDTFacturasRelacionadas.Columns.Add(New DataColumn("CveVenta", GetType(Integer)))
Me.TmpDTFacturasRelacionadas.Columns.Add(New DataColumn("SerieFolio", GetType(String)))
@@ -7580,7 +7580,7 @@ Partial Class Ventas
End If
End Sub
Protected Sub LnkAgregarFacturaRelacionada_Click(sender As Object, e As EventArgs)
- If CveVenta <= 0 OrElse EsCreaApartirDe Then
+ If CveVenta <= 0 OrElse EsCreaApartirDe OrElse Me.AplicoNCFacturaActual Then
If Me.TmpDTFacturasRelacionadas Is Nothing Then
CreaTmpFacturasRelacionadas()
End If
@@ -7611,7 +7611,7 @@ Partial Class Ventas
End Sub
Protected Sub LnkAgregarFolioFiscalRelacionada_Click(sender As Object, e As EventArgs)
- If CveVenta <= 0 OrElse EsCreaApartirDe Then
+ If CveVenta <= 0 OrElse EsCreaApartirDe OrElse Me.AplicoNCFacturaActual Then
If Me.TmpDTFacturasRelacionadas Is Nothing Then
CreaTmpFacturasRelacionadas()
End If
@@ -7641,7 +7641,7 @@ Partial Class Ventas
End Sub
Protected Sub BtnAgregarFacturasRelaciondas_Click(sender As Object, e As EventArgs)
- If CveVenta <= 0 OrElse EsCreaApartirDe Then
+ If CveVenta <= 0 OrElse EsCreaApartirDe OrElse Me.AplicoNCFacturaActual Then
If Me.TmpDTFacturasRelacionadas Is Nothing OrElse Me.TmpDTFacturasRelacionadas.Rows.Count = 0 Then
Me.AplicaRelacionManual = False
Alert("No hay facturas para relacionar", TipoMensaje.MsgAdvertencia)
@@ -7655,7 +7655,7 @@ Partial Class Ventas
End If
Me.AplicaRelacionManual = True
- RegistraScript("$('#DivFacturasRelaciondas').modal('hide');", "R1")
+ RegistraScript("$('#DivFacturasRelacionadas').modal('hide');", "R1")
Alert("Las facturas seleccionadas se relacionaran con la factura nueva")
End If
@@ -7723,7 +7723,7 @@ Partial Class Ventas
' RBLPago.SelectedValue = "2"
'End If
- If UsuarioActual.Empresa.Funcionalidad(382) = "1" AndAlso Me.PermiteCredito Then
+ If Me.PermiteCredito Then
If IfNull(Request("Op"), "").ToString() = "Cot" OrElse (DdlTipoComprobante.SelectedValue = "Cot" AndAlso CveVenta > 0) Then
Dim CreditoDispo As Decimal = CargaCreditoDisponible(CveCliente, DdlSucursalCliente.SelectedValue.ToEntero())
If CreditoDispo > 0 Then
@@ -13425,6 +13425,14 @@ Partial Class Ventas
End If
Obj.CveTipoRelacion = DdlTiposRelacion.SelectedValue.ToEntero()
If HdnFolioFiscalNC.Value <> "0" And HdnFolioFiscalNC.Value <> "" Then Timbre.CFDIRelacionados.UUID.Add(HdnFolioFiscalNC.Value)
+
+ 'SI LA NOTA DE CREDITO ES POR AMORTIZACION DE ANTICIPO , TAMBIEN DEBE TENER EL TIPO RELACION 07
+ If DdlTipoAmortizacionAnticipo.SelectedValue.ToEntero() = 2 AndAlso DdlTipoRelacionAnticipo.SelectedValue.ToEntero() = 7 Then
+ Obj.CveTipoRelacion = 7
+ Timbre.CFDIRelacionados.TipoRelacion = "07"
+ Timbre.CFDIRelacionados.TipoRelacionTexto = "CFDI por aplicación de anticipo"
+ End If
+
End If
' cuando es refacturacoin es cfdirelacionado, con relacion 04
If Timbre.Comprobante.TipoComprobante = "I" AndAlso NuevaFactura = 1 Then
@@ -13501,25 +13509,6 @@ Partial Class Ventas
Timbre.CFDIRelacionados.TipoRelacionTexto = ""
End If
- 'SI LAS FACTURAS SE RELACIONARAN MANUALMENTE SE AGREGAN
- If Me.AplicaRelacionManual AndAlso DdlTipoRelacionARelacionar.SelectedValue.ToEntero() > 0 Then
-
- Dim CveTipoRelacion As Integer = DdlTipoRelacionARelacionar.SelectedValue.ToEntero()
-
- Obj.CveTipoRelacion = DdlTipoRelacionARelacionar.SelectedValue.ToEntero()
-
- Dim RowTipoRelacion As DataRow = GlobalDTVtaTiposRelacion().FiltroPrimero($"CveTipoRelacion = {CveTipoRelacion}")
-
- Timbre.CFDIRelacionados.TipoRelacion = RowTipoRelacion("SATClaveTipoRelacion").ToString()
- Timbre.CFDIRelacionados.TipoRelacionTexto = RowTipoRelacion("SATTipoRelacion").ToString()
-
- For Each GvRow As GridViewRow In GvFacturasRelacionadas.Rows
- If GvRow.RowType = DataControlRowType.DataRow Then
- Timbre.CFDIRelacionados.UUID.Add(GvRow.DataKey("FolioFiscal").Replace("test", ""))
- End If
- Next
- End If
-
'DEVOLUCIONES DE OTRA VENTA, APLICADAS EN UNA NUEVA
If UsuarioActual.CveEmpresa.Contiene(1, 189) AndAlso Obj.TipoDocto = "Ing" AndAlso DdlTipoAmortizacionAnticipo.SelectedValue = "4" Then
If ListaDevolucionesAplicadas IsNot Nothing AndAlso ListaDevolucionesAplicadas.Count > 0 Then
@@ -13540,6 +13529,27 @@ Partial Class Ventas
End If
End If
+ 'SI LAS FACTURAS SE RELACIONARAN MANUALMENTE SE AGREGAN
+ If Me.AplicaRelacionManual AndAlso DdlTipoRelacionARelacionar.SelectedValue.ToEntero() > 0 Then
+
+ Dim CveTipoRelacion As Integer = DdlTipoRelacionARelacionar.SelectedValue.ToEntero()
+
+ Obj.CveTipoRelacion = DdlTipoRelacionARelacionar.SelectedValue.ToEntero()
+
+ Dim RowTipoRelacion As DataRow = GlobalDTVtaTiposRelacion().FiltroPrimero($"CveTipoRelacion = {CveTipoRelacion}")
+
+ Timbre.CFDIRelacionados.TipoRelacion = RowTipoRelacion("SATClaveTipoRelacion").ToString()
+ Timbre.CFDIRelacionados.TipoRelacionTexto = RowTipoRelacion("SATTipoRelacion").ToString()
+
+ Timbre.CFDIRelacionados.UUID.Clear()
+
+ For Each GvRow As GridViewRow In GvFacturasRelacionadas.Rows
+ If GvRow.RowType = DataControlRowType.DataRow Then
+ Timbre.CFDIRelacionados.UUID.Add(GvRow.DataKey("FolioFiscal").Replace("test", ""))
+ End If
+ Next
+ End If
+
Dim totSubTotal As Decimal = Obj.SubTotal
Dim totIVA As Decimal = Obj.IVA
Dim totRetIVA As Decimal = Obj.RetIVA
@@ -30215,6 +30225,13 @@ Partial Class Ventas
CveVentaUsadoDevolucionEfectivo = DdlVentaUsado.SelectedValue.ToEntero()
End If
+ 'SI SE VA APLICAR A LA FACTURA ACTUAL, NO UTILIZAR LOS DATOS DE AMORTIZACION
+ Me.TmpDTAnticiposNCIxCCliente = Nothing
+ GVAnticipos.DataSource = Me.TmpDTAnticiposNCIxCCliente
+ GVAnticipos.DataBind()
+ DdlTipoAmortizacionAnticipo.SelectedValueExist("-1")
+ DdlTipoRelacionAnticipo.SelectedValueExist("-1")
+
AplicarNC(DdlNCPS.SelectedValue.ToEntero(), EsNCAmortizacion:=ChkAplicaNCAnticipo.Checked, AplicaImpuestosLocales:=AplicaImpuestosLocales, AplicaNuevoDocumento:=AplicaNuevoDocumento, AplicoNCFacturaActual:=True)
End Sub
@@ -39420,6 +39437,19 @@ Partial Class Ventas
Protected Sub LnkFacturasRelacionadas_Click(sender As Object, e As EventArgs)
CargaFacturasARelacionar()
+ If Me.AplicoNCFacturaActual Then
+
+ DivDdlFacturaRela.Visible = True
+ BtnAgregarFacturasRelaciondas.Visible = True
+ DdlTipoRelacionARelacionar.Enabled = True
+ DdlFacturaARelacionar.Enabled = True
+
+ Me.TmpDTFacturasRelacionadas = Nothing
+
+ GvFacturasRelacionadas.Columns(2).Visible = True
+ GvFacturasRelacionadas.DataSource = Me.TmpDTFacturasRelacionadas
+ GvFacturasRelacionadas.DataBind()
+ End If
RegistraScript("$('#DivFacturasRelacionadas').modal('show')")
UpFacturasRelacionadas.Update()
End Sub