From 713f85c8dcb0ed71c313f3d3a5440704940a60f5 Mon Sep 17 00:00:00 2001 From: Rakcsle Supertramp Date: Wed, 16 Dec 2020 10:17:19 -0700 Subject: [PATCH 01/18] Contrtos compras --- Compras/Compras.aspx | 190 ++++++++++++++++++++++++++++-- Compras/Compras.aspx.vb | 251 ++++++++++++++++++++++++++++++++++++---- 2 files changed, 407 insertions(+), 34 deletions(-) diff --git a/Compras/Compras.aspx b/Compras/Compras.aspx index b5bfea7dd..9d90e76a0 100644 --- a/Compras/Compras.aspx +++ b/Compras/Compras.aspx @@ -5158,7 +5158,7 @@ - - + --%> + + + + + + + + @@ -6292,14 +6396,80 @@ } - //function ScrollVentanaAddProducto() { - // let wh = $(window).height(); - - // if (wh <= 770) { - // // $('#DVBodyAddProducto').css("max-height", 450); - // } - //} - + function ValidateCant(ncss, SubtotalValidar) { + + let SubTotal = 0.0; + + let CantidadS = $(".CssCantidad" + ncss).val(); + let PuS = $(".CssPU" + ncss).val(); + + let Cantidad = 0.0; + let Pu = 0.0; + + try{ + + if (CantidadS.length > 0 && PuS.length > 0) { + + Cantidad = parseFloat(CantidadS); + Pu = parseFloat(PuS); + + $(".CssImporte" + ncss).val(Cantidad * Pu); + + + }else{ + $(".CssImporte" + ncss).val("0"); + } + + + } catch (error) { + $(".CssImporte" + ncss).val("0"); + } + + //$('.ImporteCSS').each(function () { + + + // if(! isNaN(parseFloat($(this).val()) )){ + // SubTotal = SubTotal + parseFloat($(this).val()) + // } + + //}); + + ValidaBotonContrato(SubtotalValidar); + + + + //if (SubtotalValidar == SubTotal) { + // $('#BtnAplicarContrato').prop('disabled', false); + //} else { + // $('#BtnAplicarContrato').prop('disabled', true); + //} + + } + + function ValidaBotonContrato(SubtotalValidar) { + + let SubTotal = 0.0; + + + + $('.ImporteCSS').each(function () { + + if (!isNaN(parseFloat($(this).val()))) { + SubTotal = SubTotal + parseFloat($(this).val()) + } + }); + + + + if (SubtotalValidar == SubTotal) { + $('#BtnAplicarContrato').prop('disabled', false); + } else { + $('#BtnAplicarContrato').prop('disabled', true); + } + + $('#LblTotalContrato').text(SubTotal); + + } diff --git a/Compras/Compras.aspx.vb b/Compras/Compras.aspx.vb index 596aa860d..4f8101173 100644 --- a/Compras/Compras.aspx.vb +++ b/Compras/Compras.aspx.vb @@ -1181,6 +1181,37 @@ Partial Class Compras_Compras + Private Property MaxIVAProcentaje As Decimal + Get + If ViewState("MaxIVAProcentaje") Is Nothing Then + Return 0 + Else + Return ViewState("MaxIVAProcentaje").ToString.ToDecimal + End If + End Get + Set(value As Decimal) + ViewState("MaxIVAProcentaje") = value + End Set + End Property + + + Private Property MAXRetIVAPorcentaje As Decimal + Get + If ViewState("MAXRetIVAPorcentaje") Is Nothing Then + Return 0 + Else + Return ViewState("MAXRetIVAPorcentaje").ToString.ToDecimal + End If + End Get + Set(value As Decimal) + ViewState("MAXRetIVAPorcentaje") = value + End Set + End Property + + + + + @@ -1206,7 +1237,7 @@ Partial Class Compras_Compras CveConceptoContableAlmacen = 0 EsNoDeducible = False CveTipoConcepto = 1 - CargaContratos() + 'CargaContratos() '******** Prorrateo ******************************************** If UsuarioActual.Empresa.Funcionalidad(117) <> "" Then btnProrateo.Visible = True @@ -1781,31 +1812,42 @@ Partial Class Compras_Compras Xml.Append(Replace(Replace(Replace(nodeconceptos.OuterXml, " 0 Then + MaxIVAProcentaje = ObjeFacturas.DtResultados.MAX("IVAPorcentaje").ToDecimal + MAXRetIVAPorcentaje = ObjeFacturas.DtResultados.MAX("RetIVAPorcentaje").ToDecimal + Else + MaxIVAProcentaje = 0 + End If + + + + 'TmpDT.Columns.Add("IVAPorcentaje") 'TmpDT.Columns.Add("RetIVAPorcentaje") 'TmpDT.Columns.Add("RetISRPorcentaje") 'TmpDT.Columns.Add("IEPSPSPorcentaje") 'TmpDT.Columns.Add("IEPSPSIVAPorcentaje") SubTotalConceptos = Math.Round(TmpDT.SUM("Total"), 2).ToDecimal - AddPS2(False) + AddPS2(False) - 'VALIDA QUE EL XML SI VIENE CON EL CODIGO SAT 01010101 - Dim ProductosCodigoSATNoPermitidos As New StringBuilder("") - For Each drr As DataRow In TmpDT.FiltraParametros("ClaveProdServ = '01010101'").Rows + 'VALIDA QUE EL XML SI VIENE CON EL CODIGO SAT 01010101 + Dim ProductosCodigoSATNoPermitidos As New StringBuilder("") + For Each drr As DataRow In TmpDT.FiltraParametros("ClaveProdServ = '01010101'").Rows - ProductosCodigoSATNoPermitidos.AppendFormat("{0}
", drr("PS")) + ProductosCodigoSATNoPermitidos.AppendFormat("{0}
", drr("PS")) - Next + Next - If ProductosCodigoSATNoPermitidos.ToString.Length > 0 Then - Dim mensajeAdvertencia As String = String.Format("El comprobante contiene productos con código SAT '01010101', revise los productos:

{0}", ProductosCodigoSATNoPermitidos.ToString) - Alert(mensajeAdvertencia, TipoMensaje.MsgAdvertencia) + If ProductosCodigoSATNoPermitidos.ToString.Length > 0 Then + Dim mensajeAdvertencia As String = String.Format("El comprobante contiene productos con código SAT '01010101', revise los productos:

