This commit is contained in:
Oscar Irigoyen
2022-09-19 10:17:58 -07:00
20 changed files with 1192 additions and 491 deletions

View File

@@ -4838,6 +4838,7 @@ Partial Class Compras_Compras
CompraActual.TC = TipoCambio
CompraActual.Total = TxtTotal.Text.ToDecimal
CompraActual.IVA = TxtIVA.Text.ToDecimal
CompraActual.IVADeducible = TxtIVA.Text.ToDecimal
CompraActual.IEPS = TxtIEPS.Text.ToDecimal
CompraActual.RetIVA = TxtRetIVA.Text.ToDecimal
CompraActual.RetISR = TxtRetISR.Text.ToDecimal
@@ -8386,63 +8387,36 @@ Partial Class Compras_Compras
End If
Dim CveCompraNC, IdCtaContable As Integer
Dim PorcentajePago, ImporteMovimiento, sumaAmortizacion, sumaAmortizacionCompleto As Decimal
Dim PorcentajePago As Decimal
Dim ConceptoPoliza As String = $"Amortización {NombreProveedor} - {TxtSerie.Text}-{TxtFolio.Text}"
Dim CompraUnificada As Boolean = False
Dim IVACompleto As Boolean = False
Dim IdCtaIVAXAcreditar As Integer = 0
Dim IdCtaIVAAcreditable As Integer = 0
'PorcentajeIVA
If GlobalDTClasificacionPorcentaje(UsuarioActual.CveEmpresa, PorcentajeIVA:=TmpDT.MAX("IVAPorcentaje").ToDouble).Rows.Count > 0 Then
IdCtaIVAXAcreditar = GlobalDTClasificacionPorcentaje(UsuarioActual.CveEmpresa, PorcentajeIVA:=TmpDT.MAX("IVAPorcentaje").ToDouble).Rows(0)("IdCtaIVAXAcreditar").ToString.ToEntero
IdCtaIVAAcreditable = GlobalDTClasificacionPorcentaje(UsuarioActual.CveEmpresa, PorcentajeIVA:=TmpDT.MAX("IVAPorcentaje").ToDouble).Rows(0)("IdCtaIVAAcreditable").ToString.ToEntero
End If
Try
Dim CveIE As Integer = -1
For Each gvr As GridViewRow In GVAnticipos.Rows
If gvr.FCCheckBox("Chk") IsNot Nothing AndAlso gvr.FCCheckBox("Chk").Checked Then
If gvr.FCCheckBox("Chk") IsNot Nothing AndAlso gvr.FCCheckBox("Chk").Checked Then
CveCompraNC = gvr.DataKey("CveCompra").ToEntero
If CvePrePoliza > 0 Then
CveCompraNC = gvr.DataKey("CveCompra").ToEntero
If CvePrePoliza > 0 Then
Dim CveConceptoCompra As Integer = 60
Dim CveConceptoCompra As Integer = 60
Dim TipoMovimientoCompra As Boolean = True
Select Case gvr.DataKey("TipoDocto")
Case "NC", "DEV"
CveConceptoCompra = 60
CveIE = -1
Case "Egsc"
CveConceptoCompra = 21
'vinculo la compra actual, y no la compra como si fuera nota de credito
CveCompraNC = -1
CveIE = gvr.DataKey("CveIE").ToEntero
Case "DD"
CveConceptoCompra = 37
'vinculo la compra actual, y no la compra como si fuera nota de credito
CveCompraNC = -1
CveIE = gvr.DataKey("CveIE").ToEntero
End Select
Dim CveConceptoPago As Integer = 17
If CveTipoConcepto = 2 Then CveConceptoPago = 308 'cuando es acreedor
If CveMoneda <> 1 Then
Select Case CveConceptoPago
Case 17
CveConceptoPago = 312
Case 308
CveConceptoPago = 309
Case Else
End Select
End If
Dim TipoMovimientoCompra As Boolean = True
Select Case gvr.DataKey("TipoDocto")
Case "NC", "DEV"
CveConceptoCompra = 60
CveIE = -1
CveConceptoPago = 272
Case "Egsc"
CveConceptoCompra = 21
'vinculo la compra actual, y no la compra como si fuera nota de credito
CveCompraNC = -1
CveIE = gvr.DataKey("CveIE").ToEntero
Case "DD"
CveConceptoCompra = 37
'vinculo la compra actual, y no la compra como si fuera nota de credito
CveCompraNC = -1
CveIE = gvr.DataKey("CveIE").ToEntero
End Select
PorcentajePago = gvr.FCTextBox("TxtAnticipo").Text.ToDecimal / TxtTotal.Text.ToDecimal
PorcentajePago = gvr.FCTextBox("TxtAnticipo").Text.ToDecimal / TxtTotal.Text.ToDecimal
Dim ImporteAnt As Decimal = gvr.FCTextBox("TxtAnticipo").Text.ToDecimal
@@ -8463,7 +8437,6 @@ Partial Class Compras_Compras
End If
End If
Dim Pago As New CompraPago
Pago.ImportePago = ImporteAnt
Pago.CveIE = CveIE
@@ -8483,6 +8456,7 @@ Partial Class Compras_Compras
CompraActual.TC = TipoCambio
CompraActual.Total = TxtTotal.Text.ToDecimal
CompraActual.IVA = TxtIVA.Text.ToDecimal
CompraActual.IVADeducible = TxtIVA.Text.ToDecimal
CompraActual.IEPS = TxtIEPS.Text.ToDecimal
CompraActual.RetIVA = TxtRetIVA.Text.ToDecimal
CompraActual.RetISR = TxtRetISR.Text.ToDecimal
@@ -8495,37 +8469,19 @@ Partial Class Compras_Compras
CompraActual.IdCtaContableProvComplementaria = CtaProveedorComplementaria
CompraActual.EsImportacion = chkImportacion.Checked
AplicaPrePolizaPagoCompra(CompraActual, pago, CvePrePoliza, ObjConta)
'If gvr.DataKey("TipoDocto").Contiene("NC", "DEV") Then
' If Not ObjCompra.AmortizarCompra(CveCompra, CveCompraNC, gvr.FCTextBox("TxtAnticipo").Text.ToDouble, UsuarioActual.CveUsuario) Then
' ErrorMovtosCxP = 2
' Exit For
' End If
'End If
End If
End If
Next
End If
Next
Select Case ErrorMovtosCxP
Select Case ErrorMovtosCxP
Case 0
Alert("El movimiento se aplicó correctamente.", TipoMensaje.MsgInformacion)
ObjCompra.Commit()
Dim dtnc As DataTable = Nothing
If ObjCompra.GetComprasNotasCredito(CveCompra, -1) Then
dtnc = ObjCompra.DtResultados

