Generacion automatica de PDF de traslado

This commit is contained in:
2021-08-24 19:50:06 -07:00
parent dde3c5853f
commit 21ef7fa334

View File

@@ -907,213 +907,240 @@ Partial Class PopUpVerFactura
Dim Path As String = String.Format("{0}\{1}\{2}\{3}.{4}", UsuarioActual.Empresa.Ruta, Parametros("EXT").ToString, Parametros("TIPODOCTO").ToString, Parametros("FOLIO").ToString, Exten)
Dim Archivo As New System.IO.FileInfo(Path)
If Archivo.Exists Then
HttpContext.Current.Response.Clear()
HttpContext.Current.Response.ClearContent()
HttpContext.Current.Response.ContentType = If(IO.Path.GetExtension(Archivo.Name) = "xml", "application/xml", "application/pdf")
HttpContext.Current.Response.AppendHeader("Content-disposition", String.Format("attachment; filename={0}", Archivo.Name))
HttpContext.Current.Response.AddHeader("Content-Length", Archivo.Length.ToString())
HttpContext.Current.Response.TransmitFile(Path)
'HttpContext.Current.Response.Flush()
HttpContext.Current.Response.End()
If Archivo.Exists Then
DescargarArchivoPDFTraslado(Archivo, Path)
Else
If Exten = "pdf" Then
GeneraPDFFactura(Parametros("CVEMOVIMIENTO").ToString.ToEntero)
Archivo = New System.IO.FileInfo(Path)
If Archivo.Exists Then
DescargarArchivoPDFTraslado(Archivo, Path)
End If
End If
End If
Archivo = Nothing
End If
End Sub
Private Sub DescargarArchivoPDFTraslado(Archivo As System.IO.FileInfo, path As String)
HttpContext.Current.Response.Clear()
HttpContext.Current.Response.ClearContent()
HttpContext.Current.Response.ContentType = If(IO.Path.GetExtension(Archivo.Name) = "xml", "application/xml", "application/pdf")
HttpContext.Current.Response.AppendHeader("Content-disposition", String.Format("attachment; filename={0}", Archivo.Name))
HttpContext.Current.Response.AddHeader("Content-Length", Archivo.Length.ToString())
HttpContext.Current.Response.TransmitFile(path)
'HttpContext.Current.Response.Flush()
HttpContext.Current.Response.End()
End Sub
'Protected Sub LnkGenerarPDF_Click(sender As Object, e As EventArgs)
' GeneraPDFFactura()
'End Sub
'Private Sub GeneraPDFFactura()
' Try
' Dim objFactura = CreaObjetosVenta()
' PdfFactura(objFactura)
' objFactura.Dispose()
' Catch ex As Exception
' OnError("Ocurrió un error al generar el PDF", ex)
' End Try
'End Sub
Private Sub GeneraPDFFactura(CveMovimiento As Integer)
Try
Dim objFactura = CreaObjetosTraslado(CveMovimiento)
If objFactura IsNot Nothing Then
PdfFactura(objFactura)
objFactura.Dispose()
End If
Catch ex As Exception
OnError("Ocurrió un error al generar el PDF", ex)
End Try
End Sub
'Private Function CreaObjetosTraslado() As Modelos.Factura
' Dim ObjFactura = New Modelos.Factura
' ObjFactura.Version = "3.3"
' ObjFactura.CveUsuario = UsuarioActual.CveUsuario
' ObjFactura.CveEmpresa = UsuarioActual.CveEmpresa
' ObjFactura.TipoCambio = 0
' ObjFactura.ConvertirPesos = False
' ObjFactura.TipoCambio = 0
' ObjFactura.CveMoneda = 1
' ObjFactura.Moneda = GlobalDTMonedas.FiltroPrimeroValor("Moneda", $"CveMoneda = {ObjFactura.CveMoneda} ")
' ObjFactura.MonedaSAT = GlobalDTMonedas.FiltroPrimeroValor("AbreviaturaSAT", "CveMoneda = 1")
' ObjFactura.MonedaAbreviatura = GlobalDTMonedas.FiltroPrimeroValor("Abreviatura", $"CveMoneda = {ObjFactura.CveMoneda} ")
' ObjFactura.TipoDocto = "Tra"
' ObjFactura.RefDocto = ""
' ObjFactura.Folio = Folio.ToEntero
' ObjFactura.Serie = "Tra"
' ObjFactura.CveMesa = -1
' ObjFactura.Fecha = Now
' ObjFactura.CvePrePoliza = -1
' ObjFactura.FechaPago = Now
' ObjFactura.MotivoDescuento = ""
' ObjFactura.Observaciones = ""
' ObjFactura.FechaEjecucion = Now
' ObjFactura.UsuarioCreo = UsuarioActual.Usuario
' ObjFactura.CveCondicionEntrega = -1
' ObjFactura.CondicionEntrega = ""
' ObjFactura.NumeroCuenta = ""
' ObjFactura.CondicionesPago = 0
' ObjFactura.FormaPago = 0
' ObjFactura.PedidoContrato = ""
' ObjFactura.OrdenCompra = ""
' ObjFactura.NumeroContrato = ""
' ObjFactura.NumeroDescripcionContrato = ""
' ObjFactura.DescripcionContrato = ""
' ObjFactura.CveCorte = -1
' ObjFactura.TipoDocumento = "Traspaso"
' ObjFactura.Alfa1 = ""
' ObjFactura.Alfa2 = ""
' ObjFactura.Alfa3 = ""
' ObjFactura.Descuento = 0
' ObjFactura.Amortizacion = 0
' ObjFactura.CveContrato = 0
' ObjFactura.CveVendedor = 0
' ObjFactura.FechaVencimiento = Now
' ObjFactura.TipoEstatus = 0
' ObjFactura.Det_OrdenCompra = ""
' ObjFactura.Inv_CveEstatusEntrega = 0
' ObjFactura.FormaPago33 = ""
' ObjFactura.MetodoPago33 = ""
' ObjFactura.UsoCFDI = ""
' ObjFactura.CveClienteSucursal = 0
' Dim CveSubProyecto As Integer = -1
' If GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltraParametros($"CveAlmacen = {DdlAlmacen.SelectedValue}").Rows.Count > 0 Then
' CveSubProyecto = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltraParametros($"CveAlmacen = {DdlAlmacen.SelectedValue}").Rows(0)("CveSubProyecto").ToString.ToEntero
' End If
' ObjFactura.CveSubProyecto = CveSubProyecto
' ObjFactura.CveSubProyectoCobranza = CveSubProyecto
' ObjFactura.CveSubProyectoEjecucion = CveSubProyecto
Private Function CreaObjetosTraslado(CveMovimiento As Integer) As Modelos.Factura
Dim Folio As Integer = -1
Dim CveAlmacen As Integer = 0
Dim DtDetalle As DataTable = Nothing
' ObjFactura.SubTotal = 0
' ObjFactura.Descuento = 0
' ObjFactura.Amortizacion = 0
' ObjFactura.IVA = 0
' ObjFactura.RetIVA = 0
' ObjFactura.RetISR = 0
' ObjFactura.IEPS = 0
' ObjFactura.Total = 0
' ObjFactura.RFCReceptor = "XAXX010101000"
Using ObjMovimientos As New ClsInventarios
If ObjMovimientos.GetMovimientos(CveMovimiento, -1, -1, UsuarioActual.CveEmpresa) AndAlso ObjMovimientos.DtResultados.Rows.Count = 1 Then
Folio = ObjMovimientos.Folio
CveAlmacen = ObjMovimientos.CveAlmacen
End If
' Dim dt As DataTable = DtMovimientos.Copy
If ObjMovimientos.GetMovimientosDetalle(CveMovimiento, UsuarioActual.CveEmpresa) Then
DtDetalle = ObjMovimientos.DtResultados.Copy
End If
End Using
' dt.Columns.Add("TotalImporte", Type.GetType("System.Double"))
' dt.Columns.Add("Descuento", Type.GetType("System.Double"))
' dt.Columns.Add("UM")
' dt.Columns.Add("SATClaveUM")
' dt.Columns.Add("SATClaveProdServ")
' dt.Columns.Add("Noidentificacion")
' dt.Columns.Add("CuentaPredial")
' dt.Columns.Add("Obs")
' dt.Columns.Add("ImporteIVA", Type.GetType("System.Double"))
' dt.Columns.Add("PorcentajeIVA", Type.GetType("System.Double"))
If Folio > 0 AndAlso DtDetalle IsNot Nothing AndAlso DtDetalle.Rows.Count > 0 Then
Dim ObjFactura = New Modelos.Factura
ObjFactura.Version = "3.3"
ObjFactura.CveUsuario = UsuarioActual.CveUsuario
ObjFactura.CveEmpresa = UsuarioActual.CveEmpresa
ObjFactura.TipoCambio = 0
ObjFactura.ConvertirPesos = False
ObjFactura.TipoCambio = 0
ObjFactura.CveMoneda = 1
ObjFactura.Moneda = GlobalDTMonedas.FiltroPrimeroValor("Moneda", $"CveMoneda = {ObjFactura.CveMoneda} ")
ObjFactura.MonedaSAT = GlobalDTMonedas.FiltroPrimeroValor("AbreviaturaSAT", "CveMoneda = 1")
ObjFactura.MonedaAbreviatura = GlobalDTMonedas.FiltroPrimeroValor("Abreviatura", $"CveMoneda = {ObjFactura.CveMoneda} ")
ObjFactura.TipoDocto = "Tra"
ObjFactura.RefDocto = ""
ObjFactura.Folio = Folio
ObjFactura.Serie = "Tra"
ObjFactura.CveMesa = -1
ObjFactura.Fecha = Now
ObjFactura.CvePrePoliza = -1
ObjFactura.FechaPago = Now
ObjFactura.MotivoDescuento = ""
ObjFactura.Observaciones = ""
ObjFactura.FechaEjecucion = Now
ObjFactura.UsuarioCreo = UsuarioActual.Usuario
ObjFactura.CveCondicionEntrega = -1
ObjFactura.CondicionEntrega = ""
ObjFactura.NumeroCuenta = ""
ObjFactura.CondicionesPago = 0
ObjFactura.FormaPago = 0
ObjFactura.PedidoContrato = ""
ObjFactura.OrdenCompra = ""
ObjFactura.NumeroContrato = ""
ObjFactura.NumeroDescripcionContrato = ""
ObjFactura.DescripcionContrato = ""
ObjFactura.CveCorte = -1
ObjFactura.TipoDocumento = "Traspaso"
ObjFactura.Alfa1 = ""
ObjFactura.Alfa2 = ""
ObjFactura.Alfa3 = ""
ObjFactura.Descuento = 0
ObjFactura.Amortizacion = 0
ObjFactura.CveContrato = 0
ObjFactura.CveVendedor = 0
ObjFactura.FechaVencimiento = Now
ObjFactura.TipoEstatus = 0
ObjFactura.Det_OrdenCompra = ""
ObjFactura.Inv_CveEstatusEntrega = 0
ObjFactura.FormaPago33 = ""
ObjFactura.MetodoPago33 = ""
ObjFactura.UsoCFDI = ""
ObjFactura.CveClienteSucursal = 0
Dim CveSubProyecto As Integer = -1
If GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltraParametros($"CveAlmacen = {CveAlmacen}").Rows.Count > 0 Then
CveSubProyecto = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltraParametros($"CveAlmacen = {CveAlmacen}").Rows(0)("CveSubProyecto").ToString.ToEntero
End If
ObjFactura.CveSubProyecto = CveSubProyecto
ObjFactura.CveSubProyectoCobranza = CveSubProyecto
ObjFactura.CveSubProyectoEjecucion = CveSubProyecto
ObjFactura.SubTotal = 0
ObjFactura.Descuento = 0
ObjFactura.Amortizacion = 0
ObjFactura.IVA = 0
ObjFactura.RetIVA = 0
ObjFactura.RetISR = 0
ObjFactura.IEPS = 0
ObjFactura.Total = 0
ObjFactura.RFCReceptor = "XAXX010101000"
' For Each Row As DataRow In dt.Rows
' Row("TotalImporte") = Row("Total")
' Row("Descuento") = 0
' Row("UM") = Row("UnidadMedida")
' Row("SATClaveUM") = Row("SATClaveUnidadMedida")
' Row("SATClaveProdServ") = Row("SATClavePS")
' Row("Noidentificacion") = Row("Codigo")
' Row("CuentaPredial") = ""
' Row("Obs") = Row("Observaciones")
' Row("ImporteIVA") = 0
' Row("PorcentajeIVA") = 0
' Next
' 'DETALLES
' ObjFactura.DtDetalle = dt
DtDetalle.Columns.Add("TotalImporte", Type.GetType("System.Double"))
DtDetalle.Columns.Add("Descuento", Type.GetType("System.Double"))
DtDetalle.Columns.Add("UM")
DtDetalle.Columns.Add("SATClaveUM")
DtDetalle.Columns.Add("SATClaveProdServ")
DtDetalle.Columns.Add("Noidentificacion")
DtDetalle.Columns.Add("CuentaPredial")
DtDetalle.Columns.Add("Obs")
DtDetalle.Columns.Add("ImporteIVA", Type.GetType("System.Double"))
DtDetalle.Columns.Add("PorcentajeIVA", Type.GetType("System.Double"))
' 'SUBPROYECTO
' ObjFactura.SetSubProyectoMatriz(Me)
' ObjFactura.SetSubProyecto(Me)
' ObjFactura.Inv_CveMovimiento = Me.CveMovimiento
For Each Row As DataRow In DtDetalle.Rows
Row("TotalImporte") = Row("Total")
Row("Descuento") = 0
Row("UM") = Row("UnidadMedida")
Row("SATClaveUM") = Row("SATClaveUnidadMedida")
Row("SATClaveProdServ") = Row("SATClavePS")
Row("Noidentificacion") = Row("Codigo")
Row("CuentaPredial") = ""
Row("Obs") = Row("Observaciones")
Row("ImporteIVA") = 0
Row("PorcentajeIVA") = 0
Next
' ObjFactura.Timbre = PreParaTimbreTraslado(ObjFactura)
'DETALLES
ObjFactura.DtDetalle = DtDetalle
' Return ObjFactura
'End Function
'Private Function PreParaTimbreTraslado(Obj As Modelos.Factura) As CFDITimbre
' Dim Timbre As New CFDITimbre
' Timbre.Comprobante.TipoComprobante = "T"
' Timbre.Comprobante.Folio = Obj.Folio.ToString
' Timbre.Comprobante.Serie = Obj.Serie
' Timbre.Comprobante.Fecha = Obj.Fecha
' Timbre.Comprobante.FormadePago = Obj.FormaPagoSAT33
' Timbre.Comprobante.CondicionesdePago = Obj.FormaPago33
' Timbre.Comprobante.MetodoPago = Obj.ClaveMetodoPagoSAT
' Timbre.Comprobante.Subtotal = Obj.SubTotal
' Timbre.Comprobante.Descuentos = Obj.Descuento
' Timbre.Comprobante.Moneda = Obj.MonedaSAT
' Timbre.Comprobante.TipoCambio = If(Obj.CveMoneda = 1, "1", Obj.TipoCambio.ToString)
' Timbre.Comprobante.Total = Obj.Total
'SUBPROYECTO
ObjFactura.SetSubProyectoMatriz(Me)
ObjFactura.SetSubProyecto(Me)
' Timbre.Comprobante.LugarExpedicion = Obj.SubProyecto.CP
' Timbre.Comprobante.Confirmacion = ""
ObjFactura.Inv_CveMovimiento = CveMovimiento
' Timbre.Receptor.RFC = "XAXX010101000"
' Timbre.Receptor.Nombre = UsuarioActual.Empresa.Empresa
' Timbre.Receptor.UsoCFDI = "P01"
ObjFactura.Timbre = PreParaTimbreTraslado(ObjFactura)
Return ObjFactura
End If
' Dim totSubTotal As Decimal = Obj.SubTotal
' Dim totIVA As Decimal = Obj.IVA
' Dim totRetIVA As Decimal = Obj.RetIVA
' Dim totRetISR As Decimal = Obj.RetISR
' Dim i As Integer = 1
Return Nothing
' 'DETALLES
' Dim tPS As String = ""
End Function
Private Function PreParaTimbreTraslado(Obj As Modelos.Factura) As CFDITimbre
Dim Timbre As New CFDITimbre
Timbre.Comprobante.TipoComprobante = "T"
Timbre.Comprobante.Folio = Obj.Folio.ToString
Timbre.Comprobante.Serie = Obj.Serie
Timbre.Comprobante.Fecha = Obj.Fecha
Timbre.Comprobante.FormadePago = Obj.FormaPagoSAT33
Timbre.Comprobante.CondicionesdePago = Obj.FormaPago33
Timbre.Comprobante.MetodoPago = Obj.ClaveMetodoPagoSAT
Timbre.Comprobante.Subtotal = Obj.SubTotal
Timbre.Comprobante.Descuentos = Obj.Descuento
Timbre.Comprobante.Moneda = Obj.MonedaSAT
Timbre.Comprobante.TipoCambio = If(Obj.CveMoneda = 1, "1", Obj.TipoCambio.ToString)
Timbre.Comprobante.Total = Obj.Total
' For Each drr As DataRow In Obj.DtDetalle.Rows
' If drr("PS").ToString.Length = 1 Then
' tPS = drr("Obs").ToString
' Else
' If drr("PS").ToString.Length = 0 Then
' tPS = ""
' Else
' tPS = String.Format("{0} {1}", drr("PS"), drr("Obs"))
' End If
' End If
Timbre.Comprobante.LugarExpedicion = Obj.SubProyecto.CP
Timbre.Comprobante.Confirmacion = ""
' 'CONDICIONANTE, ESPECIAL
' If UsuarioActual.CveEmpresa = 15 Then drr("UM") = "" 'LES COMENTAN QUE NO DEBE IR LA ETIQUETA DE LA UNIDAD EN EL PRODUCTO
Timbre.Receptor.RFC = "XAXX010101000"
Timbre.Receptor.Nombre = UsuarioActual.Empresa.Empresa
Timbre.Receptor.UsoCFDI = "P01"
' Dim concepto As New CFDIConceptos With {.Cantidad = drr("Cantidad").ToString.ToDecimal,
' .Descripcion = tPS,
' .ValorUnitario = drr("PU").ToString.ToDecimal,
' .Importe = drr("TotalImporte").ToString.ToDecimal,
' .Descuento = drr("Descuento").ToString.ToDecimal,
' .Unidad = drr("UM").ToString,
' .ClaveUnidad = drr("SATClaveUM").ToString,
' .ClaveProdServ = drr("SATClaveProdServ").ToString,
' .Noidentificacion = drr("Noidentificacion").ToString,
' .CuentaPredial = drr("CuentaPredial").ToString}
' 'VERIFICA SUMA SUBTOTALES
' If i = Obj.DtDetalle.Rows.Count AndAlso totSubTotal <> concepto.Importe Then 'PROCESO DE AJUSTA DE DECIMALES
' concepto.Importe = totSubTotalW
' End If
' totSubTotal = totSubTotal - concepto.Importe
Dim totSubTotal As Decimal = Obj.SubTotal
Dim totIVA As Decimal = Obj.IVA
Dim totRetIVA As Decimal = Obj.RetIVA
Dim totRetISR As Decimal = Obj.RetISR
Dim i As Integer = 1
' 'SIEMPRE ESTAMOS AGREGANDO EL IVA
' 'concepto.Impuestos.Add(New CFDIConceptosImpuestos With {.TrasladooRetencion = "T", .Base = concepto.Importe - concepto.Descuento, .TasaOCuota = drr("PorcentajeIVA").ToString.ToDecimal, .Impuesto = "002", .Importe = drr("ImporteIVA").ToString.ToDecimal})
'DETALLES
Dim tPS As String = ""
' Timbre.Conceptos.Add(concepto)
' i += 1
' Next
' Return Timbre
'End Function
For Each drr As DataRow In Obj.DtDetalle.Rows
If drr("PS").ToString.Length = 1 Then
tPS = drr("Obs").ToString
Else
If drr("PS").ToString.Length = 0 Then
tPS = ""
Else
tPS = String.Format("{0} {1}", drr("PS"), drr("Obs"))
End If
End If
'CONDICIONANTE, ESPECIAL
If UsuarioActual.CveEmpresa = 15 Then drr("UM") = "" 'LES COMENTAN QUE NO DEBE IR LA ETIQUETA DE LA UNIDAD EN EL PRODUCTO
Dim concepto As New CFDIConceptos With {.Cantidad = drr("Cantidad").ToString.ToDecimal,
.Descripcion = tPS,
.ValorUnitario = drr("PU").ToString.ToDecimal,
.Importe = drr("TotalImporte").ToString.ToDecimal,
.Descuento = drr("Descuento").ToString.ToDecimal,
.Unidad = drr("UM").ToString,
.ClaveUnidad = drr("SATClaveUM").ToString,
.ClaveProdServ = drr("SATClaveProdServ").ToString,
.Noidentificacion = drr("Noidentificacion").ToString,
.CuentaPredial = drr("CuentaPredial").ToString}
'VERIFICA SUMA SUBTOTALES
If i = Obj.DtDetalle.Rows.Count AndAlso totSubTotal <> concepto.Importe Then 'PROCESO DE AJUSTA DE DECIMALES
concepto.Importe = totSubTotal
End If
totSubTotal = totSubTotal - concepto.Importe
'SIEMPRE ESTAMOS AGREGANDO EL IVA
'concepto.Impuestos.Add(New CFDIConceptosImpuestos With {.TrasladooRetencion = "T", .Base = concepto.Importe - concepto.Descuento, .TasaOCuota = drr("PorcentajeIVA").ToString.ToDecimal, .Impuesto = "002", .Importe = drr("ImporteIVA").ToString.ToDecimal})
Timbre.Conceptos.Add(concepto)
i += 1
Next
Return Timbre
End Function
#End Region