From e11d3a94005b35e4b9977d3cc648ba4d8b5c29cd Mon Sep 17 00:00:00 2001 From: Oscar Irigoyen Date: Thu, 6 Jul 2023 08:34:40 -0700 Subject: [PATCH 1/3] Proveedores registro automatico de cuentas en SIG Empresas 7, 11, 145, 122 --- Compras/Proveedores.aspx.vb | 164 +++++++++++++++++++++++++++--------- 1 file changed, 125 insertions(+), 39 deletions(-) diff --git a/Compras/Proveedores.aspx.vb b/Compras/Proveedores.aspx.vb index 4c98d9164..28fe6b62a 100644 --- a/Compras/Proveedores.aspx.vb +++ b/Compras/Proveedores.aspx.vb @@ -8,6 +8,7 @@ Imports System.Xml Imports Microsoft.Reporting.WebForms Imports System.IO Imports System.Globalization +Imports System.Data.SqlClient 'Imports VBIDE Partial Class Compras_Proveedores @@ -1571,11 +1572,15 @@ Partial Class Compras_Proveedores Dim ErrorContactos As Boolean = False Dim ErrorSucursales As Boolean = False Dim ErrorCuentasContables As Boolean = False + Dim ErrorCuentasContablesSIG As Boolean = False Dim codigo As String = "-1" Dim MsgCuentaContable As String = "" Dim IdCuentaContable As Integer = -1 + Dim IdCuentaAltaCompaq As Integer = -1 + Dim CodigoCuentaAltaCompaq As String = "" + Dim NombreCuentaCuentaAltaCompaq As String = "" Dim IdProveedor As Integer = -1 @@ -1634,6 +1639,7 @@ Partial Class Compras_Proveedores 'End If + Dim ClaveFuncionalidad As Integer = UsuarioActual.Empresa.Funcionalidad(201).ToEntero If CveProveedor = -1 Then @@ -1644,7 +1650,7 @@ Partial Class Compras_Proveedores ObjContaAC = New ClsContPAQi(UsuarioActual.Empresa) ObjContaAC.IniciaTransacSQL() - Dim ClaveFuncionalidad As Integer = UsuarioActual.Empresa.Funcionalidad(201).ToEntero + If DdlCveTipoProveedor.SelectedValue = "2" Then 'cuando es acreedor ClaveFuncionalidad = UsuarioActual.Empresa.Funcionalidad(202).ToEntero End If @@ -1654,6 +1660,7 @@ Partial Class Compras_Proveedores IdCuentaContable = UsuarioActual.Empresa.Funcionalidad(322).ToString.Trim.ToEntero Else IdCuentaContable = ObjContaAC.AddSiguienteCuentaHijo(ClaveFuncionalidad, TxtRazonSocial.Text.Trim, "D", 2) + IdCuentaAltaCompaq = IdCuentaContable End If @@ -1667,46 +1674,12 @@ Partial Class Compras_Proveedores If dt.Rows.Count = 1 Then Dim row As DataRow = dt.Rows(0) CtaCodigo = CStr(row("CtaCodigo")) + CodigoCuentaAltaCompaq = CStr(row("Codigo")) + NombreCuentaCuentaAltaCompaq = TxtRazonSocial.Text.Trim DdlCtaContProveedores.Items.Add(New ListItem(CtaCodigo, IdCuentaContable.ToString)) : DdlCtaContProveedores.SelectedValueExist(IdCuentaContable.ToString) End If - 'If UsuarioActual.Empresa.Funcionalidad(522).ToString = "1" Then - ' If UsuarioActual.Empresa.UsaContabilidad Then - ' Dim ObjContPaqi As New ClsContPAQi(UsuarioActual.Empresa) - ' If Not errorContPaq Then - ' If ObjContPaqi.GetProveedor(TxtRFC.Text.Trim) Then - ' If ObjContPaqi.DtResultados.Rows.Count > 0 Then - ' IdProveedor = ObjContPaqi.DtResultados.Rows(0)("Id").ToString.ToEntero - ' errorContPaq = False - ' Else - ' IdProveedor = ObjContPaqi.AddProveedor(IdCuentaContable, TxtRFC.Text.Trim, TxtNombreComercial.Text.Trim, "", CodigoPersona) - ' If IdProveedor > 0 Then - ' errorContPaq = False - ' Else - ' errorContPaq = True - ' End If - ' End If - ' Else - ' errorContPaq = True - ' End If - - ' End If - - - ' If Not errorContPaq Then - ' ObjContPaqi.Commit() - ' ObjContPaqi.Dispose() - ' Else - ' ObjContPaqi.RollBack() - ' ObjContPaqi.Dispose() - ' Exit Sub - ' End If - ' End If - 'Else - - ' IdProveedor = ObjContaAC.AddProveedor(IdCuentaContable, TxtRFC.Text.Trim, TxtRazonSocial.Text.Trim, "") - 'End If IdProveedor = ObjContaAC.AddProveedor(IdCuentaContable, TxtRFC.Text.Trim, TxtRazonSocial.Text.Trim, "") @@ -1802,7 +1775,23 @@ Partial Class Compras_Proveedores Next End If - If ErrorBancos Or ErrorContactos Or ErrorSucursales Or ErrorCuentasContables Then ''se deben validar las 3 juntas???????? + If IdCuentaAltaCompaq > 0 Then + + Dim CveConceptoContable As Integer + If DdlCveTipoProveedor.SelectedValue.ToEntero.Contiene(1, 3) Then + CveConceptoContable = 5 + Else + CveConceptoContable = 305 + End If + + If Not AltaCuentaContabilidadSIG(CodigoCuentaAltaCompaq, NombreCuentaCuentaAltaCompaq, IdCuentaAltaCompaq, CveConceptoContable, ObjProveedores.IniciaTransacSQL, IdCompaqPadre:=ClaveFuncionalidad, CveProveedorCuenta:=NuevoCveProveedor) Then + ErrorCuentasContablesSIG = True + End If + + End If + + + If ErrorBancos Or ErrorContactos Or ErrorSucursales Or ErrorCuentasContables Or ErrorCuentasContablesSIG Then ''se deben validar las 3 juntas???????? ObjProveedores.RollBack() If ObjContaAC IsNot Nothing Then ObjContaAC.RollBack() If ErrorBancos Then @@ -1816,7 +1805,10 @@ Partial Class Compras_Proveedores End If If ErrorCuentasContables Then Alert("Ocurrió un error al asignar las cuentas contables", TipoMensaje.MsgError) + ElseIf ErrorCuentasContablesSIG Then + Alert("Ocurrió un error al asignar las cuentas contables SIG", TipoMensaje.MsgError) End If + End If Else ObjProveedores.Commit() @@ -2073,6 +2065,78 @@ Partial Class Compras_Proveedores CargaEventoBitacora() End Sub + + + + Private Function AltaCuentaContabilidadSIG(CodigoCuentaAltaCompaq As String, NombreCuentaCuentaAltaCompaq As String, IdCuentaAltaCompaq As Integer, CveConceptoContable As Integer, Optional Transaccion As SqlTransaction = Nothing, Optional IdCompaqPadre As Integer = -1, Optional CveProveedorCuenta As Integer = -1) As Boolean + + If Not UsuarioActual.CveEmpresa.Contiene(7, 11, 145, 122) Then + Return True + End If + + If Not IdCompaqPadre > 0 Then + Alert("Erroa al agregar la cuenta SIG, IdCompaq sin definir.", TipoMensaje.MsgError) + Return False + End If + + Dim Respuesta As Boolean = False + Dim DisposeClases As Boolean = False + Dim Tipo As String = "B" + + If CveConceptoContable.Contiene(5, 305) Then + Tipo = "D" + ElseIf CveConceptoContable.Contiene(10) Then + Tipo = "A" + End If + + Dim ObjContabilidad As ClsContabilidad + + If Transaccion Is Nothing Then + ObjContabilidad = New ClsContabilidad + DisposeClases = True + Else + ObjContabilidad = New ClsContabilidad(Transaccion) + DisposeClases = False + End If + + If UsuarioActual.CveEmpresa.Contiene(7, 11, 145, 122) Then + If ObjContabilidad.GetCuentas(-1, "-1", -1, UsuarioActual.CveEmpresa) Then + + Dim CvePadre As Integer = ObjContabilidad.DtResultados.FiltroPrimeroValor("CveCuenta", $"IdCompaq={IdCompaqPadre}").ToEntero + + If CvePadre > 0 Then + + Dim CvecuentaNueva As Integer = ObjContabilidad.AddCuenta(CvePadre, CodigoCuentaAltaCompaq, NombreCuentaCuentaAltaCompaq, Tipo, 2, 1, CveProveedor:=CveProveedor, IdCompaq:=IdCuentaAltaCompaq) + + If CvecuentaNueva > 0 Then + If ObjContabilidad.AddCuentasAsignaciones(CveConceptoContable, UsuarioActual.CveEmpresa, CvecuentaNueva, CveProveedor:=CveProveedorCuenta, PorcentajeIVA:=0) Then + Respuesta = True + End If + End If + + End If + End If + Else + Respuesta = True + End If + + If DisposeClases Then + ObjContabilidad.Dispose() + + If Not Respuesta Then + Alert("Se presento un error al agregar y asignar la cuenta (Conta SIG).", TipoMensaje.MsgAdvertencia) + End If + + End If + + + + + Return Respuesta + End Function + + + #End Region #Region "U S U A R I O S" @@ -4113,7 +4177,7 @@ Partial Class Compras_Proveedores Dim ObjContabilidad As New ClsContPAQi(UsuarioActual.Empresa) '' 17/03/2017 FUNCIONALIDADES 249,250,251 - '' Proveedores + '' Dim ClaveFuncionalidad As Integer = UsuarioActual.Empresa.Funcionalidad(201).ToEntero If DdlCveTipoProveedor.SelectedValue = "2" Then ClaveFuncionalidad = UsuarioActual.Empresa.Funcionalidad(202).ToEntero If DdlCtaContProveedores.SelectedValue.ToEntero <= 0 And ClaveFuncionalidad > 0 Then @@ -4282,15 +4346,19 @@ Partial Class Compras_Proveedores End Sub Private Sub AgregarCuentaContable(btn As Button, ddl As DropDownList) + If UsuarioActual.Empresa.TipoContabilidad = 2 AndAlso UsuarioActual.Empresa.UsaContabilidad = True Then Dim IdCuentaContable As Integer = -1 Dim CtaCodigo As String = "" Dim TieneError = False Dim IdCtaContableProveedores As Integer = -1, IdCtaContableAcreedores As Integer = -1, IdCtaContableDocsXPagar As Integer = -1, IdCtaContableAnticipos As Integer = -1, IdCtaContableDeudor As Integer = -1 Dim CtaCodigoProveedores As String = "-1", CtaCodigoAcreedores As String = "-1", CtaCodigoDocsXPagar As String = "-1", CtaCodigoAnticipos As String = "-1", CtaCodigoDeudor As String = "-1" + Dim CveConceptoContable As Integer = -1 + Dim Codigo As String = "" Dim ObjContaAC As New ClsContPAQi(UsuarioActual.Empresa) Dim ObjProveedores As New ClsCompProveedores() + ObjContaAC.IniciaTransacSQL() ObjProveedores.IniciaTransacSQL() @@ -4302,15 +4370,26 @@ Partial Class Compras_Proveedores Select Case btn.CommandArgument.ToString Case "Proveedores" CuentaPadre = If(DdlCveTipoProveedor.SelectedValue = "2", UsuarioActual.Empresa.Funcionalidad(202).ToEntero, UsuarioActual.Empresa.Funcionalidad(201).ToEntero) + + If DdlCveTipoProveedor.SelectedValue.ToEntero.Contiene(1, 3) Then + CveConceptoContable = 5 + Else + CveConceptoContable = 305 + End If + Case "Acreedores" CuentaPadre = UsuarioActual.Empresa.Funcionalidad(202).ToEntero + CveConceptoContable = 305 Case "DocsXPagar" CuentaPadre = UsuarioActual.Empresa.Funcionalidad(203).ToEntero + CveConceptoContable = 50 Case "Anticipos" CuentaPadre = UsuarioActual.Empresa.Funcionalidad(204).ToEntero TipoCuenta = "A" + CveConceptoContable = 10 Case "Deudores" CuentaPadre = UsuarioActual.Empresa.Funcionalidad(205).ToEntero + CveConceptoContable = 10 End Select @@ -4327,6 +4406,7 @@ Partial Class Compras_Proveedores Dim row As DataRow = dt.Rows(0) CtaCodigo = CStr(row("CtaCodigo")) + Codigo = CStr(row("Codigo")) Select Case btn.CommandArgument.ToString Case "Proveedores" @@ -4359,6 +4439,12 @@ Partial Class Compras_Proveedores TieneError = True End If + + If Not AltaCuentaContabilidadSIG(Codigo, NombreCuenta, IdCuentaContable, CveConceptoContable, ObjProveedores.IniciaTransacSQL, IdCompaqPadre:=CuentaPadre, CveProveedorCuenta:=CveProveedor) Then + TieneError = True + End If + + If Not TieneError Then Alert(String.Format("Se registo la Cuenta Contable: {0}", CtaCodigo, TipoMensaje.MsgInformacion)) ddl.Items.Add(New ListItem(CtaCodigo, IdCuentaContable.ToString)) : ddl.SelectedValueExist(IdCuentaContable.ToString) From 4d3dfca414168039dc6b6d31f7db047fd9bd91f3 Mon Sep 17 00:00:00 2001 From: Jonathan Alexis Perez Morales Date: Thu, 6 Jul 2023 16:35:14 -0700 Subject: [PATCH 2/3] --parche para cancelacion de facturas emitidas con el PAC 5 --- App_Code/Timbrado.vb | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/App_Code/Timbrado.vb b/App_Code/Timbrado.vb index d6d8c9bc3..b1c6e5157 100644 --- a/App_Code/Timbrado.vb +++ b/App_Code/Timbrado.vb @@ -222,6 +222,11 @@ Public Class Timbrado ValidaFactura = False End If + 'TEMPORAL. PARCHE PARA CANCELAR DOCUMENTOS EMITIDOS CON EL PAC 5 + If CvePACCancelacion = 5 Then + CvePACCancelacion = 4 + End If + If Not (Empresa.Funcionalidad(529) = "1") Then If ValidaFactura Then Dim Vigencia = VerificarVigenciaSAT(FolioFiscal, RFCEmisor, RFCReceptor, Total.ToString(), True) From df391f3731caa3e10cf024c3eac8ab3f9ea44695 Mon Sep 17 00:00:00 2001 From: Jonathan Alexis Perez Morales Date: Thu, 6 Jul 2023 16:36:19 -0700 Subject: [PATCH 3/3] Correcion de acuse de cancelacion --- Compras/PopUpVerFactura.aspx.vb | 26 ++++++++++---------------- 1 file changed, 10 insertions(+), 16 deletions(-) diff --git a/Compras/PopUpVerFactura.aspx.vb b/Compras/PopUpVerFactura.aspx.vb index 01a91c951..be81921ca 100644 --- a/Compras/PopUpVerFactura.aspx.vb +++ b/Compras/PopUpVerFactura.aspx.vb @@ -5782,17 +5782,16 @@ Partial Class PopUpVerFactura Dim EstadoCancelacion = drv("EstadoCancelacion").ToString() Dim FechaCancelacion = drv("FechaCancelacion").ToString.ToDateTime - Dim MotivoCancelacion As String = "" ' drv("MotivoCancelacion").ToString() - Dim FolioSustitucion As String = "" ' drv("FolioFiscalPadre").ToString() + Dim MotivoCancelacion As String = "" + Dim FolioSustitucion As String = "" - Dim DirectorioArchivo As String = String.Format("{0}Empresas\Grales\Formatos\AcuseCancelacion.mrt", ModExtensiones.DirectorioBaseEmpresas) + Dim DirectorioArchivo As String = "Empresas/Grales/Formatos/AcuseCancelacion.mrt" Dim RFCEmisor = UsuarioActual.Empresa.RFC Dim Titulo As String = "Acuse de cancelación de CFDI" Dim EstadoCFDI As String = "Cancelado" - 'SI NO TIENE EL SELLO BUSCA OBTNERLO DE NUEVO If String.IsNullOrEmpty(SelloCancelacion) Then Dim ObjCancelacion As New Timbrado @@ -5807,7 +5806,7 @@ Partial Class PopUpVerFactura If CveEstatusFactura = 20 Then - DirectorioArchivo = String.Format("{0}Empresas\Grales\Formatos\AcuseCancelacionSolicitud.mrt", ModExtensiones.DirectorioBaseEmpresas) + DirectorioArchivo = "Empresas/Grales/Formatos/AcuseCancelacionSolicitud.mrt" Titulo = "Acuse de solicitud de cancelación de CFDI" EstadoCFDI = "Vigente" @@ -5851,8 +5850,6 @@ Partial Class PopUpVerFactura End If End If - Dim Archivo As New System.IO.FileInfo(DirectorioArchivo) - Dim params As New List(Of ReportParameter) params.Add(New ReportParameter("Titulo", Titulo)) params.Add(New ReportParameter("FolioFiscal", FolioFiscal)) @@ -5864,16 +5861,13 @@ Partial Class PopUpVerFactura params.Add(New ReportParameter("MsgError", "")) params.Add(New ReportParameter("FechaCancelacion", FechaCancelacion.ToString("dd/MM/yyyy HH:mm:ss"))) - 'ImprimirPDF(Archivo.FullName, DtDetalle, params, "AcuseCancelacion" & CveVenta) - - Dim DtAcuse As DataTable = Nothing + Dim DtAcuse = New DataTable("DtAcuse") + DtAcuse.Columns.Add(New DataColumn("FolioFiscal", GetType(String))) + DtAcuse.Columns.Add(New DataColumn("Estatus", GetType(String))) + DtAcuse.Columns.Add(New DataColumn("MotivoCancelacion", GetType(String))) + DtAcuse.Columns.Add(New DataColumn("FolioSustitucion", GetType(String))) If CveEstatusFactura = 20 Then - DtAcuse = New DataTable("DtAcuse") - DtAcuse.Columns.Add(New DataColumn("FolioFiscal", GetType(String))) - DtAcuse.Columns.Add(New DataColumn("Estatus", GetType(String))) - DtAcuse.Columns.Add(New DataColumn("MotivoCancelacion", GetType(String))) - DtAcuse.Columns.Add(New DataColumn("FolioSustitucion", GetType(String))) Dim RowCFDI = DtAcuse.NewRow() @@ -5886,7 +5880,7 @@ Partial Class PopUpVerFactura End If - ImprimirPDFStimulsoft(Archivo.FullName, DtAcuse, params, "AcuseCancelacion" & CveVenta) + ImprimirPDFStimulsoft(DirectorioArchivo, DtAcuse, params, "AcuseCancelacion" & CveVenta) End If