View File

@@ -234,297 +234,6 @@ Partial Class PopUpVerFactura
End Sub
Public Function GeneraPDFNomina(CvePersonal As Integer, CvePeriodo As Integer, CveEmpresa As Integer, RutaEmpresa As String, Optional indemnizacion As Boolean = False) As Byte()
Dim ObjNomina As New ClsNominas
Dim ObjPersonal As New ClsRH
Dim TieneError = False
Dim Retorno As Byte() = Nothing
If Not ObjNomina.GetNom_Nominas(-1, CvePersonal, CvePeriodo, -1, CveEmpresa) Then
Alert("Ocurrio un erro al obtener datos de la nomina", TipoMensaje.MsgError)
ObjPersonal.Dispose()
ObjNomina.Dispose()
Return Nothing
End If
Dim CveNomina = ObjNomina.CveNomina
Dim DTPercepciones As Data.DataTable
Dim DTDeducciones As Data.DataTable
Dim DTDeducciones2 As New Data.DataTable
Dim Ruta As String = UsuarioActual.Empresa.Ruta
Dim PathXML As String = $"{Ruta}XML\Nomina\{ObjNomina.Serie }{If(indemnizacion, "F", "")}-{ObjNomina.Folio}.xml"
Dim FechaEmision, FechaCertificacion As DateTime
Dim FolioFiscal, NoSerieCertificado, NoSerieCertificadoContribuyente, SelloCFDi, SelloSAT As String
FolioFiscal = ""
NoSerieCertificado = ""
SelloCFDi = ""
SelloSAT = ""
NoSerieCertificadoContribuyente = ""
Dim RutaCBB As String = String.Format("{0}CBB\Nomina\{1}.jpg", RutaEmpresa, ObjNomina.SerieFolio)
Dim ImagenCBB As New System.IO.FileInfo(RutaCBB)
Dim ImgCBB As String
Dim RutaFormato As String = String.Format("{0}Formatos\Nomina.rdlc", RutaEmpresa)
Dim RutaFormatoDefault As String = String.Format("Empresas\Grales\Formatos\Nomina.rdlc")
'SI ESTA TIMBRADA - CON XML
If System.IO.File.Exists(PathXML) Then
Dim XmlDoc As New System.Xml.XmlDocument
'XmlDoc.Load(Ruta & "XML\\Nomina\NOM A-3845.xml")
XmlDoc.Load(PathXML)
If ValorNodoXML(XmlDoc.DocumentElement, "version").Contiene("3.3", "4.0") Then
FechaEmision = XmlDoc.DocumentElement.Attributes("Fecha").InnerText.ToDate
NoSerieCertificadoContribuyente = XmlDoc.DocumentElement.Attributes("NoCertificado").InnerText
For i As Integer = 0 To XmlDoc.DocumentElement("cfdi:Complemento").ChildNodes.Count - 1
If XmlDoc.DocumentElement("cfdi:Complemento").ChildNodes(i).Name = "tfd:TimbreFiscalDigital" Then
FolioFiscal = XmlDoc.DocumentElement("cfdi:Complemento").ChildNodes(i).Attributes("UUID").InnerText
NoSerieCertificado = XmlDoc.DocumentElement("cfdi:Complemento").ChildNodes(i).Attributes("NoCertificadoSAT").InnerText
FechaCertificacion = XmlDoc.DocumentElement("cfdi:Complemento").ChildNodes(i).Attributes("FechaTimbrado").InnerText.ToDate
SelloCFDi = XmlDoc.DocumentElement("cfdi:Complemento").ChildNodes(i).Attributes("SelloCFD").InnerText
SelloSAT = XmlDoc.DocumentElement("cfdi:Complemento").ChildNodes(i).Attributes("SelloSAT").InnerText
End If
Next
Else
FechaEmision = XmlDoc.DocumentElement.Attributes("fecha").InnerText.ToDate
NoSerieCertificadoContribuyente = XmlDoc.DocumentElement.Attributes("noCertificado").InnerText
For i As Integer = 0 To XmlDoc.DocumentElement("cfdi:Complemento").ChildNodes.Count - 1
If XmlDoc.DocumentElement("cfdi:Complemento").ChildNodes(i).Name = "tfd:timbreFiscalDigital" Then
FolioFiscal = XmlDoc.DocumentElement("cfdi:Complemento").ChildNodes(i).Attributes("UUID").InnerText
NoSerieCertificado = XmlDoc.DocumentElement("cfdi:Complemento").ChildNodes(i).Attributes("noCertificadoSAT").InnerText
FechaCertificacion = XmlDoc.DocumentElement("cfdi:Complemento").ChildNodes(i).Attributes("fechaTimbrado").InnerText.ToDate
SelloCFDi = XmlDoc.DocumentElement("cfdi:Complemento").ChildNodes(i).Attributes("selloCFD").InnerText
SelloSAT = XmlDoc.DocumentElement("cfdi:Complemento").ChildNodes(i).Attributes("selloSAT").InnerText
End If
Next
End If
'SIN TIMBRAR - SIN XML
Else
FolioFiscal = "Sin Timbrar"
NoSerieCertificado = "Sin Timbrar"
SelloCFDi = "Sin Timbrar"
SelloSAT = "Sin Timbrar"
End If
'Si no tiene CBB, SE GENERA
If Not ImagenCBB.Exists Then
Dim CBB As New ClbNegBICFDv3_2.ClsNegCBBGenerar()
If ObjPersonal.GetPersonal(CvePersonal, CveEmpresa) Then
CBB.GenerarCBB(UsuarioActual.Empresa.RFC, ObjPersonal.RFC, ObjNomina.Total.ToString.ToDecimal, FolioFiscal, RutaCBB)
End If
End If
ImgCBB = String.Format("{0}://{1}:{2}/Empresas/{3}/CBB/Nomina/{4}.jpg", Request.Url.Scheme, Request.Url.Host, Request.Url.Port, UsuarioActual.CveEmpresa, ObjNomina.SerieFolio)
Dim cQr As Byte() = Nothing
Try
Dim CadenaOriginalCFD As String = "||1.0|" + FolioFiscal + "|" + FechaCertificacion.ToString("yyyy-MM-dd") + "T" + FechaCertificacion.ToString("HH:mm:ss") + "|" + SelloCFDi + "|" + NoSerieCertificado + "||"
Dim RptParametro As New List(Of ReportParameter)
'Datos Empresa
RptParametro.Add(New ReportParameter("RegistroPatronal", ObjNomina.RegistroPatronal))
Dim ajusteindemnizacion As Double = 0
'PERCECIONES - DEDUCCIONES
If ObjNomina.GetNom_NominasDetalles(CveNomina, CvePersonal, CvePeriodo, "-1") Then
Dim filtrop As String = " AND CveSistema NOT IN(10,11,32)"
Dim friltrod As String = " AND CveSistema <>47"
If indemnizacion Then
filtrop = "AND CveSistema IN(10,11,32)"
friltrod = " AND CveSistema =47"
End If
DTPercepciones = ObjNomina.DtResultados.FiltraParametros($"((Tipo = 'P' OR (Tipo = 'D' AND Importe <0)) AND Importe <>0 AND EsPadre = 1 AND SoloVisible =0) {filtrop}")
DTDeducciones = ObjNomina.DtResultados.FiltraParametros($"(Tipo = 'D' AND Importe >0 AND EsPadre = 1 AND SoloVisible =0) {friltrod}")
DTDeducciones2 = ObjNomina.DtResultados.FiltraParametros($"((Tipo = 'D' AND Importe >0 AND EsPadre = 1 AND SoloVisible =0) OR CveSistema IN (20,21) OR CveConcepto =4714){friltrod}")
ajusteindemnizacion = ObjNomina.DtResultados.FiltraParametros($"((Tipo = 'P' OR (Tipo = 'D' AND Importe <0)) AND Importe <>0 AND EsPadre = 1 AND SoloVisible =0) AND CveSistema IN(10,11,32)").SUM("Importe") -
ObjNomina.DtResultados.FiltraParametros($"(Tipo = 'D' AND Importe >0 AND EsPadre = 1 AND SoloVisible =0) AND CveSistema =47").SUM("Importe")
For Each row As DataRow In DTPercepciones.Rows
If row("Tipo").ToString() = "D" Then
row("Codigo") = row("Codigo").ToString().Replace("D", "OP")
row("Importe") = row("Importe").ToString().ToDecimal() * -1
End If
Next
Else
DTPercepciones = Nothing
DTDeducciones = Nothing
End If
'DATOS DEL EMPLEADO
If ObjPersonal.GetPersonal(CvePersonal, CveEmpresa) Then
RptParametro.Add(New ReportParameter("NoEmpleado", ObjPersonal.Codigo))
RptParametro.Add(New ReportParameter("RFC", ObjPersonal.RFC))
RptParametro.Add(New ReportParameter("CURP", ObjPersonal.CURP))
RptParametro.Add(New ReportParameter("NombreCompleto", String.Format("{0} {1} {2}", ObjPersonal.Nombres, ObjPersonal.APaterno, ObjPersonal.AMaterno).Trim()))
RptParametro.Add(New ReportParameter("Regimen", ObjPersonal.RegimenContratacion))
RptParametro.Add(New ReportParameter("RiesgoPuesto", ObjPersonal.RiesgoPuesto))
RptParametro.Add(New ReportParameter("NSS", ObjPersonal.NumeroSS))
RptParametro.Add(New ReportParameter("Departamento", ObjPersonal.Departamento))
RptParametro.Add(New ReportParameter("Puesto", ObjPersonal.Puesto.ToString()))
RptParametro.Add(New ReportParameter("FechaIngreso", ObjPersonal.FechaIngreso.ToString("dd/MM/yyyy")))
RptParametro.Add(New ReportParameter("Contrato", ObjPersonal.TipoContrato.ToString))
RptParametro.Add(New ReportParameter("Jornada", ObjPersonal.Jornada))
RptParametro.Add(New ReportParameter("Periodo", ObjNomina.TipoPeriodo))
RptParametro.Add(New ReportParameter("SalarioBase", ObjPersonal.SalarioDiario.ToString))
RptParametro.Add(New ReportParameter("SalarioDiarioInt", ObjPersonal.SDI.ToString))
RptParametro.Add(New ReportParameter("Banco", ObjPersonal.Banco))
RptParametro.Add(New ReportParameter("CLABE", ObjPersonal.CLABE))
'DATOS NOMINA
If ObjNomina.GetNom_Nominas(CveNomina, CvePersonal, CvePeriodo, 1, CveEmpresa) Then
RptParametro.Add(New ReportParameter("ReciboNomina", ObjNomina.Folio.ToString))
RptParametro.Add(New ReportParameter("Serie", ObjNomina.Serie))
RptParametro.Add(New ReportParameter("Fecha", ObjNomina.Fecha.ToString))
RptParametro.Add(New ReportParameter("Periodo", ObjNomina.TipoPeriodo))
RptParametro.Add(New ReportParameter("DiasPagados", ObjNomina.DiasPagados.ToString))
RptParametro.Add(New ReportParameter("MetodoPago", ObjNomina.MetodoPago)) '"""PUE"" (Pago en una sola exhibición)"
RptParametro.Add(New ReportParameter("FormaPago", """99"" (Por definir)"))
RptParametro.Add(New ReportParameter("Cantidad", "1"))
RptParametro.Add(New ReportParameter("Unidad", "ACT"))
RptParametro.Add(New ReportParameter("Descripcion", "PAGO DE NÓMINA"))
RptParametro.Add(New ReportParameter("Total", If(indemnizacion, ajusteindemnizacion, ObjNomina.Total - ajusteindemnizacion).ToString()))
Dim CBB As New ClbNegBICFDv3_2.ClsNegCBBGenerar()
cQr = CBB.GenerarCBBBytes(UsuarioActual.Empresa.RFC, ObjPersonal.RFC, ObjNomina.Total.ToString().ToDecimal(), FolioFiscal)
RptParametro.Add(New ReportParameter("ImporteLetra", ObjNomina.Total.ToString.ToDouble.Texto2Letras))
RptParametro.Add(New ReportParameter("Clave", "84111505"))
Else
TieneError = True
End If
Else
TieneError = True
End If
If Not TieneError Then
If ObjNomina.GetPeriodos(-1, CveEmpresa, -1, -1, CvePeriodo) Then
RptParametro.Add(New ReportParameter("FechaInicio", ObjNomina.FechaInicio.ToString("dd/MM/yyyy")))
RptParametro.Add(New ReportParameter("FechaFin", ObjNomina.FechaFin.ToString("dd/MM/yyyy")))
Else
TieneError = True
End If
End If
RptParametro.Add(New ReportParameter("PU", DTPercepciones.SUM("Importe").ToString()))
RptParametro.Add(New ReportParameter("Importe", DTPercepciones.SUM("Importe").ToString()))
RptParametro.Add(New ReportParameter("ImporteDeducciones", DTDeducciones.SUM("Importe").ToString()))
RptParametro.Add(New ReportParameter("SubTotal", DTPercepciones.SUM("Importe").ToString()))
RptParametro.Add(New ReportParameter("Descuentos", DTDeducciones.SUM("Importe", "SATCveConcepto <> '002'").ToString()))
RptParametro.Add(New ReportParameter("ISR", DTDeducciones.SUM("Importe", "SATCveConcepto = '002'").ToString()))
'Timbrado
RptParametro.Add(New ReportParameter("FolioFiscal", FolioFiscal))
RptParametro.Add(New ReportParameter("CertificadoSAT", NoSerieCertificado))
RptParametro.Add(New ReportParameter("FechaCertificacion", FechaCertificacion.ToString))
RptParametro.Add(New ReportParameter("SelloDigitalEmisor", SelloCFDi))
RptParametro.Add(New ReportParameter("SelloDigitalSAT", SelloSAT))
RptParametro.Add(New ReportParameter("CadenaOriginal", CadenaOriginalCFD))
RptParametro.Add(New ReportParameter("QR", ImgCBB.ToString))
Dim LSRds As New List(Of ReportDataSource)
Dim rds2 = New ReportDataSource()
Dim dtqr As New DataTable
Dim column As DataColumn = New DataColumn("ImagenByte")
column.DataType = System.Type.[GetType]("System.Byte[]")
column.AllowDBNull = True
column.Caption = "ImagenByte"
dtqr.Columns.Add(column)
Dim rowqr As DataRow = dtqr.NewRow()
rowqr("ImagenByte") = cQr
dtqr.Rows.Add(rowqr)
rds2.Name = "dsImagenes"
rds2.Value = dtqr
LSRds.Add(rds2)
Dim numnewfiles As Integer = 0
If DTPercepciones.Rows.Count > DTDeducciones2.Rows.Count Then
numnewfiles = DTPercepciones.Rows.Count - DTDeducciones2.Rows.Count
For index = 1 To numnewfiles
DTDeducciones2.Rows.Add(DTDeducciones2.NewRow)
Next
Else
If DTDeducciones2.Rows.Count > DTPercepciones.Rows.Count Then
numnewfiles = DTDeducciones2.Rows.Count - DTPercepciones.Rows.Count
For index = 1 To numnewfiles
DTPercepciones.Rows.Add(DTPercepciones.NewRow)
Next
End If
End If
Dim RptDS As New ReportDataSource
RptDS.Name = "DsOC"
RptDS.Value = DTPercepciones
LSRds.Add(RptDS)
Dim RDS As New ReportDataSource
RDS.Name = "DataSet1"
RDS.Value = DTDeducciones2
LSRds.Add(RDS)
Dim Archivo As New System.IO.FileInfo(RutaFormato)
If Not TieneError Then
If Archivo.Exists Then
Retorno = StreamPDF(RutaFormato, LSRds, RptParametro, ObjNomina.SerieFolio, "PDF", MR:=Nothing)
Dim ArchivoPDF As New System.IO.FileInfo(String.Format("{0}PDF\\{1}.pdf", RutaEmpresa, ObjNomina.SerieFolio))
If Not ArchivoPDF.Exists Then
Try
DirectoryExistsCreate(String.Format("{0}PDF", RutaEmpresa))
DirectoryExistsCreate(String.Format("{0}PDF\{1}", RutaEmpresa, "Nomina"))
File.WriteAllBytes(String.Format("{0}PDF\Nomina\{1}.pdf", RutaEmpresa, ObjNomina.SerieFolio), Retorno)
Catch ex As Exception
Alert("Ocurrió un error al generar el PDF", TipoMensaje.MsgAdvertencia)
GuardaLog(String.Format("Ocurrió un error al generar el PDF {0}", ex))
End Try
End If
Else
'ImprimirPDF(String.Format("{0}\Formatos\Nomina.rdlc", RutaEmpresa), LSRds, RptParametro, ObjNomina.SerieFolio)
End If
Else
Alert("Ocurrio un error al obtener los datos de la Nomina")
End If
Catch ex As Exception
GuardaLog(String.Format("Ocurrio un error al generar el reporte RLDC {0}", ex))
End Try
ObjNomina.Dispose()
ObjPersonal.Dispose()
Return Retorno
End Function
Private Sub DescargaArchivoDirecto(RutaArchivo As String)
If RutaArchivo <> "" Then

View File

@@ -696,6 +696,7 @@ Partial Class Compras_ReembolsosComprobaciones
CompraActual.Total = gvr.DataKey("Total").ToDecimal
CompraActual.IVA = gvr.DataKey("IVA").ToDecimal
CompraActual.IVADeducible = gvr.DataKey("IVADeducible").ToDecimal
CompraActual.IVANoDeducible = gvr.DataKey("IVANoDeducible").ToDecimal
CompraActual.IEPS = gvr.DataKey("IEPS").ToDecimal
CompraActual.RetIVA = gvr.DataKey("RetIVA").ToDecimal
CompraActual.RetISR = gvr.DataKey("RetISR").ToDecimal
@@ -844,6 +845,7 @@ Partial Class Compras_ReembolsosComprobaciones
End If
End If
End If
If MsgError <> "" Then Exit For
End If
End If
Next