Funcionalidad 706, en ventas y estados financieros

This commit is contained in:
2022-10-18 22:59:33 -07:00
parent c3f6d1aea2
commit f4cf802cf0
12 changed files with 1437 additions and 1394 deletions

View File

@@ -1,5 +1,5 @@
<%@ WebHandler Language="VB" Class="SIGFacturacion" %>
<%@ WebHandler Language="VB" Class="SIGFacturacion" %>
Imports System
Imports System.Web
Imports System.Net.Http
@@ -11,62 +11,62 @@ Imports Extensiones
Imports System.IO
Imports Modelos
Public Class SIGFacturacion : Implements IHttpHandler, IRequiresSessionState
Public Class SIGFacturacion : Implements IHttpHandler, IRequiresSessionState
Private Property CveEmpresaFacturar As Integer = 143
Public Sub ProcessRequest(ByVal context As HttpContext) Implements IHttpHandler.ProcessRequest
context.Response.ContentType = "text/plain"
context.Response.ContentType = "text/plain"
Dim Retorno As Boolean = False
Try
'If context.Request.InputStream IsNot Nothing Then
' Using reader As New StreamReader(context.Request.InputStream)
' Dim json = reader.ReadToEnd
' If Not String.IsNullOrEmpty(json) Then
' Dim JsonRequest As JObject = JObject.Parse(json)
' If JsonRequest IsNot Nothing Then
' Dim Metodo = JsonRequest("Metodo").ToString()
' If Metodo = "FactMasivaRemisiones" Then
' Dim pCveEmpresa = JsonRequest("CveEmpresa").ToString()
' Dim pFechaI As String = ""
' Dim pFechaF As String = ""
' If JsonRequest("FechaI") IsNot Nothing AndAlso JsonRequest("FechaF") IsNot Nothing Then
' pFechaI = JsonRequest("FechaI")
' pFechaF = JsonRequest("FechaF")
' End If
' IniciaFacturacionMasiva(context, CveEmpresaFacturar, pFechaI, pFechaF)
' End If
' End If
' End If
' End Using
'End If
Dim Metodo = If(context.Request("Metodo") = Nothing, "", context.Request("Metodo").ToString())
If Metodo = "FactMasivaRemisiones" Then
Dim pFechaI As String = ""
Dim pFechaF As String = ""
If context.Request("FechaI") IsNot Nothing AndAlso context.Request("FechaF") IsNot Nothing Then
pFechaI = context.Request("FechaI")
pFechaF = context.Request("FechaF")
End If
Retorno = IniciaFacturacionMasiva(CveEmpresaFacturar, pFechaI, pFechaF)
Try
'If context.Request.InputStream IsNot Nothing Then
' Using reader As New StreamReader(context.Request.InputStream)
' Dim json = reader.ReadToEnd
' If Not String.IsNullOrEmpty(json) Then
' Dim JsonRequest As JObject = JObject.Parse(json)
' If JsonRequest IsNot Nothing Then
' Dim Metodo = JsonRequest("Metodo").ToString()
' If Metodo = "FactMasivaRemisiones" Then
' Dim pCveEmpresa = JsonRequest("CveEmpresa").ToString()
' Dim pFechaI As String = ""
' Dim pFechaF As String = ""
' If JsonRequest("FechaI") IsNot Nothing AndAlso JsonRequest("FechaF") IsNot Nothing Then
' pFechaI = JsonRequest("FechaI")
' pFechaF = JsonRequest("FechaF")
' End If
' IniciaFacturacionMasiva(context, CveEmpresaFacturar, pFechaI, pFechaF)
' End If
' End If
' End If
' End Using
'End If
Dim Metodo = If(context.Request("Metodo") = Nothing, "", context.Request("Metodo").ToString())
If Metodo = "FactMasivaRemisiones" Then
Dim pFechaI As String = ""
Dim pFechaF As String = ""
If context.Request("FechaI") IsNot Nothing AndAlso context.Request("FechaF") IsNot Nothing Then
pFechaI = context.Request("FechaI")
pFechaF = context.Request("FechaF")
End If
Retorno = IniciaFacturacionMasiva(CveEmpresaFacturar, pFechaI, pFechaF)
End If
Catch ex As Exception
ex.GuardaLog(ex.Message)
End Try
If Retorno Then
context.Response.Write("True")
Else
context.Response.Write("False")
End Try
If Retorno Then
context.Response.Write("True")
Else
context.Response.Write("False")
End If
End Sub
@@ -77,7 +77,7 @@ Public Class SIGFacturacion : Implements IHttpHandler, IRequiresSessionState
End Get
End Property
Private Function IniciaFacturacionMasiva(pCveEmpresa As String, pFechaI As String, pFechaF As String) As Boolean
Private Function IniciaFacturacionMasiva(pCveEmpresa As String, pFechaI As String, pFechaF As String) As Boolean
Dim Retorno As Boolean = True
Dim JsonRetorno As New JObject()
Dim CveEmpresa As Integer = pCveEmpresa.ToEntero()
@@ -96,9 +96,9 @@ Public Class SIGFacturacion : Implements IHttpHandler, IRequiresSessionState
FechaI = New DateTime(DomingoAnterior.Year, DomingoAnterior.Month, DomingoAnterior.Day, 0, 0, 0)
FechaF = New DateTime(Sabado.Year, Sabado.Month, Sabado.Day, 23, 59, 59)
JsonRetorno = EjecutarFacturacionMasiva(Usuario, FechaI, FechaF, Usuario.Empresa.FacturaProduccion)
Else
Retorno = False
JsonRetorno = EjecutarFacturacionMasiva(Usuario, FechaI, FechaF, Usuario.Empresa.FacturaProduccion)
Else
Retorno = False
GuardaLogFacturacion("Ejecución no permitida, no es el dia permitido para ejecucion o no se espeficaron las fechas")
End If
Else
@@ -107,11 +107,11 @@ Public Class SIGFacturacion : Implements IHttpHandler, IRequiresSessionState
JsonRetorno = EjecutarFacturacionMasiva(Usuario, FechaI, FechaF, Usuario.Empresa.FacturaProduccion)
End If
End If
GuardaLogFacturacion("Ejecución Exitosa, se generaron las siguientes facturas:")
GuardaLogFacturacion(JsonRetorno.ToString())
End If
GuardaLogFacturacion("Ejecución Exitosa, se generaron las siguientes facturas:")
GuardaLogFacturacion(JsonRetorno.ToString())
Return Retorno
End Function
@@ -242,8 +242,8 @@ Public Class SIGFacturacion : Implements IHttpHandler, IRequiresSessionState
json.Add(New JProperty("Almacen", ObsInv.ToString()))
Return json
End Function
End Function
#Region "V A L I D A - D A T O S"
Private Function ValidaUsuarioSistema(CveEmpresa As Integer) As Usuario
Dim UsuarioActual As Usuario = Nothing
@@ -277,8 +277,8 @@ Public Class SIGFacturacion : Implements IHttpHandler, IRequiresSessionState
UsuarioActual.Empresa = ObjEmpresa.Empresa
End If
ObjEmpresa.Dispose()
End Sub
End Sub
#End Region
#Region "D E F I N I R - O B J E T O S"
Private Function CreaFactura(Resp As Modelos.Factura.MMensajeFactura, UsuarioActual As Usuario, DTRemisionesPS As DataTable, CveCliente As Integer, CveSubProyecto As Integer, CveMoneda As Integer, DatosRemisiones As JObject, FechaI As DateTime, FechaF As DateTime) As Modelos.Factura
@@ -780,7 +780,7 @@ Public Class SIGFacturacion : Implements IHttpHandler, IRequiresSessionState
'RECARGAR GV
Return Row
End Function
End Function
#End Region
#Region "E N V I O - C O R R E O"
Private Sub EnviarCorreo(Objfactura As Modelos.Factura, UsuarioActual As Usuario)
@@ -924,9 +924,9 @@ Public Class SIGFacturacion : Implements IHttpHandler, IRequiresSessionState
End If
End Try
End If
End Sub
End Sub
#End Region
Public Sub GuardaLogFacturacion(Str As String)
Dim ArchivoW As StreamWriter
Dim strLineaTMP As String
@@ -949,8 +949,8 @@ Public Class SIGFacturacion : Implements IHttpHandler, IRequiresSessionState
ArchivoW.Close()
ArchivoW.Dispose()
End Sub
End Sub
#Region "G L O B A L - D T"
Public Property GlobalTipoCambio(Optional Fecha As Date = MinFecha) As Double
Get
@@ -1135,10 +1135,10 @@ Public Class SIGFacturacion : Implements IHttpHandler, IRequiresSessionState
Set(value As DataTable)
HttpContext.Current.Application("GlobalDTPSATPS") = value
End Set
End Property
End Property
#Region "GLOBALES DE SAT COMERCIO EXTERIOR"
Property GlobalDTClavePedimento() As DataTable
Get
GlobalDTClavePedimento = DirectCast(HttpContext.Current.Application("GlobalDTClavePedimento"), DataTable)
@@ -1248,10 +1248,10 @@ Public Class SIGFacturacion : Implements IHttpHandler, IRequiresSessionState
Set(value As DataTable)
HttpContext.Current.Application("GlobalDTColonia") = value
End Set
End Property
End Property
#End Region
Property GlobalDTPSATUM() As DataTable
Get
GlobalDTPSATUM = DirectCast(HttpContext.Current.Application("GlobalDTPSATUM"), DataTable)
@@ -1635,8 +1635,8 @@ Public Class SIGFacturacion : Implements IHttpHandler, IRequiresSessionState
Set(value As DataTable)
HttpContext.Current.Application("GlobalDTLeyendasFiscales") = value
End Set
End Property
End Property
Property GlobalDTEstatusFactura() As DataTable
Get
GlobalDTEstatusFactura = DirectCast(HttpContext.Current.Application("GlobalDTEstatusFactura"), DataTable)
@@ -1680,37 +1680,37 @@ Public Class SIGFacturacion : Implements IHttpHandler, IRequiresSessionState
HttpContext.Current.Application("GlobalDTProyectos") = value
End Set
End Property
Public Property GlobalDTSubProyectos(CveProyecto As Integer, Optional CveSubProyecto As Integer = -1, Optional CveEmpresa As Integer = -1, Optional Estatus As Integer = 1) As DataTable
Get
Dim AppNombre As String = String.Format("GlobalDTSubProyectos-{0}", CveEmpresa)
'sino existe, recarga los datos
If DirectCast(HttpContext.Current.Application(AppNombre), DataTable) Is Nothing Or (DirectCast(HttpContext.Current.Application(AppNombre), DataTable) IsNot Nothing AndAlso DirectCast(HttpContext.Current.Application(AppNombre), DataTable).Rows.Count = 0) Then
Dim P As New ClsSubProyectos
If P.GetSubProyectos(CveEmpresa:=CveEmpresa) Then HttpContext.Current.Application(AppNombre) = P.DtResultados
P.Dispose()
End If
If CveProyecto <> -1 OrElse CveSubProyecto <> -1 OrElse CveEmpresa <> -1 OrElse Estatus <> -1 Then
Dim StrSQL As New StringBuilder
If CveProyecto <> -1 Then StrSQL.AppendFormat(" AND CveProyecto = {0}", CveProyecto)
If CveSubProyecto <> -1 Then StrSQL.AppendFormat(" AND CveSubProyecto = {0}", CveSubProyecto)
If Estatus <> -1 Then StrSQL.AppendFormat(" AND CveEstatus = {0}", Estatus)
If CveEmpresa <> -1 Then StrSQL.AppendFormat(" AND CveEmpresa = {0}", CveEmpresa)
Dim Dv As New DataView(DirectCast(HttpContext.Current.Application(AppNombre), DataTable), StrSQL.ToString.Trim.TrimStart("A"c, "N"c, "D"c), "", DataViewRowState.CurrentRows)
GlobalDTSubProyectos = Dv.ToTable
Dv.Dispose()
Else
GlobalDTSubProyectos = DirectCast(HttpContext.Current.Application(AppNombre), DataTable)
End If
End Get
Set(ByVal value As DataTable)
Dim AppNombre As String = String.Format("GlobalDTSubProyectos-{0}", CveEmpresa)
HttpContext.Current.Application(AppNombre) = value
End Set
Public Property GlobalDTSubProyectos(CveProyecto As Integer, Optional CveSubProyecto As Integer = -1, Optional CveEmpresa As Integer = -1, Optional Estatus As Integer = 1) As DataTable
Get
Dim AppNombre As String = String.Format("GlobalDTSubProyectos-{0}", CveEmpresa)
'sino existe, recarga los datos
If DirectCast(HttpContext.Current.Application(AppNombre), DataTable) Is Nothing Or (DirectCast(HttpContext.Current.Application(AppNombre), DataTable) IsNot Nothing AndAlso DirectCast(HttpContext.Current.Application(AppNombre), DataTable).Rows.Count = 0) Then
Dim P As New ClsSubProyectos
If P.GetSubProyectos(CveEmpresa:=CveEmpresa) Then HttpContext.Current.Application(AppNombre) = P.DtResultados
P.Dispose()
End If
If CveProyecto <> -1 OrElse CveSubProyecto <> -1 OrElse CveEmpresa <> -1 OrElse Estatus <> -1 Then
Dim StrSQL As New StringBuilder
If CveProyecto <> -1 Then StrSQL.AppendFormat(" AND CveProyecto = {0}", CveProyecto)
If CveSubProyecto <> -1 Then StrSQL.AppendFormat(" AND CveSubProyecto = {0}", CveSubProyecto)
If Estatus <> -1 Then StrSQL.AppendFormat(" AND CveEstatus = {0}", Estatus)
If CveEmpresa <> -1 Then StrSQL.AppendFormat(" AND CveEmpresa = {0}", CveEmpresa)
Dim Dv As New DataView(DirectCast(HttpContext.Current.Application(AppNombre), DataTable), StrSQL.ToString.Trim.TrimStart("A"c, "N"c, "D"c), "", DataViewRowState.CurrentRows)
GlobalDTSubProyectos = Dv.ToTable
Dv.Dispose()
Else
GlobalDTSubProyectos = DirectCast(HttpContext.Current.Application(AppNombre), DataTable)
End If
End Get
Set(ByVal value As DataTable)
Dim AppNombre As String = String.Format("GlobalDTSubProyectos-{0}", CveEmpresa)
HttpContext.Current.Application(AppNombre) = value
End Set
End Property
Property GlobalDTSubProyectosUsuarios(CveUsuario As Integer, CveProyecto As Integer, CveEmpresa As Integer, Optional CveSubProyecto As Integer = -1, Optional CveEstatus As Integer = -1) As DataTable
Get
@@ -2305,44 +2305,44 @@ Public Class SIGFacturacion : Implements IHttpHandler, IRequiresSessionState
HttpContext.Current.Application("GlobalDTAlmacen") = value
End Set
End Property
Property GlobalDTAlmacenUsuarios(CveUsuario As Integer, CveEmpresa As Integer, Optional CveTipoAlmacen As Integer = 1) As DataTable
Get
Dim AppNombre As String = String.Format("GlobalDTAlmacenUsuarios-{0}", CveEmpresa)
'sino existe, recarga los datos
If HttpContext.Current.Application(AppNombre) Is Nothing Then
Dim ObjUsr As New ClsSisUsuarios
If ObjUsr.GetAlmacen(-1, CveEmpresa) Then HttpContext.Current.Application(AppNombre) = ObjUsr.DtResultados
ObjUsr.Dispose()
End If
Dim Str As New StringBuilder
Str.AppendFormat("CveUsuario = {0} AND CveEmpresa = {1} ", CveUsuario, CveEmpresa)
If CveTipoAlmacen > 0 Then Str.AppendFormat("AND CveTipoAlmacen = {0}", CveTipoAlmacen)
Dim Dv As New DataView(DirectCast(HttpContext.Current.Application(AppNombre), DataTable), Str.ToString, "", DataViewRowState.CurrentRows)
GlobalDTAlmacenUsuarios = Dv.ToTable
Dv.Dispose()
End Get
Set(value As DataTable)
Dim AppNombre As String = String.Format("GlobalDTAlmacenUsuarios-{0}", CveEmpresa)
HttpContext.Current.Application(AppNombre) = value
End Set
'Get
' If CveEmpresa <> -1 Then
' Dim Str As New StringBuilder
' Str.AppendFormat("CveUsuario = {0} AND CveEmpresa = {1} ", CveUsuario, CveEmpresa)
' If CveTipoAlmacen > 0 Then Str.AppendFormat("AND CveTipoAlmacen = {0}", CveTipoAlmacen)
' Dim Dv As New DataView(DirectCast(HttpContext.Current.Application("GlobalDTAlmacenUsuarios"), DataTable), Str.ToString, "", DataViewRowState.CurrentRows)
' GlobalDTAlmacenUsuarios = Dv.ToTable
' Dv.Dispose()
' Else
' GlobalDTAlmacenUsuarios = DirectCast(HttpContext.Current.Application("GlobalDTAlmacenUsuarios"), DataTable)
' End If
'End Get
'Set(value As DataTable)
' HttpContext.Current.Application("GlobalDTAlmacenUsuarios") = value
'End Set
Property GlobalDTAlmacenUsuarios(CveUsuario As Integer, CveEmpresa As Integer, Optional CveTipoAlmacen As Integer = 1) As DataTable
Get
Dim AppNombre As String = String.Format("GlobalDTAlmacenUsuarios-{0}", CveEmpresa)
'sino existe, recarga los datos
If HttpContext.Current.Application(AppNombre) Is Nothing Then
Dim ObjUsr As New ClsSisUsuarios
If ObjUsr.GetAlmacen(-1, CveEmpresa) Then HttpContext.Current.Application(AppNombre) = ObjUsr.DtResultados
ObjUsr.Dispose()
End If
Dim Str As New StringBuilder
Str.AppendFormat("CveUsuario = {0} AND CveEmpresa = {1} ", CveUsuario, CveEmpresa)
If CveTipoAlmacen > 0 Then Str.AppendFormat("AND CveTipoAlmacen = {0}", CveTipoAlmacen)
Dim Dv As New DataView(DirectCast(HttpContext.Current.Application(AppNombre), DataTable), Str.ToString, "", DataViewRowState.CurrentRows)
GlobalDTAlmacenUsuarios = Dv.ToTable
Dv.Dispose()
End Get
Set(value As DataTable)
Dim AppNombre As String = String.Format("GlobalDTAlmacenUsuarios-{0}", CveEmpresa)
HttpContext.Current.Application(AppNombre) = value
End Set
'Get
' If CveEmpresa <> -1 Then
' Dim Str As New StringBuilder
' Str.AppendFormat("CveUsuario = {0} AND CveEmpresa = {1} ", CveUsuario, CveEmpresa)
' If CveTipoAlmacen > 0 Then Str.AppendFormat("AND CveTipoAlmacen = {0}", CveTipoAlmacen)
' Dim Dv As New DataView(DirectCast(HttpContext.Current.Application("GlobalDTAlmacenUsuarios"), DataTable), Str.ToString, "", DataViewRowState.CurrentRows)
' GlobalDTAlmacenUsuarios = Dv.ToTable
' Dv.Dispose()
' Else
' GlobalDTAlmacenUsuarios = DirectCast(HttpContext.Current.Application("GlobalDTAlmacenUsuarios"), DataTable)
' End If
'End Get
'Set(value As DataTable)
' HttpContext.Current.Application("GlobalDTAlmacenUsuarios") = value
'End Set
End Property
Property GlobalDTNom_Periodos() As DataTable
Get
@@ -2397,9 +2397,9 @@ Public Class SIGFacturacion : Implements IHttpHandler, IRequiresSessionState
Set(value As DataTable)
HttpContext.Current.Application("GlobalDTVtaCobranzaEstatus") = value
End Set
End Property
End Property
#Region "***********************************************************************DT EVENTOS****************************************************************************************"
Property GlobalDTTiposEventos() As DataTable
Get
@@ -2435,9 +2435,9 @@ Public Class SIGFacturacion : Implements IHttpHandler, IRequiresSessionState
Set(value As DataTable)
HttpContext.Current.Application("GlobalDTOIEstatusEventos") = value
End Set
End Property
End Property
#End Region
#Region " **********************************************************************DT PROSPECTOS*************************************************************************************"
Property GlobalDTProspectosCaracteristicasClasificaciones() As DataTable
Get
@@ -2478,9 +2478,9 @@ Public Class SIGFacturacion : Implements IHttpHandler, IRequiresSessionState
Set(value As DataTable)
HttpContext.Current.Application("GlobalDTProspectosCaracteristicasOpciones") = value
End Set
End Property
End Property
#End Region
#Region "***********************************************************************DT ACTIVOS FIJOS**********************************************************************************"
Property GlobalDTActivoFijos(CveEmpresa As Integer, Optional CveSubTipoActivoFijo As Integer = -1, Optional CveActivoFijo As Integer = -1) As DataTable
Get
@@ -2573,10 +2573,10 @@ Public Class SIGFacturacion : Implements IHttpHandler, IRequiresSessionState
Set(value As DataTable)
HttpContext.Current.Application("GlobalDTTipoActivoFijo") = value
End Set
End Property
End Property
#End Region
#Region "***********************************************************************DT GENERALES**************************************************************************************"
Property GlobalDTGralPaises() As DataTable
Get
@@ -2664,10 +2664,10 @@ Public Class SIGFacturacion : Implements IHttpHandler, IRequiresSessionState
Set(value As DataTable)
HttpContext.Current.Application("GlobalDTGralColectivas") = value
End Set
End Property
End Property
#End Region
#Region "***********************************************************************DT PROSPECTOS*************************************************************************************"
Property GlobalDTProspectosSupervisores(CveEmpresa As Integer) As DataTable
Get
@@ -2876,8 +2876,8 @@ Public Class SIGFacturacion : Implements IHttpHandler, IRequiresSessionState
Set(value As DataTable)
HttpContext.Current.Application("GlobalDTProspectosTipos") = value
End Set
End Property
End Property
#Region " DT PROSPECTOS SOLICITUDES"
Property GlobalDTProspectosSolicitudes(CveEmpresa As Integer) As DataTable
Get
@@ -2944,15 +2944,15 @@ Public Class SIGFacturacion : Implements IHttpHandler, IRequiresSessionState
Set(value As DataTable)
HttpContext.Current.Application("GlobalDTProspectosSolicitudesApoyos") = value
End Set
End Property
End Property
#End Region
#End Region
#Region "**********************************************DT AMORTIZACIÓN CONTABLE PLAN DE DESARROLLO********************************************************************************"
#Region "***********************************************************************DT AMORTIZACIÓN CONTABLE*********************************************************************************************"
Property GlobalDTAC_RubrosIngreso() As DataTable
Get
GlobalDTAC_RubrosIngreso = DirectCast(HttpContext.Current.Application("GlobalDTAC_RubrosIngreso"), DataTable)
@@ -3208,11 +3208,11 @@ Public Class SIGFacturacion : Implements IHttpHandler, IRequiresSessionState
Set(value As DataTable)
HttpContext.Current.Application("GlobalDTAC_MatrizEgresos") = value
End Set
End Property
End Property
#End Region
Property GlobalDTAC_PD_EjeRector(CveEmpresa As Integer) As DataTable
Get
If CveEmpresa <> -1 Then
@@ -3291,9 +3291,9 @@ Public Class SIGFacturacion : Implements IHttpHandler, IRequiresSessionState
Set(value As DataTable)
HttpContext.Current.Application("GlobalDTAC_PD_Metas") = value
End Set
End Property
End Property
#End Region
#Region "***********************************************************************GLOBAL DT ORDENES DE COMPRA***********************************************************************"
Property GlobalDTOCEstatus(CveEmpresa As Integer) As DataTable
Get
@@ -3308,75 +3308,75 @@ Public Class SIGFacturacion : Implements IHttpHandler, IRequiresSessionState
Set(value As DataTable)
HttpContext.Current.Application("GlobalDTOCEstatus") = value
End Set
End Property
Property GlobalDTOCEstatusUsuarios(CveEmpresa As Integer, Optional CveUsuario As Integer = -1, Optional Tipo As String = "") As DataTable
Get
Dim AppNombre As String = String.Format("GlobalDTOCEstatusUsuarios-{0}", CveEmpresa)
'sino existe, recarga los datos
If DirectCast(HttpContext.Current.Application(AppNombre), DataTable) Is Nothing Then
Dim ObjOC As New ClsOC
If ObjOC.GetEstatusUsuarios(-1, -1, -1, -1, CveEmpresa) Then
HttpContext.Current.Application(AppNombre) = ObjOC.DtResultados
Else
HttpContext.Current.Application(AppNombre) = Nothing
End If
ObjOC.Dispose()
End If
Dim filtro As New StringBuilder
filtro.AppendFormat("CveEmpresa = {0} ", CveEmpresa)
If CveUsuario > 0 Then
filtro.AppendFormat(" AND CveUsuario={0} ", CveUsuario)
End If
If Tipo <> "" Then
filtro.AppendFormat(" AND Tipo='{0}'", Tipo)
End If
Dim Dv As New DataView(DirectCast(HttpContext.Current.Application(AppNombre), DataTable), filtro.ToString, "", DataViewRowState.CurrentRows)
GlobalDTOCEstatusUsuarios = Dv.ToTable
Dv.Dispose()
End Get
Set(value As DataTable)
Dim AppNombre As String = String.Format("GlobalDTOCEstatusUsuarios-{0}", CveEmpresa)
HttpContext.Current.Application(AppNombre) = value
End Set
End Property
'Property GlobalDTOCEstatusUsuarios(CveEmpresa As Integer, Optional CveUsuario As Integer = -1, Optional Tipo As String = "") As DataTable
' Get
' If CveEmpresa <> -1 Then
' Dim filtro As New StringBuilder
' filtro.AppendFormat("CveEmpresa = {0} ", CveEmpresa)
' If CveUsuario > 0 Then
' filtro.AppendFormat(" AND CveUsuario={0} ", CveUsuario)
' End If
' If Tipo <> "" Then
' filtro.AppendFormat(" AND Tipo='{0}'", Tipo)
' End If
' Dim Dv As New DataView(DirectCast(HttpContext.Current.Application("GlobalDTOCEstatusUsuarios"), DataTable), filtro.ToString, "", DataViewRowState.CurrentRows)
' GlobalDTOCEstatusUsuarios = Dv.ToTable
' Dv.Dispose()
' Else
' GlobalDTOCEstatusUsuarios = DirectCast(HttpContext.Current.Application("GlobalDTOCEstatusUsuarios"), DataTable)
' End If
' End Get
' Set(value As DataTable)
' HttpContext.Current.Application("GlobalDTOCEstatusUsuarios") = value
' End Set
'End Property
End Property
Property GlobalDTOCEstatusUsuarios(CveEmpresa As Integer, Optional CveUsuario As Integer = -1, Optional Tipo As String = "") As DataTable
Get
Dim AppNombre As String = String.Format("GlobalDTOCEstatusUsuarios-{0}", CveEmpresa)
'sino existe, recarga los datos
If DirectCast(HttpContext.Current.Application(AppNombre), DataTable) Is Nothing Then
Dim ObjOC As New ClsOC
If ObjOC.GetEstatusUsuarios(-1, -1, -1, -1, CveEmpresa) Then
HttpContext.Current.Application(AppNombre) = ObjOC.DtResultados
Else
HttpContext.Current.Application(AppNombre) = Nothing
End If
ObjOC.Dispose()
End If
Dim filtro As New StringBuilder
filtro.AppendFormat("CveEmpresa = {0} ", CveEmpresa)
If CveUsuario > 0 Then
filtro.AppendFormat(" AND CveUsuario={0} ", CveUsuario)
End If
If Tipo <> "" Then
filtro.AppendFormat(" AND Tipo='{0}'", Tipo)
End If
Dim Dv As New DataView(DirectCast(HttpContext.Current.Application(AppNombre), DataTable), filtro.ToString, "", DataViewRowState.CurrentRows)
GlobalDTOCEstatusUsuarios = Dv.ToTable
Dv.Dispose()
End Get
Set(value As DataTable)
Dim AppNombre As String = String.Format("GlobalDTOCEstatusUsuarios-{0}", CveEmpresa)
HttpContext.Current.Application(AppNombre) = value
End Set
End Property
'Property GlobalDTOCEstatusUsuarios(CveEmpresa As Integer, Optional CveUsuario As Integer = -1, Optional Tipo As String = "") As DataTable
' Get
' If CveEmpresa <> -1 Then
' Dim filtro As New StringBuilder
' filtro.AppendFormat("CveEmpresa = {0} ", CveEmpresa)
' If CveUsuario > 0 Then
' filtro.AppendFormat(" AND CveUsuario={0} ", CveUsuario)
' End If
' If Tipo <> "" Then
' filtro.AppendFormat(" AND Tipo='{0}'", Tipo)
' End If
' Dim Dv As New DataView(DirectCast(HttpContext.Current.Application("GlobalDTOCEstatusUsuarios"), DataTable), filtro.ToString, "", DataViewRowState.CurrentRows)
' GlobalDTOCEstatusUsuarios = Dv.ToTable
' Dv.Dispose()
' Else
' GlobalDTOCEstatusUsuarios = DirectCast(HttpContext.Current.Application("GlobalDTOCEstatusUsuarios"), DataTable)
' End If
' End Get
' Set(value As DataTable)
' HttpContext.Current.Application("GlobalDTOCEstatusUsuarios") = value
' End Set
'End Property
#End Region
#Region "F I N A N Z A S "
Property GlobalDTFinan_RazonesFinancieras() As DataTable
Get
@@ -3385,10 +3385,10 @@ Public Class SIGFacturacion : Implements IHttpHandler, IRequiresSessionState
Set(value As DataTable)
HttpContext.Current.Application("GlobalDTFinan_RazonesFinancieras") = value
End Set
End Property
End Property
#End Region
#Region "***********************************************************************GLOBAL DT CONTABILIDAD****************************************************************************"
Property GlobalDTContaPlantillasPolizas(CveEmpresa As Integer, Optional TipoPlantilla As Integer = -1) As DataTable
Get
@@ -3442,9 +3442,9 @@ Public Class SIGFacturacion : Implements IHttpHandler, IRequiresSessionState
Set(value As DataTable)
HttpContext.Current.Application("GlobalDTContaConceptosContables") = value
End Set
End Property
End Property
#End Region
#Region "**********************************************************************GLOBAL DT RH (RECURSOS HUMANOS)********************************************************************"
Property GlobalDTAsistenciaDetalle() As DataTable
Get
@@ -3596,13 +3596,13 @@ Public Class SIGFacturacion : Implements IHttpHandler, IRequiresSessionState
Set(value As DataTable)
HttpContext.Current.Application("GlobalDTTipoBuzon") = value
End Set
End Property
End Property
#End Region
#Region "*********** D T - C O M B U S T I B L E S ***********"
Property GlobalDTCombustibles(CveEmpresa As Integer) As DataTable
Get
If CveEmpresa <> -1 Then
@@ -3641,11 +3641,11 @@ Public Class SIGFacturacion : Implements IHttpHandler, IRequiresSessionState
Set(ByVal value As DataTable)
HttpContext.Current.Application("GlobalDTCombustiblesTipos") = value
End Set
End Property
End Property
#End Region
#Region "*********** D T - M A N T E N I M I E N T O S ***********"
Property GlobalDTMantenimientosTipos() As DataTable
Get
GlobalDTMantenimientosTipos = DirectCast(HttpContext.Current.Application("GlobalDTMantenimientosTipos"), DataTable)
@@ -3684,13 +3684,13 @@ Public Class SIGFacturacion : Implements IHttpHandler, IRequiresSessionState
HttpContext.Current.Application("GlobalDTMantenimientosTipos") = value
End Set
End Property
End Property
#End Region
#Region "*********** D T - T A L L E R E S ***********"
Property GlobalDTTalleresTipos() As DataTable
Get
GlobalDTTalleresTipos = DirectCast(HttpContext.Current.Application("GlobalDTTalleresTipos"), DataTable)
@@ -3707,12 +3707,12 @@ Public Class SIGFacturacion : Implements IHttpHandler, IRequiresSessionState
Set(value As DataTable)
HttpContext.Current.Application("GlobalDTTalleres") = value
End Set
End Property
End Property
#End Region
#Region "*********** D T - D I S T R I B U I D O R E S ***********"
Property GlobalDTDistribuidoresTipos() As DataTable
Get
GlobalDTDistribuidoresTipos = DirectCast(HttpContext.Current.Application("GlobalDTDistribuidoresTipos"), DataTable)
@@ -3729,11 +3729,11 @@ Public Class SIGFacturacion : Implements IHttpHandler, IRequiresSessionState
Set(value As DataTable)
HttpContext.Current.Application("GlobalDTDistribuidores") = value
End Set
End Property
End Property
#End Region
Property GlobalDTOIRevision(CveEmpresa As Integer) As DataTable
Get
If CveEmpresa <> -1 Then
@@ -3824,8 +3824,8 @@ Public Class SIGFacturacion : Implements IHttpHandler, IRequiresSessionState
Set(value As DataTable)
HttpContext.Current.Application("GlobalDTPaqueterias") = value
End Set
End Property
End Property
#End Region
End Class

