diff --git a/App_Code/ClsGenerales.vb b/App_Code/ClsGenerales.vb index 9319c5d1e..87658bb11 100644 --- a/App_Code/ClsGenerales.vb +++ b/App_Code/ClsGenerales.vb @@ -2672,7 +2672,7 @@ Public Class ClsGenerales CveActivoFijo As Integer, CveOS As Integer, CvePS As Integer, CveCompra As Integer, CveIE As Integer, Actual As String, Anterior As String, CveUsuario As Integer, CveEmpresa As Integer, SeElimino As Integer, Descripcion As String, Tipo As String, - Id_Clave As String, Optional IdPoliza As Integer = -1, Optional CvePromocion As Integer = -1) As Boolean + Id_Clave As String, Optional IdPoliza As Integer = -1, Optional CvePromocion As Integer = -1, Optional CveUsuarioTabla As Integer = -1) As Boolean Dim Retorno As Boolean = False DataAdapter("PA_Gral_HistorialBitacoraAdd") @@ -2695,7 +2695,9 @@ Public Class ClsGenerales .Add("@Id_Clave", SqlDbType.VarChar, 100).Value = Id_Clave .Add("@IdPoliza", SqlDbType.Int).Value = IdPoliza .Add("@CvePromocion", SqlDbType.Int).Value = CvePromocion - + .Add("@CveUsuarioTabla", SqlDbType.Int).Value = CveUsuarioTabla + + End With 'SqlTypes.SqlDateTime.Null Try diff --git a/App_Code/ClsPaginas.vb b/App_Code/ClsPaginas.vb index 60cd46b0b..6d71b3738 100644 --- a/App_Code/ClsPaginas.vb +++ b/App_Code/ClsPaginas.vb @@ -4285,7 +4285,6 @@ Public Class ClsPaginas PaginaDict.Add("/GPS/ReporteUnidadesnoTransmiten.aspx".ToUpper(), 917) PaginaDict.Add("/GPS/RepArrastre.aspx".ToUpper(), 718) - PaginaDict.Add("/Ventas/RepConciliacionEmitidosSat.aspx".ToUpper(), -1) PaginaDict.Add("/Ventas/RepConciliacionSat.aspx".ToUpper(), 716) PaginaDict.Add("/Ventas/SolicitudesSAT.aspx".ToUpper(), 717) @@ -5400,7 +5399,8 @@ Public Class ClsPaginas #End Region #Region "Sistema" 'Cargo las páginas que deben tener restricción - PaginaDict.Add("/Sistemas/CatEmpresas.aspx".ToUpper(), 2) + 'PaginaDict.Add("/Sistemas/CatEmpresas.aspx".ToUpper(), 2) + PaginaDict.Add("/Sistemas/CatEmpresas.aspx".ToUpper(), 24) PaginaDict.Add("/Sistemas/Empresa.aspx".ToUpper(), 2) PaginaDict.Add("/Sistemas/CatUsuarios.aspx".ToUpper(), 20) PaginaDict.Add("/Sistemas/Usuarios.aspx".ToUpper(), 20) @@ -5518,7 +5518,7 @@ Public Class ClsPaginas PaginaDict.Add("/Ventas/RepPUESinPago.aspx".ToUpper(), 672) PaginaDict.Add("/Ventas/RepVentasResumen.aspx".ToUpper(), 674) PaginaDict.Add("/Ventas/RepAnticiposEspeciales.aspx".ToUpper(), 678) - PaginaDict.Add("/Ventas/RepArqueos.aspx".ToUpper(), 679) + PaginaDict.Add("/Ventas/RepArqueosDetalle.aspx".ToUpper(), 680) PaginaDict.Add("/Ventas/RepCotizacionesxFacturar.aspx".ToUpper(), 686) PaginaDict.Add("/Ventas/RepRemisionesNC.aspx".ToUpper(), 687) @@ -8493,7 +8493,7 @@ Public Class ClsPaginas params.Add(New ReportParameter("UsoCFDI", ObjOC.UsoCFDI)) - If UsuarioActual.CveEmpresa.Contiene(72, 80) Then + If UsuarioActual.CveEmpresa.Contiene(72, 80, 172) Then params.Add(New ReportParameter("FolioAdicional", dtOC(0)("FolioAdicional").ToString)) params.Add(New ReportParameter("Vendedor", dtOC(0)("Vendedor").ToString)) diff --git a/App_Code/ClsSisEmpresas.vb b/App_Code/ClsSisEmpresas.vb index 852ef415a..179c07d60 100644 --- a/App_Code/ClsSisEmpresas.vb +++ b/App_Code/ClsSisEmpresas.vb @@ -312,7 +312,7 @@ Public Class ClsSisEmpresas End Try Return Retorno End Function - Public Function GetEmpresas(CveEmpresa As Integer, Empresa As String, RFC As String, Telefono As String, Contacto As String) As Boolean + Public Function GetEmpresas(CveEmpresa As Integer, Empresa As String, RFC As String, Telefono As String, Contacto As String, Optional CveUsuarioEmpresas As Integer = -1) As Boolean Dim Retorno As Boolean = False DataAdapter("PA_Sis_EmpresasGet") @@ -323,6 +323,7 @@ Public Class ClsSisEmpresas .Add("@RFC", SqlDbType.VarChar).Value = RFC .Add("@Telefono", SqlDbType.VarChar).Value = Telefono .Add("@Contacto", SqlDbType.VarChar).Value = Contacto + .Add("@CveUsuarioEmpresas", SqlDbType.Int).Value = CveUsuarioEmpresas End With Try SqlAdapter.Fill(Data) diff --git a/App_Code/ClsVentas.vb b/App_Code/ClsVentas.vb index 6af729f4c..ebcea89aa 100644 --- a/App_Code/ClsVentas.vb +++ b/App_Code/ClsVentas.vb @@ -5576,7 +5576,7 @@ Public Class ClsVentas Public Function GetLineasAdicionales(CveLineaAdicional As Integer, CveCliente As Integer, CveProveedor As Integer, TipoLinea As Integer, CveMoneda As Integer, - FechaI As Date, FechaF As Date, CveEstatus As Integer, CveEmpresa As Integer) As Boolean + FechaI As Date, FechaF As Date, CveLineaAdicionalEstatus As Integer, CveEmpresa As Integer) As Boolean Dim Retorno As Boolean = False DataAdapter("PA_Vta_LineasAdicionalesGet") @@ -5589,7 +5589,7 @@ Public Class ClsVentas .Add("@CveMoneda", SqlDbType.Int).Value = CveMoneda .Add("@FechaI", SqlDbType.Date).Value = FechaI .Add("@FechaF", SqlDbType.Date).Value = FechaF - .Add("@CveEstatus", SqlDbType.Int).Value = CveEstatus + .Add("@CveLineaAdicionalEstatus", SqlDbType.Int).Value = CveLineaAdicionalEstatus .Add("@CveEmpresa", SqlDbType.Int).Value = CveEmpresa End With Try @@ -5603,7 +5603,7 @@ Public Class ClsVentas End Function - Public Function GetLineasAdicionalesSaldo(CveLineaAdicional As Integer, CveCliente As Integer, CveProveedor As Integer, CveMoneda As Integer, CveEmpresa As Integer, Optional ConSaldo As Integer = -1) As Boolean + Public Function GetLineasAdicionalesSaldo(CveLineaAdicional As Integer, CveCliente As Integer, CveProveedor As Integer, CveMoneda As Integer, CveEmpresa As Integer, Optional ConSaldo As Integer = -1, Optional FechaVencimientoConsulta As DateTime = MaxFecha) As Boolean Dim Retorno As Boolean = False DataAdapter("PA_Vta_LineasAdicionalesSaldoGet") @@ -5615,6 +5615,7 @@ Public Class ClsVentas .Add("@CveMoneda", SqlDbType.Int).Value = CveMoneda .Add("@CveEmpresa", SqlDbType.Int).Value = CveEmpresa .Add("@ConSaldo", SqlDbType.Int).Value = ConSaldo + .Add("@FechaVencimientoConsulta", SqlDbType.Date).Value = FechaVencimientoConsulta End With Try SqlAdapter.Fill(Data) @@ -5648,7 +5649,8 @@ Public Class ClsVentas End Function Public Function AddLineasAdicionales(LineaAdicional As String, CveCliente As Integer, CveProveedor As Integer, TipoLinea As Integer, Importe As Decimal, - CveMoneda As Integer, FechaVencimiento As Date, CveUsuario As Integer, CveClasificacionPS As Integer, CveEstatus As Integer) As Boolean + CveMoneda As Integer, FechaVencimiento As Date, CveUsuario As Integer, CveCategoria As Integer, + Optional DiasVencimiento As Integer = -1) As Boolean Dim Retorno As Boolean = False DataAdapter("PA_Vta_LineasAdicionalesAdd") @@ -5663,8 +5665,8 @@ Public Class ClsVentas .Add("@CveMoneda", SqlDbType.Int).Value = CveMoneda .Add("@FechaVencimiento", SqlDbType.Date).Value = FechaVencimiento .Add("@CveUsuario", SqlDbType.Int).Value = CveUsuario - .Add("@CveClasificacionPS", SqlDbType.Int).Value = CveClasificacionPS - .Add("@CveEstatus", SqlDbType.Int).Value = CveEstatus + .Add("@CveCategoria", SqlDbType.Int).Value = CveCategoria + .Add("@DiasVencimiento", SqlDbType.VarChar).Value = DiasVencimiento End With @@ -5681,7 +5683,8 @@ Public Class ClsVentas Public Function UpdateLineasAdicionales(CveLineaAdicional As Integer, LineaAdicional As String, CveCliente As Integer, CveProveedor As Integer, TipoLinea As Integer, Importe As Decimal, - CveMoneda As Integer, FechaVencimiento As Date, CveUsuario As Integer, CveClasificacionPS As Integer, CveEstatus As Integer, CveEmpresa As Integer, Optional Comprobante As String = "-1") As Boolean + CveMoneda As Integer, FechaVencimiento As Date, CveUsuario As Integer, CveCategoria As Integer, CveEmpresa As Integer, + Optional Comprobante As String = "-1", Optional DiasVencimiento As Integer = -1, Optional CveVenta As Integer = -1, Optional CveLineaAdicionalEstatus As Integer = -1) As Boolean Dim Retorno As Boolean = False DataAdapter("PA_Vta_LineasAdicionalesUpdate") @@ -5696,10 +5699,12 @@ Public Class ClsVentas .Add("@CveMoneda", SqlDbType.Int).Value = CveMoneda .Add("@FechaVencimiento", SqlDbType.Date).Value = FechaVencimiento .Add("@CveUsuario", SqlDbType.Int).Value = CveUsuario - .Add("@CveClasificacionPS", SqlDbType.Int).Value = CveClasificacionPS - .Add("@CveEstatus", SqlDbType.Int).Value = CveEstatus + .Add("@CveCategoria", SqlDbType.Int).Value = CveCategoria .Add("@CveEmpresa", SqlDbType.Int).Value = CveEmpresa .Add("@Comprobante", SqlDbType.VarChar).Value = Comprobante + .Add("@DiasVencimiento", SqlDbType.VarChar).Value = DiasVencimiento + .Add("@CveVenta", SqlDbType.VarChar).Value = CveVenta + .Add("@CveLineaAdicionalEstatus", SqlDbType.Int).Value = CveLineaAdicionalEstatus End With diff --git a/Empresas/140/Formatos/RepEntradasUsados.rdlc b/Empresas/140/Formatos/RepEntradasUsados.rdlc index 535e4b852..9ff9577d8 100644 --- a/Empresas/140/Formatos/RepEntradasUsados.rdlc +++ b/Empresas/140/Formatos/RepEntradasUsados.rdlc @@ -25,10 +25,18 @@ CodigoPS System.String + + Inicial + System.String + E_Almacen System.String + + E_Pub + System.String + E_Traspaso System.String @@ -37,6 +45,10 @@ E_Compra System.String + + E_Otros + System.String + S_Almacen System.String @@ -537,17 +549,18 @@ - + true true - 0 + =Fields!Inicial.Value @@ -556,7 +569,7 @@ - TipoAgrupador + Inicial @@ -630,7 +643,7 @@ - Paqueteria1 + E_Pub @@ -741,7 +754,7 @@ - Fecha + E_Otros + + + + + + Textbox3 + 0.90692in + 5.67236in + 0.5cm + 2.23561in + + + LightGrey + 2pt + 2pt + 2pt + 2pt + + + + true + + + + + Fecha y hora de emisión + + + + + + + + + + + + + + + + Textbox3 + 0.46414in + 5.67236in + 0.5cm + 2.23561in + 1 + + + LightGrey + 2pt + 2pt + 2pt + 2pt + + + + true + + + + + =IIF(Parameters!Serie.Value.ToString="",Parameters!Folio.Value,Parameters!Serie.Value & "-" &Parameters!Folio.Value) + + + + + + + Textbox3 + 0.22455in + 5.67236in + 0.60856cm + 2.23561in + 2 + + + 2pt + 2pt + 2pt + 2pt + + + + true + + + + + =Parameters!TipoDocumento.Value + + + + + + + Textbox3 + 0.0412cm + 5.67236in + 0.5cm + 2.23561in + 3 + + + LightGrey + 2pt + 2pt + 2pt + 2pt + + + + true + + + + + COYOTIRE + + + + + + + + + R.F.C. COYO010101AAA + + + + 0cm + 0cm + + + + + + Olivares 466 Col. Santa Isabe C.P. 83130 + + + + 0cm + 0cm + + + + + + Hermosillo, Sonora, México. + + + + 0cm + 0cm + + + + + + Tel. (662)1890411 + + + + 0cm + 0cm + + + + Textbox4 + 0.0635cm + 1.41912in + 1.04333in + 4.18732in + 4 + + + 2pt + 2pt + 2pt + 2pt + + + + true + + + + + =Parameters!Fecha.Value + + + + + + + Textbox3 + 0.66099in + 5.67236in + 0.25114in + 2.23561in + 5 + + + 2pt + 2pt + 2pt + 2pt + + + + true + + + + + =Parameters!Tipo.Value & Parameters!Ref.Value + + + + + + + Textbox3 + 1.10364in + 5.67236in + 0.25635in + 2.23561in + 6 + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + Nombre + + + + + + + + + + + + + + + 2pt + 2pt + 2pt + 2pt + + + + true + + + + + =Parameters!ClienteNombre.Value + + + + + + + + + + + + + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + Dirección + + + + + + + + + + + + + + + 2pt + 2pt + 2pt + 2pt + + + + true + + + + + =Parameters!ClienteDireccion.Value + + + + + + + + + + + + + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + Ciudad + + + + + + + #4f81bd + + 1.25pt + + 2pt + 2pt + 2pt + 2pt + + + + true + + + + + =Parameters!ClienteLugar.Value + + + + + + + + + + + + + + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + 2.12527cm + + + 2.02474cm + + + 10.17786cm + + + 2.52862cm + + + 3.15415cm + + + + + 0.6cm + + + + + true + true + + + + + Cantidad + + + + + + + Textbox34 + + + LightGrey + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + Unidad + + + + + + + Textbox53 + + + LightGrey + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + Descripción + + + + + + + Textbox79 + + + LightGrey + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + P. Unitario + + + + + + + Textbox84 + + + LightGrey + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + Importe + + + + + + + + + + + + + + + LightGrey + 2pt + 2pt + 2pt + 2pt + + + + + + + + 0.49417cm + + + + + true + true + + + + + =Fields!Cantidad.Value + + + + + + + + + + + + + LightGrey + + + LightGrey + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Fields!UM.Value + + + + + + + UM1 + + + + + + + + + + LightGrey + + + LightGrey + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Fields!PS.Value & " " &Fields!Obs.Value + + + + + + + + + + + + + LightGrey + + + LightGrey + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Fields!PU.Value + + + + + + + PU1 + + + + + + + + + + LightGrey + + + LightGrey + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Fields!Cantidad.Value*Fields!PU.Value + + + + + + + Textbox88 + + + + + + + + + + LightGrey + + + LightGrey + + 2pt + 2pt + 2pt + 2pt + es-MX + + + + + + + + 0.16344cm + + + + + true + true + + + + + + + + + + + LightGrey + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + + + + + + + LightGrey + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + + + + + + + LightGrey + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + + + + + + + LightGrey + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + + + + + + + LightGrey + 2pt + 2pt + 2pt + 2pt + + + + + + + + + + + + + + + + + + + + + After + + + + + + Before + + + + DsOC + 4.5569cm + 0.11468cm + 1.25761cm + 20.01064cm + 13 + + + + + + true + + + + + RFC: + + + + + + + + =Parameters!ClienteRFC.Value + + + + + + + + + + + + + + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + 0.81609in + + + 0.69462in + + + 0.72263in + + + + + 0.19645in + + + + + true + true + + + + + Impuesto + + + + + + + Textbox22 + + + LightGrey + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + Tasa + + + + + + + Textbox15 + + + LightGrey + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + Importe + + + + + + + Textbox29 + + + LightGrey + 2pt + 2pt + 2pt + 2pt + + + + + + + + 0.14436in + + + + + true + true + + + + + =Fields!Impuesto.Value + + + + + + + Cantidad1 + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Fields!tasa.Value + + + + + + + UM + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Fields!Importe.Value + + + + + + + Codigo + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + + + + + + + + + + + + After + + + + + + + DataSet3 + 2.65189in + 5.68499in + 0.34081in + 2.23334in + 15 + + + + + + + + + 3.11466cm + + + + + 0.6cm + + + + + true + true + + + + + =Fields!Importe.Value + + + + + + + Importe + + + 2pt + 2pt + 2pt + 2pt + es-MX + + + + + + + + + + + + + + + + + + + =Fields!ImpuestoLocal.Value + + + + 2.48915cm + + + true + true + + + + + =Fields!ImpuestoLocal.Value + + + + + + + ImpuestoLocal + + + LightGrey + 2pt + 2pt + 2pt + 2pt + + + + + + + + DataSet1 + 5.83876cm + 14.4684cm + 0.6cm + 5.60381cm + 16 + + + + + + + + + 3.33075cm + + + 10.99712cm + + + + + 0.6cm + + + + + true + true + + + + + =Parameters!Observaciones.Value + + + + + + + Textbox128 + + + + 1pt + + 2pt + 2pt + 2pt + 2pt + + + 2 + + + + + + + 0.6cm + + + + + true + true + + + + + Importe con letra: + + + + + + + Textbox126 + + + LightGrey + Middle + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + ="SON: " & Microsoft.VisualBasic.Strings.UCase(Parameters!ImporteLetra.Value) + + + + + + + Textbox127 + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + + + + + + + + + + + + + + DsOC + 5.84979cm + 0.14053cm + 1.2cm + 14.32787cm + 17 + + + + + + Embedded + Logo1 + FitProportional + 2.71356cm + 3.49873cm + 18 + + + + + + true + true + + + + + Llanta nueva cuenta con 2 años de garantía contra defecto de fábrica, llanta usada no cuenta con garantía. + + + + + + 2pt + 2pt + 2pt + 2pt + + + + 8.06008cm + + + + + + + + =CDate(Today).ToString("dd/MM/yyyy") + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + 27.94cm + 21.59cm + 0.5cm + 0.5cm + 1cm + 0.5cm + 1.27cm + + + + + + + Textbox3 + 0.90692in + 5.67236in + 0.5cm + 2.23561in + + + LightGrey + 2pt + 2pt + 2pt + 2pt + + + + true + + + + + Fecha y hora de emisión + + + + + + + + + + + + + + + + Textbox3 + 0.46414in + 5.67236in + 0.5cm + 2.23561in + 1 + + + LightGrey + 2pt + 2pt + 2pt + 2pt + + + + true + + + + + =IIF(Parameters!Serie.Value.ToString="",Parameters!Folio.Value,Parameters!Serie.Value & "-" &Parameters!Folio.Value) + + + + + + + Textbox3 + 0.22455in + 5.67236in + 0.60856cm + 2.23561in + 2 + + + 2pt + 2pt + 2pt + 2pt + + + + true + + + + + =Parameters!TipoDocumento.Value + + + + + + + Textbox3 + 0.0412cm + 5.67236in + 0.5cm + 2.23561in + 3 + + + LightGrey + 2pt + 2pt + 2pt + 2pt + + + + true + + + + + COYOTIRE + + + + + + + + + R.F.C. COYO010101AAA + + + + 0cm + 0cm + + + + + + Olivares 466 Col. Santa Isabe C.P. 83130 + + + + 0cm + 0cm + + + + + + Hermosillo, Sonora, México. + + + + 0cm + 0cm + + + + + + Tel. (662)1890411 + + + + 0cm + 0cm + + + + Textbox4 + 0.0635cm + 1.41912in + 1.04333in + 4.18732in + 4 + + + 2pt + 2pt + 2pt + 2pt + + + + true + + + + + =Parameters!CadenaOriginal.Value + + + + + + + + + 2pt + 2pt + 2pt + 2pt + + + + External + =Parameters!QR.Value + FitProportional + 5.47055in + 0.04026in + 1.3497in + 1.5531in + 6 + + + + + + true + + + + + =Parameters!Fecha.Value + + + + + + + Textbox3 + 0.66099in + 5.67236in + 0.25114in + 2.23561in + 7 + + + 2pt + 2pt + 2pt + 2pt + + + + true + + + + + =Parameters!Tipo.Value & Parameters!Ref.Value + + + + + + + Textbox3 + 1.10364in + 5.67236in + 0.25635in + 2.23561in + 8 + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + Nombre + + + + + + + + + + + + + + + 2pt + 2pt + 2pt + 2pt + + + + true + + + + + =Parameters!ClienteNombre.Value + + + + + + + + + + + + + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + Dirección + + + + + + + + + + + + + + + 2pt + 2pt + 2pt + 2pt + + + + true + + + + + =Parameters!ClienteDireccion.Value + + + + + + + + + + + + + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + Ciudad + + + + + + + #4f81bd + + 1.25pt + + 2pt + 2pt + 2pt + 2pt + + + + true + + + + + =Parameters!ClienteLugar.Value + + + + + + + + + + + + + + + + + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + Folio Fiscal: + + + + + + + Textbox54 + 5.47132in + 1.6628in + 0.18056in + 4.02473in + 15 + + + + + + + + + + + + LightGrey + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + No. Serie del Certificado del SAT: + + + + + + + Textbox54 + 5.66577in + 1.6628in + 0.21105in + 4.02473in + 16 + + + + + + LightGrey + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + Fecha y Hora de certificación: + + + + + + + Textbox54 + 5.87682in + 1.6628in + 0.19444in + 4.01804in + 17 + + + LightGrey + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + Certificado del Contribuyente: + + + + + + + Textbox54 + 6.08243in + 1.6628in + 0.19445in + 4.02473in + 18 + + + LightGrey + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + =Parameters!FolioFiscal.Value + + + + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + =Parameters!SerieCertificadoSAT.Value + + + + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + =Parameters!FechaCertificacion.Value + + + + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + =Parameters!CertificadoContribuyente.Value + + + + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + Régimen: Régimen General de Ley Personas Morales; Condiciones de pago: + + + + =IIF(Parameters!CondicionPago.Value.ToString="","No Identificado",Parameters!CondicionPago.Value) + + + + ; Método de Pago: + + + + =IIF(Parameters!MetodoPago.Value.ToString="","No Identificado",Parameters!MetodoPago.Value) + + + + ; Num. Cta Pago: + + + + =IIF(Parameters!NumCta.Value="0" Orelse Parameters!NumCta.Value="","No Identificado",Parameters!NumCta.Value) + + + + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + Éste documento es una representacion impresa de un CFDi + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + 2.12527cm + + + 2.02474cm + + + 10.17786cm + + + 2.52862cm + + + 3.15415cm + + + + + 0.6cm + + + + + true + true + + + + + Cantidad + + + + + + + Textbox34 + + + LightGrey + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + Unidad + + + + + + + Textbox53 + + + LightGrey + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + Descripción + + + + + + + Textbox79 + + + LightGrey + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + P. Unitario + + + + + + + Textbox84 + + + LightGrey + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + Importe + + + + + + + + + + + + + + + LightGrey + 2pt + 2pt + 2pt + 2pt + + + + + + + + 0.49417cm + + + + + true + true + + + + + =Fields!Cantidad.Value + + + + + + + + + + + + + LightGrey + + + LightGrey + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Fields!UM.Value + + + + + + + UM1 + + + + + + + + + + LightGrey + + + LightGrey + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Fields!PS.Value & " " &Fields!Obs.Value + + + + + + + + + + + + + LightGrey + + + LightGrey + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Fields!PU.Value + + + + + + + PU1 + + + + + + + + + + LightGrey + + + LightGrey + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Fields!Cantidad.Value*Fields!PU.Value + + + + + + + Textbox88 + + + + + + + + + + LightGrey + + + LightGrey + + 2pt + 2pt + 2pt + 2pt + es-MX + + + + + + + + 0.16344cm + + + + + true + true + + + + + + + + + + + LightGrey + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + + + + + + + LightGrey + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + + + + + + + LightGrey + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + + + + + + + LightGrey + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + + + + + + + LightGrey + 2pt + 2pt + 2pt + 2pt + + + + + + + + + + + + + + + + + + + + + After + + + + + + Before + + + + DsOC + 4.5569cm + 0.11468cm + 1.25761cm + 20.01064cm + 25 + + + + + + true + + + + + RFC: + + + + + + + + =Parameters!ClienteRFC.Value + + + + + + + + + + + + + + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + 0.81609in + + + 0.69462in + + + 0.72263in + + + + + 0.19645in + + + + + true + true + + + + + Impuesto + + + + + + + Textbox22 + + + LightGrey + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + Tasa + + + + + + + Textbox15 + + + LightGrey + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + Importe + + + + + + + Textbox29 + + + LightGrey + 2pt + 2pt + 2pt + 2pt + + + + + + + + 0.14436in + + + + + true + true + + + + + =Fields!Impuesto.Value + + + + + + + Cantidad1 + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Fields!tasa.Value + + + + + + + UM + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Fields!Importe.Value + + + + + + + Codigo + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + + + + + + + + + + + + After + + + + + + + DataSet3 + 2.65189in + 5.68499in + 0.34081in + 2.23334in + 27 + + + + + + + + + 3.11466cm + + + + + 0.6cm + + + + + true + true + + + + + =Fields!Importe.Value + + + + + + + Importe + + + 2pt + 2pt + 2pt + 2pt + es-MX + + + + + + + + + + + + + + + + + + + =Fields!ImpuestoLocal.Value + + + + 2.48915cm + + + true + true + + + + + =Fields!ImpuestoLocal.Value + + + + + + + ImpuestoLocal + + + LightGrey + 2pt + 2pt + 2pt + 2pt + + + + + + + + DataSet1 + 5.83876cm + 14.4684cm + 0.6cm + 5.60381cm + 28 + + + + + + + + + 3.33075cm + + + 10.99712cm + + + + + 0.6cm + + + + + true + true + + + + + =Parameters!Observaciones.Value + + + + + + + Textbox128 + + + + 1pt + + 2pt + 2pt + 2pt + 2pt + + + 2 + + + + + + + 0.6cm + + + + + true + true + + + + + Importe con letra: + + + + + + + Textbox126 + + + LightGrey + Middle + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + ="SON: " & Microsoft.VisualBasic.Strings.UCase(Parameters!ImporteLetra.Value) + + + + + + + Textbox127 + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + 0.6cm + + + + + true + true + + + + + Forma de pago: + + + + + + + Textbox130 + + + LightGrey + Middle + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Parameters!FormaPago.Value + + + + + + + Textbox131 + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + 0.6cm + + + + + true + true + + + + + Uso CFDI: + + + + + + + Textbox2 + + + LightGrey + Middle + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Parameters!UsoCFDI.Value + + + + + + + Textbox44 + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + 1.8cm + + + + + true + true + + + + + Sello digital del CFDI: + + + + + + + Textbox132 + + + LightGrey + Middle + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Parameters!SelloCFDI.Value + + + + + + + Textbox133 + + + Top + 2pt + 2pt + 2pt + 2pt + + + + + + + + 1.2cm + + + + + true + true + + + + + Sello del SAT: + + + + + + + Textbox134 + + + LightGrey + Middle + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Parameters!SelloSAT.Value + + + + + + + Textbox135 + + + Top + 2pt + 2pt + 2pt + 2pt + + + + + + + + + + + + + + + + + + + + + + + + + DsOC + 5.84979cm + 0.14053cm + 5.4cm + 14.32787cm + 29 + + + + + + + + true + true + + + + + CFDI Relacionados + + + + + + + Textbox5 + 0.11382cm + 0.05336cm + 0.54004cm + 20.00281cm + + + LightGrey + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + Tipo Relación: + + + + + + + Textbox29 + 0.83025cm + 4.33636cm + 0.41981cm + 5.31841cm + 1 + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + =Parameters!TipoRelacionTexto.Value + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + 2.42456cm + + + 2.05585cm + + + 3.03631cm + + + 7.7847cm + + + + + 0.44125cm + + + + + true + true + + + + + Folio + + + + + + + Textbox10 + + + LightGrey + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + Fecha + + + + + + + Textbox12 + + + LightGrey + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + Importe + + + + + + + Textbox21 + + + LightGrey + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + Folio Fiscal + + + + + + + Textbox11 + + + LightGrey + 2pt + 2pt + 2pt + 2pt + + + + + + + + 0.41479cm + + + + + true + true + + + + + =Fields!SerieFolio.Value + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Fields!Fecha.Value + + + + + + + Fecha + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Fields!Importe.Value + + + + + + + Importe1 + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Fields!FolioFiscal.Value + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + + + + + + + + + + + + + After + + + + + + + DataSet4 + 1.39643cm + 2.83462cm + 0.85604cm + 15.30142cm + 3 + + + + + + true + 17.40531cm + 0.04112cm + 2.25247cm + 20.1554cm + 30 + + =Microsoft.VisualBasic.Interaction.IIF(First(Fields!SerieFolio.Value, "DataSet4") <> "", False, True) + + + + + + + true + true + + + + + Cadena original del complemento de certificación digital del SAT: + + + + + + + Textbox1 + 11.26418cm + 0.14053cm + 0.6cm + 19.93168cm + 31 + + + LightGrey + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + VERSION + + + + =Parameters!CFDIVersion.Value + + + + + + + Textbox5 + 19.75983cm + 15.68372cm + 0.56043cm + 4.49042cm + 32 + + + 2pt + 2pt + 2pt + 2pt + + + + Embedded + Logo1 + FitProportional + 2.71356cm + 3.49873cm + 33 + + + + + + true + true + + + + + Llanta nueva cuenta con 2 años de garantía contra defecto de fábrica, llanta usada no cuenta con garantía. + + + + + + 2pt + 2pt + 2pt + 2pt + + + + 20.32026cm + + + + + + + + =CDate(Today).ToString("dd/MM/yyyy") + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + 27.94cm + 21.59cm + 0.5cm + 0.5cm + 1cm + 0.5cm + 1.27cm + + + + + + + Textbox3 + 0.90692in + 5.67236in + 0.5cm + 2.23561in + + + LightGrey + 2pt + 2pt + 2pt + 2pt + + + + true + + + + + Fecha y hora de emisión + + + + + + + + + + + + + + + + Textbox3 + 0.46414in + 5.67236in + 0.5cm + 2.23561in + 1 + + + LightGrey + 2pt + 2pt + 2pt + 2pt + + + + true + + + + + =IIF(Parameters!Serie.Value.ToString="",Parameters!Folio.Value,Parameters!Serie.Value & "-" &Parameters!Folio.Value) + + + + + + + Textbox3 + 0.22455in + 5.67236in + 0.60856cm + 2.23561in + 2 + + + 2pt + 2pt + 2pt + 2pt + + + + true + + + + + =Parameters!TipoDocumento.Value + + + + + + + Textbox3 + 0.0412cm + 5.67236in + 0.5cm + 2.23561in + 3 + + + LightGrey + 2pt + 2pt + 2pt + 2pt + + + + true + + + + + COYOTIRE + + + + + + + + + R.F.C. COYO010101AAA + + + + 0cm + 0cm + + + + + + Olivares 466 Col. Santa Isabe C.P. 83130 + + + + 0cm + 0cm + + + + + + Hermosillo, Sonora, México. + + + + 0cm + 0cm + + + + + + Tel. (662)1890411 + + + + 0cm + 0cm + + + + Textbox4 + 0.0635cm + 1.41912in + 1.04333in + 4.18732in + 4 + + + 2pt + 2pt + 2pt + 2pt + + + + true + + + + + =Parameters!Fecha.Value + + + + + + + Textbox3 + 0.66099in + 5.67236in + 0.25114in + 2.23561in + 5 + + + 2pt + 2pt + 2pt + 2pt + + + + true + + + + + =Parameters!Tipo.Value & Parameters!Ref.Value + + + + + + + Textbox3 + 1.10364in + 5.67236in + 0.25635in + 2.23561in + 6 + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + Nombre + + + + + + + + + + + + + + + 2pt + 2pt + 2pt + 2pt + + + + true + + + + + =Parameters!ClienteNombre.Value + + + + + + + + + + + + + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + Dirección + + + + + + + + + + + + + + + 2pt + 2pt + 2pt + 2pt + + + + true + + + + + =Parameters!ClienteDireccion.Value + + + + + + + + + + + + + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + Ciudad + + + + + + + #4f81bd + + 1.25pt + + 2pt + 2pt + 2pt + 2pt + + + + true + + + + + =Parameters!ClienteLugar.Value + + + + + + + + + + + + + + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + 2.12527cm + + + 2.02474cm + + + 10.17786cm + + + 2.52862cm + + + 3.15415cm + + + + + 0.6cm + + + + + true + true + + + + + Cantidad + + + + + + + Textbox34 + + + LightGrey + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + Unidad + + + + + + + Textbox53 + + + LightGrey + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + Descripción + + + + + + + Textbox79 + + + LightGrey + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + P. Unitario + + + + + + + Textbox84 + + + LightGrey + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + Importe + + + + + + + + + + + + + + + LightGrey + 2pt + 2pt + 2pt + 2pt + + + + + + + + 0.49417cm + + + + + true + true + + + + + =Fields!Cantidad.Value + + + + + + + + + + + + + LightGrey + + + LightGrey + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Fields!UM.Value + + + + + + + UM1 + + + + + + + + + + LightGrey + + + LightGrey + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Fields!PS.Value & " " &Fields!Obs.Value + + + + + + + + + + + + + LightGrey + + + LightGrey + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Fields!PU.Value + + + + + + + PU1 + + + + + + + + + + LightGrey + + + LightGrey + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Fields!Cantidad.Value*Fields!PU.Value + + + + + + + Textbox88 + + + + + + + + + + LightGrey + + + LightGrey + + 2pt + 2pt + 2pt + 2pt + es-MX + + + + + + + + 0.16344cm + + + + + true + true + + + + + + + + + + + LightGrey + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + + + + + + + LightGrey + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + + + + + + + LightGrey + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + + + + + + + LightGrey + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + + + + + + + LightGrey + 2pt + 2pt + 2pt + 2pt + + + + + + + + + + + + + + + + + + + + + After + + + + + + Before + + + + DsOC + 4.5569cm + 0.11468cm + 1.25761cm + 20.01064cm + 13 + + + + + + true + + + + + RFC: + + + + + + + + =Parameters!ClienteRFC.Value + + + + + + + + + + + + + + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + 0.81609in + + + 0.69462in + + + 0.72263in + + + + + 0.19645in + + + + + true + true + + + + + Impuesto + + + + + + + Textbox22 + + + LightGrey + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + Tasa + + + + + + + Textbox15 + + + LightGrey + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + Importe + + + + + + + Textbox29 + + + LightGrey + 2pt + 2pt + 2pt + 2pt + + + + + + + + 0.14436in + + + + + true + true + + + + + =Fields!Impuesto.Value + + + + + + + Cantidad1 + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Fields!tasa.Value + + + + + + + UM + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Fields!Importe.Value + + + + + + + Codigo + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + + + + + + + + + + + + After + + + + + + + DataSet3 + 2.65189in + 5.68499in + 0.34081in + 2.23334in + 15 + + + + + + + + + 3.11466cm + + + + + 0.6cm + + + + + true + true + + + + + =Fields!Importe.Value + + + + + + + Importe + + + 2pt + 2pt + 2pt + 2pt + es-MX + + + + + + + + + + + + + + + + + + + =Fields!ImpuestoLocal.Value + + + + 2.48915cm + + + true + true + + + + + =Fields!ImpuestoLocal.Value + + + + + + + ImpuestoLocal + + + LightGrey + 2pt + 2pt + 2pt + 2pt + + + + + + + + DataSet1 + 5.83876cm + 14.4684cm + 0.6cm + 5.60381cm + 16 + + + + + + + + + 3.33075cm + + + 10.99712cm + + + + + 0.6cm + + + + + true + true + + + + + =Parameters!Observaciones.Value + + + + + + + Textbox128 + + + + 1pt + + 2pt + 2pt + 2pt + 2pt + + + 2 + + + + + + + 0.6cm + + + + + true + true + + + + + Importe con letra: + + + + + + + Textbox126 + + + LightGrey + Middle + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + ="SON: " & Microsoft.VisualBasic.Strings.UCase(Parameters!ImporteLetra.Value) + + + + + + + Textbox127 + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + + + + + + + + + + + + + + DsOC + 5.84979cm + 0.14053cm + 1.2cm + 14.32787cm + 17 + + + + + + Embedded + Logo1 + FitProportional + 2.71356cm + 3.49873cm + 18 + + + + + + true + true + + + + + Llanta nueva cuenta con 2 años de garantía contra defecto de fábrica, llanta usada no cuenta con garantía. + + + + + + 2pt + 2pt + 2pt + 2pt + + + + 8.06008cm + + + + + + + + =CDate(Today).ToString("dd/MM/yyyy") + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + 27.94cm + 21.59cm + 0.5cm + 0.5cm + 1cm + 0.5cm + 1.27cm + + + + + + Orange + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + CLAVE + + + + + + + Textbox29 + + + Orange + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + DESCRIPCIÓN + + + + + + + Textbox17 + + + Orange + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + OBSERVACIÓN + + + + + + + Textbox46 + + + Orange + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + P/U + + + + + + + Textbox23 + + + Orange + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + DESC. + + + + + + + Textbox2 + + + Orange + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + IMPORTE + + + + + + + Textbox1 + + + Orange + 2pt + 2pt + 2pt + 2pt + + + + + + + + 0.15024in + + + + + true + true + + + + + =Fields!Cantidad.Value + + + + + + + Cantidad1 + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Fields!CodPS.Value + + + + + + + CodPS + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Fields!Producto.Value + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Fields!Obs.Value + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Fields!Importe.Value + + + + + + + Importe + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Fields!Descuento.Value + + + + + + + Descuento + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Fields!Total.Value + + + + + + + Total + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + + + + + + + + + + + + + + + + After + + + + + + + DsOC + 0.04788in + 0.36752in + 8.15357in + + + + + + + + true + true + + + + + I.V.A. + + + + + + + Textbox20 + 1.36911cm + 15.76748cm + 0.346cm + 2.5cm + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + TOTAL: + + + + + + + Textbox20 + 3.11917cm + 15.77277cm + 0.31777cm + 2.5cm + 1 + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + =Parameters!IVA.Value + + + + + + + Textbox20 + 1.36911cm + 18.26748cm + 0.346cm + 2.4365cm + 2 + + + 2pt + 2pt + 2pt + 2pt + es-MX + + + + true + true + + + + + =Parameters!Total.Value + + + + + + + Textbox20 + 3.11917cm + 18.27277cm + 0.31777cm + 2.43121cm + 3 + + + 2pt + 2pt + 2pt + 2pt + es-MX + + + + true + true + + + + + SUB-TOTAL + + + + + + + Textbox20 + 0.08445cm + 15.76748cm + 0.45183cm + 2.5cm + 4 + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + =Parameters!SubTotal.Value + + + + + + + Textbox20 + 0.08445cm + 18.26748cm + 0.45183cm + 2.4365cm + 5 + + + 2pt + 2pt + 2pt + 2pt + es-MX + + + + true + true + + + + + =UCase(Parameters!ImporteLetra.Value) + + + + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + + + + Orange + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + + + + + + + Orange + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + + + + + + + Orange + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + =Parameters!Descripcion.Value + + + + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + Ret I.V.A + + + + + + + Textbox20 + 1.75744cm + 15.76669cm + 0.346cm + 2.5cm + 11 + + =IIF(Parameters!RetIVA.Value > 0,FALSE,TRUE) + + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + =Parameters!RetIVA.Value + + + + + + + Textbox20 + 1.75744cm + 18.26669cm + 0.346cm + 2.4365cm + 12 + + =IIF(Parameters!RetIVA.Value > 0,FALSE,TRUE) + + + + 2pt + 2pt + 2pt + 2pt + es-MX + + + + true + true + + + + + Ret I.S.R + + + + + + + Textbox20 + 2.14577cm + 15.76669cm + 0.346cm + 2.5cm + 13 + + =IIF(Parameters!RetISR.Value > 0,FALSE,TRUE) + + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + =Parameters!RetISR.Value + + + + + + + Textbox20 + 2.14577cm + 18.26669cm + 0.346cm + 2.4365cm + 14 + + =IIF(Parameters!RetISR.Value > 0,FALSE,TRUE) + + + + 2pt + 2pt + 2pt + 2pt + es-MX + + + + true + true + + + + + I.E.P.S + + + + + + + Textbox20 + 2.5341cm + 15.76669cm + 0.33368cm + 2.5cm + 15 + + =IIF(Sum(Fields!IEPS.Value, "DsOC") > 0,FALSE,TRUE) + + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + =Sum(Fields!IEPS.Value, "DsOC") + + + + + + + Textbox20 + 2.5341cm + 18.26669cm + 0.33368cm + 2.4365cm + 16 + + =IIF(Sum(Fields!IEPS.Value, "DsOC") > 0,FALSE,TRUE) + + + + 2pt + 2pt + 2pt + 2pt + es-MX + + + + true + true + + + + + DESCUENTO + + + + + + + Textbox20 + 0.57156cm + 15.77355cm + 0.346cm + 2.5cm + 17 + + =IIF(Parameters!Descuento.Value > 0,FALSE,TRUE) + + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + =Parameters!Descuento.Value + + + + + + + Textbox20 + 0.57156cm + 18.27355cm + 0.346cm + 2.4365cm + 18 + + =IIF(Parameters!Descuento.Value > 0,FALSE,TRUE) + + + + 2pt + 2pt + 2pt + 2pt + es-MX + + + + true + true + + + + + SUB-TOTAL2 + + + + + + + Textbox20 + 0.95989cm + 15.77355cm + 0.35983cm + 2.5cm + 19 + + =IIF(Parameters!Descuento.Value > 0,FALSE,TRUE) + + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + =Parameters!SubTotal2.Value + + + + + + + Textbox20 + 0.95989cm + 18.27355cm + 0.35983cm + 2.4365cm + 20 + + =IIF(Parameters!Descuento.Value > 0,FALSE,TRUE) + + + + 2pt + 2pt + 2pt + 2pt + es-MX + + + + true + 1.12516cm + 0.12849cm + 4.22782cm + 20.74271cm + 1 + + + + + + 2.10747in + + + + : + + + + + + + + + Nombre + + + + : + + + + + + + + =Parameters!ProveedorNombre.Value + + + + + + + + + RFC: + + + + + + + + =Parameters!ProveedorRFC.Value + + + + + + + + + Direccion: + + + + =Parameters!ProveedorDireccion.Value + + + + + + + + + Teléfono: + + + + =Parameters!ProveedorTel.Value + + + + + + + + + Contacto: + + + + =Parameters!ProveedorContacto.Value + + + + + + + + + + + Textbox2 + 1.60003in + 0.12161cm + 1.06583in + 3.72333in + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + Facturar a: + + + + + + + + + Citrus Game, S.A. de C.V. + + + + + + + + + =Parameters!DomicilioSucursal.Value + + + + + + + + + CGA100114V60 + + + + + + + + + = Parameters!Telefono.Value + + + + + + + + + + + + + + + + + + + + + + + + + Textbox40 + 4.06406cm + 12.50129cm + 2.70722cm + 8.3243cm + 1 + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + + + + + + + + + =Parameters!TipoOC.Value + + + + + + + + + Folio: + + + + =Parameters!Folio.Value + + + + + + + + + Almacen: + + + + =Parameters!Proyecto.Value + + + + + + + + + Fecha de ElaboracIón: + + + + =Parameters!FechaSolicitud.Value + + + + + + + + + Fecha Estimada de Recepción: + + + + =iif(Parameters!FechaEntrega.Value="01/01/0001","",Parameters!FechaEntrega.Value) + + + + + + + + + + + + + Folio Pedido Proveedor: + + + + =Parameters!FolioAdicional.Value + + + + + + + + + Asignado a: + + + + =Parameters!Comprador.Value + + + + + + + + + Coordinador Empresarial: + + + + + + + + =Parameters!Vendedor.Value + + + + + + + Textbox40 + 0.16794cm + 12.50129cm + 3.79029cm + 8.3243cm + 2 + + + 2pt + 2pt + 2pt + 2pt + + + + Embedded + LogoCitrusLarge + FitProportional + 0.16794cm + 0.1285cm + 3.00813cm + 9.78146cm + 3 + + + + + + + + + + + 0.84696cm + true + true + + + true + true + + + + + Usuario: + + + + =Parameters!UsuarioImprimio.Value + + + + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + Fecha Impresión: + + + + =Parameters!FechaImpresion.Value + + + + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + ="Página " & Globals.PageNumber & " de " & Globals.TotalPages + + + + + + + Textbox35 + 0.25252cm + 18.19908cm + 0.41981cm + 2.5cm + 2 + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + 27.94cm + 21.59cm + 0cm + 0cm + 0cm + 0.5cm + 0.13cm + - - - Conciliacion Emitidas Sat - - - - - - - - - - - - - -
-
-
- - -
-
-
- - -
- - - - - - - -
-
- Fecha Inicio: -
-
-
- - - - -
- - - - - - -
-
- Fecha Fin: -
-
-
- - - - -
- - - - - - -
-
-
-
- -
-
-
- -
-
-
- - Facturas emitidas en el sat sin registrar de -
-
- -
-
- - -
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <%-- --%> - XML - - - - - r - - - - - - -
-
- - - -
-
- -
- - - - diff --git a/Ventas/RepConciliacionEmitidosSat.aspx.cs b/Ventas/RepConciliacionEmitidosSat.aspx.cs deleted file mode 100644 index 7cf8cc869..000000000 --- a/Ventas/RepConciliacionEmitidosSat.aspx.cs +++ /dev/null @@ -1,1808 +0,0 @@ -using Microsoft.Reporting.WebForms; -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using System.Web; -using System.Web.UI; -using System.Web.UI.WebControls; -using System.Xml; -using Extensiones; -using System.Data; -using System.Text; -using ADSistemaLibrary2.SatXml; - -//using ADS_CFDI_SAT; - -public partial class Ventas_RepConciliacionEmitidosSat : ClsPaginas -{ - #region "Propiedades" - const string rqFechaInicio = "FechaInicio"; - const string rqFechaFin = "FechaFin"; - const string rqRegistroEn = "RegistroEn"; - - public string RfechaI - { - get - { - return ViewState["RfechaI"].ToString(); - } - set { ViewState["RfechaI"] = value; } - } - public string RfechaF - { - get - { - return ViewState["RfechaF"].ToString(); - } - set { ViewState["RfechaF"] = value; } - } - public object CurrentRow - { - get - { - return ViewState["CurrentRow"]; - } - set { ViewState["CurrentRow"] = value; } - } - public int RegistroEn - { - get - { - if (ViewState["RegistroEn"] != null) - { - return ViewState["RegistroEn"].ToString().ToEntero(); - } - else - { - return 0; - } - } - set { ViewState["RegistroEn"] = value; } - } - private StringBuilder strErrores; - #endregion - protected void Page_Load(object sender, EventArgs e) - { - if (!IsPostBack) - { - string path; - if (Request["op"] != null && Request["op"].ToString().Length > 0) - { - try - { - - if (System.IO.File.Exists((path = string.Format("{0}\\{1}", UsuarioActual.Empresa.Ruta.Trim(), Extensiones.ModExtensiones.Decripta(Request["op"].ToString()).Trim()).Replace("/", "\\")))) - { - - System.IO.FileInfo archivo = new System.IO.FileInfo(path); - - HttpContext.Current.Response.Clear(); - HttpContext.Current.Response.ClearContent(); - HttpContext.Current.Response.ContentType = "text/plain"; - 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.End(); - } - else - { - RegistraScript("window.close()"); - } - } - catch (Exception ex) - { - Extensiones.ModExtensiones.GuardaLog(ex.ToString()); - RegistraScript("window.close()"); - - } - - } - - fillrequestfields(); - DdlSubProyectoDatos.DataSource = get_GlobalDTSubProyectosUsuarios(UsuarioActual.CveUsuario, -1, UsuarioActual.CveEmpresa, -1, 1).FiltraParametros("EsSucursal = True "); - DdlSubProyectoDatos.DataBind(); - DdlClasificacion.DataSource = get_GlobalDTClasificaciones(UsuarioActual.CveEmpresa, UsoClasificacion: 1).FiltraParametros(" Codigo = '' OR Codigo IS NULL ", Orderby: "Clasificacion"); - - DdlClasificacion.DataBind(); - - - CargaConciliacionemitidasSATGet(); - int CveClasificacion = DdlClasificacion.SelectedValue.ToEntero(); - if (UsuarioActual.Empresa.Funcionalidad(141).ToString() == "1") - { - - DdlPS.setEsWebService(true); - DdlPS.ddlWS.Attributes.Add("data-cveclasificacion", CveClasificacion.ToString()); - DdlPS.ddlWS.Attributes.Add("data-pagina", "ventas/ventas"); - DdlPS.ddlWS.Attributes.Add("data-Estatus", "1"); - } - else - { - - DdlPS.setEsWebService(false); - DdlPS.ddl.DataSource = get_GlobalDTPSSimplificado(UsuarioActual.CveEmpresa, CveClasificacion: CveClasificacion, Estatus: 1, AplicaParaVenta: 1); - DdlPS.ddl.DataBind(); - } - } - } - private void downfile(string path) - { - - } - public void fillrequestfields() - { - - DateTime fecha; - DateTime fechaInicio = DateTime.Now; - DateTime fechaFin = DateTime.Now; - RegistroEn = -1; - if (fechaInicio.Day < 5) { fechaInicio = fechaInicio.AddMonths(-1); } - fechaInicio = fechaInicio.AddDays(1 - fechaInicio.Day); - fechaFin = fechaInicio.AddYears(1).AddDays(-1); - if (Request[rqRegistroEn] != null) { RegistroEn = Request[rqRegistroEn].ToEntero(); } - if (Request[rqFechaInicio] != null) { DateTime.TryParse(Request[rqFechaInicio], out fecha); fechaInicio = fecha.Year > 1900 ? fecha : fechaInicio; } - if (Request[rqFechaFin] != null) { DateTime.TryParse(Request[rqFechaFin], out fecha); fechaFin = fecha.Year > 1900 ? fecha : fechaFin; } - txtFechaI.Text = string.Format("{0:dd/MM/yyyy}", fechaInicio); - txtFechaF.Text = string.Format("{0:dd/MM/yyyy}", fechaFin); - ddlRegistroen.SelectedValueExist(RegistroEn); - } - - protected void CargaRepConciliacionSatGET() - { - string RtipoDocto; - RtipoDocto = "I"; - RfechaI = txtFechaI.Text.Length > 0 ? txtFechaI.Text.ToDateTime().ToString("yyyy/MM/dd") : ""; - RfechaF = txtFechaF.Text.Length > 0 ? string.Format("{0:yyyy/MM/dd}", txtFechaF.Text.ToDateTime()) : ""; - RegistroEn = ddlRegistroen.SelectedValue.ToEntero(); - using (ClsGenerales ObjRepC = new ClsGenerales()) - { - if (ObjRepC.RepConciliacionSatDetalleGET(UsuarioActual.CveEmpresa, RtipoDocto, RfechaI, RfechaF, RegistroEn)) - { - Ltlsinregistrar.Text = $"{ObjRepC.DtResultados.COUNT("FolioFiscal", "CveVenta IS NULL")}"; - ltlTotal.Text = $"{ObjRepC.DtResultados.Rows.Count}"; - - } - GVConciliacionemitidasSAT.DataSource = ObjRepC.DtResultados; - ObjRepC.Dispose(); - - } - GVConciliacionemitidasSAT.DataBind(); - UpDatosReporte.Update(); - } - protected void CargaConciliacionemitidasSATGet() - { - CargaRepConciliacionSatGET(); - //ClsVentas ObjV = new ClsVentas(); - //ObjV.ConciliacionemitidasSATGet(UsuarioActual.CveEmpresa); - //GVConciliacionemitidasSAT.DataSource = ObjV.DtResultados.FiltraParametros("", "CveVenta"); - //Ltlsinregistrar.Text = $"{ObjV.DtResultados.COUNT("FolioFiscal","CveVenta IS NULL")}"; - //ltlTotal.Text = $"{ObjV.DtResultados.Rows.Count}"; - //ObjV.Dispose(); - //GVConciliacionemitidasSAT.DataBind(); - //UpDatosReporte.Update(); - - } - private void registrarventa(GridViewRow gvrow) - { - - { - string rutaempresa = UsuarioActual.Empresa.Ruta.Trim().Replace("/", "\\"); - string rutafile = gvrow.DataKey("RutaXml").Trim().Replace("/", "\\"); - rutaempresa = rutaempresa.Substring(rutaempresa.Length - 1, 1) == "\\" ? rutaempresa.Substring(0, rutaempresa.Length - 1): rutaempresa; - rutafile = rutafile.Substring(0, 1) == "\\" ? rutafile.Substring(1): rutafile; - string ruta = string.Format("{0}\\{1}", rutaempresa, rutafile); //gvrow.DataKey("RutaXml"); - //Alert(ruta); - - //return false; - strErrores = new StringBuilder(); - XmlSatCFDI objxml = null; - Modelos.Factura objfact = null; - bool continuar = true; - objxml = XmlSatCFDI.readXML(ruta); - continuar = continuar && (objxml != null); - if (continuar) - { - - objfact = GetFacturaFromXML(objxml); - } - continuar = continuar && (objfact != null); - if (continuar) - { - - // Dim As New (ObjVentas.IniciaTransacSQL()) - // Dim As = Nothing - // Dim MensajeAlert = New StringBuilder - ClsVentas ObjVentas = new ClsVentas(); - ClsInventarios ObjInventario = new ClsInventarios(ObjVentas.IniciaTransacSQL()); - ClsContabilidad ObjConta = new ClsContabilidad(ObjVentas.IniciaTransacSQL()); - ClsContratos ObjContr = new ClsContratos(ObjVentas.IniciaTransacSQL()); - ClsOS ObjOS = new ClsOS(ObjVentas.IniciaTransacSQL()); - ClsBancos ObjBancos = new ClsBancos(ObjVentas.IniciaTransacSQL()); - ClsClientes ObjClientes = new ClsClientes(ObjVentas.IniciaTransacSQL()); - ClsOIEventos ObjEventos = new ClsOIEventos(ObjVentas.IniciaTransacSQL()); - ClsCGame ObjCGame = new ClsCGame(ObjVentas.IniciaTransacSQL()); - ClsEdocumentacion ObjDocCliente = new ClsEdocumentacion(ObjVentas.IniciaTransacSQL()); - ClsAcumuladores ObjAcum = new ClsAcumuladores(ObjVentas.IniciaTransacSQL()); - ClsContPAQi ObjContPaq = null; - //StringBuilder MensajeAlert = new StringBuilder() ; - Modelos.Factura.MMensajeFactura Resp = new Modelos.Factura.MMensajeFactura(); - DataTable DtDetalle = objfact.DtDetalle; - try - { - objfact.GuardarVenta(ref objfact, ref ObjVentas, ref ObjConta, ref ObjInventario, ref ObjContr, ref DtDetalle, objfact.CveNCaVincular, ref ObjContPaq, - ref ObjBancos, ref ObjOS, ref ObjEventos, ref ObjCGame, ref ObjClientes, false, ObjAcum,ref Resp); - - } - catch (Exception e) - { - objfact.CveVenta = -1; - e.ToString().GuardaLog(); - strErrores.AppendLine("
"); - strErrores.AppendLine(e.ToString()); - } - if (ObjVentas.UpdateEstatusFactura(3, objxml.complemento.UUID, "", DateTime.ParseExact(objxml.comprobante.Fecha.Replace("T", " "), "yyyy-MM-dd HH:mm:ss", System.Globalization.CultureInfo.InvariantCulture), ObjVentas.CveVenta, CvePAC: 4)) - if (objfact.CveVenta > 0 && objfact.ErrorList.Count == 0) - { - ObjVentas.Commit(); - } - else - { - foreach (string item in objfact.ErrorList) - { - strErrores.AppendLine("
"); - strErrores.AppendLine(item); - } - objfact.CveVenta = -1; - ObjVentas.RollBack(); - } - ObjVentas.Dispose(); - ObjConta.Dispose(); - ObjInventario.Dispose(); - ObjCGame.Dispose(); - ObjContr.Dispose(); - ObjDocCliente.Dispose(); - ObjClientes.Dispose(); - ObjAcum.Dispose(); - - } - if (objfact != null && objfact.CveVenta > 0) - { - CargaConciliacionemitidasSATGet(); - Alert($"se ha agregado la factura correctamente.
Ver Factura ", ModExtensiones.TipoMensaje.ToastInformacion, timeout: 25); - } - else { continuar = false; } - if (!continuar) - { - Alert($"no se pudo agregar la factura {strErrores.ToString()}", ModExtensiones.TipoMensaje.MsgAdvertencia); - } - } - - } - - protected void LnkRegistrar_Click(object sender, EventArgs e) - { - GridViewRow gvrow = (GridViewRow)(((LinkButton)sender).NamingContainer); - CurrentRow = gvrow; - RegistraScript("$('#DModalDefaults').modal();"); - //registrarventa(gvrow); - //string ruta = gvrow.DataKey("RutaXml"); - //strErrores = new StringBuilder(); - //XmlSatCFDI objxml = null; - //Modelos.Factura objfact = null; - //bool continuar = true; - //objxml = XmlSatCFDI.readXML(ruta); - //continuar = continuar && (objxml != null); - //if (continuar) - //{ - - // objfact = GetFacturaFromXML(objxml); - //} - //continuar = continuar && (objfact != null); - //if (continuar) - //{ - - // // Dim As New (ObjVentas.IniciaTransacSQL()) - // // Dim As = Nothing - // // Dim MensajeAlert = New StringBuilder - // ClsVentas ObjVentas = new ClsVentas(); - // ClsInventarios ObjInventario = new ClsInventarios(ObjVentas.IniciaTransacSQL()); - // ClsContabilidad ObjConta = new ClsContabilidad(ObjVentas.IniciaTransacSQL()); - // ClsContratos ObjContr = new ClsContratos(ObjVentas.IniciaTransacSQL()); - // ClsOS ObjOS = new ClsOS(ObjVentas.IniciaTransacSQL()); - // ClsBancos ObjBancos = new ClsBancos(ObjVentas.IniciaTransacSQL()); - // ClsClientes ObjClientes = new ClsClientes(ObjVentas.IniciaTransacSQL()); - // ClsOIEventos ObjEventos = new ClsOIEventos(ObjVentas.IniciaTransacSQL()); - // ClsCGame ObjCGame = new ClsCGame(ObjVentas.IniciaTransacSQL()); - // ClsEdocumentacion ObjDocCliente = new ClsEdocumentacion(ObjVentas.IniciaTransacSQL()); - // ClsAcumuladores ObjAcum = new ClsAcumuladores(ObjVentas.IniciaTransacSQL()); - // ClsContPAQi ObjContPaq = null; - // //StringBuilder MensajeAlert = new StringBuilder() ; - // try - // { - // objfact.GuardarVenta(ref objfact, ref ObjVentas, ref ObjConta, ref ObjInventario, ref ObjContr, ref objfact.DtDetalle, objfact.CveNCaVincular, ref ObjContPaq, ref ObjBancos, ref ObjOS, ref ObjEventos, ref ObjCGame, ref ObjClientes, ObjAcum: ObjAcum); - - // } - // catch (Exception ) - // { - // objfact.CveVenta = -1; - // } - // if (ObjVentas.UpdateEstatusFactura(3, objxml.complemento.UUID, "", DateTime.ParseExact(objxml.comprobante.Fecha.Replace("T", " "), "yyyy-MM-dd HH:mm:ss", System.Globalization.CultureInfo.InvariantCulture), ObjVentas.CveVenta, CvePAC: 4)) - // if (objfact.CveVenta > 0 && objfact.ErrorList.Count == 0) - // { - // ObjVentas.Commit(); - // } - // else - // { - // foreach (string item in objfact.ErrorList) - // { - // strErrores.AppendLine("
"); - // strErrores.AppendLine(item); - // } - // objfact.CveVenta = -1; - // ObjVentas.RollBack(); - // } - // ObjVentas.Dispose(); - // ObjConta.Dispose(); - // ObjInventario.Dispose(); - // ObjCGame.Dispose(); - // ObjContr.Dispose(); - // ObjDocCliente.Dispose(); - // ObjClientes.Dispose(); - // ObjAcum.Dispose(); - - //} - //if (objfact != null && objfact.CveVenta > 0) - //{ - // CargaConciliacionemitidasSATGet(); - // Alert($"se ha agregado la factura correctamente.
Ver Factura ", ModExtensiones.TipoMensaje.ToastInformacion,timeout:25); - //} - //else { continuar = false; } - //if (!continuar) - //{ - // Alert($"no se pudo agregar la factura {strErrores.ToString()}", ModExtensiones.TipoMensaje.MsgAdvertencia); - //} - } - - protected Modelos.Factura GetFacturaFromXML(XmlSatCFDI objxml) - { - int CvePsReconstruccion = DdlPS.SelectedValue.ToEntero(); - int CveSubProyectoReconstruccion = DdlSubProyectoDatos.SelectedValue.ToEntero(); - //Modelos.Factura.MMensajeFactura resp; - - string Moneda = objxml.comprobante.Moneda; - if (objxml.comprobante.Version == "3.2") - { - switch (Moneda) - { - case "Peso Mexicano": Moneda = "MXN"; break; - case "Dolar Americano": Moneda = "USD"; break; - } - - } - string formadepago = objxml.comprobante.FormaPago; - string metododepago = objxml.comprobante.MetodoPago; - if (objxml.comprobante.Version == "3.2") - { - switch (objxml.comprobante.MetodoPago)//si es correcto estan invertidos - { - case "TRANSFERENCIA ELECTRONICA": formadepago = "03"; break; - default: formadepago = objxml.comprobante.MetodoPago; break; - } - - } - if (objxml.comprobante.Version == "3.2") - { - switch (objxml.comprobante.FormaPago)//si es correcto estan invertidos - { - case "PAGO EN UNA SOLA EXHIBICION": metododepago = "PUE"; break; - default: metododepago = objxml.comprobante.FormaPago; break; - } - - } - - - Modelos.Factura objfact = new Modelos.Factura(UsuarioActual) - { - TipoMensajeRespuesta = Modelos.TipoMensajeRespuesta.TextoLimpio,//?que es esto - CveUsuario = UsuarioActual.CveUsuario, - CveEmpresa = UsuarioActual.CveEmpresa, - - FolioFiscal = objxml.complemento.UUID, - Serie = objxml.comprobante.Serie, - Folio = objxml.comprobante.Folio.ToEntero(),//Nota en el sat puede ser un string - Version = objxml.comprobante.Version, - TipoCambio = objxml.comprobante.TipoCambio, - //ConvertirPesos =false,//?para que sirve - MonedaSAT = objxml.comprobante.Moneda, - CveMoneda = GlobalDTMonedas.FiltroPrimeroValor("CveMoneda", $" AbreviaturaSAT= '{Moneda}' ").ToEntero(), - Moneda = GlobalDTMonedas.FiltroPrimeroValor("Moneda", $" AbreviaturaSAT= '{Moneda}' "), - TipoDocto = objxml.comprobante.TipoDeComprobanteSIG, - RefDocto = "", - CveMesa = -1, - Fecha = DateTime.ParseExact(objxml.comprobante.Fecha, "yyyy-MM-ddTHH:mm:ss", System.Globalization.CultureInfo.InvariantCulture), - CvePrePoliza = -1, - FechaPago = DateTime.Now, - MotivoDescuento = "", - FechaEjecucion = DateTime.Now, - UsuarioCreo = UsuarioActual.Usuario, - CveCondicionEntrega = -1, - CondicionEntrega = "", - NumeroCuenta = "", - CondicionesPago = 0, - FormaPago = 0, - PedidoContrato = "", - NumeroContrato = "", - DescripcionContrato = "", - CveCorte = -1, - TipoDocumento = objxml.comprobante.TipoDeComprobanteTexto, - Alfa1 = "", - Alfa2 = "", - Alfa3 = "", - CveContrato = -1 - }; - DataRow dr = get_GlobalDTSubProyectos(-1, -1, UsuarioActual.CveEmpresa, 1).FiltroPrimero(string.Format("Serie='{0}'", objfact.Serie)); - if (dr == null) { dr = get_GlobalDTSubProyectos(-1, CveSubProyectoReconstruccion, UsuarioActual.CveEmpresa, 1).Rows[0]; } - if (dr != null) - { - objfact.CveSubProyecto = dr["CveSubProyecto"].ToString().ToEntero(); - objfact.CveSubProyectoCobranza = dr["CveSubProyecto"].ToString().ToEntero(); - objfact.CveSubProyectoEjecucion = dr["CveSubProyecto"].ToString().ToEntero(); - objfact.SubProyecto = new Modelos.SubProyectoModel(dr); - objfact.SubProyectoMatriz = new Modelos.SubProyectoModel(get_GlobalDTSubProyectos(-1, CveSubProyecto: -1, CveEmpresa: UsuarioActual.CveEmpresa).FiltroPrimero("TipoSucursal=1")); - - } - using (ClsClientes objClientes = new ClsClientes()) - { - if (objClientes.GetClientes(-1, "-1", "-1", "-1", objxml.receptor.Rfc, "-1", "-1", -1, UsuarioActual.CveEmpresa, -1, TipoCliente: -1) && objClientes.DtResultados.Rows.Count > 0) - { - DataRow drCliente = objClientes.DtResultados.Rows[0]; - objfact.CveCliente = drCliente["CveCliente"].ToString().ToEntero(); - objfact.SetCliente(); - - - } - } - - objfact.CveAlmacen = -1; - objfact.CveFormaPago33 = GlobalDTVtaFormaPago.FiltroPrimeroValor("CveFormaPago", $"ClaveFormaPagoSAT = '{formadepago}'").ToEntero(); - objfact.FormaPagoSAT33 = objxml.comprobante.FormaPago; - objfact.FormaPago33 = objxml.comprobante.FormaPagoTexto; - objfact.CveMetodoPago33 = GlobalDTVtaMetodoPago.FiltroPrimeroValor("CveMetodoPago", $" ClaveMetodoPagoSAT = '{metododepago}'").ToEntero(); - objfact.CveMetodoPago = GlobalDTVtaMetodoPago.FiltroPrimeroValor("CveMetodoPago", $" ClaveMetodoPagoSAT = '{metododepago}'").ToEntero(); - objfact.ClaveMetodoPagoSAT = objxml.comprobante.MetodoPago; - objfact.MetodoPago33 = objxml.comprobante.MetodoPagoTexto; - objfact.CveUsoCFDI = get_GlobalDTSATUsosCFDI(-1).FiltroPrimeroValor("CveUsoCFDI", $"UsoCFDI = '{objxml.receptor.UsoCFDI}'").ToEntero(); - objfact.UsoCFDI = objxml.receptor.UsoCFDITexto; - objfact.ClaveUsoCFDI = objxml.receptor.UsoCFDI; - objfact.CveClienteSucursal = -1; - - objfact.DtDetalle = CreaDTDetalle(UsuarioActual, objxml.conceptos, objfact.CveSubProyecto, CvePsReconstruccion, objxml); - - objfact.TipoCambioDolares = objxml.comprobante.TipoCambio; - objfact.SubTotal = objxml.comprobante.SubTotal; - objfact.Descuento = objxml.comprobante.Descuento; - objfact.Amortizacion = 0; - objfact.IVA = objxml.Impuestos.Where(x => (x.Impuesto == "002" || x.Impuesto == "IVA") && x.Tipo == "Traslados").Sum(item => item.Importe); - objfact.RetIVA = objxml.Impuestos.Where(x => (x.Impuesto == "002" || x.Impuesto == "IVA") && x.Tipo == "Retenciones").Sum(item => item.Importe); - objfact.RetISR = objxml.Impuestos.Where(x => (x.Impuesto == "001" || x.Impuesto == "ISR") && x.Tipo == "Retenciones").Sum(item => item.Importe); - objfact.IEPS = objxml.Impuestos.Where(x => (x.Impuesto == "003" || x.Impuesto == "IEPS")).Sum(item => item.Importe); - objfact.Total = objxml.comprobante.Total; - objfact.TotalOtrosConceptos = 0; - - - objfact.Observaciones = ""; - objfact.OrdenCompra = ""; - objfact.PedidoContrato = ""; - objfact.ObservacionesAlmacen = ""; - if (strErrores.Length > 0) - { - objfact = null; - } - return objfact; - } - private DataTable CreaDTDetalle(Usuario UsuarioActual, List conceptos, int CveSubProyecto, int CvePsReconstruccion, XmlSatCFDI objxml) - { - bool continuar = true; - var TmpDT = new DataTable(); - #region TmpDT Fields - TmpDT.Columns.Add("CveVenta", typeof(int)); - TmpDT.Columns.Add("Consec", typeof(int)); - TmpDT.Columns.Add("Cantidad", typeof(decimal)); - TmpDT.Columns.Add("Codigo", typeof(string)); - TmpDT.Columns.Add("CveUM", typeof(int)); - TmpDT.Columns.Add("UM", typeof(string)); - TmpDT.Columns.Add("SATClaveUM", typeof(string)); - TmpDT.Columns.Add("CveClasificacion", typeof(int)); - TmpDT.Columns.Add("Clasificacion", typeof(string)); - TmpDT.Columns.Add("CvePS", typeof(int)); - TmpDT.Columns.Add("PS", typeof(string)); - TmpDT.Columns.Add("CodigoPS", typeof(string)); - TmpDT.Columns.Add("SATClaveProdServ", typeof(string)); - TmpDT.Columns.Add("NoIdentificacion", typeof(string)); - TmpDT.Columns.Add("CveTipoPS", typeof(int)); - TmpDT.Columns.Add("CveTipoInvPS", typeof(int)); - TmpDT.Columns.Add("Serie", typeof(string)); - TmpDT.Columns.Add("CuentaPredial", typeof(string)); - TmpDT.Columns.Add("Obs", typeof(string)); - TmpDT.Columns.Add("TiempoEntrega", typeof(string)); - TmpDT.Columns.Add("PU", typeof(decimal)); - TmpDT.Columns.Add("IVA", typeof(decimal)); - TmpDT.Columns.Add("ImporteIVA", typeof(decimal)); - TmpDT.Columns.Add("PorcentajeIVA", typeof(decimal)); - TmpDT.Columns.Add("ImporteRetIVA", typeof(decimal)); - TmpDT.Columns.Add("ImporteRetISR", typeof(decimal)); - TmpDT.Columns.Add("PorcentajeRetIVA", typeof(decimal)); - TmpDT.Columns.Add("PorcentajeRetISR", typeof(decimal)); - TmpDT.Columns.Add("ImporteIEPS", typeof(decimal)); - TmpDT.Columns.Add("IEPS", typeof(decimal)); - TmpDT.Columns.Add("PorcentajeIEPS", typeof(decimal)); - TmpDT.Columns.Add("Descuento", typeof(decimal)); - TmpDT.Columns.Add("TipoDescuento", typeof(int)); - TmpDT.Columns.Add("TotalImporte", typeof(decimal)); - TmpDT.Columns.Add("Total", typeof(decimal)); - // Para uso del módulo contable - TmpDT.Columns.Add("AsientoContableVentas", typeof(int)); - TmpDT.Columns.Add("IdCtaContVentas", typeof(int)); - TmpDT.Columns.Add("AplicaParaConcepto", typeof(bool)); - TmpDT.Columns.Add("CveProyecto", typeof(int)); - TmpDT.Columns.Add("Proyecto", typeof(string)); - TmpDT.Columns.Add("CveSubProyecto", typeof(int)); - TmpDT.Columns.Add("SubProyecto", typeof(string)); - // TipoDescuento: 1 = Descuento * PU; 2 = Descuento por Total del concepto - TmpDT.Columns.Add("CvePresupuestoIngreso", typeof(int)); - TmpDT.Columns.Add("CveFuenteRecaudacion", typeof(int)); - // Contratos - TmpDT.Columns.Add("CveContratoDetalle", typeof(int)); - // Remisiones a Facturas - TmpDT.Columns.Add("CveVentaDetalle", typeof(int)); - TmpDT.Columns.Add("CveVentaDetalleRemision", typeof(int)); - TmpDT.Columns.Add("CveVentaDetalleCotizacion", typeof(int)); - // Pedido2 a Facturas - TmpDT.Columns.Add("CveVentaDetallePedido2", typeof(int)); - TmpDT.Columns.Add("Origen", typeof(int)); - // Ordenes Servicio - TmpDT.Columns.Add("CveOS", typeof(int)); - TmpDT.Columns.Add("CveOSDetalle", typeof(int)); - TmpDT.Columns.Add("SeFacturara", typeof(int)); - TmpDT.Columns.Add("Folio", typeof(int)); - TmpDT.Columns.Add("Estatus", typeof(string)); - // Ordenamiento - TmpDT.Columns.Add("Orden", typeof(int)); - TmpDT.Columns.Add("TipoDocto", typeof(string)); - // OC - TmpDT.Columns.Add("CveOrdenCompraDetalle", typeof(int)); - TmpDT.Columns.Add("EntregaDirecta", typeof(int)); - TmpDT.Columns.Add("CveMovimientoDetallePedido", typeof(int)); - TmpDT.Columns.Add("CantidadFacturadaRem", typeof(decimal)); - TmpDT.Columns.Add("CantidadFacturadaCot", typeof(decimal)); - TmpDT.Columns.Add("CantidadInventario", typeof(decimal)); - TmpDT.Columns.Add("ClaveSATFraccionArancelaria", typeof(string)); - TmpDT.Columns.Add("ClaveSATUnidadAduana", typeof(string)); - TmpDT.Columns.Add("ClaveSATFraccionArancelariaDescripcion", typeof(string)); - TmpDT.Columns.Add("ClaveSATUnidadAduanaDescripcion", typeof(string)); - TmpDT.Columns.Add("CveTamaño", typeof(int)); - #endregion - foreach (CFDIConcepto item in conceptos) - { - DataRow DrPS = null;// get_GlobalDTPS(UsuarioActual.CveEmpresa).FiltroPrimero(string.Format("PS ={0}",item.Descripcion)); - - DataRow DrSubProyecto = null; - DataRow DrUmSat = null; - DataRow DrUm = null; - if (continuar) - { - using (ClsProductosServicios obj = new ClsProductosServicios()) - { - if (obj.GetPS(-1, -1, UsuarioActual.CveEmpresa, PS: item.Descripcion) && obj.DtResultados.Rows.Count > 0) - { - DrPS = obj.DtResultados.Rows[0]; - } - else if (obj.GetPS(CvePsReconstruccion, -1, UsuarioActual.CveEmpresa) && obj.DtResultados.Rows.Count > 0) - { - - DrPS = obj.DtResultados.Rows[0]; - } - - } - DrSubProyecto = get_GlobalDTSubProyectos(-1, CveSubProyecto, UsuarioActual.CveEmpresa).Rows[0]; - - - if (objxml.comprobante.Version == "3.2") - { - item.ClaveUnidad = item.Unidad; - switch (item.ClaveUnidad) - { - case "TON": item.ClaveUnidad = "A75"; break; - case "No aplica": item.ClaveUnidad = "ACT"; break; - case "LITROS": item.ClaveUnidad = "E32"; break; - case "M3-KM": item.ClaveUnidad = "M73"; break; - } - - } - - DrUmSat = GlobalDTPSATUM.FiltroPrimero(string.Format("SATClaveUnidadMedida='{0}'", item.ClaveUnidad)); - } - if (continuar && DrUmSat == null) { continuar = false; strErrores.AppendLine($"No se encontro la unidad de medida en el catalogo del sat '{item.ClaveUnidad}', favor de contactar a soporte tecnico."); } - if (continuar) - { - DrUm = get_GlobalDTUnidadesMedida(UsuarioActual.CveEmpresa).FiltroPrimero(string.Format("CveUnidadMedidaSAT={0}", DrUmSat["CveUnidadMedidaSAT"])); - } - if (continuar && DrUm == null) { continuar = false; strErrores.AppendLine($"No se encontro la unidad de medida relacionada a la clave del sat '{item.ClaveUnidad}', favor de asignarla en el catalogo de unidad de medida."); } - if (continuar) - { - //no se encontro una undidad de medida para - DataRow Row = TmpDT.NewRow(); - Row["CveProyecto"] = DrSubProyecto["CveProyecto"].ToString().ToEntero(); - Row["Proyecto"] = DrSubProyecto["Proyecto"].ToString(); - Row["CveSubProyecto"] = CveSubProyecto; - Row["SubProyecto"] = DrSubProyecto["SubProyecto"].ToString(); - Row["Serie"] = ""; - Row["TiempoEntrega"] = ""; - Row["Orden"] = TmpDT.Rows.Count + 1; - Row["Cantidad"] = item.Cantidad; - Row["CveUM"] = DrUm["CveUnidadMedida"]; - Row["UM"] = DrUm["UnidadMedida"]; - Row["CveClasificacion"] = DrPS["CveClasificacion"]; - Row["Clasificacion"] = DrPS["Clasificacion"]; - Row["CvePS"] = DrPS["CvePS"]; - Row["Obs"] = item.Descripcion; - - //TotalCalculableImpuestos = (Cantidad * PU) - Descuento; - - Row["PU"] = item.ValorUnitario; - Row["Codigo"] = DrPS["Codigo"]; - Row["NoIdentificacion"] = DrPS["Codigo"]; - Row["ClaveSATFraccionArancelaria"] = DrPS["ClaveSATFraccionArancelaria"]; - Row["ClaveSATUnidadAduana"] = DrPS["ClaveSATUnidadAduana"]; - Row["ClaveSATFraccionArancelariaDescripcion"] = DrPS["ClaveSATFraccionArancelariaDescripcion"]; - Row["ClaveSATUnidadAduanaDescripcion"] = DrPS["ClaveSATUnidadAduanaDescripcion"]; - Row["Consec"] = TmpDT.Rows.Count + 1; - Row["PS"] = item.Descripcion; - Row["CodigoPS"] = DrPS["PSCodigo"].ToString(); - Row["CveTipoPS"] = DrPS["CveTipoPS"]; - Row["CveTipoInvPS"] = DrPS["Inv_CveMetodoInventario"]; - Row["CveTamaño"] = DrPS["CveTamaño"]; - CFDIConceptoImpuesto impuesto = item.Impuestos.FirstOrDefault(x => x.Impuesto == "002" && x.Tipo == "Traslado"); - decimal sumaimpuesto = 0; - decimal PorcentajeIVA = 0; - if (impuesto != null) - { - decimal decimpuesto = 0; - decimal.TryParse(impuesto.TasaOCuota, out decimpuesto); - PorcentajeIVA = decimpuesto / 100; - Row["PorcentajeIVA"] = PorcentajeIVA; - Row["ImporteIVA"] = impuesto.Importe;// impuesto.Importe;//Math.Round(item.Importe * (decimpuesto/100), 2); - sumaimpuesto += impuesto.Importe; - } - else - { - Row["PorcentajeIVA"] = 0; - Row["ImporteIVA"] = 0; - if (objxml.comprobante.Version == "3.2") - { - if (item.Importe > 0) - { - PorcentajeIVA = .16M; - Row["PorcentajeIVA"] = PorcentajeIVA; - Row["ImporteIVA"] = item.Importe * PorcentajeIVA;//Math.Round(((item.Importe / (1 + PorcentajeIVA))*.16M),2); - - } - } - } - Row["IVA"] = Row["ImporteIVA"]; - impuesto = item.Impuestos.FirstOrDefault(x => x.Impuesto == "003" && x.Tipo == "Traslado"); - if (impuesto != null) - { - decimal decimpuesto = 0; - decimal.TryParse(impuesto.TasaOCuota, out decimpuesto); - Row["PorcentajeIEPS"] = decimpuesto / 100; - Row["ImporteIEPS"] = impuesto.Importe; - Row["IEPS"] = impuesto.Importe; - sumaimpuesto += impuesto.Importe; - } - else - { - Row["PorcentajeIEPS"] = 0; - Row["ImporteIEPS"] = 0; - Row["IEPS"] = 0; - } - impuesto = item.Impuestos.FirstOrDefault(x => x.Impuesto == "001" && x.Tipo == "Retencion"); - if (impuesto != null) - { - decimal decimpuesto = 0; - decimal.TryParse(impuesto.TasaOCuota, out decimpuesto); - Row["PorcentajeRetISR"] = decimpuesto / 100; - Row["ImporteRetISR"] = impuesto.Importe; - sumaimpuesto -= impuesto.Importe; - } - else - { - Row["ImporteRetISR"] = 0; - Row["PorcentajeRetISR"] = 0; - } - impuesto = item.Impuestos.FirstOrDefault(x => x.Impuesto == "002" && x.Tipo == "Retencion"); - if (impuesto != null) - { - decimal decimpuesto = 0; - decimal.TryParse(impuesto.TasaOCuota, out decimpuesto); - Row["PorcentajeRetIVA"] = decimpuesto / 100; - Row["ImporteRetIVA"] = impuesto.Importe; - sumaimpuesto -= impuesto.Importe; - } - else - { - Row["ImporteRetIVA"] = 0; - Row["PorcentajeRetIVA"] = 0; - } - Row["Descuento"] = item.Descuento; - Row["TipoDescuento"] = "2"; - - //Row["Total"] = item.Importe - sumaimpuesto; - Row["Total"] = item.Importe / (1 + PorcentajeIVA); - Row["TotalImporte"] = item.Importe; - - Row["SATClaveProdServ"] = item.ClaveProdServ; - Row["SATClaveUM"] = item.ClaveUnidad; - - Row["EntregaDirecta"] = "-1"; - // Contratos - Row["CveContratoDetalle"] = -1; - Row["CveVentaDetalle"] = -1; - Row["CveMovimientoDetallePedido"] = -1; - Row["CveOrdenCompraDetalle"] = -1; - Row["CveVentaDetalleRemision"] = -1; - Row["CveVentaDetalleCotizacion"] = -1; - Row["CveVentaDetallePedido2"] = -1; - Row["CuentaPredial"] = item.CuentaPredial; - - TmpDT.Rows.Add(Row); - } - } - - - return TmpDT; - } - - - - protected void LnkAceptarDefault_Click(object sender, EventArgs e) - { - RegistraScript("$('#DModalDefaults').modal('hide');"); - registrarventa((GridViewRow)CurrentRow); - //foreach (GridViewRow gvrow in GVConciliacionemitidasSAT.Rows) - //{ - - // registrarventa(gvrow); - //} - } - - protected void BtnConsultar_Click(object sender, EventArgs e) - { - CargaRepConciliacionSatGET(); - } - - protected void GVConciliacionemitidasSAT_RowDataBound(object sender, GridViewRowEventArgs e) - { - if (e.Row.RowType == DataControlRowType.DataRow) - { - string navurl = ""; - if (e.Row.DBCampo("Tipo") == "1") - { - string RutaXml = e.Row.DBCampo("RutaXml"); - //if (RutaXml.IndexOf("Empresas")>0) - //{ - // RutaXml = RutaXml.Substring(RutaXml.IndexOf("Empresas")); - //} - navurl = string.Format("RepConciliacionEmitidosSat.aspx?op={0}", Extensiones.ModExtensiones.Encripta(e.Row.DataKey("RutaXml"))); - } - else - { - navurl = string.Format("/Compras/PopUpVerFactura.aspx?P={0}", Extensiones.ModExtensiones.Encripta(String.Format("OP=FactVta&CVEVENTA={0}&EXT={1}&SERIEFOLIO={2}&TIPODOCTO={3}", e.Row.DBCampo("CveVenta"), "XML", e.Row.DBCampo("SerieFolio"), e.Row.DBCampo("TipoDocto")))); - } - e.Row.FCHyperLink("HypXml").NavigateUrl = navurl; - } - //String.Format("/Compras/PopUpVerFactura.aspx?P={0}", Encripta(String.Format("OP=FactVta&CVEVENTA={0}&EXT={1}&SERIEFOLIO={2}&TIPODOCTO={3}", CveVenta, "XML", DbRowVenta("SerieFolio"), DbRowVenta("TipoDocto")))) - } - - protected void DdlClasificacion_SelectedIndexChanged(object sender, EventArgs e) - { - - int CveClasificacion = DdlClasificacion.SelectedValue.ToEntero(); - if (UsuarioActual.Empresa.Funcionalidad(141).ToString() == "1") - { - - DdlPS.setEsWebService(true); - DdlPS.ddlWS.Attributes.Add("data-cveclasificacion", CveClasificacion.ToString()); - DdlPS.ddlWS.Attributes.Add("data-pagina", "ventas/ventas"); - DdlPS.ddlWS.Attributes.Add("data-Estatus", "1"); - } - else - { - - DdlPS.setEsWebService(false); - DdlPS.ddl.DataSource = get_GlobalDTPSSimplificado(UsuarioActual.CveEmpresa, CveClasificacion: CveClasificacion, Estatus: 1, AplicaParaVenta: 1); - DdlPS.ddl.DataBind(); - } - UpModalDefaults.Update(); - } -} -namespace ADSistemaLibrary2.SatXml -{ - public class XmlSatCFDI - { - public XmlSatCFDI() - { - comprobante = new CFDIComprobante(); - emisor = new CFDIEmisor(); - receptor = new CFDIReceptor(); - complemento = new CFDIComplemento(); - cFDIRelacionados = new List(); - conceptos = new List(); - Impuestos = new List(); - } - public CFDIComprobante comprobante; - public CFDIEmisor emisor; - public CFDIReceptor receptor; - public CFDIComplemento complemento; - public List cFDIRelacionados; - public List conceptos; - public List Impuestos; - public List GetConceptosforpdf() - { - List lcon = new List(); - if (conceptos != null) - { - int _orden = 0; - foreach (CFDIConcepto item in conceptos) - { - _orden += 1; - CFDIConcepto_I con = new CFDIConcepto_I - { - tipo = 1, - orden = _orden, - ClaveProdServ = item.ClaveProdServ, - NoIdentificacion = item.NoIdentificacion, - Cantidad = item.Cantidad, - ClaveUnidad = item.ClaveUnidad, - Unidad = item.Unidad, - ValorUnitario = item.ValorUnitario, - Importe = item.Importe, - Descuento = item.Descuento, - NumeroPedimento = item.NumeroPedimento, - CuentaPredial = item.CuentaPredial, - Descripcion = item.Descripcion - }; - int index = 0; - foreach (CFDIConceptoImpuesto Imp in item.Impuestos) - { - index++; - if (index > 1) - { - lcon.Add(con); - con = new CFDIConcepto_I - { - tipo = 2, - orden = _orden, - }; - - } - - con.Impuesto = Imp.ImpuestoTexto; - con.Impuesto_Tipo = Imp.Tipo; - con.Impuesto_Base = Imp.Base; - con.Impuesto_TipoFactor = Imp.TipoFactor; - con.Impuesto_TasaOCuota = Imp.TasaOCuota; - con.Impuesto_Importe = Imp.Importe; - } - lcon.Add(con); - } - } - - return lcon; - } - - public static XmlSatCFDI readXML(string fileUrl) - { - XmlSatCFDI xmlCFDI = new XmlSatCFDI(); - bool canread = true; - //keys - string keyComprobante = "Comprobante"; - string keyCfdiRelacionados = "CfdiRelacionados"; - string keyEmisor = "Emisor"; - string keyReceptor = "Receptor"; - string keyConceptos = "Conceptos"; - string keyImpuestos = "Impuestos"; - string keyComplemento = "Complemento"; - //endkeys - string[] PrimerNivel = new string[] { keyCfdiRelacionados, keyEmisor, keyReceptor, keyConceptos, keyImpuestos, keyComplemento }; - //(canread = xtr.Read()) para evitar ciclos infinitos, todos los .Read() los guardo en la variable Canread y en los while reviso primero esta variable - if (File.Exists(fileUrl)) - { - XmlReaderSettings settings = new XmlReaderSettings(); - settings.ConformanceLevel = ConformanceLevel.Fragment; - settings.IgnoreWhitespace = true; - settings.IgnoreComments = true; - using (XmlReader xtr = XmlReader.Create(fileUrl, settings)) - { - - while ((canread = xtr.Read()) && !(xtr.NodeType == XmlNodeType.Element && xtr.Name.Replace("cfdi:","") == keyComprobante)) - { - //if (xtr.NodeType != XmlNodeType.Element) { while (xtr.Read() && xtr.NodeType != XmlNodeType.Element) { } } - } - if (xtr.NodeType == XmlNodeType.Element && xtr.Name.Replace("cfdi:", "") == keyComprobante) - { - int Nivel = xtr.Depth; - bool cont = xtr.MoveToFirstAttribute(); - while (cont) - { - - switch (xtr.Name.ToUpper()) - { - case "XMLNS:CFDI": xmlCFDI.comprobante.xmlns_cfdi = xtr.Value; break; - case "XMLNS:XSI": xmlCFDI.comprobante.xmlns_xsi = xtr.Value; break; - case "XSI:SCHEMALOCATION": xmlCFDI.comprobante.xsi_schemaLocation = xtr.Value; break; - case "VERSION": xmlCFDI.comprobante.Version = xtr.Value; break; - case "SERIE": xmlCFDI.comprobante.Serie = xtr.Value; break; - case "FOLIO": xmlCFDI.comprobante.Folio = xtr.Value; break; - case "FECHA": xmlCFDI.comprobante.Fecha = xtr.Value; break; - case "MONEDA": xmlCFDI.comprobante.Moneda = xtr.Value; break; - case "SUBTOTAL": decimal SubTotal = 0; decimal.TryParse(xtr.Value, out SubTotal); xmlCFDI.comprobante.SubTotal = SubTotal; break; - case "TOTAL": decimal Total = 0; decimal.TryParse(xtr.Value, out Total); xmlCFDI.comprobante.Total = Total; break; - case "DESCUENTO": decimal Descuento = 0; decimal.TryParse(xtr.Value, out Descuento); xmlCFDI.comprobante.Descuento = Descuento; break; - case "TIPOCAMBIO": decimal TipoCambio = 0; decimal.TryParse(xtr.Value, out TipoCambio); xmlCFDI.comprobante.TipoCambio = TipoCambio; break; - case "TIPODECOMPROBANTE": xmlCFDI.comprobante.TipoDeComprobante = xtr.Value; break; - case "FORMAPAGO": xmlCFDI.comprobante.FormaPago = xtr.Value; break; - case "FORMADEPAGO": xmlCFDI.comprobante.FormaPago = xtr.Value; break; - case "METODOPAGO": xmlCFDI.comprobante.MetodoPago = xtr.Value; break; - case "METODODEPAGO": xmlCFDI.comprobante.MetodoPago = xtr.Value; break; - case "CONDICIONESDEPAGO": xmlCFDI.comprobante.CondicionesDePago = xtr.Value; break; - case "LUGAREXPEDICION": xmlCFDI.comprobante.LugarExpedicion = xtr.Value; break; - case "CONFIRMACION": xmlCFDI.comprobante.Confirmacion = xtr.Value; break; - case "NOCERTIFICADO": xmlCFDI.comprobante.NoCertificado = xtr.Value; break; - case "SELLO": xmlCFDI.comprobante.Sello = xtr.Value; break; - case "CERTIFICADO": xmlCFDI.comprobante.Certificado = xtr.Value; break; - } - cont = xtr.MoveToNextAttribute(); - } - cont = xtr.MoveToFirstAttribute(); - while ((canread = xtr.Read()) && xtr.NodeType != XmlNodeType.Element) { } - while (canread && xtr.Depth > Nivel) - { - if (PrimerNivel.Contains(xtr.Name.Replace("cfdi:", ""))) - { - if (xtr.NodeType == XmlNodeType.Element && xtr.Name.Replace("cfdi:", "") == keyCfdiRelacionados) - { - int cDepth = xtr.Depth; - - string TipoRelacion = null; - cont = xtr.MoveToFirstAttribute(); - while (cont) - { - switch (xtr.Name.ToUpper()) - { - case "TIPORELACION": TipoRelacion = xtr.Value; break; - } - cont = xtr.MoveToNextAttribute(); - } - while ((canread = xtr.Read()) && xtr.NodeType != XmlNodeType.Element) { } - while (canread && xtr.Depth > cDepth) - { - if (xtr.Name.Replace("cfdi:", "") == "CfdiRelacionado") - { - CFDIRelacionado cfdir = new CFDIRelacionado(); - cfdir.TipoRelacion = TipoRelacion; - cfdir.UUID = xtr.GetAttribute("UUID"); - xmlCFDI.cFDIRelacionados.Add(cfdir); - } - while ((canread = xtr.Read()) && xtr.NodeType != XmlNodeType.Element) { } - } - - } - if (xtr.NodeType == XmlNodeType.Element && xtr.Name.Replace("cfdi:", "") == keyEmisor) - { - - - int curentNivel = xtr.Depth; - cont = xtr.MoveToFirstAttribute(); - while (cont) - { - switch (xtr.Name.ToUpper()) - { - case "REGIMENFISCAL": xmlCFDI.emisor.RegimenFiscal = xtr.Value; break; - case "NOMBRE": xmlCFDI.emisor.Nombre = xtr.Value; break; - case "RFC": xmlCFDI.emisor.Rfc = xtr.Value; break; - } - cont = xtr.MoveToNextAttribute(); - } - while ((canread = xtr.Read()) && !(xtr.NodeType == XmlNodeType.Element && curentNivel >= xtr.Depth)) { }//continua hasta que no tenga nodos y (el nodo sea tipo elemnto y ete en el mismo nivel) - } - if (xtr.NodeType == XmlNodeType.Element && xtr.Name.Replace("cfdi:", "") == keyReceptor) - { - int curentNivel = xtr.Depth; - cont = xtr.MoveToFirstAttribute(); - while (cont) - { - switch (xtr.Name.ToUpper()) - { - case "RFC": xmlCFDI.receptor.Rfc = xtr.Value; break; - case "NOMBRE": xmlCFDI.receptor.Nombre = xtr.Value; break; - case "RESIDENCIAFISCAL": xmlCFDI.receptor.ResidenciaFiscal = xtr.Value; break; - case "NUMREGIDTRIB": xmlCFDI.receptor.NumRegIdTrib = xtr.Value; break; - case "USOCFDI": xmlCFDI.receptor.UsoCFDI = xtr.Value; break; - } - cont = xtr.MoveToNextAttribute(); - } - - while ((canread = xtr.Read()) && !(xtr.NodeType == XmlNodeType.Element && curentNivel >= xtr.Depth)) { }//continua hasta que no tenga nodos y (el nodo sea tipo elemnto y ete en el mismo nivel) - } - if (xtr.NodeType == XmlNodeType.Element && xtr.Name.Replace("cfdi:", "") == keyConceptos) - { - int cDepth = xtr.Depth; - while ((canread = xtr.Read()) && xtr.NodeType != XmlNodeType.Element) { } - while (canread && xtr.Depth > cDepth) - { - if (xtr.Name.Replace("cfdi:", "") == "Concepto") - { - int cDepthb = xtr.Depth; - CFDIConcepto concepto = new CFDIConcepto(); - - cont = xtr.MoveToFirstAttribute(); - while (cont) - { - switch (xtr.Name.ToUpper()) - { - case "CLAVEPRODSERV": concepto.ClaveProdServ = xtr.Value; break; - case "NOIDENTIFICACION": concepto.NoIdentificacion = xtr.Value; break; - case "CANTIDAD": concepto.Cantidad = xtr.Value; break; - case "CLAVEUNIDAD": concepto.ClaveUnidad = xtr.Value; break; - case "UNIDAD": concepto.Unidad = xtr.Value; break; - case "VALORUNITARIO": decimal ValorUnitario = 0; decimal.TryParse(xtr.Value, out ValorUnitario); concepto.ValorUnitario = ValorUnitario; ; break; - case "IMPORTE": decimal Importe = 0; decimal.TryParse(xtr.Value, out Importe); concepto.Importe = Importe; ; break; - case "DESCUENTO": decimal DDescuento = 0; decimal.TryParse(xtr.Value, out DDescuento); concepto.Descuento = DDescuento; ; break; - case "DESCRIPCION": concepto.Descripcion = xtr.Value; break; - } - cont = xtr.MoveToNextAttribute(); - } - xtr.MoveToFirstAttribute(); - while ((canread = xtr.Read()) && xtr.NodeType != XmlNodeType.Element) { } - while (canread && xtr.Depth > cDepthb) - { - if (xtr.NodeType == XmlNodeType.Element && xtr.Name.Replace("cfdi:", "") == "Impuestos") - { - int cDepthc = xtr.Depth; - while ((canread = xtr.Read()) && xtr.NodeType != XmlNodeType.Element) { } - while (canread && xtr.Depth > cDepthc) - { - if (xtr.Name.Replace("cfdi:", "") == "Traslado" || xtr.Name.Replace("cfdi:", "") == "Retencion") - { - CFDIConceptoImpuesto impuesto = new CFDIConceptoImpuesto(); - impuesto.Impuesto = xtr.GetAttribute("Impuesto"); - impuesto.Tipo = xtr.LocalName; - decimal Base = 0; - decimal.TryParse(xtr.GetAttribute("Base"), out Base); - impuesto.Base = Base; - impuesto.TipoFactor = xtr.GetAttribute("TipoFactor"); - decimal tasaOCuota = 0; - decimal.TryParse(xtr.GetAttribute("TasaOCuota"), out tasaOCuota); - impuesto.TasaOCuota = impuesto.TipoFactor == "Tasa" ? (tasaOCuota * 100).ToString("N4") : xtr.GetAttribute("TasaOCuota"); - decimal ImImporte = 0; - decimal.TryParse(xtr.GetAttribute("Importe"), out ImImporte); - impuesto.Importe = ImImporte; - - concepto.Impuestos.Add(impuesto); - } - while ((canread = xtr.Read()) && xtr.NodeType != XmlNodeType.Element) { } - - } - } - else - { - bool rednew = true; - if (xtr.NodeType == XmlNodeType.Element && xtr.Name.Replace("cfdi:", "") == "InformacionAduanera") - { - concepto.NumeroPedimento = xtr.GetAttribute("NumeroPedimento"); - rednew = false; while ((canread = xtr.Read()) && xtr.NodeType != XmlNodeType.Element) { } - } - if (xtr.NodeType == XmlNodeType.Element && xtr.Name.Replace("cfdi:", "") == "CuentaPredial") - { - concepto.CuentaPredial = xtr.GetAttribute("CuentaPredial"); - rednew = false; while ((canread = xtr.Read()) && xtr.NodeType != XmlNodeType.Element) { } - } - if (rednew) { while ((canread = xtr.Read()) && xtr.NodeType != XmlNodeType.Element) { } } - - } - } - - xmlCFDI.conceptos.Add(concepto); - } - } - } - if (xtr.NodeType == XmlNodeType.Element && xtr.Name.Replace("cfdi:", "") == keyImpuestos) - { - int cDepth = xtr.Depth; - - while ((canread = xtr.Read()) && xtr.NodeType != XmlNodeType.Element) { } - while (canread && xtr.Depth > cDepth) - { - CFDIImpuesto impuest = new CFDIImpuesto(); - if (xtr.Name.Replace("cfdi:", "") == "Traslado" || xtr.Name.Replace("cfdi:", "") == "Retencion" && xmlCFDI.comprobante.Version != null) - { - impuest.Tipo = xtr.LocalName == "Traslado" ? "Traslados" : (xtr.LocalName == "Retencion" ? "Retenciones" : ""); - impuest.Impuesto = xmlCFDI.comprobante.Version == "3.3" ? xtr.GetAttribute("Impuesto") : xtr.GetAttribute("impuesto"); - impuest.TipoFactor = xtr.GetAttribute("TipoFactor"); - impuest.TasaOCuota = xmlCFDI.comprobante.Version == "3.3" ? xtr.GetAttribute("TasaOCuota") : xtr.GetAttribute("tasa"); - decimal ImImporte = 0; - decimal.TryParse((xmlCFDI.comprobante.Version == "3.3" ? xtr.GetAttribute("Importe") : xtr.GetAttribute("importe")), out ImImporte); - impuest.Importe = ImImporte; - xmlCFDI.Impuestos.Add(impuest); - } - while ((canread = xtr.Read()) && xtr.NodeType != XmlNodeType.Element) { } - - } - } - if (xtr.NodeType == XmlNodeType.Element && xtr.Name.Replace("cfdi:", "") == keyComplemento) - { - int cDepth = xtr.Depth; - while ((canread = xtr.Read()) && xtr.NodeType != XmlNodeType.Element) { } - { - - - - - } - - - while (canread && xtr.Depth > cDepth) - { - if (xtr.NodeType == XmlNodeType.Element && xtr.LocalName == "TimbreFiscalDigital" && xmlCFDI.comprobante.Version != null) - { - xmlCFDI.complemento.xmlns_tfd = xtr.GetAttribute("xmlns:tfd"); - xmlCFDI.complemento.xsi_schemaLocation = xtr.GetAttribute("xsi:schemaLocation"); - xmlCFDI.complemento.Version = xtr.GetAttribute("Version"); - xmlCFDI.complemento.UUID = xtr.GetAttribute("UUID"); - xmlCFDI.complemento.FechaTimbrado = xtr.GetAttribute("FechaTimbrado"); - xmlCFDI.complemento.RfcProvCertif = xtr.GetAttribute("RfcProvCertif"); - xmlCFDI.complemento.SelloCFD = xmlCFDI.comprobante.Version == "3.3" ? xtr.GetAttribute("SelloCFD") : xtr.GetAttribute("selloCFD"); - xmlCFDI.complemento.NoCertificadoSAT = xmlCFDI.comprobante.Version == "3.3" ? xtr.GetAttribute("NoCertificadoSAT") : xtr.GetAttribute("noCertificadoSAT"); - xmlCFDI.complemento.SelloSAT = xmlCFDI.comprobante.Version == "3.3" ? xtr.GetAttribute("SelloSAT") : xtr.GetAttribute("selloSAT"); - - } else if (xtr.NodeType == XmlNodeType.Element && xtr.LocalName.ToUpper() == "NOMINA" && xmlCFDI.comprobante.Version != null) - { - xmlCFDI.complemento.nomina12 = new CFDINomina(); - //Version="1.2" TipoNomina="E" FechaPago="2021-12-08" - //="2021-12-08" ="2021-12-08" - //="1" ="5026.31" ="254.34" - cont = xtr.MoveToFirstAttribute(); - while (cont) - { - switch (xtr.Name.ToUpper()) - { - case "FECHAPAGO": xmlCFDI.complemento.nomina12.FechaPago = xtr.Value.ToDateTime(); break; - case "FECHAINICIALPAGO": xmlCFDI.complemento.nomina12.FechaInicio = xtr.Value; break; - case "FECHAFINALPAGO": xmlCFDI.complemento.nomina12.FechaFin = xtr.Value; break; - case "NUMDIASPAGADOS": xmlCFDI.complemento.nomina12.NumDiasPagados= xtr.Value.ToEntero(); break; - case "TIPONOMINA": xmlCFDI.complemento.nomina12.TipoNomina = xtr.Value; break; - case "Version": xmlCFDI.complemento.nomina12.Version = xtr.Value; break; - } - cont = xtr.MoveToNextAttribute(); - } - xtr.MoveToFirstAttribute(); - } - else if (xtr.NodeType == XmlNodeType.Element && xtr.LocalName == "Pagos" && xmlCFDI.comprobante.Version != null) - { - while ((canread = xtr.Read()) && xtr.NodeType != XmlNodeType.Element) { } - xmlCFDI.complemento.Pagos = new CFDIPago(); - int depthpagos = xtr.Depth; - bool conts = xtr.MoveToFirstAttribute(); - while (conts) - { - - decimal Base = 0; - switch (xtr.Name.ToUpper()) - { - case "FECHAPAGO": xmlCFDI.complemento.Pagos.FechaPago = xtr.Value; break; - case "FORMADEPAGOP": xmlCFDI.complemento.Pagos.FormaDePagoP = xtr.Value; break; - case "FORMADEPAGOPTEXT": xmlCFDI.complemento.Pagos.FormaDePagoPText = xtr.Value; break; - case "MONEDAP": xmlCFDI.complemento.Pagos.MonedaP = xtr.Value; break; - case "MONTO": decimal.TryParse(xtr.Value, out Base); xmlCFDI.complemento.Pagos.Monto = Base; break; - case "TIPOCAMBIOP": decimal.TryParse(xtr.Value, out Base); xmlCFDI.complemento.Pagos.TipoCambioP = Base; break; - case "NUMOPERACION": xmlCFDI.complemento.Pagos.NumOperacion = xtr.Value; break; - case "NOMBANCOORDEXT": xmlCFDI.complemento.Pagos.NomBancoOrdExt = xtr.Value; break; - case "RFCEMISORCTAORD": xmlCFDI.complemento.Pagos.RfcEmisorCtaOrd = xtr.Value; break; - case "CTAORDENANTE": xmlCFDI.complemento.Pagos.CtaOrdenante = xtr.Value; break; - case "RFCEMISORCTABEN": xmlCFDI.complemento.Pagos.RfcEmisorCtaBen = xtr.Value; break; - case "CTABENEFICIARIO": xmlCFDI.complemento.Pagos.CtaBeneficiario = xtr.Value; break; - } - conts = xtr.MoveToNextAttribute(); - } - conts = xtr.MoveToFirstAttribute(); - while ((canread = xtr.Read()) && xtr.NodeType != XmlNodeType.Element) { } - while (canread && xtr.Depth > depthpagos) - { - CFDIPagoDoctoRelacionado objpago = new CFDIPagoDoctoRelacionado(); - conts = xtr.MoveToFirstAttribute(); - while (conts) - { - - decimal Basep = 0; - switch (xtr.Name.ToUpper()) - { - case "IDDOCUMENTO": objpago.IdDocumento = xtr.Value; break; - case "SERIE": objpago.Serie = xtr.Value; break; - case "FOLIO": objpago.Folio = xtr.Value; break; - case "MONEDADR": objpago.MonedaDR = xtr.Value; break; - case "METODODEPAGODR": objpago.MetodoDePagoDR = xtr.Value; break; - case "NUMPARCIALIDAD": objpago.NumParcialidad = xtr.Value; break; - case "IMPSALDOANT": decimal.TryParse(xtr.Value, out Basep); objpago.ImpSaldoAnt = Basep; break; - case "IMPPAGADO": decimal.TryParse(xtr.Value, out Basep); objpago.ImpPagado = Basep; break; - case "IMPSALDOINSOLUTO": decimal.TryParse(xtr.Value, out Basep); objpago.ImpSaldoInsoluto = Basep; break; - - } - conts = xtr.MoveToNextAttribute(); - } - conts = xtr.MoveToFirstAttribute(); - xmlCFDI.complemento.Pagos.doctosRelacionados.Add(objpago); - while ((canread = xtr.Read()) && xtr.NodeType != XmlNodeType.Element) { } - } - } - else - { - while ((canread = xtr.Read()) && xtr.NodeType != XmlNodeType.Element) { } - - } - } - } - } - else - { - //si no entro en ninguna de los anteriores no se debe ciclar - while ((canread = xtr.Read()) && xtr.NodeType != XmlNodeType.Element) { } - } - } - } - - } - } - if (xmlCFDI.comprobante.Version == "3.3" || xmlCFDI.comprobante.Version == "3.2") - { - return xmlCFDI; - } - else - { - return null; - } - } - - public class utilValores - { - public utilValores(string nombre, string valor) - { - Nombre = nombre; - Valor = valor; - } - public string Nombre { get; set; } - public string Valor { get; set; } - } - public class utilImage - { - public utilImage(byte[] imagenByte) - { - ImagenByte = imagenByte; - } - public byte[] ImagenByte { get; set; } - } - } - - public class CFDIComplemento - { - - public string xmlns_tfd { get; set; } - public string xsi_schemaLocation { get; set; } - public string Version { get; set; } - public string UUID { get; set; } - public string FechaTimbrado { get; set; } - public string RfcProvCertif { get; set; } - public string SelloCFD { get; set; } - public string NoCertificadoSAT { get; set; } - public string SelloSAT { get; set; } - public CFDIPago Pagos { get; set; } - public CFDINomina nomina12 { get; set; } - public string CadenaOriginal - { - get - { - return string.Format("||{0}|{1}|{2}|{3}|{4}|{5}||", Version, UUID, FechaTimbrado, RfcProvCertif, SelloCFD, NoCertificadoSAT); - } - } - - } - public class CFDIComprobante - { - public string xmlns_cfdi { get; set; } - public string xmlns_xsi { get; set; } - public string xsi_schemaLocation { get; set; } - public string Version { get; set; } - public string Serie { get; set; } - public string Folio { get; set; } - public string Fecha { get; set; } - public string Moneda { get; set; } - public decimal SubTotal { get; set; } - public decimal Total { get; set; } - public decimal Descuento { get; set; } - public decimal TipoCambio { get; set; } - public string TipoDeComprobante { get; set; } - - public string TipoDeComprobanteSIG - { - get - { - string retorno = ""; - if (Version == "3.3") - { - switch (TipoDeComprobante) - { - case "I": - retorno = "Ing"; - break; - case "E": - retorno = "Egs"; - break; - case "P": - retorno = "PA"; - break; - //case "T": - // retorno = "Traslado"; - // break; - //case "N": - // retorno = "Nómina"; - // break; - - default: - break; - } - } - else if (Version == "3.2") - { - switch (TipoDeComprobante) - { - case "ingreso": - retorno = "Ing"; - break; - case "egreso": - retorno = "Egs"; - break; - case "P": - retorno = "PA"; - break; - //case "T": - // retorno = "Traslado"; - // break; - //case "N": - // retorno = "Nómina"; - // break; - - default: - break; - } - } - else { retorno = TipoDeComprobante; } - return retorno; - } - } - public string TipoDeComprobanteTexto - { - get - { - string retorno = ""; - - if (Version == "3.3") - { - switch (TipoDeComprobante) - { - case "I": - retorno = "Ingreso"; - break; - case "E": - retorno = "Egreso"; - break; - case "P": - retorno = "Pago"; - break; - case "T": - retorno = "Traslado"; - break; - case "N": - retorno = "Nómina"; - break; - - default: - retorno = TipoDeComprobante; - break; - } - } - else if (Version == "3.2") - { - switch (TipoDeComprobante) - { - case "ingreso": - retorno = "Ing"; - break; - case "egreso": - retorno = "Egs"; - break; - case "P": - retorno = "PA"; - break; - //case "T": - // retorno = "Traslado"; - // break; - //case "N": - // retorno = "Nómina"; - // break; - - default: - retorno = TipoDeComprobante; - break; - } - } - else { retorno = TipoDeComprobante; } - return retorno; - } - } - public string FormaPago { get; set; } - - public string FormaPagoTexto - { - get - { - string retorno = ""; - - switch (FormaPago) - { - case "01": retorno = "Efectivo"; break; - case "02": retorno = "Cheque nominativo"; break; - case "03": retorno = "Transferencia electrónica de fondos"; break; - case "04": retorno = "Tarjeta de crédito"; break; - case "05": retorno = "Monedero electrónico"; break; - case "06": retorno = "Dinero electrónico"; break; - case "08": retorno = "Vales de despensa"; break; - case "12": retorno = "Dación en pago"; break; - case "13": retorno = "Pago por subrogación"; break; - case "14": retorno = "Pago por consignación"; break; - case "15": retorno = "Condonación"; break; - case "17": retorno = "Compensación"; break; - case "23": retorno = "Novación"; break; - case "24": retorno = "Confusión"; break; - case "25": retorno = "Remisión de deuda"; break; - case "26": retorno = "Prescripción o caducidad"; break; - case "27": retorno = "A satisfacción del acreedor"; break; - case "28": retorno = "Tarjeta de débito"; break; - case "29": retorno = "Tarjeta de servicios"; break; - case "30": retorno = "Aplicación de anticipos"; break; - case "31": retorno = "Intermediario pagos"; break; - case "99": retorno = "Por definir"; break; - default: retorno = FormaPago; break; - } - return retorno; - } - } - public string MetodoPago { get; set; } - public string MetodoPagoTexto - { - get - { - string retorno = ""; - - switch (MetodoPago) - { - case "PUE": retorno = "Pago en una sola exhibición"; break; - case "PPD": retorno = "Pago en parcialidades o diferido"; break; - default: retorno = MetodoPago; break; - } - return retorno; - } - } - public string CondicionesDePago { get; set; } - public string LugarExpedicion { get; set; } - public string Confirmacion { get; set; } - public string NoCertificado { get; set; } - public string Sello { get; set; } - public string Certificado { get; set; } - - } - - public class CFDIConcepto - { - public CFDIConcepto() - { - Impuestos = new List(); - } - public string ClaveProdServ { get; set; } - public string NoIdentificacion { get; set; } - public string Cantidad { get; set; } - public string ClaveUnidad { get; set; } - public string Unidad { get; set; } - public decimal ValorUnitario { get; set; } - public decimal Importe { get; set; } - public decimal Descuento { get; set; } - public string NumeroPedimento { get; set; } - public string CuentaPredial { get; set; } - public string Descripcion { get; set; } - public List Impuestos { get; set; } - } - - public class CFDIConcepto_I - { - public int tipo { get; set; } - public int orden { get; set; } - public string ClaveProdServ { get; set; } - public string NoIdentificacion { get; set; } - public string Cantidad { get; set; } - public string ClaveUnidad { get; set; } - public string Unidad { get; set; } - public decimal ValorUnitario { get; set; } - public decimal Importe { get; set; } - public decimal Descuento { get; set; } - public string NumeroPedimento { get; set; } - public string CuentaPredial { get; set; } - public string Descripcion { get; set; } - - - public string Impuesto { get; set; } - - public string Impuesto_Tipo { get; set; } - public decimal Impuesto_Base { get; set; } - public string Impuesto_TipoFactor { get; set; } - public string Impuesto_TasaOCuota { get; set; } - public decimal Impuesto_Importe { get; set; } - } - - public class CFDIConceptoImpuesto - { - public string Impuesto { get; set; } - public string ImpuestoTexto - { - get - { - string retorno = ""; - - switch (Impuesto) - { - case "001": retorno = "ISR"; break; - case "002": retorno = "IVA"; break; - case "003": retorno = "IEPS"; break; - } - return retorno; - } - } - public string Tipo { get; set; } - public decimal Base { get; set; } - public string TipoFactor { get; set; } - public string TasaOCuota { get; set; } - public decimal Importe { get; set; } - - } - - public class CFDIEmisor - { - public string RegimenFiscal { get; set; } - - public string RegimenFiscalTexto - { - get - { - string retorno = ""; - - switch (RegimenFiscal) - { - case "601": retorno = "General de Ley Personas Morales"; break; - case "603": retorno = "Personas Morales con Fines no Lucrativos"; break; - case "605": retorno = "Sueldos y Salarios e Ingresos Asimilados a Salarios"; break; - case "606": retorno = "Arrendamiento"; break; - case "608": retorno = "Demás ingresos"; break; - case "609": retorno = "Consolidación"; break; - case "610": retorno = "Residentes en el Extranjero sin Establecimiento Permanente en México"; break; - case "611": retorno = "Ingresos por Dividendos (socios y accionistas)"; break; - case "612": retorno = "Personas Físicas con Actividades Empresariales y Profesionales"; break; - case "614": retorno = "Ingresos por intereses"; break; - case "616": retorno = "Sin obligaciones fiscales"; break; - case "620": retorno = "Sociedades Cooperativas de Producción que optan por diferir sus ingresos"; break; - case "621": retorno = "Incorporación Fiscal"; break; - case "622": retorno = "Actividades Agrícolas, Ganaderas, Silvícolas y Pesqueras"; break; - case "623": retorno = "Opcional para Grupos de Sociedades"; break; - case "624": retorno = "Coordinados"; break; - case "628": retorno = "Hidrocarburos"; break; - case "607": retorno = "Régimen de Enajenación o Adquisición de Bienes"; break; - case "629": retorno = "De los Regímenes Fiscales Preferentes y de las Empresas Multinacionales"; break; - case "630": retorno = "Enajenación de acciones en bolsa de valores"; break; - case "615": retorno = "Régimen de los ingresos por obtención de premios"; break; - - } - return retorno; - } - } - public string Nombre { get; set; } - public string Rfc { get; set; } - - } - - public class CFDIImpuesto - { - public string Tipo { get; set; } - public string Impuesto { get; set; } - public string ImpuestoTexto - { - get - { - string retorno = ""; - - switch (Impuesto) - { - case "001": retorno = "ISR"; break; - case "002": retorno = "IVA"; break; - case "003": retorno = "IEPS"; break; - } - return retorno; - } - } - public string TipoFactor { get; set; } - public string TasaOCuota { get; set; } - public decimal Importe { get; set; } - } - - public class CFDIPago - { - public CFDIPago() - { - doctosRelacionados = new List(); - } - public string FechaPago { get; set; } - public string FormaDePagoP { get; set; } - public string FormaDePagoPText { get; set; } - public string MonedaP { get; set; } - public decimal Monto { get; set; } - public decimal TipoCambioP { get; set; } - public string NumOperacion { get; set; } - public string NomBancoOrdExt { get; set; } - public string RfcEmisorCtaOrd { get; set; } - public string CtaOrdenante { get; set; } - public string RfcEmisorCtaBen { get; set; } - public string CtaBeneficiario { get; set; } - public List doctosRelacionados { get; set; } - } - - public class CFDIPagoDoctoRelacionado - { - public string IdDocumento { get; set; } - public string Serie { get; set; } - public string Folio { get; set; } - public string MonedaDR { get; set; } - public string MetodoDePagoDR { get; set; } - public string NumParcialidad { get; set; } - public decimal ImpSaldoAnt { get; set; } - public decimal ImpPagado { get; set; } - public decimal ImpSaldoInsoluto { get; set; } - } - - public class CFDIReceptor - { - public string Rfc { get; set; } - public string Nombre { get; set; } - public string ResidenciaFiscal { get; set; } - public string NumRegIdTrib { get; set; } - public string UsoCFDI { get; set; } - public string UsoCFDITexto - { - get - { - string retorno = "N/A"; - - switch (UsoCFDI) - { - case "G01": - retorno = "Adquisición de mercancías"; - break; - case "G02": - retorno = "Devoluciones, descuentos o bonificaciones"; - break; - case "G03": - retorno = "Gastos en general"; - break; - case "I01": - retorno = "Construcciones"; - break; - case "I02": - retorno = "Mobiliario y equipo de oficina por inversiones"; - break; - case "I03": - retorno = "Equipo de transporte"; - break; - case "I04": - retorno = "Equipo de cómputo y accesorios"; - break; - case "I05": - retorno = "Dados, troqueles, moldes, matrices y herramental"; - break; - case "I06": - retorno = "Comunicaciones telefónicas"; - break; - case "I07": - retorno = "Comunicaciones satelitales"; - break; - case "I08": - retorno = "Otra maquinaria y equipo"; - break; - case "D01": - retorno = "Honorarios médicos, dentales y gastos hospitalarios."; - break; - case "D02": - retorno = "Gastos médicos por incapacidad o discapacidad"; - break; - case "D03": - retorno = "Gastos funerales."; - break; - case "D04": - retorno = "Donativos."; - break; - case "D05": - retorno = "Intereses reales efectivamente pagados por créditos hipotecarios (casa habitación)."; - break; - case "D06": - retorno = "Aportaciones voluntarias al SAR."; - break; - case "D07": - retorno = "Primas por seguros de gastos médicos."; - break; - case "D08": - retorno = "Gastos de transportación escolar obligatoria."; - break; - case "D09": - retorno = "Depósitos en cuentas para el ahorro, primas que tengan como base planes de pensiones."; - break; - case "D10": - retorno = "Pagos por servicios educativos (colegiaturas)"; - break; - case "P01": - retorno = "Por definir"; - break; - - default: - break; - } - return retorno; - } - } - - } - - public class CFDIRelacionado - { - public string TipoRelacion { get; set; } - public string TipoRelacionTexto - { - - get - { - string retorno; - - switch (TipoRelacion) - { - case "01": retorno = "Nota de crédito de los documentos relacionados"; break; - case "02": retorno = "Nota de débito de los documentos relacionados"; break; - case "03": retorno = "Devolución de mercancía sobre facturas o traslados previos"; break; - case "04": retorno = "Sustitución de los CFDI previos"; break; - case "05": retorno = "Traslados de mercancias facturados previamente"; break; - case "06": retorno = "Factura generada por los traslados previos"; break; - case "07": retorno = "CFDI por aplicación de anticipo"; break; - default: - retorno = "Por definir"; - break; - } - return retorno; - } - } - public string UUID { get; set; } - - } -} \ No newline at end of file diff --git a/Ventas/RepLineasAdicionales.aspx b/Ventas/RepLineasAdicionales.aspx index 7927edb15..4a65fdc2b 100644 --- a/Ventas/RepLineasAdicionales.aspx +++ b/Ventas/RepLineasAdicionales.aspx @@ -129,7 +129,7 @@ - + - - + <%----%> + + + + @@ -156,7 +159,7 @@
-
diff --git a/Ventas/RepLineasAdicionales.aspx.cs b/Ventas/RepLineasAdicionales.aspx.cs index 9595fcc64..f6266c005 100644 --- a/Ventas/RepLineasAdicionales.aspx.cs +++ b/Ventas/RepLineasAdicionales.aspx.cs @@ -65,7 +65,7 @@ public partial class Ventas_RepLineasAdicionales : ClsPaginas { DVProveedor1.Visible = true; DVProveedor2.Visible = true; - GvLineasAdicionales.Columns[8].Visible = true; + GvLineasAdicionales.Columns[10].Visible = true; TipoLinea = 2; LtlEncabezado.Text = "Reporte PO"; } @@ -221,7 +221,7 @@ public partial class Ventas_RepLineasAdicionales : ClsPaginas if (!errorCargaComprobante) { ClsVentas objVentas = new ClsVentas(); - if (!objVentas.UpdateLineasAdicionales(CveLineaAdicional, "-1", -1, -1, -1, -1, -1, MinFecha, 100, -1, -1, UsuarioActual.CveEmpresa, Comprobante: $@"{CveLineaAdicional}{fiNuevo.Extension}")) + if (!objVentas.UpdateLineasAdicionales(CveLineaAdicional, "-1", -1, -1, -1, -1, -1, MinFecha, 100, -1, UsuarioActual.CveEmpresa, Comprobante: $@"{CveLineaAdicional}{fiNuevo.Extension}")) { errorCargaComprobante = true; } @@ -248,11 +248,13 @@ public partial class Ventas_RepLineasAdicionales : ClsPaginas { GridViewRow GvRow = (GridViewRow)((LinkButton)sender).NamingContainer; int CveLineaAdicionalActualzarEstatus = GvRow.DataKey("CveLineaAdicional").ToString().ToEntero(); + int CveVenta = GvRow.DataKey("CveVenta").ToString().ToEntero(); + bool errorCambioEstatus = false; ClsVentas objVentas = new ClsVentas(); - if (!objVentas.UpdateLineasAdicionales(CveLineaAdicionalActualzarEstatus, "-1", -1, -1, -1, -1, -1, MinFecha, 100, -1, 3, UsuarioActual.CveEmpresa)) + if (!objVentas.UpdateLineasAdicionales(CveLineaAdicionalActualzarEstatus, "-1", -1, -1, -1, -1, -1, MinFecha, 100, -1, UsuarioActual.CveEmpresa,CveVenta:CveVenta,CveLineaAdicionalEstatus:2)) { errorCambioEstatus = true; } @@ -278,12 +280,12 @@ public partial class Ventas_RepLineasAdicionales : ClsPaginas { if(e.Row.RowType == DataControlRowType.DataRow) { - if(e.Row.DataKey("CveEstatus").ToEntero().Contiene(2)) + if(e.Row.DataKey("CveLineaAdicionalEstatus").ToEntero().Contiene(1) && e.Row.DataKey("CveVenta").ToEntero() > 0) { e.Row.FCLinkButton("LnkCambiarEstatus").Visible = true; } - if (e.Row.DataKey("CveEstatus").ToEntero() == 3) + if (e.Row.DataKey("CveLineaAdicionalEstatus").ToEntero() == 2) { e.Row.FCLinkButton("LnkCargarComprobante").Visible = false; } diff --git a/Ventas/Ventas.aspx b/Ventas/Ventas.aspx index 180aa01e7..e2f342c52 100644 --- a/Ventas/Ventas.aspx +++ b/Ventas/Ventas.aspx @@ -713,6 +713,15 @@ + + Linea Adicional: + + + + + + + @@ -2406,7 +2415,8 @@ - + +
@@ -2417,12 +2427,12 @@
-
- Emitir + Emitir +
@@ -2431,8 +2441,8 @@
- - <%--
+ + <%--
@@ -3443,17 +3453,7 @@
- - - - - +
Linea Adicional: - - - - - -
Forma de entrega: @@ -7825,7 +7825,7 @@
- <%-- --%> + <%-- --%>
diff --git a/Ventas/Ventas.aspx.vb b/Ventas/Ventas.aspx.vb index 31832ce40..96797b397 100644 --- a/Ventas/Ventas.aspx.vb +++ b/Ventas/Ventas.aspx.vb @@ -2249,12 +2249,12 @@ Partial Class Ventas End Set End Property - Private Property CveClasificacionLineaAdicional As Integer + Private Property CveCategoriaLineaAdicional As Integer Get - Return IfNull(ViewState("CveClasificacionLineaAdicional"), "-1", ViewState("CveClasificacionLineaAdicional")).ToString().ToEntero() + Return IfNull(ViewState("CveCategoriaLineaAdicional"), "-1", ViewState("CveCategoriaLineaAdicional")).ToString().ToEntero() End Get Set(value As Integer) - ViewState("CveClasificacionLineaAdicional") = value + ViewState("CveCategoriaLineaAdicional") = value End Set End Property @@ -3173,6 +3173,7 @@ Partial Class Ventas 'TabE.Visible = False LnkOCs.Visible = False GvPS.Columns(8).Visible = False + DdlSubProyecto.Visible = False TrEdit.Visible = True ThProyecto.Visible = False @@ -3194,6 +3195,7 @@ Partial Class Ventas TabE.Visible = False LnkOCs.Visible = False GvPS.Columns(8).Visible = False + DdlSubProyecto.Visible = False TrEdit.Visible = False ThProyecto.Visible = False @@ -8844,16 +8846,32 @@ Partial Class Ventas 'VALIDAR LINEAS ADICIONALES If UsuarioActual.Empresa.Funcionalidad(705) = "1" AndAlso DdlLineaAdicional.SelectedValue.ToEntero() > 0 Then - 'VERIFICA QUE LA CLASIFICACION DE LOS PRODUCTOS DEBE SER LA MISMA DE LA LINEA ADICIONAL - If TmpDT IsNot Nothing AndAlso Me.CveClasificacionLineaAdicional > 0 Then - For Each Row As DataRow In TmpDT.FiltraParametros("", DistinctColumns:={"CveClasificacion", "Clasificacion"}).Rows - If Me.CveClasificacionLineaAdicional <> Row("CveClasificacion").ToString().ToEntero() Then - Alert($"La clasificación '{Row("Clasificacion")}' no pertenece a la linea adicional.", TipoMensaje.MsgAdvertencia) + 'VERIFICA QUE LA CATEGORIA DE LOS PRODUCTOS DEBE SER LA MISMA DE LA LINEA ADICIONAL + If TmpDT IsNot Nothing AndAlso Me.CveCategoriaLineaAdicional > 0 Then + For Each Row As DataRow In TmpDT.FiltraParametros("", DistinctColumns:={"CveClasificacion"}).Rows + Dim RowClasificacion = GlobalDTClasificaciones(UsuarioActual.CveEmpresa, CveClasificacion:=Row("CveClasificacion").ToString().ToEntero()).FiltroPrimero("") + + If RowClasificacion IsNot Nothing Then + Dim CveCategoria As Integer = RowClasificacion("CveCategoria").ToString().ToEntero() + Dim Categoria As String = RowClasificacion("Categoria").ToString() + + If Me.CveCategoriaLineaAdicional <> CveCategoria Then + Alert($"La categoría '{Categoria}' no pertenece a la linea adicional.", TipoMensaje.MsgAdvertencia) + Exit Sub + End If + Else + Alert($"No se encontro la clasificación.", TipoMensaje.MsgAdvertencia) Exit Sub End If Next End If + 'SI NO ES A CREDITO NO SELECCIONAR LINEA ADICIONAL + If RBLPago.SelectedValue <> "1" Then + Alert($"La linea adicional debe ser utilizada en una venta a crédito.", TipoMensaje.MsgAdvertencia) + Exit Sub + End If + If Me.SaldoLineaAdicional <= 0 Then Alert("El saldo de la linea adicional debe ser mayor a cero", TipoMensaje.MsgAdvertencia) Exit Sub @@ -12906,7 +12924,7 @@ Partial Class Ventas ErrorList.Add("Ocurrió un error al actualizar el estatus del pedidoA") Else 'Remision - If Not ObjEventos.AddEventoBitacora($"Remisionado de autorización en: {ObjFactura.Folio}", "-1", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveVenta:=CvePedidoA) Then + If Not ObjEventos.AddEventoBitacora($"Remisionado de autorización en: {ObjFactura.SerieFolio}", "-1", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveVenta:=CvePedidoA) Then ErrorList.Add("Ocurrió un error al agregar bitácora de Autorización") End If End If @@ -14682,13 +14700,22 @@ Partial Class Ventas ErrorPrepoliza = True End If - 'Factura - If Not ObjEventos.AddEventoBitacora($"Remisión facturada : {ObjFactura.Folio}", "-1", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveVenta:=ObjFactura.CveVenta) Then + If CveRemision > 0 Then + If ObjVentas.GetVenta(CveRemision, UsuarioActual.CveEmpresa, VerificaAlmacen:=False) Then + Dim SerieFolioRem As String = ObjVentas.DtResultados.Rows(0)("SerieFolio").ToString() + 'Factura + If Not ObjEventos.AddEventoBitacora($"Venta facturada de Remisión: {SerieFolioRem}", "-1", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveVenta:=ObjFactura.CveVenta) Then + ErrorPrepoliza = True + End If + Else + ErrorPrepoliza = True + End If + Else ErrorPrepoliza = True End If 'Remision - If Not ObjEventos.AddEventoBitacora($"Facturación de remisión en: {ObjFactura.Folio}", "-1", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveVenta:=CveRemision) Then + If Not ObjEventos.AddEventoBitacora($"Remisión facturada en Venta: {ObjFactura.SerieFolio}", "-1", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveVenta:=CveRemision) Then ErrorPrepoliza = True End If Next @@ -18067,14 +18094,14 @@ Partial Class Ventas Using ObjVentas As New ClsVentas If CveVenta > 0 Then - If ObjVentas.GetLineasAdicionalesSaldo(-1, CveCliente, -1, DdlMoneda.SelectedValue.ToEntero(), UsuarioActual.CveEmpresa, ConSaldo:=-1) Then + If ObjVentas.GetLineasAdicionalesSaldo(-1, CveCliente, -1, DdlMoneda.SelectedValue.ToEntero(), UsuarioActual.CveEmpresa, ConSaldo:=-1, FechaVencimientoConsulta:=MinFecha) Then If ObjVentas.DtResultados.Rows.Count > 0 Then TrLineaAdicional.Visible = True - DdlLineaAdicional.DataSource = ObjVentas.DtResultados.FiltraParametros($"Saldo > 0 OR CveLineaAdicional = {Me.CveLineaAdicionalVenta}") + DdlLineaAdicional.DataSource = ObjVentas.DtResultados.FiltraParametros($"(Saldo > 0 AND FechaVencimiento <= '{Now.ToString("dd/MM/yyyy")}') OR CveLineaAdicional = {Me.CveLineaAdicionalVenta}") End If End If Else - If ObjVentas.GetLineasAdicionalesSaldo(-1, CveCliente, -1, DdlMoneda.SelectedValue.ToEntero(), UsuarioActual.CveEmpresa, ConSaldo:=1) Then + If ObjVentas.GetLineasAdicionalesSaldo(-1, CveCliente, -1, DdlMoneda.SelectedValue.ToEntero(), UsuarioActual.CveEmpresa, ConSaldo:=1, FechaVencimientoConsulta:=Now) Then If ObjVentas.DtResultados.Rows.Count > 0 Then TrLineaAdicional.Visible = True DdlLineaAdicional.DataSource = ObjVentas.DtResultados @@ -18095,6 +18122,7 @@ Partial Class Ventas End If + UpParametros.Update() UPCondicionesPago.Update() End Sub @@ -26969,93 +26997,94 @@ Partial Class Ventas End Sub Private Sub CargaRNC(Optional CveVentaUsado As Integer = -1, Optional CargarBonificaciones As Boolean = False, Optional CargarSoloGarantias As Boolean = False) Dim DtNC As DataTable = Nothing - - Dim ObjMovtos As New ClsMovimientos() - If ObjMovtos.GetAnticiposNCIxCCliente(CveCliente, CveMoneda:=-1) Then - DtNC = ObjMovtos.DtResultados.FiltraParametros("Tipo = 'RNC' AND CveVenta > 0 and Saldo > 0", "Moneda,Fecha,Folio") - End If - ObjMovtos.Dispose() - - Me.TmpDTRNCBonificacionesSeleccionadas = Nothing - - If DtNC IsNot Nothing Then - Me.TmpDTRNCBonificacionesCliente = DtNC.FiltraParametros("TipoRNC = 2") - Me.TmpDTRNCBonificacionesCliente.Columns.Add("ImporteBonificacion", GetType(Decimal)) - Me.TmpDTRNCBonificacionesCliente.Columns.Add("IVABonificacion", GetType(Decimal)) - Me.TmpDTRNCBonificacionesCliente.Columns.Add("CveVentaRNCCargo", GetType(Integer)) - - If CargarBonificaciones Then - 'Me.TmpDTRNCBonificacionesSeleccionadas = Me.TmpDTRNCBonificacionesCliente.Copy() - CargaBonificaciones(-1, True) + If UsuarioActual.Empresa.Funcionalidad(531) = "1" Then + Dim ObjMovtos As New ClsMovimientos() + If ObjMovtos.GetAnticiposNCIxCCliente(CveCliente, CveMoneda:=-1) Then + DtNC = ObjMovtos.DtResultados.FiltraParametros("Tipo = 'RNC' AND CveVenta > 0 and Saldo > 0", "Moneda,Fecha,Folio") End If + ObjMovtos.Dispose() - If CargarSoloGarantias Then - GvRemisionesNC.DataSource = DtNC.FiltraParametros("TipoRNC = 1 AND EsGarantia = True") - Else - GvRemisionesNC.DataSource = DtNC.FiltraParametros("TipoRNC = 1 AND EsGarantia = False") - End If - GvRemisionesNC.DataBind() + Me.TmpDTRNCBonificacionesSeleccionadas = Nothing - 'GvRemisionesNCBon.DataSource = Me.TmpDTRNCBonificacionesSeleccionadas - 'GvRemisionesNCBon.DataBind() - Dim SaldoMaximoUtilizable As Decimal = 0 + If DtNC IsNot Nothing Then + Me.TmpDTRNCBonificacionesCliente = DtNC.FiltraParametros("TipoRNC = 2") + Me.TmpDTRNCBonificacionesCliente.Columns.Add("ImporteBonificacion", GetType(Decimal)) + Me.TmpDTRNCBonificacionesCliente.Columns.Add("IVABonificacion", GetType(Decimal)) + Me.TmpDTRNCBonificacionesCliente.Columns.Add("CveVentaRNCCargo", GetType(Integer)) - If CargarSoloGarantias Then - Dim SaldoMaximo As Decimal = DtNC.SUMD("Saldo", "TipoRNC = 1 AND EsGarantia = True") - If SaldoMaximo > 0 Then - SaldoMaximoUtilizable = SaldoMaximo - Else - SaldoMaximoUtilizable = 0 + If CargarBonificaciones Then + 'Me.TmpDTRNCBonificacionesSeleccionadas = Me.TmpDTRNCBonificacionesCliente.Copy() + CargaBonificaciones(-1, True) End If - Else - Dim ObjAcum As New ClsAcumuladores - If ObjAcum.GetMovimientosDistribuidorResumen(CveCliente, UsuarioActual.CveEmpresa) Then - Dim RowUsadosNC As DataRow = ObjAcum.DtResultados.Rows(2) - DivSMU.Visible = True - Dim SaldoMaximo As Decimal = RowUsadosNC("ValorConImpuestos").ToString().ToDecimal() + If CargarSoloGarantias Then + GvRemisionesNC.DataSource = DtNC.FiltraParametros("TipoRNC = 1 AND EsGarantia = True") + Else + GvRemisionesNC.DataSource = DtNC.FiltraParametros("TipoRNC = 1 AND EsGarantia = False") + End If + GvRemisionesNC.DataBind() + + 'GvRemisionesNCBon.DataSource = Me.TmpDTRNCBonificacionesSeleccionadas + 'GvRemisionesNCBon.DataBind() + Dim SaldoMaximoUtilizable As Decimal = 0 + + If CargarSoloGarantias Then + Dim SaldoMaximo As Decimal = DtNC.SUMD("Saldo", "TipoRNC = 1 AND EsGarantia = True") If SaldoMaximo > 0 Then - SaldoMaximoUtilizable = RowUsadosNC("ValorConImpuestos").ToString().ToDecimal() + SaldoMaximoUtilizable = SaldoMaximo Else SaldoMaximoUtilizable = 0 End If - Else - SaldoMaximoUtilizable = 0 - End If - ObjAcum.Dispose() - End If + Dim ObjAcum As New ClsAcumuladores + If ObjAcum.GetMovimientosDistribuidorResumen(CveCliente, UsuarioActual.CveEmpresa) Then + Dim RowUsadosNC As DataRow = ObjAcum.DtResultados.Rows(2) + DivSMU.Visible = True - If CveVentaUsado > 0 Then - DivSMU.Visible = True - 'Dim FacUsado As New Modelos.Factura(UsuarioActual, CveVentaUsado, UsuarioActual.CveEmpresa, CargaDatosCliente:=False, CargaDatosRelacionados:=False) - Dim DtDetalleUsado As DataTable = Nothing - Using ObjVentas As New ClsVentas - If ObjVentas.GetVentaDetalle(CveVentaUsado) Then - DtDetalleUsado = ObjVentas.DtResultados.Copy() + Dim SaldoMaximo As Decimal = RowUsadosNC("ValorConImpuestos").ToString().ToDecimal() + If SaldoMaximo > 0 Then + SaldoMaximoUtilizable = RowUsadosNC("ValorConImpuestos").ToString().ToDecimal() + Else + SaldoMaximoUtilizable = 0 + End If + + Else + SaldoMaximoUtilizable = 0 End If - End Using + ObjAcum.Dispose() + End If - If DtDetalleUsado IsNot Nothing Then - Dim SaldoMaximoUsadosFactura As Decimal = DtDetalleUsado.SUM("Total", "EsCargo = True").ToDecimal() + DtDetalleUsado.SUM("ImporteIVA", "EsCargo = True").ToDecimal() - If SaldoMaximoUtilizable < SaldoMaximoUsadosFactura Then + If CveVentaUsado > 0 Then + DivSMU.Visible = True + 'Dim FacUsado As New Modelos.Factura(UsuarioActual, CveVentaUsado, UsuarioActual.CveEmpresa, CargaDatosCliente:=False, CargaDatosRelacionados:=False) + Dim DtDetalleUsado As DataTable = Nothing + Using ObjVentas As New ClsVentas + If ObjVentas.GetVentaDetalle(CveVentaUsado) Then + DtDetalleUsado = ObjVentas.DtResultados.Copy() + End If + End Using + + If DtDetalleUsado IsNot Nothing Then + Dim SaldoMaximoUsadosFactura As Decimal = DtDetalleUsado.SUM("Total", "EsCargo = True").ToDecimal() + DtDetalleUsado.SUM("ImporteIVA", "EsCargo = True").ToDecimal() + If SaldoMaximoUtilizable < SaldoMaximoUsadosFactura Then + HdnSaldoMaximoUsados.Value = SaldoMaximoUtilizable.ToString() + LtlSMU.Text = String.Format("{0:N2}", SaldoMaximoUtilizable) + Else + HdnSaldoMaximoUsados.Value = SaldoMaximoUsadosFactura.ToString() + LtlSMU.Text = String.Format("{0:N2}", SaldoMaximoUsadosFactura) + End If + Else HdnSaldoMaximoUsados.Value = SaldoMaximoUtilizable.ToString() LtlSMU.Text = String.Format("{0:N2}", SaldoMaximoUtilizable) - Else - HdnSaldoMaximoUsados.Value = SaldoMaximoUsadosFactura.ToString() - LtlSMU.Text = String.Format("{0:N2}", SaldoMaximoUsadosFactura) End If Else HdnSaldoMaximoUsados.Value = SaldoMaximoUtilizable.ToString() - LtlSMU.Text = String.Format("{0:N2}", SaldoMaximoUtilizable) + LtlSMU.Text = SaldoMaximoUtilizable.FormatoNumero(2) End If Else - HdnSaldoMaximoUsados.Value = SaldoMaximoUtilizable.ToString() - LtlSMU.Text = SaldoMaximoUtilizable.FormatoNumero(2) + HdnSaldoMaximoUsados.Value = "0" + LtlSMU.Text = "0" End If - Else - HdnSaldoMaximoUsados.Value = "0" - LtlSMU.Text = "0" End If UpModalRemisionesNC.Update() @@ -27064,81 +27093,83 @@ Partial Class Ventas Private Sub CargaRNCDesc(Optional CargarBonificaciones As Boolean = False, Optional CargarSoloGarantias As Boolean = False) Dim DtNC As DataTable = Nothing - Dim ObjMovtos As New ClsMovimientos() - If ObjMovtos.GetAnticiposNCIxCCliente(CveCliente, CveMoneda:=-1) Then - DtNC = ObjMovtos.DtResultados.FiltraParametros("Tipo = 'RNC' AND CveVenta > 0 and Saldo > 0", "Moneda,Fecha,Folio") - End If - ObjMovtos.Dispose() - - Me.TmpDTRNCBonificacionesSeleccionadas = Nothing - - If DtNC IsNot Nothing Then - Me.TmpDTRNCBonificacionesCliente = DtNC.FiltraParametros("TipoRNC = 2") - Me.TmpDTRNCBonificacionesCliente.Columns.Add("ImporteBonificacion", GetType(Decimal)) - Me.TmpDTRNCBonificacionesCliente.Columns.Add("IVABonificacion", GetType(Decimal)) - Me.TmpDTRNCBonificacionesCliente.Columns.Add("CveVentaRNCCargo", GetType(Integer)) - - If CargarBonificaciones Then - 'Me.TmpDTRNCBonificacionesSeleccionadas = Me.TmpDTRNCBonificacionesCliente.Copy() - CargaBonificacionesDesc("-1", True) + If UsuarioActual.Empresa.Funcionalidad(531) = "1" Then + Dim ObjMovtos As New ClsMovimientos() + If ObjMovtos.GetAnticiposNCIxCCliente(CveCliente, CveMoneda:=-1) Then + DtNC = ObjMovtos.DtResultados.FiltraParametros("Tipo = 'RNC' AND CveVenta > 0 and Saldo > 0", "Moneda,Fecha,Folio") End If + ObjMovtos.Dispose() - If CargarSoloGarantias Then - GvDescNCCargos.DataSource = DtNC.FiltraParametros("TipoRNC = 1 AND EsGarantia = True") - Else - GvDescNCCargos.DataSource = DtNC.FiltraParametros("TipoRNC = 1 AND EsGarantia = False") - End If - GvDescNCCargos.DataBind() + Me.TmpDTRNCBonificacionesSeleccionadas = Nothing - Dim SaldoMaximoCliente As Decimal = 0 - Dim SaldoEntregado As Decimal = 0 + If DtNC IsNot Nothing Then + Me.TmpDTRNCBonificacionesCliente = DtNC.FiltraParametros("TipoRNC = 2") + Me.TmpDTRNCBonificacionesCliente.Columns.Add("ImporteBonificacion", GetType(Decimal)) + Me.TmpDTRNCBonificacionesCliente.Columns.Add("IVABonificacion", GetType(Decimal)) + Me.TmpDTRNCBonificacionesCliente.Columns.Add("CveVentaRNCCargo", GetType(Integer)) - If CargarSoloGarantias Then - Dim SaldoMaximo As Decimal = DtNC.SUMD("Saldo", "TipoRNC = 1 AND EsGarantia = True") - If SaldoMaximo > 0 Then - SaldoMaximoCliente = SaldoMaximo - Else - SaldoMaximoCliente = 0 + If CargarBonificaciones Then + 'Me.TmpDTRNCBonificacionesSeleccionadas = Me.TmpDTRNCBonificacionesCliente.Copy() + CargaBonificacionesDesc("-1", True) End If - Else - Dim ObjAcum As New ClsAcumuladores - If ObjAcum.GetMovimientosDistribuidorResumen(CveCliente, UsuarioActual.CveEmpresa) Then - Dim RowUsadosNC As DataRow = ObjAcum.DtResultados.Rows(2) - DivSMU.Visible = True - Dim SaldoMaximo As Decimal = RowUsadosNC("ValorConImpuestos").ToString().ToDecimal() + If CargarSoloGarantias Then + GvDescNCCargos.DataSource = DtNC.FiltraParametros("TipoRNC = 1 AND EsGarantia = True") + Else + GvDescNCCargos.DataSource = DtNC.FiltraParametros("TipoRNC = 1 AND EsGarantia = False") + End If + GvDescNCCargos.DataBind() + + Dim SaldoMaximoCliente As Decimal = 0 + Dim SaldoEntregado As Decimal = 0 + + If CargarSoloGarantias Then + Dim SaldoMaximo As Decimal = DtNC.SUMD("Saldo", "TipoRNC = 1 AND EsGarantia = True") If SaldoMaximo > 0 Then - SaldoMaximoCliente = RowUsadosNC("ValorConImpuestos").ToString().ToDecimal() + SaldoMaximoCliente = SaldoMaximo Else SaldoMaximoCliente = 0 End If - Dim RowEntregado As DataRow = ObjAcum.DtResultados.Rows(1) - SaldoEntregado = RowEntregado("ValorConImpuestos").ToString().ToDecimal() Else - SaldoMaximoCliente = 0 + Dim ObjAcum As New ClsAcumuladores + If ObjAcum.GetMovimientosDistribuidorResumen(CveCliente, UsuarioActual.CveEmpresa) Then + Dim RowUsadosNC As DataRow = ObjAcum.DtResultados.Rows(2) + DivSMU.Visible = True + + Dim SaldoMaximo As Decimal = RowUsadosNC("ValorConImpuestos").ToString().ToDecimal() + If SaldoMaximo > 0 Then + SaldoMaximoCliente = RowUsadosNC("ValorConImpuestos").ToString().ToDecimal() + Else + SaldoMaximoCliente = 0 + End If + Dim RowEntregado As DataRow = ObjAcum.DtResultados.Rows(1) + SaldoEntregado = RowEntregado("ValorConImpuestos").ToString().ToDecimal() + Else + SaldoMaximoCliente = 0 + End If + ObjAcum.Dispose() End If - ObjAcum.Dispose() - End If - Dim SaldoMaximoUsadosFactura As Decimal = Me.TmpDT.SUM("Total", "EsCargo = True").ToDecimal() + Me.TmpDT.SUM("ImporteIVA", "EsCargo = True").ToDecimal() + Dim SaldoMaximoUsadosFactura As Decimal = Me.TmpDT.SUM("Total", "EsCargo = True").ToDecimal() + Me.TmpDT.SUM("ImporteIVA", "EsCargo = True").ToDecimal() - If SaldoMaximoCliente > 0 AndAlso SaldoMaximoCliente < SaldoMaximoUsadosFactura Then - SaldoMaximoUsadosFactura = SaldoMaximoCliente - End If + If SaldoMaximoCliente > 0 AndAlso SaldoMaximoCliente < SaldoMaximoUsadosFactura Then + SaldoMaximoUsadosFactura = SaldoMaximoCliente + End If - Dim SaldoMaximoUtilizable = If(SaldoMaximoUsadosFactura < SaldoEntregado, SaldoMaximoUsadosFactura, SaldoEntregado) + Dim SaldoMaximoUtilizable = If(SaldoMaximoUsadosFactura < SaldoEntregado, SaldoMaximoUsadosFactura, SaldoEntregado) + + If SaldoMaximoUtilizable > 0 Then + HdnSaldoMaximoUsados.Value = SaldoMaximoUtilizable.ToString() + LblSaldoMaximoUsados.Text = String.Format("{0:N2}", SaldoMaximoUtilizable) + Else + HdnSaldoMaximoUsados.Value = "0" + LblSaldoMaximoUsados.Text = String.Format("{0:N2}", 0) + End If - If SaldoMaximoUtilizable > 0 Then - HdnSaldoMaximoUsados.Value = SaldoMaximoUtilizable.ToString() - LblSaldoMaximoUsados.Text = String.Format("{0:N2}", SaldoMaximoUtilizable) Else HdnSaldoMaximoUsados.Value = "0" - LblSaldoMaximoUsados.Text = String.Format("{0:N2}", 0) + LblSaldoMaximoUsados.Text = "0" End If - - Else - HdnSaldoMaximoUsados.Value = "0" - LblSaldoMaximoUsados.Text = "0" End If UpDescNC.Update() @@ -35289,35 +35320,52 @@ Partial Class Ventas RBLPago.Enabled = False Using ObjVentas As New ClsVentas - If ObjVentas.GetLineasAdicionalesSaldo(DdlLineaAdicional.SelectedValue.ToEntero(), CveCliente, -1, DdlMoneda.SelectedValue.ToEntero(), UsuarioActual.CveEmpresa) Then + If ObjVentas.GetLineasAdicionalesSaldo(DdlLineaAdicional.SelectedValue.ToEntero(), CveCliente, -1, DdlMoneda.SelectedValue.ToEntero(), UsuarioActual.CveEmpresa, FechaVencimientoConsulta:=MinFecha) Then If ObjVentas.DtResultados.Rows.Count > 0 Then TxtFechaPago.Text = ObjVentas.DtResultados.Rows(0)("FechaVencimiento").ToString().ToDateTime().ToString("dd/MM/yyyy") Me.SaldoLineaAdicional = ObjVentas.DtResultados.Rows(0)("Saldo").ToString().ToDecimal() - Me.CveClasificacionLineaAdicional = ObjVentas.DtResultados.Rows(0)("CveClasificacionPS").ToString().ToEntero() + Me.CveCategoriaLineaAdicional = ObjVentas.DtResultados.Rows(0)("CveCategoria").ToString().ToEntero() Me.CveMonedaLineaAdicional = ObjVentas.DtResultados.Rows(0)("CveMoneda").ToString().ToEntero() End If End If End Using Else Me.SaldoLineaAdicional = 0 - Me.CveClasificacionLineaAdicional = 0 + Me.CveCategoriaLineaAdicional = 0 End If + UpParametros.Update() UPCondicionesPago.Update() End Sub Protected Sub LnkUpdateLineaAdicional_Click(sender As Object, e As EventArgs) 'VALIDAR LINEAS ADICIONALES If UsuarioActual.Empresa.Funcionalidad(705) = "1" AndAlso DdlLineaAdicional.SelectedValue.ToEntero() > 0 Then - 'VERIFICA QUE LA CLASIFICACION DE LOS PRODUCTOS DEBE SER LA MISMA DE LA LINEA ADICIONAL - If TmpDT IsNot Nothing AndAlso Me.CveClasificacionLineaAdicional > 0 Then - For Each Row As DataRow In TmpDT.FiltraParametros("", DistinctColumns:={"CveClasificacion", "Clasificacion"}).Rows - If Me.CveClasificacionLineaAdicional <> Row("CveClasificacion").ToString().ToEntero() Then - Alert($"La clasificación '{Row("Clasificacion")}' no pertenece a la linea adicional.", TipoMensaje.MsgAdvertencia) + 'VERIFICA QUE LA CATEGORIA DE LOS PRODUCTOS DEBE SER LA MISMA DE LA LINEA ADICIONAL + If TmpDT IsNot Nothing AndAlso Me.CveCategoriaLineaAdicional > 0 Then + For Each Row As DataRow In TmpDT.FiltraParametros("", DistinctColumns:={"CveClasificacion"}).Rows + Dim RowClasificacion = GlobalDTClasificaciones(UsuarioActual.CveEmpresa, CveClasificacion:=Row("CveClasificacion").ToString().ToEntero()).FiltroPrimero("") + + If RowClasificacion IsNot Nothing Then + Dim CveCategoria As Integer = RowClasificacion("CveCategoria").ToString().ToEntero() + Dim Categoria As String = RowClasificacion("Categoria").ToString() + + If Me.CveCategoriaLineaAdicional <> CveCategoria Then + Alert($"La categoría '{Categoria}' no pertenece a la linea adicional.", TipoMensaje.MsgAdvertencia) + Exit Sub + End If + Else + Alert($"No se encontro la clasificación.", TipoMensaje.MsgAdvertencia) Exit Sub End If Next End If + 'SI NO ES A CREDITO NO SELECCIONAR LINEA ADICIONAL + If RBLPago.SelectedValue <> "1" Then + Alert($"La linea adicional debe ser utilizada en una venta a crédito.", TipoMensaje.MsgAdvertencia) + Exit Sub + End If + If Me.SaldoLineaAdicional <= 0 Then Alert("El saldo de la linea adicional debe ser mayor a cero", TipoMensaje.MsgAdvertencia) Exit Sub diff --git a/vwd.webinfo b/vwd.webinfo index c139fadbc..fdbdd590d 100644 --- a/vwd.webinfo +++ b/vwd.webinfo @@ -566,6 +566,12 @@ + + + + + +