{0}", ProductosCodigoSATNoPermitidos.ToString) + Alert(mensajeAdvertencia, TipoMensaje.MsgAdvertencia) + + End If End If - - End If - Else + Else CargaConceptosXML(XMLDoc) End If @@ -1831,7 +1873,7 @@ Partial Class Compras_Compras DdlTipoCompra.Items.Add(New ListItem("Apoyo Logístico", "9")) DdlTipoCompra.Items.Add(New ListItem("NC Por Devolución", "11")) - + LiAccionesContratos.Visible = True End Select 'DIV ALIAS @@ -20475,22 +20517,183 @@ Partial Class Compras_Compras End Function - Private Sub CargaContratos() - DdlContrato.DataSource = GlobalDTContratos.FiltraParametros($"CveEmpresa = {UsuarioActual.CveEmpresa} AND CveContratoTipo IN(30,31) ") - DdlContrato.DataBind() - DdlContrato.Items.Insert(0, New System.Web.UI.WebControls.ListItem("Todos", "-1")) - End Sub + 'Private Sub CargaContratos() + ' DdlContrato.DataSource = GlobalDTContratos.FiltraParametros($"CveEmpresa = {UsuarioActual.CveEmpresa} AND CveContratoTipo IN(30,31) ") + ' DdlContrato.DataBind() + ' DdlContrato.Items.Insert(0, New System.Web.UI.WebControls.ListItem("Todos", "-1")) + 'End Sub - Protected Sub BtnModalContratos_Click(sender As Object, e As EventArgs) + 'Protected Sub BtnModalContratos_Click(sender As Object, e As EventArgs) - RegistraScript("$('#DvModalContratos').modal('hide');") - CveContratoObra = DdlContrato.SelectedValue.ToEntero + ' RegistraScript("$('#DvModalContratos').modal('hide');") + ' CveContratoObra = DdlContrato.SelectedValue.ToEntero + + + 'End Sub - End Sub Protected Sub LnkContratos_Click(sender As Object, e As EventArgs) - RegistraScript("$('#DvModalContratos').modal('show');") + + 'RegistraScript("$('#DvModalContratos').modal('show');") + + DdlContratosObra.Items.Clear() + DdlContratosObra.DataSource = GlobalDTContratos.FiltraParametros(String.Format($"CveContratoTipo in (30,31) AND CveEmpresa = {UsuarioActual.CveEmpresa}")) + DdlContratosObra.DataBind() + 'DdlContratosObra.Items.Insert(0, New ListItem("Seleccione", "-1")) + + + DdlTipoGastoObra.Items.Clear() + DdlTipoGastoObra.DataSource = GlobalDTTiposGastos(UsuarioActual.CveEmpresa) + DdlTipoGastoObra.DataBind() + DdlTipoGastoObra.Items.Insert(0, New ListItem("Seleccione", "-1")) + + + + RegistraScript($"$('#DivmodalConmtrato').modal('show'); $( '#BtnAplicarContrato' ).prop( 'disabled', true ); ValidaBotonContrato({TxtSubTotal2.Text.ToDecimal});") + UpModalContrato.Update() + + End Sub + + + Protected Sub DdlContratosCompras_SelectedIndexChanged(sender As Object, e As EventArgs) + + + If DdlContratosObra.SelectedValue.ToEntero > 0 Then + Dim ObjContratos As New ClsContratos() + + If ObjContratos.GetContratosObraCompras(DdlContratosObra.SelectedValue.ToEntero, UsuarioActual.CveEmpresa) Then + + If ObjContratos.DtResultados.Rows.Count > 0 Then + GvContratosControl.DataSource = ObjContratos.DtResultados + 'BtnAplicarContrato.Visible = True + Else + GvContratosControl.DataSource = Nothing + 'BtnAplicarContrato.Visible = False + End If + + End If + + + ObjContratos.Dispose() + + GvContratosControl.DataBind() + + UpModalContrato.Update() + End If + + RegistraScript("$( '#BtnAplicarContrato' ).prop( 'disabled', true );") + + End Sub + + + Protected Sub BtnAplicarContrato_Click(sender As Object, e As EventArgs) + + + TmpDT.Rows.Clear() + + Dim CveTipoGastoObra As Integer = DdlTipoGasto.SelectedValue.ToEntero + + For Each GvRow As GridViewRow In GvContratosControl.Rows + + Dim CveContratoDetalle As Integer = GvRow.DataKey("CveContratoDetalle").ToEntero + + Dim Cantidad As Double = GvRow.FCTextBox("TxtCantidad").Text.ToDouble + Dim CvePS As Integer = GvRow.DataKey("CvePS").ToEntero + Dim PS As String = GvRow.DataKey("PS") + Dim PU As Double = GvRow.FCTextBox("TxtPU").Text.ToDouble + Dim TotalPS As Double = GvRow.FCTextBox("TxtImporte").Text.ToDouble + Dim CveUnidadMedida As Integer = GvRow.DataKey("CveUnidadMedida").ToEntero + Dim UMAbreviatura As String = GvRow.DataKey("Abreviatura").ToString + + Dim SubProyecto As String = GvRow.DataKey("SubProyecto") + Dim CveSubProyecto As Integer = GvRow.DataKey("CveSubProyecto").ToEntero + Dim Codigo As String = "" 'GvRow.DataKey("Codigo") + + Dim Proyecto As String = GvRow.DataKey("Proyecto") + Dim CveProyecto As Integer = GvRow.DataKey("CveProyecto").ToEntero + + Dim RetISR As Double = GvRow.DataKey("RetISR").ToString.ToDouble + Dim RetIVA As Double = MAXRetIVAPorcentaje 'GvRow.DataKey("RetIVA").ToString.ToDouble + + Dim IvaPS As Double = MaxIVAProcentaje + + Dim CveClasificacion As Integer = GvRow.DataKey("CveClasificacion").ToString.ToEntero + Dim Clasificacion As String = GvRow.DataKey("Clasificacion") + + + Dim IEPSPS As Double = GvRow.DataKey("IEPSPorcentaje").ToString.ToDouble + Dim IEPSPSIVA As Double = If(GvRow.DataKey("IEPSGrabaIVA").ToString = "True", IEPSPS, 0) + + + Dim CveTipoPS As Integer = GvRow.DataKey("CveTipoPS").ToEntero + + Dim CveSATPS As Integer = GvRow.DataKey("CveSATPS").ToEntero + + + Dim IdCuentaPorEjercer As Integer = -1 + Dim IdCuentaComprometido As Integer = -1 + + Dim TotalRow As Decimal = (PU * Cantidad).RoundSQL(2).ToDecimal + + If Cantidad > 0 Then + + + AddPS(Cantidad, CveUnidadMedida, UMAbreviatura, CveClasificacion, Clasificacion, CvePS, PS, CveTipoPS, CveSubProyecto.ToString, SubProyecto, Proyecto, CveProyecto.ToString, "", PU, TotalRow, IvaPS, RetIVA, RetISR, IEPSPS, IEPSPSIVA, 0, -1, False, + CantidadF:=0, EntregaDirecta:=0, CveSATPS:=CveSATPS, CveTipoGasto:=DdlTipoGastoObra.SelectedValue.ToEntero, TipoGasto:=DdlTipoGastoObra.SelectedItem.Text, CveContratoDetalle:=CveContratoDetalle, CveCultivoCuadroDetalle:=-1) + + + 'AddPS(Cantidad, CvePS, PS, PS, PU, 0, TotalPS, + 'CveUnidadMedida, IvaPS, IEPSPS, IEPSPSIVA, CveClasificacion, UMAbreviatura, Clasificacion, CveProyecto, Proyecto, + 'CveSubProyecto, SubProyecto, Codigo, -1, 0, -1, -1, IdCuentaPorEjercer, + 'IdCuentaComprometido, -1, -1, -1, -1, + '-1, RetIVA, RetISR, CveContratoDetalle:=CveContratoDetalle, CveTipoGastoObra:=CveTipoGastoObra, CveCultivoCuadroDetalle:=-1, Cuadro:="") + + + '' ContratoObraAplciado = True + + End If + + Next + + 'CargaSuperior() + 'CargaDatosDetalles() + + + + GvPS.DataSource = TmpDT + GvPS.DataBind() + UpPS.Update() + + RegistraScript("$('#DivmodalConmtrato').modal('hide')") + ' UPPDetalle.Update() + + + End Sub + + Private Sub GvContratosControl_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles GvContratosControl.RowDataBound + + + If e.Row.RowType = DataControlRowType.DataRow Then + + Dim CveContratoDetalle As Integer = e.Row.DataKey("CveContratoDetalle").ToEntero + + e.Row.FCTextBox("TxtCantidad").CssClass = $"CssCantidad{CveContratoDetalle}" + e.Row.FCTextBox("TxtCantidad").Attributes.Add("onkeyup", $"ValidateCant('{CveContratoDetalle}',{TxtSubTotal2.Text.ToDecimal})") + + e.Row.FCTextBox("TxtPU").CssClass = $"CssPU{CveContratoDetalle}" + e.Row.FCTextBox("TxtPU").Attributes.Add("onkeyup", $"ValidateCant('{CveContratoDetalle}',{TxtSubTotal2.Text.ToDecimal})") + + + e.Row.FCTextBox("TxtImporte").CssClass = $"ImporteCSS CssImporte{CveContratoDetalle}" + + + + End If + + + End Sub + End Class Public Class MMensajeDevolucion From bba0ea32f4072834881f5ce999ffb1b1a9267070 Mon Sep 17 00:00:00 2001 From: rrene Date: Wed, 16 Dec 2020 16:33:11 -0700 Subject: [PATCH 02/18] cambio en virtuales --- Inventarios/RecepcionAlmacen.aspx.vb | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Inventarios/RecepcionAlmacen.aspx.vb b/Inventarios/RecepcionAlmacen.aspx.vb index 77f6bb598..991f55859 100644 --- a/Inventarios/RecepcionAlmacen.aspx.vb +++ b/Inventarios/RecepcionAlmacen.aspx.vb @@ -2713,13 +2713,13 @@ Partial Class Inventarios_RecepcionAlmacen End If If DtPSVirtual IsNot Nothing AndAlso DtPSVirtual.Rows.Count > 0 Then - Dim CveSubProyecto As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("CveSubProyecto", $"CveAlmacen= {DdlAlmacen.SelectedValue}").ToEntero() + 'Dim CveSubProyecto As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("CveSubProyecto", $"CveAlmacen= {DdlAlmacen.SelectedValue}").ToEntero() Dim CveTipoAlmacenFiltro As Integer = If(CveTipoCompra = 9, 25, 24) - Dim CveAlmacenVirutal As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa, CveAlmacen:=tCveAlmacen).FiltroPrimeroValor("CveAlmacenVirtual").ToEntero() + Dim CveAlmacenVirtual As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa, CveAlmacen:=tCveAlmacen).FiltroPrimeroValor("CveAlmacenVirtual").ToEntero() - CveMovimientoVirtual = ObjInventario.AddMovimiento(CveAlmacenVirutal, If(TipoMovimiento > 1, 13, 2), 1, TxtFecha.Text.ToDate, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveCompraSurtir, -1, -1, -1, CveMovimientoRelacionado:=CveMovimiento, Observaciones:=TxtObservaciones.Text.Trim, Modulo:="RA/G4") + CveMovimientoVirtual = ObjInventario.AddMovimiento(CveAlmacenVirtual, If(TipoMovimiento > 1, 13, 2), 1, TxtFecha.Text.ToDate, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveCompraSurtir, -1, -1, -1, CveMovimientoRelacionado:=CveMovimiento, Observaciones:=TxtObservaciones.Text.Trim, Modulo:="RA/G4") FolioVirtual = ObjInventario.Folio For Each RowUsado As DataRow In DtPSVirtual.Rows @@ -2865,11 +2865,11 @@ Partial Class Inventarios_RecepcionAlmacen Next If DtPSVirtual IsNot Nothing AndAlso DtPSVirtual.Rows.Count > 0 Then - Dim CveSubProyecto As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("CveSubProyecto", $"CveAlmacen= {DdlAlmacen.SelectedValue}").ToEntero() + 'Dim CveSubProyecto As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("CveSubProyecto", $"CveAlmacen= {DdlAlmacen.SelectedValue}").ToEntero() - Dim CveAlmacenVirutal As Integer = GlobalDTAlmacenUsuarios(UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, 25).FiltroPrimeroValor("CveAlmacen", $"CveSubProyecto={CveSubProyecto}").ToEntero() + Dim CveAlmacenVirtual As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa, CveAlmacen:=CveAlmacen).FiltroPrimeroValor("CveAlmacenVirtual").ToEntero() - CveMovimientoVirtual = ObjInventario.AddMovimiento(CveAlmacenVirutal, If(TipoMovimiento > 1, 13, 2), 1, TxtFecha.Text.ToDate, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveCompraSurtir, -1, -1, -1, Observaciones:=TxtObservaciones.Text.Trim, Modulo:="RA/G5") + CveMovimientoVirtual = ObjInventario.AddMovimiento(CveAlmacenVirtual, If(TipoMovimiento > 1, 13, 2), 1, TxtFecha.Text.ToDate, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveCompraSurtir, -1, -1, -1, Observaciones:=TxtObservaciones.Text.Trim, Modulo:="RA/G5") FolioVirtual = ObjInventario.Folio For Each RowUsado As DataRow In DtPSVirtual.Rows From 7c02807c4e77eae0e308a7063a087e988b02a556 Mon Sep 17 00:00:00 2001 From: rrene Date: Wed, 16 Dec 2020 16:33:33 -0700 Subject: [PATCH 03/18] -- clonar producto, actualizar global de ps --- App_Code/Timbrado.vb | 604 +++++++++++++ .../Cancelacion/cancelacion.wsdl | 369 ++++++++ Compras/Compras.aspx.vb | 6 +- Empresas/141/Formatos/Cotizacion.rdlc | 553 ++++++------ Empresas/141/Formatos/Factura.rdlc | 825 +++++++++--------- Empresas/141/Formatos/RepPS.rdlc | 9 +- Ventas/ProductosServicios.aspx.vb | 3 + Ventas/RepComisionesJAM.aspx | 2 +- 8 files changed, 1629 insertions(+), 742 deletions(-) create mode 100644 App_WebReferences/Cancelacion/cancelacion.wsdl diff --git a/App_Code/Timbrado.vb b/App_Code/Timbrado.vb index e4cda96bc..afbac5a8a 100644 --- a/App_Code/Timbrado.vb +++ b/App_Code/Timbrado.vb @@ -653,6 +653,12 @@ Public Class Timbrado Dim Ret As String = TimbrarFacturaGoCFDIv33(Ventas, UsuarioActual, CvePACEspecial) If Ret <> "" Then MensajeErrorCFDI = Ret Retorno = If(Ret = "", True, False) + Case 5 + + Dim Ret As String = TimbrarFacturaProdigiav33(Ventas, UsuarioActual, CvePACEspecial) + If Ret <> "" Then MensajeErrorCFDI = Ret + Retorno = If(Ret = "", True, False) + End Select @@ -2185,6 +2191,604 @@ Public Class Timbrado GuardaLogTimbrado(swTiempo.ToString, CvePACEspecial) Return Retorno End Function + + Public Function TimbrarFacturaProdigiav33(Ventas As Modelos.Factura, UsuarioActual As Usuario, Optional CvePACEspecial As Integer = -1) As String + If CvePACEspecial = -1 Then + CvePACEspecial = UsuarioActual.Empresa.CvePAC + End If + Dim sw As New Diagnostics.Stopwatch + Dim swmili As Long = 0 + Dim swTiempo As New StringBuilder + sw.Start() + Dim Retorno As String = "" + Dim ObjCFDITimbre As CFDITimbre = Ventas.Timbre + ' 'Sucursal matriz de la empresa + Dim ArchivoLLave As String = String.Format("{0}Certificados\{1}", UsuarioActual.Empresa.Ruta, UsuarioActual.Empresa.ArchivoKey) + Dim ArchivoCertificado As String = String.Format("{0}Certificados\{1}", UsuarioActual.Empresa.Ruta, UsuarioActual.Empresa.ArchivoCer) + Dim UsuarioServicio As String = If(CvePACEspecial = 2, UsuarioActual.Empresa.RFC, "rene.molina@adsistemas.mx") + Dim ClaveServicio As String = If(CvePACEspecial = 2, UsuarioActual.Empresa.RFC.ToLower, "rene2018") + Dim Clave As String = UsuarioActual.Empresa.ContraseñaKey + Dim EmisorRFC As String = UsuarioActual.Empresa.RFC + Dim UrlServicio As String = "" ' Produccion + Dim RutaArchivo As String = String.Format("{0}XML\{1}\", UsuarioActual.Empresa.Ruta, Ventas.TipoDocto) + Dim NombreArchivoXML As String = ObjCFDITimbre.Comprobante.SerieFolio + Dim SubTotal As Decimal = 0 + Dim TimbraProduccion As Boolean = True + If Not Directory.Exists(RutaArchivo) Then Directory.CreateDirectory(RutaArchivo) + Select Case CvePACEspecial + Case 2 + UrlServicio = "http://generacfdi.com.mx/rvltimbrado/service1.asmx?WSDL" 'productivo + Case 4 + 'UrlServicio = "http://juancalderon-001-site1.ftempurl.com/timbrado.asmx?WSDL" + UrlServicio = "http://alterno.gofac.com.mx/cfdi/timbrado.asmx?WSDL" ' alterno + End Select + + If Not UsuarioActual.Empresa.FacturaProduccion OrElse UsuarioActual.CveEmpresa = 1 Then + + EmisorRFC = "AAA010101AAA" + ArchivoLLave = $"{UsuarioActual.Empresa.Ruta}Certificados\CSD01_AAA010101AAA.key" + ArchivoCertificado = $"{UsuarioActual.Empresa.Ruta}Certificados\CSD01_AAA010101AAA.cer" + Clave = "12345678a" + TimbraProduccion = False + Select Case CvePACEspecial + Case 2 + UsuarioServicio = "fgomez" + ClaveServicio = "12121212" + UrlServicio = "http://generacfdi.com.mx/rvltimbrado/service1.asmx?WSDL" '"http://108.60.211.43/rvltimbrado/service1.asmx" + Case 4 + UsuarioServicio = "UserTest" + ClaveServicio = "1234567890" + UrlServicio = "http://juancalderon-001-site1.ftempurl.com/timbrado.asmx?WSDL" + End Select + End If + +#Region "Valida" + If Not File.Exists(ArchivoCertificado) Then + Alert("El archivo de certificado no existe", TipoMensaje.MsgError) + Return "El archivo de certificado no existe" + End If + If Not File.Exists(ArchivoLLave) Then + Alert("El archivo de llave privada no existe", TipoMensaje.MsgError) + Return "El archivo de llave privada no existe" + End If + If UsuarioActual.Empresa.ContraseñaKey = "" Then + Alert("La clave no puede ser vacía", TipoMensaje.MsgError) + Return "La clave no puede ser vacía" + End If +#End Region + +#Region "Variables" + Dim llaveByte As Byte(), certByte As Byte() + Dim llaveBase64 As String, certBase64 As String + Dim cfdi As New GoFac.GoCfdi() + Dim complemento As String = "" + Dim complementoConcepto As String = "" + +#End Region + +#Region "Verifica" + Try + llaveByte = System.IO.File.ReadAllBytes(ArchivoLLave) + llaveBase64 = Convert.ToBase64String(llaveByte) + Catch ex As Exception + Alert($"Error al leer la llave privada: {ex.Message}", TipoMensaje.MsgError) + Return "Error al leer la llave privada" + End Try + + + Try + certByte = System.IO.File.ReadAllBytes(ArchivoCertificado) + certBase64 = Convert.ToBase64String(certByte) + Catch ex As Exception + Alert($"Error al leer el certificado: {ex.Message}", TipoMensaje.MsgError) + Return "Error al leer el certificado" + + End Try +#End Region + + + sw.Stop() + swTiempo.AppendFormat("Verificado : ({0}) {1} ", sw.ElapsedMilliseconds - swmili, sw.ElapsedMilliseconds) + swmili = sw.ElapsedMilliseconds + sw.Start() + + ' cfdi.saltarValidacion("bNtMuvZockPVhEjaPj0E") + ' cfdi.Decimales = 4 +#Region "Certificado" + cfdi.CertificadoArchivo(ArchivoCertificado) +#End Region + + + sw.Stop() + swTiempo.AppendFormat("Certificado : ({0}) {1} ", sw.ElapsedMilliseconds - swmili, sw.ElapsedMilliseconds) + swmili = sw.ElapsedMilliseconds + sw.Start() + +#Region "Comprobante" + + cfdi.Comprobante33( + ObjCFDITimbre.Comprobante.Serie, + ObjCFDITimbre.Comprobante.Folio, + ObjCFDITimbre.Comprobante.Fecha.ToString("yyyy-MM-ddTHH:mm:ss"), + ObjCFDITimbre.Comprobante.FormadePago, + ObjCFDITimbre.Comprobante.CondicionesdePago, + ObjCFDITimbre.Comprobante.Subtotal, + ObjCFDITimbre.Comprobante.Descuentos, + ObjCFDITimbre.Comprobante.Moneda, + ObjCFDITimbre.Comprobante.TipoCambio.ToString, + ObjCFDITimbre.Comprobante.Total, + ObjCFDITimbre.Comprobante.TipoComprobante, + ObjCFDITimbre.Comprobante.MetodoPago, + ObjCFDITimbre.Comprobante.LugarExpedicion, + ObjCFDITimbre.Comprobante.Confirmacion) + + If ObjCFDITimbre.CFDIRelacionados.TipoRelacion <> "" Then + cfdi.CfdiRelacionados(ObjCFDITimbre.CFDIRelacionados.TipoRelacion) + For Each uid As String In ObjCFDITimbre.CFDIRelacionados.UUID + cfdi.CfdiRelacionado(uid) + Next + End If +#Region "Emisor" + ' cfdi.agregarCfdiRelacionados() + cfdi.Emisor(EmisorRFC, UsuarioActual.Empresa.Empresa, UsuarioActual.Empresa.CodigoRegimenFiscal) + +#End Region + +#Region "Receptor" + + cfdi.Receptor(ObjCFDITimbre.Receptor.RFC, ObjCFDITimbre.Receptor.Nombre, ObjCFDITimbre.Receptor.ResidenciaFiscal, ObjCFDITimbre.Receptor.NumeroRegistroTributario, ObjCFDITimbre.Receptor.UsoCFDI) + +#End Region + +#End Region + +#Region "Conceptos" + + 'Nodo conceptos, se agregan los PS + + If ObjCFDITimbre.Conceptos IsNot Nothing AndAlso ObjCFDITimbre.Conceptos.Count > 0 Then + For Each concep As CFDIConceptos In ObjCFDITimbre.Conceptos + cfdi.Concepto(concep.ClaveProdServ, concep.Noidentificacion, concep.Cantidad, concep.ClaveUnidad, concep.Unidad, concep.Descripcion, concep.ValorUnitario, concep.Importe, concep.Descuento) + For Each imp As CFDIConceptosImpuestos In concep.Impuestos + If imp.TrasladooRetencion = "T" Then + cfdi.ImpuestoConceptoTraslado(imp.Base, imp.Impuesto, imp.TipoFactor, imp.TasaOCuota, imp.Importe) + Else + cfdi.ImpuestoConceptoRetenido(imp.Base, imp.Impuesto, imp.TipoFactor, imp.TasaOCuota, imp.Importe) + End If + Next + If concep.CuentaPredial <> "" Then cfdi.CuentaPredial(concep.CuentaPredial) + If concep.NumeroPedimento <> "" Then cfdi.InformacionAduanera(concep.NumeroPedimento) + Next + End If + +#End Region + + If ObjCFDITimbre.Comprobante.TipoComprobante.Contiene("I", "E") Then + +#Region "Impuestos" + 'SI NO ES FACTURA EN 0 AGREGA LOS IMPUESTOS + If Ventas.Total <> 0 OrElse (ObjCFDITimbre.TotalImpuestosRetenidos > 0 OrElse ObjCFDITimbre.TotalImpuestosTrasladados > 0) Then + cfdi.Impuestos(ObjCFDITimbre.TotalImpuestosRetenidos, ObjCFDITimbre.TotalImpuestosTrasladados) + End If +#End Region +#Region " Traslados y Retenciones" + + + If ObjCFDITimbre.Retenciones.Sum(Function(x) x.Importe) > 0 Then + ''se acumulan los importes + For Each Ret In ObjCFDITimbre.Retenciones + cfdi.Retencion(Ret.Impuesto, Ret.Importe) + Next + End If + + ''se acumulan los importes + For Each Tras In ObjCFDITimbre.Traslados + cfdi.Traslado(Tras.Impuesto, Tras.TipoFactor, Tras.TasaOCuota, Tras.Importe) + Next +#End Region + +#Region "Impuestos Locales" + + If ObjCFDITimbre.RetencionesLocales.Sum(Function(x) x.Importe) > 0 OrElse ObjCFDITimbre.TrasladosLocales.Sum(Function(x) x.Importe) > 0 Then + + cfdi.ImpuestosLocales(ObjCFDITimbre.RetencionesLocales.Sum(Function(x) x.Importe), ObjCFDITimbre.TrasladosLocales.Sum(Function(x) x.Importe)) + + For Each ret As CFDIRetencionesLocales In ObjCFDITimbre.RetencionesLocales + If ret.Importe > 0 Then + cfdi.RetencionLocal(ret.ImpuestoLocalRetenido, ret.TasaRetencion, ret.Importe) + End If + Next + + For Each ret As CFDITrasladosLocales In ObjCFDITimbre.TrasladosLocales + If ret.Importe > 0 Then + cfdi.TrasladoLocal(ret.ImpuestoLocalTraslado, ret.TasaTraslado, ret.Importe) + End If + Next + End If + + If Ventas.CveComplementoTimbrado > 0 Then + + Select Case Ventas.CveComplementoTimbrado + Case 5 'INE Proceso Ordinario Directivo Estatal" + cfdi.Ine11("Ordinario", "Directivo Estatal", "0") + + cfdi.IneEntidad(Ventas.ComplementoINE.INEEntidad, "") + cfdi.IneContabilidad(Ventas.ComplementoINE.INEIdContabilidad) + Case 6 'INE Proceso Ordinario Ejecutivo Estatal" + cfdi.Ine11("Ordinario", "Ejecutivo Estatal", "0") + + cfdi.IneEntidad(Ventas.ComplementoINE.INEEntidad, "") + cfdi.IneContabilidad(Ventas.ComplementoINE.INEIdContabilidad) + Case 7 'INE Proceso Ordinario Ejecutivo Nacional" + + cfdi.Ine11("Ordinario", "Ejecutivo Nacional", Ventas.ComplementoINE.INEIdContabilidad.ToString) + Case 8 'INE PreCampaña + cfdi.Ine11(Ventas.ComplementoINE.INETipoProceso, "", "0") + + cfdi.IneEntidad(Ventas.ComplementoINE.INEEntidad, Ventas.ComplementoINE.INETipoComite) + cfdi.IneContabilidad(Ventas.ComplementoINE.INEIdContabilidad) + End Select + + End If + + + +#End Region + + +#Region "Comercio Exterior" + + If Ventas.Cliente.AplicaComercioExterior And ObjCFDITimbre.Complementos.ComercioExterior11.AplicaComercioExteriorSubProyecto Then + If ObjCFDITimbre.Complementos.ComercioExterior11 IsNot Nothing Then + + 'DATOS GENERALES + cfdi.ComercioExterior11(ObjCFDITimbre.Complementos.ComercioExterior11.MotivoTraslado, + ObjCFDITimbre.Complementos.ComercioExterior11.TipoOperacion, + ObjCFDITimbre.Complementos.ComercioExterior11.ClavedePedimento, + ObjCFDITimbre.Complementos.ComercioExterior11.CertificadoOrigen, + ObjCFDITimbre.Complementos.ComercioExterior11.NumCertificadoOrigen, + ObjCFDITimbre.Complementos.ComercioExterior11.NumeroExportadorConfiable, + ObjCFDITimbre.Complementos.ComercioExterior11.Incoterm, + ObjCFDITimbre.Complementos.ComercioExterior11.Subdivision, + ObjCFDITimbre.Complementos.ComercioExterior11.Observaciones, + ObjCFDITimbre.Complementos.ComercioExterior11.TipoCambioUSD, + ObjCFDITimbre.Complementos.ComercioExterior11.TotalUSD) + 'EMISOR + cfdi.ComercioExterior11Emisor(If(EmisorRFC.Length >= 12, "", ObjCFDITimbre.Complementos.ComercioExterior11.Emisor.CURP)) + cfdi.ComercioExterior11Domicilio(ObjCFDITimbre.Complementos.ComercioExterior11.Emisor.Calle, + ObjCFDITimbre.Complementos.ComercioExterior11.Emisor.NumeroExterior, + ObjCFDITimbre.Complementos.ComercioExterior11.Emisor.NumeroInterior, + ObjCFDITimbre.Complementos.ComercioExterior11.Emisor.Colonia, + ObjCFDITimbre.Complementos.ComercioExterior11.Emisor.Localidad, + ObjCFDITimbre.Complementos.ComercioExterior11.Emisor.Referencia, + ObjCFDITimbre.Complementos.ComercioExterior11.Emisor.Municipio, + ObjCFDITimbre.Complementos.ComercioExterior11.Emisor.Estado, + ObjCFDITimbre.Complementos.ComercioExterior11.Emisor.Pais, + ObjCFDITimbre.Complementos.ComercioExterior11.Emisor.CP) + 'RECEPTOR + cfdi.ComercioExterior11Receptor(ObjCFDITimbre.Complementos.ComercioExterior11.Receptor.NumRegIdTrib) + cfdi.ComercioExterior11DomicilioReceptor(ObjCFDITimbre.Complementos.ComercioExterior11.Receptor.Calle, + ObjCFDITimbre.Complementos.ComercioExterior11.Receptor.NumeroExterior, + ObjCFDITimbre.Complementos.ComercioExterior11.Receptor.NumeroInterior, + ObjCFDITimbre.Complementos.ComercioExterior11.Receptor.Colonia, + ObjCFDITimbre.Complementos.ComercioExterior11.Receptor.Localidad, + ObjCFDITimbre.Complementos.ComercioExterior11.Receptor.Referencia, + ObjCFDITimbre.Complementos.ComercioExterior11.Receptor.Municipio, + ObjCFDITimbre.Complementos.ComercioExterior11.Receptor.Estado, + ObjCFDITimbre.Complementos.ComercioExterior11.Receptor.Pais, + ObjCFDITimbre.Complementos.ComercioExterior11.Receptor.CP) + cfdi.ComercioExterior11Destinatario(ObjCFDITimbre.Complementos.ComercioExterior11.Destinatario.NumRegIdTrib, + ObjCFDITimbre.Complementos.ComercioExterior11.Destinatario.Nombre, + ObjCFDITimbre.Complementos.ComercioExterior11.Destinatario.Calle, + ObjCFDITimbre.Complementos.ComercioExterior11.Destinatario.NumeroExterior, + ObjCFDITimbre.Complementos.ComercioExterior11.Destinatario.NumeroInterior, + ObjCFDITimbre.Complementos.ComercioExterior11.Destinatario.Colonia, + ObjCFDITimbre.Complementos.ComercioExterior11.Destinatario.Localidad, + ObjCFDITimbre.Complementos.ComercioExterior11.Destinatario.Referencia, + ObjCFDITimbre.Complementos.ComercioExterior11.Destinatario.Municipio, + ObjCFDITimbre.Complementos.ComercioExterior11.Destinatario.Estado, + ObjCFDITimbre.Complementos.ComercioExterior11.Destinatario.Pais, + ObjCFDITimbre.Complementos.ComercioExterior11.Destinatario.CP) + 'MERCANCIAS + If ObjCFDITimbre.Complementos.ComercioExterior11.Mercancias IsNot Nothing AndAlso ObjCFDITimbre.Complementos.ComercioExterior11.Mercancias.Count > 0 Then + For Each concep As CFDIComercioExterior11Mercancias In ObjCFDITimbre.Complementos.ComercioExterior11.Mercancias + cfdi.ComercioExterior11Mercancia(concep.NoIdentificacion, concep.FraccionArancelaria, concep.CantidadAduana, concep.UnidadAduana, concep.ValorUnitarioAduana, concep.ValorDolares) + If concep.DescripcionesEspecificas.Marca <> "" Then + cfdi.ComercioExterior11MercanciaDescripcionesEspeciales(concep.DescripcionesEspecificas.Marca, + concep.DescripcionesEspecificas.Modelo, + concep.DescripcionesEspecificas.SubModelo, + concep.DescripcionesEspecificas.NumeroSerie) + End If + Next + + End If + + + End If + End If + +#End Region + + + End If + +#Region "Complemento Pago" + + If ObjCFDITimbre.Comprobante.TipoComprobante = "P" Then + + cfdi.Pago(ObjCFDITimbre.ComplementoPagos.FechaPago.ToString("yyyy-MM-ddTHH:mm:ss"), + ObjCFDITimbre.ComplementoPagos.FormaDePagoP, + ObjCFDITimbre.ComplementoPagos.MonedaP, + ObjCFDITimbre.ComplementoPagos.TipoCambioP, + ObjCFDITimbre.ComplementoPagos.Monto, + ObjCFDITimbre.ComplementoPagos.NumOperacion, + ObjCFDITimbre.ComplementoPagos.RfcEmisorCtaOrd, + ObjCFDITimbre.ComplementoPagos.NomBancoOrdExt, + ObjCFDITimbre.ComplementoPagos.CtaOrdenante, + ObjCFDITimbre.ComplementoPagos.RfcEmisorCtaBen, + ObjCFDITimbre.ComplementoPagos.CtaBeneficiario, + ObjCFDITimbre.ComplementoPagos.TipoCadPago, + ObjCFDITimbre.ComplementoPagos.CertPago, + ObjCFDITimbre.ComplementoPagos.CadPago, + ObjCFDITimbre.ComplementoPagos.SelloPago) + + + If ObjCFDITimbre.ComplementoPagos.DocumentosRelacionados.Count > 0 Then + + + For Each doc As CFDIComplementoPagosDocsRelacionados In ObjCFDITimbre.ComplementoPagos.DocumentosRelacionados + cfdi.PagoDoctoRelacionado(doc.IdDocumento, + doc.Serie, + doc.Folio, + doc.MonedaDR, + doc.TipoCambioDR, + doc.MetodoDePagoDR, + doc.NumParcialidad, + doc.ImpSaldoAnt, + doc.ImpPagado, + doc.ImpSaldoInsoluto) + + Next + + 'Estos impuestos aplicarían para anticipos + If ObjCFDITimbre.ComplementoPagos.TotalImpuestosRetenidos > 0 OrElse ObjCFDITimbre.ComplementoPagos.TotalImpuestosTrasladados > 0 Then + + cfdi.PagoImpuestos(ObjCFDITimbre.ComplementoPagos.TotalImpuestosRetenidos, ObjCFDITimbre.ComplementoPagos.TotalImpuestosTrasladados) + If (ObjCFDITimbre.ComplementoPagos.Impuestos).Where(Function(x) x.TrasladooRetencion = "R").Count > 0 Then + For Each Ret As CFDIConceptosImpuestos In (ObjCFDITimbre.ComplementoPagos.Impuestos).Where(Function(x) x.TrasladooRetencion = "R") + cfdi.PagoRetencion(Ret.Impuesto, Ret.Importe) + Next + End If + If (ObjCFDITimbre.ComplementoPagos.Impuestos).Where(Function(x) x.TrasladooRetencion = "T").Count > 0 Then + For Each Tra As CFDIConceptosImpuestos In (ObjCFDITimbre.ComplementoPagos.Impuestos).Where(Function(x) x.TrasladooRetencion = "T") + cfdi.PagoTraslado(Tra.Impuesto, Tra.TipoFactor, Tra.TasaOCuota, Tra.Importe) + Next + End If + + End If + + + + End If + + End If +#End Region + + + +#Region "Nomina12" + If ObjCFDITimbre.Comprobante.TipoComprobante = "N" Then + + 'cfdi.Esquema.AgregarEsquema("http://www.sat.gob.mx/nomina12 http://www.sat.gob.mx/sitio_internet/cfd/nomina/nomina12.xsd") + cfdi.Nomina12(ObjCFDITimbre.Nomina.TipoNomina, ObjCFDITimbre.Nomina.FechaPago.ToString("yyyy-MM-dd"), ObjCFDITimbre.Nomina.FechaInicio.ToDate().ToString("yyyy-MM-dd"), ObjCFDITimbre.Nomina.FechaFin.ToDate().ToString("yyyy-MM-dd"), ObjCFDITimbre.Nomina.NumDiasPagados, If(ObjCFDITimbre.Nomina.Percepciones IsNot Nothing AndAlso ObjCFDITimbre.Nomina.Percepciones.Count > 0, ObjCFDITimbre.Nomina.TotalPercepciones, 0), If(ObjCFDITimbre.Nomina.Deducciones IsNot Nothing AndAlso ObjCFDITimbre.Nomina.Deducciones.Count > 0, ObjCFDITimbre.Nomina.TotalDeducciones, 0), If(ObjCFDITimbre.Nomina.OtrosPagos IsNot Nothing AndAlso ObjCFDITimbre.Nomina.OtrosPagos.Count > 0, ObjCFDITimbre.Nomina.TotalOtrosPagos, 0)) + + cfdi.Nomina12Emisor(ObjCFDITimbre.Emisor.CURP, If(ObjCFDITimbre.Nomina.Receptor.TipoContrato = "99", "", ObjCFDITimbre.Emisor.RegistroPatronal), ObjCFDITimbre.Emisor.RFC) + + If UsuarioActual.Empresa.UsaAC Then cfdi.Nomina12EntidadSNCF("IF", 90) + + +#Region "Receptor" + + cfdi.Nomina12Receptor(ObjCFDITimbre.Nomina.Receptor.CURP, + ObjCFDITimbre.Nomina.Receptor.NSS, + ObjCFDITimbre.Nomina.Receptor.FechaInicioContrato.ToDate().ToString("yyyy-MM-dd"), + ObjCFDITimbre.Nomina.Receptor.Antiguedad, + ObjCFDITimbre.Nomina.Receptor.TipoContrato, + ObjCFDITimbre.Nomina.Receptor.Sindicalizado, + ObjCFDITimbre.Nomina.Receptor.CodigoTipoJornada, + ObjCFDITimbre.Nomina.Receptor.CodigoRegimenContratacion, + ObjCFDITimbre.Nomina.Receptor.CodigoEmpleado, + ObjCFDITimbre.Nomina.Receptor.Departamento, + ObjCFDITimbre.Nomina.Receptor.Puesto, + ObjCFDITimbre.Nomina.Receptor.CodigoRiesgoPuesto, + If(ObjCFDITimbre.Nomina.TipoNomina = "E", "99", ObjCFDITimbre.Nomina.Receptor.TipoPeriodo), + ObjCFDITimbre.Nomina.Receptor.CodigoBanco, + ObjCFDITimbre.Nomina.Receptor.NumeroCuenta, + ObjCFDITimbre.Nomina.Receptor.SBC, + ObjCFDITimbre.Nomina.Receptor.SDI, + ObjCFDITimbre.Nomina.Receptor.CodigoEntidadFederativa) + 'cfdi.Nomina12SubContratacion("", "0") + 'cfdi.agregarNominaPercepcionesPercepcionAccionesOTitulos12("100", "200"); + 'cfdi.agregarNominaPercepcionesSeparacionIndemnizacion12("100", "10", "1000", "100", "50"); + 'cfdi.agregarNominaPercepcionesJubilacionPensionRetiro12("50", "100", "10", "100", "0"); + + + End If +#End Region + If ObjCFDITimbre.Nomina IsNot Nothing Then + + If ObjCFDITimbre.Nomina.Percepciones IsNot Nothing AndAlso ObjCFDITimbre.Nomina.Percepciones.Count > 0 Then + cfdi.Nomina12Percepciones(ObjCFDITimbre.Nomina.TotalSueldos, ObjCFDITimbre.Nomina.TotalIndemnizacion, ObjCFDITimbre.Nomina.TotalJubilacion, ObjCFDITimbre.Nomina.TotalPercepcionesGravado, ObjCFDITimbre.Nomina.TotalPercepcionesExento) + For Each percep As CFDINominaPercepciones In ObjCFDITimbre.Nomina.Percepciones + cfdi.Nomina12Percepcion(percep.TipoPercepcion, percep.Clave, percep.Concepto, Math.Round(percep.ImporteGravado, 2), Math.Round(percep.ImporteExento, 2)) + Next + End If + + 'deducciones al final + If ObjCFDITimbre.Nomina.Deducciones IsNot Nothing AndAlso ObjCFDITimbre.Nomina.Deducciones.Count > 0 Then + cfdi.Nomina12Deducciones(ObjCFDITimbre.Nomina.TotalDeduccionesOtras, Math.Round(ObjCFDITimbre.Nomina.TotalDeduccionesImpuestosRetenidos, 2)) + For Each deduc As CFDINominaDeducciones In ObjCFDITimbre.Nomina.Deducciones + cfdi.Nomina12Deduccion(deduc.TipoDeduccion, deduc.Clave, deduc.Concepto, Math.Round(deduc.Importe, 2)) + Next + End If + + If ObjCFDITimbre.Nomina.HorasExtras IsNot Nothing AndAlso ObjCFDITimbre.Nomina.HorasExtras.Count > 0 Then + For Each HoraExtra As CFDINominaHorasExtras In ObjCFDITimbre.Nomina.HorasExtras + cfdi.Nomina12HorasExtra(HoraExtra.Dias.ToEntero, HoraExtra.TipoHoras, HoraExtra.HorasExtra, HoraExtra.ImportePagado) + Next + End If + + If ObjCFDITimbre.Nomina.Incapacidades IsNot Nothing AndAlso ObjCFDITimbre.Nomina.Incapacidades.Count > 0 Then + For Each Incap As CFDINominaIncapacidades In ObjCFDITimbre.Nomina.Incapacidades + cfdi.Nomina12Incapacidad(Incap.DiasIncapacidad.ToEntero, Incap.TipoIncapacidad, Incap.Importe) + Next + End If + + If ObjCFDITimbre.Nomina.OtrosPagos IsNot Nothing Then + ' cfdi.agregarNominaOtrosPagosOtroPago12("002", "002", "Subsidio", "10.00"); + ' cfdi.agregarNominaOtrosPagosOtroPagoSubsidioAlEmpleo12("10.00"); + If ObjCFDITimbre.Nomina.OtrosPagos IsNot Nothing AndAlso ObjCFDITimbre.Nomina.OtrosPagos.Count > 0 Then + For Each otpag As CFDINominaOtrosPagos In ObjCFDITimbre.Nomina.OtrosPagos + cfdi.Nomina12OtroPago(otpag.TipoOtroPago, otpag.Clave, otpag.Concepto, otpag.Importe) + If otpag.TipoOtroPago = "002" Then + cfdi.Nomina12SubsidioAlEmpleo(otpag.Subsidiocausado) + End If + + Next + End If + End If + End If +#End Region + + sw.Stop() + swTiempo.AppendFormat("Armado: ({0}) {1} ", sw.ElapsedMilliseconds - swmili, sw.ElapsedMilliseconds) + swmili = sw.ElapsedMilliseconds + sw.Start() +#Region "Genera XML" + Dim ArchivoGenerado As Boolean = False + Try + cfdi.GenerarXMLB64(llaveBase64, Clave) + ArchivoGenerado = True + Catch ex As Exception + Retorno = cfdi.MensajeError + If Retorno = "" OrElse IsNothing(Retorno) Then + Retorno = $"llaveBase64 ={llaveBase64}
Clave ={Clave}
{ex.ToString()}" + End If + MensajeErrorCFDI = Retorno + End Try + +#End Region + sw.Stop() + swTiempo.AppendFormat("Genera: ({0}) {1} ", sw.ElapsedMilliseconds - swmili, sw.ElapsedMilliseconds) + swmili = sw.ElapsedMilliseconds + sw.Start() + +#Region "Timbra" + If ArchivoGenerado Then + + 'cfdi.TimbrarCfdi(UsuarioServicio, ClaveServicio, UrlServicio, TimbraProduccion) + + 'sw.Stop() + 'swTiempo.AppendFormat("Timbrado: ({0}) {1} ", sw.ElapsedMilliseconds - swmili, sw.ElapsedMilliseconds) + 'swmili = sw.ElapsedMilliseconds + 'sw.Start() + 'Verifica el error + 'If cfdi.CodigoError = 0 Then + + ' Dim FolioFiscal As String + + ' UUID = cfdi.UUID + ' FolioFiscal = cfdi.UUID 'obtenerAtributo(cfdi.XmlTimbrado, "TimbreFiscalDigital", "UUID") 'XmlDoc.DocumentElement("cfdi:Complemento").FirstChild.Attributes("UUID").InnerText + + ' If FolioFiscal <> "" Then + + ' cfdi.EscribirXML(cfdi.Xml, RutaArchivo, NombreArchivoXML) + + ' sw.Stop() + ' swTiempo.AppendFormat("Guardado: ({0}) {1} ", sw.ElapsedMilliseconds - swmili, sw.ElapsedMilliseconds) + ' swmili = sw.ElapsedMilliseconds + ' sw.Start() + + ' If ObjCFDITimbre.Comprobante.TipoComprobante <> "P" Then + + ' 'Actualiza Estatus Factura + ' If Ventas.CveVenta > 0 Then + + ' Using ObjVentas As New ClsVentas() + + ' If ObjVentas.UpdateEstatusFactura(3, FolioFiscal, "", ObjCFDITimbre.Comprobante.Fecha, Ventas.CveVenta, CvePAC:=CvePACEspecial) Then + ' Retorno = "" + ' Else + ' Retorno = "Error" + ' End If + ' End Using + + ' 'Genero la addenda Ford + ' If Ventas.Cliente.Ford_GSDB <> "" Then + + ' Dim RutaCadena As String = String.Format("{0}{1}.xml", RutaArchivo, NombreArchivoXML) 'If(UsuarioActual.Empresa.FacturaProduccion, String.Format("{0}XML\{1}\{2}.xml", Ruta, Ventas.SerieFolio), String.Format("{0}XML\{1}\{2}.xml", Ruta, Ventas.TipoDocto, Ventas.SerieFolio)) + + ' Dim FolioFactura As String = "" + ' If UsuarioActual.CveEmpresa = 8 Then FolioFactura = Ventas.Folio.ToString ' sogo, pordefault manda el folio de la factura + ' GeneraAddendaFord(RutaCadena, FolioFactura, Ventas.FordASN, Ventas.FordGSDB) + + ' End If + + ' End If + + ' If ObjCFDITimbre.Comprobante.TipoComprobante = "N" Then + ' Using ObjNomina2 As New ClsNominas() + + ' If ObjNomina2.UpdateEstatusNomNominas(3, CvePACEspecial, FolioFiscal, "", ("01/01/2000").ToDate, ObjCFDITimbre.Nomina.CveNomina, 0, 0, 0, 0, 0) Then + ' Retorno = "" + ' Else + ' Retorno = "Error" + ' End If + ' End Using + ' End If + + ' If ObjCFDITimbre.Comprobante.TipoComprobante = "T" Then + ' Using ObjInv As New ClsInventarios() + ' If ObjInv.UpdateMovimientoTimbrado(Ventas.Inv_CveMovimiento, 1, FolioFiscal, MinFecha) Then + ' Retorno = "" + ' Else + ' Retorno = "Error" + ' End If + ' End Using + ' End If + ' End If + + ' If Not IO.Directory.Exists($"{UsuarioActual.Empresa.Ruta}CBB\") Then IO.Directory.CreateDirectory($"{UsuarioActual.Empresa.Ruta}CBB\") + + ' Try + ' Dim RutaCBB As String = $"{UsuarioActual.Empresa.Ruta}CBB\{ObjCFDITimbre.Comprobante.SerieFolio}.jpg" + ' Dim b As Byte() = cfdi.QrCode($"?re={UsuarioActual.Empresa.RFC}&rr={ObjCFDITimbre.Receptor.RFC}&tt={String.Format("{0,12:F6}", ObjCFDITimbre.Comprobante.Total).Trim()}&id={FolioFiscal}") + ' File.WriteAllBytes(RutaCBB, b) + ' Catch ex As Exception + ' OnError("Ocurrió un error al generar el QR", ex) + ' End Try + ' Retorno = "" + ' Else + ' Retorno = "No se pudo timbrar ante el SAT. UUID no generado." + ' End If + ' sw.Stop() + ' swTiempo.AppendFormat("Actualizado: ({0}) {1} ", sw.ElapsedMilliseconds - swmili, sw.ElapsedMilliseconds) + ' swmili = sw.ElapsedMilliseconds + ' sw.Start() + + 'Else + ' Retorno = cfdi.MensajeError + ' MensajeErrorCFDI = cfdi.MensajeError + ' If cfdi.Xml <> "" Then cfdi.EscribirXML(cfdi.Xml, RutaArchivo, NombreArchivoXML) + + 'End If + End If + +#End Region + GuardaLogTimbrado(swTiempo.ToString, CvePACEspecial) + Return Retorno + End Function + Public Sub GuardaLogTimbrado(Str As String, CvePAC As Integer) Dim ArchivoW As StreamWriter Dim strLineaTMP As String diff --git a/App_WebReferences/Cancelacion/cancelacion.wsdl b/App_WebReferences/Cancelacion/cancelacion.wsdl new file mode 100644 index 000000000..12503b338 --- /dev/null +++ b/App_WebReferences/Cancelacion/cancelacion.wsdl @@ -0,0 +1,369 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Cancela un Cfdi en pruebas + + + + + Obtiene el estatus de un Cfdi en producción + + + + + Obtiene el estatus de un Cfdi en pruebas + + + + + Obtiene los Uuid pendientes de aceptar/rechazar de un Receptor (Producción) + + + + + Obtiene los Uuid pendientes de aceptar/rechazar de un Receptor (Pruebas) + + + + + Acepta/Rechaza una solicitud pendiente de cancelación (Producción) + + + + + Acepta/Rechaza una solicitud pendiente de cancelación (Pruebas) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Compras/Compras.aspx.vb b/Compras/Compras.aspx.vb index 596aa860d..998d47301 100644 --- a/Compras/Compras.aspx.vb +++ b/Compras/Compras.aspx.vb @@ -6882,7 +6882,7 @@ Partial Class Compras_Compras End If - If UsuarioActual.CveEmpresa.Contiene(119) Then + If UsuarioActual.CveEmpresa.Contiene(119, 158) Then Dim ContienePSNeteoBonif As Boolean = False For Each Dr As DataRow In TmpDT.Rows If Dr("CveClasificacion").ToString.ToEntero.Contiene(20319) Or DdlTipoCompra.SelectedValue.ToEntero = 11 Then 'clasificación de Bonificación, no se incluirá en el neteo @@ -7017,7 +7017,7 @@ Partial Class Compras_Compras End If Dim usacomplementariaProveedor As Boolean = False - usacomplementariaProveedor = If(tipoCambioActual > 1 AndAlso UsuarioActual.CveEmpresa.Contiene(1, 119), True, False) + usacomplementariaProveedor = If(tipoCambioActual > 1 AndAlso UsuarioActual.CveEmpresa.Contiene(1, 119, 158), True, False) If usacomplementariaProveedor AndAlso DdlTipoComprobante.SelectedValue = "Ant" Then 'importeMovimiento @@ -8395,7 +8395,7 @@ Partial Class Compras_Compras 'CUANDO ES REEMBOLSO COMPROBACION Y CAJA CHICA - If UsuarioActual.CveEmpresa.Contiene(1, 119) AndAlso TxtNumeroReembolso.Text.Trim <> "" AndAlso (DdlPersonalReembolso.SelectedValue.ToEntero > 0 Or DdlCuentaCajaChicaReembolso.SelectedValue.ToEntero > 0) Then + If UsuarioActual.CveEmpresa.Contiene(1, 119, 158) AndAlso TxtNumeroReembolso.Text.Trim <> "" AndAlso (DdlPersonalReembolso.SelectedValue.ToEntero > 0 Or DdlCuentaCajaChicaReembolso.SelectedValue.ToEntero > 0) Then If ObjCompras.GetComprobacion(DdlPersonalReembolso.SelectedValue.ToEntero, DdlCuentaCajaChicaReembolso.SelectedValue.ToEntero, TxtNumeroReembolso.Text.Trim, UsuarioActual.CveEmpresa) Then Dim CvePreComprobacion As Integer If ObjCompras.DtResultados.Rows.Count = 0 Then diff --git a/Empresas/141/Formatos/Cotizacion.rdlc b/Empresas/141/Formatos/Cotizacion.rdlc index 0b05ae519..67f6d1a19 100644 --- a/Empresas/141/Formatos/Cotizacion.rdlc +++ b/Empresas/141/Formatos/Cotizacion.rdlc @@ -1525,117 +1525,11 @@ 2pt - - true - true - true - - - - - Folio Fiscal: - - - - =Parameters!FolioFiscal.Value - - - - - - - =Parameters!FechaCertificacion.Value - - - - - - - =Parameters!SerieCertificadoSAT.Value - - - - - - 2pt - 2pt - 2pt - 2pt - - true true true - - - - No. de Serie del Certificado del CSD: - - - - =Parameters!CertificadoContribuyente.Value - - - - @@ -1778,7 +1672,7 @@ 0.25136cm 0.74611cm 13.82025cm - 11 + 10 @@ -1811,7 +1705,7 @@ 14.07729cm 0.57354cm 2.90753cm - 12 + 11 @@ -1846,7 +1740,7 @@ 0.26772cm 0.52062cm 9.72441cm - 13 + 12 @@ -1884,7 +1778,7 @@ 1.68221cm 1.05328cm 17.71415cm - 14 + 13 =IIF((Sum(IIF(Fields!CveClasificacion.Value = 20345,1,0), "DsOC") > 0),false,true) @@ -2016,7 +1910,7 @@ 0.22108cm 2.03224cm 20.79751cm - 15 + 14 @@ -2046,7 +1940,7 @@ 0.19009cm 0.05496cm 20.88652cm - 16 + 15 @@ -2058,21 +1952,6 @@ 2pt - - Embedded - ID5 - FitProportional - 11.02339cm - 0.17151cm - 0.96488cm - 3.75909cm - 17 - - - - true true @@ -2100,7 +1979,7 @@ 0.19008cm 0.40655cm 12.88812cm - 18 + 16 @@ -2111,51 +1990,6 @@ 2pt - - Embedded - ID4 - FitProportional - 11.02339cm - 4.34941cm - 0.91769cm - 3.03541cm - 19 - - - - - - Embedded - ID1 - FitProportional - 11.02339cm - 7.56121cm - 0.97656cm - 4.16281cm - 20 - - - - - - Embedded - ID6 - FitProportional - 11.02339cm - 11.90634cm - 1.01184cm - 3.76809cm - 21 - - - - Embedded ID3 @@ -2164,7 +1998,7 @@ 15.67443cm 0.93046cm 5.37042cm - 22 + 17 @@ -2196,61 +2030,7 @@ 15.67443cm 0.50299cm 5.42547cm - 23 - - - 2pt - 2pt - 2pt - 2pt - - - - true - true - - - - - Ord. Compra: - - - - =Parameters!OC.Value - - - - - - - @@ -2268,61 +2048,7 @@ - Tipo de Comprobante:I Ingreso,Moneda: - - - - =Parameters!MonedaAbreviatura.Value - - - - , Uso de CFDI: - - - - =Parameters!UsoCFDI.Value - - - - , Forma de Pago: - - - - =Parameters!FormaPago.Value - - - - , Método de Pago: + Pago: @@ -2430,7 +2156,7 @@ 6.24049in 0.21875in 0.94607in - 26 + 20 @@ -2465,7 +2191,7 @@ 6.24048in 0.21875in 0.94607in - 27 + 21 @@ -2500,7 +2226,7 @@ 6.24048in 0.21875in 0.94607in - 28 + 22 @@ -2535,7 +2261,7 @@ 6.24048in 0.21875in 0.94607in - 29 + 23 @@ -2571,7 +2297,7 @@ 6.24048in 0.21875in 0.94607in - 30 + 24 @@ -2607,7 +2333,7 @@ 7.18656in 0.21875in 0.98426in - 31 + 25 @@ -2642,7 +2368,7 @@ 7.18656in 0.20486in 0.98425in - 32 + 26 @@ -2677,7 +2403,7 @@ 7.18656in 0.19899in 0.98425in - 33 + 27 @@ -2713,7 +2439,7 @@ 7.18656in 0.19284in 0.98425in - 34 + 28 @@ -2749,7 +2475,7 @@ 7.18656in 0.19596in 0.98425in - 35 + 29 @@ -2784,7 +2510,7 @@ 4.32565cm 0.82021cm 7.93893cm - 36 + 30 @@ -2814,7 +2540,7 @@ 0.19009cm 0.05496cm 20.88652cm - 37 + 31 @@ -2826,6 +2552,84 @@ 2pt + + true + true + + + + + Este documento es una cotización sin efectos fiscales ni tampoco es un comprobante de pago + + + + + + 2pt + 2pt + 2pt + 2pt + + + + Embedded + Screenshot_2 + FitProportional + 10.94818cm + 0.22202cm + 0.95717cm + 4.40152cm + 33 + + + + + + Embedded + Screenshot_3 + FitProportional + 10.94818cm + 6.07789cm + 0.92189cm + 3.75114cm + 34 + + + + + + Embedded + Screenshot_4 + FitProportional + 10.97239cm + 11.40131cm + 0.93296cm + 3.82833cm + 35 + + + + 15.93202cm - - - - - - - - Sahuaro (662) 2161471 - Solidaridad (662) 216-0935 - Palo Verde (662) 4363254 - Progreso (662) 3105781 - Quiroga (662) 261- 0838 - Caborca (637) 3724214 - Magdalena (632) 322-4080 - - - - - - - - - Nogales (631) 319-0093 - Cananea (645) 332 20 40 - Guaymas (622) 222-2417 - Obregón (644)412-2002 Obregón II (644) 413-1543- Obregón III (644) 4134501 - Navojoa (642) 422-9852 - - - - - - - - - Sinaloa: Los Mochis (668) 817-0209 - Los Mochis II (668) 176-5802 - Guasave (687) 871-5317 - Calzada (667) 729-2112 - Zapata (667) 992-0876 - Tierra Blanca (667) 716-6997 - Sanalona (667) 713-667 - - - - - - - - - Tres Ríos (667) 455-4621 - Mazatlán (669) 910-2122 - Baja California: Tijuana1 (664) 622-5221 - Tijuana3 (664) 626-2615 - Rosarito (661) 612-4461 - Mexicali (686) 567-6102 - Mexicali3 (686) 326 02 79 - - - - - - - - - Tecate (665) 5212080 - Ensenada (646) 172-4075 - Ensenada2 (646) 176-2703 - Baja California Sur: La Paz (612) 146-3656 - La Paz 2 (612) 121-3185 - Los Cabos (624) 688 3552 - - - - - - - Textbox4 - 9.91718cm - 0.22108cm - 2.03224cm - 20.79751cm - - - 2pt - 2pt - 2pt - 2pt - - @@ -612,11 +477,10 @@ true - 6.31618in + 6.06618in 0.06752in 1.42169in 8.23953in - 1 @@ -1411,7 +1275,7 @@ 0.09836in 0.36206in 8.16629in - 2 + 1 @@ -1433,11 +1297,11 @@ Textbox5 - 9.27559cm + 8.32309cm 0.28014cm 0.05496cm 20.88652cm - 3 + 2 @@ -1481,11 +1345,11 @@ Textbox1 - 9.36582cm + 8.41332cm 2.01402cm 0.51608cm 19.15264cm - 4 + 3 @@ -1504,7 +1368,7 @@ 1.15361cm 2.413cm 2.75323cm - 5 + 4 @@ -1584,7 +1448,7 @@ 4.32565cm 2.70968cm 7.93893cm - 6 + 5 @@ -1664,7 +1528,7 @@ 12.68838cm 2.70968cm 5.11312cm - 7 + 6 @@ -1698,7 +1562,7 @@ 18.23008cm 0.96018cm 2.79101cm - 8 + 7 @@ -1734,7 +1598,7 @@ 18.23008cm 0.6cm 2.79101cm - 9 + 8 @@ -1785,7 +1649,7 @@ 18.23008cm 0.86903cm 2.79101cm - 10 + 9 @@ -1876,7 +1740,7 @@ 0.28014cm 1.09007cm 9.71199cm - 11 + 10 @@ -1956,7 +1820,7 @@ 10.06268cm 0.7927cm 9.71199cm - 12 + 11 @@ -2137,7 +2001,7 @@ 0.25136cm 0.74611cm 13.82025cm - 13 + 12 @@ -2170,7 +2034,7 @@ 14.07729cm 0.57354cm 2.90753cm - 14 + 13 @@ -2204,11 +2068,11 @@ Textbox4 - 6.1926cm + 5.8751cm 1.74571cm 1.05328cm 17.71415cm - 15 + 14 =IIF((Sum(IIF(Fields!CveClasificacion.Value = 20345,1,0), "DsOC") > 0),false,true) @@ -2222,6 +2086,142 @@ 2pt + + true + true + true + + + + + Sonora: Veracruz (662) 210-0041 - Morelos (662) 211-0805 - Colosio (662) 2608088 - Colosio2 (662) 1189939 - Reforma (662) 213-8724 - Perisur (662) 254-4849 - Rodríguez (662) 213-0388 + + + + + + + + + Sahuaro (662) 2161471 - Solidaridad (662) 216-0935 - Palo Verde (662) 4363254 - Progreso (662) 3105781 - Quiroga (662) 261- 0838 - Caborca (637) 3724214 - Magdalena (632) 322-4080 + + + + + + + + + Nogales (631) 319-0093 - Cananea (645) 332 20 40 - Guaymas (622) 222-2417 - Obregón (644)412-2002 Obregón II (644) 413-1543- Obregón III (644) 4134501 - Navojoa (642) 422-9852 + + + + + + + + + Sinaloa: Los Mochis (668) 817-0209 - Los Mochis II (668) 176-5802 - Guasave (687) 871-5317 - Calzada (667) 729-2112 - Zapata (667) 992-0876 - Tierra Blanca (667) 716-6997 - Sanalona (667) 713-667 + + + + + + + + + Tres Ríos (667) 455-4621 - Mazatlán (669) 910-2122 - Baja California: Tijuana1 (664) 622-5221 - Tijuana3 (664) 626-2615 - Rosarito (661) 612-4461 - Mexicali (686) 567-6102 - Mexicali3 (686) 326 02 79 + + + + + + + + + Tecate (665) 5212080 - Ensenada (646) 172-4075 - Ensenada2 (646) 176-2703 - Baja California Sur: La Paz (612) 146-3656 - La Paz 2 (612) 121-3185 - Los Cabos (624) 688 3552 + + + + + + + Textbox4 + 8.96468cm + 0.22108cm + 2.03224cm + 20.79751cm + 15 + + + 2pt + 2pt + 2pt + 2pt + + true true @@ -2237,7 +2237,7 @@ Textbox5 - 13.24259cm + 12.60759cm 0.24983cm 0.05496cm 20.88652cm @@ -2253,6 +2253,57 @@ 2pt + + Embedded + ID3 + FitProportional + 21.4598cm + 0.28014cm + 0.93046cm + 5.37042cm + 17 + + + + + + true + true + + + + + DESCARGA NUESTRA NUEVA APLICACIÓN + + + + + + + Textbox60 + 19.12502cm + 0.28014cm + 0.6882cm + 20.71217cm + 18 + + + 2pt + 2pt + 2pt + 2pt + + true true @@ -2295,7 +2346,7 @@ 17.09066cm 0.64028cm 3.90165cm - 17 + 19 @@ -2458,11 +2509,11 @@ Textbox4 - 13.40338cm + 12.76838cm 0.16383cm 2.44366cm 15.51057cm - 18 + 20 @@ -2493,11 +2544,11 @@ Textbox19 - 5.26303in + 5.01303in 6.21617in 0.17708in 0.94607in - 19 + 21 @@ -2528,11 +2579,11 @@ Textbox19 - 5.4555in + 5.2055in 6.21616in 0.17966in 0.94607in - 20 + 22 @@ -2563,11 +2614,11 @@ Textbox19 - 5.65449in + 5.40449in 6.21616in 0.18819in 0.94607in - 21 + 23 @@ -2598,11 +2649,11 @@ Textbox19 - 5.86074in + 5.61074in 6.22658in 0.17119in 0.94607in - 22 + 24 @@ -2634,11 +2685,11 @@ Textbox19 - 6.05137in + 5.80137in 6.237in 0.19596in 0.94607in - 23 + 25 @@ -2670,11 +2721,11 @@ Textbox42 - 5.28803in + 5.03803in 7.16224in 0.17708in 0.98426in - 24 + 26 @@ -2705,11 +2756,11 @@ Textbox42 - 5.4805in + 5.2305in 7.16224in 0.17966in 0.98425in - 25 + 27 @@ -2740,11 +2791,11 @@ Textbox42 - 5.67949in + 5.42949in 7.17266in 0.18819in 0.98425in - 26 + 28 @@ -2776,11 +2827,11 @@ Textbox42 - 5.88574in + 5.63574in 7.17266in 0.17119in 0.98425in - 27 + 29 @@ -2812,11 +2863,11 @@ Textbox42 - 6.07637in + 5.82637in 7.18308in 0.19596in 0.98425in - 28 + 30 @@ -2853,7 +2904,7 @@ 6.75122cm 0.82021cm 5.51336cm - 29 + 31 @@ -2879,79 +2930,10 @@ Textbox5 - 15.9176cm + 15.2826cm 0.10579cm 0.05496cm 20.88652cm - 30 - - - Black - 2pt - 2pt - 2pt - 2pt - - - - true - true - true - - - - - < ** Toda corrección de los datos del comprobante debera efectuarse a más tardar tres dias despues de su expedición. ** > - - - - - - 2pt - 2pt - 2pt - 2pt - - - - true - true - - - - - - - - true - true - - - - - - - - Black - 2pt - 2pt - 2pt - 2pt - - - - Embedded - rockblade - FitProportional - 12.06211cm - 6.5919cm - 0.62223cm - 4.03523cm - 34 - - - - - - Embedded - yokohama2 - FitProportional - 12.06211cm - 0.58737cm - 0.62223cm - 4.03523cm - 35 - - - - - - Embedded - mastercraft - FitProportional - 12.12228cm - 17.02729cm - 0.62223cm - 4.03523cm - 36 - - - - - - Embedded - coopertires - FitProportional - 12.18225cm - 11.79701cm - 0.62223cm - 4.03523cm - 37 - - - - true true @@ -3063,40 +2954,21 @@ - ESTAS LLANTAS SOLO TENDRAN GARANTÍA DE POR VIDA CONTRA DEFECTO DE FABRICA. -*SI LAS LLANTAS NO SON INSTALADAS EN ECONOLLANTAS PIERDE SU GARANTÍA DE FABRICA*. + ** SI LAS LLANTAS NO SON INSTALADAS EN ECONOLLANTAS PIERDE SU GARANTÍA DE FABRICA ** + + - - - - - - - - PARA UNA OPTIMA DURACION DE SUS LLANTAS, ESTAS DEBEN ALINEARSE BALANCEARSE Y ROTAR CADA 6 MESES O 1O MIL KILOMETROS. - - - - PARA HACER VALIDA UNA RECLAMACIÓN DEBERAN CUMPLIR CON EL ANTERIOR REQUISITO - @@ -3105,11 +2977,14 @@ Textbox3 - 7.34113cm - 0.14007cm - 1.72456cm - 20.95984cm - 38 + 6.92838cm + 1.15361cm + 1.32415cm + 19.15078cm + 33 + + =IIF((Sum(IIF(Fields!CveClasificacion.Value = 20345,1,0), "DsOC") = 0) and (Sum(IIF(Fields!CveClasificacion.Value = 20342 or Fields!CveClasificacion.Value = 20341,1,0), "DsOC") > 0),false,true) + @@ -3120,47 +2995,34 @@ 2pt - - Embedded - ID3 - FitProportional - 22.13416cm - 0.22725cm - 0.93046cm - 5.37042cm - 39 - - - - - + true + true true - DESCARGA NUESTRA NUEVA APLICACIÓN + < ** Toda corrección de los datos del comprobante debera efectuarse a más tardar tres dias despues de su expedición. ** > - + @@ -3176,11 +3038,11 @@ =System.Convert.FromBase64String(Parameters!QRDescarga.Value) image/png FitProportional - 8.33399in - 6.65661in + 8.0685in + 6.67743in 0.6035in 0.78275in - 41 + 35 @@ -3229,11 +3091,11 @@ Textbox60 - 20.24416cm - 0.22725cm + 19.5698cm + 0.28014cm 1.49135cm 5.37042cm - 42 + 36 @@ -3244,6 +3106,68 @@ 2pt + + true + true + + + + + + + + Black + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + + + + Black + 2pt + 2pt + 2pt + 2pt + + true true @@ -3322,11 +3246,11 @@ Textbox60 - 20.24416cm - 7.39856cm + 19.5698cm + 7.45145cm 2.45709cm 6.56105cm - 43 + 39 @@ -3361,11 +3285,11 @@ Textbox60 - 20.23438cm - 14.61856cm + 19.56002cm + 14.67145cm 1.46939cm 6.32076cm - 44 + 40 @@ -3376,24 +3300,68 @@ 2pt - - - Start - - true - 19.90494cm - 0cm - 3.07798cm - 21.09991cm - 45 + + Embedded + rockblade + FitProportional + 11.19428cm + 5.58835cm + 0.86918cm + 4.08628cm + 41 - + + + Embedded + yokohama2 + FitProportional + 11.33186cm + 0.58737cm + 0.65751cm + 4.35272cm + 42 + + + + + + Embedded + mastercraft + FitProportional + 11.30011cm + 17.06617cm + 0.93972cm + 3.99634cm + 43 + + + + + + Embedded + coopertires + FitProportional + 11.33186cm + 10.33489cm + 0.65751cm + 6.09184cm + 44 + + + + - 23.17899cm + 22.57045cm diff --git a/Ventas/ProductosServicios.aspx.vb b/Ventas/ProductosServicios.aspx.vb index 18dbbe908..8277745fb 100644 --- a/Ventas/ProductosServicios.aspx.vb +++ b/Ventas/ProductosServicios.aspx.vb @@ -2853,6 +2853,8 @@ Partial Class ProductosyServicios ClaveImpuestoUM:=DdlImpUM.SelectedValue.ToString, ClaveCategoriaToxicidad:=DdlCategoriaToxicidad.SelectedValue.ToString, ClaveImpuestoTipoProducto:=DdlImpTipoProducto.SelectedValue.ToString, EsOutSourcing:=ChkEsOutSourcing.Checked, TiempoCaducidad:=TxtTiempoCaducidad.Text.ToEntero()) > 0 Then 'Alert(String.Format("Error al agregar el nuevo producto en la franquicia: '{0}'", GlobalDTEmpresas(Franquicia).FiltroPrimeroValor("Empresa"))) + + GlobalDTPSSimplificado(Franquicia) = Nothing Return True End If @@ -2872,6 +2874,7 @@ Partial Class ProductosyServicios ClaveImpuestoUM:=DdlImpUM.SelectedValue.ToString, ClaveCategoriaToxicidad:=DdlCategoriaToxicidad.SelectedValue.ToString, ClaveImpuestoTipoProducto:=DdlImpTipoProducto.SelectedValue.ToString, EsOutSourcing:=ChkEsOutSourcing.Checked, AplicaSerie:=ChkSerie.Checked, AplicaLote:=ChkLote.Checked, AplicaCaducidad:=ChkCaducidad.Checked, AplicaSeccion:=ChkSeccion.Checked, TiempoCaducidad:=TxtTiempoCaducidad.Text.ToEntero()) Then + GlobalDTPSSimplificado(Franquicia) = Nothing Return True End If diff --git a/Ventas/RepComisionesJAM.aspx b/Ventas/RepComisionesJAM.aspx index cf06867b3..f3ef9926b 100644 --- a/Ventas/RepComisionesJAM.aspx +++ b/Ventas/RepComisionesJAM.aspx @@ -86,7 +86,7 @@
-
Esquema Nuevo:
+
ProForma:
From c4a74c9216ad8f4bf64fa59765aaa7f7b6499e04 Mon Sep 17 00:00:00 2001 From: rrene Date: Wed, 16 Dec 2020 16:33:45 -0700 Subject: [PATCH 04/18] Revert "-- clonar producto, actualizar global de ps" This reverts commit 7c02807c4e77eae0e308a7063a087e988b02a556. --- App_Code/Timbrado.vb | 604 ------------ .../Cancelacion/cancelacion.wsdl | 369 -------- Compras/Compras.aspx.vb | 6 +- Empresas/141/Formatos/Cotizacion.rdlc | 553 ++++++----- Empresas/141/Formatos/Factura.rdlc | 863 +++++++++--------- Empresas/141/Formatos/RepPS.rdlc | 9 +- Ventas/ProductosServicios.aspx.vb | 3 - Ventas/RepComisionesJAM.aspx | 2 +- 8 files changed, 761 insertions(+), 1648 deletions(-) delete mode 100644 App_WebReferences/Cancelacion/cancelacion.wsdl diff --git a/App_Code/Timbrado.vb b/App_Code/Timbrado.vb index afbac5a8a..e4cda96bc 100644 --- a/App_Code/Timbrado.vb +++ b/App_Code/Timbrado.vb @@ -653,12 +653,6 @@ Public Class Timbrado Dim Ret As String = TimbrarFacturaGoCFDIv33(Ventas, UsuarioActual, CvePACEspecial) If Ret <> "" Then MensajeErrorCFDI = Ret Retorno = If(Ret = "", True, False) - Case 5 - - Dim Ret As String = TimbrarFacturaProdigiav33(Ventas, UsuarioActual, CvePACEspecial) - If Ret <> "" Then MensajeErrorCFDI = Ret - Retorno = If(Ret = "", True, False) - End Select @@ -2191,604 +2185,6 @@ Public Class Timbrado GuardaLogTimbrado(swTiempo.ToString, CvePACEspecial) Return Retorno End Function - - Public Function TimbrarFacturaProdigiav33(Ventas As Modelos.Factura, UsuarioActual As Usuario, Optional CvePACEspecial As Integer = -1) As String - If CvePACEspecial = -1 Then - CvePACEspecial = UsuarioActual.Empresa.CvePAC - End If - Dim sw As New Diagnostics.Stopwatch - Dim swmili As Long = 0 - Dim swTiempo As New StringBuilder - sw.Start() - Dim Retorno As String = "" - Dim ObjCFDITimbre As CFDITimbre = Ventas.Timbre - ' 'Sucursal matriz de la empresa - Dim ArchivoLLave As String = String.Format("{0}Certificados\{1}", UsuarioActual.Empresa.Ruta, UsuarioActual.Empresa.ArchivoKey) - Dim ArchivoCertificado As String = String.Format("{0}Certificados\{1}", UsuarioActual.Empresa.Ruta, UsuarioActual.Empresa.ArchivoCer) - Dim UsuarioServicio As String = If(CvePACEspecial = 2, UsuarioActual.Empresa.RFC, "rene.molina@adsistemas.mx") - Dim ClaveServicio As String = If(CvePACEspecial = 2, UsuarioActual.Empresa.RFC.ToLower, "rene2018") - Dim Clave As String = UsuarioActual.Empresa.ContraseñaKey - Dim EmisorRFC As String = UsuarioActual.Empresa.RFC - Dim UrlServicio As String = "" ' Produccion - Dim RutaArchivo As String = String.Format("{0}XML\{1}\", UsuarioActual.Empresa.Ruta, Ventas.TipoDocto) - Dim NombreArchivoXML As String = ObjCFDITimbre.Comprobante.SerieFolio - Dim SubTotal As Decimal = 0 - Dim TimbraProduccion As Boolean = True - If Not Directory.Exists(RutaArchivo) Then Directory.CreateDirectory(RutaArchivo) - Select Case CvePACEspecial - Case 2 - UrlServicio = "http://generacfdi.com.mx/rvltimbrado/service1.asmx?WSDL" 'productivo - Case 4 - 'UrlServicio = "http://juancalderon-001-site1.ftempurl.com/timbrado.asmx?WSDL" - UrlServicio = "http://alterno.gofac.com.mx/cfdi/timbrado.asmx?WSDL" ' alterno - End Select - - If Not UsuarioActual.Empresa.FacturaProduccion OrElse UsuarioActual.CveEmpresa = 1 Then - - EmisorRFC = "AAA010101AAA" - ArchivoLLave = $"{UsuarioActual.Empresa.Ruta}Certificados\CSD01_AAA010101AAA.key" - ArchivoCertificado = $"{UsuarioActual.Empresa.Ruta}Certificados\CSD01_AAA010101AAA.cer" - Clave = "12345678a" - TimbraProduccion = False - Select Case CvePACEspecial - Case 2 - UsuarioServicio = "fgomez" - ClaveServicio = "12121212" - UrlServicio = "http://generacfdi.com.mx/rvltimbrado/service1.asmx?WSDL" '"http://108.60.211.43/rvltimbrado/service1.asmx" - Case 4 - UsuarioServicio = "UserTest" - ClaveServicio = "1234567890" - UrlServicio = "http://juancalderon-001-site1.ftempurl.com/timbrado.asmx?WSDL" - End Select - End If - -#Region "Valida" - If Not File.Exists(ArchivoCertificado) Then - Alert("El archivo de certificado no existe", TipoMensaje.MsgError) - Return "El archivo de certificado no existe" - End If - If Not File.Exists(ArchivoLLave) Then - Alert("El archivo de llave privada no existe", TipoMensaje.MsgError) - Return "El archivo de llave privada no existe" - End If - If UsuarioActual.Empresa.ContraseñaKey = "" Then - Alert("La clave no puede ser vacía", TipoMensaje.MsgError) - Return "La clave no puede ser vacía" - End If -#End Region - -#Region "Variables" - Dim llaveByte As Byte(), certByte As Byte() - Dim llaveBase64 As String, certBase64 As String - Dim cfdi As New GoFac.GoCfdi() - Dim complemento As String = "" - Dim complementoConcepto As String = "" - -#End Region - -#Region "Verifica" - Try - llaveByte = System.IO.File.ReadAllBytes(ArchivoLLave) - llaveBase64 = Convert.ToBase64String(llaveByte) - Catch ex As Exception - Alert($"Error al leer la llave privada: {ex.Message}", TipoMensaje.MsgError) - Return "Error al leer la llave privada" - End Try - - - Try - certByte = System.IO.File.ReadAllBytes(ArchivoCertificado) - certBase64 = Convert.ToBase64String(certByte) - Catch ex As Exception - Alert($"Error al leer el certificado: {ex.Message}", TipoMensaje.MsgError) - Return "Error al leer el certificado" - - End Try -#End Region - - - sw.Stop() - swTiempo.AppendFormat("Verificado : ({0}) {1} ", sw.ElapsedMilliseconds - swmili, sw.ElapsedMilliseconds) - swmili = sw.ElapsedMilliseconds - sw.Start() - - ' cfdi.saltarValidacion("bNtMuvZockPVhEjaPj0E") - ' cfdi.Decimales = 4 -#Region "Certificado" - cfdi.CertificadoArchivo(ArchivoCertificado) -#End Region - - - sw.Stop() - swTiempo.AppendFormat("Certificado : ({0}) {1} ", sw.ElapsedMilliseconds - swmili, sw.ElapsedMilliseconds) - swmili = sw.ElapsedMilliseconds - sw.Start() - -#Region "Comprobante" - - cfdi.Comprobante33( - ObjCFDITimbre.Comprobante.Serie, - ObjCFDITimbre.Comprobante.Folio, - ObjCFDITimbre.Comprobante.Fecha.ToString("yyyy-MM-ddTHH:mm:ss"), - ObjCFDITimbre.Comprobante.FormadePago, - ObjCFDITimbre.Comprobante.CondicionesdePago, - ObjCFDITimbre.Comprobante.Subtotal, - ObjCFDITimbre.Comprobante.Descuentos, - ObjCFDITimbre.Comprobante.Moneda, - ObjCFDITimbre.Comprobante.TipoCambio.ToString, - ObjCFDITimbre.Comprobante.Total, - ObjCFDITimbre.Comprobante.TipoComprobante, - ObjCFDITimbre.Comprobante.MetodoPago, - ObjCFDITimbre.Comprobante.LugarExpedicion, - ObjCFDITimbre.Comprobante.Confirmacion) - - If ObjCFDITimbre.CFDIRelacionados.TipoRelacion <> "" Then - cfdi.CfdiRelacionados(ObjCFDITimbre.CFDIRelacionados.TipoRelacion) - For Each uid As String In ObjCFDITimbre.CFDIRelacionados.UUID - cfdi.CfdiRelacionado(uid) - Next - End If -#Region "Emisor" - ' cfdi.agregarCfdiRelacionados() - cfdi.Emisor(EmisorRFC, UsuarioActual.Empresa.Empresa, UsuarioActual.Empresa.CodigoRegimenFiscal) - -#End Region - -#Region "Receptor" - - cfdi.Receptor(ObjCFDITimbre.Receptor.RFC, ObjCFDITimbre.Receptor.Nombre, ObjCFDITimbre.Receptor.ResidenciaFiscal, ObjCFDITimbre.Receptor.NumeroRegistroTributario, ObjCFDITimbre.Receptor.UsoCFDI) - -#End Region - -#End Region - -#Region "Conceptos" - - 'Nodo conceptos, se agregan los PS - - If ObjCFDITimbre.Conceptos IsNot Nothing AndAlso ObjCFDITimbre.Conceptos.Count > 0 Then - For Each concep As CFDIConceptos In ObjCFDITimbre.Conceptos - cfdi.Concepto(concep.ClaveProdServ, concep.Noidentificacion, concep.Cantidad, concep.ClaveUnidad, concep.Unidad, concep.Descripcion, concep.ValorUnitario, concep.Importe, concep.Descuento) - For Each imp As CFDIConceptosImpuestos In concep.Impuestos - If imp.TrasladooRetencion = "T" Then - cfdi.ImpuestoConceptoTraslado(imp.Base, imp.Impuesto, imp.TipoFactor, imp.TasaOCuota, imp.Importe) - Else - cfdi.ImpuestoConceptoRetenido(imp.Base, imp.Impuesto, imp.TipoFactor, imp.TasaOCuota, imp.Importe) - End If - Next - If concep.CuentaPredial <> "" Then cfdi.CuentaPredial(concep.CuentaPredial) - If concep.NumeroPedimento <> "" Then cfdi.InformacionAduanera(concep.NumeroPedimento) - Next - End If - -#End Region - - If ObjCFDITimbre.Comprobante.TipoComprobante.Contiene("I", "E") Then - -#Region "Impuestos" - 'SI NO ES FACTURA EN 0 AGREGA LOS IMPUESTOS - If Ventas.Total <> 0 OrElse (ObjCFDITimbre.TotalImpuestosRetenidos > 0 OrElse ObjCFDITimbre.TotalImpuestosTrasladados > 0) Then - cfdi.Impuestos(ObjCFDITimbre.TotalImpuestosRetenidos, ObjCFDITimbre.TotalImpuestosTrasladados) - End If -#End Region -#Region " Traslados y Retenciones" - - - If ObjCFDITimbre.Retenciones.Sum(Function(x) x.Importe) > 0 Then - ''se acumulan los importes - For Each Ret In ObjCFDITimbre.Retenciones - cfdi.Retencion(Ret.Impuesto, Ret.Importe) - Next - End If - - ''se acumulan los importes - For Each Tras In ObjCFDITimbre.Traslados - cfdi.Traslado(Tras.Impuesto, Tras.TipoFactor, Tras.TasaOCuota, Tras.Importe) - Next -#End Region - -#Region "Impuestos Locales" - - If ObjCFDITimbre.RetencionesLocales.Sum(Function(x) x.Importe) > 0 OrElse ObjCFDITimbre.TrasladosLocales.Sum(Function(x) x.Importe) > 0 Then - - cfdi.ImpuestosLocales(ObjCFDITimbre.RetencionesLocales.Sum(Function(x) x.Importe), ObjCFDITimbre.TrasladosLocales.Sum(Function(x) x.Importe)) - - For Each ret As CFDIRetencionesLocales In ObjCFDITimbre.RetencionesLocales - If ret.Importe > 0 Then - cfdi.RetencionLocal(ret.ImpuestoLocalRetenido, ret.TasaRetencion, ret.Importe) - End If - Next - - For Each ret As CFDITrasladosLocales In ObjCFDITimbre.TrasladosLocales - If ret.Importe > 0 Then - cfdi.TrasladoLocal(ret.ImpuestoLocalTraslado, ret.TasaTraslado, ret.Importe) - End If - Next - End If - - If Ventas.CveComplementoTimbrado > 0 Then - - Select Case Ventas.CveComplementoTimbrado - Case 5 'INE Proceso Ordinario Directivo Estatal" - cfdi.Ine11("Ordinario", "Directivo Estatal", "0") - - cfdi.IneEntidad(Ventas.ComplementoINE.INEEntidad, "") - cfdi.IneContabilidad(Ventas.ComplementoINE.INEIdContabilidad) - Case 6 'INE Proceso Ordinario Ejecutivo Estatal" - cfdi.Ine11("Ordinario", "Ejecutivo Estatal", "0") - - cfdi.IneEntidad(Ventas.ComplementoINE.INEEntidad, "") - cfdi.IneContabilidad(Ventas.ComplementoINE.INEIdContabilidad) - Case 7 'INE Proceso Ordinario Ejecutivo Nacional" - - cfdi.Ine11("Ordinario", "Ejecutivo Nacional", Ventas.ComplementoINE.INEIdContabilidad.ToString) - Case 8 'INE PreCampaña - cfdi.Ine11(Ventas.ComplementoINE.INETipoProceso, "", "0") - - cfdi.IneEntidad(Ventas.ComplementoINE.INEEntidad, Ventas.ComplementoINE.INETipoComite) - cfdi.IneContabilidad(Ventas.ComplementoINE.INEIdContabilidad) - End Select - - End If - - - -#End Region - - -#Region "Comercio Exterior" - - If Ventas.Cliente.AplicaComercioExterior And ObjCFDITimbre.Complementos.ComercioExterior11.AplicaComercioExteriorSubProyecto Then - If ObjCFDITimbre.Complementos.ComercioExterior11 IsNot Nothing Then - - 'DATOS GENERALES - cfdi.ComercioExterior11(ObjCFDITimbre.Complementos.ComercioExterior11.MotivoTraslado, - ObjCFDITimbre.Complementos.ComercioExterior11.TipoOperacion, - ObjCFDITimbre.Complementos.ComercioExterior11.ClavedePedimento, - ObjCFDITimbre.Complementos.ComercioExterior11.CertificadoOrigen, - ObjCFDITimbre.Complementos.ComercioExterior11.NumCertificadoOrigen, - ObjCFDITimbre.Complementos.ComercioExterior11.NumeroExportadorConfiable, - ObjCFDITimbre.Complementos.ComercioExterior11.Incoterm, - ObjCFDITimbre.Complementos.ComercioExterior11.Subdivision, - ObjCFDITimbre.Complementos.ComercioExterior11.Observaciones, - ObjCFDITimbre.Complementos.ComercioExterior11.TipoCambioUSD, - ObjCFDITimbre.Complementos.ComercioExterior11.TotalUSD) - 'EMISOR - cfdi.ComercioExterior11Emisor(If(EmisorRFC.Length >= 12, "", ObjCFDITimbre.Complementos.ComercioExterior11.Emisor.CURP)) - cfdi.ComercioExterior11Domicilio(ObjCFDITimbre.Complementos.ComercioExterior11.Emisor.Calle, - ObjCFDITimbre.Complementos.ComercioExterior11.Emisor.NumeroExterior, - ObjCFDITimbre.Complementos.ComercioExterior11.Emisor.NumeroInterior, - ObjCFDITimbre.Complementos.ComercioExterior11.Emisor.Colonia, - ObjCFDITimbre.Complementos.ComercioExterior11.Emisor.Localidad, - ObjCFDITimbre.Complementos.ComercioExterior11.Emisor.Referencia, - ObjCFDITimbre.Complementos.ComercioExterior11.Emisor.Municipio, - ObjCFDITimbre.Complementos.ComercioExterior11.Emisor.Estado, - ObjCFDITimbre.Complementos.ComercioExterior11.Emisor.Pais, - ObjCFDITimbre.Complementos.ComercioExterior11.Emisor.CP) - 'RECEPTOR - cfdi.ComercioExterior11Receptor(ObjCFDITimbre.Complementos.ComercioExterior11.Receptor.NumRegIdTrib) - cfdi.ComercioExterior11DomicilioReceptor(ObjCFDITimbre.Complementos.ComercioExterior11.Receptor.Calle, - ObjCFDITimbre.Complementos.ComercioExterior11.Receptor.NumeroExterior, - ObjCFDITimbre.Complementos.ComercioExterior11.Receptor.NumeroInterior, - ObjCFDITimbre.Complementos.ComercioExterior11.Receptor.Colonia, - ObjCFDITimbre.Complementos.ComercioExterior11.Receptor.Localidad, - ObjCFDITimbre.Complementos.ComercioExterior11.Receptor.Referencia, - ObjCFDITimbre.Complementos.ComercioExterior11.Receptor.Municipio, - ObjCFDITimbre.Complementos.ComercioExterior11.Receptor.Estado, - ObjCFDITimbre.Complementos.ComercioExterior11.Receptor.Pais, - ObjCFDITimbre.Complementos.ComercioExterior11.Receptor.CP) - cfdi.ComercioExterior11Destinatario(ObjCFDITimbre.Complementos.ComercioExterior11.Destinatario.NumRegIdTrib, - ObjCFDITimbre.Complementos.ComercioExterior11.Destinatario.Nombre, - ObjCFDITimbre.Complementos.ComercioExterior11.Destinatario.Calle, - ObjCFDITimbre.Complementos.ComercioExterior11.Destinatario.NumeroExterior, - ObjCFDITimbre.Complementos.ComercioExterior11.Destinatario.NumeroInterior, - ObjCFDITimbre.Complementos.ComercioExterior11.Destinatario.Colonia, - ObjCFDITimbre.Complementos.ComercioExterior11.Destinatario.Localidad, - ObjCFDITimbre.Complementos.ComercioExterior11.Destinatario.Referencia, - ObjCFDITimbre.Complementos.ComercioExterior11.Destinatario.Municipio, - ObjCFDITimbre.Complementos.ComercioExterior11.Destinatario.Estado, - ObjCFDITimbre.Complementos.ComercioExterior11.Destinatario.Pais, - ObjCFDITimbre.Complementos.ComercioExterior11.Destinatario.CP) - 'MERCANCIAS - If ObjCFDITimbre.Complementos.ComercioExterior11.Mercancias IsNot Nothing AndAlso ObjCFDITimbre.Complementos.ComercioExterior11.Mercancias.Count > 0 Then - For Each concep As CFDIComercioExterior11Mercancias In ObjCFDITimbre.Complementos.ComercioExterior11.Mercancias - cfdi.ComercioExterior11Mercancia(concep.NoIdentificacion, concep.FraccionArancelaria, concep.CantidadAduana, concep.UnidadAduana, concep.ValorUnitarioAduana, concep.ValorDolares) - If concep.DescripcionesEspecificas.Marca <> "" Then - cfdi.ComercioExterior11MercanciaDescripcionesEspeciales(concep.DescripcionesEspecificas.Marca, - concep.DescripcionesEspecificas.Modelo, - concep.DescripcionesEspecificas.SubModelo, - concep.DescripcionesEspecificas.NumeroSerie) - End If - Next - - End If - - - End If - End If - -#End Region - - - End If - -#Region "Complemento Pago" - - If ObjCFDITimbre.Comprobante.TipoComprobante = "P" Then - - cfdi.Pago(ObjCFDITimbre.ComplementoPagos.FechaPago.ToString("yyyy-MM-ddTHH:mm:ss"), - ObjCFDITimbre.ComplementoPagos.FormaDePagoP, - ObjCFDITimbre.ComplementoPagos.MonedaP, - ObjCFDITimbre.ComplementoPagos.TipoCambioP, - ObjCFDITimbre.ComplementoPagos.Monto, - ObjCFDITimbre.ComplementoPagos.NumOperacion, - ObjCFDITimbre.ComplementoPagos.RfcEmisorCtaOrd, - ObjCFDITimbre.ComplementoPagos.NomBancoOrdExt, - ObjCFDITimbre.ComplementoPagos.CtaOrdenante, - ObjCFDITimbre.ComplementoPagos.RfcEmisorCtaBen, - ObjCFDITimbre.ComplementoPagos.CtaBeneficiario, - ObjCFDITimbre.ComplementoPagos.TipoCadPago, - ObjCFDITimbre.ComplementoPagos.CertPago, - ObjCFDITimbre.ComplementoPagos.CadPago, - ObjCFDITimbre.ComplementoPagos.SelloPago) - - - If ObjCFDITimbre.ComplementoPagos.DocumentosRelacionados.Count > 0 Then - - - For Each doc As CFDIComplementoPagosDocsRelacionados In ObjCFDITimbre.ComplementoPagos.DocumentosRelacionados - cfdi.PagoDoctoRelacionado(doc.IdDocumento, - doc.Serie, - doc.Folio, - doc.MonedaDR, - doc.TipoCambioDR, - doc.MetodoDePagoDR, - doc.NumParcialidad, - doc.ImpSaldoAnt, - doc.ImpPagado, - doc.ImpSaldoInsoluto) - - Next - - 'Estos impuestos aplicarían para anticipos - If ObjCFDITimbre.ComplementoPagos.TotalImpuestosRetenidos > 0 OrElse ObjCFDITimbre.ComplementoPagos.TotalImpuestosTrasladados > 0 Then - - cfdi.PagoImpuestos(ObjCFDITimbre.ComplementoPagos.TotalImpuestosRetenidos, ObjCFDITimbre.ComplementoPagos.TotalImpuestosTrasladados) - If (ObjCFDITimbre.ComplementoPagos.Impuestos).Where(Function(x) x.TrasladooRetencion = "R").Count > 0 Then - For Each Ret As CFDIConceptosImpuestos In (ObjCFDITimbre.ComplementoPagos.Impuestos).Where(Function(x) x.TrasladooRetencion = "R") - cfdi.PagoRetencion(Ret.Impuesto, Ret.Importe) - Next - End If - If (ObjCFDITimbre.ComplementoPagos.Impuestos).Where(Function(x) x.TrasladooRetencion = "T").Count > 0 Then - For Each Tra As CFDIConceptosImpuestos In (ObjCFDITimbre.ComplementoPagos.Impuestos).Where(Function(x) x.TrasladooRetencion = "T") - cfdi.PagoTraslado(Tra.Impuesto, Tra.TipoFactor, Tra.TasaOCuota, Tra.Importe) - Next - End If - - End If - - - - End If - - End If -#End Region - - - -#Region "Nomina12" - If ObjCFDITimbre.Comprobante.TipoComprobante = "N" Then - - 'cfdi.Esquema.AgregarEsquema("http://www.sat.gob.mx/nomina12 http://www.sat.gob.mx/sitio_internet/cfd/nomina/nomina12.xsd") - cfdi.Nomina12(ObjCFDITimbre.Nomina.TipoNomina, ObjCFDITimbre.Nomina.FechaPago.ToString("yyyy-MM-dd"), ObjCFDITimbre.Nomina.FechaInicio.ToDate().ToString("yyyy-MM-dd"), ObjCFDITimbre.Nomina.FechaFin.ToDate().ToString("yyyy-MM-dd"), ObjCFDITimbre.Nomina.NumDiasPagados, If(ObjCFDITimbre.Nomina.Percepciones IsNot Nothing AndAlso ObjCFDITimbre.Nomina.Percepciones.Count > 0, ObjCFDITimbre.Nomina.TotalPercepciones, 0), If(ObjCFDITimbre.Nomina.Deducciones IsNot Nothing AndAlso ObjCFDITimbre.Nomina.Deducciones.Count > 0, ObjCFDITimbre.Nomina.TotalDeducciones, 0), If(ObjCFDITimbre.Nomina.OtrosPagos IsNot Nothing AndAlso ObjCFDITimbre.Nomina.OtrosPagos.Count > 0, ObjCFDITimbre.Nomina.TotalOtrosPagos, 0)) - - cfdi.Nomina12Emisor(ObjCFDITimbre.Emisor.CURP, If(ObjCFDITimbre.Nomina.Receptor.TipoContrato = "99", "", ObjCFDITimbre.Emisor.RegistroPatronal), ObjCFDITimbre.Emisor.RFC) - - If UsuarioActual.Empresa.UsaAC Then cfdi.Nomina12EntidadSNCF("IF", 90) - - -#Region "Receptor" - - cfdi.Nomina12Receptor(ObjCFDITimbre.Nomina.Receptor.CURP, - ObjCFDITimbre.Nomina.Receptor.NSS, - ObjCFDITimbre.Nomina.Receptor.FechaInicioContrato.ToDate().ToString("yyyy-MM-dd"), - ObjCFDITimbre.Nomina.Receptor.Antiguedad, - ObjCFDITimbre.Nomina.Receptor.TipoContrato, - ObjCFDITimbre.Nomina.Receptor.Sindicalizado, - ObjCFDITimbre.Nomina.Receptor.CodigoTipoJornada, - ObjCFDITimbre.Nomina.Receptor.CodigoRegimenContratacion, - ObjCFDITimbre.Nomina.Receptor.CodigoEmpleado, - ObjCFDITimbre.Nomina.Receptor.Departamento, - ObjCFDITimbre.Nomina.Receptor.Puesto, - ObjCFDITimbre.Nomina.Receptor.CodigoRiesgoPuesto, - If(ObjCFDITimbre.Nomina.TipoNomina = "E", "99", ObjCFDITimbre.Nomina.Receptor.TipoPeriodo), - ObjCFDITimbre.Nomina.Receptor.CodigoBanco, - ObjCFDITimbre.Nomina.Receptor.NumeroCuenta, - ObjCFDITimbre.Nomina.Receptor.SBC, - ObjCFDITimbre.Nomina.Receptor.SDI, - ObjCFDITimbre.Nomina.Receptor.CodigoEntidadFederativa) - 'cfdi.Nomina12SubContratacion("", "0") - 'cfdi.agregarNominaPercepcionesPercepcionAccionesOTitulos12("100", "200"); - 'cfdi.agregarNominaPercepcionesSeparacionIndemnizacion12("100", "10", "1000", "100", "50"); - 'cfdi.agregarNominaPercepcionesJubilacionPensionRetiro12("50", "100", "10", "100", "0"); - - - End If -#End Region - If ObjCFDITimbre.Nomina IsNot Nothing Then - - If ObjCFDITimbre.Nomina.Percepciones IsNot Nothing AndAlso ObjCFDITimbre.Nomina.Percepciones.Count > 0 Then - cfdi.Nomina12Percepciones(ObjCFDITimbre.Nomina.TotalSueldos, ObjCFDITimbre.Nomina.TotalIndemnizacion, ObjCFDITimbre.Nomina.TotalJubilacion, ObjCFDITimbre.Nomina.TotalPercepcionesGravado, ObjCFDITimbre.Nomina.TotalPercepcionesExento) - For Each percep As CFDINominaPercepciones In ObjCFDITimbre.Nomina.Percepciones - cfdi.Nomina12Percepcion(percep.TipoPercepcion, percep.Clave, percep.Concepto, Math.Round(percep.ImporteGravado, 2), Math.Round(percep.ImporteExento, 2)) - Next - End If - - 'deducciones al final - If ObjCFDITimbre.Nomina.Deducciones IsNot Nothing AndAlso ObjCFDITimbre.Nomina.Deducciones.Count > 0 Then - cfdi.Nomina12Deducciones(ObjCFDITimbre.Nomina.TotalDeduccionesOtras, Math.Round(ObjCFDITimbre.Nomina.TotalDeduccionesImpuestosRetenidos, 2)) - For Each deduc As CFDINominaDeducciones In ObjCFDITimbre.Nomina.Deducciones - cfdi.Nomina12Deduccion(deduc.TipoDeduccion, deduc.Clave, deduc.Concepto, Math.Round(deduc.Importe, 2)) - Next - End If - - If ObjCFDITimbre.Nomina.HorasExtras IsNot Nothing AndAlso ObjCFDITimbre.Nomina.HorasExtras.Count > 0 Then - For Each HoraExtra As CFDINominaHorasExtras In ObjCFDITimbre.Nomina.HorasExtras - cfdi.Nomina12HorasExtra(HoraExtra.Dias.ToEntero, HoraExtra.TipoHoras, HoraExtra.HorasExtra, HoraExtra.ImportePagado) - Next - End If - - If ObjCFDITimbre.Nomina.Incapacidades IsNot Nothing AndAlso ObjCFDITimbre.Nomina.Incapacidades.Count > 0 Then - For Each Incap As CFDINominaIncapacidades In ObjCFDITimbre.Nomina.Incapacidades - cfdi.Nomina12Incapacidad(Incap.DiasIncapacidad.ToEntero, Incap.TipoIncapacidad, Incap.Importe) - Next - End If - - If ObjCFDITimbre.Nomina.OtrosPagos IsNot Nothing Then - ' cfdi.agregarNominaOtrosPagosOtroPago12("002", "002", "Subsidio", "10.00"); - ' cfdi.agregarNominaOtrosPagosOtroPagoSubsidioAlEmpleo12("10.00"); - If ObjCFDITimbre.Nomina.OtrosPagos IsNot Nothing AndAlso ObjCFDITimbre.Nomina.OtrosPagos.Count > 0 Then - For Each otpag As CFDINominaOtrosPagos In ObjCFDITimbre.Nomina.OtrosPagos - cfdi.Nomina12OtroPago(otpag.TipoOtroPago, otpag.Clave, otpag.Concepto, otpag.Importe) - If otpag.TipoOtroPago = "002" Then - cfdi.Nomina12SubsidioAlEmpleo(otpag.Subsidiocausado) - End If - - Next - End If - End If - End If -#End Region - - sw.Stop() - swTiempo.AppendFormat("Armado: ({0}) {1} ", sw.ElapsedMilliseconds - swmili, sw.ElapsedMilliseconds) - swmili = sw.ElapsedMilliseconds - sw.Start() -#Region "Genera XML" - Dim ArchivoGenerado As Boolean = False - Try - cfdi.GenerarXMLB64(llaveBase64, Clave) - ArchivoGenerado = True - Catch ex As Exception - Retorno = cfdi.MensajeError - If Retorno = "" OrElse IsNothing(Retorno) Then - Retorno = $"llaveBase64 ={llaveBase64}
Clave ={Clave}
{ex.ToString()}" - End If - MensajeErrorCFDI = Retorno - End Try - -#End Region - sw.Stop() - swTiempo.AppendFormat("Genera: ({0}) {1} ", sw.ElapsedMilliseconds - swmili, sw.ElapsedMilliseconds) - swmili = sw.ElapsedMilliseconds - sw.Start() - -#Region "Timbra" - If ArchivoGenerado Then - - 'cfdi.TimbrarCfdi(UsuarioServicio, ClaveServicio, UrlServicio, TimbraProduccion) - - 'sw.Stop() - 'swTiempo.AppendFormat("Timbrado: ({0}) {1} ", sw.ElapsedMilliseconds - swmili, sw.ElapsedMilliseconds) - 'swmili = sw.ElapsedMilliseconds - 'sw.Start() - 'Verifica el error - 'If cfdi.CodigoError = 0 Then - - ' Dim FolioFiscal As String - - ' UUID = cfdi.UUID - ' FolioFiscal = cfdi.UUID 'obtenerAtributo(cfdi.XmlTimbrado, "TimbreFiscalDigital", "UUID") 'XmlDoc.DocumentElement("cfdi:Complemento").FirstChild.Attributes("UUID").InnerText - - ' If FolioFiscal <> "" Then - - ' cfdi.EscribirXML(cfdi.Xml, RutaArchivo, NombreArchivoXML) - - ' sw.Stop() - ' swTiempo.AppendFormat("Guardado: ({0}) {1} ", sw.ElapsedMilliseconds - swmili, sw.ElapsedMilliseconds) - ' swmili = sw.ElapsedMilliseconds - ' sw.Start() - - ' If ObjCFDITimbre.Comprobante.TipoComprobante <> "P" Then - - ' 'Actualiza Estatus Factura - ' If Ventas.CveVenta > 0 Then - - ' Using ObjVentas As New ClsVentas() - - ' If ObjVentas.UpdateEstatusFactura(3, FolioFiscal, "", ObjCFDITimbre.Comprobante.Fecha, Ventas.CveVenta, CvePAC:=CvePACEspecial) Then - ' Retorno = "" - ' Else - ' Retorno = "Error" - ' End If - ' End Using - - ' 'Genero la addenda Ford - ' If Ventas.Cliente.Ford_GSDB <> "" Then - - ' Dim RutaCadena As String = String.Format("{0}{1}.xml", RutaArchivo, NombreArchivoXML) 'If(UsuarioActual.Empresa.FacturaProduccion, String.Format("{0}XML\{1}\{2}.xml", Ruta, Ventas.SerieFolio), String.Format("{0}XML\{1}\{2}.xml", Ruta, Ventas.TipoDocto, Ventas.SerieFolio)) - - ' Dim FolioFactura As String = "" - ' If UsuarioActual.CveEmpresa = 8 Then FolioFactura = Ventas.Folio.ToString ' sogo, pordefault manda el folio de la factura - ' GeneraAddendaFord(RutaCadena, FolioFactura, Ventas.FordASN, Ventas.FordGSDB) - - ' End If - - ' End If - - ' If ObjCFDITimbre.Comprobante.TipoComprobante = "N" Then - ' Using ObjNomina2 As New ClsNominas() - - ' If ObjNomina2.UpdateEstatusNomNominas(3, CvePACEspecial, FolioFiscal, "", ("01/01/2000").ToDate, ObjCFDITimbre.Nomina.CveNomina, 0, 0, 0, 0, 0) Then - ' Retorno = "" - ' Else - ' Retorno = "Error" - ' End If - ' End Using - ' End If - - ' If ObjCFDITimbre.Comprobante.TipoComprobante = "T" Then - ' Using ObjInv As New ClsInventarios() - ' If ObjInv.UpdateMovimientoTimbrado(Ventas.Inv_CveMovimiento, 1, FolioFiscal, MinFecha) Then - ' Retorno = "" - ' Else - ' Retorno = "Error" - ' End If - ' End Using - ' End If - ' End If - - ' If Not IO.Directory.Exists($"{UsuarioActual.Empresa.Ruta}CBB\") Then IO.Directory.CreateDirectory($"{UsuarioActual.Empresa.Ruta}CBB\") - - ' Try - ' Dim RutaCBB As String = $"{UsuarioActual.Empresa.Ruta}CBB\{ObjCFDITimbre.Comprobante.SerieFolio}.jpg" - ' Dim b As Byte() = cfdi.QrCode($"?re={UsuarioActual.Empresa.RFC}&rr={ObjCFDITimbre.Receptor.RFC}&tt={String.Format("{0,12:F6}", ObjCFDITimbre.Comprobante.Total).Trim()}&id={FolioFiscal}") - ' File.WriteAllBytes(RutaCBB, b) - ' Catch ex As Exception - ' OnError("Ocurrió un error al generar el QR", ex) - ' End Try - ' Retorno = "" - ' Else - ' Retorno = "No se pudo timbrar ante el SAT. UUID no generado." - ' End If - ' sw.Stop() - ' swTiempo.AppendFormat("Actualizado: ({0}) {1} ", sw.ElapsedMilliseconds - swmili, sw.ElapsedMilliseconds) - ' swmili = sw.ElapsedMilliseconds - ' sw.Start() - - 'Else - ' Retorno = cfdi.MensajeError - ' MensajeErrorCFDI = cfdi.MensajeError - ' If cfdi.Xml <> "" Then cfdi.EscribirXML(cfdi.Xml, RutaArchivo, NombreArchivoXML) - - 'End If - End If - -#End Region - GuardaLogTimbrado(swTiempo.ToString, CvePACEspecial) - Return Retorno - End Function - Public Sub GuardaLogTimbrado(Str As String, CvePAC As Integer) Dim ArchivoW As StreamWriter Dim strLineaTMP As String diff --git a/App_WebReferences/Cancelacion/cancelacion.wsdl b/App_WebReferences/Cancelacion/cancelacion.wsdl deleted file mode 100644 index 12503b338..000000000 --- a/App_WebReferences/Cancelacion/cancelacion.wsdl +++ /dev/null @@ -1,369 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Cancela un Cfdi en pruebas - - - - - Obtiene el estatus de un Cfdi en producción - - - - - Obtiene el estatus de un Cfdi en pruebas - - - - - Obtiene los Uuid pendientes de aceptar/rechazar de un Receptor (Producción) - - - - - Obtiene los Uuid pendientes de aceptar/rechazar de un Receptor (Pruebas) - - - - - Acepta/Rechaza una solicitud pendiente de cancelación (Producción) - - - - - Acepta/Rechaza una solicitud pendiente de cancelación (Pruebas) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Compras/Compras.aspx.vb b/Compras/Compras.aspx.vb index 998d47301..596aa860d 100644 --- a/Compras/Compras.aspx.vb +++ b/Compras/Compras.aspx.vb @@ -6882,7 +6882,7 @@ Partial Class Compras_Compras End If - If UsuarioActual.CveEmpresa.Contiene(119, 158) Then + If UsuarioActual.CveEmpresa.Contiene(119) Then Dim ContienePSNeteoBonif As Boolean = False For Each Dr As DataRow In TmpDT.Rows If Dr("CveClasificacion").ToString.ToEntero.Contiene(20319) Or DdlTipoCompra.SelectedValue.ToEntero = 11 Then 'clasificación de Bonificación, no se incluirá en el neteo @@ -7017,7 +7017,7 @@ Partial Class Compras_Compras End If Dim usacomplementariaProveedor As Boolean = False - usacomplementariaProveedor = If(tipoCambioActual > 1 AndAlso UsuarioActual.CveEmpresa.Contiene(1, 119, 158), True, False) + usacomplementariaProveedor = If(tipoCambioActual > 1 AndAlso UsuarioActual.CveEmpresa.Contiene(1, 119), True, False) If usacomplementariaProveedor AndAlso DdlTipoComprobante.SelectedValue = "Ant" Then 'importeMovimiento @@ -8395,7 +8395,7 @@ Partial Class Compras_Compras 'CUANDO ES REEMBOLSO COMPROBACION Y CAJA CHICA - If UsuarioActual.CveEmpresa.Contiene(1, 119, 158) AndAlso TxtNumeroReembolso.Text.Trim <> "" AndAlso (DdlPersonalReembolso.SelectedValue.ToEntero > 0 Or DdlCuentaCajaChicaReembolso.SelectedValue.ToEntero > 0) Then + If UsuarioActual.CveEmpresa.Contiene(1, 119) AndAlso TxtNumeroReembolso.Text.Trim <> "" AndAlso (DdlPersonalReembolso.SelectedValue.ToEntero > 0 Or DdlCuentaCajaChicaReembolso.SelectedValue.ToEntero > 0) Then If ObjCompras.GetComprobacion(DdlPersonalReembolso.SelectedValue.ToEntero, DdlCuentaCajaChicaReembolso.SelectedValue.ToEntero, TxtNumeroReembolso.Text.Trim, UsuarioActual.CveEmpresa) Then Dim CvePreComprobacion As Integer If ObjCompras.DtResultados.Rows.Count = 0 Then diff --git a/Empresas/141/Formatos/Cotizacion.rdlc b/Empresas/141/Formatos/Cotizacion.rdlc index 67f6d1a19..0b05ae519 100644 --- a/Empresas/141/Formatos/Cotizacion.rdlc +++ b/Empresas/141/Formatos/Cotizacion.rdlc @@ -1525,11 +1525,117 @@ 2pt + + true + true + true + + + + + Folio Fiscal: + + + + =Parameters!FolioFiscal.Value + + + + + + + =Parameters!FechaCertificacion.Value + + + + + + + =Parameters!SerieCertificadoSAT.Value + + + + + + 2pt + 2pt + 2pt + 2pt + + true true true + + + + No. de Serie del Certificado del CSD: + + + + =Parameters!CertificadoContribuyente.Value + + + + @@ -1672,7 +1778,7 @@ 0.25136cm 0.74611cm 13.82025cm - 10 + 11 @@ -1705,7 +1811,7 @@ 14.07729cm 0.57354cm 2.90753cm - 11 + 12 @@ -1740,7 +1846,7 @@ 0.26772cm 0.52062cm 9.72441cm - 12 + 13 @@ -1778,7 +1884,7 @@ 1.68221cm 1.05328cm 17.71415cm - 13 + 14 =IIF((Sum(IIF(Fields!CveClasificacion.Value = 20345,1,0), "DsOC") > 0),false,true) @@ -1910,7 +2016,7 @@ 0.22108cm 2.03224cm 20.79751cm - 14 + 15 @@ -1940,7 +2046,7 @@ 0.19009cm 0.05496cm 20.88652cm - 15 + 16 @@ -1952,6 +2058,21 @@ 2pt + + Embedded + ID5 + FitProportional + 11.02339cm + 0.17151cm + 0.96488cm + 3.75909cm + 17 + + + + true true @@ -1979,7 +2100,7 @@ 0.19008cm 0.40655cm 12.88812cm - 16 + 18 @@ -1990,6 +2111,51 @@ 2pt + + Embedded + ID4 + FitProportional + 11.02339cm + 4.34941cm + 0.91769cm + 3.03541cm + 19 + + + + + + Embedded + ID1 + FitProportional + 11.02339cm + 7.56121cm + 0.97656cm + 4.16281cm + 20 + + + + + + Embedded + ID6 + FitProportional + 11.02339cm + 11.90634cm + 1.01184cm + 3.76809cm + 21 + + + + Embedded ID3 @@ -1998,7 +2164,7 @@ 15.67443cm 0.93046cm 5.37042cm - 17 + 22 @@ -2030,7 +2196,61 @@ 15.67443cm 0.50299cm 5.42547cm - 18 + 23 + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + Ord. Compra: + + + + =Parameters!OC.Value + + + + + + + @@ -2048,7 +2268,61 @@ - Pago: + Tipo de Comprobante:I Ingreso,Moneda: + + + + =Parameters!MonedaAbreviatura.Value + + + + , Uso de CFDI: + + + + =Parameters!UsoCFDI.Value + + + + , Forma de Pago: + + + + =Parameters!FormaPago.Value + + + + , Método de Pago: @@ -2156,7 +2430,7 @@ 6.24049in 0.21875in 0.94607in - 20 + 26 @@ -2191,7 +2465,7 @@ 6.24048in 0.21875in 0.94607in - 21 + 27 @@ -2226,7 +2500,7 @@ 6.24048in 0.21875in 0.94607in - 22 + 28 @@ -2261,7 +2535,7 @@ 6.24048in 0.21875in 0.94607in - 23 + 29 @@ -2297,7 +2571,7 @@ 6.24048in 0.21875in 0.94607in - 24 + 30 @@ -2333,7 +2607,7 @@ 7.18656in 0.21875in 0.98426in - 25 + 31 @@ -2368,7 +2642,7 @@ 7.18656in 0.20486in 0.98425in - 26 + 32 @@ -2403,7 +2677,7 @@ 7.18656in 0.19899in 0.98425in - 27 + 33 @@ -2439,7 +2713,7 @@ 7.18656in 0.19284in 0.98425in - 28 + 34 @@ -2475,7 +2749,7 @@ 7.18656in 0.19596in 0.98425in - 29 + 35 @@ -2510,7 +2784,7 @@ 4.32565cm 0.82021cm 7.93893cm - 30 + 36 @@ -2540,7 +2814,7 @@ 0.19009cm 0.05496cm 20.88652cm - 31 + 37 @@ -2552,84 +2826,6 @@ 2pt - - true - true - - - - - Este documento es una cotización sin efectos fiscales ni tampoco es un comprobante de pago - - - - - - 2pt - 2pt - 2pt - 2pt - - - - Embedded - Screenshot_2 - FitProportional - 10.94818cm - 0.22202cm - 0.95717cm - 4.40152cm - 33 - - - - - - Embedded - Screenshot_3 - FitProportional - 10.94818cm - 6.07789cm - 0.92189cm - 3.75114cm - 34 - - - - - - Embedded - Screenshot_4 - FitProportional - 10.97239cm - 11.40131cm - 0.93296cm - 3.82833cm - 35 - - - - 15.93202cm + + + + + + + + Sahuaro (662) 2161471 - Solidaridad (662) 216-0935 - Palo Verde (662) 4363254 - Progreso (662) 3105781 - Quiroga (662) 261- 0838 - Caborca (637) 3724214 - Magdalena (632) 322-4080 + + + + + + + + + Nogales (631) 319-0093 - Cananea (645) 332 20 40 - Guaymas (622) 222-2417 - Obregón (644)412-2002 Obregón II (644) 413-1543- Obregón III (644) 4134501 - Navojoa (642) 422-9852 + + + + + + + + + Sinaloa: Los Mochis (668) 817-0209 - Los Mochis II (668) 176-5802 - Guasave (687) 871-5317 - Calzada (667) 729-2112 - Zapata (667) 992-0876 - Tierra Blanca (667) 716-6997 - Sanalona (667) 713-667 + + + + + + + + + Tres Ríos (667) 455-4621 - Mazatlán (669) 910-2122 - Baja California: Tijuana1 (664) 622-5221 - Tijuana3 (664) 626-2615 - Rosarito (661) 612-4461 - Mexicali (686) 567-6102 - Mexicali3 (686) 326 02 79 + + + + + + + + + Tecate (665) 5212080 - Ensenada (646) 172-4075 - Ensenada2 (646) 176-2703 - Baja California Sur: La Paz (612) 146-3656 - La Paz 2 (612) 121-3185 - Los Cabos (624) 688 3552 + + + + + + + Textbox4 + 9.91718cm + 0.22108cm + 2.03224cm + 20.79751cm + + + 2pt + 2pt + 2pt + 2pt + + @@ -477,10 +612,11 @@ true - 6.06618in + 6.31618in 0.06752in 1.42169in 8.23953in + 1 @@ -1275,7 +1411,7 @@ 0.09836in 0.36206in 8.16629in - 1 + 2 @@ -1297,11 +1433,11 @@ Textbox5 - 8.32309cm + 9.27559cm 0.28014cm 0.05496cm 20.88652cm - 2 + 3 @@ -1345,11 +1481,11 @@ Textbox1 - 8.41332cm + 9.36582cm 2.01402cm 0.51608cm 19.15264cm - 3 + 4 @@ -1368,7 +1504,7 @@ 1.15361cm 2.413cm 2.75323cm - 4 + 5 @@ -1448,7 +1584,7 @@ 4.32565cm 2.70968cm 7.93893cm - 5 + 6 @@ -1528,7 +1664,7 @@ 12.68838cm 2.70968cm 5.11312cm - 6 + 7 @@ -1562,7 +1698,7 @@ 18.23008cm 0.96018cm 2.79101cm - 7 + 8 @@ -1598,7 +1734,7 @@ 18.23008cm 0.6cm 2.79101cm - 8 + 9 @@ -1649,7 +1785,7 @@ 18.23008cm 0.86903cm 2.79101cm - 9 + 10 @@ -1740,7 +1876,7 @@ 0.28014cm 1.09007cm 9.71199cm - 10 + 11 @@ -1820,7 +1956,7 @@ 10.06268cm 0.7927cm 9.71199cm - 11 + 12 @@ -2001,7 +2137,7 @@ 0.25136cm 0.74611cm 13.82025cm - 12 + 13 @@ -2034,7 +2170,7 @@ 14.07729cm 0.57354cm 2.90753cm - 13 + 14 @@ -2068,11 +2204,11 @@ Textbox4 - 5.8751cm + 6.1926cm 1.74571cm 1.05328cm 17.71415cm - 14 + 15 =IIF((Sum(IIF(Fields!CveClasificacion.Value = 20345,1,0), "DsOC") > 0),false,true) @@ -2086,142 +2222,6 @@ 2pt - - true - true - true - - - - - Sonora: Veracruz (662) 210-0041 - Morelos (662) 211-0805 - Colosio (662) 2608088 - Colosio2 (662) 1189939 - Reforma (662) 213-8724 - Perisur (662) 254-4849 - Rodríguez (662) 213-0388 - - - - - - - - - Sahuaro (662) 2161471 - Solidaridad (662) 216-0935 - Palo Verde (662) 4363254 - Progreso (662) 3105781 - Quiroga (662) 261- 0838 - Caborca (637) 3724214 - Magdalena (632) 322-4080 - - - - - - - - - Nogales (631) 319-0093 - Cananea (645) 332 20 40 - Guaymas (622) 222-2417 - Obregón (644)412-2002 Obregón II (644) 413-1543- Obregón III (644) 4134501 - Navojoa (642) 422-9852 - - - - - - - - - Sinaloa: Los Mochis (668) 817-0209 - Los Mochis II (668) 176-5802 - Guasave (687) 871-5317 - Calzada (667) 729-2112 - Zapata (667) 992-0876 - Tierra Blanca (667) 716-6997 - Sanalona (667) 713-667 - - - - - - - - - Tres Ríos (667) 455-4621 - Mazatlán (669) 910-2122 - Baja California: Tijuana1 (664) 622-5221 - Tijuana3 (664) 626-2615 - Rosarito (661) 612-4461 - Mexicali (686) 567-6102 - Mexicali3 (686) 326 02 79 - - - - - - - - - Tecate (665) 5212080 - Ensenada (646) 172-4075 - Ensenada2 (646) 176-2703 - Baja California Sur: La Paz (612) 146-3656 - La Paz 2 (612) 121-3185 - Los Cabos (624) 688 3552 - - - - - - - Textbox4 - 8.96468cm - 0.22108cm - 2.03224cm - 20.79751cm - 15 - - - 2pt - 2pt - 2pt - 2pt - - true true @@ -2237,7 +2237,7 @@ Textbox5 - 12.60759cm + 13.24259cm 0.24983cm 0.05496cm 20.88652cm @@ -2253,57 +2253,6 @@ 2pt - - Embedded - ID3 - FitProportional - 21.4598cm - 0.28014cm - 0.93046cm - 5.37042cm - 17 - - - - - - true - true - - - - - DESCARGA NUESTRA NUEVA APLICACIÓN - - - - - - - Textbox60 - 19.12502cm - 0.28014cm - 0.6882cm - 20.71217cm - 18 - - - 2pt - 2pt - 2pt - 2pt - - true true @@ -2346,7 +2295,7 @@ 17.09066cm 0.64028cm 3.90165cm - 19 + 17 @@ -2509,11 +2458,11 @@ Textbox4 - 12.76838cm + 13.40338cm 0.16383cm 2.44366cm 15.51057cm - 20 + 18 @@ -2544,11 +2493,11 @@ Textbox19 - 5.01303in + 5.26303in 6.21617in 0.17708in 0.94607in - 21 + 19 @@ -2579,11 +2528,11 @@ Textbox19 - 5.2055in + 5.4555in 6.21616in 0.17966in 0.94607in - 22 + 20 @@ -2614,11 +2563,11 @@ Textbox19 - 5.40449in + 5.65449in 6.21616in 0.18819in 0.94607in - 23 + 21 @@ -2649,11 +2598,11 @@ Textbox19 - 5.61074in + 5.86074in 6.22658in 0.17119in 0.94607in - 24 + 22 @@ -2685,11 +2634,11 @@ Textbox19 - 5.80137in + 6.05137in 6.237in 0.19596in 0.94607in - 25 + 23 @@ -2721,11 +2670,11 @@ Textbox42 - 5.03803in + 5.28803in 7.16224in 0.17708in 0.98426in - 26 + 24 @@ -2756,11 +2705,11 @@ Textbox42 - 5.2305in + 5.4805in 7.16224in 0.17966in 0.98425in - 27 + 25 @@ -2791,11 +2740,11 @@ Textbox42 - 5.42949in + 5.67949in 7.17266in 0.18819in 0.98425in - 28 + 26 @@ -2827,11 +2776,11 @@ Textbox42 - 5.63574in + 5.88574in 7.17266in 0.17119in 0.98425in - 29 + 27 @@ -2863,11 +2812,11 @@ Textbox42 - 5.82637in + 6.07637in 7.18308in 0.19596in 0.98425in - 30 + 28 @@ -2904,7 +2853,7 @@ 6.75122cm 0.82021cm 5.51336cm - 31 + 29 @@ -2930,11 +2879,11 @@ Textbox5 - 15.2826cm + 15.9176cm 0.10579cm 0.05496cm 20.88652cm - 32 + 30 @@ -2946,55 +2895,6 @@ 2pt - - true - true - true - - - - - ** SI LAS LLANTAS NO SON INSTALADAS EN ECONOLLANTAS PIERDE SU GARANTÍA DE FABRICA ** - - - - - - - - - 2pt - 2pt - 2pt - 2pt - - true true @@ -3003,7 +2903,7 @@ - < ** Toda corrección de los datos del comprobante debera efectuarse a más tardar tres dias despues de su expedición. ** > + < ** Toda corrección de los datos del comprobante debera efectuarse a más tardar tres dias despues de su expedición. ** > + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + + + + Black + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + + + + Black + 2pt + 2pt + 2pt + 2pt + + + + Embedded + rockblade + FitProportional + 12.06211cm + 6.5919cm + 0.62223cm + 4.03523cm 34 + + + + + + Embedded + yokohama2 + FitProportional + 12.06211cm + 0.58737cm + 0.62223cm + 4.03523cm + 35 + + + + + + Embedded + mastercraft + FitProportional + 12.12228cm + 17.02729cm + 0.62223cm + 4.03523cm + 36 + + + + + + Embedded + coopertires + FitProportional + 12.18225cm + 11.79701cm + 0.62223cm + 4.03523cm + 37 + + + + + + true + true + true + + + + + ESTAS LLANTAS SOLO TENDRAN GARANTÍA DE POR VIDA CONTRA DEFECTO DE FABRICA. +*SI LAS LLANTAS NO SON INSTALADAS EN ECONOLLANTAS PIERDE SU GARANTÍA DE FABRICA*. + + + + =IIF(IIF((Sum(IIF(Fields!CveClasificacion.Value = 20345,1,0), "DsOC") = 0) and (Sum(IIF(Fields!CveClasificacion.Value = 20342 or Fields!CveClasificacion.Value = 20341,1,0), "DsOC") > 0),false,true),"","<br/>**EL CLIENTE NO ACEPTA PÓLIZA DE SEGURO**") + HTML + + + + + + + + + PARA UNA OPTIMA DURACION DE SUS LLANTAS, ESTAS DEBEN ALINEARSE BALANCEARSE Y ROTAR CADA 6 MESES O 1O MIL KILOMETROS. + + + + PARA HACER VALIDA UNA RECLAMACIÓN DEBERAN CUMPLIR CON EL ANTERIOR REQUISITO + + + + + + 2pt + 2pt + 2pt + 2pt + + + + Embedded + ID3 + FitProportional + 22.13416cm + 0.22725cm + 0.93046cm + 5.37042cm + 39 + + + + + + true + true + + + + + DESCARGA NUESTRA NUEVA APLICACIÓN + + + + + + + Textbox60 + 19.79938cm + 0.22725cm + 0.6882cm + 20.71217cm + 40 @@ -3038,11 +3176,11 @@ =System.Convert.FromBase64String(Parameters!QRDescarga.Value) image/png FitProportional - 8.0685in - 6.67743in + 8.33399in + 6.65661in 0.6035in 0.78275in - 35 + 41 @@ -3091,11 +3229,11 @@ Textbox60 - 19.5698cm - 0.28014cm + 20.24416cm + 0.22725cm 1.49135cm 5.37042cm - 36 + 42 @@ -3106,68 +3244,6 @@ 2pt - - true - true - - - - - - - - Black - 2pt - 2pt - 2pt - 2pt - - - - true - true - - - - - - - - Black - 2pt - 2pt - 2pt - 2pt - - true true @@ -3246,11 +3322,11 @@ Textbox60 - 19.5698cm - 7.45145cm + 20.24416cm + 7.39856cm 2.45709cm 6.56105cm - 39 + 43 @@ -3285,11 +3361,11 @@ Textbox60 - 19.56002cm - 14.67145cm + 20.23438cm + 14.61856cm 1.46939cm 6.32076cm - 40 + 44 @@ -3300,68 +3376,24 @@ 2pt - - Embedded - rockblade - FitProportional - 11.19428cm - 5.58835cm - 0.86918cm - 4.08628cm - 41 + + + Start + + true + 19.90494cm + 0cm + 3.07798cm + 21.09991cm + 45 - - - Embedded - yokohama2 - FitProportional - 11.33186cm - 0.58737cm - 0.65751cm - 4.35272cm - 42 - - - - - - Embedded - mastercraft - FitProportional - 11.30011cm - 17.06617cm - 0.93972cm - 3.99634cm - 43 - - - - - - Embedded - coopertires - FitProportional - 11.33186cm - 10.33489cm - 0.65751cm - 6.09184cm - 44 - - - - + - 22.57045cm + 23.17899cm diff --git a/Ventas/ProductosServicios.aspx.vb b/Ventas/ProductosServicios.aspx.vb index 8277745fb..18dbbe908 100644 --- a/Ventas/ProductosServicios.aspx.vb +++ b/Ventas/ProductosServicios.aspx.vb @@ -2853,8 +2853,6 @@ Partial Class ProductosyServicios ClaveImpuestoUM:=DdlImpUM.SelectedValue.ToString, ClaveCategoriaToxicidad:=DdlCategoriaToxicidad.SelectedValue.ToString, ClaveImpuestoTipoProducto:=DdlImpTipoProducto.SelectedValue.ToString, EsOutSourcing:=ChkEsOutSourcing.Checked, TiempoCaducidad:=TxtTiempoCaducidad.Text.ToEntero()) > 0 Then 'Alert(String.Format("Error al agregar el nuevo producto en la franquicia: '{0}'", GlobalDTEmpresas(Franquicia).FiltroPrimeroValor("Empresa"))) - - GlobalDTPSSimplificado(Franquicia) = Nothing Return True End If @@ -2874,7 +2872,6 @@ Partial Class ProductosyServicios ClaveImpuestoUM:=DdlImpUM.SelectedValue.ToString, ClaveCategoriaToxicidad:=DdlCategoriaToxicidad.SelectedValue.ToString, ClaveImpuestoTipoProducto:=DdlImpTipoProducto.SelectedValue.ToString, EsOutSourcing:=ChkEsOutSourcing.Checked, AplicaSerie:=ChkSerie.Checked, AplicaLote:=ChkLote.Checked, AplicaCaducidad:=ChkCaducidad.Checked, AplicaSeccion:=ChkSeccion.Checked, TiempoCaducidad:=TxtTiempoCaducidad.Text.ToEntero()) Then - GlobalDTPSSimplificado(Franquicia) = Nothing Return True End If diff --git a/Ventas/RepComisionesJAM.aspx b/Ventas/RepComisionesJAM.aspx index f3ef9926b..cf06867b3 100644 --- a/Ventas/RepComisionesJAM.aspx +++ b/Ventas/RepComisionesJAM.aspx @@ -86,7 +86,7 @@
-
ProForma:
+
Esquema Nuevo:
From 1682cd0f755c81d4669c3ae7eb7b8f5359e8a874 Mon Sep 17 00:00:00 2001 From: rrene Date: Thu, 17 Dec 2020 10:02:39 -0700 Subject: [PATCH 05/18] -- orden rin/medida --- Inventarios/KardexAlmacenHorizontal.aspx | 1 + 1 file changed, 1 insertion(+) diff --git a/Inventarios/KardexAlmacenHorizontal.aspx b/Inventarios/KardexAlmacenHorizontal.aspx index f96654277..767cf5d47 100644 --- a/Inventarios/KardexAlmacenHorizontal.aspx +++ b/Inventarios/KardexAlmacenHorizontal.aspx @@ -194,6 +194,7 @@ +
From 91b692867681213d28c6a816772678e5f5dec0e5 Mon Sep 17 00:00:00 2001 From: rrene Date: Thu, 17 Dec 2020 10:02:50 -0700 Subject: [PATCH 06/18] filtro de aplicaventa en ps --- Ventas/PV.aspx.vb | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Ventas/PV.aspx.vb b/Ventas/PV.aspx.vb index 152d2e3cc..791e4e1d0 100644 --- a/Ventas/PV.aspx.vb +++ b/Ventas/PV.aspx.vb @@ -2700,6 +2700,8 @@ Partial Class PV Objeto.Attributes.Add("data-cvesubproyecto", DdlSubProyectoDatos.SelectedValue) 'Objeto.ddlWS.Attributes.Add("data-cveclasificacion", CveClasificacion.ToString) Objeto.ddlWS.Attributes.Add("data-cveclasificacion", "-1") + Objeto.ddlWS.Attributes.Add("data-aplicaparaventa", "1") + If AplicaAlmacen Then Objeto.ddlWS.Attributes.Add("data-pagina", "ventas/ventas") Else From 020ee48910e7657c6f4a67ec836166969dbd8682 Mon Sep 17 00:00:00 2001 From: rrene Date: Thu, 17 Dec 2020 10:16:51 -0700 Subject: [PATCH 07/18] -- productos de NC por pronto pago --- Ventas/ClientesAbonar.aspx.vb | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/Ventas/ClientesAbonar.aspx.vb b/Ventas/ClientesAbonar.aspx.vb index 8b4334e83..4a8e19e4e 100644 --- a/Ventas/ClientesAbonar.aspx.vb +++ b/Ventas/ClientesAbonar.aspx.vb @@ -2082,8 +2082,13 @@ Partial Class Ventas_ClientesAbonar Dim SubProyecto = DrSubProyecto("SubProyecto").ToString Dim Proyecto = DrSubProyecto("Proyecto").ToString - Dim CveSATNC = "84111506" - Dim DrPS = GlobalDTPS(UsuarioActual.CveEmpresa, SATClavePS:=CveSATNC, AplicaParaVenta:=1).FiltroPrimero("") + Dim CveSATNC As Integer + Dim ArrayNC As String() = UsuarioActual.Empresa.Funcionalidad(591).Split(",".ToCharArray()) + Dim NCBonificacion As Integer = 0 + If ArrayNC.Length > 6 Then 'CONCEPTO DE PRONTO PAGO + CveSATNC = ArrayNC(6).ToEntero() + End If + Dim DrPS = GlobalDTPS(UsuarioActual.CveEmpresa, CvePS:=CveSATNC, AplicaParaVenta:=1).FiltroPrimero("") For Each Dr As DataRow In DtImpuestos.Rows AgregaTempDTNC(ObjFacturaDevolucion.DtDetalle, DrPS("CvePS").ToString.ToEntero, DrPS("PS").ToString, DrPS("Codigo").ToString, DrPS("PSCodigo").ToString, DrPS("CveTipoPS").ToString.ToEntero, DrPS("Inv_CveMetodoInventario").ToString.ToEntero, From 49178fb0267da1938917c61a4824ee4bdba28d43 Mon Sep 17 00:00:00 2001 From: rrene Date: Thu, 17 Dec 2020 10:17:34 -0700 Subject: [PATCH 08/18] -- renglon 4 de acumulados --- Ventas/Clientes.aspx.vb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Ventas/Clientes.aspx.vb b/Ventas/Clientes.aspx.vb index 55ce1f097..a01b7bf92 100644 --- a/Ventas/Clientes.aspx.vb +++ b/Ventas/Clientes.aspx.vb @@ -9141,7 +9141,7 @@ Partial Class Clientes End If Dim ImporteBonificacion As Decimal = 0 - If ObjAcum.GetMovimientosDistribuidorResumen(CveCliente, UsuarioActual.CveEmpresa) AndAlso ObjAcum.DtResultados.Rows.Count > 0 Then + If ObjAcum.GetMovimientosDistribuidorResumen(CveCliente, UsuarioActual.CveEmpresa) AndAlso ObjAcum.DtResultados.Rows.Count >= 4 Then GvUsadosResumen.DataSource = ObjAcum.DtResultados ImporteBonificacion = ObjAcum.DtResultados.Rows(4)("Valor").ToString().ToDecimal() End If From 5c50de629dba399a5f8b898217719e5579773c77 Mon Sep 17 00:00:00 2001 From: Jonathan Alexis Perez Morales Date: Thu, 17 Dec 2020 15:04:34 -0700 Subject: [PATCH 09/18] Cambios en NC --- App_Code/ClsAcumuladores.vb | 4 +- App_Code/Modelos.vb | 2 +- Ventas/Ventas.aspx | 35 ++--- Ventas/Ventas.aspx.vb | 278 +++++++++++++++++++++++++++++++----- 4 files changed, 264 insertions(+), 55 deletions(-) diff --git a/App_Code/ClsAcumuladores.vb b/App_Code/ClsAcumuladores.vb index d7134d6b8..c37e75652 100644 --- a/App_Code/ClsAcumuladores.vb +++ b/App_Code/ClsAcumuladores.vb @@ -898,7 +898,7 @@ Public Class ClsAcumuladores End Function #End Region - Public Function DistribuidorMovtosAdd(CveCliente As Integer, Cantidad As Integer, CveTamaño As Integer, CveConcepto As Integer, CveVenta As Integer, CveUsuario As Integer, + Public Function DistribuidorMovtosAdd(CveCliente As Integer, Cantidad As Decimal, CveTamaño As Integer, CveConcepto As Integer, CveVenta As Integer, CveUsuario As Integer, CveEmpresa As Integer, ImporteCompras As Decimal, Observaciones As String, Optional CveMovimiento As Integer = -1) As Boolean Dim Retorno As Boolean = False 'Data = New DataTable @@ -907,7 +907,7 @@ Public Class ClsAcumuladores With SqlAdapter.SelectCommand.Parameters .Add("@CveCliente", SqlDbType.Int).Value = CveCliente - .Add("@Cantidad", SqlDbType.Int).Value = Cantidad + .Add("@Cantidad", SqlDbType.Decimal).Value = Cantidad .Add("@CveTamaño", SqlDbType.Int).Value = CveTamaño .Add("@CveConcepto", SqlDbType.Int).Value = CveConcepto .Add("@CveVenta", SqlDbType.Int).Value = CveVenta diff --git a/App_Code/Modelos.vb b/App_Code/Modelos.vb index 2a0131d71..bbe9ae2b3 100644 --- a/App_Code/Modelos.vb +++ b/App_Code/Modelos.vb @@ -5129,7 +5129,7 @@ Namespace Modelos For Each RowUsado As DataRow In DtPSVirtual.Rows Dim CvePS = RowUsado("CvePS").ToString().ToEntero() Dim CantidadUsado As Double = RowUsado("Cantidad").ToString().ToDouble() - Dim PU As Decimal = RowUsado("PUOriginal").ToString().ToDecimal() + Dim PU As Decimal = RowUsado("Cargo").ToString().ToDecimal() Dim CveUM As Integer = RowUsado("CveUM").ToString().ToEntero() If Not ObjInventario.AddMovimientoDetalle(CveMovimientoVirtual, CantidadUsado, CveUM, CvePS, PU, -1) Then diff --git a/Ventas/Ventas.aspx b/Ventas/Ventas.aspx index 08553cbad..ccd51ab6e 100644 --- a/Ventas/Ventas.aspx +++ b/Ventas/Ventas.aspx @@ -4570,7 +4570,7 @@
Contrato:
- +
Moneda:
@@ -6038,6 +6038,15 @@

-
-
-
-
- - -
-
-
@@ -7235,13 +7235,14 @@ TxtImporte.value = FormatoNumero(Saldo, 2); } } else { - if (SaldoMaximoUtilizable > 0) { - TxtImporte.value = ""; - Chk.checked = false; - } else { - TxtImporte.value = FormatoNumero(Saldo, 2); - } - + TxtImporte.value = ""; + Chk.checked = false; + //if (SaldoMaximoUtilizable > 0) { + // TxtImporte.value = ""; + // Chk.checked = false; + //} else { + // TxtImporte.value = FormatoNumero(Saldo, 2); + //} } } else { diff --git a/Ventas/Ventas.aspx.vb b/Ventas/Ventas.aspx.vb index 215665354..70a6134cf 100644 --- a/Ventas/Ventas.aspx.vb +++ b/Ventas/Ventas.aspx.vb @@ -2721,7 +2721,7 @@ Partial Class Ventas ImgOtrosConceptos.Visible = False TrFormaEntrega.Visible = False TabDetalleVentas.Visible = False - TabE.Visible = False + 'TabE.Visible = False LnkOCs.Visible = False GvPS.Columns(8).Visible = False TrEdit.Visible = True @@ -3526,6 +3526,8 @@ Partial Class Ventas End If End If + CalculaUsados() + CalculaTotalesVenta() LbAgregar.Visible = False UpPS.Update() @@ -5690,7 +5692,7 @@ Partial Class Ventas DivVentasUsados.Visible = True Dim ObjClientes As New ClsClientes - If ObjClientes.GetHistorialVentas(CveCliente, 1000, CveClienteSucursal:=-1, TipoDocto:="Ing", CveEstatusFactura:=-1, FechaI:=Now.AddMonths(-1)) Then + If ObjClientes.GetHistorialVentas(CveCliente, CveClienteSucursal:=-1, TipoDocto:="Ing", CveEstatusFactura:=-1, FechaI:=Now.AddMonths(-1)) Then DdlVentaUsado.DataSource = ObjClientes.DtResultados.FiltraParametros("UsadoMarcado = 0") End If ObjClientes.Dispose() @@ -5789,7 +5791,7 @@ Partial Class Ventas UpFacturasRelacionadas.Update() End Sub Protected Sub CreaTmpFacturasRelacionadas() - If CveVenta <= 0 Then + If CveVenta <= 0 OrElse EsCreaApartirDe Then Me.TmpDTFacturasRelacionadas = New DataTable() Me.TmpDTFacturasRelacionadas.Columns.Add(New DataColumn("CveVenta", GetType(Integer))) Me.TmpDTFacturasRelacionadas.Columns.Add(New DataColumn("SerieFolio", GetType(String))) @@ -5797,7 +5799,7 @@ Partial Class Ventas End If End Sub Protected Sub LnkAgregarFacturaRelacionada_Click(sender As Object, e As EventArgs) - If CveVenta <= 0 Then + If CveVenta <= 0 OrElse EsCreaApartirDe Then If Me.TmpDTFacturasRelacionadas Is Nothing Then CreaTmpFacturasRelacionadas() End If @@ -5827,7 +5829,7 @@ Partial Class Ventas End Sub Protected Sub BtnAgregarFacturasRelaciondas_Click(sender As Object, e As EventArgs) - If CveVenta <= 0 Then + If CveVenta <= 0 OrElse EsCreaApartirDe Then If Me.TmpDTFacturasRelacionadas Is Nothing OrElse Me.TmpDTFacturasRelacionadas.Rows.Count = 0 Then Me.AplicaRelacionManual = False Alert("No hay facturas para relacionar", TipoMensaje.MsgAdvertencia) @@ -7002,7 +7004,7 @@ Partial Class Ventas End If If (CveVenta > 0 And DdlTipoComprobante.SelectedValue <> "Cot") AndAlso Not AplicaDevolucion Then - If e.Row.DBCampo("CveConcepto").ToEntero() = 3 Then CveAlmacenDevolucion = e.Row.DBCampo("CveAlmacen").ToEntero() + If e.Row.DBCampo("CveConcepto").ToEntero().Contiene(3, 40) Then CveAlmacenDevolucion = e.Row.DBCampo("CveAlmacen").ToEntero() e.Row.FCCheckBox("cbInv").Visible = False End If @@ -8197,7 +8199,7 @@ Partial Class Ventas 'MUESTA ALERT OK ' si es elrol 1165-Ventas,EMp:80, o la empresa 119, recarga ventas, para seguir registrando-. - Dim Liga = If(UsuarioActual.CveRol = 1165 Or UsuarioActual.CveEmpresa = 119, "document.location.href=""/Ventas/Ventas.aspx?CveVenta=-1"";", If(CveEmpresaCRM > 0, $"document.location.href=""/CRM/EmpresaCRM.aspx?CveEmpresaCRM={CveEmpresaCRM}"";", $"document.location.href=""/Ventas/Clientes.aspx?CveCliente={CveCliente}&Opt=3"";")) + Dim Liga = If(UsuarioActual.CveRol = 1165 Or UsuarioActual.CveEmpresa = 119, "document.location.href=""/Ventas/Ventas.aspx?CveVenta=-1"";", If(CveEmpresaCRM > 0, $"document.location.href=""/CRM/EmpresaCRM.aspx?CveEmpresaCRM={CveEmpresaCRM}"";", $"document.location.href=""/Ventas/Clientes.aspx?CveCliente={CveCliente}&Opt=2"";")) Alert(MensajeAlert.ToString(), TipoMensaje.MsgInformacion, Liga) MensajeAlert.Clear() @@ -9677,7 +9679,7 @@ Partial Class Ventas If ObjFolios.GetFolios(TipoDoctoConsulta, UsuarioActual.CveEmpresa) Then Dim DT As DataTable = ObjFolios.DtResultados.FiltraParametros(String.Format(" CveSubProyecto = {0} And Estado = 'Activo'", DdlSubProyectoDatos.SelectedValue)) If DT.Rows.Count > 0 Then - ObjFactura.Serie = DT.Rows(0)("Serie").ToString() + ObjFacturaDevolucion.Serie = DT.Rows(0)("Serie").ToString() End If DT.Dispose() End If @@ -10736,9 +10738,34 @@ Partial Class Ventas 'SI SE FACTURA UNA RNC SE MUESTRA If UsuarioActual.CveEmpresa = 140 AndAlso factura.TipoDocto = "Egs" Then If Row("CveVentaDetalleRNC").ToString().ToEntero() > 0 Then + If Not ObjVentas.AddVentaDetalleRNCFacturada(Row("CveVentaDetalleRNC").ToString().ToEntero(), ObjVentas.CveVentaDetalle, Row("Cantidad").ToString().ToDecimal()) Then ErrorList.Add("Ocurrió un error al agregar la venta detalle devolución.") End If + + 'SI SE FACTURAN RNC DE CARGO, SE AGREGA EL CONCEPTO DE ACREDITAMIENTO + If ClienteEsDistribuidor AndAlso RblRNCTipo.SelectedValue = "1" Then + Dim ObjAcum As New ClsAcumuladores(ObjVentas.IniciaTransacSQL()) + + Dim CvePSCargo As Integer = -1 + For Each RNC In ListaRemisionesNC + CvePSCargo = RNC.DtDetalle.FiltroPrimeroValor("CvePS", $"CveVentaDetalle={Row("CveVentaDetalleRNC").ToString()}").ToEntero() + If CvePSCargo > 0 Then + Exit For + End If + Next + + Dim CveTamanio As Integer = GlobalDTAcumTamaños().FiltroPrimeroValor("CveTamaño", $"CvePSCargo={CvePSCargo}").ToEntero() + + If CveTamanio > 0 Then + If Not ObjAcum.DistribuidorMovtosAdd(factura.CveCliente, Row("Cantidad").ToString().ToDecimal(), CveTamanio, 6, factura.CveVenta, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, 0D, "") Then + ErrorList.Add("Ocurrió un error al agregar la venta detalle devolución.") + Exit For + End If + End If + + End If + End If End If @@ -14666,7 +14693,7 @@ Partial Class Ventas 'MUESTA Alert OK 'MensajeAlert.Append("El Documento se generó correctamente") - Dim Liga = If(UsuarioActual.CveRol = 1165, "document.location.href=""/Ventas/Ventas.aspx?CveVenta=-1"";", $"document.location.href=""/Ventas/Clientes.aspx?CveCliente={CveCliente}&Opt=3"";") + Dim Liga = If(UsuarioActual.CveRol = 1165, "document.location.href=""/Ventas/Ventas.aspx?CveVenta=-1"";", $"document.location.href=""/Ventas/Clientes.aspx?CveCliente={CveCliente}&Opt=2"";") Alert(MensajeAlert.ToString(), TipoMensaje.MsgInformacion, Liga) TrEmitir.Visible = False @@ -15728,7 +15755,13 @@ Partial Class Ventas TrVistaPrevia.Visible = True UpFacturar.Update() Else - Alert("No tiene registrados Folios para " & DdlTipoComprobante.SelectedItem.Text & " en esta sucursal.", TipoMensaje.MsgAdvertencia) + + If DdlTipoComprobante.Items.Count > 0 Then + Alert("No tiene registrados Folios para " & DdlTipoComprobante.SelectedItem.Text & " en esta sucursal.", TipoMensaje.MsgAdvertencia) + Else + Alert("No tiene permisos para generar ningun tipo de documento.", TipoMensaje.MsgAdvertencia) + End If + TrEmitir.Visible = False TrVistaPrevia.Visible = False BtnCrearApartirDe.Enabled = False @@ -17718,6 +17751,7 @@ Partial Class Ventas DtRemConceptosSurtidos = Nothing Dim TieneMovimientosSinCosto As Boolean = False + Dim TieneMovimientosContrato As Boolean = False 'Obtenemos los movimientos detalle If ObjInventario.GetInv_Mov(CveRemision, UsuarioActual.CveEmpresa) Then @@ -17755,6 +17789,8 @@ Partial Class Ventas TieneMovimientosSinCosto = DtMovimientosDetalles.COUNT("CveTipoAlmacen", "CveTipoAlmacen=26") > 0 + TieneMovimientosContrato = DtMovimientosDetalles.COUNT("CveTipoAlmacen", "CveTipoAlmacen IN (11)") > 0 + For Each dr As DataRow In DtMovimientos.Rows 'Obtenemos los Movimientos de salida If ObjInventario.GetMovimientos(dr("CveMovimiento").ToString().ToEntero(), ConceptoMovimiento, -1, UsuarioActual.CveEmpresa) Then @@ -17777,7 +17813,12 @@ Partial Class Ventas If TieneMovimientosSinCosto Then MovDetalle = DtMovimientosDetalles.FiltraParametros($"CveMovimiento = {dr("CveMovimiento")}") Else - MovDetalle = CuadrarFacturaMovimientos(DtMovimientosDetalles.FiltraParametros($"CveMovimiento = {dr("CveMovimiento")} AND (TieneSalidaxFactura IS NULL OR SaldoAlmacen > 0)")) + If TieneMovimientosContrato Then + MovDetalle = CuadrarFacturaMovimientos(DtMovimientosDetalles.FiltraParametros($"CveMovimiento = {dr("CveMovimiento")}")) + Else + MovDetalle = CuadrarFacturaMovimientos(DtMovimientosDetalles.FiltraParametros($"CveMovimiento = {dr("CveMovimiento")} AND (TieneSalidaxFactura IS NULL OR SaldoAlmacen > 0)")) + End If + End If Else MovDetalle = DtMovimientosDetalles.FiltraParametros($"CveMovimiento = {dr("CveMovimiento")}") @@ -17831,10 +17872,6 @@ Partial Class Ventas 'Le damos salida normal If ConSalida AndAlso Not OcurrioError Then - If UsuarioActual.Empresa.Funcionalidad(573) = "1" Then - OcurrioError = Not GenerarMovimientoAlmacenVirtual(CveRemision, ObjInventario, ObjFactura, ObjConta:=ObjConta) - End If - If Not OcurrioError Then GeneroMovimientoAlmacen = GenerarMovimientoAlmacen(ObjInventario, MovDetalle, CveAlmacenParaSalida, CveConceptoSalidaAlmacen, CveMoneda, ObjFactura.CveVenta, AplicaMovimientoDetalleEntrada:=AplicaMovimientoDetalleEntrada, MovimientoPrePoliza:=True, ObjConta:=ObjConta) > 0 @@ -17842,6 +17879,10 @@ Partial Class Ventas OcurrioError = True Exit For End If + + If Not OcurrioError AndAlso UsuarioActual.Empresa.Funcionalidad(573) = "1" Then + OcurrioError = Not GenerarMovimientoAlmacenVirtual(CveRemision, ObjInventario, ObjFactura, ObjConta:=ObjConta) + End If End If End If @@ -18215,26 +18256,43 @@ Partial Class Ventas Dim CveConceptoMovimientoVirtual As Integer = 37 Dim DtPSVirtual As DataTable = Nothing Dim DtTamanios As DataTable = Nothing - Dim CveMovimientoEntradaDev As Integer = -1 - Dim CveSubProyecto As Integer = -1 + Dim CveMovimientoReferencia As Integer = -1 + 'SI LA REMISION SE SURTIO CON USADOS UTILIZAR ESTE MOVIMIENTO If ObjInventario.GetInv_Mov(CveRemision, UsuarioActual.CveEmpresa) Then - Dim RowMovimiento As DataRow = ObjInventario.DtResultados.FiltroPrimero("CvePS IS NULL AND ((CveTipoAlmacen = 24 AND CveConcepto = 2) OR (CveTipoAlmacen = 1 AND CveConcepto = 8)) AND CveVenta > 0") + Dim RowMovimiento As DataRow = ObjInventario.DtResultados.FiltroPrimero("CvePS IS NULL AND (CveTipoAlmacen = 24 AND CveConcepto = 2) AND CveVenta > 0") If RowMovimiento IsNot Nothing Then - CveMovimientoEntradaDev = RowMovimiento("CveMovimiento").ToString().ToEntero() + CveMovimientoReferencia = RowMovimiento("CveMovimiento").ToString().ToEntero() Dim tCveAlmacen = RowMovimiento("CveAlmacen").ToString().ToEntero() - CveSubProyecto = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("CveSubProyecto", $"CveAlmacen= {tCveAlmacen}").ToEntero() CveAlmacenVirtual = GlobalDTAlmacen(UsuarioActual.CveEmpresa, CveAlmacen:=tCveAlmacen).FiltroPrimeroValor("CveAlmacenVirtual").ToEntero() - - Else - OcurrioError = True End If Else OcurrioError = True End If - If ObjInventario.GetMovimientosDetalleVirtual(CveMovimientoEntradaDev, UsuarioActual.CveEmpresa) Then + + 'SI NO SE SURTIO LA REMSION CON USADOS, UTILIZAR EL MOVIMIENTO DE SALIDA DEL INGRESO + If CveMovimientoReferencia <= 0 Then + If ObjInventario.GetInv_Mov(ObjFactura.CveVenta, UsuarioActual.CveEmpresa) Then + Dim RowMovimiento As DataRow = ObjInventario.DtResultados.FiltroPrimero("CvePS IS NULL AND ( (CveTipoAlmacen = 1 AND CveConcepto = 3) OR (CveTipoAlmacen = 10 AND CveConcepto = 40) ) AND CveVenta > 0") + + If RowMovimiento IsNot Nothing Then + CveMovimientoReferencia = RowMovimiento("CveMovimiento").ToString().ToEntero() + Dim tCveAlmacen = RowMovimiento("CveAlmacen").ToString().ToEntero() + CveAlmacenVirtual = GlobalDTAlmacen(UsuarioActual.CveEmpresa, CveAlmacen:=tCveAlmacen).FiltroPrimeroValor("CveAlmacenVirtual").ToEntero() + + Else + OcurrioError = True + End If + + Else + OcurrioError = True + End If + End If + + + If ObjInventario.GetMovimientosDetalleVirtual(CveMovimientoReferencia, UsuarioActual.CveEmpresa) Then DtPSVirtual = ObjInventario.DtResultados.Copy() Else OcurrioError = True @@ -18242,13 +18300,13 @@ Partial Class Ventas If Not OcurrioError AndAlso DtPSVirtual.Rows.Count > 0 Then - CveMovimientoVirtual = ObjInventario.AddMovimiento(CveAlmacenVirtual, CveConceptoMovimientoVirtual, 1, TxtFecha.Text.ToDate, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, ObjFactura.CveVenta, -1, -1, Modulo:="Vta/VV", CveMovimientoRelacionado:=CveMovimientoEntradaDev) + CveMovimientoVirtual = ObjInventario.AddMovimiento(CveAlmacenVirtual, CveConceptoMovimientoVirtual, 1, TxtFecha.Text.ToDate, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, ObjFactura.CveVenta, -1, -1, Modulo:="Vta/VV", CveMovimientoRelacionado:=CveMovimientoReferencia) If CveMovimientoVirtual > 0 Then For Each RowUsado As DataRow In DtPSVirtual.Rows Dim CvePS = RowUsado("CvePS").ToString().ToEntero() Dim CantidadUsado As Double = RowUsado("Cantidad").ToString().ToDouble() - Dim PU As Decimal = RowUsado("PU").ToString().ToDecimal() + Dim PU As Decimal = RowUsado("Cargo").ToString().ToDecimal() Dim CveUM As Integer = RowUsado("CveUM").ToString().ToEntero() If Not ObjInventario.AddMovimientoDetalle(CveMovimientoVirtual, CantidadUsado, CveUM, CvePS, PU, -1) Then @@ -18318,6 +18376,123 @@ Partial Class Ventas OcurrioError = True End Try + Return Not OcurrioError + + End Function + Private Function GenerarMovimientoAlmacenVirtualConsignacion(CveVenta As Integer, CveAlmacenContrato As Integer, ByRef ObjInventario As ClsInventarios, ObjFactura As Modelos.Factura, Optional ByRef ObjConta As ClsContabilidad = Nothing) As Boolean + Dim OcurrioError As Boolean = False + + If UsuarioActual.Empresa.Funcionalidad(573) = "1" Then + Try + Dim CveMovimientoVirtual As Integer = -1 + Dim CveAlmacenVirtual As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa, CveAlmacen:=CveAlmacenContrato).FiltroPrimeroValor("CveAlmacenVirtual").ToEntero() + + Dim CveConceptoMovimientoVirtual As Integer = 37 + Dim DtPSVirtual As DataTable = Nothing + Dim DtTamanios As DataTable = Nothing + Dim CveMovimientoReferencia As Integer = -1 + Dim CveSubProyecto As Integer = -1 + + + If ObjInventario.GetInv_Mov(CveVenta, UsuarioActual.CveEmpresa) Then + Dim RowMovimiento As DataRow = ObjInventario.DtResultados.FiltroPrimero("CvePS IS NULL AND ((CveTipoAlmacen = 24 AND CveConcepto = 2) OR (CveTipoAlmacen = 17 AND CveConcepto = 8)) AND CveVenta > 0") + + If RowMovimiento IsNot Nothing Then + CveMovimientoReferencia = RowMovimiento("CveMovimiento").ToString().ToEntero() + Else + OcurrioError = True + End If + + Else + OcurrioError = True + End If + + If ObjInventario.GetMovimientosDetalleVirtual(CveMovimientoReferencia, UsuarioActual.CveEmpresa) Then + DtPSVirtual = ObjInventario.DtResultados.Copy() + Else + OcurrioError = True + End If + + If Not OcurrioError AndAlso DtPSVirtual.Rows.Count > 0 Then + + CveMovimientoVirtual = ObjInventario.AddMovimiento(CveAlmacenVirtual, CveConceptoMovimientoVirtual, 1, TxtFecha.Text.ToDate, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, ObjFactura.CveVenta, -1, -1, Modulo:="Vta/VV", CveMovimientoRelacionado:=CveMovimientoReferencia) + + If CveMovimientoVirtual > 0 Then + For Each RowUsado As DataRow In DtPSVirtual.Rows + Dim CvePS = RowUsado("CvePS").ToString().ToEntero() + Dim CantidadUsado As Double = RowUsado("Cantidad").ToString().ToDouble() + Dim PU As Decimal = RowUsado("Cargo").ToString().ToDecimal() + Dim CveUM As Integer = RowUsado("CveUM").ToString().ToEntero() + + If Not ObjInventario.AddMovimientoDetalle(CveMovimientoVirtual, CantidadUsado, CveUM, CvePS, PU, -1) Then + OcurrioError = True + Exit For + End If + Next + Else + OcurrioError = True + End If + + 'Agregamos las PrePolizas + If Not OcurrioError Then + If CveMovimientoVirtual > 0 Then + 'OcurrioError = Not GeneraPrePolizaMovimientoAlmacen(ObjInventario, ObjConta, ObjContPaq, ObjFactura, ObjFactura.CvePrePoliza, CveMovimientoInventario, CveAlmacen) + If ObjInventario.GetMovimientosDetalle(CveMovimientoVirtual, UsuarioActual.CveEmpresa) AndAlso ObjInventario.DtResultados.Rows.Count > 0 Then + Dim DtCostos = ObjInventario.DtResultados.Copy + Dim DtCostosDistinct As DataTable = ObjInventario.DtResultados.FiltraParametros("", "", {"CveClasificacion"}) + Dim IdCtaContable As Integer = 0 + Dim CveCuenta As Integer = 0 + Dim ValorInventario As Decimal + Dim TotalCostoAcumulado As Decimal = 0D + Dim Cont As Integer = 1 + Dim TotalCosto As Decimal = DtCostos.SUMD("Total").RoundSQL + + For Each RowInv As DataRow In DtCostosDistinct.Rows + ValorInventario = DtCostos.SUMD("Total", String.Format("CveClasificacion = {0}", RowInv("CveClasificacion"))).RoundSQL + IdCtaContable = GlobalDTClasificaciones(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCuentaCostos", $"CveClasificacion = {RowInv("CveClasificacion")}").ToEntero() + CveCuenta = GlobalDTClasificaciones(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCuentaGastoSIG", $"CveClasificacion = {RowInv("CveClasificacion")}").ToEntero() + TotalCostoAcumulado += ValorInventario + + 'cuando es el último movimiento y hay diferencias en los importes + If Cont = DtCostosDistinct.Rows.Count AndAlso TotalCosto <> TotalCostoAcumulado Then + ValorInventario = ValorInventario + (TotalCosto - TotalCostoAcumulado) + End If + + Try + 'If ValorInventario <> 0 Then + If Not ObjConta.AddPrePolizasDetalle(ObjFactura.CvePrePoliza, False, ValorInventario, ObjFactura.SerieFolio, 69, ObjFactura.SerieFolio, ObjFactura.Fecha, IdCtaContable, -1, CveVenta:=CveVenta, CveCliente:=ObjFactura.CveCliente, CveClasificacion:=RowInv("CveClasificacion").ToString().ToEntero(), CveMovimientoAlmacen:=CveMovimientoVirtual, ImporteMX:=ValorInventario, CveCuenta:=CveCuenta, CveSubProyecto:=ObjFactura.CveSubProyecto) Then + OcurrioError = True + Exit For + End If + 'End If + Catch ex As Exception + OcurrioError = True + Alert("Error inesperado (15148). Por favor comuniquese con atención SIG.", TipoMensaje.ToastError) + End Try + Cont += 1 + Next + + If Not OcurrioError Then + IdCtaContable = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCtaContable", String.Format("CveAlmacen = {0}", CveAlmacenVirtual)).ToEntero() + If Not ObjConta.AddPrePolizasDetalle(ObjFactura.CvePrePoliza, True, TotalCosto, ObjFactura.SerieFolio, 68, ObjFactura.SerieFolio, ObjFactura.Fecha, IdCtaContable, -1, CveVenta:=CveVenta, CveCliente:=ObjFactura.CveCliente, CveMovimientoAlmacen:=CveMovimientoVirtual, ImporteMX:=TotalCosto, CveCuenta:=CveCuenta, CveSubProyecto:=ObjFactura.CveSubProyecto) Then + OcurrioError = True + End If + End If + Else + OcurrioError = True + End If + End If + End If + + End If + + Catch ex As Exception + OnError("Ocurrió un error al generar el almacen virtual.", ex) + OcurrioError = True + End Try + End If + + Return Not OcurrioError End Function @@ -22349,7 +22524,7 @@ Partial Class Ventas Dim CveUnidad As Integer Dim Cantidad As Double Dim Existencia As Double - For Each Dr As DataRow In TmpDT.Rows + For Each Dr As DataRow In TmpDT.FiltraParametros("CveTipoPS=2").Rows CveProducto = Dr("CvePS").ToString().ToEntero() CveUnidad = Dr("CveUM").ToString().ToEntero() Cantidad = Dr("Cantidad").ToString().ToDouble @@ -22443,6 +22618,11 @@ Partial Class Ventas End If + If Not GenerarMovimientoAlmacenVirtualConsignacion(factura.CveVenta, CveAlmacenExistenciasContrato, ObjInventario, factura, ObjConta) Then + Return False + End If + + Return True End Function @@ -23910,10 +24090,18 @@ Partial Class Ventas If ObjAcum.GetMovimientosDistribuidorResumen(CveCliente, UsuarioActual.CveEmpresa) Then Dim RowUsadosNC As DataRow = ObjAcum.DtResultados.Rows(2) DivSMU.Visible = True - HdnSaldoMaximoUsados.Value = RowUsadosNC("ValorConImpuestos").ToString() - LtlSMU.Text = RowUsadosNC("ValorConImpuestos").ToString().ToDecimal().FormatoNumero(2) + + Dim SaldoMaximo As Decimal = RowUsadosNC("ValorConImpuestos").ToString().ToDecimal() + If SaldoMaximo > 0 Then + HdnSaldoMaximoUsados.Value = RowUsadosNC("ValorConImpuestos").ToString() + LtlSMU.Text = RowUsadosNC("ValorConImpuestos").ToString().ToDecimal().FormatoNumero(2) + Else + HdnSaldoMaximoUsados.Value = "0" + LtlSMU.Text = "0" + End If + Else - DivSMU.Visible = False + 'DivSMU.Visible = False HdnSaldoMaximoUsados.Value = "0" LtlSMU.Text = "0" End If @@ -23953,8 +24141,15 @@ Partial Class Ventas DivSMU.Visible = True Dim FacUsado As New Modelos.Factura(UsuarioActual, CveVentaUsado, UsuarioActual.CveEmpresa) Dim SaldoMaximoUsados As Decimal = FacUsado.DtDetalle.SUM("Total", "EsCargo = True").ToDecimal() + FacUsado.DtDetalle.SUM("ImporteIVA", "EsCargo = True").ToDecimal() - HdnSaldoMaximoUsados.Value = SaldoMaximoUsados.ToString() - LtlSMU.Text = String.Format("{0:N2}", SaldoMaximoUsados) + + If SaldoMaximoUsados > 0 Then + HdnSaldoMaximoUsados.Value = SaldoMaximoUsados.ToString() + LtlSMU.Text = String.Format("{0:N2}", SaldoMaximoUsados) + Else + HdnSaldoMaximoUsados.Value = "0" + LtlSMU.Text = "0" + End If + Else Dim ObjAcum As New ClsAcumuladores If ObjAcum.GetMovimientosDistribuidorResumen(CveCliente, UsuarioActual.CveEmpresa) Then @@ -23963,7 +24158,7 @@ Partial Class Ventas HdnSaldoMaximoUsados.Value = RowUsadosNC("ValorConImpuestos").ToString() LtlSMU.Text = RowUsadosNC("ValorConImpuestos").ToString().ToDecimal().FormatoNumero(2) Else - DivSMU.Visible = False + 'DivSMU.Visible = False HdnSaldoMaximoUsados.Value = "0" LtlSMU.Text = "0" End If @@ -23995,9 +24190,14 @@ Partial Class Ventas GvDescNCBonificaciones.DataBind() Dim SaldoMaximoUsados As Decimal = Me.TmpDT.SUM("Total", "EsCargo = True").ToDecimal() + Me.TmpDT.SUM("ImporteIVA", "EsCargo = True").ToDecimal() + If SaldoMaximoUsados > 0 Then + LblSaldoMaximoUsados.Text = String.Format("{0:N2}", SaldoMaximoUsados) + HdnSaldoMaximoUsados.Value = SaldoMaximoUsados.ToString() + Else + HdnSaldoMaximoUsados.Value = "0" + LtlSMU.Text = "0" + End If - LblSaldoMaximoUsados.Text = String.Format("{0:N2}", SaldoMaximoUsados) - HdnSaldoMaximoUsados.Value = SaldoMaximoUsados.ToString() UpDescNC.Update() End Sub @@ -27301,6 +27501,13 @@ Partial Class Ventas BloqueaCondiconesPago() + + DivDdlFacturaRela.Visible = True + BtnAgregarFacturasRelaciondas.Visible = True + DdlTipoRelacionARelacionar.Enabled = True + + GvFacturasRelacionadas.Columns(2).Visible = True + UpnTools.Update() UpCliente.Update() UpParametros.Update() @@ -27313,6 +27520,7 @@ Partial Class Ventas UpEstatus.Update() UpParametros.Update() UpINV.Update() + UpFacturasRelacionadas.Update() End Sub #End Region From 3efa6e6af000edf6ea4349ba96fb8e3229e98797 Mon Sep 17 00:00:00 2001 From: Jonathan Alexis Perez Morales Date: Thu, 17 Dec 2020 15:05:20 -0700 Subject: [PATCH 10/18] Cambios en virtuales --- Inventarios/EntregaAlmacen.aspx.vb | 2 +- Inventarios/RecepcionAlmacen.aspx.vb | 62 ++++++++++++- Inventarios/TraspasoAlmacen.aspx.vb | 132 +++++++++++++-------------- 3 files changed, 126 insertions(+), 70 deletions(-) diff --git a/Inventarios/EntregaAlmacen.aspx.vb b/Inventarios/EntregaAlmacen.aspx.vb index 1ec5937e6..d0f0ebb22 100644 --- a/Inventarios/EntregaAlmacen.aspx.vb +++ b/Inventarios/EntregaAlmacen.aspx.vb @@ -2709,7 +2709,7 @@ Partial Class Inventarios_EntregaAlmacen For Each RowUsado As DataRow In DtPSVirtual.Rows Dim CvePS = RowUsado("CvePS").ToString().ToEntero() Dim CantidadUsado As Double = RowUsado("Cantidad").ToString().ToDouble() - Dim PU As Decimal = RowUsado("PU").ToString().ToDecimal() + Dim PU As Decimal = RowUsado("Cargo").ToString().ToDecimal() Dim CveUM As Integer = RowUsado("CveUM").ToString().ToEntero() If Not ObjInventario.AddMovimientoDetalle(CveMovimientoVirtual, CantidadUsado, CveUM, CvePS, PU) Then diff --git a/Inventarios/RecepcionAlmacen.aspx.vb b/Inventarios/RecepcionAlmacen.aspx.vb index 579a324c4..682d9e172 100644 --- a/Inventarios/RecepcionAlmacen.aspx.vb +++ b/Inventarios/RecepcionAlmacen.aspx.vb @@ -2377,7 +2377,7 @@ Partial Class Inventarios_RecepcionAlmacen Dim CveVendedorActual = -1 Dim CveClienteActual = -1 - Dim CveAlmacenDestino = CveAlmacen + Dim CveAlmacenDestino = CveAlmacenDevolucionProveedor Dim CveSeccionDestino As Integer = -1 'For Each RowAlmacen As DataRow In DtAlmacenesDevolucion.FiltraParametros("", DistinctColumns:={"CveAlmacenOrignal"}).Rows @@ -2884,6 +2884,66 @@ Partial Class Inventarios_RecepcionAlmacen End If Next End If + + If SumarImporteUsados Then + If ObjInventario.GetMovimientosDetalle(CveMovimientoVirtual, UsuarioActual.CveEmpresa) Then + ImporteIngresoAdicional = ObjInventario.DtResultados.SUMD("TotalOriginal") + End If + End If + + Else + If RealizarMovimientoVirtual Then + + Dim DtPSVirtual As New DataTable("DtTamanios") + + Dim CveMovimientoRef As Integer = -1 + If RealizarTraspasoAlmacenDevolucion Then + CveMovimientoRef = CveMovimientoSalidaTraspaso + Else + CveMovimientoRef = CveMovimiento + End If + + If ObjInventario.GetMovimientosDetalleVirtual(CveMovimientoRef, UsuarioActual.CveEmpresa) Then + DtPSVirtual = ObjInventario.DtResultados + End If + + If DtPSVirtual IsNot Nothing AndAlso DtPSVirtual.Rows.Count > 0 Then + + Dim CveTipoAlmacenFiltro As Integer = 24 + + Dim CveAlmacenVirtual As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa, CveAlmacen:=DdlAlmacen.SelectedValue.ToEntero()).FiltroPrimeroValor("CveAlmacenVirtual").ToEntero() + + CveMovimientoVirtual = ObjInventario.AddMovimiento(CveAlmacenVirtual, 13, 1, TxtFecha.Text.ToDate, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveCompraSurtir, -1, -1, -1, CveMovimientoRelacionado:=CveMovimientoRef, Observaciones:=TxtObservaciones.Text.Trim, Modulo:="RA/VD") + + If CveMovimientoVirtual > 0 Then + FolioVirtual = ObjInventario.Folio + + For Each RowUsado As DataRow In DtPSVirtual.Rows + Dim CvePS = RowUsado("CvePS").ToString().ToEntero() + Dim CantidadUsado As Decimal = RowUsado("Cantidad").ToString().ToDecimal() + Dim PU As Decimal = RowUsado("Cargo").ToString().ToDecimal() + Dim CveUM As Integer = RowUsado("CveUM").ToString().ToEntero() + + If Not ObjInventario.AddMovimientoDetalle(CveMovimientoVirtual, CantidadUsado, CveUM, CvePS, PU, -1, CveUsuarioModifico:=UsuarioActual.CveUsuario) Then + ErrorMovInv = True + Exit For + End If + Next + + If SumarImporteUsados Then + If ObjInventario.GetMovimientosDetalle(CveMovimientoVirtual, UsuarioActual.CveEmpresa) Then + ImporteIngresoAdicional = ObjInventario.DtResultados.SUMD("TotalOriginal") + End If + End If + + Else + ErrorMovInv = True + End If + + Else + ErrorMovInv = True + End If + End If End If End If diff --git a/Inventarios/TraspasoAlmacen.aspx.vb b/Inventarios/TraspasoAlmacen.aspx.vb index 434eaf4fb..baac711d5 100644 --- a/Inventarios/TraspasoAlmacen.aspx.vb +++ b/Inventarios/TraspasoAlmacen.aspx.vb @@ -882,13 +882,13 @@ Partial Class Inventarios_TraspasoAlmacen dtvirtual = ObjInventario.DtResultados If dtvirtual.Rows.Count > 0 Then - CveMovimientoVirtualSalida = ObjInventario.AddMovimiento(CveAlmacenVirtual, 37, 1, TxtFecha.Text.ToDate, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, -1, -1, -1, Observaciones:=TxtObservaciones.Text.Trim, Modulo:="TA/V", CveMovimientoRelacionado:=CveMovimientoSalida) + CveMovimientoVirtualSalida = ObjInventario.AddMovimiento(CveAlmacenVirtualSalida, 37, 1, TxtFecha.Text.ToDate, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, -1, -1, -1, Observaciones:=TxtObservaciones.Text.Trim, Modulo:="TA/V", CveMovimientoRelacionado:=CveMovimientoSalida) FolioVirtualSalida = ObjInventario.Folio For Each RowVirtual As DataRow In dtvirtual.Rows Dim CvePS = RowVirtual("CvePS").ToString().ToEntero() Dim CantidadUsado As Double = RowVirtual("Cantidad").ToString().ToDouble() - Dim PU As Decimal = RowVirtual("PU").ToString().ToDecimal() + Dim PU As Decimal = RowVirtual("Cargo").ToString().ToDecimal() Dim CveUM As Integer = RowVirtual("CveUM").ToString().ToEntero() If Not ObjInventario.AddMovimientoDetalle(CveMovimientoVirtualSalida, CantidadUsado, CveUM, CvePS, PU, -1, CveUsuarioModifico:=UsuarioActual.CveUsuario) Then @@ -899,7 +899,7 @@ Partial Class Inventarios_TraspasoAlmacen End If Else ErrorMovInv = True - End If + End If End If AlmacenEntrada = If(ChkTransitorio.Checked, DdlAlmacenTransitorio.SelectedValue.ToEntero, DdlAlmacenDestino.SelectedValue.ToEntero) @@ -933,27 +933,23 @@ Partial Class Inventarios_TraspasoAlmacen If Not ChkTransitorio.Checked Then 'SI NO ES TRANSITORIO SE HACE LA RECEPCION DE INMEDIATO If Not ErrorMovInv Then - 'VIRTUAL ENTRADA If RealizarMovimientoVirtual Then - 'Dim CveSubProyecto As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("CveSubProyecto", $"CveAlmacen= {DdlAlmacenDestino.SelectedValue}").ToEntero() - 'SI EL ALMACEN DESTINO ES DE APOPYO LOGISTICO EL ALMACEN VIRTUAL DEBE SER DE APOYO LOGISTICO - Dim CveAlmacenVirtual As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa, CveAlmacen:=CveSubProyectoOrigen).FiltroPrimeroValor("CveAlmacenVirtual", "").ToEntero() Dim dtvirtual As DataTable = Nothing If ObjInventario.GetMovimientosDetalleVirtual(CveMovimientoEntrada, UsuarioActual.CveEmpresa) Then dtvirtual = ObjInventario.DtResultados If dtvirtual.Rows.Count > 0 Then ''hay que verificar que se se tengan movimeintos por registrar - CveMovimientoVirtualEntrada = ObjInventario.AddMovimiento(CveAlmacenVirtual, 36, 1, TxtFecha.Text.ToDate, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, -1, -1, -1, Observaciones:=TxtObservaciones.Text.Trim, CveMovimientoRelacionado:=CveMovimientoEntrada, Modulo:="TA/S3") + CveMovimientoVirtualEntrada = ObjInventario.AddMovimiento(CveAlmacenVirtualEntrada, 36, 1, TxtFecha.Text.ToDate, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, -1, -1, -1, Observaciones:=TxtObservaciones.Text.Trim, CveMovimientoRelacionado:=CveMovimientoEntrada, Modulo:="TA/S3") FolioVirtualEntrada = ObjInventario.Folio For Each RowVirtual As DataRow In dtvirtual.Rows Dim CvePS = RowVirtual("CvePS").ToString().ToEntero() Dim CantidadUsado As Double = RowVirtual("Cantidad").ToString().ToDouble() - Dim PU As Decimal = RowVirtual("PU").ToString().ToDecimal() + Dim PU As Decimal = RowVirtual("Cargo").ToString().ToDecimal() Dim CveUM As Integer = RowVirtual("CveUM").ToString().ToEntero() If Not ObjInventario.AddMovimientoDetalle(CveMovimientoVirtualEntrada, CantidadUsado, CveUM, CvePS, PU, -1, CveUsuarioModifico:=UsuarioActual.CveUsuario) Then @@ -965,70 +961,70 @@ Partial Class Inventarios_TraspasoAlmacen Else ErrorMovInv = True - End If - End If - Dim Concepto As String = TxtObservaciones.Text - If Concepto = "" Then Concepto = "Traspaso" - 'AGREGAMOS PREPOLIZAS TRASPASO DIRECTO: - If Not ErrorMovInv Then - Dim CvePrePoliza As Integer = ObjConta.AddPrePolizas("Inventario/TraspasoAlmacen", 53, 0, 0, 1, Fecha, Concepto, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa) - If ObjInventario.GetMovimientosDetalle(CveMovimientoSalida, UsuarioActual.CveEmpresa) Then - - Dim resultado As DataTable = ObjInventario.DtResultados - Dim importe As Decimal = resultado.SUMD("Total").RoundSQL - 'Dim IdCtaContableSalida As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCtaContable", String.Format("CveAlmacen = {0}", DdlAlmacenOrigen.SelectedValue.ToEntero)).ToEntero - 'Dim IdCtaContableEntrada As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCtaContable", String.Format("CveAlmacen = {0}", DdlAlmacenDestino.SelectedValue.ToEntero)).ToEntero - Dim Contabilizable As Boolean = True - - If IdCtaContableOrigen = IdCtaContableDestino And TipoAlmacenDestino <> 26 Then Contabilizable = False - - If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, importe, TxtObservaciones.Text, 68, TxtObservaciones.Text, Fecha, IdCtaContableOrigen, -1, CveMovimientoAlmacen:=CveMovimientoSalida, Contabilizable:=Contabilizable, ImporteMX:=importe) Then - ErrorMovInv = True - End If - - 'si el tipo de almacen de entrada es Almacen sin costo, se registra al costo, la salida. - If TipoAlmacenOrigen <> 26 AndAlso TipoAlmacenDestino = 26 Then - - Dim tCveClasificacion As Integer = DtMovimientos.MAX("CveClasificacion").ToEntero - Dim dr As DataRow = GlobalDTClasificaciones(UsuarioActual.CveEmpresa, CveClasificacion:=tCveClasificacion).FiltroPrimero("") - Dim IdCuentaCostos As Integer = -1 - If dr IsNot Nothing Then - IdCuentaCostos = dr("IdCuentaCostos").ToString.ToEntero End If - If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, importe, TxtObservaciones.Text, 69, TxtObservaciones.Text, Fecha, IdCuentaCostos, -1, CveClasificacion:=tCveClasificacion, CveSubProyecto:=CveSubProyectoOrigen, CveMovimientoAlmacen:=CveMovimientoSalida, Contabilizable:=Contabilizable, ImporteMX:=importe) Then + End If + Dim Concepto As String = TxtObservaciones.Text + If Concepto = "" Then Concepto = "Traspaso" + 'AGREGAMOS PREPOLIZAS TRASPASO DIRECTO: + If Not ErrorMovInv Then + Dim CvePrePoliza As Integer = ObjConta.AddPrePolizas("Inventario/TraspasoAlmacen", 53, 0, 0, 1, Fecha, Concepto, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa) + If ObjInventario.GetMovimientosDetalle(CveMovimientoSalida, UsuarioActual.CveEmpresa) Then + + Dim resultado As DataTable = ObjInventario.DtResultados + Dim importe As Decimal = resultado.SUMD("Total").RoundSQL + 'Dim IdCtaContableSalida As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCtaContable", String.Format("CveAlmacen = {0}", DdlAlmacenOrigen.SelectedValue.ToEntero)).ToEntero + 'Dim IdCtaContableEntrada As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCtaContable", String.Format("CveAlmacen = {0}", DdlAlmacenDestino.SelectedValue.ToEntero)).ToEntero + Dim Contabilizable As Boolean = True + + If IdCtaContableOrigen = IdCtaContableDestino And TipoAlmacenDestino <> 26 Then Contabilizable = False + + If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, importe, TxtObservaciones.Text, 68, TxtObservaciones.Text, Fecha, IdCtaContableOrigen, -1, CveMovimientoAlmacen:=CveMovimientoSalida, Contabilizable:=Contabilizable, ImporteMX:=importe) Then + ErrorMovInv = True + End If + + 'si el tipo de almacen de entrada es Almacen sin costo, se registra al costo, la salida. + If TipoAlmacenOrigen <> 26 AndAlso TipoAlmacenDestino = 26 Then + + Dim tCveClasificacion As Integer = DtMovimientos.MAX("CveClasificacion").ToEntero + Dim dr As DataRow = GlobalDTClasificaciones(UsuarioActual.CveEmpresa, CveClasificacion:=tCveClasificacion).FiltroPrimero("") + Dim IdCuentaCostos As Integer = -1 + If dr IsNot Nothing Then + IdCuentaCostos = dr("IdCuentaCostos").ToString.ToEntero + End If + If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, importe, TxtObservaciones.Text, 69, TxtObservaciones.Text, Fecha, IdCuentaCostos, -1, CveClasificacion:=tCveClasificacion, CveSubProyecto:=CveSubProyectoOrigen, CveMovimientoAlmacen:=CveMovimientoSalida, Contabilizable:=Contabilizable, ImporteMX:=importe) Then + ErrorMovInv = True + End If + Contabilizable = False + importe = 0 + End If + + If Not ErrorMovInv AndAlso Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, importe, TxtObservaciones.Text, 68, TxtObservaciones.Text, Fecha, IdCtaContableDestino, -1, CveMovimientoAlmacen:=CveMovimientoEntrada, Contabilizable:=Contabilizable, ImporteMX:=importe) Then + ErrorMovInv = True + End If + End If + End If + End If + Else + If Not ErrorMovInv Then + Dim Concepto As String = TxtObservaciones.Text + If Concepto = "" Then Concepto = "Traspaso" + Dim CvePrePoliza As Integer = ObjConta.AddPrePolizas("Inventario/TraspasoAlmacen2", 53, 0, 0, 1, Fecha, Concepto, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa) + If ObjInventario.GetMovimientosDetalle(CveMovimientoSalida, UsuarioActual.CveEmpresa) Then + + Dim resultado As DataTable = ObjInventario.DtResultados + Dim importe As Decimal = resultado.SUMD("Total").RoundSQL + Dim IdCtaContable As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCtaContable", String.Format("CveAlmacen = {0}", DdlAlmacenTransitorio.SelectedValue.ToEntero)).ToEntero + + If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, importe, TxtObservaciones.Text, 68, TxtObservaciones.Text, Fecha, IdCtaContable, -1, CveMovimientoAlmacen:=CveMovimientoSalida, ImporteMX:=importe, Contabilizable:=False) Then ErrorMovInv = True End If - Contabilizable = False - importe = 0 - End If - If Not ErrorMovInv AndAlso Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, importe, TxtObservaciones.Text, 68, TxtObservaciones.Text, Fecha, IdCtaContableDestino, -1, CveMovimientoAlmacen:=CveMovimientoEntrada, Contabilizable:=Contabilizable, ImporteMX:=importe) Then - ErrorMovInv = True + If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, importe, TxtObservaciones.Text, 68, TxtObservaciones.Text, Fecha, IdCtaContable, -1, CveMovimientoAlmacen:=CveMovimientoEntrada, ImporteMX:=importe, Contabilizable:=False) Then + ErrorMovInv = True + End If End If End If End If - End If - Else - If Not ErrorMovInv Then - Dim Concepto As String = TxtObservaciones.Text - If Concepto = "" Then Concepto = "Traspaso" - Dim CvePrePoliza As Integer = ObjConta.AddPrePolizas("Inventario/TraspasoAlmacen2", 53, 0, 0, 1, Fecha, Concepto, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa) - If ObjInventario.GetMovimientosDetalle(CveMovimientoSalida, UsuarioActual.CveEmpresa) Then - - Dim resultado As DataTable = ObjInventario.DtResultados - Dim importe As Decimal = resultado.SUMD("Total").RoundSQL - Dim IdCtaContable As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCtaContable", String.Format("CveAlmacen = {0}", DdlAlmacenTransitorio.SelectedValue.ToEntero)).ToEntero - - If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, importe, TxtObservaciones.Text, 68, TxtObservaciones.Text, Fecha, IdCtaContable, -1, CveMovimientoAlmacen:=CveMovimientoSalida, ImporteMX:=importe, Contabilizable:=False) Then - ErrorMovInv = True - End If - - If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, importe, TxtObservaciones.Text, 68, TxtObservaciones.Text, Fecha, IdCtaContable, -1, CveMovimientoAlmacen:=CveMovimientoEntrada, ImporteMX:=importe, Contabilizable:=False) Then - ErrorMovInv = True - End If - End If - End If - End If @@ -1945,7 +1941,7 @@ Partial Class Inventarios_TraspasoAlmacen For Each RowVirtual As DataRow In dtvirtual.Rows Dim CvePS = RowVirtual("CvePS").ToString().ToEntero() Dim CantidadUsado As Decimal = RowVirtual("Cantidad").ToString().ToDecimal() - Dim PU As Decimal = RowVirtual("PU").ToString().ToDecimal() + Dim PU As Decimal = RowVirtual("Cargo").ToString().ToDecimal() Dim CveUM As Integer = RowVirtual("CveUM").ToString().ToEntero() If Not ObjInventario.AddMovimientoDetalle(CveMovimientoVirtualEntrada, CantidadUsado, CveUM, CvePS, PU, -1, CveUsuarioModifico:=UsuarioActual.CveUsuario) Then @@ -2851,7 +2847,7 @@ Partial Class Inventarios_TraspasoAlmacen Private Function ReadExcelFile(ByVal flatFilePath As String, ByVal firstRowHasHeaders As Boolean) As DataTable SpreadsheetInfo.SetLicense(ModExtensiones.SerialGemBoxSpreadsheet) - Dim excelFile As ExcelFile = excelFile.Load(flatFilePath) + Dim excelFile As ExcelFile = ExcelFile.Load(flatFilePath) Dim unnamed As Integer = 0 Dim cols As Integer From 8212c08c89dfac18eed7dafff127aaf2ebe5dd92 Mon Sep 17 00:00:00 2001 From: Jonathan Alexis Perez Morales Date: Thu, 17 Dec 2020 15:06:50 -0700 Subject: [PATCH 11/18] Cambios API Econo --- Ashx/E141.ashx | 45 ++++++++++++++++++++++++--------------------- 1 file changed, 24 insertions(+), 21 deletions(-) diff --git a/Ashx/E141.ashx b/Ashx/E141.ashx index 51b154202..ca6e8c319 100644 --- a/Ashx/E141.ashx +++ b/Ashx/E141.ashx @@ -49,7 +49,7 @@ Public Class E141 : Implements IHttpHandler Public ReadOnly Property TokenAutorizacion As String Get If EsProduccion Then - Return "$2y$10$8Mk3YeIkJESilIwD.U5dG.SsA4JloycJKbaGls8TNEw/AKBE1qane" + Return "$2y$10$EZlXnFrhUc4aRVwjy5/v0.3JPdFNjyeANDc64YXJ5eHD8pMsv93Q." Else Return "$2y$10$8Mk3YeIkJESilIwD.U5dG.SsA4JloycJKbaGls8TNEw/AKBE1qane" End If @@ -59,7 +59,7 @@ Public Class E141 : Implements IHttpHandler Public ReadOnly Property URLBase As String Get If EsProduccion Then - Return "https://econollantas-pruebas.fidelityapps.mx" + Return "https://services.fidelityapps.mx/" Else Return "https://econollantas-pruebas.fidelityapps.mx/" End If @@ -92,28 +92,31 @@ Public Class E141 : Implements IHttpHandler Else context.Response.ContentType = "text/html" - Dim FiltrarTodos = If(context.Request("FiltrarTodos") = Nothing, "", context.Request("FiltrarTodos").ToString()) + If Not String.IsNullOrEmpty(Metodo) Then + Dim FiltrarTodos = If(context.Request("FiltrarTodos") = Nothing, "", context.Request("FiltrarTodos").ToString()) - Dim respuesta As Boolean = False + Dim respuesta As Boolean = False - 'TAREAS PROGRAMADAS - Select Case Metodo - Case "CrearActualizarProductos" - respuesta = CrearActualizarProductos(If(FiltrarTodos = "1", True, False)) - Case "ActualizarPrecios" - respuesta = ActualizarPrecios(If(FiltrarTodos = "1", True, False)) - Case "ActualizarExistencias" - respuesta = ActualizarExistencias() - Case "ActualizarVendedores" - respuesta = ActualizarVendedores(If(FiltrarTodos = "1", True, False)) - End Select + 'TAREAS PROGRAMADAS + Select Case Metodo + Case "CrearActualizarProductos" + respuesta = CrearActualizarProductos(If(FiltrarTodos = "1", True, False)) + Case "ActualizarPrecios" + respuesta = ActualizarPrecios(If(FiltrarTodos = "1", True, False)) + Case "ActualizarExistencias" + respuesta = ActualizarExistencias() + Case "ActualizarVendedores" + respuesta = ActualizarVendedores(If(FiltrarTodos = "1", True, False)) + End Select - If respuesta Then - retorno = "True" - Else - retorno = "False" + If respuesta Then + retorno = "True" + Else + retorno = "False" + End If End If + End If context.Response.Write(retorno) @@ -202,7 +205,7 @@ Public Class E141 : Implements IHttpHandler Using httpClient = New HttpClient() httpClient.Timeout = New TimeSpan(0, 5, 0) Using request = New HttpRequestMessage(HttpMethod.Post, New Uri(url)) - request.Headers.Add("token", TokenAutorizacion) + request.Headers.Add("X-PUBLIC-AUTH", TokenAutorizacion) Using content = New StringContent(payload, Encoding.UTF8, "application/json") request.Content = content @@ -607,7 +610,7 @@ Public Class E141 : Implements IHttpHandler End Select If VendedorData.Length > 4 Then - Nombre = String.Concat(VendedorData(VendedorData.Length - 1), " ", VendedorData(VendedorData.Length)) + Nombre = String.Concat(VendedorData(VendedorData.Length - 2), " ", VendedorData(VendedorData.Length - 1)) Apellido = String.Concat(VendedorData(0), " ", VendedorData(1)) End If From 9947c5b92a9583c416e83b0666ff13343c8a1119 Mon Sep 17 00:00:00 2001 From: Jonathan Alexis Perez Morales Date: Thu, 17 Dec 2020 15:07:12 -0700 Subject: [PATCH 12/18] aplica para venta --- Ventas/PV.aspx.vb | 1 + 1 file changed, 1 insertion(+) diff --git a/Ventas/PV.aspx.vb b/Ventas/PV.aspx.vb index 152d2e3cc..da4fa3f72 100644 --- a/Ventas/PV.aspx.vb +++ b/Ventas/PV.aspx.vb @@ -2705,6 +2705,7 @@ Partial Class PV Else Objeto.ddlWS.Attributes.Add("data-pagina", "-1") End If + Objeto.ddlWS.Attributes.Add("data-aplicaparaventa", "1") Objeto.ddlWS.Attributes.Add("data-Estatus", "1") End If End Sub From bec6a562d69c3e51fcc8faea1d24df87c1f8b921 Mon Sep 17 00:00:00 2001 From: Jonathan Alexis Perez Morales Date: Thu, 17 Dec 2020 15:07:25 -0700 Subject: [PATCH 13/18] Cambios en saldos de usados --- Ventas/Clientes.aspx | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/Ventas/Clientes.aspx b/Ventas/Clientes.aspx index b168f7b82..2f20bd2b4 100644 --- a/Ventas/Clientes.aspx +++ b/Ventas/Clientes.aspx @@ -4179,8 +4179,10 @@ AutoGenerateColumns="False" AllowPaging="False" ShowFooter="False"> - - + + + + @@ -4290,7 +4292,7 @@ --%> - + From 624c6e1df10367468c8496fc187465779c8ae5de Mon Sep 17 00:00:00 2001 From: rrene Date: Thu, 17 Dec 2020 15:20:08 -0700 Subject: [PATCH 14/18] -- cambios en obtener la cuenta --- Contabilidad/PlantillasPolizasDetalle.aspx | 3 +-- Contabilidad/PlantillasPolizasDetalle.aspx.vb | 23 +++++++++++++++++++ 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/Contabilidad/PlantillasPolizasDetalle.aspx b/Contabilidad/PlantillasPolizasDetalle.aspx index 34fb74f4f..294b70ce4 100644 --- a/Contabilidad/PlantillasPolizasDetalle.aspx +++ b/Contabilidad/PlantillasPolizasDetalle.aspx @@ -251,8 +251,6 @@