View File

@@ -2,26 +2,26 @@
'Option Explicit On
'Option Strict On
Imports System
Imports System.Web
Imports System.Data
Imports Newtonsoft.Json.Linq
Imports Extensiones
Imports System.IO
Imports Microsoft.AspNet.SignalR
Public Class SIGFacturacionCiclica : Implements IHttpHandler, IRequiresSessionState
Public Sub ProcessRequest(ByVal context As HttpContext) Implements IHttpHandler.ProcessRequest
Imports System
Imports System.Web
Imports System.Data
Imports Newtonsoft.Json.Linq
Imports Extensiones
Imports System.IO
Imports Microsoft.AspNet.SignalR
Public Class SIGFacturacionCiclica : Implements IHttpHandler, IRequiresSessionState
Public Sub ProcessRequest(ByVal context As HttpContext) Implements IHttpHandler.ProcessRequest
context.Response.ContentType = "text/plain"
Dim retorno = False
Try
If context.Request("Metodo") IsNot Nothing Then
Select Case context.Request("Metodo")
Dim retorno = False
Try
If context.Request("Metodo") IsNot Nothing Then
Select Case context.Request("Metodo")
Case "EjecutaServicio"
ModExtensiones.GuardaLogAD("Servicio Ejecutado...........", "LogFacturacionCiclica")
retorno = IniciaFacturacionMasiva()
End Select
retorno = IniciaFacturacionMasiva()
End Select
End If
Catch ex As Exception
@@ -32,65 +32,65 @@ Public Class SIGFacturacionCiclica : Implements IHttpHandler, IRequiresSessionSt
context.Response.Write("True")
Else
context.Response.Write("False")
End If
End Sub
Public ReadOnly Property IsReusable() As Boolean Implements IHttpHandler.IsReusable
Get
Return False
End Get
End Property
Private Function Parametros(Cadena As String) As Hashtable
Dim P1() As String = Cadena.Split("&"c)
Dim Tmp As String
Dim P2() As String
Dim URLParametros As New Hashtable
For Each Tmp In P1
P2 = Tmp.Replace("%26%", "&").Split("="c)
URLParametros.Add(P2(0).ToString.ToUpper, P2(1))
Next
Return URLParametros
End Function
#Region "V A L I D A - D A T O S"
Private Function ValidaUsuarioSistema(CveEmpresa As Integer) As Usuario
Dim UsuarioActual As Usuario = Nothing
Dim ObjUsuarios As New ClsSisUsuarios
If ObjUsuarios.GetUsuarios(100) Then
If ObjUsuarios.DtResultados.Rows.Count > 0 Then
Dim Usuario = ObjUsuarios.DtResultados.Rows(0)("Usuario").ToString()
Dim Contrasenia = ObjUsuarios.DtResultados.Rows(0)("Contraseña").ToString()
UsuarioActual = ObjUsuarios.ValidaUsuario(Usuario, Contrasenia, IMEI, CveEmpresa)
UsuarioActual.CveEmpresa = CveEmpresa
CreaObjetoEmpresa(UsuarioActual)
End If
End If
ObjUsuarios.Dispose()
Return UsuarioActual
End Function
Private Sub CreaObjetoEmpresa(ByRef UsuarioActual As Usuario)
Dim ObjEmpresa As New ClsSisEmpresas()
If ObjEmpresa.GetEmpresas(UsuarioActual.CveEmpresa, "-1", "-1", "-1", "-1") Then
If ObjEmpresa.GetEmpresasFuncionalidades(UsuarioActual.CveEmpresa) Then
Dim dttmp As Data.DataTable = ObjEmpresa.DtResultados
Dim EmpresasFuncionalidades As New HybridDictionary
For Each Row As Data.DataRow In dttmp.Rows
EmpresasFuncionalidades.Add(Convert.ToInt32(Row("CveFuncionalidad")), Row("Valor").ToString)
Next
ObjEmpresa.Empresa.SetFuncionalidades(EmpresasFuncionalidades)
End If
UsuarioActual.Empresa = ObjEmpresa.Empresa
End If
ObjEmpresa.Dispose()
End If
End Sub
#End Region
Public ReadOnly Property IsReusable() As Boolean Implements IHttpHandler.IsReusable
Get
Return False
End Get
End Property
Private Function Parametros(Cadena As String) As Hashtable
Dim P1() As String = Cadena.Split("&"c)
Dim Tmp As String
Dim P2() As String
Dim URLParametros As New Hashtable
For Each Tmp In P1
P2 = Tmp.Replace("%26%", "&").Split("="c)
URLParametros.Add(P2(0).ToString.ToUpper, P2(1))
Next
Return URLParametros
End Function
#Region "V A L I D A - D A T O S"
Private Function ValidaUsuarioSistema(CveEmpresa As Integer) As Usuario
Dim UsuarioActual As Usuario = Nothing
Dim ObjUsuarios As New ClsSisUsuarios
If ObjUsuarios.GetUsuarios(100) Then
If ObjUsuarios.DtResultados.Rows.Count > 0 Then
Dim Usuario = ObjUsuarios.DtResultados.Rows(0)("Usuario").ToString()
Dim Contrasenia = ObjUsuarios.DtResultados.Rows(0)("Contraseña").ToString()
UsuarioActual = ObjUsuarios.ValidaUsuario(Usuario, Contrasenia, IMEI, CveEmpresa)
UsuarioActual.CveEmpresa = CveEmpresa
CreaObjetoEmpresa(UsuarioActual)
End If
End If
ObjUsuarios.Dispose()
Return UsuarioActual
End Function
Private Sub CreaObjetoEmpresa(ByRef UsuarioActual As Usuario)
Dim ObjEmpresa As New ClsSisEmpresas()
If ObjEmpresa.GetEmpresas(UsuarioActual.CveEmpresa, "-1", "-1", "-1", "-1") Then
If ObjEmpresa.GetEmpresasFuncionalidades(UsuarioActual.CveEmpresa) Then
Dim dttmp As Data.DataTable = ObjEmpresa.DtResultados
Dim EmpresasFuncionalidades As New HybridDictionary
For Each Row As Data.DataRow In dttmp.Rows
EmpresasFuncionalidades.Add(Convert.ToInt32(Row("CveFuncionalidad")), Row("Valor").ToString)
Next
ObjEmpresa.Empresa.SetFuncionalidades(EmpresasFuncionalidades)
End If
UsuarioActual.Empresa = ObjEmpresa.Empresa
End If
ObjEmpresa.Dispose()
End Sub
#End Region
Private Function IniciaFacturacionMasiva() As Boolean
Dim Retorno As Boolean = True
@@ -101,8 +101,8 @@ Public Class SIGFacturacionCiclica : Implements IHttpHandler, IRequiresSessionSt
If ObjContratos.CicloComercialGet(-1, -1, -1, -1, FechaRef, FechaRef, -1) Then
DTCicloComercial = ObjContratos.DtResultados.FiltraParametros("FueFacturado = 0 AND FacturacionCiclicaAutomatico = 1")
End If
End Using
End Using
If DTCicloComercial IsNot Nothing Then
For Each RowEmpresa As DataRow In DTCicloComercial.FiltraParametros("", DistinctColumns:={"CveEmpresa"}).Rows
Dim CveEmpresa As Integer = RowEmpresa("CveEmpresa").ToString().ToEntero()
@@ -113,12 +113,12 @@ Public Class SIGFacturacionCiclica : Implements IHttpHandler, IRequiresSessionSt
Next
End If
Return Retorno
Return Retorno
End Function
Private Function EjecutarFacturacionMasiva(UsuarioActual As Usuario, DTCicloComercial As DataTable) As Boolean
Dim Retorno As Boolean = False
Dim Retorno As Boolean = False
If DTCicloComercial IsNot Nothing Then
For Each Row As DataRow In DTCicloComercial.Rows
@@ -152,36 +152,36 @@ Public Class SIGFacturacionCiclica : Implements IHttpHandler, IRequiresSessionSt
End If
Return Retorno
Return Retorno
End Function
Private Function EmitirImprimir(UsuarioActual As Usuario, RowCiclo As DataRow) As Modelos.Factura.MMensajeFactura
Private Function EmitirImprimir(UsuarioActual As Usuario, RowCiclo As DataRow) As Modelos.Factura.MMensajeFactura
Dim Resp As New Modelos.Factura.MMensajeFactura
Dim ObjFactura = CreaObjetosVenta(UsuarioActual, RowCiclo)
Dim ObjFactura = CreaObjetosVenta(UsuarioActual, RowCiclo)
If ObjFactura Is Nothing Then
Resp.Mensajes.Add("Ocurrió un error al procesar los datos de la Venta ")
ObjFactura = Nothing
Return Resp
End If
If ObjFactura.CveCliente > 0 Then
Resp.Mensajes.Add("Ocurrió un error al procesar los datos de la Venta ")
ObjFactura = Nothing
Return Resp
End If
If ObjFactura.CveCliente > 0 Then
If ObjFactura.DtDetalle.Rows.Count > 0 Then
Resp = ObjFactura.EmitirFactura()
Else
Resp.Mensajes.Add("No se pudo completar facturación por que no se encontraron partidas ")
Resp = ObjFactura.EmitirFactura()
Else
Resp.Mensajes.Add("No se pudo completar facturación por que no se encontraron partidas ")
End If
Else
Resp.Mensajes.Add("No se pudo completar facturación por que no se encontraro el cliente ")
End If
Return Resp
Resp.Mensajes.Add("No se pudo completar facturación por que no se encontraro el cliente ")
End If
Return Resp
End Function
#Region "P R E P A R A - V E N T A"
Private Function CreaDTVentas() As DataTable
Dim TmpDT = New DataTable
Dim TmpDT = New DataTable
TmpDT.Columns.Add("CveVenta", GetType(Integer))
TmpDT.Columns.Add("Consec", GetType(Integer))
TmpDT.Columns.Add("Cantidad", GetType(Decimal))
@@ -268,8 +268,8 @@ Public Class SIGFacturacionCiclica : Implements IHttpHandler, IRequiresSessionSt
TmpDT.Columns.Add("CveTamaño", GetType(Integer))
TmpDT.Columns.Add("EsCargo", GetType(Boolean))
Return TmpDT
End Function
Return TmpDT
End Function
Private Function CreaObjetosVenta(UsuarioActual As Usuario, DR As DataRow) As Modelos.Factura
Dim ObjFactura = New Modelos.Factura(UsuarioActual)
Try
@@ -453,134 +453,134 @@ Public Class SIGFacturacionCiclica : Implements IHttpHandler, IRequiresSessionSt
Catch ex As Exception
ObjFactura = Nothing
OnError("Ocurrió un error al generar la factura", ex)
End Try
End Try
Return ObjFactura
End Function
Private Function PreParaTimbre(Obj As Modelos.Factura, UsuarioActual As Usuario) As CFDITimbre
Dim Timbre As New CFDITimbre
Timbre.Comprobante.TipoComprobante = If(Obj.TipoDocto.Contiene("Ing", "Ant"), "I", If(Obj.TipoDocto.Contiene("Egs", "Dev"), "E", ""))
Timbre.Comprobante.Folio = Obj.Folio.ToString
Timbre.Comprobante.Serie = Obj.Serie
Timbre.Comprobante.Fecha = Obj.FechaCP
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 = Obj.Cliente.RFC
Timbre.Receptor.Nombre = Obj.Cliente.Nombre
Timbre.Receptor.ResidenciaFiscal = ""
Timbre.Receptor.NumeroRegistroTributario = ""
Timbre.Receptor.UsoCFDI = Obj.ClaveUsoCFDI
If Obj.CveTipoRelacion > 0 Then
Select Case Obj.CveTipoRelacion
Case 1
Timbre.CFDIRelacionados.TipoRelacion = "01"
Timbre.CFDIRelacionados.TipoRelacionTexto = "01-Nota de Crédito aplicada a Ingreso"
Case 2
Timbre.CFDIRelacionados.TipoRelacion = "02"
Timbre.CFDIRelacionados.TipoRelacionTexto = "02-Nota de débito de los documentos relacionados"
Case 3
Timbre.CFDIRelacionados.TipoRelacion = "03"
Timbre.CFDIRelacionados.TipoRelacionTexto = "03-Devolución aplicada a Ingreso"
Case 4
Timbre.CFDIRelacionados.TipoRelacion = "04"
Timbre.CFDIRelacionados.TipoRelacionTexto = "04-Refacturación de Ingreso"
Case 7
Timbre.CFDIRelacionados.TipoRelacion = "07"
Timbre.CFDIRelacionados.TipoRelacionTexto = "07-CFDI por aplicación de anticipo"
Case 8
Timbre.CFDIRelacionados.TipoRelacion = "08"
Timbre.CFDIRelacionados.TipoRelacionTexto = "08-Factura generada por pagos en parcialidades "
Case 9
Timbre.CFDIRelacionados.TipoRelacion = "09"
Timbre.CFDIRelacionados.TipoRelacionTexto = "09-Factura generada por pagos diferidos"
End Select
'If DtVentasNC IsNot Nothing AndAlso DtVentasNC.Rows.Count > 0 Then
' For Each Dr As DataRow In DtVentasNC.Rows
' Timbre.CFDIRelacionados.UUID.Add(Dr("FolioFiscal").ToString)
' Next
'Else
' Timbre.CFDIRelacionados.UUID.Add(HdnFolioFiscalNC.Value)
'End If
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
'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 de ir la etiqueta de "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 estaremos agregando el iva, auqnue sea en importe cero o tasa cero, para que se emita la factura
' If drr("ImporteIVA").ToString.ToDouble > 0 Then
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})
' End If
If drr("ImporteIEPS").ToString.ToDouble > 0 Then
concepto.Impuestos.Add(New CFDIConceptosImpuestos With {.TrasladooRetencion = "T", .Base = concepto.Importe - concepto.Descuento, .TasaOCuota = drr("PorcentajeIEPS").ToString.ToDecimal, .Impuesto = "003", .Importe = drr("ImporteIEPS").ToString.ToDecimal})
End If
If drr("ImporteRetIVA").ToString.ToDouble > 0 Then 'si hay retenciones
concepto.Impuestos.Add(New CFDIConceptosImpuestos With {.TrasladooRetencion = "R", .Base = concepto.Importe - concepto.Descuento, .TasaOCuota = drr("PorcentajeRetIVA").ToString.ToDecimal, .Impuesto = "002", .Importe = drr("ImporteRetIVA").ToString.ToDecimal})
End If
If drr("ImporteRetISR").ToString.ToDouble > 0 Then 'retención de ISR
concepto.Impuestos.Add(New CFDIConceptosImpuestos With {.TrasladooRetencion = "R", .Base = concepto.Importe - concepto.Descuento, .TasaOCuota = drr("PorcentajeRetISR").ToString.ToDecimal, .Impuesto = "001", .Importe = drr("ImporteRetISR").ToString.ToDecimal})
End If
Timbre.Conceptos.Add(concepto)
i += 1
Next
Return Timbre
Return ObjFactura
End Function
Private Function PreParaTimbre(Obj As Modelos.Factura, UsuarioActual As Usuario) As CFDITimbre
Dim Timbre As New CFDITimbre
Timbre.Comprobante.TipoComprobante = If(Obj.TipoDocto.Contiene("Ing", "Ant"), "I", If(Obj.TipoDocto.Contiene("Egs", "Dev"), "E", ""))
Timbre.Comprobante.Folio = Obj.Folio.ToString
Timbre.Comprobante.Serie = Obj.Serie
Timbre.Comprobante.Fecha = Obj.FechaCP
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 = Obj.Cliente.RFC
Timbre.Receptor.Nombre = Obj.Cliente.Nombre
Timbre.Receptor.ResidenciaFiscal = ""
Timbre.Receptor.NumeroRegistroTributario = ""
Timbre.Receptor.UsoCFDI = Obj.ClaveUsoCFDI
If Obj.CveTipoRelacion > 0 Then
Select Case Obj.CveTipoRelacion
Case 1
Timbre.CFDIRelacionados.TipoRelacion = "01"
Timbre.CFDIRelacionados.TipoRelacionTexto = "01-Nota de Crédito aplicada a Ingreso"
Case 2
Timbre.CFDIRelacionados.TipoRelacion = "02"
Timbre.CFDIRelacionados.TipoRelacionTexto = "02-Nota de débito de los documentos relacionados"
Case 3
Timbre.CFDIRelacionados.TipoRelacion = "03"
Timbre.CFDIRelacionados.TipoRelacionTexto = "03-Devolución aplicada a Ingreso"
Case 4
Timbre.CFDIRelacionados.TipoRelacion = "04"
Timbre.CFDIRelacionados.TipoRelacionTexto = "04-Refacturación de Ingreso"
Case 7
Timbre.CFDIRelacionados.TipoRelacion = "07"
Timbre.CFDIRelacionados.TipoRelacionTexto = "07-CFDI por aplicación de anticipo"
Case 8
Timbre.CFDIRelacionados.TipoRelacion = "08"
Timbre.CFDIRelacionados.TipoRelacionTexto = "08-Factura generada por pagos en parcialidades "
Case 9
Timbre.CFDIRelacionados.TipoRelacion = "09"
Timbre.CFDIRelacionados.TipoRelacionTexto = "09-Factura generada por pagos diferidos"
End Select
'If DtVentasNC IsNot Nothing AndAlso DtVentasNC.Rows.Count > 0 Then
' For Each Dr As DataRow In DtVentasNC.Rows
' Timbre.CFDIRelacionados.UUID.Add(Dr("FolioFiscal").ToString)
' Next
'Else
' Timbre.CFDIRelacionados.UUID.Add(HdnFolioFiscalNC.Value)
'End If
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
'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 de ir la etiqueta de "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 estaremos agregando el iva, auqnue sea en importe cero o tasa cero, para que se emita la factura
' If drr("ImporteIVA").ToString.ToDouble > 0 Then
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})
' End If
If drr("ImporteIEPS").ToString.ToDouble > 0 Then
concepto.Impuestos.Add(New CFDIConceptosImpuestos With {.TrasladooRetencion = "T", .Base = concepto.Importe - concepto.Descuento, .TasaOCuota = drr("PorcentajeIEPS").ToString.ToDecimal, .Impuesto = "003", .Importe = drr("ImporteIEPS").ToString.ToDecimal})
End If
If drr("ImporteRetIVA").ToString.ToDouble > 0 Then 'si hay retenciones
concepto.Impuestos.Add(New CFDIConceptosImpuestos With {.TrasladooRetencion = "R", .Base = concepto.Importe - concepto.Descuento, .TasaOCuota = drr("PorcentajeRetIVA").ToString.ToDecimal, .Impuesto = "002", .Importe = drr("ImporteRetIVA").ToString.ToDecimal})
End If
If drr("ImporteRetISR").ToString.ToDouble > 0 Then 'retención de ISR
concepto.Impuestos.Add(New CFDIConceptosImpuestos With {.TrasladooRetencion = "R", .Base = concepto.Importe - concepto.Descuento, .TasaOCuota = drr("PorcentajeRetISR").ToString.ToDecimal, .Impuesto = "001", .Importe = drr("ImporteRetISR").ToString.ToDecimal})
End If
Timbre.Conceptos.Add(concepto)
i += 1
Next
Return Timbre
End Function
#End Region