-- timbrado de retención
This commit is contained in:
134
App_Code/CFDITimbreRetenciones.vb
Normal file
134
App_Code/CFDITimbreRetenciones.vb
Normal file
@@ -0,0 +1,134 @@
|
||||
Option Strict On
|
||||
Option Explicit On
|
||||
Imports Extensiones
|
||||
|
||||
<Serializable>
|
||||
Public Class CFDITimbreRetenciones
|
||||
Private StrMsg As StringBuilder
|
||||
Public Property Retencion As CFDIRetencion
|
||||
Public Property CFDIRelacionados As CFDIRelacionados
|
||||
Public Property Fecha As DateTime
|
||||
Public Property Emisor As CFDIEmisor
|
||||
Public Property Receptor As CFDIReceptorR
|
||||
Public Property RetencionesImpuestos As List(Of CFDIImpuestosRetenidos)
|
||||
Public Property ISRCorrespondiente As Decimal = 0
|
||||
'Public Property Complementos As CFDIComplementos
|
||||
Public Property Timbrado As Boolean
|
||||
Public Property IStimbreFiniquito As Boolean
|
||||
|
||||
Public ReadOnly Property TotalOperacionRetenidos As Decimal
|
||||
Get
|
||||
Return (From c In RetencionesImpuestos
|
||||
Where c.ImpuestoRetencion = "001"
|
||||
Select c.MontoRetencion).Sum
|
||||
End Get
|
||||
End Property
|
||||
|
||||
Public ReadOnly Property TotalImpuestosGravado As Decimal
|
||||
Get
|
||||
Return (From c In RetencionesImpuestos
|
||||
Where c.ImpuestoRetencion = "001"
|
||||
Select c.MontoRetencion).Sum
|
||||
End Get
|
||||
End Property
|
||||
|
||||
Public ReadOnly Property TotalImpuestosRetenidos As Decimal
|
||||
Get
|
||||
Return (From c In RetencionesImpuestos
|
||||
Where c.ImpuestoRetencion = "001"
|
||||
Select c.MontoRetencion).Sum
|
||||
End Get
|
||||
End Property
|
||||
Public ReadOnly Property TotalImpuestosExento As Decimal
|
||||
Get
|
||||
Return (From c In RetencionesImpuestos
|
||||
Where c.ImpuestoRetencion = "001"
|
||||
Select c.MontoRetencion).Sum
|
||||
End Get
|
||||
End Property
|
||||
|
||||
|
||||
'Public ReadOnly Property Retenciones As List(Of CFDIRetenciones)
|
||||
' Get
|
||||
' Dim tRetorno As New List(Of CFDIRetenciones)
|
||||
' Dim TRetenciones As New List(Of CFDIRetenciones)
|
||||
' For Each c As CFDIConceptos In Conceptos
|
||||
' For Each imp As CFDIConceptosImpuestos In c.Impuestos
|
||||
' If imp.TrasladooRetencion = "R" Then
|
||||
' tRetorno.Add(New CFDIRetenciones With {.Impuesto = imp.Impuesto, .Importe = imp.Importe})
|
||||
' 'If imp.Impuesto = "001" Then RetencionISR += imp.Importe
|
||||
' 'If imp.Impuesto = "002" Then RetencionIVA += imp.Importe
|
||||
' 'If imp.Impuesto = "003" Then RetencionIEPS += imp.Importe
|
||||
' End If
|
||||
' Next
|
||||
' Next
|
||||
' If tRetorno.Count > 0 Then
|
||||
' TRetenciones = tRetorno.GroupBy(Function(t) New With {Key t.Impuesto}) _
|
||||
' .Select(Function(t) New CFDIRetenciones With {.Impuesto = t.Key.Impuesto,
|
||||
' .Importe = t.Sum(Function(tt) tt.Importe)}) _
|
||||
' .OrderBy(Function(x) x.Impuesto).ToList
|
||||
' End If
|
||||
' 'If RetencionISR > 0 Then Retorno.Add(New CFDIRetenciones With {.Impuesto = "001", .Importe = RetencionISR})
|
||||
' 'if RetencionIVA > 0 Then Retorno.Add(New CFDIRetenciones With {.Impuesto = "002", .Importe = RetencionIVA})
|
||||
' 'If RetencionIEPS > 0 Then Retorno.Add(New CFDIRetenciones With {.Impuesto = "003", .Importe = RetencionIEPS})
|
||||
' tRetorno = Nothing
|
||||
' Return TRetenciones
|
||||
|
||||
' End Get
|
||||
'End Property
|
||||
|
||||
Public ReadOnly Property Mensaje As String
|
||||
Get
|
||||
Return StrMsg.ToString
|
||||
End Get
|
||||
End Property
|
||||
Sub New()
|
||||
StrMsg = New StringBuilder
|
||||
Retencion = New CFDIRetencion
|
||||
CFDIRelacionados = New CFDIRelacionados
|
||||
Emisor = New CFDIEmisor
|
||||
Receptor = New CFDIReceptorR
|
||||
RetencionesImpuestos = New List(Of CFDIImpuestosRetenidos)
|
||||
'Complementos = New CFDIComplementos
|
||||
End Sub
|
||||
|
||||
Public Sub AddMsg(Msg As String)
|
||||
StrMsg.AppendLine(Msg)
|
||||
End Sub
|
||||
|
||||
End Class
|
||||
<Serializable>
|
||||
Public Class CFDIRetencion
|
||||
Public Property Version As String
|
||||
Public Property Serie As String = ""
|
||||
Public Property Folio As String = ""
|
||||
Public ReadOnly Property SerieFolio As String
|
||||
Get
|
||||
'sino tiene serie no pone el guión
|
||||
Return If(Serie = "", Folio, $"{Serie}-{Folio}")
|
||||
End Get
|
||||
End Property
|
||||
Public Property ClaveRetencion As String = "28"
|
||||
Public Property Fecha As Date
|
||||
Public Property LugarExpedicion As String = ""
|
||||
Public Property PeriodoMesInicio As String = ""
|
||||
Public Property PeriodoMesFin As String = ""
|
||||
Public Property PeriodoEjercicio As Integer = 0
|
||||
|
||||
End Class
|
||||
|
||||
<Serializable>
|
||||
Public Class CFDIReceptorR
|
||||
Public Property RFCR As String
|
||||
Public Property NombreDenominacionR As String
|
||||
Public Property NacionalidadR As String = "Nacional"
|
||||
Public Property DomicilioFiscalR As String = ""
|
||||
End Class
|
||||
Public Class CFDIImpuestosRetenidos
|
||||
Public Property BaseRetencion As Decimal = 0.00D
|
||||
Public Property ImpuestoRetencion As String = "" '001,002,003
|
||||
Public Property MontoRetencion As Decimal = 0.00D ' propiedad utilizada solo para hacer ajustes, por default toma la multiplicación de base * tasa
|
||||
Public Property TipoPagoRetencion As String = ""
|
||||
Public Property BaseRetencionGravado As Decimal = 0.00D
|
||||
Public Property BaseRetencionExento As Decimal = 0.00D
|
||||
End Class
|
||||
171
General/TimbraRetencion.aspx
Normal file
171
General/TimbraRetencion.aspx
Normal file
@@ -0,0 +1,171 @@
|
||||
<%@ Page Title="" Language="VB" MasterPageFile="~/Site.master" AutoEventWireup="false" CodeFile="TimbraRetencion.aspx.vb" Inherits="General_TimbraRetencion" %>
|
||||
|
||||
|
||||
<asp:Content ID="Content1" ContentPlaceHolderID="CP" runat="Server">
|
||||
</asp:Content>
|
||||
<asp:Content ID="Content2" ContentPlaceHolderID="Css" runat="Server">
|
||||
</asp:Content>
|
||||
<asp:Content ID="Content3" ContentPlaceHolderID="E" runat="Server">
|
||||
Timbrados de retenciones
|
||||
</asp:Content>
|
||||
<asp:Content ID="Content4" ContentPlaceHolderID="HB" runat="Server">
|
||||
</asp:Content>
|
||||
<asp:Content ID="Content5" ContentPlaceHolderID="H" runat="Server">
|
||||
<asp:UpdatePanel ID="UpAcciones" runat="server" UpdateMode="Conditional">
|
||||
<ContentTemplate>
|
||||
<li>
|
||||
<asp:LinkButton ID="LnkAgregarRetencion" OnClick="LnkAgregarRetencion_Click" runat="server"><i class="fa fa-plus"></i>Agregar Retención</asp:LinkButton></li>
|
||||
</li>
|
||||
</ContentTemplate>
|
||||
</asp:UpdatePanel>
|
||||
<li>
|
||||
<asp:LinkButton ID="LnkExportar" runat="server"><i class="fa fa-ad-excel"></i> Genera Excel</asp:LinkButton>
|
||||
</li>
|
||||
</asp:Content>
|
||||
<asp:Content ID="Content6" ContentPlaceHolderID="C" runat="Server">
|
||||
|
||||
<div id="DModalRetencion" class="modal ADS fade" role="dialog">
|
||||
<asp:UpdatePanel class="modal-dialog" runat="server" ID="UpModal" UpdateMode="Conditional">
|
||||
<ContentTemplate>
|
||||
<div class="modal-content">
|
||||
<div class="modal-header ">
|
||||
<h4 class="modal-title">
|
||||
<asp:Literal ID="ltlMotititulo" Text="Retención" runat="server"> </asp:Literal></h4>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div class="form-group form-md-line-input input-iconright">
|
||||
<label for="<%= DdlClaveRetencion.ClientID.ToString()%>">Clave Retención:</label>
|
||||
<asp:DropDownList ID="DdlClaveRetencion" runat="server" CssClass="select2me">
|
||||
<asp:ListItem Text="01-Servicios profesionales" Value="01"></asp:ListItem>
|
||||
<asp:ListItem Text="14-Dividendos o utilidades distribuidas" Value="14"></asp:ListItem>
|
||||
<asp:ListItem Text="28-Pagos y retenciones a Contribuyentes del RIF" Value="28"></asp:ListItem>
|
||||
</asp:DropDownList>
|
||||
</div>
|
||||
<div class="form-group form-md-line-input input-iconright">
|
||||
<label for="<%= DdlClientes.ClientID%>">Cliente:</label>
|
||||
<ADS:Dropdownlost CssClassDdl="select2me" ID="DdlClientes" EsWebService="true" Width="100%" data-metodo="getcliente" runat="server" DataTextField="NombreComercial" DataValueField="CveCliente" CssStyle="width: 100%;"></ADS:Dropdownlost>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="form-group form-md-line-input input-iconright col-md-4">
|
||||
<label for="<%= DdlPeriodoInicio.ClientID.ToString()%>">P. Inicial:</label>
|
||||
<asp:DropDownList ID="DdlPeriodoInicio" runat="server" CssClass="select2me">
|
||||
<asp:ListItem Text="Enero" Value="01"></asp:ListItem>
|
||||
<asp:ListItem Text="Febrero" Value="02"></asp:ListItem>
|
||||
<asp:ListItem Text="Marzo" Value="03"></asp:ListItem>
|
||||
<asp:ListItem Text="Abril" Value="04"></asp:ListItem>
|
||||
<asp:ListItem Text="Mayo" Value="05"></asp:ListItem>
|
||||
<asp:ListItem Text="Junio" Value="06"></asp:ListItem>
|
||||
<asp:ListItem Text="Julio" Value="07"></asp:ListItem>
|
||||
<asp:ListItem Text="Agosto" Value="08"></asp:ListItem>
|
||||
<asp:ListItem Text="Septiembre" Value="09"></asp:ListItem>
|
||||
<asp:ListItem Text="Octubre" Value="10"></asp:ListItem>
|
||||
<asp:ListItem Text="Noviembre" Value="11"></asp:ListItem>
|
||||
<asp:ListItem Text="Diciembre" Value="12"></asp:ListItem>
|
||||
</asp:DropDownList>
|
||||
</div>
|
||||
<div class="form-group form-md-line-input input-iconright col-md-4">
|
||||
<label for="<%= DdlPeriodoFin.ClientID.ToString()%>">P. Fin:</label>
|
||||
<asp:DropDownList ID="DdlPeriodoFin" runat="server" CssClass="select2me">
|
||||
<asp:ListItem Text="Enero" Value="01"></asp:ListItem>
|
||||
<asp:ListItem Text="Febrero" Value="02"></asp:ListItem>
|
||||
<asp:ListItem Text="Marzo" Value="03"></asp:ListItem>
|
||||
<asp:ListItem Text="Abril" Value="04"></asp:ListItem>
|
||||
<asp:ListItem Text="Mayo" Value="05"></asp:ListItem>
|
||||
<asp:ListItem Text="Junio" Value="06"></asp:ListItem>
|
||||
<asp:ListItem Text="Julio" Value="07"></asp:ListItem>
|
||||
<asp:ListItem Text="Agosto" Value="08"></asp:ListItem>
|
||||
<asp:ListItem Text="Septiembre" Value="09"></asp:ListItem>
|
||||
<asp:ListItem Text="Octubre" Value="10"></asp:ListItem>
|
||||
<asp:ListItem Text="Noviembre" Value="11"></asp:ListItem>
|
||||
<asp:ListItem Text="Diciembre" Value="12"></asp:ListItem>
|
||||
</asp:DropDownList>
|
||||
</div>
|
||||
<div class="form-group form-md-line-input input-iconright col-md-4">
|
||||
<label for="<%= DdlEjercicio.ClientID.ToString()%>">Ejercicio:</label>
|
||||
<asp:DropDownList ID="DdlEjercicio" runat="server" CssClass="select2me">
|
||||
<asp:ListItem Text="2023" Value="2023"></asp:ListItem>
|
||||
<asp:ListItem Text="2024" Value="2024"></asp:ListItem>
|
||||
<asp:ListItem Text="2025" Value="2025"></asp:ListItem>
|
||||
<asp:ListItem Text="2026" Value="2026"></asp:ListItem>
|
||||
<asp:ListItem Text="2027" Value="2027"></asp:ListItem>
|
||||
</asp:DropDownList>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-3">
|
||||
<div class="form-group form-md-line-input input-iconright">
|
||||
<label for="<%= TxtBase.ClientID.ToString()%>">Base Impuesto:</label>
|
||||
<asp:TextBox ID="TxtBase" runat="server" Width="100px"></asp:TextBox>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<div class="form-group form-md-line-input input-iconright">
|
||||
<label for="<%= DdlTipoImpuesto.ClientID.ToString()%>">Tipo Impuesto:</label>
|
||||
<asp:DropDownList ID="DdlTipoImpuesto" runat="server" CssClass="select2me">
|
||||
<asp:ListItem Text="ISR" Value="01"></asp:ListItem>
|
||||
<asp:ListItem Text="IVA" Value="02"></asp:ListItem>
|
||||
<asp:ListItem Text="IEPS" Value="03"></asp:ListItem>
|
||||
</asp:DropDownList>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<div class="form-group form-md-line-input input-iconright">
|
||||
<label for="<%= TxtImpuestoRetenido.ClientID.ToString()%>">Impuesto Retenido:</label>
|
||||
<asp:TextBox ID="TxtImpuestoRetenido" runat="server" Width="100px"></asp:TextBox>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<div class="form-group form-md-line-input input-iconright">
|
||||
<label for="<%= DdlTipoPagoRet.ClientID.ToString()%>">Tipo Impuesto:</label>
|
||||
<asp:DropDownList ID="DdlTipoPagoRet" runat="server" CssClass="select2me">
|
||||
<asp:ListItem Text="Pago definitivo IVA" Value="01"></asp:ListItem>
|
||||
<asp:ListItem Text="Pago definitivo IEPS" Value="02"></asp:ListItem>
|
||||
<asp:ListItem Text="Pago definitivo ISR" Value="03"></asp:ListItem>
|
||||
<asp:ListItem Text="Pago provisional ISR" Value="04"></asp:ListItem>
|
||||
</asp:DropDownList>
|
||||
</div>
|
||||
<asp:Button ID="BtnAgregar" runat="server" Text="++" OnClick="BtnAgregar_Click" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<asp:GridView ID="GvD" runat="server" DataKeyNames="TipoImpuesto,ClaveTipoImpuesto,BaseRetencion,ClaveTipoPago,TipoPago,ImpuestoRetenido"></asp:GridView>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<div class="col-md-3">
|
||||
<div class="form-group form-md-line-input input-iconright">
|
||||
<label for="<%= TxtTotal1.ClientID.ToString()%>">Base Impuesto:</label>
|
||||
<asp:TextBox ID="TxtTotal1" runat="server" Width="100px"></asp:TextBox>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<div class="form-group form-md-line-input input-iconright">
|
||||
<label for="<%= TxtTotal2.ClientID.ToString()%>">Base Impuesto:</label>
|
||||
<asp:TextBox ID="TxtTotal2" runat="server" Width="100px"></asp:TextBox>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<div class="form-group form-md-line-input input-iconright">
|
||||
<label for="<%= TxtTotal3.ClientID.ToString()%>">Base Impuesto:</label>
|
||||
<asp:TextBox ID="TxtTotal3" runat="server" Width="100px"></asp:TextBox>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<asp:Button ID="BtnEmitirRetencion" runat="server" Text="Emitir Retención" OnClick="BtnEmitirRetencion_Click" CssClass ="btn btn-primary" ValidationGroup="VgmGuardar" />
|
||||
<button type="button" class="btn btn-danger" data-dismiss="modal">Cancelar</button>
|
||||
</div>
|
||||
</div>
|
||||
</ContentTemplate>
|
||||
</asp:UpdatePanel>
|
||||
</div>
|
||||
</asp:Content>
|
||||
<asp:Content ID="Content7" ContentPlaceHolderID="JS" runat="Server">
|
||||
</asp:Content>
|
||||
|
||||
345
General/TimbraRetencion.aspx.vb
Normal file
345
General/TimbraRetencion.aspx.vb
Normal file
@@ -0,0 +1,345 @@
|
||||
Option Explicit On
|
||||
Option Strict On
|
||||
Imports System.IO
|
||||
Imports System.Data
|
||||
Imports System.Xml
|
||||
Imports System.Xml.Serialization
|
||||
Imports ADSNetLibrary.PacsTimbrado.SAT
|
||||
Imports Extensiones
|
||||
Imports Profact.TimbraCFDI40
|
||||
|
||||
Partial Class General_TimbraRetencion
|
||||
Inherits ClsPaginas
|
||||
|
||||
#Region "PROPIEDADES"
|
||||
Private Property CveMarca() As Integer
|
||||
Get
|
||||
Return If(IsNothing(ViewState("CveMarca")), -1, CInt(ViewState("CveMarca")))
|
||||
End Get
|
||||
Set
|
||||
ViewState("CveMarca") = Value
|
||||
End Set
|
||||
End Property
|
||||
Private Property Modalidad() As String
|
||||
Get
|
||||
Return If(IsNothing(ViewState("Modalidad")), "", (ViewState("Modalidad").ToString))
|
||||
End Get
|
||||
Set
|
||||
ViewState("Modalidad") = Value
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Private Property DtDetalle As Data.DataTable
|
||||
Get
|
||||
Return If(IsNothing(ViewState("DtDetalle")), Nothing, CType(ViewState("DtDetalle"), DataTable))
|
||||
End Get
|
||||
Set(value As DataTable)
|
||||
ViewState("DtDetalle") = value
|
||||
End Set
|
||||
End Property
|
||||
|
||||
#End Region
|
||||
|
||||
Private Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
|
||||
If Not IsPostBack Then
|
||||
DdlClientes.setEsWebService(True)
|
||||
End If
|
||||
End Sub
|
||||
|
||||
#Region "Timbra"
|
||||
Private Function TimbraRetencion(cfditimbre As CFDITimbreRetenciones, UsuarioActual As Usuario) As String
|
||||
Dim sw As New Diagnostics.Stopwatch
|
||||
Dim swTiempo As New StringBuilder
|
||||
Dim swmili As Long = 0
|
||||
sw.Start()
|
||||
Dim ArchivoLLave As String = $"{UsuarioActual.Empresa.Ruta}Certificados\{UsuarioActual.Empresa.ArchivoKey}"
|
||||
Dim ArchivoCertificado As String = $"{UsuarioActual.Empresa.Ruta}Certificados\{UsuarioActual.Empresa.ArchivoCer}"
|
||||
|
||||
Dim Clave As String = UsuarioActual.Empresa.ContraseñaKey
|
||||
Dim EmisorRFC As String = UsuarioActual.Empresa.RFC
|
||||
Dim EmisorNombre As String = UsuarioActual.Empresa.Empresa
|
||||
Dim SubTotal As Decimal = 0
|
||||
Dim AmbienteProductivo As Boolean = True
|
||||
Dim NumDecimalesImporte As Integer = 2
|
||||
|
||||
|
||||
If Not ClsPaginas.EsProduccion AndAlso (Not UsuarioActual.Empresa.FacturaProduccion OrElse UsuarioActual.CveEmpresa = 1) Then
|
||||
AmbienteProductivo = False
|
||||
Clave = "12345678a"
|
||||
EmisorRFC = "EKU9003173C9"
|
||||
EmisorNombre = "ESCUELA KEMPER URGATE"
|
||||
ArchivoLLave = $"{Extensiones.ModExtensiones.DirectorioEmpresas}\1\Certificados\EKU9003173C9.key"
|
||||
ArchivoCertificado = $"{Extensiones.ModExtensiones.DirectorioEmpresas}\1\Certificados\EKU9003173C9.cer"
|
||||
UsuarioActual.Empresa.CodigoRegimenFiscal = "601"
|
||||
End If
|
||||
|
||||
#Region "Valida"
|
||||
If Not File.Exists(ArchivoCertificado) Then
|
||||
Alert("El archivo de certificado no existe", TipoMensaje.MsgError)
|
||||
Return ""
|
||||
End If
|
||||
If Not File.Exists(ArchivoLLave) Then
|
||||
Alert("El archivo de llave privada no existe", TipoMensaje.MsgError)
|
||||
Return ""
|
||||
End If
|
||||
If UsuarioActual.Empresa.ContraseñaKey = "" Then
|
||||
Alert("La clave no puede ser vacía", TipoMensaje.MsgError)
|
||||
Return ""
|
||||
End If
|
||||
#End Region
|
||||
|
||||
|
||||
#Region "Variables"
|
||||
Dim llaveByte As Byte(), certByte As Byte()
|
||||
Dim llaveBase64 As String, certBase64 As String
|
||||
|
||||
Dim complemento As String = ""
|
||||
Dim complementoConcepto As String = ""
|
||||
'//Inicializamos el conector el parámetro indica el ambiente en el que se utilizará
|
||||
'//Fasle = Ambiente de pruebas
|
||||
'//True = Ambiente de producción
|
||||
Dim cfdi As New Profact.TimbraCFDI40.Conector(AmbienteProductivo)
|
||||
Dim comprobante As New Profact.TimbraCFDI40.Comprobante()
|
||||
|
||||
If Not UsuarioActual.Empresa.FacturaProduccion OrElse UsuarioActual.CveEmpresa = 1 OrElse Not ClsPaginas.EsProduccion Then
|
||||
cfdi.EstableceCredenciales("mvpNUXmQfK8=")
|
||||
Else
|
||||
cfdi.EstableceCredenciales($"vSGxMFWnNRy/nDoowxqrqw==|Sia123654")
|
||||
End If
|
||||
|
||||
#End Region
|
||||
|
||||
#Region "Verifica"
|
||||
Try
|
||||
llaveByte = System.IO.File.ReadAllBytes(ArchivoLLave)
|
||||
llaveBase64 = Convert.ToBase64String(llaveByte)
|
||||
Catch ex As Exception
|
||||
Alert($"Error al leer la llave privada: {ex.Message}", TipoMensaje.MsgError)
|
||||
Return ""
|
||||
End Try
|
||||
|
||||
Try
|
||||
certByte = System.IO.File.ReadAllBytes(ArchivoCertificado)
|
||||
certBase64 = Convert.ToBase64String(certByte)
|
||||
Catch ex As Exception
|
||||
Alert($"Error al leer el certificado: {ex.Message}", TipoMensaje.MsgError)
|
||||
Return ""
|
||||
End Try
|
||||
sw.Stop()
|
||||
swTiempo.AppendFormat("Verificado : ({0}) {1} ", sw.ElapsedMilliseconds - swmili, sw.ElapsedMilliseconds)
|
||||
swmili = sw.ElapsedMilliseconds
|
||||
sw.Start()
|
||||
#End Region
|
||||
'CType([Enum].Parse(GetType(ProfactCartaPorte.CartaPorteTranspInternac), Carta.TranspInternac), ProfactCartaPorte.CartaPorteTranspInternac)
|
||||
|
||||
Dim retenciones As Retenciones = New Profact.TimbraCFDI40.Retenciones()
|
||||
retenciones.Version = "2.0"
|
||||
retenciones.FechaExp = cfditimbre.Fecha
|
||||
retenciones.CveRetenc = CType([Enum].Parse(GetType(c_CveRetenc), "Item" & cfditimbre.Retencion.ClaveRetencion), c_CveRetenc)
|
||||
retenciones.Emisor = New RetencionesEmisor()
|
||||
retenciones.Emisor.RfcE = EmisorRFC
|
||||
retenciones.Emisor.NomDenRazSocE = EmisorNombre
|
||||
retenciones.Emisor.RegimenFiscalE = CType([Enum].Parse(GetType(c_RegimenFiscal), "Item" & UsuarioActual.Empresa.CodigoRegimenFiscal), c_RegimenFiscal)
|
||||
retenciones.LugarExpRetenc = cfditimbre.Retencion.LugarExpedicion
|
||||
|
||||
Dim retencionNacional As RetencionesReceptorNacional = New RetencionesReceptorNacional()
|
||||
retenciones.Receptor = New RetencionesReceptor()
|
||||
retenciones.Receptor.NacionalidadR = If(cfditimbre.Receptor.NacionalidadR = "Nacional", RetencionesReceptorNacionalidadR.Nacional, RetencionesReceptorNacionalidadR.Extranjero)
|
||||
retencionNacional.RfcR = cfditimbre.Receptor.RFCR
|
||||
retencionNacional.NomDenRazSocR = cfditimbre.Receptor.NombreDenominacionR
|
||||
retencionNacional.DomicilioFiscalR = cfditimbre.Receptor.DomicilioFiscalR
|
||||
retenciones.Receptor.Item = retencionNacional
|
||||
If cfditimbre.CFDIRelacionados.TipoRelacion <> "" Then
|
||||
For Each uid As String In cfditimbre.CFDIRelacionados.UUID
|
||||
Dim uuidrela As New RetencionesCfdiRetenRelacionados
|
||||
uuidrela.TipoRelacion = CType([Enum].Parse(GetType(c_TipoRelacion), "Item" & cfditimbre.CFDIRelacionados.TipoRelacion), c_TipoRelacion)
|
||||
uuidrela.UUID = uid
|
||||
retenciones.CfdiRetenRelacionados = uuidrela
|
||||
Next
|
||||
End If
|
||||
|
||||
retenciones.Periodo = New RetencionesPeriodo()
|
||||
retenciones.Periodo.MesIni = CType([Enum].Parse(GetType(c_Periodo), "Item" & cfditimbre.Retencion.PeriodoMesInicio), c_Periodo)
|
||||
retenciones.Periodo.MesFin = CType([Enum].Parse(GetType(c_Periodo), "Item" & cfditimbre.Retencion.PeriodoMesFin), c_Periodo)
|
||||
retenciones.Periodo.Ejercicio = CType([Enum].Parse(GetType(c_Ejercicio), "Item" & cfditimbre.Retencion.PeriodoEjercicio.ToString), c_Ejercicio)
|
||||
retenciones.Totales = New RetencionesTotales()
|
||||
retenciones.Totales.MontoTotOperacion = 0
|
||||
retenciones.Totales.MontoTotGrav = 0
|
||||
retenciones.Totales.MontoTotExent = 0
|
||||
retenciones.Totales.MontoTotRet = cfditimbre.TotalImpuestosRetenidos
|
||||
retenciones.Totales.UtilidadBimestral = 1
|
||||
retenciones.Totales.UtilidadBimestralSpecified = True
|
||||
retenciones.Totales.ISRCorrespondiente = cfditimbre.ISRCorrespondiente
|
||||
retenciones.Totales.ISRCorrespondienteSpecified = True
|
||||
retenciones.Totales.ImpRetenidos = New RetencionesTotalesImpRetenidos(cfditimbre.RetencionesImpuestos.Count - 1) {}
|
||||
Dim i As Integer = 0
|
||||
For Each drimp As CFDIImpuestosRetenidos In cfditimbre.RetencionesImpuestos
|
||||
retenciones.Totales.ImpRetenidos(i) = New RetencionesTotalesImpRetenidos()
|
||||
retenciones.Totales.ImpRetenidos(i).BaseRet = 0
|
||||
retenciones.Totales.ImpRetenidos(i).BaseRetSpecified = True
|
||||
retenciones.Totales.ImpRetenidos(i).ImpuestoRet = CType([Enum].Parse(GetType(c_Impuesto), "Item0" & drimp.ImpuestoRetencion), c_Impuesto) ' c_Impuesto.Item001
|
||||
retenciones.Totales.ImpRetenidos(i).ImpuestoRetSpecified = True
|
||||
retenciones.Totales.ImpRetenidos(i).MontoRet = drimp.MontoRetencion
|
||||
retenciones.Totales.ImpRetenidos(i).TipoPagoRet = CType([Enum].Parse(GetType(c_TipoPagoRet), "Item" & drimp.TipoPagoRetencion), c_TipoPagoRet) 'c_TipoPagoRet.Item04
|
||||
i += 1
|
||||
Next
|
||||
|
||||
'retenciones.Totales.ImpRetenidos(i) = New RetencionesTotalesImpRetenidos()
|
||||
'retenciones.Totales.ImpRetenidos(i).BaseRet = 0
|
||||
'retenciones.Totales.ImpRetenidos(i).BaseRetSpecified = True
|
||||
'retenciones.Totales.ImpRetenidos(i).ImpuestoRet = c_Impuesto.Item001
|
||||
'retenciones.Totales.ImpRetenidos(i).ImpuestoRetSpecified = True
|
||||
'retenciones.Totales.ImpRetenidos(i).MontoRet = 705
|
||||
'retenciones.Totales.ImpRetenidos(i).TipoPagoRet = c_TipoPagoRet.Item04
|
||||
|
||||
'' dividendos
|
||||
'Dim dividendos As Profact.TimbraCFDI.Dividendos = New Profact.TimbraCFDI.Dividendos()
|
||||
'dividendos.Version = "1.0"
|
||||
'dividendos.DividOUtil = New Profact.TimbraCFDI.DividendosDividOUtil()
|
||||
'dividendos.DividOUtil.CveTipDivOUtil = Profact.TimbraCFDI.c_TipoDividendoOUtilidadDistribuida.Item06
|
||||
'dividendos.DividOUtil.MontISRAcredRetMexico = 0.00D
|
||||
'dividendos.DividOUtil.MontISRAcredRetExtranjero = 0.00D
|
||||
'dividendos.DividOUtil.TipoSocDistrDiv = Profact.TimbraCFDI.DividendosDividOUtilTipoSocDistrDiv.SociedadNacional
|
||||
'dividendos.DividOUtil.MontDivAcumNal = 426180D
|
||||
'dividendos.DividOUtil.MontDivAcumNalSpecified = True
|
||||
'dividendos.DividOUtil.MontISRAcredNal = 127586D
|
||||
'dividendos.DividOUtil.MontDivAcumNalSpecified = True
|
||||
Dim LXmlComplementos As List(Of XmlElement) = New List(Of XmlElement)()
|
||||
'Dim nombres As System.Xml.Serialization.XmlSerializerNamespaces = New System.Xml.Serialization.XmlSerializerNamespaces()
|
||||
'nombres.Add("dividendos", "http://www.sat.gob.mx/esquemas/retencionpago/1/dividendos")
|
||||
'Dim xmlDividendos As String = Profact.TimbraCFDI.XMLUtilerias.SerializaObjeto(dividendos, GetType(Profact.TimbraCFDI.Dividendos), nombres)
|
||||
'Dim docDividendos As XmlDocument = New XmlDocument()
|
||||
'docDividendos.LoadXml(xmlDividendos)
|
||||
'retenciones.DividendosSpecified = True
|
||||
'LXmlComplementos.Add(docDividendos.DocumentElement)
|
||||
''fin dividendos
|
||||
|
||||
'retenciones.Complemento = New RetencionesComplemento()
|
||||
'retenciones.Complemento.Any = LXmlComplementos.ToArray()
|
||||
Dim xmlEncode As String
|
||||
|
||||
Using sww As New System.IO.StringWriter()
|
||||
Dim xs As XmlSerializer
|
||||
xs = New System.Xml.Serialization.XmlSerializer(GetType(Profact.TimbraCFDI40.Retenciones))
|
||||
xs.Serialize(sww, retenciones)
|
||||
xmlEncode = sww.ToString()
|
||||
End Using
|
||||
|
||||
Dim resultadoTimbre As Profact.TimbraCFDI.ResultadoTimbre
|
||||
resultadoTimbre = cfdi.TimbraRetencion(retenciones)
|
||||
|
||||
If resultadoTimbre.Exitoso Then
|
||||
Dim Retorno As String = ""
|
||||
Dim RutaArchivo As String = $"{UsuarioActual.Empresa.Ruta}XML\Ret\"
|
||||
Dim NombreArchivoXML As String = ""
|
||||
Dim objGrales As New ClsGenerales
|
||||
objGrales.IniciaTransacSQL()
|
||||
Dim tCveTimbre As Integer = objGrales.AddGralTimbre("Ret", 12679, cfditimbre.Fecha, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa)
|
||||
NombreArchivoXML = $"{objGrales.SerieInsertada}-{objGrales.FolioInsertado}.xml"
|
||||
If Not Directory.Exists(RutaArchivo) Then Directory.CreateDirectory(RutaArchivo)
|
||||
|
||||
If tCveTimbre > 0 Then
|
||||
If objGrales.UpdateTimbreTimbrado(tCveTimbre, resultadoTimbre.FolioUUID, cfditimbre.Fecha, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, 3, "4.0") Then
|
||||
resultadoTimbre.GuardaXml(RutaArchivo, NombreArchivoXML)
|
||||
Else
|
||||
Retorno = "Error"
|
||||
End If
|
||||
Else
|
||||
Retorno = "Error"
|
||||
End If
|
||||
If Retorno = "" Then
|
||||
objGrales.Commit()
|
||||
Else
|
||||
objGrales.RollBack()
|
||||
End If
|
||||
objGrales.Dispose()
|
||||
|
||||
'If resultadoTimbre.GuardaXml("C:/", "EjemploRetencion_nombre") Then
|
||||
' Alert("El xml fue guardado correctamente")
|
||||
'Else
|
||||
' Alert("Ocurrió un error al guardar el comprobante, por favor verifica los permisos de la carpeta")
|
||||
'End If
|
||||
|
||||
'If resultadoTimbre.GuardaCodigoBidimensional("C:/", "codigoRetencion_nombre") Then
|
||||
' Alert("El código bidimensional fue guardado correctamente")
|
||||
'Else
|
||||
' Alert("Ocurrió un error al guardar el código bidimensional, por favor verifica los permisos de la carpeta")
|
||||
'End If
|
||||
|
||||
'Dim folioFiscal As String = resultadoTimbre.FolioUUID
|
||||
'Dim noCertificado As String = resultadoTimbre.No_Certificado
|
||||
'Dim noCertificadoSAT As String = resultadoTimbre.No_Certificado_SAT
|
||||
'Dim fechaCert As String = resultadoTimbre.FechaCertificacion
|
||||
'Dim selloCFDI As String = resultadoTimbre.SelloCFDI
|
||||
'Dim selloSAT As String = resultadoTimbre.SelloSAT
|
||||
'Dim cadena As String = resultadoTimbre.CadenaTimbre
|
||||
Alert("Timbrado Exitoso")
|
||||
Else
|
||||
Alert(resultadoTimbre.Descripcion)
|
||||
Dim detalle As String = resultadoTimbre.Detalle
|
||||
End If
|
||||
End Function
|
||||
#End Region
|
||||
|
||||
|
||||
Protected Sub BtnEmitirRetencion_Click(sender As Object, e As EventArgs)
|
||||
Dim cfditimbre As New CFDITimbreRetenciones
|
||||
cfditimbre.Fecha = Now
|
||||
cfditimbre.Retencion.ClaveRetencion = DdlClaveRetencion.SelectedValue
|
||||
cfditimbre.Retencion.PeriodoMesInicio = DdlPeriodoInicio.SelectedValue
|
||||
cfditimbre.Retencion.PeriodoMesFin = DdlPeriodoFin.SelectedValue
|
||||
cfditimbre.Retencion.PeriodoEjercicio = DdlEjercicio.SelectedValue.ToEntero
|
||||
cfditimbre.Retencion.LugarExpedicion = UsuarioActual.Empresa.CP
|
||||
cfditimbre.Receptor.RFCR = "AEMV690902NM5"
|
||||
cfditimbre.Receptor.NacionalidadR = "Nacional"
|
||||
cfditimbre.Receptor.DomicilioFiscalR = "11950"
|
||||
cfditimbre.Receptor.NombreDenominacionR = "VERONICA MICHELLE ARMENTA MASON"
|
||||
cfditimbre.CFDIRelacionados.TipoRelacion = "01"
|
||||
cfditimbre.CFDIRelacionados.UUID.Add("671fdb07-406a-42a6-9a89-40219f663ea1")
|
||||
cfditimbre.ISRCorrespondiente = 705
|
||||
cfditimbre.RetencionesImpuestos.Add(New CFDIImpuestosRetenidos With {.MontoRetencion = 705, .BaseRetencion = 0, .ImpuestoRetencion = "01", .TipoPagoRetencion = "04"})
|
||||
|
||||
For Each gvr As GridViewRow In GvD.Rows
|
||||
Dim ret As New CFDIImpuestosRetenidos With {.BaseRetencion = gvr.DataKey("BaseRetencion").ToDecimal,
|
||||
.ImpuestoRetencion = gvr.DataKey("ImpuestoRetencion")}
|
||||
cfditimbre.RetencionesImpuestos.Add(ret)
|
||||
Next
|
||||
|
||||
|
||||
TimbraRetencion(cfditimbre, UsuarioActual)
|
||||
|
||||
End Sub
|
||||
|
||||
|
||||
Protected Sub LnkAgregarRetencion_Click(sender As Object, e As EventArgs)
|
||||
|
||||
UpModal.Update()
|
||||
RegistraScript("$('#DModalRetencion').modal()")
|
||||
|
||||
DtDetalle = New DataTable
|
||||
DtDetalle.Columns.Add("TipoImpuesto", GetType(String))
|
||||
DtDetalle.Columns.Add("ClaveTipoImpuesto", GetType(String))
|
||||
DtDetalle.Columns.Add("BaseRetencion", GetType(Decimal))
|
||||
DtDetalle.Columns.Add("ClaveTipoPago", GetType(String))
|
||||
DtDetalle.Columns.Add("TipoPago", GetType(String))
|
||||
DtDetalle.Columns.Add("ImpuestoRetenido", GetType(Decimal))
|
||||
|
||||
End Sub
|
||||
|
||||
Protected Sub BtnAgregar_Click(sender As Object, e As EventArgs)
|
||||
|
||||
Dim dr As DataRow = DtDetalle.NewRow
|
||||
dr("TipoImpuesto") = DdlTipoImpuesto.Text
|
||||
dr("ClaveTipoImpuesto") = DdlTipoImpuesto.SelectedValue
|
||||
dr("BaseRetencion") = TxtBase.Text.ToDecimal
|
||||
dr("ClaveTipoPago") = DdlTipoPagoRet.SelectedValue
|
||||
dr("TipoPago") = DdlTipoPagoRet.Text
|
||||
dr("ImpuestoRetenido") = TxtImpuestoRetenido.Text.ToDecimal
|
||||
|
||||
DtDetalle.Rows.Add(dr)
|
||||
|
||||
GvD.DataSource = DtDetalle
|
||||
GvD.DataBind()
|
||||
|
||||
End Sub
|
||||
End Class
|
||||
Reference in New Issue
Block a user