Saldos Iniciales Ventas detalles

This commit is contained in:
rakcsle
2025-01-03 18:54:23 -07:00
parent 762b838449
commit 9df8959641

View File

@@ -2,6 +2,7 @@
Option Explicit On Option Explicit On
Imports System.Data Imports System.Data
Imports System.Math Imports System.Math
Imports ADSNetLibrary.SIGAPI.Models.OC.Response
Imports ClosedXML.Excel Imports ClosedXML.Excel
Imports DocumentFormat.OpenXml.Drawing.Diagrams Imports DocumentFormat.OpenXml.Drawing.Diagrams
Imports Extensiones Imports Extensiones
@@ -2444,6 +2445,8 @@ Partial Class General_SaldosIniciales
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, Total - Saldo, Total - Saldo, 95, Folio.ToString(), Folio.ToString(), CveVenta:=CveVenta, CveCliente:=CveCliente, Contabilizable:=False) Then ErrorVentas = True : Exit For If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, Total - Saldo, Total - Saldo, 95, Folio.ToString(), Folio.ToString(), CveVenta:=CveVenta, CveCliente:=CveCliente, Contabilizable:=False) Then ErrorVentas = True : Exit For
End If End If
Else Else
'ANTICIPOS 'ANTICIPOS
Dim CveIE As Integer = ObjIE.AddBancos_IE(1, 1, Fecha, Folio.ToString(), "", Total, 1, Dim CveIE As Integer = ObjIE.AddBancos_IE(1, 1, Fecha, Folio.ToString(), "", Total, 1,
@@ -2479,6 +2482,7 @@ Partial Class General_SaldosIniciales
ElseIf RblFormato.SelectedValue = "17" Then ElseIf RblFormato.SelectedValue = "17" Then
Dim NoEncontrados As Integer = 0 Dim NoEncontrados As Integer = 0
Dim VentasAgregadas As Integer = 0
Dim Encontrados As Integer = 0 Dim Encontrados As Integer = 0
Dim StrRFCNoencontrados As New StringBuilder Dim StrRFCNoencontrados As New StringBuilder
Dim drr As DataRow = GlobalDTPS(UsuarioActual.CveEmpresa).FiltroPrimero("AplicaParaVenta = 1") Dim drr As DataRow = GlobalDTPS(UsuarioActual.CveEmpresa).FiltroPrimero("AplicaParaVenta = 1")
@@ -2519,7 +2523,285 @@ Partial Class General_SaldosIniciales
Dim CountRow As Integer = 1 Dim CountRow As Integer = 1
Dim LastSerieFolioTipoDoc As String = String.Empty Dim LastSerieFolioTipoDoc As String = String.Empty
Dim EsDetalle As Boolean = False Dim EsDetalle As Boolean = False
If UsuarioActual.CveEmpresa = 189 Then
Dim DTFoliosFiscales As DataTable = dt.FiltraParametros("", "", {"Folio Fiscal"})
For Each drFolioFiscal As DataRow In DTFoliosFiscales.Rows
Dim FolioFiscalActual As String = drFolioFiscal("Folio Fiscal").ToString
Dim DRVentaActual As DataRow = dt.FiltroPrimero($"[Folio Fiscal] = '{FolioFiscalActual}'")
Dim Sucursal As String = dtsubp.FiltroPrimeroValor("CveSubProyecto", $"SubProyecto = '{DRVentaActual("Sucursal").ToString()}'")
Dim TipoDocto As String = DRVentaActual("Tipo Documento").ToString().Trim
Dim RFC As String = DRVentaActual("RFC").ToString().Trim.Replace("-", "").Replace(" ", "")
Dim Serie As String = DRVentaActual("Serie").ToString().Trim
Dim Folio As Integer = DRVentaActual("Folio").ToString().ToEntero()
Dim Fecha As Date = DRVentaActual("Fecha").ToString().ToDate
Dim FechaVencimiento As Date = DRVentaActual("Fecha Vencimiento").ToString().ToDate
Dim ImpuestoLocal As Decimal = If(dt.Columns.Contains("ImpuestoLocal"), DRVentaActual("ImpuestoLocal").ToString().ToDecimal, 0D)
Dim Amortizacion As Decimal = If(dt.Columns.Contains("Amort.Ant"), DRVentaActual("Amort.Ant").ToString().ToDecimal, 0)
Dim CveCliente As Integer = DtClientes.FiltroPrimeroValor("CveCliente", $"RFC = '{RFC}'").ToString().ToEntero()
If LastSerieFolioTipoDoc = $"{Serie}{Folio}{TipoDocto}" AndAlso UsuarioActual.CveEmpresa = 189 Then
EsDetalle = True
Else
LastSerieFolioTipoDoc = $"{Serie}{Folio}{TipoDocto}"
EsDetalle = False
End If
Dim SubTotal As Decimal = 0
Dim IVA As Decimal = 0
Dim Total As Decimal = 0
Dim Saldo As Decimal = 0
Dim RetIVA As Decimal = 0
Dim RetISR As Decimal = 0
Dim IEPS As Decimal = 0
SubTotal = DRVentaActual("SubTotal").ToString().ToDecimal
IVA = DRVentaActual("IVA").ToString().ToDecimal
Total = DRVentaActual("Total").ToString().ToDecimal
Saldo = DRVentaActual("Saldo").ToString().ToDecimal
RetIVA = DRVentaActual("Ret IVA").ToString().ToDecimal
RetISR = DRVentaActual("Ret ISR").ToString().ToDecimal
IEPS = DRVentaActual("IEPS").ToString().ToDecimal
Dim Moneda As String = DRVentaActual("Moneda").ToString()
Dim TipoCambio As String = DRVentaActual("Tipo Cambio").ToString()
Dim CveMoneda As Integer = 1
Dim Vendedor As String = If(dt.Columns.Contains("Vendedor"), DRVentaActual("Vendedor").ToString(), "")
Dim CveVendedor As Integer = 0
Dim CveClienteSucursal As Integer = 0 'Row("CveClienteSucursal").ToString().ToEntero()
'Dim FolioFiscal As String = If(dt.Columns.Contains("Folio Fiscal"), DRVentaActual("Folio Fiscal").ToString(), "")
Dim PorcentajeIVA As Decimal = If(dt.Columns.Contains("PorcentajeIVA"), Round(DRVentaActual("PorcentajeIVA").ToString().ToDecimal, 2), 0)
Dim PorcentajeRetIVA As Decimal = If(dt.Columns.Contains("PorcentajeRetIVA"), Round(DRVentaActual("PorcentajeRetIVA").ToString().ToDecimal, 4), 0)
Dim PorcentajeRetISR As Decimal = If(dt.Columns.Contains("PorcentajeRetISR"), Round(DRVentaActual("PorcentajeRetISR").ToString().ToDecimal, 4), 0)
Dim PedidoContrato As String = If(dt.Columns.Contains("Pedido"), DRVentaActual("Pedido").ToString(), "")
GuardaLog(Sucursal + "-" + DRVentaActual("Folio").ToString())
'Temporalmente SE BORRARA
Dim Transaccion As String = "" ' Row("Transaccion2").ToString()
Dim Folio2 As String = "" ' Row("Folio2").ToString()
Dim CodCliente As String = "" 'Row("CodCliente2").ToString()
TipoDocto = IIf(TipoDocto.ToUpper.Contiene("INGRESO", "INGRESOS", "ING", "FACTURA", "FACTURAS"), "Ing", IIf(TipoDocto.ToUpper.Contiene("EGRESO", "EGRESOS", "EGS"), "Egs", "Rem")).ToString()
'Dim CantidadDetalle As Decimal = 0
'Dim PUDetalle As Decimal = 0
'Dim IVADetalle As Decimal = 0
Dim PorcentajeIEPS As Decimal = 0
Dim TotalDetalles As Decimal = 0
For Each dRowDetalle As DataRow In dt.FiltraParametros($"[Folio Fiscal]='{FolioFiscalActual}'").Rows
Dim CantidadDetalle As Decimal = dRowDetalle("Cantidad").ToString.ToDecimal 'digo PU IVADetalle
Dim PuDetalle As Decimal = dRowDetalle("PU").ToString.ToDecimal
Dim IVADetalle As Decimal = dRowDetalle("IVADetalle").ToString.ToDecimal
Dim IEPSDetalle As Decimal = dRowDetalle("IEPS").ToString.ToDecimal
TotalDetalles += (CantidadDetalle * PuDetalle) + IVADetalle + IEPSDetalle
Next
If IEPS > 0 Then
PorcentajeIEPS = If(dt.Columns.Contains("PorcentajeIEPS"), Round(DRVentaActual("PorcentajeIEPS").ToString().ToDecimal, 4), 0)
End If
If Math.Abs(TotalDetalles - Total) > 0.01 Then
ErrorVentas = True
Alert($"Registro {CountRow} El total no coincide con el acumulado de los detalles, total: {Total.ToString("###,###,###.00")} detatalle: {TotalDetalles.ToString("###,###,###.00")}", TipoMensaje.MsgAdvertencia)
Exit For
End If
If Vendedor <> "" Then
CveVendedor = GlobalDTVendedores(UsuarioActual.CveEmpresa, VendedorTipo:=-1).FiltroPrimeroValor("CveVendedor", $"Vendedor = '{Vendedor}'").ToString().ToEntero()
If Not CveVendedor > 0 Then CveVendedor = 0
Else
CveVendedor = 0
End If
If Moneda.ToUpper.Contiene("PESOS", "PESO", "MXN") Then
CveMoneda = 1
TipoCambio = "1"
ElseIf Moneda.ToUpper.Contiene("DÓLAR", "DÓLARES", "DOLARES", "USD") Then
CveMoneda = 2
If TipoCambio.Trim.ToDecimal < 10 Then
If UsuarioActual.CveEmpresa.Contiene(13, 83) Then
TipoCambio = GlobalTipoCambio(Fecha.AddDays(-1)).ToString()
Else
TipoCambio = GlobalTipoCambio(Fecha).ToString()
End If
End If
End If
If TipoCambio = "" Then TipoCambio = "1"
If Not CveClienteSucursal > 0 Then CveClienteSucursal = -1
If FechaVencimiento = "".ToDate Or FechaVencimiento < "1900/01/01".ToDate Then
FechaVencimiento = Fecha
End If
If Not ErrorVentas Then
CvePrePoliza = ObjConta.AddPrePolizas("Venta/SaldoInicial", 1, Total, Total, CveMoneda, Fecha, String.Format("{0}-{1}", Serie, Folio), UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa)
If Not CvePrePoliza > 0 Then
ErrorVentas = True
End If
End If
If Not ErrorVentas Then
'Venta
If CveCliente > 0 Then
If TipoDocto.Contiene("Ing", "Egs", "Rem") Then
GuardaLog(Serie & "-" & Folio)
If Not EsDetalle Then
If Not ObjVentas.AddVenta(TipoDocto, Folio, CveCliente.ToEntero(), CveClienteSucursal, SubTotal, 0, Amortizacion, IVA, RetIVA, RetISR, Total, CveMoneda, TipoCambio.ToDecimal,
0, 0, 0, FechaVencimiento, Fecha, "", "", Fecha, CveVendedor, Folio2, "", "", 0, 0, 0, "-1".ToDate, "-1".ToDate, "-1".ToDate, -1, 0, CvePrePoliza,
UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, Serie:=Serie, CveSubProyecto:=Sucursal.ToEntero(), CveSubProyectoEjecucion:=Sucursal.ToEntero(),
CveSubProyectoCobranza:=Sucursal.ToEntero(), IEPS:=IEPS, ObservacionesAlmacen:=Transaccion, Entrega:=CodCliente, ImpuestoLocal:=ImpuestoLocal,
PedidoContrato:=PedidoContrato, CveMetodoPago33:=3) Then
ErrorVentas = True
Exit For
Else
VentasAgregadas += 1
End If
CveVenta = ObjVentas.CveVenta
End If
For Each dRowDetalle As DataRow In dt.FiltraParametros($"[Folio Fiscal]='{FolioFiscalActual}'").Rows
Dim CantidadDetalle As Decimal = dRowDetalle("Cantidad").ToString.ToDecimal 'digo PU IVADetalle
Dim PuDetalle As Decimal = dRowDetalle("PU").ToString.ToDecimal
Dim IVADetalle As Decimal = dRowDetalle("IVADetalle").ToString.ToDecimal
Dim IEPSDetalle As Decimal = dRowDetalle("IEPS").ToString.ToDecimal
Dim PorcentajeIEPSDetalle = dRowDetalle("PorcentajeIEPS").ToString.ToDecimal
Dim CodigoDetalle As String = dRowDetalle("Codigo").ToString
If CodigoDetalle.Trim.Length > 0 Then
Dim DrDetalles As DataRow = GlobalDTPS(UsuarioActual.CveEmpresa).FiltroPrimero($"Codigo = '{CodigoDetalle}'")
If DrDetalles IsNot Nothing Then
CvePS = DrDetalles("CvePS").ToString().ToEntero()
CveUnidadMedida = DrDetalles("CveUnidadMedida").ToString().ToEntero()
CveClasificacion = DrDetalles("CveClasificacion").ToString().ToEntero()
Else
Alert($"El código del producto no se encontro, error en registro {CountRow}")
ErrorVentas = True
End If
Else
Alert($"El código es requerido, error en registro {CountRow}")
ErrorVentas = True
End If
If Not ErrorVentas Then
If Not ObjVentas.AddVentaDetalle(CveVenta, CvePS, CantidadDetalle, CveUnidadMedida, PuDetalle, IVADetalle, TotalDetalles, "Saldo Inicial", 0, 0, Sucursal.ToEntero(), 0,
PorcentajeIVA:=PorcentajeIVA, PorcentajeRetIVA:=PorcentajeRetIVA, ImporteRetIVA:=0, IEPS:=IEPSDetalle, PorcentajeRetISR:=0, PorcentajeIEPS:=PorcentajeIEPSDetalle) Then
ErrorVentas = True
Exit For
End If
End If
Next
Dim ConceptoContable As Integer = 1
Dim ConceptoContablePago As Integer = 2
If TipoDocto = "Egs" Then
ConceptoContable = 12
ConceptoContablePago = 91
End If
If FolioFiscalActual <> "" Then
If Not ObjVentas.UpdateVentaFolioFiscal(FolioFiscalActual, CveVenta, UsuarioActual.CveEmpresa) Then
ErrorVentas = True
Exit For
End If
End If
Dim UsaComplementaria As Boolean = False
If UsuarioActual.CveEmpresa.Contiene(119, 158) Then UsaComplementaria = True
'PrePólizaDetalle
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, SubTotal, SubTotal, 4, Folio.ToString(), String.Format("{0}-{1}", Serie, Folio), CveVenta:=CveVenta, CveCliente:=CveCliente, CveClasificacion:=CveClasificacion, CveSubProyecto:=Sucursal.ToEntero(), PorcentajeImpuesto:=PorcentajeIVA, Contabilizable:=False) Then ErrorVentas = True : Exit For
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, Total, Total, ConceptoContable, Folio.ToString(), String.Format("{0}-{1}", Serie, Folio), CveVenta:=CveVenta, CveCliente:=CveCliente, PorcentajeImpuesto:=PorcentajeIVA, Contabilizable:=False) Then ErrorVentas = True : Exit For
If IVA > 0 Then
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, IVA, IVA, 13, Folio.ToString(), String.Format("{0}-{1}", Serie, Folio), CveVenta:=CveVenta, CveCliente:=CveCliente, PorcentajeImpuesto:=PorcentajeIVA, Contabilizable:=False) Then ErrorVentas = True : Exit For
End If
If IEPS > 0 Then
'AndAlso Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, IEPS, Folio, 38, String.Format("{0}-{1}", Serie, Folio), CveVenta:=CveVenta, CveCliente:=CveCliente, ImporteMX:=IEPS)
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, IEPS, IEPS, 38, Folio.ToString, String.Format("{0}-{1}", Serie, Folio), CveVenta:=CveVenta, CveCliente:=CveCliente, Contabilizable:=False) Then ErrorVentas = True : Exit For
End If
If RetIVA > 0 Then
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, RetISR, RetISR, 8, Folio.ToString(), String.Format("{0}-{1}", Serie, Folio), CveVenta:=CveVenta, CveCliente:=CveCliente, PorcentajeImpuesto:=PorcentajeRetISR, Contabilizable:=False) Then ErrorVentas = True : Exit For
End If
If RetISR > 0 Then
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, RetISR, RetISR, 9, Folio.ToString(), String.Format("{0}-{1}", Serie, Folio), CveVenta:=CveVenta, CveCliente:=CveCliente, PorcentajeImpuesto:=PorcentajeRetISR, Contabilizable:=False) Then ErrorVentas = True : Exit For
End If
If ImpuestoLocal > 0 Then
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, ImpuestoLocal, ImpuestoLocal, 27, Folio.ToString(), String.Format("{0}-{1}", Serie, Folio), CveVenta:=CveVenta, CveCliente:=CveCliente, PorcentajeImpuesto:=PorcentajeIVA, Contabilizable:=False) Then ErrorVentas = True : Exit For
End If
If UsaComplementaria Then
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, Total * TipoCambio.ToDecimal - Total, Total * TipoCambio.ToDecimal - Total, 203, Folio.ToString(), String.Format("{0}-{1}", Serie, Folio), CveVenta:=CveVenta, CveCliente:=CveCliente, ImporteME:=Total, TipoCambio:=TipoCambio.ToDecimal, Contabilizable:=False) Then ErrorVentas = True : Exit For
End If
'Saldo
If Saldo < Total Then
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, Total - Saldo, Total - Saldo, ConceptoContablePago, Folio.ToString(), Folio.ToString(), CveVenta:=CveVenta, CveCliente:=CveCliente, CveVentaAmortizacion:=CveVenta, Contabilizable:=False) Then ErrorVentas = True : Exit For
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, Total - Saldo, Total - Saldo, 95, Folio.ToString(), Folio.ToString(), CveVenta:=CveVenta, CveCliente:=CveCliente, Contabilizable:=False) Then ErrorVentas = True : Exit For
End If
If Not ErrorVentas Then
VentasAgregadas += VentasAgregadas
End If
Else
'ANTICIPOS
Dim CveIE As Integer = ObjIE.AddBancos_IE(1, 1, Fecha, Folio.ToString(), "", Total, 1, 1, "Anticipo Cliente", "", False, False, -1, CvePrePoliza, "", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa)
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, Total, Total, 30, Folio.ToString(), String.Format("{0}-{1}", Serie, Folio), CveIE:=CveIE, CveCliente:=CveCliente, Contabilizable:=False) Then ErrorVentas = True : Exit For
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, Total, Total, 66, Folio.ToString(), String.Format("{0}-{1}", Serie, Folio), CveIE:=CveIE, CveCliente:=CveCliente, Contabilizable:=False) Then ErrorVentas = True : Exit For
End If
'_______________________________________________________________
Else
NoEncontrados = NoEncontrados + 1
StrRFCNoencontrados.AppendFormat("{0}<br/>", RFC)
'ErrorVentas = True
'Exit For
End If
End If
Next
Else
For Each Row As DataRow In dt.FiltraParametros("RFC <> ''").Rows For Each Row As DataRow In dt.FiltraParametros("RFC <> ''").Rows
Dim Sucursal As String = dtsubp.FiltroPrimeroValor("CveSubProyecto", $"SubProyecto = '{Row("Sucursal").ToString()}'") Dim Sucursal As String = dtsubp.FiltroPrimeroValor("CveSubProyecto", $"SubProyecto = '{Row("Sucursal").ToString()}'")
Dim TipoDocto As String = Row("Tipo Documento").ToString().Trim Dim TipoDocto As String = Row("Tipo Documento").ToString().Trim
Dim RFC As String = Row("RFC").ToString().Trim.Replace("-", "").Replace(" ", "") Dim RFC As String = Row("RFC").ToString().Trim.Replace("-", "").Replace(" ", "")
@@ -2558,6 +2840,7 @@ Partial Class General_SaldosIniciales
RetISR += item("Ret ISR").ToString().ToDecimal RetISR += item("Ret ISR").ToString().ToDecimal
IEPS += item("IEPS").ToString().ToDecimal IEPS += item("IEPS").ToString().ToDecimal
Next Next
Else Else
SubTotal = Row("SubTotal").ToString().ToDecimal SubTotal = Row("SubTotal").ToString().ToDecimal
IVA = Row("IVA").ToString().ToDecimal IVA = Row("IVA").ToString().ToDecimal
@@ -2698,6 +2981,8 @@ Partial Class General_SaldosIniciales
PedidoContrato:=PedidoContrato, CveMetodoPago33:=3) Then PedidoContrato:=PedidoContrato, CveMetodoPago33:=3) Then
ErrorVentas = True ErrorVentas = True
Exit For Exit For
Else
VentasAgregadas += 1
End If End If
CveVenta = ObjVentas.CveVenta CveVenta = ObjVentas.CveVenta
End If End If
@@ -2721,7 +3006,7 @@ Partial Class General_SaldosIniciales
If Math.Abs(TotalDetalles - Total) > 0.01 Then If Math.Abs(TotalDetalles - Total) > 0.01 Then
ErrorVentas = True ErrorVentas = True
Alert($"Registro {CountRow} El total no councide con el calculo de los detalles, total: {Total.ToString("###,###,###.00")} calculo detatalles: {TotalDetalles.ToString("###,###,###.00")}", TipoMensaje.MsgAdvertencia) Alert($"Registro {CountRow} El total no coincide con el acumulado de los detalles, total: {Total.ToString("###,###,###.00")} detatalle: {TotalDetalles.ToString("###,###,###.00")}", TipoMensaje.MsgAdvertencia)
Exit For Exit For
End If End If
@@ -2854,8 +3139,24 @@ Partial Class General_SaldosIniciales
CountRow = CountRow + 1 CountRow = CountRow + 1
Next Next
End If
'**********************************************************************************************************************************************************************************
If Not ErrorVentas Then If Not ErrorVentas Then
If UsuarioActual.CveEmpresa = 189 Then
Alert(String.Format("Se agregaron: <b>{0}</b> Ventas correctamente. <b>{1} no encontrados</b><br/>{2} ", VentasAgregadas, NoEncontrados, StrRFCNoencontrados), TipoMensaje.MsgInformacion)
Else
Alert(String.Format("Se agregaron: <b>{0}</b> Ventas correctamente. <b>{1} no encontrados</b><br/>{2} ", Encontrados, NoEncontrados, StrRFCNoencontrados), TipoMensaje.MsgInformacion) Alert(String.Format("Se agregaron: <b>{0}</b> Ventas correctamente. <b>{1} no encontrados</b><br/>{2} ", Encontrados, NoEncontrados, StrRFCNoencontrados), TipoMensaje.MsgInformacion)
End If
ObjVentas.Commit() ObjVentas.Commit()
TxtExcel.Text = "" TxtExcel.Text = ""
UpDatos.Update() UpDatos.Update()