diff --git a/Inventarios/EntradasSalidas.aspx b/Inventarios/EntradasSalidas.aspx
index f71da7eea..5cd3ac542 100644
--- a/Inventarios/EntradasSalidas.aspx
+++ b/Inventarios/EntradasSalidas.aspx
@@ -104,6 +104,10 @@
+
+
+
diff --git a/Inventarios/EntradasSalidas.aspx.vb b/Inventarios/EntradasSalidas.aspx.vb
index 9a71020a2..634427249 100644
--- a/Inventarios/EntradasSalidas.aspx.vb
+++ b/Inventarios/EntradasSalidas.aspx.vb
@@ -780,6 +780,11 @@ Partial Class Inventarios_EntradasSalidas
HplDescargaPdf.NavigateUrl = String.Format("/Compras/PopUpVerFactura.aspx?P={0}", Encripta(String.Format("OP=DesPdfTra&CVEMOVIMIENTO={0}&EXT={1}&FOLIO={2}&TIPODOCTO={3}", CveMovimiento, "PDF", $"Tra-{Folio}", "Tra")))
HplCartaPorte.Visible = True
HplCartaPorte.NavigateUrl = String.Format("/Compras/PopUpVerFactura.aspx?P={0}", Encripta(String.Format("OP=CARPO&CVEMOV={0}", CveMovimiento)))
+
+ If UsuarioActual.CveRol = 1 Then
+ LnkGenerarPDF.Visible = True
+ End If
+
End If
@@ -5092,4 +5097,198 @@ Partial Class Inventarios_EntradasSalidas
End If
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 Function CreaObjetosVenta() 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
+
+ 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"
+
+ Dim dt As DataTable = DtMovimientos.Copy
+
+ 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"))
+
+
+ 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
+
+ 'SUBPROYECTO
+ ObjFactura.SetSubProyectoMatriz(Me)
+ ObjFactura.SetSubProyecto(Me)
+
+ ObjFactura.Inv_CveMovimiento = Me.CveMovimiento
+
+ ObjFactura.Timbre = PreParaTimbre(ObjFactura)
+
+ Return ObjFactura
+ End Function
+ Private Function PreParaTimbre(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
+
+ Timbre.Comprobante.LugarExpedicion = Obj.SubProyecto.CP
+ Timbre.Comprobante.Confirmacion = ""
+
+ Timbre.Receptor.RFC = "XAXX010101000"
+ Timbre.Receptor.Nombre = UsuarioActual.Empresa.Empresa
+ Timbre.Receptor.UsoCFDI = "P01"
+
+ 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
+
+ 'DETALLES
+ Dim tPS As String = ""
+
+ 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 Class