From c9da910f6c9a09c4d6b6b7b04757534a806e277b Mon Sep 17 00:00:00 2001 From: Jonathan Alexis Perez Morales Date: Thu, 29 Feb 2024 12:06:57 -0700 Subject: [PATCH 001/197] --remisiones con aplicacion de devoluciones --mostrar tipo docto default despues de bloquear --mostrar AtencionA en ingresos func 190 --- Ventas/Ventas.aspx.vb | 43 ++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 40 insertions(+), 3 deletions(-) diff --git a/Ventas/Ventas.aspx.vb b/Ventas/Ventas.aspx.vb index ae52c43a7..e05c849bc 100644 --- a/Ventas/Ventas.aspx.vb +++ b/Ventas/Ventas.aspx.vb @@ -3435,7 +3435,7 @@ Partial Class Ventas HlAgregarExcel.Visible = True End If - If DdlTipoComprobante.SelectedValue.Contiene("Rem") Then + If DdlTipoComprobante.SelectedValue.Contiene("Rem") AndAlso UsuarioActual.Empresa.Funcionalidad(109) <> "1" Then ' IPP 15 Julio 2017 - ERA FALSE ImgAntiPend.Visible = False UpPS.Update() @@ -3655,7 +3655,7 @@ Partial Class Ventas End If - UsuarioActual.Empresa = ObjEmpresa.Empresa + Usuario.Empresa = ObjEmpresa.Empresa ADSSession.ADSSessionConfig.sessionUser.CveEmpresa = ObjEmpresa.Empresa.CveEmpresa ADSSession.ADSSessionConfig.SessionManager(ADSSession.OpcionSession.CambiarEmpresa, Nothing, ObjEmpresa.Empresa.CveEmpresa) @@ -5060,6 +5060,10 @@ Partial Class Ventas Select Case DbRowVenta("TipoDocto").ToString() Case "Ing" + If UsuarioActual.Empresa.Funcionalidad(109) = "1" Then + TxtAtencionA.Text = DbRowVenta("AtencionA").ToString() + End If + Trsaldo.Visible = True HplSaldoAuxiliar.NavigateUrl = String.Format("/Contabilidad/PopUpAuxiliar.aspx?Tipo=CxCClientes&CveCliente={0}&CveVenta={1}&TB_iframe=true&height=550&width=920", DbRowVenta("CveCliente"), DbRowVenta("CveVenta")) HplPagado.NavigateUrl = String.Format("/Contabilidad/PopUpAuxiliar.aspx?Tipo=CxCClientes&CveCliente={0}&CveVenta={1}&TB_iframe=true&height=550&width=920", DbRowVenta("CveCliente"), DbRowVenta("CveVenta")) @@ -7163,6 +7167,12 @@ Partial Class Ventas CalculaLineasAdicionales() HabilitaRemisionPublicoGeneral = 0 HabilitarRemisionesPublicoGeneral() + + If UsuarioActual.Empresa.Funcionalidad(109) = "1" Then + If Not String.IsNullOrEmpty(UsuarioActual.CveTipoDocumento) Then + DdlTipoComprobante.SelectedValueExist(UsuarioActual.CveTipoDocumento) + End If + End If End If @@ -7171,6 +7181,8 @@ Partial Class Ventas End If + + 'If UsuarioActual.Empresa.Funcionalidad(705) = "1" Then ' Using ObjVentas As New ClsVentas ' If ObjVentas.GetLineasAdicionales(-1, CveCliente, -1, -1, DdlMoneda.SelectedValue.ToEntero(), MinFecha, MaxFecha, 0, UsuarioActual.CveEmpresa) Then @@ -17569,6 +17581,10 @@ Partial Class Ventas ImgAntiPend.Visible = False End If + If UsuarioActual.Empresa.Funcionalidad(109) = "1" AndAlso DdlTipoComprobante.SelectedValue.Contiene("Rem") Then + ImgAntiPend.Visible = True + End If + TxtFechaPago.Text = NowADS().AddDays(PlazoCobranza).ToShortDateString @@ -17600,6 +17616,10 @@ Partial Class Ventas ImgAntiPend.Visible = True End If + If UsuarioActual.Empresa.Funcionalidad(109) = "1" AndAlso DdlTipoComprobante.SelectedValue.Contiene("Rem") Then + ImgAntiPend.Visible = True + End If + MostrarOpcionesPaqueteria() TrAtencionA.Visible = True @@ -30621,7 +30641,7 @@ Partial Class Ventas divAnticipoMsg.Visible = False If UsuarioActual.Empresa.Funcionalidad(109) = "1" Then - If DdlTipoComprobante.SelectedValue = "Ing" AndAlso DdlTipoAmortizacionAnticipo.SelectedValue = "4" Then + If DdlTipoComprobante.SelectedValue.Contiene("Ing", "Rem") AndAlso DdlTipoAmortizacionAnticipo.SelectedValue = "4" Then Dim DtMovtos As DataTable = Me.TmpDTAnticiposNCIxCCliente.FiltraParametros($"Saldo > 0 And SaldoSubtotal > 0 {If(CveVenta < 0, $"AND Tipo = 'NC' ", "")}") divAmortizacionTipoRelacion.Visible = False GVAnticipos.DataSource = DtMovtos @@ -37357,6 +37377,23 @@ Partial Class Ventas DdlTipoAmortizacionAnticipo_SelectedIndexChanged(DdlTipoAmortizacionAnticipo, EventArgs.Empty) divAmortizacionTipoRelacion.Visible = False + + If DdlTipoComprobante.SelectedValue = "Rem" Then + If DdlTipoAmortizacionAnticipo.Items.FindByValue("1") IsNot Nothing Then + DdlTipoAmortizacionAnticipo.Items.Remove(DdlTipoAmortizacionAnticipo.Items.FindByValue("1")) + End If + If DdlTipoAmortizacionAnticipo.Items.FindByValue("2") IsNot Nothing Then + DdlTipoAmortizacionAnticipo.Items.Remove(DdlTipoAmortizacionAnticipo.Items.FindByValue("2")) + End If + Else + If DdlTipoAmortizacionAnticipo.Items.FindByValue("1") Is Nothing Then + DdlTipoAmortizacionAnticipo.Items.Add(New ListItem("Amortización anticipo en descuento", "1")) + End If + If DdlTipoAmortizacionAnticipo.Items.FindByValue("2") Is Nothing Then + DdlTipoAmortizacionAnticipo.Items.Add(New ListItem("Amortización anticipo con nota de crédito", "2")) + End If + End If + End If UpAnticipos.Update() From 4bfadd8d2ce9bbe217d11b1d3c04ceb8731b9b91 Mon Sep 17 00:00:00 2001 From: Jonathan Alexis Perez Morales Date: Thu, 29 Feb 2024 13:41:38 -0700 Subject: [PATCH 002/197] --Descarga de etiquetas desde productos servicios --- Ventas/ProductosServicios.aspx | 6 +++++ Ventas/ProductosServicios.aspx.vb | 38 ++++++++++++++++++++++++++----- 2 files changed, 38 insertions(+), 6 deletions(-) diff --git a/Ventas/ProductosServicios.aspx b/Ventas/ProductosServicios.aspx index 596dacc42..e7eeed0e6 100644 --- a/Ventas/ProductosServicios.aspx +++ b/Ventas/ProductosServicios.aspx @@ -64,6 +64,9 @@ + + +
  • @@ -74,6 +77,9 @@
  • Bitacora Ecommerce
  • +
  • + +
  • diff --git a/Ventas/ProductosServicios.aspx.vb b/Ventas/ProductosServicios.aspx.vb index 4b87baa9e..8294ff03c 100644 --- a/Ventas/ProductosServicios.aspx.vb +++ b/Ventas/ProductosServicios.aspx.vb @@ -5,6 +5,7 @@ Imports System.Data Imports System.Data.SqlClient Imports System.IO Imports Extensiones +Imports Microsoft.Reporting.WebForms Imports ZXing Partial Class ProductosyServicios @@ -1083,6 +1084,10 @@ Partial Class ProductosyServicios LnkUnificar.Visible = True ChkPrecioLibre.Checked = ObjProductosServicios.PrecioLibre + If UsuarioActual.Empresa.Funcionalidad(109) = "1" Then + LnkGenerarEtiqueta.Visible = True + End If + If UsuarioActual.Empresa.Funcionalidad(143) = "1" Then TxtRegistroRSCO.Text = ObjProductosServicios.DtResultados.Rows(0)("RegistroRSCO").ToString @@ -3542,12 +3547,12 @@ Partial Class ProductosyServicios 'If DdlMaterialPeligroso.SelectedValue.ToEntero > 0 And DdlEmbalaje.SelectedValue.ToEntero > 0 And DdlClaveSectorCOFEPRIS.SelectedValue.ToEntero > 0 And CamposStringCCP.Length > 0 Then Dim ObjPS As New ClsProductosServicios(transaccionSQL) - If Not ObjPS.AddUpdateProductosServiciosComplementos(CvePS, TxtPesoKg.Text.ToDecimal, DdlMaterialPeligroso.SelectedValue.ToEntero, DdlEmbalaje.SelectedValue.ToEntero, TxtDimensiones.Text, DdlClaveSectorCOFEPRIS.SelectedValue.ToEntero, - TxtNombreIngredienteActivo.Text.Trim, TxtNomQuimico.Text.Trim, TxtDenominacionGenerica.Text.Trim, TxtDenominacionDistintiva.Text.Trim, TxtFabricante.Text.Trim, DdlClaveFormaFarmaceutica.SelectedValue.ToEntero, DdlCondicionesEspTransporte.SelectedValue.ToEntero, - TxtRegistroSanitarioAutorizacion.Text.Trim, TxtPermisoImportacion.Text.Trim, TxtFolioImportacionVUCEM.Text.Trim, TxtNumCAS.Text.Trim, TxtRazonSocialEmpImportacion.Text, TxtNumRegistroPlagCOFEPRIS.Text.Trim, TxtDatosFabricante.Text.Trim, - TxtDatosFormulador.Text.Trim, TxtDatosMaquilador.Text.Trim, TxtUsoAutorizado.Text, DdlTipoMateria.SelectedValue.ToEntero) Then - Respuesta = False - End If + If Not ObjPS.AddUpdateProductosServiciosComplementos(CvePS, TxtPesoKg.Text.ToDecimal, DdlMaterialPeligroso.SelectedValue.ToEntero, DdlEmbalaje.SelectedValue.ToEntero, TxtDimensiones.Text, DdlClaveSectorCOFEPRIS.SelectedValue.ToEntero, + TxtNombreIngredienteActivo.Text.Trim, TxtNomQuimico.Text.Trim, TxtDenominacionGenerica.Text.Trim, TxtDenominacionDistintiva.Text.Trim, TxtFabricante.Text.Trim, DdlClaveFormaFarmaceutica.SelectedValue.ToEntero, DdlCondicionesEspTransporte.SelectedValue.ToEntero, + TxtRegistroSanitarioAutorizacion.Text.Trim, TxtPermisoImportacion.Text.Trim, TxtFolioImportacionVUCEM.Text.Trim, TxtNumCAS.Text.Trim, TxtRazonSocialEmpImportacion.Text, TxtNumRegistroPlagCOFEPRIS.Text.Trim, TxtDatosFabricante.Text.Trim, + TxtDatosFormulador.Text.Trim, TxtDatosMaquilador.Text.Trim, TxtUsoAutorizado.Text, DdlTipoMateria.SelectedValue.ToEntero) Then + Respuesta = False + End If ' End If 'End If @@ -3566,4 +3571,25 @@ Partial Class ProductosyServicios + Protected Sub LnkGenerarEtiqueta_Click(sender As Object, e As EventArgs) + Dim CvePrecioListaPredeterminada = GlobalDTPrecioListas(UsuarioActual.CveEmpresa).FiltroPrimeroValor("CvePrecioLista", "Predeterminada = True").ToEntero() + Dim DtPrecios As DataTable = Nothing + + Dim ObjVentas As New ClsProductosServicios + If ObjVentas.GetPSPrecios(CvePrecioListaPredeterminada, Me.CvePS.ToString()) AndAlso ObjVentas.DtResultados IsNot Nothing AndAlso ObjVentas.DtResultados.Rows.Count > 0 Then + DtPrecios = ObjVentas.DtResultados.Copy() + End If + ObjVentas.Dispose() + + If DtPrecios IsNot Nothing Then + Dim DirectorioArchivo As String = "Empresas/Grales/Formatos/Etiqueta.mrt" + If System.IO.File.Exists(UsuarioActual.Empresa.Ruta + "Formatos/Etiqueta.mrt") Then + DirectorioArchivo = UsuarioActual.Empresa.Ruta + "Formatos/Etiqueta.mrt" + End If + Dim params As New List(Of ReportParameter) + + ImprimirPDFStimul(DirectorioArchivo, DtPrecios, params, "Precios") + End If + + End Sub End Class From 66900b46fb52b869e7f849fb9c92899f6ccd64f8 Mon Sep 17 00:00:00 2001 From: Jonathan Alexis Perez Morales Date: Thu, 29 Feb 2024 15:08:37 -0700 Subject: [PATCH 003/197] --Ferretera, multiples listas de precio --- Ventas/ActualizarPrecios.aspx.vb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Ventas/ActualizarPrecios.aspx.vb b/Ventas/ActualizarPrecios.aspx.vb index de07ebba7..a280a08e7 100644 --- a/Ventas/ActualizarPrecios.aspx.vb +++ b/Ventas/ActualizarPrecios.aspx.vb @@ -91,7 +91,7 @@ Partial Class Ventas_ActualizarPrecios LblModalidad.Visible = True DivModalidad.Visible = True End If - If UsuarioActual.CveEmpresa = 189 Then + If UsuarioActual.CveEmpresa.Contiene(189, 190, 192) Then LblModalidad.Visible = True DivModalidad.Visible = True End If From 2324bf20b7bd88b43d1a4621b9e270fd41fd4570 Mon Sep 17 00:00:00 2001 From: Jonathan Alexis Perez Morales Date: Thu, 29 Feb 2024 17:15:38 -0700 Subject: [PATCH 004/197] --ajustes de concepto 04 con activos fijos --- Ventas/Ventas.aspx.vb | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/Ventas/Ventas.aspx.vb b/Ventas/Ventas.aspx.vb index 07b0c9773..d3dfe6ad5 100644 --- a/Ventas/Ventas.aspx.vb +++ b/Ventas/Ventas.aspx.vb @@ -3584,7 +3584,7 @@ Partial Class Ventas DivBloqueoAcceso.Visible = False End If Else - DivBloqueoacceso.Visible = False + DivBloqueoAcceso.Visible = False End If End Sub @@ -12955,13 +12955,13 @@ Partial Class Ventas 'si el codigo objeto impuesto es 02 y no tiene desglose de impuestos por el descuento, debe asignar el valor 04 - Si objeto de impuesto y no causa impuesto If concepto.Impuestos.Count = 0 AndAlso concepto.ObjetoImpuesto = "02" AndAlso (concepto.Importe - concepto.Descuento + concepto.ImporteGravaIVAAdicional).RoundSQL(2) = 0.00D Then concepto.ObjetoImpuesto = "04" - 'se ajusta a un centavo, para que se pueda emitir con un centavo. - If UsuarioActual.CveEmpresa = 140 Then - concepto.ObjetoImpuesto = "02" - concepto.Descuento = concepto.Descuento - 0.01D - Obj.SubTotal = Obj.SubTotal + 0.01D - Obj.Total = Obj.Total + 0.01D - End If + ''se ajusta a un centavo, para que se pueda emitir con un centavo. + 'If UsuarioActual.CveEmpresa = 140 Then + ' concepto.ObjetoImpuesto = "02" + ' concepto.Descuento = concepto.Descuento - 0.01D + ' Obj.SubTotal = Obj.SubTotal + 0.01D + ' Obj.Total = Obj.Total + 0.01D + 'End If End If Timbre.Conceptos.Add(concepto) @@ -14969,6 +14969,12 @@ Partial Class Ventas CveVentaAplicar = CveDevolucion CveVentaAmortizacionAplicar = ObjFactura.CveVenta End If + 'verifico que el AF, tenga valores iguales cuando esté vacío o "-1" + Dim drs As DataRow() = TmpDTDetalle.Select(" CveActivoFijo IS NULL") + For Each dr As DataRow In drs + dr("CveActivoFijo") = "-1" + Next + TmpDTDetalle.AcceptChanges() DT = TmpDTDetalle.FiltraParametros($"CvePS <> {CvePSAmortizacion}", "", {"CveClasificacion", "CveSubProyecto", "PorcentajeIVA", "CveActivoFijo"}) From 295f1884fa6b7a38790c46291b219dfe6aa5e604 Mon Sep 17 00:00:00 2001 From: Jonathan Alexis Perez Morales Date: Fri, 1 Mar 2024 16:14:23 -0700 Subject: [PATCH 005/197] Ferretera. Recalculo de precios, segun es credito o contado --- Ventas/CatPreciosLista.aspx | 7 ++++- Ventas/Ventas.aspx.vb | 62 ++++++++++++++++++++++++++++++++----- 2 files changed, 61 insertions(+), 8 deletions(-) diff --git a/Ventas/CatPreciosLista.aspx b/Ventas/CatPreciosLista.aspx index 15b3eb16f..d694e50f9 100644 --- a/Ventas/CatPreciosLista.aspx +++ b/Ventas/CatPreciosLista.aspx @@ -30,11 +30,16 @@ - + + + + + + diff --git a/Ventas/Ventas.aspx.vb b/Ventas/Ventas.aspx.vb index d3dfe6ad5..ed75d8147 100644 --- a/Ventas/Ventas.aspx.vb +++ b/Ventas/Ventas.aspx.vb @@ -12955,13 +12955,13 @@ Partial Class Ventas 'si el codigo objeto impuesto es 02 y no tiene desglose de impuestos por el descuento, debe asignar el valor 04 - Si objeto de impuesto y no causa impuesto If concepto.Impuestos.Count = 0 AndAlso concepto.ObjetoImpuesto = "02" AndAlso (concepto.Importe - concepto.Descuento + concepto.ImporteGravaIVAAdicional).RoundSQL(2) = 0.00D Then concepto.ObjetoImpuesto = "04" - ''se ajusta a un centavo, para que se pueda emitir con un centavo. - 'If UsuarioActual.CveEmpresa = 140 Then - ' concepto.ObjetoImpuesto = "02" - ' concepto.Descuento = concepto.Descuento - 0.01D - ' Obj.SubTotal = Obj.SubTotal + 0.01D - ' Obj.Total = Obj.Total + 0.01D - 'End If + 'se ajusta a un centavo, para que se pueda emitir con un centavo. + If UsuarioActual.CveEmpresa = 140 Then + concepto.ObjetoImpuesto = "02" + concepto.Descuento = concepto.Descuento - 0.01D + Obj.SubTotal = Obj.SubTotal + 0.01D + Obj.Total = Obj.Total + 0.01D + End If End If Timbre.Conceptos.Add(concepto) @@ -17341,6 +17341,15 @@ Partial Class Ventas Alert("No hay una lista de precios predeterminada", TipoMensaje.MsgAdvertencia) End If + If UsuarioActual.Empresa.Funcionalidad(109) = "1" Then + If RBLPago.SelectedValue = "1" Then + Dim CvePrecioListaCredito = GlobalDTPrecioListas(UsuarioActual.CveEmpresa).FiltroPrimeroValor("CvePrecioLista", "ISNULL(Credito,False) = True").ToEntero() + If CvePrecioListaCredito > 0 Then + CvePrecioListaPS = CvePrecioListaCredito + End If + End If + End If + If CvePrecioListaPS > 0 Then Dim ObjPS As New ClsProductosServicios If ObjPS.GetPSPreciosLista(UsuarioActual.CveEmpresa, CvePrecioListaPS, CvePS:=CvePSParametro) Then @@ -23256,6 +23265,9 @@ Partial Class Ventas End Sub Private Sub RBLPago_SelectedIndexChanged(sender As Object, e As EventArgs) Handles RBLPago.SelectedIndexChanged LimpiaEscondeContado() + If UsuarioActual.Empresa.Funcionalidad(109) = "1" Then + RecalculaPrecios() + End If End Sub Private Function ValidaPagosContado(Optional MostrarAlertas As Boolean = True, Optional TipoDoctoViejo As String = "") As Boolean Dim Retorno As Boolean = False @@ -37414,5 +37426,41 @@ Partial Class Ventas RegistraScript("MuestraAnticipos();", "AE") End Sub + + Private Sub RecalculaPrecios() + If TmpDT IsNot Nothing Then + For Each Row As DataRow In TmpDT.Rows + Dim Cantidad As Decimal = Row("Cantidad").ToString().ToDecimal() + Dim CveClasificacion As Integer = Row("CveClasificacion").ToString().ToEntero + Dim CvePS As Integer = Row("CvePS").ToString().ToEntero + + Dim ObjPrecioSugerido As Modelos.MPrecioSugerido = CalculaPrecioSugerido(CvePS, CveClasificacion) + If ObjPrecioSugerido.PrecioSugerido > 0 Then + Dim PU As Decimal = ObjPrecioSugerido.PrecioSugerido.RoundSQL(6) + + Dim ObjDescuento As Modelos.VentaDescuentos = CalcularDescuentos(CvePS, Cantidad, PU) + If ObjDescuento.EsPUModificado Then + PU = ObjDescuento.PU + End If + + Row("PU") = PU + + Dim TotalCalculableImpuestos As Decimal = ((Cantidad * PU) - (ObjDescuento.ImporteDescuento)) + Dim TotalCalculableImpuestosIVA As Decimal = 0 + TotalCalculableImpuestosIVA = TotalCalculableImpuestos * (1 + Row("PorcentajeIEPS").ToString().ToDecimal) + + Row("ImporteIVA") = (Row("PorcentajeIVA").ToString().ToDecimal * TotalCalculableImpuestosIVA).RoundSQL(NumeroDecimales) + + Row("Descuento") = (ObjDescuento.ImporteDescuento).RoundSQL(NumeroDecimales) + Row("Total") = (Cantidad * PU) + Row("TotalImporte") = (Cantidad * PU).RoundSQL(NumeroDecimales) + End If + Next + + Me.CalculaTotalesVenta() + End If + + End Sub + End Class From 9f23b56e0cede0266e1353895bb6e9b214b720fb Mon Sep 17 00:00:00 2001 From: rakcsle Date: Fri, 1 Mar 2024 17:14:16 -0700 Subject: [PATCH 006/197] Checador correcion dia de decanso y se agrega codigo de empleado --- RH/RepChecadorPreAsistencia.aspx | 5 +- RH/RepChecadorPreAsistencia.aspx.vb | 398 +++++++++++++++------------- Ventas/Ventas.aspx.vb | 23 +- 3 files changed, 232 insertions(+), 194 deletions(-) diff --git a/RH/RepChecadorPreAsistencia.aspx b/RH/RepChecadorPreAsistencia.aspx index 4e5443f3d..e20f1db0b 100644 --- a/RH/RepChecadorPreAsistencia.aspx +++ b/RH/RepChecadorPreAsistencia.aspx @@ -91,7 +91,6 @@
    -
    @@ -106,9 +105,9 @@ - + - + diff --git a/RH/RepChecadorPreAsistencia.aspx.vb b/RH/RepChecadorPreAsistencia.aspx.vb index a4d324905..685d93bec 100644 --- a/RH/RepChecadorPreAsistencia.aspx.vb +++ b/RH/RepChecadorPreAsistencia.aspx.vb @@ -327,7 +327,7 @@ Partial Class RH_RepChecadorPreAsistencia Resultados.Columns.Add("CvePersonal") Resultados.Columns.Add("NombreCompleto") - 'Resultados.Columns.Add("Codigo") + Resultados.Columns.Add("Codigo") Resultados.Columns.Add("CveSubProyecto") Resultados.Columns.Add("SalarioDiario") Resultados.Columns.Add("CveAsistenciasInasistencias") @@ -349,7 +349,7 @@ Partial Class RH_RepChecadorPreAsistencia Resultados.Columns.Add("TipoCorto") Resultados.Columns.Add("Sancion") - If DdlTurno.SelectedValue.ToEntero > 0 And DdlTipoPeriodo.SelectedValue.ToEntero > 0 And DdlRango.SelectedValue.ToEntero > 0 Then + If DdlTipoPeriodo.SelectedValue.ToEntero > 0 And DdlRango.SelectedValue.ToEntero > 0 Then Dim FiltroSubProyecto As String = "" Dim filtroturno = If(DdlTurno.SelectedValue = "-1", "", $"AND CveTurno = { DdlTurno.SelectedValue}") @@ -422,6 +422,10 @@ Partial Class RH_RepChecadorPreAsistencia Dim ContadorFaltas As Integer = 0 Dim registrosPersonal As DataTable = DTChecadorRegistros.FiltraParametros(" CvePersonal = " & dRow(0).ToString()) + Dim CveTurno As Integer = dRow("CveTurno").ToString.ToEntero + Dim DiaDescanso As Integer = GlobalDTTurno(UsuarioActual.CveEmpresa).FiltroPrimeroValor("DiaDescanso", $" CveTurno = {CveTurno} ").ToEntero - 1 'El -1 es por que en .net el domingo empieza 0 y en la sql en 1 + Dim Codigo As String = dRow("Codigo").ToString + If registrosPersonal.Rows.Count > 0 Then DTHorarioPersonal = DTHorarios.FiltraParametros(" CveChecadorHorario = " & registrosPersonal(0)("CveHorario").ToString() & "") Retardos = 0 @@ -431,7 +435,7 @@ Partial Class RH_RepChecadorPreAsistencia Dim ReRow As DataRow = Resultados.NewRow ReRow("CvePersonal") = dRow(0).ToString() ReRow("NombreCompleto") = dRow("NombreCompleto").ToString() - 'ReRow("Codigo") = dRow("Codigo").ToString() + ReRow("Codigo") = Codigo ReRow("CveSubProyecto") = dRow("CveSubProyecto").ToString() ReRow("SalarioDiario") = dRow("SalarioDiario").ToString() ReRow("CveAsistenciasInasistencias") = "-1" @@ -458,7 +462,7 @@ Partial Class RH_RepChecadorPreAsistencia Dim diaSemana As Integer = Fecha.DayOfWeek Dim Asistencia As Boolean = True - Dim Horario As DataTable = HorarioDiario(Fecha, DTHorarioPersonal) + Dim Horario As DataTable = HorarioDiario(Fecha, DTHorarioPersonal, DiaDescanso) Dim DiaLaboral As Boolean = Boolean.Parse(Horario(0)(0).ToString()) Dim HorarioEntrada As TimeSpan = TimeSpan.Parse(Horario(0)(1).ToString()) @@ -615,7 +619,7 @@ Partial Class RH_RepChecadorPreAsistencia ReRow("CvePersonal") = dRow(0).ToString() ReRow("NombreCompleto") = dRow("NombreCompleto").ToString() - 'ReRow("Codigo") = dRow("Codigo").ToString() + ReRow("Codigo") = Codigo ReRow("CveSubProyecto") = dRow("CveSubProyecto").ToString() ReRow("SalarioDiario") = dRow("SalarioDiario").ToString() @@ -651,7 +655,7 @@ Partial Class RH_RepChecadorPreAsistencia ReRow("CveAsistenciasInasistencias") = CveAsistenciaInasistenciaFalta End If - Dim Horario As DataTable = HorarioDiario(Fecha, DTHorarioPersonal) + Dim Horario As DataTable = HorarioDiario(Fecha, DTHorarioPersonal, DiaDescanso) Dim DiaLaboral As Boolean = Boolean.Parse(Horario(0)(0).ToString()) If Not DiaLaboral Then @@ -705,6 +709,8 @@ Partial Class RH_RepChecadorPreAsistencia Dim ContadorFaltas As Integer = 0 Dim registrosPersonal As DataTable = DTAsistenciasInasistenciasReg.FiltraParametros(" CvePersonal = " & dRow(0).ToString()) + + Dim Codigo As String = dRow("Codigo").ToString If registrosPersonal.Rows.Count > 0 Then For x As Integer = 1 To (DiasPeriodo) @@ -712,7 +718,7 @@ Partial Class RH_RepChecadorPreAsistencia Dim ReRow As DataRow = Resultados.NewRow ReRow("CvePersonal") = dRow(0).ToString() ReRow("NombreCompleto") = dRow("NombreCompleto").ToString() - 'ReRow("Codigo") = dRow("Codigo").ToString() + ReRow("Codigo") = Codigo ReRow("CveSubProyecto") = dRow("CveSubProyecto").ToString() ReRow("SalarioDiario") = dRow("SalarioDiario").ToString() @@ -765,7 +771,7 @@ Partial Class RH_RepChecadorPreAsistencia ReRow("NombreCompleto") = dRow("NombreCompleto").ToString() ReRow("CveSubProyecto") = dRow("CveSubProyecto").ToString() ReRow("SalarioDiario") = dRow("SalarioDiario").ToString() - 'ReRow("Codigo") = dRow("Codigo").ToString() + ReRow("Codigo") = Codigo ReRow("CveAsistenciasInasistencias") = CveAsistenciaInasistenciaFalta ReRow("PorcentajePago") = "0" ReRow("Asistio") = "False" @@ -802,8 +808,8 @@ Partial Class RH_RepChecadorPreAsistencia DtResultados = Resultados dt.Columns.Add("CvePersonal") + dt.Columns.Add("Codigo") dt.Columns.Add("NombreCompleto") - 'dt.Columns.Add("Codigo") dt.Columns.Add("Fecha1") dt.Columns.Add("Fecha2") dt.Columns.Add("Fecha3") @@ -836,6 +842,7 @@ Partial Class RH_RepChecadorPreAsistencia dt.Columns.Add("Fecha30") dt.Columns.Add("Fecha31") + Dim DTFechas As DataTable Dim DTUPersonal As DataTable @@ -845,7 +852,7 @@ Partial Class RH_RepChecadorPreAsistencia Dim ColumN As Integer = (dt.Columns.Count) - 2 - For x As Integer = 3 To dt.Columns.Count + For x As Integer = 3 To dt.Columns.Count-1 GVRegDatos.Columns(x).HeaderText = "" GVRegDatos.Columns(x).Visible = False Next @@ -866,9 +873,9 @@ Partial Class RH_RepChecadorPreAsistencia Dim RRow As DataRow = dt.NewRow RRow("CvePersonal") = pRow("CvePersonal") RRow("NombreCompleto") = pRow("NombreCompleto") - 'RRow("Codigo") = pRow("Codigo") + RRow("Codigo") = pRow("Codigo") - ColumN = 2 + ColumN = 3 Dim ResumenDia As New DataTable Dim DTTempAsistencias As New DataTable @@ -970,170 +977,219 @@ Partial Class RH_RepChecadorPreAsistencia End Sub Private Sub ReprocesarTabla() - Dim dt As New DataTable - Dim DtPersonal As New DataTable - Dim DTAsistenciasInasistencias As New DataTable - Dim objRH As New ClsRH + If DdlTipoPeriodo.SelectedValue.ToEntero > 0 And DdlRango.SelectedValue.ToEntero > 0 Then - If objRH.GetPersonalAsistenciaRegistros(FechaInicioPeriodo, FechaFinPeriodo, UsuarioActual.CveEmpresa) Then - DTAsistenciasInasistencias = objRH.DtResultados - End If + Dim dt As New DataTable + Dim DtPersonal As New DataTable + Dim DTAsistenciasInasistencias As New DataTable - DtPersonal = GlobalDTRHPersonal(UsuarioActual.Empresa.CveEmpresa).FiltraParametros($" CveTipoPeriodo = { DdlTipoPeriodo.SelectedValue} AND CveEstado = 1 " & If(DdlTurno.SelectedValue = "-1", "", $" AND CveTurno = {DdlTurno.SelectedValue}")) - dt.Columns.Add("CvePersonal") - dt.Columns.Add("NombreCompleto") - 'dt.Columns.Add("Codigo") - dt.Columns.Add("Fecha1") - dt.Columns.Add("Fecha2") - dt.Columns.Add("Fecha3") - dt.Columns.Add("Fecha4") - dt.Columns.Add("Fecha5") - dt.Columns.Add("Fecha6") - dt.Columns.Add("Fecha7") - dt.Columns.Add("Fecha8") - dt.Columns.Add("Fecha9") - dt.Columns.Add("Fecha10") - dt.Columns.Add("Fecha11") - dt.Columns.Add("Fecha12") - dt.Columns.Add("Fecha13") - dt.Columns.Add("Fecha14") - dt.Columns.Add("Fecha15") - dt.Columns.Add("Fecha16") - dt.Columns.Add("Fecha17") - dt.Columns.Add("Fecha18") - dt.Columns.Add("Fecha19") - dt.Columns.Add("Fecha20") - dt.Columns.Add("Fecha21") - dt.Columns.Add("Fecha22") - dt.Columns.Add("Fecha23") - dt.Columns.Add("Fecha24") - dt.Columns.Add("Fecha25") - dt.Columns.Add("Fecha26") - dt.Columns.Add("Fecha27") - dt.Columns.Add("Fecha28") - dt.Columns.Add("Fecha29") - dt.Columns.Add("Fecha30") - dt.Columns.Add("Fecha31") + Dim objRH As New ClsRH - Dim DTFechas As DataTable - Dim DTUPersonal As DataTable - Dim DTVFechas As New DataView(DtResultados) - DTFechas = DTVFechas.ToTable(True, "Fecha") - DTUPersonal = DTVFechas.ToTable(True, {"CvePersonal", "NombreCompleto"}) + If objRH.GetPersonalAsistenciaRegistros(FechaInicioPeriodo, FechaFinPeriodo, UsuarioActual.CveEmpresa) Then + DTAsistenciasInasistencias = objRH.DtResultados + End If - Dim ColumN As Integer = (dt.Columns.Count) - 2 + DtPersonal = GlobalDTRHPersonal(UsuarioActual.Empresa.CveEmpresa).FiltraParametros($" CveTipoPeriodo = { DdlTipoPeriodo.SelectedValue} AND CveEstado = 1 " & If(DdlTurno.SelectedValue = "-1", "", $" AND CveTurno = {DdlTurno.SelectedValue}")) - For x As Integer = 3 To ColumN - 1 - GVRegDatos.Columns(x).HeaderText = "" - GVRegDatos.Columns(x).Visible = False - Next + dt.Columns.Add("CvePersonal") + dt.Columns.Add("NombreCompleto") + 'dt.Columns.Add("Codigo") + dt.Columns.Add("Fecha1") + dt.Columns.Add("Fecha2") + dt.Columns.Add("Fecha3") + dt.Columns.Add("Fecha4") + dt.Columns.Add("Fecha5") + dt.Columns.Add("Fecha6") + dt.Columns.Add("Fecha7") + dt.Columns.Add("Fecha8") + dt.Columns.Add("Fecha9") + dt.Columns.Add("Fecha10") + dt.Columns.Add("Fecha11") + dt.Columns.Add("Fecha12") + dt.Columns.Add("Fecha13") + dt.Columns.Add("Fecha14") + dt.Columns.Add("Fecha15") + dt.Columns.Add("Fecha16") + dt.Columns.Add("Fecha17") + dt.Columns.Add("Fecha18") + dt.Columns.Add("Fecha19") + dt.Columns.Add("Fecha20") + dt.Columns.Add("Fecha21") + dt.Columns.Add("Fecha22") + dt.Columns.Add("Fecha23") + dt.Columns.Add("Fecha24") + dt.Columns.Add("Fecha25") + dt.Columns.Add("Fecha26") + dt.Columns.Add("Fecha27") + dt.Columns.Add("Fecha28") + dt.Columns.Add("Fecha29") + dt.Columns.Add("Fecha30") + dt.Columns.Add("Fecha31") - ColumN = 3 - For Each drow As DataRow In DTFechas.Rows - GVRegDatos.Columns(ColumN).HeaderText = String.Format("
    {1}
    {0}
    ", drow(0).ToString().ToDate.ToString("dd/MM/yyyy"), ObtenerDiaSemana(drow(0).ToString().ToDate)) - GVRegDatos.Columns(ColumN).Visible = True - ColumN = ColumN + 1 - Next + Dim DTFechas As DataTable + Dim DTUPersonal As DataTable + Dim DTVFechas As New DataView(DtResultados) + DTFechas = DTVFechas.ToTable(True, "Fecha") + DTUPersonal = DTVFechas.ToTable(True, {"CvePersonal", "NombreCompleto"}) - For Each pRow As DataRow In DtPersonal.Rows + Dim ColumN As Integer = (dt.Columns.Count) - 2 - Dim RRow As DataRow = dt.NewRow - RRow("CvePersonal") = pRow("CvePersonal") - RRow("NombreCompleto") = pRow("NombreCompleto") - 'RRow("Codigo") = pRow("Codigo") + For x As Integer = 3 To ColumN - 1 + GVRegDatos.Columns(x).HeaderText = "" + GVRegDatos.Columns(x).Visible = False + Next - ColumN = 2 + ColumN = 3 For Each drow As DataRow In DTFechas.Rows + GVRegDatos.Columns(ColumN).HeaderText = String.Format("
    {1}
    {0}
    ", drow(0).ToString().ToDate.ToString("dd/MM/yyyy"), ObtenerDiaSemana(drow(0).ToString().ToDate)) + GVRegDatos.Columns(ColumN).Visible = True + ColumN = ColumN + 1 + Next - Dim filtro As String = " CvePersonal = " & pRow("CvePersonal").ToString() & " AND Fecha ='" & drow(0).ToString() & "' " - Dim ResumenDia As DataTable = DtResultados.FiltraParametros(" CvePersonal = " & pRow("CvePersonal").ToString() & " AND Fecha ='" & drow(0).ToString() & "' ") + For Each pRow As DataRow In DtPersonal.Rows - Dim DTTempAsistencias As DataTable = DTAsistenciasInasistencias.FiltraParametros(" CvePersonal = " & pRow("CvePersonal").ToString() & " AND Fecha ='" & drow(0).ToString() & "' ") - Dim TipoCorto As String = "" + Dim RRow As DataRow = dt.NewRow + RRow("CvePersonal") = pRow("CvePersonal") + RRow("NombreCompleto") = pRow("NombreCompleto") + 'RRow("Codigo") = pRow("Codigo") - If DTTempAsistencias.Rows.Count > 1 Then - TipoCorto = DTTempAsistencias(0)("TipoCorto").ToString() - End If + ColumN = 2 + For Each drow As DataRow In DTFechas.Rows - If TipoCorto <> "" Then + Dim filtro As String = " CvePersonal = " & pRow("CvePersonal").ToString() & " AND Fecha ='" & drow(0).ToString() & "' " + Dim ResumenDia As DataTable = DtResultados.FiltraParametros(" CvePersonal = " & pRow("CvePersonal").ToString() & " AND Fecha ='" & drow(0).ToString() & "' ") - If TipoCorto = "F" Then - RRow(ColumN) = "F" & "|" & filtro + Dim DTTempAsistencias As DataTable = DTAsistenciasInasistencias.FiltraParametros(" CvePersonal = " & pRow("CvePersonal").ToString() & " AND Fecha ='" & drow(0).ToString() & "' ") + Dim TipoCorto As String = "" + + If DTTempAsistencias.Rows.Count > 1 Then + TipoCorto = DTTempAsistencias(0)("TipoCorto").ToString() End If - If TipoCorto = "R" Then - RRow(ColumN) = "R" & "|" & filtro - Else - If TipoCorto = "A" Then - RRow(ColumN) = "A" & "|" & filtro + If TipoCorto <> "" Then + + If TipoCorto = "F" Then + RRow(ColumN) = "F" & "|" & filtro + End If + + If TipoCorto = "R" Then + RRow(ColumN) = "R" & "|" & filtro Else - If TipoCorto = "D" Then - RRow(ColumN) = "D" & "|" & filtro + If TipoCorto = "A" Then + RRow(ColumN) = "A" & "|" & filtro Else - - If TipoCorto = "V" Then - RRow(ColumN) = "V" & "|" & filtro + If TipoCorto = "D" Then + RRow(ColumN) = "D" & "|" & filtro Else - If TipoCorto = "I" Then - RRow(ColumN) = "I" & "|" & filtro - Else - If TipoCorto = "S" Then - RRow(ColumN) = "S" & "|" & filtro - End If + If TipoCorto = "V" Then + RRow(ColumN) = "V" & "|" & filtro + Else + If TipoCorto = "I" Then + RRow(ColumN) = "I" & "|" & filtro + Else + If TipoCorto = "S" Then + RRow(ColumN) = "S" & "|" & filtro + End If + + End If End If End If End If End If - End If - Else + Else - RRow(ColumN) = "-" + RRow(ColumN) = "-" - If ResumenDia(0)("TipoCorto").ToString() = "" Then + If ResumenDia(0)("TipoCorto").ToString() = "" Then - If ResumenDia(0)("Asistio").ToString() = "True" Then - RRow(ColumN) = "A|" & filtro - End If + If ResumenDia(0)("Asistio").ToString() = "True" Then + RRow(ColumN) = "A|" & filtro + End If - If ResumenDia(0)("DiaVacacion").ToString() = "True" Then - RRow(ColumN) = "V" & "|" & filtro - Else - If ResumenDia(0)("Asistio").ToString() = "False" Then - RRow(ColumN) = "F" & "|" & filtro + If ResumenDia(0)("DiaVacacion").ToString() = "True" Then + RRow(ColumN) = "V" & "|" & filtro Else - If ResumenDia(0)("Retraso").ToString() = "True" Then - RRow(ColumN) = "R" & "|" & filtro + If ResumenDia(0)("Asistio").ToString() = "False" Then + RRow(ColumN) = "F" & "|" & filtro Else - If ResumenDia(0)("FaltaRetraso").ToString() = "True" Then - RRow(ColumN) = "FR" & "|" & filtro - lblModalMensaje.Text = "Falta por retardo" + If ResumenDia(0)("Retraso").ToString() = "True" Then + RRow(ColumN) = "R" & "|" & filtro Else - If ResumenDia(0)("Descanso").ToString() = "True" Then - RRow(ColumN) = "D" & "|" & filtro + If ResumenDia(0)("FaltaRetraso").ToString() = "True" Then + RRow(ColumN) = "FR" & "|" & filtro + lblModalMensaje.Text = "Falta por retardo" Else - If ResumenDia(0)("Inconsistencia").ToString() = "True" Then - RRow(ColumN) = "IN" & "|" & filtro + If ResumenDia(0)("Descanso").ToString() = "True" Then + RRow(ColumN) = "D" & "|" & filtro + Else + If ResumenDia(0)("Inconsistencia").ToString() = "True" Then + RRow(ColumN) = "IN" & "|" & filtro - If ResumenDia(0)("Descanso").ToString() = "True" Then - RRow(ColumN) = "IND" & "|" & filtro + If ResumenDia(0)("Descanso").ToString() = "True" Then + RRow(ColumN) = "IND" & "|" & filtro + Else + + If ResumenDia(0)("TipoCorto").ToString() = "S" Then + RRow(ColumN) = "S" & "|" & filtro + + Else + If ResumenDia(0)("TipoCorto").ToString() = "M" Then + RRow(ColumN) = "M" & "|" & filtro + + End If + End If + + + End If + End If + End If + End If + End If + End If + End If + Else + + If ResumenDia(0)("TipoCorto").ToString() = "A" Then + RRow(ColumN) = "A" & "|" & filtro + End If + + If ResumenDia(0)("TipoCorto").ToString() = "V" Then + RRow(ColumN) = "V" & "|" & filtro + Else + If ResumenDia(0)("TipoCorto").ToString() = "F" Then + RRow(ColumN) = "F" & "|" & filtro + Else + + If ResumenDia(0)("TipoCorto").ToString() = "R" Then + RRow(ColumN) = "R" & "|" & filtro + Else + If TipoCorto = "FR" Then + RRow(ColumN) = "FR" & "|" & filtro + lblModalMensaje.Text = "Falta por retardo" + Else + If ResumenDia(0)("TipoCorto").ToString() = "D" Then + RRow(ColumN) = "D" & "|" & filtro + + End If + If ResumenDia(0)("TipoCorto").ToString() = "I" Then + RRow(ColumN) = "I" & "|" & filtro + Else + If ResumenDia(0)("TipoCorto").ToString() = "C" Then + RRow(ColumN) = "C" & "|" & filtro Else - If ResumenDia(0)("TipoCorto").ToString() = "S" Then RRow(ColumN) = "S" & "|" & filtro - Else If ResumenDia(0)("TipoCorto").ToString() = "M" Then RRow(ColumN) = "M" & "|" & filtro - End If End If - End If End If End If @@ -1141,62 +1197,21 @@ Partial Class RH_RepChecadorPreAsistencia End If End If End If - Else - If ResumenDia(0)("TipoCorto").ToString() = "A" Then - RRow(ColumN) = "A" & "|" & filtro - End If - - If ResumenDia(0)("TipoCorto").ToString() = "V" Then - RRow(ColumN) = "V" & "|" & filtro - Else - If ResumenDia(0)("TipoCorto").ToString() = "F" Then - RRow(ColumN) = "F" & "|" & filtro - Else - - If ResumenDia(0)("TipoCorto").ToString() = "R" Then - RRow(ColumN) = "R" & "|" & filtro - Else - If TipoCorto = "FR" Then - RRow(ColumN) = "FR" & "|" & filtro - lblModalMensaje.Text = "Falta por retardo" - Else - If ResumenDia(0)("TipoCorto").ToString() = "D" Then - RRow(ColumN) = "D" & "|" & filtro - - End If - If ResumenDia(0)("TipoCorto").ToString() = "I" Then - RRow(ColumN) = "I" & "|" & filtro - Else - If ResumenDia(0)("TipoCorto").ToString() = "C" Then - RRow(ColumN) = "C" & "|" & filtro - Else - If ResumenDia(0)("TipoCorto").ToString() = "S" Then - RRow(ColumN) = "S" & "|" & filtro - Else - If ResumenDia(0)("TipoCorto").ToString() = "M" Then - RRow(ColumN) = "M" & "|" & filtro - End If - End If - - End If - End If - End If - End If - End If - End If End If - - End If - ColumN = ColumN + 1 + ColumN = ColumN + 1 + Next + dt.Rows.Add(RRow) Next - dt.Rows.Add(RRow) - Next - Dim stopp As Integer = 0 - DtDatosTabla = dt + Dim stopp As Integer = 0 + DtDatosTabla = dt + + End If + + End Sub - Private Function HorarioDiario(Fecha As Date, DTHorarioPersonal As DataTable) As DataTable + Private Function HorarioDiario(Fecha As Date, DTHorarioPersonal As DataTable, DiaDescanso As Integer) As DataTable Dim respuesta As New DataTable respuesta.Columns.Add("TRABAJO", System.Type.GetType("System.Boolean")) @@ -1212,9 +1227,12 @@ Partial Class RH_RepChecadorPreAsistencia Dim diaSemana As Integer = Fecha.DayOfWeek + DiaDescanso = If(DiaDescanso > -1, DiaDescanso, 0) + Select Case diaSemana Case 0 - Drow(0) = Boolean.Parse(If(IsNothing(drp), "true", drp("Domingo").ToString())) + Drow(0) = Boolean.Parse(If(IsNothing(drp), $"{(DiaDescanso <> diaSemana).ToString}", drp("Domingo").ToString())) + 'Drow(0) = Boolean.Parse(If(IsNothing(drp), "true", drp("Domingo").ToString())) Drow(1) = TimeSpan.Parse(If(IsNothing(drp), "00:00", drp("DomingoEntrada").ToString())) Drow(2) = TimeSpan.Parse(If(IsNothing(drp), "00:00", drp("DomingoSalidaComida").ToString())) Drow(3) = TimeSpan.Parse(If(IsNothing(drp), "00:00", drp("DomingoEntradaComida").ToString())) @@ -1222,42 +1240,48 @@ Partial Class RH_RepChecadorPreAsistencia Exit Select Case 1 - Drow(0) = Boolean.Parse(If(IsNothing(drp), "true", drp("Lunes").ToString())) + Drow(0) = Boolean.Parse(If(IsNothing(drp), $"{(DiaDescanso <> diaSemana).ToString}", drp("Lunes").ToString())) + 'Drow(0) = Boolean.Parse(If(IsNothing(drp), "true", drp("Lunes").ToString())) Drow(1) = TimeSpan.Parse(If(IsNothing(drp), "00:00", drp("LunesEntrada").ToString())) Drow(2) = TimeSpan.Parse(If(IsNothing(drp), "00:00", drp("LunesSalidaComida").ToString())) Drow(3) = TimeSpan.Parse(If(IsNothing(drp), "00:00", drp("LunesEntradaComida").ToString())) Drow(4) = TimeSpan.Parse(If(IsNothing(drp), "09:00", drp("LunesSalida").ToString())) Exit Select Case 2 - Drow(0) = Boolean.Parse(If(IsNothing(drp), "true", drp("Martes").ToString())) + Drow(0) = Boolean.Parse(If(IsNothing(drp), $"{(DiaDescanso <> diaSemana).ToString}", drp("Martes").ToString())) + 'Drow(0) = Boolean.Parse(If(IsNothing(drp), "true", drp("Martes").ToString())) Drow(1) = TimeSpan.Parse(If(IsNothing(drp), "00:00", drp("MartesEntrada").ToString())) Drow(2) = TimeSpan.Parse(If(IsNothing(drp), "00:00", drp("MartesSalidaComida").ToString())) Drow(3) = TimeSpan.Parse(If(IsNothing(drp), "00:00", drp("MartesEntradaComida").ToString())) Drow(4) = TimeSpan.Parse(If(IsNothing(drp), "09:00", drp("MartesSalida").ToString())) Exit Select Case 3 - Drow(0) = Boolean.Parse(If(IsNothing(drp), "true", drp("Miercoles").ToString())) + Drow(0) = Boolean.Parse(If(IsNothing(drp), $"{(DiaDescanso <> diaSemana).ToString}", drp("Miercoles").ToString())) + 'Drow(0) = Boolean.Parse(If(IsNothing(drp), "true", drp("Miercoles").ToString())) Drow(1) = TimeSpan.Parse(If(IsNothing(drp), "00:00", drp("MiercolesEntrada").ToString())) Drow(2) = TimeSpan.Parse(If(IsNothing(drp), "00:00", drp("MiercolesSalidaComida").ToString())) Drow(3) = TimeSpan.Parse(If(IsNothing(drp), "00:00", drp("MiercolesEntradaComida").ToString())) Drow(4) = TimeSpan.Parse(If(IsNothing(drp), "09:00", drp("MiercolesSalida").ToString())) Exit Select Case 4 - Drow(0) = Boolean.Parse(If(IsNothing(drp), "true", drp("Jueves").ToString())) + Drow(0) = Boolean.Parse(If(IsNothing(drp), $"{(DiaDescanso <> diaSemana).ToString}", drp("Jueves").ToString())) + 'Drow(0) = Boolean.Parse(If(IsNothing(drp), "true", drp("Jueves").ToString())) Drow(1) = TimeSpan.Parse(If(IsNothing(drp), "00:00", drp("JuevesEntrada").ToString())) Drow(2) = TimeSpan.Parse(If(IsNothing(drp), "00:00", drp("JuevesSalidaComida").ToString())) Drow(3) = TimeSpan.Parse(If(IsNothing(drp), "00:00", drp("JuevesEntradaComida").ToString())) Drow(4) = TimeSpan.Parse(If(IsNothing(drp), "09:00", drp("JuevesSalida").ToString())) Exit Select Case 5 - Drow(0) = Boolean.Parse(If(IsNothing(drp), "true", drp("Viernes").ToString())) + Drow(0) = Boolean.Parse(If(IsNothing(drp), $"{(DiaDescanso <> diaSemana).ToString}", drp("Viernes").ToString())) + 'Drow(0) = Boolean.Parse(If(IsNothing(drp), "true", drp("Viernes").ToString())) Drow(1) = TimeSpan.Parse(If(IsNothing(drp), "00:00", drp("ViernesEntrada").ToString())) Drow(2) = TimeSpan.Parse(If(IsNothing(drp), "00:00", drp("ViernesSalidaComida").ToString())) Drow(3) = TimeSpan.Parse(If(IsNothing(drp), "00:00", drp("ViernesEntradaComida").ToString())) Drow(4) = TimeSpan.Parse(If(IsNothing(drp), "09:00", drp("ViernesSalida").ToString())) Exit Select Case 6 - Drow(0) = Boolean.Parse(If(IsNothing(drp), "False", drp("Sabado").ToString())) + Drow(0) = Boolean.Parse(If(IsNothing(drp), $"{(DiaDescanso <> diaSemana).ToString}", drp("Sabado").ToString())) + 'Drow(0) = Boolean.Parse(If(IsNothing(drp), "False", drp("Sabado").ToString())) Drow(1) = TimeSpan.Parse(If(IsNothing(drp), "00:00", drp("SabadoEntrada").ToString())) Drow(2) = TimeSpan.Parse(If(IsNothing(drp), "00:00", drp("SabadoSalidaComida").ToString())) Drow(3) = TimeSpan.Parse(If(IsNothing(drp), "00:00", drp("SabadoEntradaComida").ToString())) diff --git a/Ventas/Ventas.aspx.vb b/Ventas/Ventas.aspx.vb index ed75d8147..d7c1d5273 100644 --- a/Ventas/Ventas.aspx.vb +++ b/Ventas/Ventas.aspx.vb @@ -18127,15 +18127,30 @@ Partial Class Ventas End If ' NO VALIDA EXISTENCIAS NI COSTO - PERMISO PARA NO VALIDAR - If Not UsuarioActual.TienePermisoProceso(169) Then + If Not UsuarioActual.TienePermisoProceso(169) AndAlso RBLTipoVenta.SelectedValue.ToEntero <> 5 Then 'SOLO VALIDA EXISTENCIAS Y COSTO: SI USA INVENTARIOS, SOLO PRODUCTOS TIPO PRODUCTO, SOLO REMISIONES E INGRESOS If UsuarioActual.Empresa.UsaInventarios AndAlso CveTipoPS = 2 AndAlso (DdlTipoComprobante.SelectedValue.Contiene("Rem", "Ing", "PA") OrElse ((DdlTipoComprobante.SelectedValue.Contiene("Cot") And UsuarioActual.CveEmpresa.Contiene(119)) OrElse (DdlTipoComprobante.SelectedValue.Contiene("Ped") And UsuarioActual.CveEmpresa.Contiene(186)))) Then Dim ObjInventarios As New ClsInventarios Dim BuscarEnTabla As Boolean = If(UsuarioActual.Empresa.Funcionalidad(715) = "1", True, False) - Dim Existencia As Decimal = ObjInventarios.GetExistenciasPS(CvePS, CveUM, UsuarioActual.CveEmpresa, -1, FechaMovto:=DateTime.Today.AddDays(1).ToString("yyyy/MM/dd HH:mm"), CveSubProyecto:=DdlSubProyectoDatos.SelectedValue.ToEntero(), - CveVendedor:=DdlVendedor.SelectedValue.ToEntero(), CveCliente:=If(UsuarioActual.Empresa.Funcionalidad(146) = "1", -1, CveCliente), ExcluyeAdelantado:=1, PendientePorSurtir:=1, - RestringirAlmacenes:=1, ExcluyeApartados:=-1, BuscarEnTabla:=BuscarEnTabla) + + + Dim Existencia As Decimal = 0D + ''CveAlamcenFiltroDdl + + If RBLTipoVenta.SelectedValue.ToEntero = 6 Then + Existencia = ObjInventarios.GetExistenciasPS(CvePS, CveUM, UsuarioActual.CveEmpresa, CveAlamcenFiltroDdl, FechaMovto:=DateTime.Today.AddDays(1).ToString("yyyy/MM/dd HH:mm"), CveSubProyecto:=-1, + CveVendedor:=DdlVendedor.SelectedValue.ToEntero(), CveCliente:=If(UsuarioActual.Empresa.Funcionalidad(146) = "1", -1, CveCliente), ExcluyeAdelantado:=0, PendientePorSurtir:=1, + RestringirAlmacenes:=1, ExcluyeApartados:=-1, BuscarEnTabla:=BuscarEnTabla) + Else + Existencia = ObjInventarios.GetExistenciasPS(CvePS, CveUM, UsuarioActual.CveEmpresa, -1, FechaMovto:=DateTime.Today.AddDays(1).ToString("yyyy/MM/dd HH:mm"), CveSubProyecto:=DdlSubProyectoDatos.SelectedValue.ToEntero(), + CveVendedor:=DdlVendedor.SelectedValue.ToEntero(), CveCliente:=If(UsuarioActual.Empresa.Funcionalidad(146) = "1", -1, CveCliente), ExcluyeAdelantado:=1, PendientePorSurtir:=1, + RestringirAlmacenes:=1, ExcluyeApartados:=-1, BuscarEnTabla:=BuscarEnTabla) + End If + + + + Dim Costo As Decimal = ObjInventarios.GetCostoPS(CvePS, TxtCantidad.Text.Trim.ToDecimal, -1, "-1", TxtFecha.Text.ToDate, DdlSubProyectoDatos.SelectedValue.ToEntero(), CveTipoAlmacen:=1) 'si el costo es cero, puede ser que no halla movimientos del producto, en esa sucursal. y se volverá a sacar sin especificar sucursal From ed3574f1bab202c76e3bd1614087050125849ca5 Mon Sep 17 00:00:00 2001 From: rrene Date: Sat, 2 Mar 2024 09:11:23 -0700 Subject: [PATCH 007/197] -- mejora en garantias --- App_Code/Modelos.vb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/App_Code/Modelos.vb b/App_Code/Modelos.vb index 56b3d1290..916eac813 100644 --- a/App_Code/Modelos.vb +++ b/App_Code/Modelos.vb @@ -2303,7 +2303,7 @@ Namespace Modelos End If 'AJUSTES' - If DtAjustes IsNot Nothing AndAlso DtAjustes.Rows.Count > 0 Then + If DtAjustes IsNot Nothing AndAlso DtAjustes.FiltraParametros("CveVentaDetalle > 0").Rows.Count > 0 Then For Each Dr As DataRow In DtAjustes.Rows If Not ObjAcum.AddGarantiasDetalle(Dr("CveVentaDetalle").ToString.ToEntero, Dr("CvePS").ToString.ToEntero, Dr("CveFolioGarantia").ToString.ToEntero, Dr("CveTipoUso").ToString.ToEntero, Dr("CodigoEnsamble").ToString, Dr("CodigoLinea").ToString, Dr("CodigoInspeccion").ToString, Dr("CveTipoDefecto").ToString.ToEntero, Dr("CodigoTD").ToString, Dr("TipoComprobante").ToString.ToEntero(), From 21592151a619331ca00930259ceb3dfdf390720d Mon Sep 17 00:00:00 2001 From: rrene Date: Sat, 2 Mar 2024 09:11:36 -0700 Subject: [PATCH 008/197] =?UTF-8?q?--=20correcci=C3=B3=20de=20texto?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- App_Code/ClsContabilidad.vb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/App_Code/ClsContabilidad.vb b/App_Code/ClsContabilidad.vb index 03a863762..86a7d6533 100644 --- a/App_Code/ClsContabilidad.vb +++ b/App_Code/ClsContabilidad.vb @@ -1776,7 +1776,7 @@ Public Class ClsContabilidad SqlAdapter.Fill(Data) Retorno = True Catch ex As Exception - OnError("Ocurrió un error al obtener lod datos de Concepto Contables.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo()) + OnError("Ocurrió un error al obtener los datos de Concepto Contables.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo()) End Try Return Retorno @@ -1893,7 +1893,7 @@ Public Class ClsContabilidad SqlAdapter.Fill(Data) Retorno = True Catch ex As Exception - OnError("Ocurrió un error al obtener lod datos de Concepto Contables.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo()) + OnError("Ocurrió un error al obtener los datos de Concepto Contables.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo()) End Try Return Retorno From f980a9921e593625a22ca1d2ff1ed5fafc598a90 Mon Sep 17 00:00:00 2001 From: rrene Date: Sat, 2 Mar 2024 09:11:51 -0700 Subject: [PATCH 009/197] =?UTF-8?q?--=20redireccionamiento=20correcci?= =?UTF-8?q?=C3=B3n?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Contabilidad/RegPoliza.aspx.vb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Contabilidad/RegPoliza.aspx.vb b/Contabilidad/RegPoliza.aspx.vb index 9ade722b9..d8e1ffc2b 100644 --- a/Contabilidad/RegPoliza.aspx.vb +++ b/Contabilidad/RegPoliza.aspx.vb @@ -153,7 +153,7 @@ Partial Class RegPoliza Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.LoadComplete If Not IsPostBack Then If UsuarioActual.Empresa.TipoContabilizacion = 1 OrElse UsuarioActual.Empresa.TipoContabilidad = 1 Then - Response.Redirect("/Contabilidad2/RegPrePolizaS.aspx") + Response.Redirect("/Contabilidad/RegPrePolizaS.aspx") End If ViewState("Orden0") = "" From c7e7e682275f6778f600e1d8c4ff4516ec159fae Mon Sep 17 00:00:00 2001 From: rrene Date: Sat, 2 Mar 2024 09:12:20 -0700 Subject: [PATCH 010/197] =?UTF-8?q?--=20manejo=20de=20garant=C3=ADa,=20que?= =?UTF-8?q?=20tengan=20un=20centavo=20de=20diferencia,=20para=20el=20tema?= =?UTF-8?q?=20de=20timbrado=20objetoimpuesto=3D02?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Ventas/PV.aspx.vb | 62 ++++++++++++++++++++++++++--------------------- 1 file changed, 34 insertions(+), 28 deletions(-) diff --git a/Ventas/PV.aspx.vb b/Ventas/PV.aspx.vb index dcf8f8b3d..29ad9b268 100644 --- a/Ventas/PV.aspx.vb +++ b/Ventas/PV.aspx.vb @@ -7378,50 +7378,56 @@ Partial Class PV Dim strDate As Date = ($"20{TxtEtiqueta.Text.Substring(2, 2)}/{TxtEtiqueta.Text.Substring(0, 2)}/01").ToDate Dim drg As DataRow = dtt.FiltroPrimero($" #{strDate.ToString("yyyy/MM/dd")}# >= FechaInicioVigencia ", "FechaInicioVigencia DESC") If drg IsNot Nothing Then - - TxtPorcentajeAjuste.Text = (drg("Valor").ToString.ToDouble / 100).ToString + Dim PorcentajeAjuste As Decimal = drg("Valor").ToString.ToDecimal + TxtPorcentajeAjuste.Text = (PorcentajeAjuste / 100).ToString TxtImporteAjuste.Text = (TxtPorcentajeAjuste.Text.ToDecimal * TxtPUFactura.Text.ToDecimal).FormatoNumero ImportePagarCliente = TxtImporteAjuste.Text.ToDecimal + ''ajustar un centavo + If PorcentajeAjuste = 0 Then 'PONE UN PAGO DE UN CENTAVO, PARA EL TIMBRADO + ' TxtImporteAjuste.Text = (TxtImporteAjuste.Text.ToDecimal - 0.01D).FormatoNumero + TxtImporteAjuste.Text = "0.01" + End If + Dim CargoVendido As Decimal = 0 - Dim CargoGarantia As Decimal = 0 + Dim CargoGarantia As Decimal = 0 Dim CveTamaño As Integer = 0 If DdlPSAjuste.SelectedValue.ToEntero > 0 Then - Dim Dr As DataRow = GlobalDTPS(UsuarioActual.CveEmpresa, DdlPSAjuste.SelectedValue.ToEntero).FiltroPrimero("") - If Dr IsNot Nothing Then - CargoGarantia = Dr("Cargo").ToString.ToDecimal + Dim Dr As DataRow = GlobalDTPS(UsuarioActual.CveEmpresa, DdlPSAjuste.SelectedValue.ToEntero).FiltroPrimero("") + If Dr IsNot Nothing Then + CargoGarantia = Dr("Cargo").ToString.ToDecimal + End If End If - End If - If DdlPS.SelectedValue.ToEntero > 0 Then - Dim Dr As DataRow = GlobalDTPSSimplificado(UsuarioActual.CveEmpresa, CvePS:=DdlPS.SelectedValue.ToEntero).FiltroPrimero("") - If Dr IsNot Nothing Then - CveTamaño = Dr("CveTamaño").ToString.ToEntero + If DdlPS.SelectedValue.ToEntero > 0 Then + Dim Dr As DataRow = GlobalDTPSSimplificado(UsuarioActual.CveEmpresa, CvePS:=DdlPS.SelectedValue.ToEntero).FiltroPrimero("") + If Dr IsNot Nothing Then + CveTamaño = Dr("CveTamaño").ToString.ToEntero + End If End If - End If - Dim DrCargo As DataRow = GlobalDTAcumTamaños(UsuarioActual.CveEmpresa).FiltroPrimero($" CveTamaño = {CveTamaño}") - If DrCargo IsNot Nothing Then + Dim DrCargo As DataRow = GlobalDTAcumTamaños(UsuarioActual.CveEmpresa).FiltroPrimero($" CveTamaño = {CveTamaño}") + If DrCargo IsNot Nothing Then - CargoVendido = DrCargo("Cargo").ToString.ToDecimal + CargoVendido = DrCargo("Cargo").ToString.ToDecimal - End If + End If - 'el ajuste no puede ser mayor al precio de lo vendido de nuevo - If (TxtPrecio.Text.ToDouble - ((TxtPUFactura.Text.ToDouble - TxtImporteAjuste.Text.ToDouble) - (CargoVendido - CargoGarantia))) < 0 Then + 'el ajuste no puede ser mayor al precio de lo vendido de nuevo + If (TxtPrecio.Text.ToDouble - ((TxtPUFactura.Text.ToDouble - TxtImporteAjuste.Text.ToDouble) - (CargoVendido - CargoGarantia))) < 0 Then - TxtImporteAjuste.Text = "0.00" - CargoGarantia = CargoVendido - ImportePagarCliente = 0 - End If - ImportePagarCliente = (TxtPrecio.Text.ToDouble - ((TxtPUFactura.Text.ToDouble - TxtImporteAjuste.Text.ToDouble) - (CargoVendido - CargoGarantia))).ToDecimal + TxtImporteAjuste.Text = "0.00" + CargoGarantia = CargoVendido + ImportePagarCliente = 0 + End If + ImportePagarCliente = (TxtPrecio.Text.ToDouble - ((TxtPUFactura.Text.ToDouble - TxtImporteAjuste.Text.ToDouble) - (CargoVendido - CargoGarantia))).ToDecimal - TxtImporteAjuste.ToolTip = $"La diferencia de ajuste fue: {(TxtPrecio.Text.ToDouble - TxtImporteAjuste.Text.ToDouble).FormatoNumero()}. La diferencia de tamaños fue: {(CargoVendido - CargoGarantia).FormatoNumero}." - TxtImporteAjuste.Text = ((TxtPUFactura.Text.ToDouble - TxtImporteAjuste.Text.ToDouble) - (CargoVendido - CargoGarantia)).FormatoNumero - 'TxtPagarCliente.Text = ImportePagarCliente.FormatoNumero - Else - Alert("El producto no tiene ajuste en ese periodo", TipoMensaje.MsgAdvertencia) + TxtImporteAjuste.ToolTip = $"La diferencia de ajuste fue: {(TxtPrecio.Text.ToDouble - TxtImporteAjuste.Text.ToDouble).FormatoNumero()}. La diferencia de tamaños fue: {(CargoVendido - CargoGarantia).FormatoNumero}." + TxtImporteAjuste.Text = ((TxtPUFactura.Text.ToDouble - TxtImporteAjuste.Text.ToDouble) - (CargoVendido - CargoGarantia)).FormatoNumero + 'TxtPagarCliente.Text = ImportePagarCliente.FormatoNumero + Else + Alert("El producto no tiene ajuste en ese periodo", TipoMensaje.MsgAdvertencia) 'cuando no está registrada, no da ajuste TxtImporteAjuste.ToolTip = "El producto no tiene ajuste en ese periodo" TxtImporteAjuste.Text = "0.00" From dade1b7ac4440a30c1fc09d7c26c37572d23c914 Mon Sep 17 00:00:00 2001 From: rrene Date: Sat, 2 Mar 2024 09:12:50 -0700 Subject: [PATCH 011/197] =?UTF-8?q?--=20mejora=20en=20acomodo=20de=20infor?= =?UTF-8?q?maci=C3=B3n=20de=20correos?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Sistemas/DefinicionEmpresa.aspx | 57 ++++++++++++++++----------------- Sistemas/Empresa.aspx | 24 +++++++------- Sistemas/Empresa.aspx.vb | 3 +- 3 files changed, 42 insertions(+), 42 deletions(-) diff --git a/Sistemas/DefinicionEmpresa.aspx b/Sistemas/DefinicionEmpresa.aspx index 741dd2086..96eb85e2f 100644 --- a/Sistemas/DefinicionEmpresa.aspx +++ b/Sistemas/DefinicionEmpresa.aspx @@ -414,7 +414,7 @@
    - Recepción de Correos + Envío de Correos
    @@ -464,20 +464,6 @@
    - -
    -
    - - - - - - - -
    -
    - -
    @@ -495,7 +481,7 @@
    - Envío de Correos + Recepción de Correos
    @@ -528,20 +514,33 @@
    -
    + +
    - - - - -
    -
    -
    -
    - - -
    -
    + + + + + + + +
    +
    +
    +
    + + + + +
    +
    +
    +
    + + +
    +
    +
    diff --git a/Sistemas/Empresa.aspx b/Sistemas/Empresa.aspx index 38b124da9..97f0d7354 100644 --- a/Sistemas/Empresa.aspx +++ b/Sistemas/Empresa.aspx @@ -546,7 +546,7 @@
    - Recepción de Correos + Envío de Correos
    @@ -583,16 +583,7 @@ - - - Protocolo: - - - - - - - + SSL: @@ -606,7 +597,7 @@
    - Envío de Correos + Recepción de Correos
    @@ -632,6 +623,15 @@ + + Protocolo: + + + + + + + Puerto: diff --git a/Sistemas/Empresa.aspx.vb b/Sistemas/Empresa.aspx.vb index fc997687c..9c40b1774 100644 --- a/Sistemas/Empresa.aspx.vb +++ b/Sistemas/Empresa.aspx.vb @@ -277,6 +277,7 @@ Partial Class Sistemas_Empresa TxtMailSoporte.Text = .Soporte_Mail TxtServidorSoporte.Text = .Soporte_Server TxtPuertoSoporte.Text = .Soporte_Puerto.ToString + DdlProtocolo.Text = .Buzon_Tipo ChkSSLSoporte.Checked = .Soporte_SSL TxtUsuarioSoporte.Text = .Soporte_USR DdlProtocoloSoporte.SelectedValue = .Soporte_Tipo @@ -311,7 +312,7 @@ Partial Class Sistemas_Empresa 'NUEVOS TxtAreaGeografica.Text = .AreaGeografica - DdlProtocolo.Text = .Buzon_Tipo + 'Fiel LblPfx.Text = .FielPFX From c9767352a0c17356b6fe938942169b3333bc70af Mon Sep 17 00:00:00 2001 From: rrene Date: Sat, 2 Mar 2024 09:14:22 -0700 Subject: [PATCH 012/197] =?UTF-8?q?--=20manejo=20de=20centavo=20para=20tem?= =?UTF-8?q?a=20de=20garant=C3=ADa?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Ventas/Ventas.aspx.vb | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/Ventas/Ventas.aspx.vb b/Ventas/Ventas.aspx.vb index d40ab3a28..cd845a3a1 100644 --- a/Ventas/Ventas.aspx.vb +++ b/Ventas/Ventas.aspx.vb @@ -14957,10 +14957,17 @@ Partial Class Ventas CveVentaAplicar = CveDevolucion CveVentaAmortizacionAplicar = ObjFactura.CveVenta End If + 'verifico que el AF, tenga valores iguales cuando esté vacío o "-1" + Dim drs As DataRow() = TmpDTDetalle.Select(" CveActivoFijo IS NULL") + For Each dr As DataRow In drs + dr("CveActivoFijo") = "-1" + Next + TmpDTDetalle.AcceptChanges() DT = TmpDTDetalle.FiltraParametros($"CvePS <> {CvePSAmortizacion}", "", {"CveClasificacion", "CveSubProyecto", "PorcentajeIVA", "CveActivoFijo"}) If DT.Rows.Count > 0 Then + 'Se agrega movimiento separado por la cuenta de ventas (ER) For Each Row2 As DataRow In DT.Rows importeMovimiento = (TmpDTDetalle.SUM("TotalImporte", String.Format("CveClasificacion = {0} And CveSubProyecto = {1} AND PorcentajeIVA = {2} AND ISNULL(CveActivoFijo,-1) = {3}", Row2("CveClasificacion"), Row2("CveSubProyecto"), Row2("PorcentajeIVA"), If(Row2("CveActivoFijo").ToString().ToEntero() > 0, Row2("CveActivoFijo").ToString().ToEntero(), -1))).ToString().ToDecimal()) * ValorMultiplicador @@ -23276,7 +23283,12 @@ Partial Class Ventas 'VALIDA PAGOS EN FACTURAS DE ING,ANT NUEVAS O FACTURACION DE REM O COTIZACIONES If UsuarioActual.Empresa.Funcionalidad(531) = "1" AndAlso RBLPago.SelectedValue = "2" AndAlso ((CveVenta <= 0 AndAlso DdlTipoComprobante.SelectedValue.Contiene("Ing", "Ant")) OrElse TipoDoctoViejo.Contiene("Rem", "Cot")) Then - + Dim TotalPagadoGarantia As Decimal = 0 + If TxtTotal.Text.ToDecimal = 0.01 AndAlso Me.EsGarantia = True Then + TotalPagadoGarantia = 0.01D + TienePagos = True + ViewState("SaldoVenta") = SaldoVenta - TotalPagadoGarantia + End If If Not TienePagos AndAlso TxtTotal.Text.ToDecimal > 0 Then If MostrarAlertas Then Alert("Es necesario especificar un pago.", TipoMensaje.MsgAdvertencia) @@ -23294,7 +23306,7 @@ Partial Class Ventas Dim TotalRNC As Decimal = If((ListaNCDesc IsNot Nothing AndAlso ListaNCDesc.Count > 0) OrElse (ListaNCBonificacion IsNot Nothing AndAlso ListaNCBonificacion.Count > 0), LblDescuentosRNC.Text.Trim().ToDecimal(), 0) Dim ImporteTotal As Decimal = (TxtTotal.Text.ToDecimal).RoundSQL(2) - Dim TotalPagado As Decimal = (TotalPagoContado + TotalRNC + TotalProntoPago).RoundSQL(2) + Dim TotalPagado As Decimal = (TotalPagoContado + TotalRNC + TotalProntoPago + TotalPagadoGarantia).RoundSQL(2) If TotalPagado <> ImporteTotal Then If MostrarAlertas Then @@ -23316,10 +23328,7 @@ Partial Class Ventas Return Retorno End If End If - - End If - End If 'SI TIENE SALDO PENDIENTE VALIDA SI TIENE PAGOS From 8f340f55172d5aa0379cd42ad470f33dd7045ac5 Mon Sep 17 00:00:00 2001 From: rrene Date: Sat, 2 Mar 2024 11:47:10 -0700 Subject: [PATCH 013/197] - --- Planeacion/CatSubProyectos.aspx.vb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Planeacion/CatSubProyectos.aspx.vb b/Planeacion/CatSubProyectos.aspx.vb index 3df377a95..959ac61db 100644 --- a/Planeacion/CatSubProyectos.aspx.vb +++ b/Planeacion/CatSubProyectos.aspx.vb @@ -93,7 +93,7 @@ Partial Class CatSubProyectos End If BtnGuardar.OnClientClick = $"ValidaGuardar();" - If UsuarioActual.Empresa.Funcionalidad(404) = "20" Then + If UsuarioActual.Empresa.Funcionalidad(404).Contiene("10", "20") Then DVModalPrecioLista.Visible = True End If From 4d9f4f0d19bf08f4799180bd855759e8994d3706 Mon Sep 17 00:00:00 2001 From: rrene Date: Sat, 2 Mar 2024 14:52:56 -0700 Subject: [PATCH 014/197] - vista --- RH/RepChecadorPreAsistencia.aspx | 12 ++++++------ RH/RepChecadorPreAsistencia.aspx.vb | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/RH/RepChecadorPreAsistencia.aspx b/RH/RepChecadorPreAsistencia.aspx index e20f1db0b..f8612603b 100644 --- a/RH/RepChecadorPreAsistencia.aspx +++ b/RH/RepChecadorPreAsistencia.aspx @@ -35,11 +35,11 @@
    • Tipo Periodo: - +
    • Periodo: - +
    • <%--
    • Fecha Inicio: @@ -73,18 +73,18 @@
    • --%>
    • SubProyecto: - +
    • Turno: - +
    • Checador - +
    • Lista Asistencia - +
    diff --git a/RH/RepChecadorPreAsistencia.aspx.vb b/RH/RepChecadorPreAsistencia.aspx.vb index 685d93bec..7885505c1 100644 --- a/RH/RepChecadorPreAsistencia.aspx.vb +++ b/RH/RepChecadorPreAsistencia.aspx.vb @@ -154,7 +154,7 @@ Partial Class RH_RepChecadorPreAsistencia objNom.Dispose() DdlTipoPeriodo.DataBind() - DdlTipoPeriodo.Items.Insert(0, New ListItem("Seleccione uno", "-1")) + DdlTipoPeriodo.Items.Insert(0, New ListItem("Seleccione", "-1")) DdlTurno.DataSource = GlobalDTTurno(UsuarioActual.CveEmpresa) DdlTurno.DataBind() From d00230813d4361b6586443d59c44e669d2507351 Mon Sep 17 00:00:00 2001 From: rrene Date: Sat, 2 Mar 2024 15:18:50 -0700 Subject: [PATCH 015/197] --filtrado de almacen --- Acumuladores/RepRecolecciones.aspx.vb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Acumuladores/RepRecolecciones.aspx.vb b/Acumuladores/RepRecolecciones.aspx.vb index 0fd8d43d1..aa2843c47 100644 --- a/Acumuladores/RepRecolecciones.aspx.vb +++ b/Acumuladores/RepRecolecciones.aspx.vb @@ -62,7 +62,7 @@ Partial Class Acumuladores_RepRecolecciones CargarCentrosDeCosto(Nothing, DdlSubProyecto, Nothing, LblSubProyecto) DdlAlmacenOrigen.DataSource = GlobalDTAlmacenUsuarios(UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1).FiltraParametros("CveTipoAlmacen IN (4)") DdlAlmacenOrigen.DataBind() - DdlAlmacenDestino.DataSource = GlobalDTAlmacenUsuarios(UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1).FiltraParametros("CveTipoAlmacen IN (22) and Almacen like '%sado%'") + DdlAlmacenDestino.DataSource = GlobalDTAlmacenUsuarios(UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1).FiltraParametros("CveTipoAlmacen IN (22) and Almacen like '%sado%' and CveAlmacen IN (449,616,628)") ' alm,. matriz,nav,obr recep sados DdlAlmacenDestino.DataBind() End Sub From 9182e4c09197af7aa8396797282f145b1d97a078 Mon Sep 17 00:00:00 2001 From: rakcsle Date: Sun, 3 Mar 2024 10:31:56 -0700 Subject: [PATCH 016/197] RepChecadorPreAsistencia Correciones --- RH/RepChecadorPreAsistencia.aspx.vb | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/RH/RepChecadorPreAsistencia.aspx.vb b/RH/RepChecadorPreAsistencia.aspx.vb index 7885505c1..636d3956a 100644 --- a/RH/RepChecadorPreAsistencia.aspx.vb +++ b/RH/RepChecadorPreAsistencia.aspx.vb @@ -359,7 +359,19 @@ Partial Class RH_RepChecadorPreAsistencia FiltroSubProyecto = $" CveTipoPeriodo = {DdlTipoPeriodo.SelectedValue } {filtroturno} " End If - DtPersonal = GlobalDTRHPersonal(UsuarioActual.Empresa.CveEmpresa).FiltraParametros(FiltroSubProyecto) + 'DtPersonal = GlobalDTRHPersonal(UsuarioActual.Empresa.CveEmpresa).FiltraParametros(FiltroSubProyecto) + + Dim DtTempPeriodo As DataTable = DTPeridos.FiltraParametros("CvePeriodo = " & DdlRango.SelectedValue.ToEntero) + Dim FechaInicioPeriodoFiltro = DtTempPeriodo(0)("FechaInicio").ToString().ToDate + + Dim FilasFiltradas = From fila In GlobalDTRHPersonal(UsuarioActual.Empresa.CveEmpresa).FiltraParametros(FiltroSubProyecto).AsEnumerable() + Let Inicio = fila.Field(Of Date)("FechaInicio") + Let FechaFinOriginal = fila.Field(Of Date?)("FechaFin") + Let FechaFin = If(FechaFinOriginal.HasValue, FechaFinOriginal.Value, Now) + Where Inicio <= FechaInicioPeriodoFiltro AndAlso FechaInicioPeriodoFiltro <= FechaFin + Select fila + + DtPersonal = FilasFiltradas.CopyToDataTable() If objRH.ChecadorHorariosGet(-1, 1, UsuarioActual.Empresa.CveEmpresa) Then DTHorarios = objRH.DtResultados @@ -992,6 +1004,18 @@ Partial Class RH_RepChecadorPreAsistencia DTAsistenciasInasistencias = objRH.DtResultados End If + Dim DtTempPeriodo As DataTable = DTPeridos.FiltraParametros("CvePeriodo = " & DdlRango.SelectedValue.ToEntero) + Dim FechaInicioPeriodoFiltro = DtTempPeriodo(0)("FechaInicio").ToString().ToDate + + Dim FilasFiltradas = From fila In GlobalDTRHPersonal(UsuarioActual.Empresa.CveEmpresa).FiltraParametros($" CveTipoPeriodo = { DdlTipoPeriodo.SelectedValue} AND CveEstado = 1 " & If(DdlTurno.SelectedValue = "-1", "", $" AND CveTurno = {DdlTurno.SelectedValue}")).AsEnumerable() + Let Inicio = fila.Field(Of Date)("FechaInicio") + Let FechaFinOriginal = fila.Field(Of Date?)("FechaFin") + Let FechaFin = If(FechaFinOriginal.HasValue, FechaFinOriginal.Value, Now) + Where Inicio <= FechaInicioPeriodoFiltro AndAlso FechaInicioPeriodoFiltro <= FechaFin + Select fila + + 'DtPersonal = FilasFiltradas.CopyToDataTable() + DtPersonal = GlobalDTRHPersonal(UsuarioActual.Empresa.CveEmpresa).FiltraParametros($" CveTipoPeriodo = { DdlTipoPeriodo.SelectedValue} AND CveEstado = 1 " & If(DdlTurno.SelectedValue = "-1", "", $" AND CveTurno = {DdlTurno.SelectedValue}")) dt.Columns.Add("CvePersonal") From c0901efc61d865ca5bb157b4e9bb6ca2c4c2de0f Mon Sep 17 00:00:00 2001 From: rrene Date: Mon, 4 Mar 2024 11:17:50 -0700 Subject: [PATCH 017/197] --- globaldttipoventas --- Sistemas/CatSesiones.aspx.vb | 1 + 1 file changed, 1 insertion(+) diff --git a/Sistemas/CatSesiones.aspx.vb b/Sistemas/CatSesiones.aspx.vb index b024433df..ef6bbf838 100644 --- a/Sistemas/CatSesiones.aspx.vb +++ b/Sistemas/CatSesiones.aspx.vb @@ -267,6 +267,7 @@ Partial Class Sistemas_CatSesiones If ObjVentas.GetCondicionesEntrega(-1) Then Application("GlobalDTVtaCondicionesEntrega") = ObjVentas.DtResultados Else Application("GlobalDTVtaCondicionesEntrega") = Nothing ObjVentas.Dispose() + GlobalDTTipoVenta(-1) = Nothing End Sub Private Sub CargaProductosServicios() From bc44998bb25a223b9e10f9d2674ecd6fb269b0dc Mon Sep 17 00:00:00 2001 From: Jonathan Alexis Perez Morales Date: Mon, 4 Mar 2024 18:13:21 -0700 Subject: [PATCH 018/197] --Ferretera. Mostrar total con impuestos --- Ventas/Ventas.aspx | 2 +- Ventas/Ventas.aspx.vb | 13 ++++++++++++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/Ventas/Ventas.aspx b/Ventas/Ventas.aspx index 25bdaabd5..5a677a9e8 100644 --- a/Ventas/Ventas.aspx +++ b/Ventas/Ventas.aspx @@ -1386,7 +1386,7 @@ <%--16--%> - + <%--17--%> diff --git a/Ventas/Ventas.aspx.vb b/Ventas/Ventas.aspx.vb index ed75d8147..dfdc87632 100644 --- a/Ventas/Ventas.aspx.vb +++ b/Ventas/Ventas.aspx.vb @@ -8835,6 +8835,7 @@ Partial Class Ventas TmpDT.Rows(e.RowIndex)("Descuento") = ObjDescuento.ImporteDescuento TmpDT.Rows(e.RowIndex)("Total") = (Cantidad * PU) TmpDT.Rows(e.RowIndex)("TotalImporte") = (Cantidad * PU).RoundSQL(NumeroDecimales) + TmpDT.Rows(e.RowIndex)("ImporteIVA") = (TmpDT.Rows(e.RowIndex)("PorcentajeIVA").ToString().ToDecimal * TotalCalculableImpuestosIVA).RoundSQL(NumeroDecimales) TmpDT.Rows(e.RowIndex)("ImporteIEPS") = (TmpDT.Rows(e.RowIndex)("PorcentajeIEPS").ToString().ToDecimal * TotalCalculableImpuestos).RoundSQL(NumeroDecimales) TmpDT.Rows(e.RowIndex)("ImporteRetIVA") = (ClienteRetIVA * TotalCalculableImpuestos).RoundSQL(NumeroDecimales) @@ -8844,6 +8845,8 @@ Partial Class Ventas TmpDT.Rows(e.RowIndex)("PorcentajeRetISR") = ClienteRetISR TmpDT.Rows(e.RowIndex)("CuentaPredial") = CuentaPredial + TmpDT.Rows(e.RowIndex)("TotalConImpuestos") = (TmpDT.Rows(e.RowIndex)("Total").ToString().ToDecimal() - TmpDT.Rows(e.RowIndex)("Descuento").ToString().ToDecimal() + TmpDT.Rows(e.RowIndex)("ImporteIVA").ToString().ToDecimal()).RoundSQL(2) + Dim NumTurnos As Decimal = 0 If UsuarioActual.CveEmpresa.Contiene(7, 122) Then NumTurnos = GvPS.Rows(e.RowIndex).FCTextBox("TxtNumTurnosEditar").Text.ToDecimal() @@ -16646,6 +16649,7 @@ Partial Class Ventas dr("ImporteRetISR") = (ClienteRetISR * TotalCalculableImpuestos).RoundSQL(NumeroDecimales) dr("PorcentajeRetIVA") = ClienteRetIVA dr("PorcentajeRetISR") = ClienteRetISR + dr("TotalConImpuestos") = (dr("Total").ToString().ToDecimal() - dr("Descuento").ToString().ToDecimal() + dr("ImporteIVA").ToString().ToDecimal()).RoundSQL(2) Next @@ -18929,6 +18933,8 @@ Partial Class Ventas Row("CvePromocionDetalle") = CvePromocionDetalle Row("Total") = (Cantidad * PU) Row("TotalImporte") = (Cantidad * PU).RoundSQL(NumeroDecimales) + Row("TotalConImpuestos") = (Row("Total").ToString().ToDecimal() - Row("Descuento").ToString().ToDecimal() + Row("ImporteIVA").ToString().ToDecimal()).RoundSQL(2) + Row("SATClaveProdServ") = DrPS("SATClavePS") Row("SATClaveUM") = DrPS("SATClaveUnidadMedida") @@ -19097,6 +19103,7 @@ Partial Class Ventas DrPoliza("TipoDescuento") = HdnTipoDescuento.Value DrPoliza("Total") = (DrPoliza("Cantidad").ToString().ToDecimal * PU) DrPoliza("TotalImporte") = (DrPoliza("Cantidad").ToString().ToDecimal * PU).RoundSQL(NumeroDecimales) + DrPoliza("TotalConImpuestos") = (DrPoliza("Total").ToString().ToDecimal() - DrPoliza("Descuento").ToString().ToDecimal() + DrPoliza("ImporteIVA").ToString().ToDecimal()).RoundSQL(2) DrPoliza("SATClaveProdServ") = DrPSAdicional("SATClavePS") DrPoliza("SATClaveUM") = DrPSAdicional("SATClaveUnidadMedida") DrPoliza("CveActivoFijo") = -1 @@ -19234,6 +19241,8 @@ Partial Class Ventas 'USO PARA COMERCIO EXTERIOR TmpDT.Columns.Add("CantidadConversion", GetType(Decimal)) TmpDT.Columns("CantidadConversion").DefaultValue = 0 + + TmpDT.Columns.Add("TotalConImpuestos", GetType(Decimal)) End Sub Private Sub CreaDTmpC() DTmpC = New DataTable @@ -29747,7 +29756,7 @@ Partial Class Ventas Row("Descuento") = Math.Round(Descuento, NumeroDecimales) Row("Total") = Math.Round(Total, NumeroDecimales) Row("TotalImporte") = Math.Round(Total, NumeroDecimales) - + Row("TotalConImpuestos") = (Row("Total").ToString().ToDecimal() - Row("Descuento").ToString().ToDecimal() + Row("ImporteIVA").ToString().ToDecimal()).RoundSQL(2) Row("Serie") = Serie Row("TiempoEntrega") = TiempoEntrega @@ -34715,6 +34724,7 @@ Partial Class Ventas Row("Descuento") = Math.Round(Descuento, 2) Row("Total") = Math.Round(Total, 2) Row("TotalImporte") = Math.Round(Total, 2) + Row("TotalConImpuestos") = (Row("Total").ToString().ToDecimal() - Row("Descuento").ToString().ToDecimal() + Row("ImporteIVA").ToString().ToDecimal()).RoundSQL(2) Row("Serie") = Serie Row("TiempoEntrega") = TiempoEntrega @@ -37454,6 +37464,7 @@ Partial Class Ventas Row("Descuento") = (ObjDescuento.ImporteDescuento).RoundSQL(NumeroDecimales) Row("Total") = (Cantidad * PU) Row("TotalImporte") = (Cantidad * PU).RoundSQL(NumeroDecimales) + Row("TotalConImpuestos") = (Row("Total").ToString().ToDecimal() - Row("Descuento").ToString().ToDecimal() + Row("ImporteIVA").ToString().ToDecimal()).RoundSQL(2) End If Next From 57664c8a9d4b0d3161ef46b4ba9fc2f48d3ccb75 Mon Sep 17 00:00:00 2001 From: Jonathan Alexis Perez Morales Date: Mon, 4 Mar 2024 18:14:57 -0700 Subject: [PATCH 019/197] --Impresion de libro diario --- Contabilidad2/RepLibroDiario.aspx.vb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Contabilidad2/RepLibroDiario.aspx.vb b/Contabilidad2/RepLibroDiario.aspx.vb index 425085a8f..0f488f8de 100644 --- a/Contabilidad2/RepLibroDiario.aspx.vb +++ b/Contabilidad2/RepLibroDiario.aspx.vb @@ -180,7 +180,7 @@ Partial Class Contabilidad2_RepLibroDiario lista.Add(New CrystalParametro("UsuarioImprimio", UsuarioActual.Nombre)) lista.Add(New CrystalParametro("LogoPath", If(Imagen.Exists, $"file://{Imagen.FullName}", ""))) - ImprimirbytesPDF(ImprimirPDFCrystal(Server.MapPath("~/Empresas/Grales/Formatos/LibroDiario.rpt"), DtDatos, lista, "LibroDiario", Formato), "LibroDiario", Formato) + ImprimirbytesPDF(ImprimirPDFCrystal(DirectorioEmpresas + "\Grales\Formatos\LibroDiario.rpt", DtDatos, lista, "LibroDiario", Formato), "LibroDiario", Formato) End Sub #End Region End Class From a4b8095761de82d31d832fb2947d6b8eecb2924e Mon Sep 17 00:00:00 2001 From: Jonathan Alexis Perez Morales Date: Mon, 4 Mar 2024 18:15:47 -0700 Subject: [PATCH 020/197] --Total en 0 si el total es 1 centavo --- Empresas/140/Formatos/Factura.rdlc | 4 ++-- Empresas/140/Formatos/Remision.rdlc | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Empresas/140/Formatos/Factura.rdlc b/Empresas/140/Formatos/Factura.rdlc index 495426efa..90554a4fd 100644 --- a/Empresas/140/Formatos/Factura.rdlc +++ b/Empresas/140/Formatos/Factura.rdlc @@ -2321,7 +2321,7 @@ - =Fields!Importe.Value + =IIf(Fields!Importe.Value = 0.01 ,0.00,Fields!Importe.Value) - 21.0638cm + 21.06381cm 0.5327cm diff --git a/Empresas/140/Formatos/Remision.rdlc b/Empresas/140/Formatos/Remision.rdlc index d6b8d4dd0..f3ae0410a 100644 --- a/Empresas/140/Formatos/Remision.rdlc +++ b/Empresas/140/Formatos/Remision.rdlc @@ -1677,7 +1677,7 @@ - =Fields!Importe.Value + =IIf(Fields!Importe.Value = 0.01 ,0.00,Fields!Importe.Value) --%> + +
    + + + + + + <%-- MODAL PS ADICIONALES --%> + + + <%-- MODAL PS ADICIONALES --%> + + + + <%-- FIN MODAL PS ADICIONALES --%> + + + + + + + + + + + + + + + - + + diff --git a/Ventas/ProductosServicios.aspx.vb b/Ventas/ProductosServicios.aspx.vb index 1721e2c10..b90c0960c 100644 --- a/Ventas/ProductosServicios.aspx.vb +++ b/Ventas/ProductosServicios.aspx.vb @@ -132,6 +132,15 @@ Partial Class ProductosyServicios ViewState("GeneraServicioAF") = value End Set End Property + + Public Property Imagen As String + Get + Return IfNull(ViewState("Imagen"), "", ViewState("Imagen")).ToString() + End Get + Set(value As String) + ViewState("Imagen") = value + End Set + End Property #End Region Private ReadOnly Property PermiteClasificacion2 As Boolean @@ -952,6 +961,17 @@ Partial Class ProductosyServicios DdlTipoFactor.SelectedValueExist(ObjProductosServicios.DtResultados.Rows(0)("CveTipoFactor").ToString) + Me.Imagen = ObjProductosServicios.DtResultados.Rows(0)("Imagen").ToString + + If Not String.IsNullOrEmpty(Me.Imagen) Then + imgImagen.Attributes.Add("src", String.Format("/ashx/SIGWeb.ashx?Metodo=GetImg&r={0}", Extensiones.Encripta(Me.Imagen))) + hplImagen.Attributes.Add("href", String.Format("/ashx/SIGWeb.ashx?Metodo=GetImg&r={0}", Extensiones.Encripta(Me.Imagen))) + End If + + DivImagen.Visible = True + upGaleria.Update() + RegistraScript("clickgaleria();", "CG") + If ObjProductosServicios.DtResultados.Rows(0)("CveTipoFactor").ToString.Contiene("1", "2") Then LIva.Visible = True DdlIVA.Visible = True @@ -2482,83 +2502,83 @@ Partial Class ProductosyServicios #Region " ECOMMERCE " Private Sub InicializaEcommerce() - AplicaEcommerce = False + 'AplicaEcommerce = False - If UsuarioActual.Empresa.Funcionalidad(700).ToEntero = 1 And CvePS > 0 Then + 'If UsuarioActual.Empresa.Funcionalidad(700).ToEntero = 1 And CvePS > 0 Then - TabEcommerce.Visible = True - LBBitacoraEcommerce.Visible = True + ' TabEcommerce.Visible = True + ' LBBitacoraEcommerce.Visible = True - 'INICIALIZA PRODUCTOS ECOMMERCE - Dim ObjEcommerce As New ClsECommerce - If ObjEcommerce.InsigniasGet(-1, "", UsuarioActual.CveEmpresa) Then - DdlEcommerceInsignia.DataSource = ObjEcommerce.DtResultados - End If - ObjEcommerce.Dispose() - DdlEcommerceInsignia.DataBind() - CargaEcommerce() + ' 'INICIALIZA PRODUCTOS ECOMMERCE + ' Dim ObjEcommerce As New ClsECommerce + ' If ObjEcommerce.InsigniasGet(-1, "", UsuarioActual.CveEmpresa) Then + ' DdlEcommerceInsignia.DataSource = ObjEcommerce.DtResultados + ' End If + ' ObjEcommerce.Dispose() + ' DdlEcommerceInsignia.DataBind() + ' CargaEcommerce() - 'INICIALIZA PRODUCTOS INSIGNIAS - CargaPSInsigniasEcommerce() + ' 'INICIALIZA PRODUCTOS INSIGNIAS + ' CargaPSInsigniasEcommerce() - 'INICIALIZA PRODUCTOS IMAGENES - CargarGaleriaImagenesEcommerce() + ' 'INICIALIZA PRODUCTOS IMAGENES + ' CargarGaleriaImagenesEcommerce() - 'INICIALIZA PRODUCTOS RELACIONADOS - DdlEcommercePSRelacionado.setEsWebService(True) - CargaPSRelacionadosEcommerce() + ' 'INICIALIZA PRODUCTOS RELACIONADOS + ' DdlEcommercePSRelacionado.setEsWebService(True) + ' CargaPSRelacionadosEcommerce() - UpEcommerce.Update() + ' UpEcommerce.Update() - End If + 'End If End Sub #Region " PRODUCTOS ECOMMERCE " Private Sub CargaEcommerce() - Dim DrEcommerce As DataRow = Nothing - Dim ObjEcommerce As New ClsECommerce - If ObjEcommerce.ProductosGet(CvePS, -1, -1, -1, UsuarioActual.CveEmpresa) Then - DrEcommerce = ObjEcommerce.DtResultados.FiltroPrimero("") - End If - ObjEcommerce.Dispose() + 'Dim DrEcommerce As DataRow = Nothing + 'Dim ObjEcommerce As New ClsECommerce + 'If ObjEcommerce.ProductosGet(CvePS, -1, -1, -1, UsuarioActual.CveEmpresa) Then + ' DrEcommerce = ObjEcommerce.DtResultados.FiltroPrimero("") + 'End If + 'ObjEcommerce.Dispose() - If DrEcommerce IsNot Nothing Then - AplicaEcommerce = True + 'If DrEcommerce IsNot Nothing Then + ' AplicaEcommerce = True - TxtEcommerceDescripcion.Text = DrEcommerce("Descripcion").ToString - TxtEcommercePrecioBase.Text = DrEcommerce("PrecioBase").ToString.FormatoNumero - TxtEcommercePrecioPromocion.Text = DrEcommerce("PrecioPromocion").ToString.FormatoNumero - ChkEcommerceDisponible.Checked = CBool(DrEcommerce("Disponible").ToString) - End If - GvEcommercePSRealacionados.DataBind() - UpEcommercePSRelacionados.Update() + ' TxtEcommerceDescripcion.Text = DrEcommerce("Descripcion").ToString + ' TxtEcommercePrecioBase.Text = DrEcommerce("PrecioBase").ToString.FormatoNumero + ' TxtEcommercePrecioPromocion.Text = DrEcommerce("PrecioPromocion").ToString.FormatoNumero + ' ChkEcommerceDisponible.Checked = CBool(DrEcommerce("Disponible").ToString) + 'End If + 'GvEcommercePSRealacionados.DataBind() + 'UpEcommercePSRelacionados.Update() End Sub Private Function GuardaEcommerce() As Boolean Dim TieneError As Boolean = False If UsuarioActual.Empresa.Funcionalidad(700) = "1" Then - 'SI NO SE HA GUARDADO EN ECOMMERCE Y NO TIENE NINGUN VALOR OMITE - If Not AplicaEcommerce And Not ChkEcommerceDisponible.Checked And TxtEcommerceDescripcion.Text.Length = 0 And TxtEcommercePrecioBase.Text.Length = 0 And TxtEcommercePrecioPromocion.Text.Length = 0 Then - Return False - End If + ''SI NO SE HA GUARDADO EN ECOMMERCE Y NO TIENE NINGUN VALOR OMITE + 'If Not AplicaEcommerce And Not ChkEcommerceDisponible.Checked And TxtEcommerceDescripcion.Text.Length = 0 And TxtEcommercePrecioBase.Text.Length = 0 And TxtEcommercePrecioPromocion.Text.Length = 0 Then + ' Return False + 'End If - If ChkEcommerceDisponible.Checked Then - If Not ValidaGuardarEcommerce() Then - Return True - End If - End If + 'If ChkEcommerceDisponible.Checked Then + ' If Not ValidaGuardarEcommerce() Then + ' Return True + ' End If + 'End If - Dim Descripcion As String = TxtEcommerceDescripcion.Text.Trim - Dim PrecioBase As Double = TxtEcommercePrecioBase.Text.Trim.ToDouble - Dim PrecioPromocion As Double = TxtEcommercePrecioPromocion.Text.Trim.ToDouble - Dim Disponible As Boolean = ChkEcommerceDisponible.Checked + 'Dim Descripcion As String = TxtEcommerceDescripcion.Text.Trim + 'Dim PrecioBase As Double = TxtEcommercePrecioBase.Text.Trim.ToDouble + 'Dim PrecioPromocion As Double = TxtEcommercePrecioPromocion.Text.Trim.ToDouble + 'Dim Disponible As Boolean = ChkEcommerceDisponible.Checked - Dim ObjEcommerce As New ClsECommerce - If Not ObjEcommerce.ProductosAddUpdate(CvePS, Descripcion, PrecioBase, PrecioPromocion, Disponible, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa) Then - TieneError = True - End If - ObjEcommerce.Dispose() + 'Dim ObjEcommerce As New ClsECommerce + 'If Not ObjEcommerce.ProductosAddUpdate(CvePS, Descripcion, PrecioBase, PrecioPromocion, Disponible, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa) Then + ' TieneError = True + 'End If + 'ObjEcommerce.Dispose() End If @@ -2569,28 +2589,28 @@ Partial Class ProductosyServicios Dim Mensaje As New StringBuilder 'DESCRIPCION - Dim Descripcion As String = TxtEcommerceDescripcion.Text.Trim - If Descripcion.Length = 0 Then - Mensaje.Append("- El campo Descripción es obligatorio. Por favor introduzcalo y vuelva a intentar.
    ") - End If - If Descripcion.Length > 255 Then - Mensaje.Append("- El campo Descripción admite maximo 255 caracteres. Por favor verifique y vuelva a intentar.
    ") - End If + 'Dim Descripcion As String = TxtEcommerceDescripcion.Text.Trim + 'If Descripcion.Length = 0 Then + ' Mensaje.Append("- El campo Descripción es obligatorio. Por favor introduzcalo y vuelva a intentar.
    ") + 'End If + 'If Descripcion.Length > 255 Then + ' Mensaje.Append("- El campo Descripción admite maximo 255 caracteres. Por favor verifique y vuelva a intentar.
    ") + 'End If - 'PRECIO BASE - Dim PrecioBase As Double = TxtEcommercePrecioBase.Text.Trim.ToDouble - If PrecioBase = 0 Then - Mensaje.Append("- El campo Precio es obligatorio. Por favor verifique y vuelva a intentar.
    ") - End If - If PrecioBase < 0 Then - Mensaje.Append("- El campo Precio no puede ser negativo. Por favor verifique y vuelva a intentar.
    ") - End If + ''PRECIO BASE + 'Dim PrecioBase As Double = TxtEcommercePrecioBase.Text.Trim.ToDouble + 'If PrecioBase = 0 Then + ' Mensaje.Append("- El campo Precio es obligatorio. Por favor verifique y vuelva a intentar.
    ") + 'End If + 'If PrecioBase < 0 Then + ' Mensaje.Append("- El campo Precio no puede ser negativo. Por favor verifique y vuelva a intentar.
    ") + 'End If - 'PRECIO FINAL - Dim PrecioPromocion As Double = TxtEcommercePrecioPromocion.Text.Trim.ToDouble - If PrecioPromocion < 0 Then - Mensaje.Append("- El campo Precio Final no puede ser negativo. Por favor verifique y vuelva a intentar.
    ") - End If + ''PRECIO FINAL + 'Dim PrecioPromocion As Double = TxtEcommercePrecioPromocion.Text.Trim.ToDouble + 'If PrecioPromocion < 0 Then + ' Mensaje.Append("- El campo Precio Final no puede ser negativo. Por favor verifique y vuelva a intentar.
    ") + 'End If 'VALIDACION @@ -2606,225 +2626,225 @@ Partial Class ProductosyServicios #Region " PRODUCTOS INSIGNIAS " Private Sub CargaPSInsigniasEcommerce() - Dim ObjEcommerce As New ClsECommerce - If ObjEcommerce.ProductosInsigniasGet(CvePS, -1, UsuarioActual.CveEmpresa) Then - GvEcommercePSInsignias.DataSource = ObjEcommerce.DtResultados - Else - GvEcommercePSInsignias.DataSource = Nothing - End If - ObjEcommerce.Dispose() + 'Dim ObjEcommerce As New ClsECommerce + 'If ObjEcommerce.ProductosInsigniasGet(CvePS, -1, UsuarioActual.CveEmpresa) Then + ' GvEcommercePSInsignias.DataSource = ObjEcommerce.DtResultados + 'Else + ' GvEcommercePSInsignias.DataSource = Nothing + 'End If + 'ObjEcommerce.Dispose() - GvEcommercePSInsignias.DataBind() - UpEcommerceInsignias.Update() + 'GvEcommercePSInsignias.DataBind() + 'UpEcommerceInsignias.Update() End Sub Protected Sub BtnEcommerceInsignias_Click(sender As Object, e As EventArgs) - If Not ValidaAgregarProductosInsigniasEcommerce() Then - Exit Sub - End If + 'If Not ValidaAgregarProductosInsigniasEcommerce() Then + ' Exit Sub + 'End If - Dim TieneError As Boolean = False - Dim CveInsignia As Integer = DdlEcommerceInsignia.SelectedValue.ToEntero + 'Dim TieneError As Boolean = False + 'Dim CveInsignia As Integer = DdlEcommerceInsignia.SelectedValue.ToEntero - 'AGREGAR - Dim ObjEcommerce As New ClsECommerce - If ObjEcommerce.ProductosInsigniasAdd(Me.CvePS, CveInsignia, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa) Then - Alert("La Insignia se agregó correctamente.", TipoMensaje.MsgInformacion) - Else - TieneError = True - End If - ObjEcommerce.Dispose() + ''AGREGAR + 'Dim ObjEcommerce As New ClsECommerce + 'If ObjEcommerce.ProductosInsigniasAdd(Me.CvePS, CveInsignia, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa) Then + ' Alert("La Insignia se agregó correctamente.", TipoMensaje.MsgInformacion) + 'Else + ' TieneError = True + 'End If + 'ObjEcommerce.Dispose() - If Not TieneError Then - DdlEcommerceInsignia.SelectedValueExist(-1) - CargaPSInsigniasEcommerce() - End If + 'If Not TieneError Then + ' DdlEcommerceInsignia.SelectedValueExist(-1) + ' CargaPSInsigniasEcommerce() + 'End If End Sub Private Function ValidaAgregarProductosInsigniasEcommerce() As Boolean Dim Retorno As Boolean = True - Dim Mensaje As New StringBuilder + 'Dim Mensaje As New StringBuilder - 'INSIGNIA - Dim CveInsignia As Integer = DdlEcommerceInsignia.SelectedValue.ToEntero - If CveInsignia = 0 Then - Mensaje.Append("- El campo Insignia es obligatorio. Por favor introduzcalo y vuelva a intentar.
    ") - End If - For Each GvRow As GridViewRow In GvEcommercePSInsignias.Rows - If GvRow.DataKey("CveInsignia").ToString.ToEntero = CveInsignia Then - Mensaje.Append($"- La Insignia {DdlEcommerceInsignia.SelectedItem.Text} ya es parte del producto y no se puede duplicar. Por favor verifique y vuelva a intentar.
    ") - Exit For - End If - Next + ''INSIGNIA + 'Dim CveInsignia As Integer = DdlEcommerceInsignia.SelectedValue.ToEntero + 'If CveInsignia = 0 Then + ' Mensaje.Append("- El campo Insignia es obligatorio. Por favor introduzcalo y vuelva a intentar.
    ") + 'End If + 'For Each GvRow As GridViewRow In GvEcommercePSInsignias.Rows + ' If GvRow.DataKey("CveInsignia").ToString.ToEntero = CveInsignia Then + ' Mensaje.Append($"- La Insignia {DdlEcommerceInsignia.SelectedItem.Text} ya es parte del producto y no se puede duplicar. Por favor verifique y vuelva a intentar.
    ") + ' Exit For + ' End If + 'Next - 'VALIDACION - If Mensaje.ToString.Length > 0 Then - Retorno = False - Alert(Mensaje.ToString, TipoMensaje.MsgAdvertencia) - End If + ''VALIDACION + 'If Mensaje.ToString.Length > 0 Then + ' Retorno = False + ' Alert(Mensaje.ToString, TipoMensaje.MsgAdvertencia) + 'End If Return Retorno End Function - Protected Sub GvEcommercePSInsignias_RowDeleting(sender As Object, e As System.Web.UI.WebControls.GridViewDeleteEventArgs) Handles GvEcommercePSInsignias.RowDeleting - Dim TieneError As Boolean = False - Dim GvRow As GridViewRow = GvEcommercePSInsignias.Rows(e.RowIndex) + 'Protected Sub GvEcommercePSInsignias_RowDeleting(sender As Object, e As System.Web.UI.WebControls.GridViewDeleteEventArgs) Handles GvEcommercePSInsignias.RowDeleting + ' Dim TieneError As Boolean = False + ' Dim GvRow As GridViewRow = GvEcommercePSInsignias.Rows(e.RowIndex) - Dim ObjEcommerce As New ClsECommerce - If ObjEcommerce.ProductosInsigniasRemove(GvRow.DataKey("CvePS").ToString.ToEntero, GvRow.DataKey("CveInsignia").ToString.ToEntero, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa) Then - Alert("La Insignia se eliminó correctamente.", TipoMensaje.MsgInformacion) - Else - TieneError = True - End If - ObjEcommerce.Dispose() + ' Dim ObjEcommerce As New ClsECommerce + ' If ObjEcommerce.ProductosInsigniasRemove(GvRow.DataKey("CvePS").ToString.ToEntero, GvRow.DataKey("CveInsignia").ToString.ToEntero, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa) Then + ' Alert("La Insignia se eliminó correctamente.", TipoMensaje.MsgInformacion) + ' Else + ' TieneError = True + ' End If + ' ObjEcommerce.Dispose() - If Not TieneError Then - CargaPSInsigniasEcommerce() - End If - End Sub + ' If Not TieneError Then + ' CargaPSInsigniasEcommerce() + ' End If + 'End Sub #End Region #Region " PRODUCTOS IMAGENES " - Private Sub CargarGaleriaImagenesEcommerce() - Dim TmpDT As DataTable = Nothing + 'Private Sub CargarGaleriaImagenesEcommerce() + ' Dim TmpDT As DataTable = Nothing - Dim ObjEcommerce As New ClsECommerce - If ObjEcommerce.ProductosImagenesGet(CvePS, UsuarioActual.CveEmpresa) Then - TmpDT = ObjEcommerce.DtResultados - Else - TmpDT = Nothing - End If - ObjEcommerce.Dispose() + ' Dim ObjEcommerce As New ClsECommerce + ' If ObjEcommerce.ProductosImagenesGet(CvePS, UsuarioActual.CveEmpresa) Then + ' TmpDT = ObjEcommerce.DtResultados + ' Else + ' TmpDT = Nothing + ' End If + ' ObjEcommerce.Dispose() - RptFotos.DataSource = TmpDT - RptFotos.DataBind() - UpEcommerceGaleriaImagenes.Update() - End Sub + ' RptFotos.DataSource = TmpDT + ' RptFotos.DataBind() + ' UpEcommerceGaleriaImagenes.Update() + 'End Sub Protected Sub BtnEcommerceImagenes_Click(sender As Object, e As EventArgs) - Dim FilesGral As List(Of Archivo) = TxtEcommerceImagenes.getfiles().Archivos - Dim FileMove As String = "" - Dim Archivo As String = "" - Dim DirectorioTemporal As String = "" + 'Dim FilesGral As List(Of Archivo) = TxtEcommerceImagenes.getfiles().Archivos + 'Dim FileMove As String = "" + 'Dim Archivo As String = "" + 'Dim DirectorioTemporal As String = "" - Dim DirectorioDestino As String = $"{UsuarioActual.Empresa.Ruta}\Ecommerce\Productos\Imagenes\" - If Not Directory.Exists(DirectorioDestino) Then - Directory.CreateDirectory(DirectorioDestino) - End If + 'Dim DirectorioDestino As String = $"{UsuarioActual.Empresa.Ruta}\Ecommerce\Productos\Imagenes\" + 'If Not Directory.Exists(DirectorioDestino) Then + ' Directory.CreateDirectory(DirectorioDestino) + 'End If - Dim ObjEcommerce As New ClsECommerce - For Each FileItem As Archivo In FilesGral - Archivo = NowADS().Ticks.ToString - Try - FileMove = FileItem.filename - DirectorioTemporal = $"{AppDomain.CurrentDomain.BaseDirectory}Temp\{FileMove}" + 'Dim ObjEcommerce As New ClsECommerce + 'For Each FileItem As Archivo In FilesGral + ' Archivo = NowADS().Ticks.ToString + ' Try + ' FileMove = FileItem.filename + ' DirectorioTemporal = $"{AppDomain.CurrentDomain.BaseDirectory}Temp\{FileMove}" - Archivo = $"{Archivo}{IO.Path.GetExtension(DirectorioTemporal)}" - DirectorioDestino += Archivo - If ObjEcommerce.ProductosImagenesAdd(CvePS, $"Ecommerce\Productos\Imagenes\{Archivo}", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa) Then - CargarGaleriaImagenesEcommerce() - My.Computer.FileSystem.MoveFile(DirectorioTemporal, DirectorioDestino) - End If - Catch ex As Exception - End Try - Next - ObjEcommerce.Dispose() + ' Archivo = $"{Archivo}{IO.Path.GetExtension(DirectorioTemporal)}" + ' DirectorioDestino += Archivo + ' If ObjEcommerce.ProductosImagenesAdd(CvePS, $"Ecommerce\Productos\Imagenes\{Archivo}", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa) Then + ' CargarGaleriaImagenesEcommerce() + ' My.Computer.FileSystem.MoveFile(DirectorioTemporal, DirectorioDestino) + ' End If + ' Catch ex As Exception + ' End Try + 'Next + 'ObjEcommerce.Dispose() - RegistraScript("$(""#Modalupfotos"").modal(""hide"");initcarusel();") - TxtEcommerceImagenes.Text = "[]" - UpUpFotos.Update() + 'RegistraScript("$(""#Modalupfotos"").modal(""hide"");initcarusel();") + 'TxtEcommerceImagenes.Text = "[]" + 'UpUpFotos.Update() End Sub Protected Sub BtnEcommerceEliminarImagenes_Click(sender As Object, e As System.EventArgs) - Dim CveImagenActivoFijo As Integer = 0 - CveImagenActivoFijo = Integer.Parse(DirectCast(sender, Button).CommandArgument) + 'Dim CveImagenActivoFijo As Integer = 0 + 'CveImagenActivoFijo = Integer.Parse(DirectCast(sender, Button).CommandArgument) - If (CveImagenActivoFijo > 0) Then - Dim ObjEcommerce As New ClsECommerce - If ObjEcommerce.ProductosImagenesRemove(CveImagenActivoFijo, UsuarioActual.CveEmpresa) Then - File.Delete(String.Format("{0}{1}", UsuarioActual.Empresa.Ruta, ObjEcommerce.DtResultados.Rows(0)("URL"))) - CargarGaleriaImagenesEcommerce() - RegistraScript("initcarusel();") - End If - ObjEcommerce.Dispose() - End If + 'If (CveImagenActivoFijo > 0) Then + ' Dim ObjEcommerce As New ClsECommerce + ' If ObjEcommerce.ProductosImagenesRemove(CveImagenActivoFijo, UsuarioActual.CveEmpresa) Then + ' File.Delete(String.Format("{0}{1}", UsuarioActual.Empresa.Ruta, ObjEcommerce.DtResultados.Rows(0)("URL"))) + ' CargarGaleriaImagenesEcommerce() + ' RegistraScript("initcarusel();") + ' End If + ' ObjEcommerce.Dispose() + 'End If End Sub #End Region #Region " PRODUCTOS RELACIONADOS " Private Sub CargaPSRelacionadosEcommerce() - Dim ObjEcommerce As New ClsECommerce - If ObjEcommerce.ProductosRelacionadosGet(CvePS, UsuarioActual.CveEmpresa) Then - GvEcommercePSRealacionados.DataSource = ObjEcommerce.DtResultados - Else - GvEcommercePSRealacionados.DataSource = Nothing - End If - ObjEcommerce.Dispose() + 'Dim ObjEcommerce As New ClsECommerce + 'If ObjEcommerce.ProductosRelacionadosGet(CvePS, UsuarioActual.CveEmpresa) Then + ' GvEcommercePSRealacionados.DataSource = ObjEcommerce.DtResultados + 'Else + ' GvEcommercePSRealacionados.DataSource = Nothing + 'End If + 'ObjEcommerce.Dispose() - GvEcommercePSRealacionados.DataBind() - UpEcommercePSRelacionados.Update() + 'GvEcommercePSRealacionados.DataBind() + 'UpEcommercePSRelacionados.Update() End Sub Protected Sub BtnEcommercePSRelacionados_Click(sender As Object, e As EventArgs) - If Not ValidaAgregarProductosRelacionadosEcommerce() Then - Exit Sub - End If + 'If Not ValidaAgregarProductosRelacionadosEcommerce() Then + ' Exit Sub + 'End If - Dim TieneError As Boolean = False - Dim CvePS As Integer = DdlEcommercePSRelacionado.SelectedValue.ToEntero + 'Dim TieneError As Boolean = False + 'Dim CvePS As Integer = DdlEcommercePSRelacionado.SelectedValue.ToEntero - 'AGREGAR - Dim ObjEcommerce As New ClsECommerce - If ObjEcommerce.ProductosRelacionadosAdd(Me.CvePS, CvePS, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa) Then - Alert("La relación se agregó correctamente.", TipoMensaje.MsgInformacion) - Else - TieneError = True - End If - ObjEcommerce.Dispose() + ''AGREGAR + 'Dim ObjEcommerce As New ClsECommerce + 'If ObjEcommerce.ProductosRelacionadosAdd(Me.CvePS, CvePS, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa) Then + ' Alert("La relación se agregó correctamente.", TipoMensaje.MsgInformacion) + 'Else + ' TieneError = True + 'End If + 'ObjEcommerce.Dispose() - If Not TieneError Then - DdlEcommercePSRelacionado.SelectedValue = "-1" - DdlEcommercePSRelacionado.SelectedText = "" - CargaPSRelacionadosEcommerce() - End If + 'If Not TieneError Then + ' DdlEcommercePSRelacionado.SelectedValue = "-1" + ' DdlEcommercePSRelacionado.SelectedText = "" + ' CargaPSRelacionadosEcommerce() + 'End If End Sub Private Function ValidaAgregarProductosRelacionadosEcommerce() As Boolean - Dim Retorno As Boolean = True - Dim Mensaje As New StringBuilder + 'Dim Retorno As Boolean = True + 'Dim Mensaje As New StringBuilder - 'PS - Dim CvePS As Integer = DdlEcommercePSRelacionado.SelectedValue.ToEntero - If CvePS = 0 Then - Mensaje.Append("- El campo Producto es obligatorio. Por favor introduzcalo y vuelva a intentar.
    ") - End If - For Each GvRow As GridViewRow In GvEcommercePSRealacionados.Rows - If GvRow.DataKey("CvePS").ToString.ToEntero = CvePS Then - Mensaje.Append($"- El producto {DdlEcommercePSRelacionado.SelectedText} ya esta relacionado y no se puede duplicar. Por favor verifique y vuelva a intentar.
    ") - Exit For - End If - Next + ''PS + 'Dim CvePS As Integer = DdlEcommercePSRelacionado.SelectedValue.ToEntero + 'If CvePS = 0 Then + ' Mensaje.Append("- El campo Producto es obligatorio. Por favor introduzcalo y vuelva a intentar.
    ") + 'End If + 'For Each GvRow As GridViewRow In GvEcommercePSRealacionados.Rows + ' If GvRow.DataKey("CvePS").ToString.ToEntero = CvePS Then + ' Mensaje.Append($"- El producto {DdlEcommercePSRelacionado.SelectedText} ya esta relacionado y no se puede duplicar. Por favor verifique y vuelva a intentar.
    ") + ' Exit For + ' End If + 'Next - 'VALIDACION - If Mensaje.ToString.Length > 0 Then - Retorno = False - Alert(Mensaje.ToString, TipoMensaje.MsgAdvertencia) - End If + ''VALIDACION + 'If Mensaje.ToString.Length > 0 Then + ' Retorno = False + ' Alert(Mensaje.ToString, TipoMensaje.MsgAdvertencia) + 'End If - Return Retorno + 'Return Retorno End Function - Protected Sub GvEcommercePSRealacionados_RowDeleting(sender As Object, e As System.Web.UI.WebControls.GridViewDeleteEventArgs) Handles GvEcommercePSRealacionados.RowDeleting - Dim TieneError As Boolean = False - Dim GvRow As GridViewRow = GvEcommercePSRealacionados.Rows(e.RowIndex) + 'Protected Sub GvEcommercePSRealacionados_RowDeleting(sender As Object, e As System.Web.UI.WebControls.GridViewDeleteEventArgs) Handles GvEcommercePSRealacionados.RowDeleting + ' 'Dim TieneError As Boolean = False + ' 'Dim GvRow As GridViewRow = GvEcommercePSRealacionados.Rows(e.RowIndex) - Dim ObjEcommerce As New ClsECommerce - If ObjEcommerce.ProductosRelacionadosRemove(GvRow.DataKey("CvePS1").ToString.ToEntero, GvRow.DataKey("CvePS2").ToString.ToEntero, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa) Then - Alert("La relación se eliminó correctamente.", TipoMensaje.MsgInformacion) - Else - TieneError = True - End If - ObjEcommerce.Dispose() + ' 'Dim ObjEcommerce As New ClsECommerce + ' 'If ObjEcommerce.ProductosRelacionadosRemove(GvRow.DataKey("CvePS1").ToString.ToEntero, GvRow.DataKey("CvePS2").ToString.ToEntero, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa) Then + ' ' Alert("La relación se eliminó correctamente.", TipoMensaje.MsgInformacion) + ' 'Else + ' ' TieneError = True + ' 'End If + ' 'ObjEcommerce.Dispose() - If Not TieneError Then - CargaPSRelacionadosEcommerce() - End If - End Sub + ' 'If Not TieneError Then + ' ' CargaPSRelacionadosEcommerce() + ' 'End If + 'End Sub #End Region @@ -3599,4 +3619,64 @@ Partial Class ProductosyServicios End If End Sub + + Private Sub BtnUpFotos_Click(sender As Object, e As EventArgs) Handles BtnUpFotos.Click + + Dim FilesGral As List(Of Archivo) = TxtUpFotos.getfiles().Archivos + Dim FileMove As String = "" + Dim NewName As String + For Each FileItem As Archivo In FilesGral + + NewName = NowADS().Ticks.ToString + Dim ObjPS As New ClsProductosServicios + Try + FileMove = FileItem.filename + Dim DirectorioOld As New StringBuilder + Dim DirectorioNew As New StringBuilder + DirectorioOld.AppendFormat("{0}Temp\{1}", AppDomain.CurrentDomain.BaseDirectory, FileMove) + DirectorioNew.AppendFormat("{0}PS\", UsuarioActual.Empresa.Ruta) + If Not Directory.Exists(DirectorioNew.ToString) Then + Directory.CreateDirectory(DirectorioNew.ToString) + End If + NewName = String.Format("{0}{1}", NewName, IO.Path.GetExtension(DirectorioOld.ToString())) + DirectorioNew.Append(NewName) + + Me.Imagen = String.Format("PS/{0}", NewName) + If ObjPS.UpdatePSImagen(Me.CvePS, Me.Imagen) Then + My.Computer.FileSystem.MoveFile(DirectorioOld.ToString, DirectorioNew.ToString) + End If + + imgImagen.Attributes.Add("src", String.Format("/ashx/SIGWeb.ashx?Metodo=GetImg&r={0}", Extensiones.Encripta(Me.Imagen))) + hplImagen.Attributes.Add("href", String.Format("/ashx/SIGWeb.ashx?Metodo=GetImg&r={0}", Extensiones.Encripta(Me.Imagen))) + upGaleria.Update() + + Catch ex As Exception + OnError("Ocurrió un error al guardar la imagen", ex) + End Try + + ObjPS.Dispose() + RegistraScript("$(""#Modalupfotos"").modal(""hide"");initcarusel();") + TxtUpFotos.Text = "[]" + UpUpFotos.Update() + Next + + End Sub + + Protected Sub BtnEliminarFoto_Click(sender As Object, e As System.EventArgs) + + If (Me.CvePS > 0) Then + Dim ObjPS As New ClsProductosServicios + If ObjPS.UpdatePSImagen(Me.CvePS, "") Then + File.Delete(String.Format("{0}{1}", UsuarioActual.Empresa.Ruta, Me.Imagen)) + Me.Imagen = "" + imgImagen.Attributes.Add("src", "") + hplImagen.Attributes.Add("href", "") + RegistraScript("initcarusel();") + End If + ObjPS.Dispose() + + upGaleria.Update() + End If + + End Sub End Class diff --git a/Ventas/Ventas.aspx b/Ventas/Ventas.aspx index 7b66733c6..c2155b32e 100644 --- a/Ventas/Ventas.aspx +++ b/Ventas/Ventas.aspx @@ -979,6 +979,41 @@
    + + + +
    +
    + + Imagen del producto + +
    +
    +
    +
    +
    + +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    @@ -7617,7 +7652,7 @@ - <%-- + <%-- @@ -8806,7 +8841,7 @@ - -
    +
    @@ -242,6 +242,9 @@
    +
    + +
    @@ -258,11 +261,40 @@
    - - <%----%> + + + + + + + + + + + diff --git a/OI/Proyecto.aspx.cs b/OI/Proyecto.aspx.cs index 8d205aed7..2c4d1eaba 100644 --- a/OI/Proyecto.aspx.cs +++ b/OI/Proyecto.aspx.cs @@ -21,6 +21,7 @@ public partial class OI_Proyecto : ClsPaginas public List LCveUsuarioCCP { get { if (ViewState["LCveUsuarioCCP"] == null) { ViewState["LCveUsuarioCCP"] = new List(); } return (List)ViewState["LCveUsuarioCCP"]; } set { ViewState["LCveUsuarioCCP"] = value; } } public List LcveuserVisto { get { if (ViewState["LcveuserVisto"] == null) { ViewState["LcveuserVisto"] = new List(); } return (List)ViewState["LcveuserVisto"]; } set { ViewState["LcveuserVisto"] = value; } } + public const string iddivAgregarTema = "divModalAgregartema"; #endregion protected void Page_Load(object sender, EventArgs e) @@ -355,4 +356,48 @@ public partial class OI_Proyecto : ClsPaginas UpModalProyecto.Update(); } + + #region TEMAS + + protected void LnkAddTtemaB_Click(object sender, EventArgs e) + { + RegistraScript(string.Format("$('#{0}').modal()", iddivAgregarTema)); + } + + protected void BtnAgregarTema_Click(object sender, EventArgs e) + { + + using (ClsOIEventos objoi = new ClsOIEventos()) + { + if (objoi.AddRevisionesEventos(TxtTema.Text.Trim(), UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa)) + { + Alert(string.Format("El Tema \"{0}\" fue agregado con éxito.", TxtTema.Text.Trim()), ModExtensiones.TipoMensaje.MsgInformacion); + RegistraScript(string.Format("$('#{0}').modal('hide')", iddivAgregarTema)); + TxtTema.Text = ""; + set_GlobalDTOIRevision(UsuarioActual.CveEmpresa, objoi.DtResultados); + CargaTemas(); + + UpModalTema.Update(); + UpModalProyecto.Update(); + + } + else { Alert("Ocurrió un error al agregar la revisión. Por favor vuelva a intentar.", ModExtensiones.TipoMensaje.MsgError); } + + } + } + + private void CargaTemas() + { + DdlTema.ClearSelection(); + DdlTema.SelectedValue = null; + DdlTema.Items.Clear(); + + DdlTema.DataSource = get_GlobalDTOIRevision(UsuarioActual.CveEmpresa).FiltraParametros(string.Format("CveUsuario = {0}", UsuarioActual.CveUsuario)); + DdlTema.DataBind(); + DdlTema.Items.Insert(0, new ListItem("Seleccione", "-1")); + + } + + + #endregion } \ No newline at end of file diff --git a/OI/RepProyectos.aspx b/OI/RepProyectos.aspx index 90f168475..83a8f9e61 100644 --- a/OI/RepProyectos.aspx +++ b/OI/RepProyectos.aspx @@ -178,7 +178,7 @@
    -
    +
    @@ -193,6 +193,9 @@
    +
    + +
    @@ -208,6 +211,32 @@ + + + + diff --git a/OI/RepProyectos.aspx.cs b/OI/RepProyectos.aspx.cs index db1f74b1b..3efa822f3 100644 --- a/OI/RepProyectos.aspx.cs +++ b/OI/RepProyectos.aspx.cs @@ -10,6 +10,7 @@ public partial class OI_RepProyectos : ClsPaginas { #region Propiedades public const string iddivAgregarProyecto = "iddivAgregarProyecto"; + public const string iddivAgregarTema = "divModalAgregartema"; #endregion protected void Page_Load(object sender, EventArgs e) { @@ -21,9 +22,11 @@ public partial class OI_RepProyectos : ClsPaginas DdlPara.Items.Insert(0, new ListItem("Seleccione uno", "-1")); - DdlTema.DataSource = get_GlobalDTOIRevision(UsuarioActual.CveEmpresa).FiltraParametros(string.Format("CveUsuario = {0}", UsuarioActual.CveUsuario)); - DdlTema.DataBind(); - DdlTema.Items.Insert(0, new ListItem("Seleccione", "-1")); + + CargaTemas(); + //DdlTema.DataSource = get_GlobalDTOIRevision(UsuarioActual.CveEmpresa).FiltraParametros(string.Format("CveUsuario = {0}", UsuarioActual.CveUsuario)); + //DdlTema.DataBind(); + //DdlTema.Items.Insert(0, new ListItem("Seleccione", "-1")); cargar(); } } @@ -196,4 +199,50 @@ public partial class OI_RepProyectos : ClsPaginas } } + + #region TEMAS + + protected void LnkAddTtemaB_Click(object sender, EventArgs e) + { + RegistraScript(string.Format("$('#{0}').modal()", iddivAgregarTema)); + } + + protected void BtnAgregarTema_Click(object sender, EventArgs e) + { + + using (ClsOIEventos objoi = new ClsOIEventos()) + { + if (objoi.AddRevisionesEventos(TxtTema.Text.Trim(), UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa)) + { + Alert(string.Format("El Tema \"{0}\" fue agregado con éxito.", TxtTema.Text.Trim()), ModExtensiones.TipoMensaje.MsgInformacion); + RegistraScript(string.Format("$('#{0}').modal('hide')", iddivAgregarTema)); + TxtTema.Text = ""; + set_GlobalDTOIRevision(UsuarioActual.CveEmpresa, objoi.DtResultados); + CargaTemas(); + + UpModalTema.Update(); + UpModalProyecto.Update(); + + } + else { Alert("Ocurrió un error al agregar la revisión. Por favor vuelva a intentar.", ModExtensiones.TipoMensaje.MsgError); } + + } + } + + private void CargaTemas() + { + DdlTema.ClearSelection(); + DdlTema.SelectedValue = null; + DdlTema.Items.Clear(); + + DdlTema.DataSource = get_GlobalDTOIRevision(UsuarioActual.CveEmpresa).FiltraParametros(string.Format("CveUsuario = {0}", UsuarioActual.CveUsuario)); + DdlTema.DataBind(); + DdlTema.Items.Insert(0, new ListItem("Seleccione", "-1")); + + } + + + #endregion + + } \ No newline at end of file diff --git a/OI/TareaDetalle.aspx b/OI/TareaDetalle.aspx index 12319bede..593c67bb4 100644 --- a/OI/TareaDetalle.aspx +++ b/OI/TareaDetalle.aspx @@ -655,6 +655,7 @@
    + diff --git a/Ventas/CatPS.aspx.vb b/Ventas/CatPS.aspx.vb index aa09a535e..4b8a2f3dd 100644 --- a/Ventas/CatPS.aspx.vb +++ b/Ventas/CatPS.aspx.vb @@ -58,6 +58,10 @@ Partial Class CatPS Ddlclasificacion.DataSource = GlobalDTClasificaciones(UsuarioActual.CveEmpresa).FiltraParametros(String.Format(" (UsoClasificacion = {0} OR {0} = -1)", DdlTipoClasificacion.SelectedValue)) Ddlclasificacion.DataBind() Ddlclasificacion.Items.Insert(0, New ListItem("Todos", "-1")) + + DdlMarcas.DataSource = GlobalDTGralMarcas(UsuarioActual.CveEmpresa) + DdlMarcas.DataBind() + DdlMarcas.Items.Insert(0, New ListItem("Todos", "-1")) End Sub Public Sub CargaDatos() @@ -70,7 +74,12 @@ Partial Class CatPS If TxtNombre.Text.Trim = "" Then Nombre = "-1" Else Nombre = TxtNombre.Text.ToUpper.Trim Dim ObjPS As New ClsProductosServicios - If ObjPS.GetPSLite(Ddlclasificacion.SelectedValue.ToEntero, UsuarioActual.Empresa.CveEmpresa, Codigo, CodigoBarras, Nombre, DdlAplicaVenta.SelectedValue.ToEntero, DdlEstado.SelectedValue.ToEntero, DdlCveTipoPS.SelectedValue.ToEntero, DdlTipoClasificacion.SelectedValue.ToEntero) Then + If ObjPS.GetPSLite(Ddlclasificacion.SelectedValue.ToEntero, UsuarioActual.Empresa.CveEmpresa, Codigo, CodigoBarras, Nombre, + pAplicaParaVenta:=DdlAplicaVenta.SelectedValue.ToEntero, + pEstado:=DdlEstado.SelectedValue.ToEntero, + CveTipoPS:=DdlCveTipoPS.SelectedValue.ToEntero, + UsoClasificacion:=DdlTipoClasificacion.SelectedValue.ToEntero, + CveMarca:=DdlMarcas.SelectedValue.ToEntero) Then DtDatos = ObjPS.DtResultados GvDatos.DataSource = DtDatos Else From 88a8a42b377ec93af5b1d6c17d177b199473ea35 Mon Sep 17 00:00:00 2001 From: Jonathan Alexis Perez Morales Date: Fri, 22 Mar 2024 12:48:14 -0700 Subject: [PATCH 095/197] --Descarga de etiquetas de busqueda de productos --- Ventas/PopUpBuscarPs.aspx | 5 ++ Ventas/PopUpBuscarPs.aspx.vb | 151 ++++++++++++++++++++++++++++++++--- 2 files changed, 145 insertions(+), 11 deletions(-) diff --git a/Ventas/PopUpBuscarPs.aspx b/Ventas/PopUpBuscarPs.aspx index 7a4a5260e..36e5c3ac4 100644 --- a/Ventas/PopUpBuscarPs.aspx +++ b/Ventas/PopUpBuscarPs.aspx @@ -102,6 +102,11 @@ + + + + +
    diff --git a/Ventas/PopUpBuscarPs.aspx.vb b/Ventas/PopUpBuscarPs.aspx.vb index ba278141d..99bdee9cb 100644 --- a/Ventas/PopUpBuscarPs.aspx.vb +++ b/Ventas/PopUpBuscarPs.aspx.vb @@ -3,7 +3,9 @@ Option Strict On Imports System.Data Imports Extensiones - +Imports Microsoft.Reporting.WebForms +Imports ZXing + Partial Class PopUpBuscarPs Inherits ClsPaginas @@ -24,8 +26,8 @@ Partial Class PopUpBuscarPs End If End If - End Sub - + End Sub + #Region " INICIALIZA VALORES " Private Sub CargaClasificaciones() Ddlclasificacion.DataSource = GlobalDTClasificaciones(UsuarioActual.CveEmpresa) @@ -44,9 +46,9 @@ Partial Class PopUpBuscarPs DdlCompuesto.Items.Insert(0, New ListItem("Todos", "-1")) End If DdlCompuesto.Items.Insert(0, New ListItem("Todos", "-1")) - End Sub + End Sub #End Region - + #Region " CARGA DATOS " Protected Sub BtnFiltrar_Click(sender As Object, e As EventArgs) CargaDatos() @@ -79,24 +81,31 @@ Partial Class PopUpBuscarPs GvDatos.DataBind() GvDatos.UseAccessibleHeader = True + + If UsuarioActual.Empresa.Funcionalidad(109) = "1" Then + GvDatos.Columns(4).Visible = True + End If Else Alert("Asigne un valor a cualquiera de los filtros", TipoMensaje.MsgAdvertencia) End If - End Sub + End Sub #End Region - + #Region " GV DATOS " Protected Sub GvDatos_RowDataBound(sender As Object, e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GvDatos.RowDataBound If e.Row.RowType = DataControlRowType.DataRow Then Try - e.Row.FCLiteral("LnkPs").Text = String.Format("
    {0}{1}
    ", "", e.Row.DBCampo("Ps")) + e.Row.FCLiteral("LnkPs").Text = String.Format("", "", e.Row.DBCampo("Ps")) + If UsuarioActual.Empresa.Funcionalidad(109) = "1" Then + ScriptManager.GetCurrent(Me).RegisterPostBackControl(e.Row.FCLinkButton("LnkGenerarEtiqueta")) + End If Catch ex As Exception Dim exexex As String = ex.Message End Try End If - End Sub + End Sub #End Region - + Private Function ValidarUnFiltroSeleccionado() As Boolean If TxtCodigo.Text.Trim <> String.Empty Then Return True If TxtCodigoBarras.Text.Trim <> String.Empty Then Return True @@ -109,7 +118,127 @@ Partial Class PopUpBuscarPs If DdlCompuesto.SelectedValue.ToEntero > 0 Then Return True Return False + End Function + + Protected Sub LnkGenerarEtiqueta_Click(sender As Object, e As EventArgs) + Dim GvRow As GridViewRow = DirectCast(DirectCast(sender, LinkButton).NamingContainer, GridViewRow) + + Dim CvePrecioListaPredeterminada = GlobalDTPrecioListas(UsuarioActual.CveEmpresa).FiltroPrimeroValor("CvePrecioLista", "Predeterminada = True").ToEntero() + Dim DtPrecios As DataTable = Nothing + + Dim ObjVentas As New ClsProductosServicios + If ObjVentas.GetPSPrecios(CvePrecioListaPredeterminada, GvRow.DataKey("CvePs").ToString()) AndAlso ObjVentas.DtResultados IsNot Nothing AndAlso ObjVentas.DtResultados.Rows.Count > 0 Then + DtPrecios = ObjVentas.DtResultados.Copy() + End If + ObjVentas.Dispose() + + If DtPrecios IsNot Nothing Then + + DtPrecios.Columns.Add(New DataColumn("CBBase64", GetType(String))) + + For Each Row As DataRow In DtPrecios.Rows + Row("CBBase64") = Convert.ToBase64String(GeneraCodigoQR(Row("CodigoBarras").ToString(), 40, 150, 0, "CODE_39", True)) + Next + + Dim DirectorioArchivo As String = "Empresas/Grales/Formatos/Etiqueta.mrt" + If System.IO.File.Exists(UsuarioActual.Empresa.Ruta + "Formatos/Etiqueta.mrt") Then + DirectorioArchivo = UsuarioActual.Empresa.Ruta + "Formatos/Etiqueta.mrt" + End If + Dim params As New List(Of ReportParameter) + + ImprimirPDFStimul(DirectorioArchivo, DtPrecios, params, "Precios") + End If + + End Sub + + Private Function GeneraCodigoQR(CodigoBarras As String, Alto As Integer, Largo As Integer, Margen As Integer, Formato As String, Optional PureBacode As Boolean = False) As Byte() + + Dim barcodeWriter As New BarcodeWriter + Dim opciones As New ZXing.Common.EncodingOptions + Dim FormatoBar As New BarcodeFormat + 'Dim Respuesta As Byte() + + opciones.Height = Alto + opciones.Width = Largo + opciones.Margin = Margen + opciones.PureBarcode = PureBacode + barcodeWriter.Options = opciones + + Select Case Formato + Case "All_1D" + barcodeWriter.Format = BarcodeFormat.All_1D + Exit Select + Case "AZTEC" + barcodeWriter.Format = BarcodeFormat.AZTEC + Exit Select + Case "CODABAR" + barcodeWriter.Format = BarcodeFormat.CODABAR + Exit Select + Case "CODE_128" + barcodeWriter.Format = BarcodeFormat.CODE_128 + Exit Select + Case "CODE_39" + barcodeWriter.Format = BarcodeFormat.CODE_39 + Exit Select + Case "CODE_93" + barcodeWriter.Format = BarcodeFormat.CODE_93 + Exit Select + Case "DATA_MATRIX" + barcodeWriter.Format = BarcodeFormat.DATA_MATRIX + Exit Select + Case "EAN_13" + barcodeWriter.Format = BarcodeFormat.EAN_13 + Exit Select + Case "EAN_8" + barcodeWriter.Format = BarcodeFormat.EAN_8 + Exit Select + Case "IMB" + barcodeWriter.Format = BarcodeFormat.IMB + Exit Select + Case "ITF" + barcodeWriter.Format = BarcodeFormat.ITF + Exit Select + Case "MAXICODE" + barcodeWriter.Format = BarcodeFormat.MAXICODE + Exit Select + Case "MSI" + barcodeWriter.Format = BarcodeFormat.MSI + Exit Select + Case "PDF_417" + barcodeWriter.Format = BarcodeFormat.PDF_417 + Exit Select + Case "PLESSEY" + barcodeWriter.Format = BarcodeFormat.PLESSEY + Exit Select + Case "QR_CODE" + barcodeWriter.Format = BarcodeFormat.QR_CODE + Exit Select + Case "RSS_14" + barcodeWriter.Format = BarcodeFormat.RSS_14 + Exit Select + Case "RSS_EXPANDED" + barcodeWriter.Format = BarcodeFormat.RSS_EXPANDED + Exit Select + Case "UPC_A" + barcodeWriter.Format = BarcodeFormat.UPC_A + Exit Select + Case "UPC_E" + barcodeWriter.Format = BarcodeFormat.UPC_E + Exit Select + Case "UPC_EAN_EXTENSION" + barcodeWriter.Format = BarcodeFormat.UPC_EAN_EXTENSION + Exit Select + + End Select + + Dim imgCod As Drawing.Bitmap = barcodeWriter.Write(CodigoBarras) + Dim memoriStream As New System.IO.MemoryStream + imgCod.Save(memoriStream, Drawing.Imaging.ImageFormat.Bmp) + + 'Respuesta = Convert.ToBase64String(memoriStream.ToArray()) + + Return memoriStream.ToArray() + End Function - End Class From caaba87c35f8b088e456f3082126baaab9aa2948 Mon Sep 17 00:00:00 2001 From: Jonathan Alexis Perez Morales Date: Fri, 22 Mar 2024 13:07:25 -0700 Subject: [PATCH 096/197] Ferretera. --Impresion directa de facturas y cotizaciones a credito --Condiciones de entrega e impresion para entrega a domicilio en cajas --- Sistemas/CatSesiones.aspx | 3 ++- Sistemas/CatSesiones.aspx.vb | 7 +++++-- Ventas/PVCobranza.aspx | 4 ++++ Ventas/PVCobranza.aspx.vb | 19 +++++++++++++++++-- Ventas/Ventas.aspx.vb | 20 +++++++++++++++----- 5 files changed, 43 insertions(+), 10 deletions(-) diff --git a/Sistemas/CatSesiones.aspx b/Sistemas/CatSesiones.aspx index 4481f93b4..1bb7ae18c 100644 --- a/Sistemas/CatSesiones.aspx +++ b/Sistemas/CatSesiones.aspx @@ -66,7 +66,8 @@ - + +    diff --git a/Sistemas/CatSesiones.aspx.vb b/Sistemas/CatSesiones.aspx.vb index ef6bbf838..3211d4219 100644 --- a/Sistemas/CatSesiones.aspx.vb +++ b/Sistemas/CatSesiones.aspx.vb @@ -109,7 +109,8 @@ Partial Class Sistemas_CatSesiones cargaAC() ElseIf DdlVariable.SelectedItem.Value = "GlobalDTSATUsosCFDI" Then CargaUsosCFDI() - + ElseIf DdlVariable.SelectedItem.Value = "GlobalDTVtaCondicionesEntrega" Then + CargaCondicionesEntrega() End If @@ -289,7 +290,9 @@ Partial Class Sistemas_CatSesiones 'Fin Carga Usuarios End Sub - + Private Sub CargaCondicionesEntrega() + GlobalDTVtaCondicionesEntrega(UsuarioActual.CveEmpresa) = Nothing + End Sub Private Sub CargaProductosServiciosSimplificado() GlobalDTPSSimplificado(UsuarioActual.CveEmpresa) = Nothing diff --git a/Ventas/PVCobranza.aspx b/Ventas/PVCobranza.aspx index c6e6fc216..b24ece4b9 100644 --- a/Ventas/PVCobranza.aspx +++ b/Ventas/PVCobranza.aspx @@ -300,6 +300,10 @@ + +   diff --git a/Ventas/PVCobranza.aspx.vb b/Ventas/PVCobranza.aspx.vb index 6ac82a56e..0b963feab 100644 --- a/Ventas/PVCobranza.aspx.vb +++ b/Ventas/PVCobranza.aspx.vb @@ -220,8 +220,13 @@ Partial Class Ventas_PVCobranza If e.Row.RowType = DataControlRowType.DataRow Then If e.Row.DBCampo("CveUsuarioCobranza") <> "" Then - e.Row.BackColor = Drawing.ColorTranslator.FromHtml("#3598dc") - 'e.Row.CssClass = "blue-madison" + e.Row.BackColor = Drawing.ColorTranslator.FromHtml("#3598dc") + 'e.Row.CssClass = "blue-madison" + End If + + If e.Row.DBCampo("CveCondicionEntrega").ToEntero() = 9 Then + e.Row.FCLinkButton("LnkImprimir").Visible = True + ScriptManager.GetCurrent(Me).RegisterPostBackControl(e.Row.FCLinkButton("LnkImprimir")) End If End If End Sub @@ -598,4 +603,14 @@ Partial Class Ventas_PVCobranza End If ObjVentas.Dispose() End Sub + Protected Sub LnkImprimir_Click(sender As Object, e As EventArgs) + Dim GvRow As GridViewRow = DirectCast(DirectCast(sender, LinkButton).NamingContainer, GridViewRow) + + Dim CveVenta As Integer = GvRow.DataKey("CveVenta").ToEntero() + + If CveVenta > 0 Then + ImpresionDirectaPDF(CveVenta) + End If + + End Sub End Class diff --git a/Ventas/Ventas.aspx.vb b/Ventas/Ventas.aspx.vb index d027951b0..1e86749e0 100644 --- a/Ventas/Ventas.aspx.vb +++ b/Ventas/Ventas.aspx.vb @@ -2644,7 +2644,10 @@ Partial Class Ventas CargaMonedas() CargaVendedores() CargarAlmacenes() - 'CargaFormaEntrega() + If UsuarioActual.Empresa.Funcionalidad(109) = "1" Then + CargaFormaEntrega() + End If + CargaCuentasTerminal() 'CargaDdlNCPS() 'CargarCamiones() @@ -4972,6 +4975,11 @@ Partial Class Ventas ViewState("CveSubProyectoVenta") = DbRowVenta("CveSubProyecto").ToString().ToEntero() + If DbRowVenta("CveCondicionEntrega").ToString().ToEntero() > 0 Then + DdlFormaEntrega.SelectedValueExist(DbRowVenta("CveCondicionEntrega").ToString()) + DdlFormaEntrega.Enabled = False + End If + Me.CveEstatusFacturaPadre = DbRowVenta("CveEstatusFacturaPadre").ToString().ToEntero() If UsuarioActual.Empresa.Funcionalidad(705) = "1" Then @@ -10914,6 +10922,12 @@ Partial Class Ventas MensajeAlert.Clear() Try + If UsuarioActual.Empresa.Funcionalidad(109) = "1" Then + If ObjFactura.TipoDocto.Contiene("Ing", "Cot") AndAlso ObjFactura.CondicionesPago = 1 Then + ImpresionDirectaPDF() + End If + End If + 'LIMPIA CONDICIONES DE PAGO - CONTADO RBLPago.SelectedValue = "1" LimpiaEscondeContado() @@ -10923,10 +10937,6 @@ Partial Class Ventas OnError("Ocurrió un error al limpiar los datos", ex) End Try - 'If UsuarioActual.Empresa.Funcionalidad(109) = "1" Then - ' ImpresionDirectaPDF() - 'End If - Else ObjVentas.RollBack() From b1f6159acc858fc8c2dab2df5492c95bb31cf625 Mon Sep 17 00:00:00 2001 From: Jonathan Alexis Perez Morales Date: Fri, 22 Mar 2024 15:52:57 -0700 Subject: [PATCH 097/197] --Fix visualizacion de descuentos en ventas guardadas --- Ventas/Ventas.aspx.vb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Ventas/Ventas.aspx.vb b/Ventas/Ventas.aspx.vb index 1e86749e0..fe6678a34 100644 --- a/Ventas/Ventas.aspx.vb +++ b/Ventas/Ventas.aspx.vb @@ -37777,7 +37777,7 @@ Partial Class Ventas End Sub Private Sub RecalculaPrecios() - If TmpDT IsNot Nothing Then + If TmpDT IsNot Nothing AndAlso (CveVenta <= 0 OrElse EsCreaApartirDe OrElse ModalidadEdicion) Then For Each Row As DataRow In TmpDT.Rows Dim Cantidad As Decimal = Row("Cantidad").ToString().ToDecimal() Dim CveClasificacion As Integer = Row("CveClasificacion").ToString().ToEntero From 95abda00e9f7e8b51a336b445677d8252318b97f Mon Sep 17 00:00:00 2001 From: Jonathan Alexis Perez Morales Date: Fri, 22 Mar 2024 15:53:16 -0700 Subject: [PATCH 098/197] --Fix asignacion de cuentas, saldos iniciales --- General/SaldosIniciales.aspx.vb | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/General/SaldosIniciales.aspx.vb b/General/SaldosIniciales.aspx.vb index dd3da1c97..25f946837 100644 --- a/General/SaldosIniciales.aspx.vb +++ b/General/SaldosIniciales.aspx.vb @@ -3189,13 +3189,13 @@ Partial Class General_SaldosIniciales If Not ErrorProceso Then DTAnticipoCliente.AcceptChanges() End If - End If + If Not AsignacionCuenta(ObjConta, 66, CveCuentaContable, -1, -1, CveCliente, -1, UsuarioActual.CveEmpresa, -1) Then + ErrorProceso = True + Alert("Se presento un error al guardar en asignaciones", TipoMensaje.MsgAdvertencia) + Exit For + End If - If Not AsignacionCuenta(ObjConta, 66, CveCuentaContable, -1, -1, CveCliente, -1, UsuarioActual.CveEmpresa, -1) Then - ErrorProceso = True - Alert("Se presento un error al guardar en asignaciones", TipoMensaje.MsgAdvertencia) - Exit For End If Dim CvePrePoliza As Integer = ObjConta.AddPrePolizas("Anticipo/Cliente/SaldoInicial", 24, Importe, Importe, CveMoneda, Fecha, FolioStr, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa) From f158ec5fc62f8098ddeaf38b6ec0a646296e4d34 Mon Sep 17 00:00:00 2001 From: rrene Date: Fri, 22 Mar 2024 16:47:45 -0700 Subject: [PATCH 099/197] -- permitir seleccionar anticipos en "pago como devolucion" --- Ventas/Ventas.aspx.vb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Ventas/Ventas.aspx.vb b/Ventas/Ventas.aspx.vb index d027951b0..157782d49 100644 --- a/Ventas/Ventas.aspx.vb +++ b/Ventas/Ventas.aspx.vb @@ -30953,7 +30953,7 @@ Partial Class Ventas If UsuarioActual.Empresa.Funcionalidad(109) = "1" Then If DdlTipoComprobante.SelectedValue.Contiene("Ing", "Rem") AndAlso DdlTipoAmortizacionAnticipo.SelectedValue = "4" Then - Dim DtMovtos As DataTable = Me.TmpDTAnticiposNCIxCCliente.FiltraParametros($"Saldo > 0 And SaldoSubtotal > 0 {If(CveVenta < 0, $"AND Tipo IN('NC','RNC') ", "")}") + Dim DtMovtos As DataTable = Me.TmpDTAnticiposNCIxCCliente.FiltraParametros($"Saldo > 0 And SaldoSubtotal > 0 {If(CveVenta < 0, $"AND Tipo IN('NC','RNC','Ant') ", "")}") divAmortizacionTipoRelacion.Visible = False GVAnticipos.DataSource = DtMovtos GVAnticipos.DataBind() From 03f236dbac633c7c5c0bfba3913e36a6c29e1a23 Mon Sep 17 00:00:00 2001 From: rrene Date: Fri, 22 Mar 2024 16:54:55 -0700 Subject: [PATCH 100/197] =?UTF-8?q?--=20cambio=20de=20Ant=20a=20IxC,=20en?= =?UTF-8?q?=20filtrado=20de=20aplicaci=C3=B3n=20de=20saldos=20a=20favor?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Ventas/Ventas.aspx.vb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Ventas/Ventas.aspx.vb b/Ventas/Ventas.aspx.vb index 157782d49..7daa82a00 100644 --- a/Ventas/Ventas.aspx.vb +++ b/Ventas/Ventas.aspx.vb @@ -30953,7 +30953,7 @@ Partial Class Ventas If UsuarioActual.Empresa.Funcionalidad(109) = "1" Then If DdlTipoComprobante.SelectedValue.Contiene("Ing", "Rem") AndAlso DdlTipoAmortizacionAnticipo.SelectedValue = "4" Then - Dim DtMovtos As DataTable = Me.TmpDTAnticiposNCIxCCliente.FiltraParametros($"Saldo > 0 And SaldoSubtotal > 0 {If(CveVenta < 0, $"AND Tipo IN('NC','RNC','Ant') ", "")}") + Dim DtMovtos As DataTable = Me.TmpDTAnticiposNCIxCCliente.FiltraParametros($"Saldo > 0 And SaldoSubtotal > 0 {If(CveVenta < 0, $"AND Tipo IN('NC','RNC','IxC') ", "")}") divAmortizacionTipoRelacion.Visible = False GVAnticipos.DataSource = DtMovtos GVAnticipos.DataBind() From 96fb89624f5979c7555ff759e5185881240b4311 Mon Sep 17 00:00:00 2001 From: Jonathan Alexis Perez Morales Date: Fri, 22 Mar 2024 17:17:37 -0700 Subject: [PATCH 101/197] --Descarga directa de etiquetas --- Ventas/ActualizarPrecios.aspx | 4 + Ventas/ActualizarPrecios.aspx.vb | 133 ++++++++++++++++++++++++++++++ Ventas/PopUpBuscarPs.aspx | 15 ++-- Ventas/PopUpBuscarPs.aspx.vb | 18 +++- Ventas/ProductosServicios.aspx | 6 +- Ventas/ProductosServicios.aspx.vb | 12 ++- 6 files changed, 178 insertions(+), 10 deletions(-) diff --git a/Ventas/ActualizarPrecios.aspx b/Ventas/ActualizarPrecios.aspx index 5eb90535c..16b94cc0f 100644 --- a/Ventas/ActualizarPrecios.aspx +++ b/Ventas/ActualizarPrecios.aspx @@ -766,7 +766,11 @@
    + - + -
    -
    -
    - -
    - - - - - - - - Fecha - - - - - - Fecha Agenda - - - - - - Usuario - - - - - - Descripción - - - - - - Archivo - - - - - - - - - - - - - - -
    - - - -
    - - <%-- MODAL BITACORA --%> - - - - - - <%-- FIN MODAL BITACORA --%> - -
    - - - - - diff --git a/Ventas/VentasMedicas.aspx.vb b/Ventas/VentasMedicas.aspx.vb deleted file mode 100644 index 2fa15c65e..000000000 --- a/Ventas/VentasMedicas.aspx.vb +++ /dev/null @@ -1,12763 +0,0 @@ -Option Explicit On -Option Strict On -Option Infer On - -Imports System.Data -Imports System.Data.SqlClient -Imports System.Diagnostics -Imports System.IO -Imports System.Net.Http -Imports System.Security.Cryptography.X509Certificates -Imports ADSNetLibrary.SIGAPI.Models.CRM.Request -Imports ADSNetLibrary.SIGAPI.Services.CRM -Imports ADSTimbrado - -Imports Extensiones -Imports Microsoft.Reporting.WebForms -Imports Newtonsoft.Json.Linq - - -Partial Class VentasMedicas - Inherits ClsPaginas - -#Region "Propiedades" - Private Const NumeroDecimales As Integer = 2 - - Dim ColumnaDescuento As Integer = 10 - Dim ColumnaPredial As Integer = 11 - Dim ColumnaIVA As Integer = 12 - Dim ColumnaIEPS As Integer = 13 - Dim ColumnaRetIVA As Integer = 14 - Dim ColumnaRetISR As Integer = 15 - Dim ColumnaEditar As Integer = 17 - Dim ColumnaEliminar As Integer = 18 - - 'Factura de ventas - Dim DTConceptos As DataTable - Private Property Version As String - Private Property Fecha As String - Private Property SerieXML As String - Private Property FolioXML As String - Private Property SubTotal As Decimal - Private Property Total As Decimal = 0 - ' Private Property Descuentos As Decimal = 0 - Private Property EmisorRFC As String - Private Property ReceptorRFC As String - Private Property TrasladoIVA As Decimal = 0 - Private Property RetencionIVA As Decimal = 0 - Private Property RetencionISR As Decimal = 0 - Private Property TrasladoIEPS As Decimal = 0 - Private Property TFDUUID As String = "" - Private Property Moneda As String = "" - Private Property TipoComprobante As String = "" - Private Property OtrosImpuestos As Decimal = 0 - Private Property TotalRetenciones As Decimal = 0 - Private Property SumaTotalRetenciones As Decimal = 0 - Private Property TotalTraslados As Decimal = 0 - Private Property SumaTotalTraslados As Decimal = 0 - Private Property SubTotalConceptos As Decimal = 0 - Private Property Redondeo As Decimal = 0 - Private Property NumRow As Integer - Private Property EsSupervisor As Boolean = False - Private Property MandarCorreoSupervisor As Boolean = False - Private ReadOnly Property ExFolioFactura As Boolean - Get - Return CBool(ViewState("ExFolioFactura")) - End Get - End Property - Private Property CveFactura As Integer - Get - Return ViewState("CveFactura").ToString().ToEntero() - End Get - Set(value As Integer) - ViewState("CveFactura") = value - End Set - End Property - - Private Property CuentasContablesInvalidas As StringBuilder - Get - Return CType(ViewState("CuentasContablesInvalidas"), StringBuilder) - End Get - Set(value As StringBuilder) - ViewState("CuentasContablesInvalidas") = value - End Set - End Property - - 'Local - Private Property DtPorcentajeMarcas As DataTable - Get - Return If(IsNothing(ViewState("DtPorcentajeMarcas")), Nothing, CType(ViewState("DtPorcentajeMarcas"), DataTable)) - End Get - Set(value As DataTable) - ViewState("DtPorcentajeMarcas") = value - End Set - End Property - Private Property TmpDT As DataTable - Get - Return If(IsNothing(ViewState("TmpDT")), Nothing, CType(ViewState("TmpDT"), DataTable)) - End Get - Set(value As DataTable) - ViewState("TmpDT") = value - End Set - End Property - Private Property TmpDTDescNC As DataTable - Get - Return If(IsNothing(ViewState("TmpDTDescNC")), Nothing, CType(ViewState("TmpDTDescNC"), DataTable)) - End Get - Set(value As DataTable) - ViewState("TmpDTDescNC") = value - End Set - End Property - Private Property TmpDTDescNCBonificacion As DataTable - Get - Return If(IsNothing(ViewState("TmpDTDescNCBonificacion")), Nothing, CType(ViewState("TmpDTDescNCBonificacion"), DataTable)) - End Get - Set(value As DataTable) - ViewState("TmpDTDescNCBonificacion") = value - End Set - End Property - Private Property TmpDTBonificacion As DataTable - Get - Return If(IsNothing(ViewState("TmpDTBonificacion")), Nothing, CType(ViewState("TmpDTBonificacion"), DataTable)) - End Get - Set(value As DataTable) - ViewState("TmpDTBonificacion") = value - End Set - End Property - Private Property TmpDTRNCBonificacionesCliente As DataTable - Get - Return If(IsNothing(ViewState("TmpDTRNCBonificacionesCliente")), Nothing, CType(ViewState("TmpDTRNCBonificacionesCliente"), DataTable)) - End Get - Set(value As DataTable) - ViewState("TmpDTRNCBonificacionesCliente") = value - End Set - End Property - Private Property TmpDTRNCBonificacionesSeleccionadas As DataTable - Get - Return If(IsNothing(ViewState("TmpDTRNCBonificacionesSeleccionadas")), Nothing, CType(ViewState("TmpDTRNCBonificacionesSeleccionadas"), DataTable)) - End Get - Set(value As DataTable) - ViewState("TmpDTRNCBonificacionesSeleccionadas") = value - End Set - End Property - Private Property TmpDTRNCDetalle As DataTable - Get - Return If(IsNothing(ViewState("TmpDTRNCDetalle")), Nothing, CType(ViewState("TmpDTRNCDetalle"), DataTable)) - End Get - Set(value As DataTable) - ViewState("TmpDTRNCDetalle") = value - End Set - End Property - Private Property TmpDTRNCDetalleSelecciondas As DataTable - Get - Return If(IsNothing(ViewState("TmpDTRNCDetalleSelecciondas")), Nothing, CType(ViewState("TmpDTRNCDetalleSelecciondas"), DataTable)) - End Get - Set(value As DataTable) - ViewState("TmpDTRNCDetalleSelecciondas") = value - End Set - End Property - - Private Property TmpDTRNCBonificacionDetalle As DataTable - Get - Return If(IsNothing(ViewState("TmpDTRNCBonificacionDetalle")), Nothing, CType(ViewState("TmpDTRNCBonificacionDetalle"), DataTable)) - End Get - Set(value As DataTable) - ViewState("TmpDTRNCBonificacionDetalle") = value - End Set - End Property - - Private Property TmpDTRNCBonificacionDetalleSeleccionadas As DataTable - Get - Return If(IsNothing(ViewState("TmpDTRNCBonificacionDetalleSeleccionadas")), Nothing, CType(ViewState("TmpDTRNCBonificacionDetalleSeleccionadas"), DataTable)) - End Get - Set(value As DataTable) - ViewState("TmpDTRNCBonificacionDetalleSeleccionadas") = value - End Set - End Property - - Private Property TmpDTError As DataTable - Get - Return If(IsNothing(ViewState("TmpDTError")), Nothing, CType(ViewState("TmpDTError"), DataTable)) - End Get - Set(value As DataTable) - ViewState("TmpDTError") = value - End Set - End Property - - Private Property TmpDTImpuestos As DataTable - Get - Return If(IsNothing(ViewState("TmpDTImpuestos")), Nothing, CType(ViewState("TmpDTImpuestos"), DataTable)) - End Get - Set(value As DataTable) - ViewState("TmpDTImpuestos") = value - End Set - End Property - Private Property TmpDTImpuestosIVAIEPS As DataTable - Get - Return If(IsNothing(ViewState("TmpDTImpuestosIVAIEPS")), Nothing, CType(ViewState("TmpDTImpuestosIVAIEPS"), DataTable)) - End Get - Set(value As DataTable) - ViewState("TmpDTImpuestosIVAIEPS") = value - End Set - End Property - Private Property TmpDTDocumentosRelacionados As DataTable - Get - Return If(IsNothing(ViewState("TmpDTDocumentosRelacionados")), Nothing, CType(ViewState("TmpDTDocumentosRelacionados"), DataTable)) - End Get - Set(value As DataTable) - ViewState("TmpDTDocumentosRelacionados") = value - End Set - End Property - Private Property TmpDTNCVinculadas As DataTable - Get - Return If(IsNothing(ViewState("TmpDTNCVinculadas")), Nothing, CType(ViewState("TmpDTNCVinculadas"), DataTable)) - End Get - Set(value As DataTable) - ViewState("TmpDTNCVinculadas") = value - End Set - End Property - Private Property TmpDTEnvioDireccion As DataTable - Get - Return If(IsNothing(ViewState("TmpDTEnvioDireccion")), Nothing, CType(ViewState("TmpDTEnvioDireccion"), DataTable)) - End Get - Set(value As DataTable) - ViewState("TmpDTEnvioDireccion") = value - End Set - End Property - Private Property TmpDTDireccionCP As DataTable - Get - Return If(IsNothing(ViewState("TmpDTDireccionCP")), Nothing, CType(ViewState("TmpDTDireccionCP"), DataTable)) - End Get - Set(value As DataTable) - ViewState("TmpDTDireccionCP") = value - End Set - End Property - - Private Property IdPoliza As Integer - Get - Return ViewState("IdPoliza").ToString().ToEntero() - End Get - Set(value As Integer) - ViewState("IdPoliza") = value - End Set - End Property - Private Property CveAlmacenDevolucion As Integer - Get - Return ViewState("CveAlmacenDevolucion").ToString().ToEntero() - End Get - Set(value As Integer) - ViewState("CveAlmacenDevolucion") = value - End Set - End Property - - Private Property EraCotizacion As Integer - Get - Return ViewState("EraCotizacion").ToString().ToEntero() - End Get - Set(value As Integer) - ViewState("EraCotizacion") = value - End Set - End Property - Private Property FacturaMateriales As Integer - Get - Return ViewState("FacturaMateriales").ToString().ToEntero() - End Get - Set(value As Integer) - ViewState("FacturaMateriales") = value - End Set - End Property - Private Property TmpDTDeducciones As DataTable - Get - Return If(IsNothing(ViewState("TmpDTDeducciones")), Nothing, CType(ViewState("TmpDTDeducciones"), DataTable)) - End Get - Set(value As DataTable) - ViewState("TmpDTDeducciones") = value - End Set - End Property - - Private Property TmpDTComplementos As DataTable - Get - Return If(IsNothing(ViewState("TmpDTComplementos")), Nothing, CType(ViewState("TmpDTComplementos"), DataTable)) - End Get - Set(value As DataTable) - ViewState("TmpDTComplementos") = value - End Set - End Property - Private Property DTmpC As DataTable - Get - Return If(IsNothing(ViewState("DTmpC")), Nothing, CType(ViewState("DTmpC"), DataTable)) - End Get - Set(value As DataTable) - ViewState("DTmpC") = value - End Set - End Property - Private Property DTmpF As DataTable - Get - Return If(IsNothing(ViewState("DTmpF")), Nothing, CType(ViewState("DTmpF"), DataTable)) - End Get - Set(value As DataTable) - ViewState("DTmpF") = value - End Set - End Property - Private Property DTSucursal As DataTable - Get - Return If(IsNothing(ViewState("DTSucursal")), Nothing, CType(ViewState("DTSucursal"), DataTable)) - End Get - Set(value As DataTable) - ViewState("DTSucursal") = value - End Set - End Property - Private Property DTOrdenesCompra As DataTable - Get - Return If(IsNothing(ViewState("DTOrdenesCompra")), Nothing, CType(ViewState("DTOrdenesCompra"), DataTable)) - End Get - Set(value As DataTable) - ViewState("DTOrdenesCompra") = value - End Set - End Property - Private Property DTOrdenesCompraPS As DataTable - Get - Return If(IsNothing(ViewState("DTOrdenesCompraPS")), Nothing, CType(ViewState("DTOrdenesCompraPS"), DataTable)) - End Get - Set(value As DataTable) - ViewState("DTOrdenesCompraPS") = value - End Set - End Property - Private Property DtOCTmpDT As DataTable - Get - Return If(IsNothing(ViewState("DtOCTmpDT")), Nothing, CType(ViewState("DtOCTmpDT"), DataTable)) - End Get - Set(value As DataTable) - ViewState("DtOCTmpDT") = value - End Set - End Property - Private Property DTRemisiones As DataTable - Get - Return If(IsNothing(ViewState("DTRemisiones")), Nothing, CType(ViewState("DTRemisiones"), DataTable)) - End Get - Set(value As DataTable) - ViewState("DTRemisiones") = value - End Set - End Property - Private Property ListaDescuentos As List(Of Modelos.VentaDescuentos) - Get - Return If(IsNothing(ViewState("ListaDescuentos")), Nothing, CType(ViewState("ListaDescuentos"), List(Of Modelos.VentaDescuentos))) - End Get - Set(value As List(Of Modelos.VentaDescuentos)) - ViewState("ListaDescuentos") = value - End Set - End Property - Private Property RemisionesLista As List(Of Integer) - Get - Return If(IsNothing(ViewState("RemisionesLista")), Nothing, CType(ViewState("RemisionesLista"), List(Of Integer))) - End Get - Set(value As List(Of Integer)) - ViewState("RemisionesLista") = value - End Set - End Property - Private Property ListaRemisionesNC As List(Of Modelos.Factura) - Get - Return If(IsNothing(ViewState("ListaRemisionesNC")), Nothing, CType(ViewState("ListaRemisionesNC"), List(Of Modelos.Factura))) - End Get - Set(value As List(Of Modelos.Factura)) - ViewState("ListaRemisionesNC") = value - End Set - End Property - Private Property ListaNCDesc As List(Of Modelos.Factura) - Get - Return If(IsNothing(ViewState("ListaNCDesc")), Nothing, CType(ViewState("ListaNCDesc"), List(Of Modelos.Factura))) - End Get - Set(value As List(Of Modelos.Factura)) - ViewState("ListaNCDesc") = value - End Set - End Property - Private Property ListaNCBonificacion As List(Of Modelos.Factura) - Get - Return If(IsNothing(ViewState("ListaNCBonificacion")), Nothing, CType(ViewState("ListaNCBonificacion"), List(Of Modelos.Factura))) - End Get - Set(value As List(Of Modelos.Factura)) - ViewState("ListaNCBonificacion") = value - End Set - End Property - Private Property Pedidos2Lista As List(Of Integer) - Get - Return If(IsNothing(ViewState("Pedidos2Lista")), Nothing, CType(ViewState("Pedidos2Lista"), List(Of Integer))) - End Get - Set(value As List(Of Integer)) - ViewState("Pedidos2Lista") = value - End Set - End Property - Private Property DtRemisionesPS As DataTable - Get - Return If(IsNothing(ViewState("DtRemisionesPS")), Nothing, CType(ViewState("DtRemisionesPS"), DataTable)) - End Get - Set(value As DataTable) - ViewState("DtRemisionesPS") = value - End Set - End Property - Private Property DtCotizaciones As DataTable - Get - Return If(IsNothing(ViewState("DtCotizaciones")), Nothing, CType(ViewState("DtCotizaciones"), DataTable)) - End Get - Set(value As DataTable) - ViewState("DtCotizaciones") = value - End Set - End Property - Private Property CotizacionesLista As List(Of Integer) - Get - Return If(IsNothing(ViewState("CotizacionesLista")), Nothing, CType(ViewState("CotizacionesLista"), List(Of Integer))) - End Get - Set(value As List(Of Integer)) - ViewState("CotizacionesLista") = value - End Set - End Property - Private Property DtCotizacionesPS As DataTable - Get - Return If(IsNothing(ViewState("DtCotizacionesPS")), Nothing, CType(ViewState("DtCotizacionesPS"), DataTable)) - End Get - Set(value As DataTable) - ViewState("DtCotizacionesPS") = value - End Set - End Property - Private Property DtCotizacionTmpDT As DataTable - Get - Return If(IsNothing(ViewState("DtCotizacionTmpDT")), Nothing, CType(ViewState("DtCotizacionTmpDT"), DataTable)) - End Get - Set(value As DataTable) - ViewState("DtCotizacionTmpDT") = value - End Set - End Property - Private Property DtRemisionesTmpDT As DataTable - Get - Return If(IsNothing(ViewState("DtRemisionesTmpDT")), Nothing, CType(ViewState("DtRemisionesTmpDT"), DataTable)) - End Get - Set(value As DataTable) - ViewState("DtRemisionesTmpDT") = value - End Set - End Property - Private Property DtPedidos2TmpDT As DataTable - Get - Return If(IsNothing(ViewState("DtPedidos2TmpDT")), Nothing, CType(ViewState("DtPedidos2TmpDT"), DataTable)) - End Get - Set(value As DataTable) - ViewState("DtPedidos2TmpDT") = value - End Set - End Property - Private Property DtRemConceptosSurtidos As DataTable - Get - Return If(IsNothing(ViewState("DtRemConceptosSurtidos")), Nothing, CType(ViewState("DtRemConceptosSurtidos"), DataTable)) - End Get - Set(value As DataTable) - ViewState("DtRemConceptosSurtidos") = value - End Set - End Property - Private Property HuboCambioRemi As Boolean - Get - Return If(IsNothing(ViewState("HuboCambioRemi")), False, CType(ViewState("HuboCambioRemi"), Boolean)) - End Get - Set(value As Boolean) - ViewState("HuboCambioRemi") = value - End Set - End Property - Private Property AplicaGastoContrato As Boolean - Get - Return If(IsNothing(ViewState("AplicaGastoContrato")), False, CType(ViewState("AplicaGastoContrato"), Boolean)) - End Get - Set(value As Boolean) - ViewState("AplicaGastoContrato") = value - End Set - End Property - Private Property EsCreaApartirDe As Boolean - Get - Return If(IsNothing(ViewState("EsCreaApartirDe")), False, CType(ViewState("EsCreaApartirDe"), Boolean)) - End Get - Set(value As Boolean) - ViewState("EsCreaApartirDe") = value - End Set - End Property - Private Property RequiereAlmacenDestino As Boolean - Get - Return If(IsNothing(ViewState("RequiereAlmacenDestino")), False, CType(ViewState("RequiereAlmacenDestino"), Boolean)) - End Get - Set(value As Boolean) - ViewState("RequiereAlmacenDestino") = value - End Set - End Property - Private Property RequiereAlmacenOrigen As Boolean - Get - Return If(IsNothing(ViewState("RequiereAlmacenOrigen")), False, CType(ViewState("RequiereAlmacenOrigen"), Boolean)) - End Get - Set(value As Boolean) - ViewState("RequiereAlmacenOrigen") = value - End Set - End Property - - Private Property AplicoNCFacturaActual As Boolean - Get - Return If(IsNothing(ViewState("AplicoNCFacturaActual")), False, CType(ViewState("AplicoNCFacturaActual"), Boolean)) - End Get - Set(value As Boolean) - ViewState("AplicoNCFacturaActual") = value - End Set - End Property - Private Property EmpresaActual As Empresa - Get - Return CType(ViewState("EmpresaActual"), Empresa) - End Get - Set(value As Empresa) - ViewState("EmpresaActual") = value - End Set - End Property - - Property CargaDocumentoOC As Boolean - Get - If ViewState("CargaDocumentoOC") Is Nothing Then - Return False - Else - Return DirectCast(ViewState("CargaDocumentoOC"), Boolean) - End If - End Get - Set(value As Boolean) - ViewState("CargaDocumentoOC") = value - End Set - End Property - Private Property DTFacNC As DataTable - Get - Return If(IsNothing(ViewState("DTFacNC")), Nothing, CType(ViewState("DTFacNC"), DataTable)) - End Get - Set(value As DataTable) - ViewState("DTFacNC") = value - End Set - End Property - Private Property DtPromociones As DataTable - Get - Return If(IsNothing(ViewState("DtPromociones")), Nothing, CType(ViewState("DtPromociones"), DataTable)) - End Get - Set(value As DataTable) - ViewState("DtPromociones") = value - End Set - End Property - Private ReadOnly Property CveCliente As Integer - Get - Return ViewState("CveCliente").ToString().ToEntero() - End Get - End Property - Private ReadOnly Property CveClienteAnterior As Integer - Get - Return ViewState("CveClienteAnterior").ToString().ToEntero() - End Get - End Property - - Private Property CveClienteSucursal As Integer - Get - If ViewState("CveClienteSucursal") Is Nothing Then - Return -1 - Else - Return ViewState("CveClienteSucursal").ToString().ToEntero() - End If - End Get - Set(value As Integer) - ViewState("CveClienteSucursal") = value - End Set - End Property - Private Property CveAnticipo As Integer - Get - If ViewState("CveAnticipo") Is Nothing Then - Return -1 - Else - Return ViewState("CveAnticipo").ToString().ToEntero() - End If - End Get - Set(value As Integer) - ViewState("CveAnticipo") = value - End Set - End Property - - Private Property CveUsuarioActual As Integer - Get - Return ViewState("CveUsuarioActual").ToString().ToEntero() - End Get - Set(value As Integer) - ViewState("CveUsuarioActual") = value - End Set - End Property - Private ReadOnly Property Mail As String - Get - Return IfNull(ViewState("Mail"), "").ToString() - End Get - End Property - Private ReadOnly Property MailCC As String - Get - Return IfNull(ViewState("MailCC"), "").ToString() - End Get - End Property - Public ReadOnly Property CveVenta As Integer - Get - Return ViewState("CveVenta").ToString().ToEntero() - End Get - End Property - Private ReadOnly Property CveSubProyectoVenta As Integer - Get - Return If(IsNothing(ViewState("CveSubProyectoVenta")), -1, ViewState("CveSubProyectoVenta").ToString().ToEntero()) - End Get - End Property - Private Property CveVentaPadre As Integer - Get - Return If(IsNothing(ViewState("CveVentaPadre")), -1, ViewState("CveVentaPadre").ToString().ToEntero()) - End Get - Set(value As Integer) - ViewState("CveVentaPadre") = value - End Set - End Property - Private Property CveEstatusFacturaPadre As Integer - Get - Return If(IsNothing(ViewState("CveEstatusFacturaPadre")), -1, ViewState("CveEstatusFacturaPadre").ToString().ToEntero()) - End Get - Set(value As Integer) - ViewState("CveEstatusFacturaPadre") = value - End Set - End Property - Private Property CveMovimientoDetalle As Integer - Get - Return If(IsNothing(ViewState("CveMovimientoDetalle")), -1, ViewState("CveMovimientoDetalle").ToString().ToEntero()) - End Get - Set(value As Integer) - ViewState("CveMovimientoDetalle") = value - End Set - End Property - Private ReadOnly Property CveDevolucion As Integer - Get - Return ViewState("CveDevolucion").ToString().ToEntero() - End Get - End Property - - Private Property CveVentaRelacion As Integer - Get - Return If(IsNothing(ViewState("CveVentaRelacion")), -1, ViewState("CveVentaRelacion").ToString().ToEntero()) - End Get - Set(value As Integer) - ViewState("CveVentaRelacion") = value - End Set - End Property - - Private Property ImporteRelacion As Double - Get - Return If(IsNothing(ViewState("ImporteRelacion")), 0, ViewState("ImporteRelacion").ToString().ToDouble) - End Get - Set(value As Double) - ViewState("ImporteRelacion") = value - End Set - End Property - - Private Property IsTotalxConcepto As Boolean - Get - Return If(IsNothing(ViewState("IsTotalxConcepto")), False, CBool(ViewState("IsTotalxConcepto").ToString())) - End Get - Set(value As Boolean) - ViewState("IsTotalxConcepto") = value - End Set - End Property - Private ReadOnly Property CveAlmacenTransitorio As Integer - Get - Return ViewState("CveAlmacenTransitorio").ToString().ToEntero() - End Get - End Property - Private ReadOnly Property NuevaFactura As Integer - Get - Return ViewState("NuevaFactura").ToString().ToEntero() - End Get - End Property - Private ReadOnly Property VentaFolio As String - Get - Return ViewState("VentaFolio").ToString() - End Get - End Property - Private ReadOnly Property SelloCancelacion As String - Get - Return ViewState("SelloCancelacion").ToString() - End Get - End Property - Private ReadOnly Property FechaCancelacion As DateTime - Get - Return ViewState("FechaCancelacion").ToString().ToDateTime - End Get - End Property - Private ReadOnly Property EstablecioFolio As Boolean - Get - Return CBool(ViewState("EstablecioFolio")) - End Get - End Property - Private ReadOnly Property FolioFiscal As String - Get - Return ViewState("FolioFiscal").ToString() - End Get - End Property - Private ReadOnly Property Ruta As String - Get - Return UsuarioActual.Empresa.Ruta - End Get - End Property - Private ReadOnly Property RutaPruebas As String - Get - Return String.Format("{0}Empresas/1/", ModExtensiones.DirectorioBaseEmpresas) - End Get - End Property - Private ReadOnly Property TipoCambio As Decimal - Get - Return ViewState("TipoCambio").ToString().ToDecimal - End Get - End Property - Private ReadOnly Property ProcesoCorrecto As Boolean - Get - Return CBool(ViewState("ProcesoCorrecto")) - End Get - End Property - - 'FUENTES RECAUDACIÓN - Private Property DTPresupuestoIngresos As DataTable - Get - Return CType(ViewState("DTPresupuestoIngresos"), DataTable) - End Get - Set(value As DataTable) - ViewState("DTPresupuestoIngresos") = value - End Set - End Property - 'Folios - Private ReadOnly Property CveFolio As Integer - Get - Return ViewState("CveFolio").ToString().ToEntero() - End Get - End Property - Private ReadOnly Property NumAprobacion As Long - Get - Return CLng(ViewState("NumAprobacion").ToString()) - End Get - End Property - Private ReadOnly Property FechaAprobacion As Date - Get - Return ViewState("FechaAprobacion").ToString().ToDate - End Get - End Property - Private ReadOnly Property FolioActual As String - Get - Return ViewState("FolioActual").ToString() - End Get - End Property - 'Sucursal - Private ReadOnly Property Serie As String - Get - Return ViewState("Serie").ToString() - End Get - End Property - Private ReadOnly Property Folio As Integer - Get - Return ViewState("Folio").ToString().ToEntero() - End Get - End Property - Private ReadOnly Property FormatoFactura As String - Get - Return ViewState("FormatoFactura").ToString() - End Get - End Property - Private ReadOnly Property TipoFormato As String - Get - Return ViewState("TipoFormato").ToString() - End Get - End Property - Private ReadOnly Property IVA As Decimal - Get - Return ViewState("IVA").ToString().ToDecimal - End Get - End Property - 'Private ReadOnly Property SubProyectoPorcentajeIVA As Decimal - ' Get - ' Return ViewState("SubProyectoPorcentajeIVA").ToString().ToDecimal - ' End Get - 'End Property - Private ReadOnly Property ClienteRetIVA As Decimal - Get - Return ViewState("ClienteRetIVA").ToString().ToDecimal - End Get - End Property - Private ReadOnly Property ClienteRetISR As Decimal - Get - Return ViewState("ClienteRetISR").ToString().ToDecimal - End Get - End Property - - Private ReadOnly Property ClienteDesglosaIEPS As Boolean - Get - Return CType(ViewState("ClienteDesglosaIEPS").ToString(), Boolean) - End Get - End Property - Private ReadOnly Property ClienteNODesglosaIVA As Boolean - Get - Return CType(ViewState("ClienteNODesglosaIVA").ToString(), Boolean) - End Get - End Property - - 'Cliente - Private ReadOnly Property NombreCliente As String - Get - Return ViewState("NombreCliente").ToString() - End Get - End Property - Private ReadOnly Property Vendedor As String - Get - Return ViewState("Vendedor").ToString() - End Get - End Property - - Private ReadOnly Property CodCliente As String - Get - Return ViewState("CodCliente").ToString() - End Get - End Property - Private ReadOnly Property CliNoExt As String - Get - Return ViewState("CliNoExt").ToString() - End Get - End Property - Private ReadOnly Property CliNoInt As String - Get - Return ViewState("CliNoInt").ToString() - End Get - End Property - Private ReadOnly Property CliLocalidad As String - Get - Return ViewState("CliLocalidad").ToString() - End Get - End Property - Private ReadOnly Property CliPais As String - Get - Return ViewState("CliPais").ToString() - End Get - End Property - Private ReadOnly Property SucCalle As String - Get - Return ViewState("SucCalle").ToString() - End Get - End Property - Private ReadOnly Property CliCorreoCot As String - Get - If ViewState("CliCorreoCot") Is Nothing Then - Return "" - Else - Return ViewState("CliCorreoCot").ToString() - End If - End Get - End Property - Private ReadOnly Property SucNoExt As String - Get - Return ViewState("SucNoExt").ToString() - End Get - End Property - Private ReadOnly Property SucNoInt As String - Get - Return ViewState("SucNoInt").ToString() - End Get - End Property - Private ReadOnly Property SucColonia As String - Get - Return ViewState("SucColonia").ToString() - End Get - End Property - Private ReadOnly Property SucLocalidad As String - Get - Return ViewState("SucLocalidad").ToString() - End Get - End Property - Private ReadOnly Property SucMunicipio As String - Get - Return ViewState("SucMunicipio").ToString() - End Get - End Property - Private ReadOnly Property SucEstado As String - Get - Return ViewState("SucEstado").ToString() - End Get - End Property - Private ReadOnly Property SucPais As String - Get - Return ViewState("SucPais").ToString() - End Get - End Property - Private ReadOnly Property SucCP As String - Get - Return ViewState("SucCP").ToString() - End Get - End Property - Private ReadOnly Property MatCalle As String - Get - Return ViewState("MatCalle").ToString() - End Get - End Property - Private ReadOnly Property MatNoExt As String - Get - Return ViewState("MatNoExt").ToString() - End Get - End Property - Private ReadOnly Property MatNoInt As String - Get - Return ViewState("MatNoInt").ToString() - End Get - End Property - Private ReadOnly Property MatColonia As String - Get - Return ViewState("MatColonia").ToString() - End Get - End Property - Private ReadOnly Property MatLocalidad As String - Get - Return ViewState("MatLocalidad").ToString() - End Get - End Property - Private ReadOnly Property MatMunicipio As String - Get - Return ViewState("MatMunicipio").ToString() - End Get - End Property - Private ReadOnly Property MatEstado As String - Get - Return ViewState("MatEstado").ToString() - End Get - End Property - Private ReadOnly Property MatPais As String - Get - Return ViewState("MatPais").ToString() - End Get - End Property - Private ReadOnly Property MatCP As String - Get - Return ViewState("MatCP").ToString() - End Get - End Property - Private Property ImprimeNombreSucursal As Boolean - Get - Return CBool(ViewState("ImprimeNombreSucursal")) - End Get - Set(value As Boolean) - ViewState("ImprimeNombreSucursal") = value - End Set - End Property - Private ReadOnly Property AplicaFEMSA As Boolean - Get - Return CBool(ViewState("AplicaFEMSA")) - End Get - End Property - Private ReadOnly Property AplicaComercioExterior As Boolean - Get - Return CBool(ViewState("AplicaComercioExterior")) - End Get - End Property - Private ReadOnly Property CveTipoOperacion As Integer - Get - Return CInt(ViewState("CveTipoOperacion")) - End Get - End Property - Private ReadOnly Property CvePedimento As Integer - Get - Return CInt(ViewState("CvePedimento")) - End Get - End Property - Private ReadOnly Property CveIncoterm As Integer - Get - Return CInt(ViewState("CveIncoterm")) - End Get - End Property - Private ReadOnly Property AplicaDetallista As Boolean - Get - Return CBool(ViewState("AplicaDetallista")) - End Get - End Property - Private ReadOnly Property AplicaFord As Boolean - Get - Return CBool(ViewState("AplicaFord")) - End Get - End Property - Private Property CveOS As Integer - Get - Return ViewState("CveOS").ToString().ToEntero() - End Get - Set(value As Integer) - ViewState("CveOS") = value - End Set - End Property - - - Private ReadOnly Property SaldoVenta As Decimal - Get - Return If(IsNothing(ViewState("SaldoVenta")), 0, ViewState("SaldoVenta").ToString().ToDecimal) - End Get - End Property - Private Property CvePSAmortizacion As Integer - Get - Return ViewState("CvePSAmortizacion").ToString().ToEntero() - End Get - - Set(value As Integer) - ViewState("CvePSAmortizacion") = value - End Set - End Property - - 'Inventarios - Private Property DtInv As DataTable - Get - Return CType(ViewState("DtInv"), DataTable) - End Get - Set(value As DataTable) - ViewState("DtInv") = value - End Set - End Property - - Private Property CvePrePoliza As Integer - Get - Return ViewState("CvePrePoliza").ToString().ToEntero() - End Get - Set(value As Integer) - ViewState("CvePrePoliza") = value - End Set - End Property - Private ReadOnly Property SeGuardoPrePoliza As Boolean - Get - Return CBool(ViewState("SeGuardoPrePoliza")) - End Get - End Property - Private Property CveVentaFacturada As Integer - Get - Return ViewState("CveVentaFacturada").ToString().ToEntero() - End Get - Set(value As Integer) - ViewState("CveVentaFacturada") = value - End Set - End Property - Private ReadOnly Property AplicarVentaFacturada As Boolean - Get - Return CBool(ViewState("AplicarVentaFacturada")) - End Get - End Property - 'Estimaciones - Private Property CveContrato As Integer - Get - Return ViewState("CveContrato").ToString().ToEntero() - End Get - - Set(value As Integer) - ViewState("CveContrato") = value - End Set - End Property - Private Property CvePedido As Integer - Get - Return ViewState("CvePedido").ToString().ToEntero() - End Get - - Set(value As Integer) - ViewState("CvePedido") = value - End Set - End Property - Private Property CvePedido2 As Integer - Get - Return ViewState("CvePedido2").ToString().ToEntero() - End Get - - Set(value As Integer) - ViewState("CvePedido2") = value - End Set - End Property - Private Property TipoContrato As Integer - Get - Return ViewState("TipoContrato").ToString().ToEntero() - End Get - - Set(value As Integer) - ViewState("TipoContrato") = value - End Set - End Property - Private Property Opcion As String - Get - Return ViewState("Opcion").ToString() - End Get - - Set(value As String) - ViewState("Opcion") = value - End Set - End Property - Private Property CorreoNotificacionPedDev As String - Get - Return If(IsNothing(ViewState("CorreoNotificacionDevPed")), "", ViewState("CorreoNotificacionDevPed").ToString()) - End Get - - Set(value As String) - ViewState("CorreoNotificacionDevPed") = value - End Set - End Property - - 'Presupuesto - Private Property CvePresupuesto As Integer - Get - Return ViewState("CvePresupuesto").ToString().ToEntero() - End Get - Set(value As Integer) - ViewState("CvePresupuesto") = value - End Set - End Property - Private Property TotalOtrosConceptos As Decimal - Get - Return ViewState("TotalOtrosConceptos").ToString().ToDecimal - End Get - Set(value As Decimal) - ViewState("TotalOtrosConceptos") = value - End Set - End Property - Private Property TipoCambioFactura As Decimal - Get - Return ViewState("TipoCambioFactura").ToString().ToDecimal - End Get - Set(value As Decimal) - ViewState("TipoCambioFactura") = value - End Set - End Property - - Private Property DtPagos As DataTable - Get - Return CType(ViewState("DtPagos"), DataTable) - End Get - Set(value As DataTable) - ViewState("DtPagos") = value - End Set - End Property - Private Property DevolucionAlmacen As Integer - Get - Return ViewState("DevolucionAlmacen").ToString().ToEntero() - End Get - Set(value As Integer) - ViewState("DevolucionAlmacen") = value - End Set - End Property - Private Property DevolucionAlmacenNC As Integer - Get - Return IfNull(ViewState("DevolucionAlmacenNC"), 2, ViewState("DevolucionAlmacenNC").ToString().ToString()).ToString().ToEntero() - End Get - Set(value As Integer) - ViewState("DevolucionAlmacenNC") = value - End Set - End Property - Private ReadOnly Property TipoDoctoDevolucion As String - Get - Return ViewState("TipoDoctoDevolucion").ToString() - End Get - End Property - Private Property PlazoCobranza As Integer - Get - Return ViewState("PlazoCobranza").ToString().ToEntero() - End Get - Set(value As Integer) - ViewState("PlazoCobranza") = value - End Set - End Property - Private Property PlazoCobranzaRemision As Integer - Get - Return ViewState("PlazoCobranzaRemision").ToString().ToEntero() - End Get - Set(value As Integer) - ViewState("PlazoCobranzaRemision") = value - End Set - End Property - - 'CvePAC - Private Property CvePAC As Integer - Get - Return ViewState("CvePAC").ToString().ToEntero() - End Get - Set(value As Integer) - ViewState("CvePAC") = value - End Set - End Property - - Private Property AplicaDevolucion As Boolean - Get - Return If(IsNothing(ViewState("AplicaDevolucion")), False, CType(ViewState("AplicaDevolucion"), Boolean)) - End Get - Set(value As Boolean) - ViewState("AplicaDevolucion") = value - End Set - End Property - - Private Property CveVentaDevolucion As Integer - Get - Return If(IsNothing(ViewState("CveVentaDevolucion")), 0, CType(ViewState("CveVentaDevolucion"), Integer)) - End Get - Set(value As Integer) - ViewState("CveVentaDevolucion") = value - End Set - End Property - Private Property SaldoVentaDevolucion As Decimal - Get - Return ViewState("SaldoVentaDevolucion").ToString().ToDecimal - End Get - Set(value As Decimal) - ViewState("SaldoVentaDevolucion") = value - End Set - End Property - Private Property ContratoOC As Boolean - Get - Return If(IsNothing(ViewState("ContratoOC")), False, CType(ViewState("ContratoOC"), Boolean)) - End Get - Set(value As Boolean) - ViewState("ContratoOC") = value - End Set - End Property - - Private Property TieneAlmacen As Boolean - Get - Return If(IsNothing(ViewState("TieneAlmacen")), False, CType(ViewState("TieneAlmacen"), Boolean)) - End Get - Set(value As Boolean) - ViewState("TieneAlmacen") = value - End Set - End Property - Private Property PorcentajeIVA As Decimal - Get - Return ViewState("PorcentajeIVA").ToString().ToDecimal - End Get - Set(value As Decimal) - ViewState("PorcentajeIVA") = value - End Set - End Property - Private Property CveEstatusRefacturacion As Integer - Get - Return If(IsNothing(ViewState("CveEstatusRefacturacion")), 0, CType(ViewState("CveEstatusRefacturacion"), Integer)) - End Get - Set(value As Integer) - ViewState("CveEstatusRefacturacion") = value - End Set - End Property - Private Property RefacturarCancelada As Boolean - Get - Return If(IsNothing(ViewState("RefacturarCancelada")), False, CBool(ViewState("RefacturarCancelada"))) - End Get - Set(value As Boolean) - ViewState("RefacturarCancelada") = value - End Set - End Property - - Private Property CveEstadoCancelacion As Integer - Get - Return If(IsNothing(ViewState("CveEstadoCancelacion")), 0, CType(ViewState("CveEstadoCancelacion"), Integer)) - End Get - Set(value As Integer) - ViewState("CveEstadoCancelacion") = value - End Set - End Property - - Private Property PermiteCredito As Boolean - Get - Return If(IsNothing(ViewState("PermiteCredito")), False, CBool(ViewState("PermiteCredito"))) - End Get - Set(value As Boolean) - ViewState("PermiteCredito") = value - End Set - End Property - - Private Property DtAnticipoAmortizacion As DataTable - Get - Return CType(ViewState("DtAnticipoAmortizacion"), DataTable) - End Get - Set(value As DataTable) - ViewState("DtAnticipoAmortizacion") = value - End Set - End Property - Private Property SaldoAnticipo As Decimal - Get - Return If(IsNothing(ViewState("SaldoAnticipo")), 0, ViewState("SaldoAnticipo").ToString().ToDecimal()) - End Get - Set(value As Decimal) - ViewState("SaldoAnticipo") = value - End Set - End Property - Private Property CorreoEntregaAlmacen As String - Get - Return If(IsNothing(ViewState("CorreoEntregaAlmacen")), "", ViewState("CorreoEntregaAlmacen").ToString()) - End Get - - Set(value As String) - ViewState("CorreoEntregaAlmacen") = value - End Set - End Property - - Private Property CveVentaUsadoDevolucionEfectivo As Integer - Get - Return If(IsNothing(ViewState("CveVentaUsadoDevolucionEfectivo")), 0, CType(ViewState("CveVentaUsadoDevolucionEfectivo"), Integer)) - End Get - Set(value As Integer) - ViewState("CveVentaUsadoDevolucionEfectivo") = value - End Set - End Property - - - Private Property RFCReceptorVenta As String - Get - Return If(IsNothing(ViewState("RFCReceptorVenta")), "", ViewState("RFCReceptorVenta").ToString()) - End Get - - Set(value As String) - ViewState("RFCReceptorVenta") = value - End Set - End Property - Private Property RegimenFiscalCliente As String - Get - Return IfNull(ViewState("RegimenFiscalCliente"), "").ToString() - End Get - Set(value As String) - ViewState("RegimenFiscalCliente") = value - End Set - End Property - Private Property RegimenSociedad As String - Get - Return IfNull(ViewState("RegimenSociedad"), "").ToString() - End Get - Set(value As String) - ViewState("RegimenSociedad") = value - End Set - End Property - Private Property TipoPersona As Boolean - Get - Return CBool(IfNull(ViewState("TipoPersona"), False)) - End Get - Set(value As Boolean) - ViewState("TipoPersona") = value - End Set - End Property - Private Property Adjunto As String - Get - Return If(IsNothing(ViewState("Adjunto")), "", ViewState("Adjunto").ToString()) - End Get - - Set(value As String) - ViewState("Adjunto") = value - End Set - End Property - - Private Property VentaActual As Venta - Get - Return DirectCast(ViewState("VentaActual"), Venta) - End Get - Set(value As Venta) - ViewState("VentaActual") = value - End Set - End Property - - Private Property ListaAnticiposAplicados As List(Of Modelos.MAnticipoRelacionado) - Get - Return If(IsNothing(ViewState("ListaAnticiposAplicados")), Nothing, CType(ViewState("ListaAnticiposAplicados"), List(Of Modelos.MAnticipoRelacionado))) - End Get - Set(value As List(Of Modelos.MAnticipoRelacionado)) - ViewState("ListaAnticiposAplicados") = value - End Set - End Property - - Private Property CveTimbreCartaPorteVenta As Integer - Get - Return If(IsNothing(ViewState("CveTimbreCartaPorteVenta")), -1, ViewState("CveTimbreCartaPorteVenta").ToString().ToEntero()) - End Get - Set(value As Integer) - ViewState("CveTimbreCartaPorteVenta") = value - End Set - End Property -#End Region - -#Region "Propiedades PuntoVenta" - - Private Property CveCorte As Integer - Get - Return ViewState("CveCorte").ToString().ToEntero() - End Get - Set(value As Integer) - ViewState("CveCorte") = value - End Set - End Property - - Private Property Entrega As String - Get - Return ViewState("Entrega").ToString() - End Get - Set(value As String) - ViewState("Entrega") = value - End Set - End Property - - Private Property Vigencia As String - Get - Return ViewState("Vigencia").ToString() - End Get - Set(value As String) - ViewState("Vigencia") = value - End Set - End Property - - Private Property DineroCaja As Double - Get - Return ViewState("DineroCaja").ToString().ToDouble - End Get - Set(value As Double) - ViewState("DineroCaja") = value - End Set - End Property - - Private ReadOnly Property CveCicloComercial As Integer - Get - Return ViewState("CveCicloComercial").ToString().ToEntero() - End Get - End Property - -#End Region - -#Region "Propiedades Contratos" - - Private Property DtContratos As DataTable - Get - Return If(IsNothing(ViewState("DtContratos")), Nothing, CType(ViewState("DtContratos"), DataTable)) - End Get - Set(value As DataTable) - ViewState("DtContratos") = value - End Set - End Property - Private Property NumeroContrato As String - Get - Return ViewState("NumeroContrato").ToString() - End Get - Set(value As String) - ViewState("NumeroContrato") = value - End Set - End Property - Private Property DescripcionContrato As String - Get - Return ViewState("DescripcionContrato").ToString() - End Get - Set(value As String) - ViewState("DescripcionContrato") = value - End Set - End Property - Private Property NumeroLicitacion As String - Get - Return ViewState("NumeroLicitacion").ToString() - End Get - Set(value As String) - ViewState("NumeroLicitacion") = value - End Set - End Property - Private Property CveAlmacenExistenciasContrato As Integer - Get - Return ViewState("CveAlmacenExistenciasContrato").ToString().ToEntero() - End Get - Set(value As Integer) - ViewState("CveAlmacenExistenciasContrato") = value - End Set - End Property - Private Property CveAlmacenOrigenContrato As Integer - Get - Return ViewState("CveAlmacenOrigenContrato").ToString().ToEntero() - End Get - Set(value As Integer) - ViewState("CveAlmacenOrigenContrato") = value - End Set - End Property - Private Property DtContratosSerieDetalle As DataTable - Get - Return If(IsNothing(ViewState("DtContratosSerieDetalle")), Nothing, CType(ViewState("DtContratosSerieDetalle"), DataTable)) - End Get - Set(value As DataTable) - ViewState("DtContratosSerieDetalle") = value - End Set - End Property - Private Property CvePSSerie As Integer - Get - Return CType(ViewState("CvePSSerie"), Integer) - End Get - Set(value As Integer) - ViewState("CvePSSerie") = value - End Set - End Property - Private Property CveUMSerie As Integer - Get - Return CType(ViewState("CveUMSerie"), Integer) - End Get - Set(value As Integer) - ViewState("CveUMSerie") = value - End Set - End Property - Private Property CveConsecSerie As Integer - Get - Return CType(ViewState("CveConsecSerie"), Integer) - End Get - Set(value As Integer) - ViewState("CveConsecSerie") = value - End Set - End Property - Private Property LimitaCantidadSerie As Integer - Get - Return CType(ViewState("LimitaCantidadSerie"), Integer) - End Get - Set(value As Integer) - ViewState("LimitaCantidadSerie") = value - End Set - End Property - - - Private Property PorAmortizacionAnticipo As Integer - Get - - If ViewState("PorAmortizacionAnticipo") Is Nothing Then - Return 0 - Else - Return CType(ViewState("PorAmortizacionAnticipo"), Integer) - End If - - End Get - Set(value As Integer) - ViewState("PorAmortizacionAnticipo") = value - End Set - End Property - - - - - Private Property AmortizacionSujeridaContrato As Decimal - Get - - If ViewState("AmortizacionSujeridaContrato") Is Nothing Then - Return 0 - Else - Return ViewState("AmortizacionSujeridaContrato").ToString.ToDecimal - End If - - End Get - Set(value As Decimal) - ViewState("AmortizacionSujeridaContrato") = value - End Set - End Property - - Private Property EscontratoObra As Boolean - Get - If ViewState("EscontratoObra") Is Nothing Then - Return False - Else - Return Boolean.Parse(ViewState("EscontratoObra").ToString) - End If - - End Get - Set(value As Boolean) - ViewState("EscontratoObra") = value - End Set - End Property - - - - - - -#End Region - -#Region " PROPIEDADES NUEVAS | GUARDAR - IMPRESION " - Private Property ErrorList As List(Of String) - Get - Return CType(ViewState("ErrorList"), List(Of String)) - End Get - Set(value As List(Of String)) - ViewState("ErrorList") = value - End Set - End Property - Private Property MensajeAlert As StringBuilder - Get - Return CType(ViewState("MensajeAlert"), StringBuilder) - End Get - Set(value As StringBuilder) - ViewState("MensajeAlert") = value - End Set - End Property - Private Property ObjFactura As Modelos.Factura - Get - Return CType(ViewState("ObjFactura"), Modelos.Factura) - End Get - Set(value As Modelos.Factura) - ViewState("ObjFactura") = value - End Set - End Property - Private Property ObjFacturaDevolucion As Modelos.Factura - Get - Return CType(ViewState("ObjFacturaDevolucion"), Modelos.Factura) - End Get - Set(value As Modelos.Factura) - ViewState("ObjFacturaDevolucion") = value - End Set - End Property - Private Property ObjFacturaBonificacion As Modelos.Factura - Get - Return CType(ViewState("ObjFacturaBonificacion"), Modelos.Factura) - End Get - Set(value As Modelos.Factura) - ViewState("ObjFacturaBonificacion") = value - End Set - End Property - Private Property ObjFacturaNC As Modelos.Factura - Get - Return CType(ViewState("ObjFacturaNC"), Modelos.Factura) - End Get - Set(value As Modelos.Factura) - ViewState("ObjFacturaNC") = value - End Set - End Property - - - - - - - - -#End Region - -#Region " PROPIEDADES NUEVAS " - Private Property CveOC As Integer - Get - Return ViewState("CveOC").ToString().ToEntero() - End Get - Set(value As Integer) - ViewState("CveOC") = value - End Set - End Property - - Private Property RegistroxOC As Boolean - Get - Return CBool(IfNull(ViewState("RegistroxOC"), False)) - End Get - Set(value As Boolean) - ViewState("RegistroxOC") = value - End Set - End Property - - - Private Property EnviarCorreoCliente As Boolean - Get - Return CBool(IfNull(ViewState("EnviarCorreoCliente"), False)) - End Get - Set(value As Boolean) - ViewState("EnviarCorreoCliente") = value - End Set - End Property - Private Property EstatusCliente As Boolean - Get - Return CBool(ViewState("EstatusCliente").ToString()) - End Get - Set(value As Boolean) - ViewState("EstatusCliente") = value - End Set - End Property - - 'Private Property CveMetodoPagoCliente As Integer - ' Get - ' Return ViewState("CveMetodoPagoCliente").ToString().ToEntero() - ' End Get - ' Set(value As Integer) - ' ViewState("CveMetodoPagoCliente") = value - ' End Set - 'End Property - - Private Property Modalidad As String - Get - Return ViewState("Modalidad").ToString() - End Get - Set(value As String) - ViewState("Modalidad") = value - End Set - End Property - Private Property Index As Integer - Get - Return ViewState("Index").ToString().ToEntero() - End Get - Set(value As Integer) - ViewState("Index") = value - End Set - End Property - Private Property TotAnt As Decimal - Get - Return ViewState("TotAnt").ToString().ToDecimal - End Get - Set(value As Decimal) - ViewState("TotAnt") = value - End Set - End Property - Private Property TotalOriginal As Double - Get - Return ViewState("TotalOriginal").ToString().ToDouble - End Get - Set(value As Double) - ViewState("TotalOriginal") = value - End Set - End Property - - Private Property AplicaCancelarRemision As Boolean - Get - Return CBool(ViewState("AplicaCancelarRemision").ToString()) - End Get - Set(value As Boolean) - ViewState("AplicaCancelarRemision") = value - End Set - End Property - Private Property TipoVentaSucursal As Integer - Get - Return ViewState("TipoVentaSucursal").ToString().ToEntero() - End Get - Set(value As Integer) - ViewState("TipoVentaSucursal") = value - End Set - End Property - Private Property MensajeCveSAT As StringBuilder - Get - If ViewState("MensajeCveSAT") Is Nothing Then ViewState("MensajeCveSAT") = New StringBuilder - Return CType(ViewState("MensajeCveSAT"), StringBuilder) - End Get - Set(value As StringBuilder) - ViewState("TipoVentaSucursal") = value - End Set - End Property - Private Property EditoRemision As Boolean - Get - Return CBool(ViewState("EditoRemision").ToString()) - End Get - Set(value As Boolean) - ViewState("EditoRemision") = value - End Set - End Property - Private Property AplicaNC As Boolean - Get - Return CBool(ViewState("AplicaNC").ToString()) - End Get - Set(value As Boolean) - ViewState("AplicaNC") = value - End Set - End Property - Private Property DtVentasNC As DataTable - Get - Return CType(ViewState("DtVentasNC"), DataTable) - End Get - Set(value As DataTable) - ViewState("DtVentasNC") = value - End Set - End Property - Private Property AplicaNCMasiva As Boolean - Get - Return CBool(ViewState("AplicaNCMasiva").ToString()) - End Get - Set(value As Boolean) - ViewState("AplicaNCMasiva") = value - End Set - End Property - Private Property RefacturacionGeneroNC As Boolean - Get - Return CBool(ViewState("RefacturacionGeneroNC").ToString()) - End Get - Set(value As Boolean) - ViewState("RefacturacionGeneroNC") = value - End Set - End Property - Private Property ModalidadEdicion As Boolean - Get - Return CBool(ViewState("ModalidadEdicion").ToString()) - End Get - Set(value As Boolean) - ViewState("ModalidadEdicion") = value - End Set - End Property - Private Property ConversionRemision As String - Get - Return ViewState("ConversionRemision").ToString() - End Get - Set(value As String) - ViewState("ConversionRemision") = value - End Set - End Property - Private Property TipoCambioRemision As Decimal - Get - Return ViewState("TipoCambioRemision").ToString().ToDecimal - End Get - Set(value As Decimal) - ViewState("TipoCambioRemision") = value - End Set - End Property - Private Property TieneContrato As Boolean - Get - Return CBool(ViewState("TieneContrato").ToString()) - End Get - Set(value As Boolean) - ViewState("TieneContrato") = value - End Set - End Property - Private Property CveOrdenCompraContrato As Integer - Get - Return ViewState("CveOrdenCompraContrato").ToString().ToEntero() - End Get - Set(value As Integer) - ViewState("CveOrdenCompraContrato") = value - End Set - End Property - Private Property ContratosConOC As StringBuilder - Get - If ViewState("ContratosConOC") Is Nothing Then ViewState("ContratosConOC") = New StringBuilder - Return CType(ViewState("ContratosConOC"), StringBuilder) - End Get - Set(value As StringBuilder) - ViewState("ContratosConOC") = value - End Set - End Property - Private Property RequiereOC As Boolean - Get - Return CBool(ViewState("RequiereOC").ToString()) - End Get - Set(value As Boolean) - ViewState("RequiereOC") = value - End Set - End Property - Private Property PorcentajeCredito As Decimal - Get - Return ViewState("PorcentajeCredito").ToString().ToDecimal - End Get - Set(value As Decimal) - ViewState("PorcentajeCredito") = value - End Set - End Property - Private Property CvePedidoA As Integer - Get - Return ViewState("CvePedidoA").ToString().ToEntero() - End Get - Set(value As Integer) - ViewState("CvePedidoA") = value - End Set - End Property - - Private Property CveAcercamiento As Integer - Get - If ViewState("CveAcercamiento") Is Nothing Then - ViewState("CveAcercamiento") = -1 - End If - Return ViewState("CveAcercamiento").ToString().ToEntero() - End Get - Set(value As Integer) - ViewState("CveAcercamiento") = value - End Set - End Property - - Private Property CveEmpresaCRM As Integer - Get - Return ViewState("CveEmpresaCRM").ToString().ToEntero() - End Get - Set(value As Integer) - ViewState("CveEmpresaCRM") = value - End Set - End Property - - - Private Property CveAcercamientoCRM As Integer - Get - Return ViewState("CveAcercamientoCRM").ToString().ToEntero() - End Get - Set(value As Integer) - ViewState("CveAcercamientoCRM") = value - End Set - End Property - - - Private Property CorreoContactoCRM As String - Get - If ViewState("CorreoContactoCRM") Is Nothing Then - ViewState("CorreoContactoCRM") = "" - End If - Return ViewState("CorreoContactoCRM").ToString() - End Get - Set(value As String) - ViewState("CorreoContactoCRM") = value - End Set - End Property - - - Private Property DtPedidos2 As DataTable - Get - Return CType(ViewState("DtPedidos2"), DataTable) - End Get - Set(value As DataTable) - ViewState("DtPedidos2") = value - End Set - End Property - Private Property DtPedidos2PS As DataTable - Get - Return CType(ViewState("DtPedidos2PS"), DataTable) - End Get - Set(value As DataTable) - ViewState("DtPedidos2PS") = value - End Set - End Property - - Private Property CveEstatus As Integer - Get - Return ViewState("CveEstatus").ToString().ToEntero() - End Get - Set(value As Integer) - ViewState("CveEstatus") = value - End Set - End Property - - Private Property CveEstatusCotizacion As Integer - Get - Return (IfNull(ViewState("CveEstatusCotizacion"), "-1", ViewState("CveEstatusCotizacion"))).ToString().ToEntero() - End Get - Set(value As Integer) - ViewState("CveEstatusCotizacion") = value - End Set - End Property - - Private Property CveMetodoPago33Venta As Integer - Get - Return (IfNull(ViewState("CveMetodoPago33Venta"), "-1", ViewState("CveMetodoPago33Venta"))).ToString().ToEntero() - End Get - Set(value As Integer) - ViewState("CveMetodoPago33Venta") = value - End Set - End Property - - Private Property CveFormaPago33Venta As Integer - Get - Return (IfNull(ViewState("CveFormaPago33Venta"), "-1", ViewState("CveFormaPago33Venta"))).ToString().ToEntero() - End Get - Set(value As Integer) - ViewState("CveFormaPago33Venta") = value - End Set - End Property - Private Property CveMetodoPago33Cliente As Integer - Get - Return If(IsNothing(ViewState("CveMetodoPago33Cliente")), -1, ViewState("CveMetodoPago33Cliente")).ToString().ToEntero - End Get - Set(value As Integer) - ViewState("CveMetodoPago33Cliente") = value - End Set - End Property - Private Property CveFormaPago33Cliente As Integer - Get - Return If(IsNothing(ViewState("CveFormaPago33Cliente")), -1, ViewState("CveFormaPago33Cliente")).ToString().ToEntero - End Get - Set(value As Integer) - ViewState("CveFormaPago33Cliente") = value - End Set - End Property - - Private Property CveVendedorVenta As Integer - Get - Return (IfNull(ViewState("CveVendedorVenta"), "-1", ViewState("CveVendedorVenta"))).ToString().ToEntero() - End Get - Set(value As Integer) - ViewState("CveVendedorVenta") = value - End Set - End Property - Private Property CveVendedorCliente As Integer - Get - Return If(IsNothing(ViewState("CveVendedorCliente")), -1, ViewState("CveVendedorCliente")).ToString().ToEntero - End Get - Set(value As Integer) - ViewState("CveVendedorCliente") = value - End Set - End Property - Private Property CveVendedorClienteSucursal As Integer - Get - Return If(IsNothing(ViewState("CveVendedorClienteSucursal")), -1, ViewState("CveVendedorClienteSucursal")).ToString().ToEntero - End Get - Set(value As Integer) - ViewState("CveVendedorClienteSucursal") = value - End Set - End Property - - Private Property CveVendedorContrato As Integer - Get - Return If(IsNothing(ViewState("CveVendedorContrato")), -1, ViewState("CveVendedorContrato")).ToString().ToEntero - End Get - Set(value As Integer) - ViewState("CveVendedorContrato") = value - End Set - End Property - Private Property CveVendedorEmpresaCRM As Integer - Get - Return If(IsNothing(ViewState("CveVendedorEmpresaCRM")), -1, ViewState("CveVendedorEmpresaCRM")).ToString().ToEntero - End Get - Set(value As Integer) - ViewState("CveVendedorEmpresaCRM") = value - End Set - End Property - Private Property DiasCredito As Integer - Get - Return ViewState("DiasCredito").ToString().ToEntero() - End Get - Set(value As Integer) - ViewState("DiasCredito") = value - End Set - End Property - Private Property EsDiasCreditoFijo As Boolean - Get - Return CBool(ViewState("EsDiasCreditoFijo").ToString()) - End Get - Set(value As Boolean) - ViewState("EsDiasCreditoFijo") = value - End Set - End Property - Private Property TieneDiasVencidos As Boolean - Get - Return CBool(IfNull(ViewState("TieneDiasVencidos"), "False", ViewState("TieneDiasVencidos"))) - End Get - Set(value As Boolean) - ViewState("TieneDiasVencidos") = value - End Set - End Property - - Private Property DiasVencidosCliente As Integer - Get - Return IfNull(ViewState("DiasVencidosCliente"), "0", ViewState("DiasVencidosCliente")).ToString().ToEntero() - End Get - Set(value As Integer) - ViewState("DiasVencidosCliente") = value - End Set - End Property - Private Property SeCancelaRemisionProceso As Boolean - Get - Return CBool(ViewState("SeCancelaRemisionProceso").ToString()) - End Get - Set(value As Boolean) - ViewState("SeCancelaRemisionProceso") = value - End Set - End Property - - Private Property CvePrecioLista As Integer - Get - Return IfNull(ViewState("CvePrecioLista"), 0, ViewState("CvePrecioLista").ToString().ToEntero()).ToString().ToEntero() - End Get - Set(value As Integer) - ViewState("CvePrecioLista") = value - End Set - End Property - Private Property CvePrecioListaCliente As Integer - Get - Return IfNull(ViewState("CvePrecioListaCliente"), 0, ViewState("CvePrecioListaCliente").ToString().ToEntero()).ToString().ToEntero() - End Get - Set(value As Integer) - ViewState("CvePrecioListaCliente") = value - End Set - End Property - - Private Property FacturarSucursal As Boolean - Get - Return CBool(IfNull(ViewState("FacturarSucursal"), "False", ViewState("FacturarSucursal"))) - End Get - Set(value As Boolean) - ViewState("FacturarSucursal") = value - End Set - End Property - - Private Property ClienteSucursal As Modelos.SucursalModel - Get - Return CType(ViewState("ClienteSucursal"), Modelos.SucursalModel) - End Get - Set(value As Modelos.SucursalModel) - ViewState("ClienteSucursal") = value - End Set - End Property - - Private Property VentaDesglosaIEPS As Boolean - Get - Return CBool(IfNull(ViewState("VentaDesglosaIEPS"), "False", ViewState("VentaDesglosaIEPS"))) - End Get - Set(value As Boolean) - ViewState("VentaDesglosaIEPS") = value - End Set - End Property - Private Property VentaNODesglosaIVA As Boolean - Get - Return CBool(IfNull(ViewState("VentaNODesglosaIVA"), "False", ViewState("VentaNODesglosaIVA"))) - End Get - Set(value As Boolean) - ViewState("VentaNODesglosaIVA") = value - End Set - End Property - - Private Property SerieVenta As String - Get - Return IfNull(ViewState("SerieVenta"), "", ViewState("SerieVenta")).ToString() - End Get - Set(value As String) - ViewState("SerieVenta") = value - End Set - End Property - Private Property AplicaDocumentoNuevoNC As Boolean - Get - Return CBool(IfNull(ViewState("AplicaDocumentoNuevoNC"), "False", ViewState("AplicaDocumentoNuevoNC"))) - End Get - Set(value As Boolean) - ViewState("AplicaDocumentoNuevoNC") = value - End Set - End Property - Private Property AplicaRNCXDetalle As Boolean - Get - Return CBool(IfNull(ViewState("AplicaRNCXDetalle"), "False", ViewState("AplicaRNCXDetalle"))) - End Get - Set(value As Boolean) - ViewState("AplicaRNCXDetalle") = value - End Set - End Property - Private Property AplicaRNCBonificacionXDetalle As Boolean - Get - Return CBool(IfNull(ViewState("AplicaRNCBonificacionXDetalle"), "False", ViewState("AplicaRNCBonificacionXDetalle"))) - End Get - Set(value As Boolean) - ViewState("AplicaRNCBonificacionXDetalle") = value - End Set - End Property - Private Property AplicaRelacionManual As Boolean - Get - Return CBool(IfNull(ViewState("AplicaRelacionManual"), "False", ViewState("AplicaRelacionManual"))) - End Get - Set(value As Boolean) - ViewState("AplicaRelacionManual") = value - End Set - End Property - Private Property TmpDTFacturasRelacionadas As DataTable - Get - If ViewState("TmpDTFacturasRelacionadas") IsNot Nothing Then - Return CType(ViewState("TmpDTFacturasRelacionadas"), DataTable) - Else - Return Nothing - End If - End Get - Set(value As DataTable) - ViewState("TmpDTFacturasRelacionadas") = value - End Set - End Property - - Private Property CveAutorizacion As Integer - Get - Return (IfNull(ViewState("CveAutorizacion"), "-1", ViewState("CveAutorizacion"))).ToString().ToEntero() - End Get - Set(value As Integer) - ViewState("CveAutorizacion") = value - End Set - End Property - - Private Property EsGarantia As Boolean - Get - Return CBool(IfNull(ViewState("EsGarantia"), False, ViewState("EsGarantia"))) - End Get - Set(value As Boolean) - ViewState("EsGarantia") = value - End Set - End Property - - Private Property TipoCambioOriginal As Decimal - Get - Return (IfNull(ViewState("TipoCambioOriginal"), 0, ViewState("TipoCambioOriginal"))).ToString().ToDecimal() - End Get - Set(value As Decimal) - ViewState("TipoCambioOriginal") = value - End Set - End Property - - Private Property DtMercancias As DataTable - Get - Return If(IsNothing(ViewState("DtMercancias")), Nothing, CType(ViewState("DtMercancias"), DataTable)) - End Get - Set(value As DataTable) - ViewState("DtMercancias") = value - End Set - End Property - - - Private Property ClienteCodigoRegimenFiscal As String - Get - - If ViewState("ClienteCodigoRegimenFiscal") Is Nothing Then - ViewState("ClienteCodigoRegimenFiscal") = "" - End If - Return ViewState("ClienteCodigoRegimenFiscal").ToString - - End Get - Set(value As String) - ViewState("ClienteCodigoRegimenFiscal") = value - End Set - End Property - - - Private Property ClienteRegimenFiscal As String - Get - - If ViewState("ClienteRegimenFiscal") Is Nothing Then - ViewState("ClienteRegimenFiscal") = "" - End If - Return ViewState("ClienteRegimenFiscal").ToString - - End Get - Set(value As String) - ViewState("ClienteRegimenFiscal") = value - End Set - End Property - Private Property CveLineaAdicionalVenta As Integer - Get - Return IfNull(ViewState("CveLineaAdicionalVenta"), "-1", ViewState("CveLineaAdicionalVenta")).ToString().ToEntero() - End Get - Set(value As Integer) - ViewState("CveLineaAdicionalVenta") = value - End Set - End Property - - Private Property SaldoLineaAdicional As Decimal - Get - Return (IfNull(ViewState("SaldoLineaAdicional"), "0", ViewState("SaldoLineaAdicional"))).ToString().ToDecimal() - End Get - Set(value As Decimal) - ViewState("SaldoLineaAdicional") = value - End Set - End Property - Private Property SaldoIngresosLineaAdicional As Decimal - Get - Return (IfNull(ViewState("SaldoIngresosLineaAdicional"), "0", ViewState("SaldoIngresosLineaAdicional"))).ToString().ToDecimal() - End Get - Set(value As Decimal) - ViewState("SaldoIngresosLineaAdicional") = value - End Set - End Property - - Private Property CveCategoriaLineaAdicional As Integer - Get - Return IfNull(ViewState("CveCategoriaLineaAdicional"), "-1", ViewState("CveCategoriaLineaAdicional")).ToString().ToEntero() - End Get - Set(value As Integer) - ViewState("CveCategoriaLineaAdicional") = value - End Set - End Property - - Private Property CveMonedaLineaAdicional As Integer - Get - Return IfNull(ViewState("CveMonedaLineaAdicional"), "-1", ViewState("CveMonedaLineaAdicional")).ToString().ToEntero() - End Get - Set(value As Integer) - ViewState("CveMonedaLineaAdicional") = value - End Set - End Property - Private Property HabilitoFacturacionIngresoLineaAdicional As Boolean - Get - Return If(IsNothing(ViewState("HabilitoFacturacionIngresoLineaAdicional")), False, CType(ViewState("HabilitoFacturacionIngresoLineaAdicional"), Boolean)) - End Get - Set(value As Boolean) - ViewState("HabilitoFacturacionIngresoLineaAdicional") = value - End Set - End Property - - Private Property CveContratoTipo As Integer - Get - Return IfNull(ViewState("CveContratoTipo"), "-1", ViewState("CveContratoTipo")).ToString().ToEntero() - End Get - Set(value As Integer) - ViewState("CveContratoTipo") = value - End Set - End Property - - Private Property HabilitaRemisionPublicoGeneral As Integer - Get - Return IfNull(ViewState("HabilitaRemisionPublicoGeneral"), "0", ViewState("HabilitaRemisionPublicoGeneral")).ToString().ToEntero() - End Get - Set(value As Integer) - ViewState("HabilitaRemisionPublicoGeneral") = value - End Set - End Property - - Private Property TieneBloqueoPorAutorizacion As Integer - Get - Return IfNull(ViewState("TieneBloqueoPorAutorizacion"), "0", ViewState("TieneBloqueoPorAutorizacion")).ToString().ToEntero() - End Get - Set(value As Integer) - ViewState("TieneBloqueoPorAutorizacion") = value - End Set - End Property - - Public Property IndicePSActual As Integer - Get - Return IfNull(ViewState("IndicePSActual"), "-1", ViewState("IndicePSActual")).ToString().ToEntero() - End Get - Set(value As Integer) - ViewState("IndicePSActual") = value - End Set - End Property - - Public Property CantidadOriginal As Decimal - Get - Return IfNull(ViewState("CantidadOriginal"), "-1", ViewState("CantidadOriginal")).ToString().ToDecimal() - End Get - Set(value As Decimal) - ViewState("CantidadOriginal") = value - End Set - End Property - -#End Region - - - - Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load - - If Not IsPostBack Then - - - - Modalidad = "" - Opcion = "" - Index = 0 - TotAnt = 0 - 'CargoComercioExterior = False - ' DdlBPPS.setEsWebService(True) - 'DdlBPPS.ddlWS.Attributes.Add("data-clear", "1") - ViewState("ProcesoCorrecto") = True - ViewState("CargoUsado") = True - ViewState("NuevaFactura") = -1 - ViewState("CveDevolucion") = -1 - ViewState("CvePedido") = -1 - ViewState("CvePedido2") = -1 - ViewState("TipoContrato") = -1 - ViewState("CveVenta") = -1 - ViewState("CveCliente") = -1 - ViewState("CveClienteAnterior") = -1 - ViewState("CveOS") = -1 - ViewState("CveOC") = -1 - ViewState("CveAnticipo") = -1 - ViewState("CveFactura") = -1 - ViewState("CveCicloComercial") = -1 - ViewState("Entrega") = "" - ViewState("Vigencia") = "" - ViewState("AplicarVentaFacturada") = False - ViewState("SeGuardoPrePoliza") = False - ViewState("TipoDoctoDevolucion") = "" - ViewState("EditoRemision") = False - ViewState("RequiereOC") = False - ViewState("ClienteDesglosaIEPS") = False - ViewState("ClienteNODesglosaIVA") = False - ViewState("ClienteRetIVA") = 0 - ViewState("ClienteRetISR") = 0 - ViewState("CvePrecioLista") = 0 - ViewState("CvePrecioListaCliente") = 0 - HdnCargarInventario.Value = "True" - Me.CveVendedorVenta = -1 - Me.CveVendedorCliente = -1 - Me.CveVendedorClienteSucursal = -1 - Me.CveVendedorContrato = -1 - Me.CveVendedorEmpresaCRM = -1 - Me.EsGarantia = False - CveEmpresaCRM = 0 - CveAcercamientoCRM = 0 - EstatusCliente = False - RemisionesLista = New List(Of Integer) - Pedidos2Lista = New List(Of Integer) - CotizacionesLista = New List(Of Integer) - ListaDescuentos = New List(Of Modelos.VentaDescuentos) - - CuentasContablesInvalidas = New StringBuilder - CvePrePoliza = 0 - TotalOtrosConceptos = 0 - CveUsuarioActual = UsuarioActual.CveUsuario - EmpresaActual = UsuarioActual.Empresa - IdPoliza = 0 - CveCorte = -1 - CveContrato = -1 - DevolucionAlmacen = 0 - CvePSAmortizacion = 0 - EraCotizacion = 0 - FacturaMateriales = 0 - CvePedidoA = 0 - EsCreaApartirDe = False - RequiereAlmacenDestino = False - RequiereAlmacenOrigen = False - TmpDTComplementos = New DataTable - DtRemConceptosSurtidos = Nothing - TipoVentaSucursal = 0 - PlazoCobranza = 0 - PlazoCobranzaRemision = 0 - TipoCambioFactura = 1 - NumeroContrato = "" - DescripcionContrato = "" - NumeroLicitacion = "" - ImprimeNombreSucursal = False - RegistraScript("SetDisabledTxtTotal(true);") - TrVistaPrevia.Visible = False - 'CveMetodoPagoCliente = 1 - CveAlmacenExistenciasContrato = -1 - UpFacturar.Update() - 'CargaTiposDocumentos() - TrEmitir.Visible = False - - ViewState("EstablecioFolio") = False - 'ViewState("SubProyectoPorcentajeIVA") = 0 - RefacturacionGeneroNC = False - ModalidadEdicion = False - ConversionRemision = "" - TipoCambioRemision = 1 - CveOrdenCompraContrato = -1 - TieneContrato = False - AplicaNC = False - TieneAlmacen = False - CveEstatus = -1 - PorcentajeIVA = 0 - EsDiasCreditoFijo = False - DiasCredito = 0 - AplicaCancelarRemision = False - SeCancelaRemisionProceso = False - TotalOriginal = 0 - CveAlmacenDevolucion = 0 - Me.CveEstadoCancelacion = 0 - - - 'TxtFechaOS.Text = NowADS().ToDateTime.ToString("yyyy-MM-dd HH:mm:ss").Replace(" ", "T") - - If UsuarioActual.TienePermisoProceso(177) Then - DdlTipoComprobante.Items.Insert(4, New ListItem("Pedido de Contrato", "Ped")) - End If - - - - - - If Not UsuarioActual.Empresa.Funcionalidad(558) = "1" Then - LnkAgregarCliente.Visible = False - End If - - DdlTipoComprobante.Items.Insert(DdlTipoComprobante.Items.Count, New ListItem("Pedido", "Pd2")) - - If UsuarioActual.Empresa.Funcionalidad(344).ToString() = "1" Then - DdlTipoComprobante.Items.Insert(DdlTipoComprobante.Items.Count, New ListItem("NC de Remisión", "RNC")) - End If - - - SetValues() - - CvePresupuesto = 0 - - 'MODALIDADES - If Request("Op") IsNot Nothing AndAlso Request("Op").ToString() <> "" Then - Opcion = Request("Op").ToString() - LblTitulo.Text = "Registro de Cotizaciones" - TrTipo.Visible = False - - divcondicionespago.Visible = UsuarioActual.Empresa.CvePlataforma = 1 'SI ES PLATAFORMA ERP SIEMPRE VSIBLE ESTE PORLET - ImgAntiPend.Visible = False - - TrOC.Visible = False - DdlTipoComprobante.SelectedValue = "Op" - Else - Opcion = "Ing" - DdlTipoComprobante.SelectedValue = "Ing" - End If - - - LblUsuario.Text = UsuarioActual.Usuario - LblFechaRegistro.Text = NowADS().ToShortDateString() - - - ImgDescTotal.Visible = False - - ImgDescTotal.Attributes.Add("onclick", "javascript:$('#ModalDescuento').modal(); $get('LblTitulo1').style.display = ''; $get('LblTitulo2').style.display = 'none'; $get('LblTituloTipo1').style.display = ''; $get('LblTituloTipo2').style.display = 'none'; $get('HdnTipoDescuento').value = '2'; $get('LblPrecio1').style.display = 'none'; $get('LblTotalPS1').style.display = 'none'; $get('LblSubTotal1').style.display = ''; $get('LblAmort').style.display = 'none'; $get('BtnAplicarDescP').style.display = 'none'; $get('BtnAplicarDescG').style.display = ''; $get('TrMotivoDescuento').style.display = '';") - ImgAntiPend.Attributes.Add("onclick", "$get('HdnTipoDescuento').value = '3'; MuestraAnticipos();") - ImgOtrosConceptos.Attributes.Add("onclick", "javascript:$('#ModalOtrosConceptos').modal();") - - - - - - CreaDTmpC() - CreaDTmpF() - CreaDTDocumentosRelacionados() - CargaDdlSubProyectos() - 'CargaProyecto() - 'CargaSucursales() - CargaClasificaciones() - CargaPS(-1, DdlPS) - CreaDTVentas() - CargaMetodosPago() - CargaUsoCFDI() - CargaMonedas() - - CargaAgentes() - CargaProcedimientos() - CargaTiposVenta() - CargaDdlClientes() - - - - 'SI USUARIO USA AMORTIZACIÓN CONTABLE, se carga las tablas para usarlas mas adelante - If UsuarioActual.Empresa.TipoContabilidad = 2 AndAlso UsuarioActual.Empresa.UsaAC Then - - DdlTipoComprobante.Items.Remove(DdlTipoComprobante.Items.FindByValue("Rem")) - DdlTipoComprobante.Items.Remove(DdlTipoComprobante.Items.FindByValue("Cot")) - DdlTipoComprobante.Items.Add(New ListItem("Compromisos", "Com")) - DdlTipoComprobante.Items.Add(New ListItem("Orden Pago", "OP")) - - Dim AC As New ClsAC - If AC.GetPresupuestoIngresos(-1, NowADS().Year, True, UsuarioActual.CveEmpresa) Then - DdlFuenteRecaudacion.DataSource = AC.DtResultados() - DTPresupuestoIngresos = AC.DtResultados() - ViewState("DTFuenteRecaudacion") = AC.DtResultados() - 'GenerarPolizasAC() - End If - AC.Dispose() - 'columna de Fuente de recaudacion - GvPS.Columns(21).Visible = True - 'nomostrar.Visible = True - 'nomostrar2.Visible = True - 'GvPS.Width = 1250 - DdlFuenteRecaudacion.DataBind() - Else - TFuenteRecaudacion.Visible = False - End If - - 'Carga cliente - If Request("CveCliente") IsNot Nothing AndAlso IsNumeric(Request("CveCliente")) AndAlso Request("CveCliente").ToEntero() > 0 AndAlso Request("CveFactura") Is Nothing Then - ViewState("CveCliente") = Request("CveCliente") - HdnCveCliente.Value = Request("CveCliente") - CargaCliente(CveCliente) - - Else - ViewState("CveCliente") = -1 - HdnCveCliente.Value = "-1" - End If - - 'Carga empresa CRM - If Request("CveEmpresaCRM") IsNot Nothing AndAlso IsNumeric(Request("CveEmpresaCRM")) AndAlso Request("CveEmpresaCRM").ToEntero() > 0 Then - ViewState("CveEmpresaCRM") = Request("CveEmpresaCRM") - CargaEmpresaCRM(CveEmpresaCRM) - Else - ViewState("CveEmpresaCRM") = -1 - End If - - If Request("CveAcercamientoCRM") IsNot Nothing AndAlso IsNumeric(Request("CveAcercamientoCRM")) AndAlso Request("CveAcercamientoCRM").ToEntero() > 0 Then - ViewState("CveAcercamientoCRM") = Request("CveAcercamientoCRM") - - Dim cRMService As ICRMService = New CRMService(System.Configuration.ConfigurationManager.ConnectionStrings("Conexion").ConnectionString) - Dim AcercamientoModel As New RequestAcercamiento(UsuarioActual.CveEmpresa, CveAcercamientoCRM) - Dim objAcercamiento = cRMService.GetAceracamientoCRM(AcercamientoModel) - - If objAcercamiento.Result.Count > 0 Then - CorreoContactoCRM = objAcercamiento.Result(0).CorreoContacto - End If - - Else - ViewState("CveAcercamientoCRM") = -1 - End If - - 'mensaje de confirmación al guardar - BtnEmitirImprimir.OnClientClick = $"ValidaGuardar({ If(ImprimeNombreSucursal = True, 1, 0)},0);" - BtnEmitirImprimir.Attributes.Add("data-toggle", "confirmation") - BtnEmitirImprimir.Attributes.Add("data-popout", "true") - BtnEmitirImprimir.Attributes.Add("data-original-title", "confirmar") - BtnEmitirImprimir.Attributes.Add("data-btn-ok-label", "Guardar") - BtnEmitirImprimir.Attributes.Add("data-html", "true") - - If UsuarioActual.CveEmpresa.Contiene(126) Then ' cuando la empresa se relaciona a ua orden de producción, Citrus Game - TrOP.Visible = True - CargaOrdenProduccion() - End If - - - - If Request("CveOrdenProduccion") IsNot Nothing AndAlso IsNumeric(Request("CveOrdenProduccion")) AndAlso Request("CveOrdenProduccion").ToEntero() > 0 Then - DdlSubProyectoDatos.SelectedValueExist(11954) - Using ObjVentas As New ClsNominas - - If ObjVentas.ManifiestoForVtaGet(UsuarioActual.CveEmpresa, UsuarioActual.CveUsuario, "", -Request("CveOrdenProduccion").ToEntero()) Then - TmpDT = ObjVentas.DtResultados - TmpDT.Columns.Add("EntregaDirecta", GetType(Integer)) - TmpDT.Columns.Add("CveMovimientoDetallePedido", GetType(Integer)) - TmpDT.Columns.Add("CveVentaDetalleRNC", GetType(Integer)) - TmpDT.Columns.Add("TieneProntoPago", GetType(String)) - TmpDT.Columns.Add("ImporteProntoPago", GetType(Decimal)) - TmpDT.Columns.Add("CveMarca", GetType(Integer)) - TmpDT.Columns.Add("CvePrecioLista", GetType(Integer)) - TmpDT.Columns.Add("PrecioLista", GetType(String)) - TmpDT.Columns.Add("CveActivoFijo", GetType(Integer)) - TmpDT.Columns.Add("AFDepreciacion", GetType(Decimal)) - TmpDT.Columns.Add("AFValorInicial", GetType(Decimal)) - TmpDT.Columns.Add("NumTurnos", GetType(Decimal)) - TmpDT.Columns("NumTurnos").DefaultValue = 0D - TmpDT.Columns.Add("NumeroPedimento", GetType(String)) - - GvPS.DataSource = ObjVentas.DtResultados - GvPS.DataBind() - - 'IEPS A NIVEL DETALLE - 'TxtIEPS.Text = If(TmpDT.SUM("IEPS") > 0, TmpDT.SUM("IEPS").FormatoNumero, TxtIEPS.Text) - End If - End Using - End If - - If Request("CveEmbarqueManifiesto") IsNot Nothing AndAlso IsNumeric(Request("CveEmbarqueManifiesto")) AndAlso Request("CveEmbarqueManifiesto").ToEntero() > 0 Then - DdlMoneda.SelectedValueExist(2) - CambiaMoneda() - Using ObjVentas As New ClsNominas - If ObjVentas.EmbarqueManifiestoGet(-1, -1, -1, Request("CveEmbarqueManifiesto").ToString().ToEntero()) And ObjVentas.DtResultados.Rows.Count > 0 Then - DdlSubProyectoDatos.SelectedValueExist(ObjVentas.DtResultados.Rows(0)("CveSubProyecto").ToString()) - End If - If ObjVentas.ManifiestoForVtaGet(UsuarioActual.CveEmpresa, UsuarioActual.CveUsuario, "", Request("CveEmbarqueManifiesto").ToEntero()) Then - TmpDT = ObjVentas.DtResultados - TmpDT.Columns.Add("EntregaDirecta", GetType(Integer)) - TmpDT.Columns.Add("CveMovimientoDetallePedido", GetType(Integer)) - TmpDT.Columns.Add("CveVentaDetalleRNC", GetType(Integer)) - TmpDT.Columns.Add("TieneProntoPago", GetType(String)) - TmpDT.Columns.Add("ImporteProntoPago", GetType(Decimal)) - TmpDT.Columns.Add("CveMarca", GetType(Integer)) - TmpDT.Columns.Add("CvePrecioLista", GetType(Integer)) - TmpDT.Columns.Add("PrecioLista", GetType(String)) - TmpDT.Columns.Add("CveActivoFijo", GetType(Integer)) - TmpDT.Columns.Add("AFDepreciacion", GetType(Decimal)) - TmpDT.Columns.Add("AFValorInicial", GetType(Decimal)) - TmpDT.Columns.Add("NumTurnos", GetType(Decimal)) - TmpDT.Columns("NumTurnos").DefaultValue = 0D - TmpDT.Columns.Add("NumeroPedimento", GetType(String)) - - GvPS.DataSource = ObjVentas.DtResultados - GvPS.DataBind() - - 'IEPS A NIVEL DETALLE - 'TxtIEPS.Text = If(TmpDT.SUM("IEPS") > 0, TmpDT.SUM("IEPS").FormatoNumero, TxtIEPS.Text) - End If - End Using - End If - - - - 'SI ES VENTA NUEVA, NO RECARGAR TAB DE ALMACEN - If CveVenta <= 0 Then - 'REMOVER EVENTO PARA RECARGAR ALMACEN - HdnCargarInventario.Value = "False" - 'spanAlmacen.Attributes.Remove("onclick") - UpParametros.Update() - End If - - CargaEstatusFactura(Opcion) - - If Opcion = "Ing" Then - 'DdlEstatus.Enabled = False - If UsuarioActual.Empresa.TipoFacturacion = "CBB" Then - 'DdlEstatus.SelectedValue = "3" - CveEstatus = 3 - ElseIf UsuarioActual.Empresa.TipoFacturacion = "CFDi" Then - 'DdlEstatus.SelectedValue = "2" - CveEstatus = 2 - End If - End If - - - - - 'CARGA PARA FACTURAR - ViewState("CveRemision") = IfNull(Request("CveRemision").ToEntero(), 0) - ViewState("CveCotizacion") = IfNull(Request("CveCotizacion").ToEntero(), 0) - - 'If ViewState("CveCotizacion").ToString().ToEntero() > 0 Then - ' EsCreaApartirDe = True - 'End If - - If ViewState("CveRemision").ToString().ToEntero() > 0 Or ViewState("CveCotizacion").ToString().ToEntero() > 0 Then - - - ImgAddObs.Visible = True - CargaEventoBitacora() - - DdlTipoComprobante.Enabled = False - DdlTipoComprobante.SelectedValue = "Ing" - - CargaEstatusFactura() - 'DdlEstatus.SelectedValueExist("2") - - ConfiguraTipoDocto() - - - BtnEmitirImprimir.Text = "Facturar" - BtnEmitirImprimir.Visible = True - - UpnTools.Update() - - End If - - If Not ExFolioFactura Then SetPermisos() - If CveVenta < 1 Then CargaFolios() - - - - If CveVenta <= 0 AndAlso UsuarioActual.CveEmpresa.Contiene(7, 122) Then - TxtCantidad.Width = New Unit("100%") - End If - - InicializaImprimirNew() - - TxtSubTotal.Attributes.Add("onKeyUp", "FnSuma()") - TxtIVA.Attributes.Add("onKeyUp", "FnSuma()") - TxtIEPS.Attributes.Add("onKeyUp", "FnSuma()") - TxtRetIVA.Attributes.Add("onKeyUp", "FnSuma()") - TxtRetISR.Attributes.Add("onKeyUp", "FnSuma()") - - CargaFormatoSucursal() - - 'SELECCIONA SUCURSAL DEL USUARIO CUANDO SEA VENTA NUEVA Y SIN CLIENTE - If Not (CveCliente > 0 Or CveVenta > 0) Then - DdlSubProyectoDatos.SelectedValueExist(UsuarioActual.CveSubProyecto) - - If UsuarioActual.TienePermisoProceso(152) Then - DdlSubProyectoDatos.Enabled = False - End If - CambiaSucursal() - UpParametros.Update() - - End If - - 'CUANDO SEA COTIZACION Y SEA COMPUPROVEEDORES (EMPRESA 72) NO DEBE ENVIAR CORREO AL CLIENTE - EnviarCorreoCliente = True - - If UsuarioActual.Empresa.Funcionalidad(531) = "1" AndAlso DdlTipoComprobante.SelectedValue = "Cot" Then - EnviarCorreoCliente = False - End If - - 'MOSTRAR LA OPCION DE AGREGAR PS EN BDH - If UsuarioActual.Empresa.Funcionalidad(531) = "1" AndAlso CveVenta <= 0 Then - ImgOtrosConceptos.Visible = False - GvPS.Columns(8).Visible = False - For Each Gvr As GridViewRow In GvPS.Rows - Gvr.FCLinkButton("imgE").Visible = False - Next - End If - - If UsuarioActual.Empresa.CvePlataforma = 2 Then - ImgOtrosConceptos.Visible = False - GvPS.Columns(8).Visible = False - For Each Gvr As GridViewRow In GvPS.Rows - Gvr.FCLinkButton("imgE").Visible = False - Gvr.FCLinkButton("imgEPyME").Visible = True - Next - - End If - - - If Request("CveVenta") IsNot Nothing AndAlso IsNumeric(Request("CveVenta")) AndAlso Request("CveVenta").ToEntero() = -1 AndAlso UsuarioActual.CveTipoDocumento.Length = 3 Then - CargaDdlSubProyectos() - UpParametros.Update() - DdlTipoComprobante.SelectedValueExist(UsuarioActual.CveTipoDocumento) - CambiaTipoDocto() - - End If - - - - If Not CveVenta > 0 AndAlso UsuarioActual.Empresa.Funcionalidad(403).ToString() = "1" Then - If (DdlTipoComprobante.Items.FindByValue("Ing") IsNot Nothing) Then - DdlTipoComprobante.Items.Remove(DdlTipoComprobante.Items.FindByValue("Ing")) - End If - End If - - - - - LtlTareaNueva.Text = String.Format(" Tarea", CveVenta) - - 'SI ESTA CARGANDO UNA REFACTURACION. VALIDAR QUE LA FACTURA ANTERIOR ESTE CANCELADA - If Me.ObjFacturaNC IsNot Nothing Then - - If Me.CveDevolucion > 0 AndAlso Me.NuevaFactura = 1 Then - Dim TipoEstatus As Integer = GlobalDTEstatusFactura().FiltroPrimeroValor("TipoEstatus", $"CveEstatusFactura = {Me.ObjFacturaNC.CveEstatusFactura}").ToEntero() - If TipoEstatus <> 5 Then - 'ESTATUS DE CANCELACION PENDIENTE - If Not Me.ObjFacturaNC.CveEstatusFactura = 23 Then - Alert($"El documento de tipo '{Me.ObjFacturaNC.TipodeComprobante}' a refacturar no ha sido cancelado. Favor de verificar el documento", TipoMensaje.MsgAdvertencia) - BtnEmitirImprimir.Visible = False - UpFacturar.Update() - End If - End If - End If - End If - - 'VALIDA ESTATUS CLIENTE - SOLO SE PUEDE USAR EL CLIENTE PARA COTIZAR EN CASO DE ESTAR INACTIVO - If Not CveVenta > 0 AndAlso Not BtnEmitirImprimir.Visible AndAlso Request("Op") IsNot Nothing AndAlso Request("Op").ToString() <> "" Then - If DdlTipoComprobante.SelectedValue.Contiene("Cot") Then - BtnEmitirImprimir.Visible = True - TrVistaPrevia.Visible = True - End If - End If - - If Request("CveCotizacion") IsNot Nothing AndAlso IfNull(Request("CveCotizacion"), 0).ToString().ToEntero() > 0 Then - If UsuarioActual.Empresa.Funcionalidad(135).Contiene("1", "2") Then - 'VERIFICA SI NO ESTA AUTORIZADA - If CveEstatusCotizacion <> 8 Then - BtnEmitirImprimir.Enabled = False - BtnEmitirImprimir.Visible = False - Alert("La cotización no esta autorizada", TipoMensaje.MsgAdvertencia) - End If - End If - - End If - - - - If DdlTipoComprobante.SelectedValue.Contiene("Rem") Then - ' IPP 15 Julio 2017 - ERA FALSE - ImgAntiPend.Visible = False - UpPS.Update() - End If - - - BloqueaCondiconesPago() - - - - - - - End If - - End Sub - - Private Sub CargaDdlClientes() - If UsuarioActual.Empresa.Funcionalidad(105) = "1" Then - DdlClientesWS.setEsWebService(True) - Else - DdlClientesWS.setEsWebService(False) - If Not UsuarioActual.Empresa.Funcionalidad(105) = "1" Then - DdlClientesWS.ddl.Items.Clear() - DdlClientesWS.DataSource = GlobalDTCliente(UsuarioActual.CveEmpresa, -1) - DdlClientesWS.DataBind() - DdlClientesWS.ddl.Items.Insert(0, New ListItem("Todos", "-1")) - End If - End If - End Sub - - - Private Sub BloqueaClasificaciones() - If UsuarioActual.Empresa.Funcionalidad(558) = "1" AndAlso DdlTipoComprobante.SelectedValue = "Cot" Then - DdlClasificacion.Enabled = False - DdlUnidadMedida.Enabled = False - End If - End Sub - - Private Sub BloqueaCondiconesPago() - If UsuarioActual.TienePermisoProceso(289) Then - - DdlUsoCFDI.Enabled = False - DdlMetodoPago33.Enabled = False - DdlFormaPago33.Enabled = False - DdlTiposRelacion.Enabled = False - - End If - - UPCondicionesPago.Update() - End Sub - - Private Sub ConfiguraEmpresa() - Select Case UsuarioActual.CveEmpresa - Case 119 - TxtObsPS.Attributes.Add("onkeypress", "setFocus(event,'TxtPrecio');") - End Select - End Sub - - - - - -#Region "C A R G A S" - - Private Sub CargaOrdenProduccion(Optional Opcion As Integer = 1, Optional CveVenta As Integer = -1) - DdlOrdenProduccion.Items.Clear() - Dim CveOrdenProduccion As String = "-1" - Dim ObjCGame As New ClsCGame - If ObjCGame.GetOrdenProduccion(-1, UsuarioActual.CveEmpresa, -1, "-1", MinFecha, MaxFecha, -1) Then - If Opcion = 1 Then - DdlOrdenProduccion.DataSource = ObjCGame.DtResultados.FiltraParametros(String.Format("CveVenta IS NULL ")) - ElseIf Opcion = 2 Then - LnkActualizarOrdenProduccion.Visible = True - DdlOrdenProduccion.DataSource = ObjCGame.DtResultados.FiltraParametros($"CveVenta = {CveVenta} OR CveVenta IS NULL") - If ObjCGame.DtResultados.FiltraParametros($"CveVenta = {CveVenta}").Rows.Count > 0 Then - CveOrdenProduccion = ObjCGame.DtResultados.FiltraParametros($"CveVenta = {CveVenta}").Rows(0)("CveOrdenProduccion").ToString() - End If - End If - DdlOrdenProduccion.Items.Insert(0, New ListItem("Seleccione", "-1")) - End If - ObjCGame.Dispose() - DdlOrdenProduccion.DataBind() - DdlOrdenProduccion.SelectedValueExist(CveOrdenProduccion) - End Sub - Private Sub CargaEstatusFactura(Optional TipoDocto As String = "Ing") - - Dim FiltroCompromiso As String = If(TipoDocto = "Com", "And CveEstatusFactura In (2, 9)", "And CveEstatusFactura Not In (9)") - If TipoDocto.ToUpper.Contiene("EGS", "COM", "ANT") Then TipoDocto = "Ing" - - - - End Sub - Private Sub CargaOS(CveOS As Integer) - Dim OS As New ClsOS - Dim DtDetalle As DataTable = Nothing - Dim DtDetalleMateriales As DataTable = Nothing - - If OS.GetOrdenesServicios(CveOS, -1, -1, -1, -1, UsuarioActual.CveEmpresa) Then - - HdnCveCliente.Value = OS.CveCliente.ToString() - ViewState("CveCliente") = OS.CveCliente - CargaCliente(CveCliente) - - If OS.GetOrdenesServiciosDetalleAFacturar(CveOS) Then - Dim Cons As Integer = 1 - For Each dr As DataRow In OS.DtResultados.FiltraParametros("SeFacturara = 1 ").Rows - - AgregarProductoServicio(dr("Cantidad").ToString().ToDecimal, dr("CveUM").ToString().ToEntero(), dr("UM").ToString(), -1, "", dr("CvePS").ToString().ToEntero(), "", dr("Obs").ToString(), dr("PU").ToString().ToDecimal, 0, -1, "", - dr("CveSubProyecto").ToString().ToEntero(), dr("SubProyecto").ToString()) - 'Dim drt As DataRow = TmpDT.NewRow - - 'drt("Consec") = Cons - 'drt("CvePS") = dr("CvePS") - 'drt("CveClasificacion") = dr("CveClasificacion") - 'drt("Clasificacion") = dr("Clasificacion") - 'drt("PS") = dr("PS") - 'drt("CveOSDetalle") = dr("CveOSDetalle") - 'drt("CodigoPS") = dr("CodigoPS") - 'drt("Cantidad") = dr("Cantidad") - 'drt("CveSubProyecto") = dr("CveSubProyecto") - 'drt("SubProyecto") = dr("SubProyecto") - 'drt("Obs") = dr("Obs") - 'TmpDT.Rows.Add(drt) - 'Cons = Cons + 1 - Next - TmpDT.AcceptChanges() - DtDetalle = OS.DtResultados.FiltraParametros("SeFacturara = 1 ") - End If - - For Each Row As DataRow In DtDetalle.Rows - If OS.GetDetalleMateriales(Row("CveOSDetalle").ToString().ToEntero(), CveOS) Then - If OS.DtResultados.FiltraParametros("SeFacturara = 1").Rows.Count > 0 Then - Alert("Hay materiales en la Orden de Servicio, ¿Desea facturar los materiales?", TipoMensaje.MsgConfirmacion, "BtnMateriales()") - End If - End If - Next - - OS.Dispose() - - - - - CalculaTotalesVenta(False) - - GvPS.DataSource = TmpDT - DtInv = TmpDT.Copy.FiltraParametros("CveTipoPS = 2") - GvPS.DataBind() - - 'JJMQ 20160506: Se agrego para la validacion de pago de contado. - 'CVImporteContado.ValueToCompare = TxtTotal.Text.Replace(",", "") - - - UpPS.Update() - End If - End Sub - - - Private Sub CargaTiposDocumentos() - DdlTipoComprobante.DataSource = GlobalDTTiposDocumentos() - DdlTipoComprobante.DataBind() - End Sub - Private Sub CargaNuevaFactura(OVenta As ClsVentas) - Dim ObjVentas As ClsVentas - - If OVenta IsNot Nothing Then - ObjVentas = OVenta - Else - ObjVentas = New ClsVentas() - End If - - If ObjVentas.GetVenta(CveVenta, UsuarioActual.CveEmpresa, VerificaAlmacen:=False) Then - If ObjVentas.DtResultados IsNot Nothing AndAlso ObjVentas.DtResultados.Rows.Count > 0 Then - Dim drv As DataRow = ObjVentas.DtResultados.Rows(0) - - 'CargaCliente - Dim CveCliente As Integer = drv("CveCliente").ToString().ToEntero() - - HdnCveCliente.Value = CveCliente.ToString() - ViewState("CveCliente") = CveCliente - CargaCliente(CveCliente) - - DdlSucursalCliente.SelectedValueExist(drv("CveClienteSucursal").ToString()) - DdlSubProyectoDatos.SelectedValueExist(drv("CveSubProyecto").ToString()) - - If CveDevolucion > 0 Then - CambiaSucursalGeneral() - End If - CargaClienteSucursal(drv("CveClienteSucursal").ToString().ToEntero()) - - 'CargaDetalle - If ObjVentas.GetVentaDetalle(CveVenta) Then - - - For Each dr As DataRow In ObjVentas.DtResultados.Rows - AgregarProductoServicio(dr("Cantidad").ToString().ToDecimal, dr("CveUM").ToString().ToEntero(), dr("UM").ToString(), dr("CveClasificacion").ToString().ToEntero(), dr("Clasificacion").ToString(), - dr("CvePS").ToString().ToEntero(), dr("PS").ToString(), dr("Obs").ToString(), dr("PU").ToString().ToDecimal, dr("Descuento").ToString().ToDecimal, - dr("CveProyecto").ToString().ToEntero(), dr("Proyecto").ToString(), dr("CveSubProyecto").ToString().ToEntero(), dr("SubProyecto").ToString(), - CveContratoDetalle:=dr("CveContratoDetalle").ToString().ToEntero(), CveVentaDetalleCotizacion:=dr("CveVentaDetalleCotizacion").ToString().ToEntero(), - CveVentaDetalle:=dr("CveVentaDetalle").ToString().ToEntero(), RegeneraIEPS:=False, SeActualiza:=True) - - - Next - - - - ObjVentas.DtResultados.Columns.Add("TieneProntoPago", GetType(String)) - ObjVentas.DtResultados.Columns.Add("ImporteProntoPago", GetType(Decimal)) - - ObjVentas.DtResultados.Columns("TieneProntoPago").DefaultValue = "No" - ObjVentas.DtResultados.Columns("ImporteProntoPago").DefaultValue = 0 - - GvPS.DataSource = ObjVentas.DtResultados - GvPS.DataBind() - End If - - 'CARGA IMPUESTOS LOCALES - If ObjVentas.GetVentaImpuestosLocales(CveVenta) Then - If ObjVentas.DtResultados.Rows.Count > 0 Then - TrOtros.Visible = True - TmpDTImpuestos = ObjVentas.DtResultados - GvImpuestosLocales2.DataSource = ObjVentas.DtResultados - GvImpuestosLocales2.DataBind() - - If (NuevaFactura = 1) Then - GvImpuestosLocales2.Enabled = True - Else - GvImpuestosLocales2.Enabled = False - End If - - GvImpuestosLocales2.Visible = True - End If - End If - - 'Carga Totales - ViewState("TipoDoctoDevolucion") = drv("TipoDocto").ToString() - TxtSubTotal.Text = drv("SubTotal").ToString().FormatoNumero(2) - LblDescuentos.Text = drv("Descuento").ToString().FormatoNumero(2) - LblAmortizacion.Text = drv("Amortizacion").ToString().FormatoNumero(2) - TxtSubTotal2.Text = (TxtSubTotal.Text.Replace(",", "").Trim.Trim.ToDouble - LblDescuentos.Text.Replace(",", "").Trim.Trim.ToDouble - LblAmortizacion.Text.Replace(",", "").Trim.Trim.ToDouble).FormatoNumero(2) - TxtIVA.Text = drv("IVA").ToString().FormatoNumero(2) - TxtRetIVA.Text = drv("RetIVA").ToString().FormatoNumero(2) - If TxtRetIVA.Text.ToDecimal() > 0 Then - TrRetIVA.Style.Add("display", "") - UsuarioActual.Empresa.MostrarRetIVA = True - End If - TxtRetISR.Text = drv("RetISR").ToString().FormatoNumero(2) - TxtTotal.Text = drv("Total").ToString().FormatoNumero(2) - TotalOriginal = Math.Round(drv("Total").ToString().ToDouble, 2) - HdnVentaSaldo.Value = drv("Total").ToString() - - TxtObsFact.Text = drv("Observaciones").ToString() - DdlMoneda.SelectedValue = drv("CveMoneda").ToString() - CambiaMoneda() - TxtTipoCambio.Text = drv("TipoCambio").ToString() - CvePAC = drv("CvePAC").ToString().ToEntero() - - DdlUsoCFDI.SelectedValueExist(drv("CveUsoCFDI").ToString()) - DdlMetodoPago33.SelectedValueExist(drv("CveMetodoPago33").ToString()) - CargaFormaPago(DdlMetodoPago33.SelectedValue.ToEntero()) - DdlFormaPago33.SelectedValueExist(drv("CveFormaPago33").ToString()) - - DdlTipoComprobante.SelectedValueExist(drv("TipoDocto").ToString()) - DdlTipoComprobante.Enabled = False - - HdnIVAOriginal.Value = TxtIVA.Text - HdnAmortizacion.Value = "0" 'LblAmort.Text.ToDouble.ToString() - HdnSubTotalDescuestos.Value = (TxtSubTotal.Text.Replace(",", "").ToDouble - LblDescuentos.Text.Replace(",", "").ToDouble - LblAmortizacion.Text.Trim.Replace(",", "").ToDouble - TxtRetISR.Text.Replace(",", "").ToDouble).FormatoNumero(2) - - 'JJMQ 20160506: Se agrego para la validacion de pago de contado. - 'CVImporteContado.ValueToCompare = TxtTotal.Text.Replace(",", "") - - CveContrato = drv("CveContrato").ToString().ToEntero() - - Updatetabs.Update() - UpPS.Update() - - - End If - End If - - If OVenta Is Nothing Then - ObjVentas.Dispose() - End If - End Sub - - Private Sub CargaMetodosPago() - - 'FACTURACION 3.3 - DdlMetodoPago33.DataSource = GlobalDTVtaMetodoPago - - DdlMetodoPago33.DataBind() - DdlMetodoPago33.SelectedValueExist("3") - - CargaFormaPago(DdlMetodoPago33.SelectedValue.ToEntero()) - - 'End If - - End Sub - Private Sub CargaFormaPago(CveMetodoPago As Integer) - Dim dtt As DataTable = Nothing - If CveMetodoPago > 0 Then - dtt = GlobalDTVtaFormaPago.FiltraParametros(If(CveMetodoPago = 1, " CveFormaPago <> 20 ", "CveFormaPago = 20")) - Else - dtt = GlobalDTVtaFormaPago - End If - DdlFormaPago33.Items.Clear() - DdlFormaPago33.DataSource = dtt - DdlFormaPago33.SelectedValue = dtt.FiltroPrimeroValor("CveFormaPago", "") - DdlFormaPago33.DataBind() - - - - If UsuarioActual.CveRol = 1 AndAlso CveMetodoPago = 1 AndAlso DdlTipoComprobante.SelectedValue = "Cot" AndAlso UsuarioActual.Empresa.Funcionalidad(558) = "1" AndAlso TbDescuentosAdicionales.Visible Then - If TmpDT.SUMD("Descuento") > 0 Then - Dim TotalDescuento As Decimal = TmpDT.SUMD("Total", "Descuento > 0") * 0.05D - Dim RowDescuentos As DataRow() = TmpDT.Select("Descuento > 0") - - If RowDescuentos IsNot Nothing Then - LblDescuentoAdicional.Text = TotalDescuento.FormatoNumero(2) - CalculaTotalesVenta() - End If - Else - LblDescuentoAdicional.Text = "0.00" - End If - UpPS.Update() - End If - 'End If - End Sub - Private Sub CargaUsoCFDI() - DdlUsoCFDI.Items.Clear() - 'DdlSucursalUsoCFDI.Items.Clear() - - Dim EsPersonaMoral As Boolean = (TipoPersona = True) - - DdlUsoCFDI.DataSource = GlobalDTSATUsosCFDI(If(Not EsPersonaMoral, 1, 0), RegimenFiscalReceptor:=RegimenFiscalCliente) - 'DdlSucursalUsoCFDI.DataSource = GlobalDTSATUsosCFDI(If(Not EsPersonaMoral, 1, 0), RegimenFiscalReceptor:=RegimenFiscalCliente) - - DdlUsoCFDI.DataBind() - 'DdlSucursalUsoCFDI.DataBind() - - If Not UsuarioActual.CveEmpresa.Contiene(76, 15) Then - If DdlUsoCFDI.DataSource IsNot Nothing Then - If DdlUsoCFDI.Items.FindByValue("25") IsNot Nothing Then - DdlUsoCFDI.Items.Remove(DdlUsoCFDI.Items.FindByValue("25")) - End If - End If - End If - - DdlUsoCFDI.Items.Insert(0, New ListItem("Seleccione", "-1")) - ' DdlSucursalUsoCFDI.Items.Insert(0, New ListItem("Seleccione", "-1")) - - End Sub - - - - - - - Private Sub CargaMonedas() - DdlMoneda.DataSource = GlobalDTMonedas - DdlMoneda.DataBind() - - End Sub - 'Private Sub CargaProyecto() - ' Dim CveSubProyecto As Integer = 0 - ' Dim dtt As DataTable = GlobalDTProyectosUsuarios(UsuarioActual.CveUsuario, -1, UsuarioActual.CveEmpresa, -1) - - ' DdlProyecto.DataSource = dtt - ' DdlProyecto.DataBind() - 'CveSubProyecto = GetSubProyectoSucursal() - ' CargaSubProyecto(CveSubProyecto) - - 'End Sub - Private Function GetSubProyectoSucursal() As Integer - Dim Retorno As Integer = 0 - - 'Dim dr As DataRow = GlobalDTSubProyectosUsuarios(UsuarioActual.CveUsuario, -1, UsuarioActual.CveEmpresa, -1, 1).FiltroPrimero($"CveSubProyecto = {If(DdlSubProyectoDatos.SelectedValue = "", "-1", DdlSubProyectoDatos.SelectedValue)}") - ''Dim dr As DataRow = GlobalDTSubProyectos(-1, CveEmpresa:=UsuarioActual.CveEmpresa).FiltroPrimero($"CveSubProyecto = {If(DdlSubProyectoDatos.SelectedValue = "", "-1", DdlSubProyectoDatos.SelectedValue)}") - - ''si hay un proyecto relacionado con el subproyecto - 'If dr IsNot Nothing AndAlso dr("CveSubProyecto").ToString().ToEntero() > 0 Then - ' DdlProyecto.SelectedValueExist(dr("CveProyecto")) - ' Retorno = dr("CveSubProyecto").ToString().ToEntero() - 'End If - - Return Retorno - - End Function - 'Private Sub CargarAlmacenes() - ' If UsuarioActual.Empresa.UsaInventarios Then - ' If (CveVenta > 0 And DdlTipoComprobante.SelectedValue <> "Cot") AndAlso Not (UsuarioActual.Empresa.Funcionalidad(558) = "1" AndAlso EsCreaApartirDe) Then - ' DivAlmacen.Visible = False - ' Else - ' Dim DTAlmacen As DataTable - ' ddlAlmacen.Items.Clear() - - ' DTAlmacen = GlobalDTAlmacenUsuarios(UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa).FiltraParametros($"CveSubProyecto = {DdlSubProyectoDatos.SelectedValue.ToEntero()}") - ' ddlAlmacen.DataSource = DTAlmacen - - ' ddlAlmacen.Items.Insert(0, New ListItem("Seleccione ", "-1")) - ' ddlAlmacen.SelectedValueExist("-1") - - ' ddlAlmacen.DataBind() - - ' If GlobalDTAlmacenUsuarios(UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa).FiltraParametros($"CveSubProyecto = {DdlSubProyectoDatos.SelectedValue.ToEntero()}").Rows.Count > 0 Then - ' 'SI ES DEL MISMO SUB PROYECTO SUGIERE EL ALMACEN ASIGNADO AL USUARIO - ' If UsuarioActual.CveSubProyecto = DdlSubProyectoDatos.SelectedValue.ToEntero() Then - ' ddlAlmacen.SelectedValueExist(UsuarioActual.CveAlmacen) - ' Else - ' Dim CveAlmacen As Integer = GlobalDTAlmacenUsuarios(UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa).FiltroPrimeroValor("CveAlmacen", $"CveSubProyecto = {DdlSubProyectoDatos.SelectedValue.ToEntero()}").ToEntero() - ' ddlAlmacen.SelectedValueExist(CveAlmacen) - ' End If - - ' End If - - ' End If - - ' 'SI TIENE CONTRATO NO SE MUEVE - ' If Not CveContrato > 0 Then - ' DdlAlmacenAsignado.Items.Clear() - ' DdlAlmacenAsignado.DataSource = GlobalDTAlmacenUsuarios(UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveTipoAlmacen:=-1).FiltraParametros($"CveSubProyecto = {DdlSubProyectoDatos.SelectedValue.ToEntero()} AND CveTipoAlmacen IN (4,10)") - ' DdlAlmacenAsignado.Items.Insert(0, New ListItem(" Seleccione ", "-1")) - ' DdlAlmacenAsignado.SelectedValue = "-1" - ' DdlAlmacenAsignado.DataBind() - ' DdlAlmacenAsignado.SelectedValueExist(GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("CveAlmacen", $"CveTipoAlmacen = 10 AND CveSubProyecto = {DdlSubProyectoDatos.SelectedValue.ToEntero()}").ToString().ToEntero()) - ' End If - - ' If CveContrato > 0 AndAlso DdlTipoComprobante.SelectedValue.Contiene("Ped", "PeC") Then - ' DdlAlmacenAsignado.DataSource = GlobalDTAlmacenUsuarios(UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveTipoAlmacen:=-1).FiltraParametros($"CveSubProyecto = {DdlSubProyectoDatos.SelectedValue.ToEntero()}") - ' DdlAlmacenAsignado.Items.Insert(0, New ListItem(" Seleccione ", "-1")) - ' DdlAlmacenAsignado.SelectedValue = "-1" - ' DdlAlmacenAsignado.DataBind() - ' DdlAlmacenAsignado.SelectedValueExist(GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("CveAlmacen", $"CveSubProyecto = {DdlSubProyectoDatos.SelectedValue}").ToString().ToEntero()) - ' End If - ' Else - ' ddlAlmacen.DataSource = Nothing - ' ddlAlmacen.DataBind() - ' End If - - ' UpINV.Update() - 'End Sub - Private Sub CargaSubProyecto(Optional CveSubProyecto As Integer = -1, Optional FiltraPorProyecto As Boolean = False) - 'DdlSubProyecto.Items.Clear() - 'DdlSubProyecto.SelectedValue = Nothing - 'If DdlProyecto.SelectedValue.ToEntero() > 0 Then - ' DdlSubProyecto.DataSource = GlobalDTSubProyectosUsuarios(UsuarioActual.CveUsuario, -1, UsuarioActual.CveEmpresa, -1, 1) - ' 'DdlSubProyecto.DataSource = GlobalDTSubProyectos(-1, CveEmpresa:=UsuarioActual.CveEmpresa).FiltraParametros("", "", {"CveSubProyecto", "SubProyecto"}) - 'End If - 'DdlSubProyecto.DataBind() - 'DdlSubProyecto.Items.Insert(0, New ListItem("Sin SubProyecto Asignado", "-1")) - - 'If FiltraPorProyecto Then - ' DdlSubProyecto.Items.Clear() - - ' Using ObjSubP As New ClsSubProyectos - ' If ObjSubP.GetSubProyectos(UsuarioActual.CveEmpresa) Then - ' DdlSubProyecto.DataSource = ObjSubP.DtResultados.FiltraParametros(String.Format("CveProyecto = {0}", DdlProyecto.SelectedValue)) - ' End If - ' End Using - - ' DdlSubProyecto.DataBind() - ' DdlSubProyecto.Items.Insert(0, New ListItem("Sin SubProyecto Asignado", "-1")) - 'End If - - 'If CveSubProyecto > 0 Then DdlSubProyecto.SelectedValueExist(CveSubProyecto) - End Sub - - Private Sub CargaEmpresaCRM(CveEmpresaCRM As Integer) - Dim ObjCRM As New ClsCRM - If ObjCRM.GetEmpresasCRM(UsuarioActual.CveEmpresa, CveEmpresaCRM) Then - If ObjCRM.DtResultados.Rows.Count > 0 Then - ViewState("CveCliente") = IIf(ObjCRM.DtResultados.Rows(0)("CveCliente").ToString().ToEntero() > 0, ObjCRM.DtResultados.Rows(0)("CveCliente"), -1) - HdnCveCliente.Value = CveCliente.ToString() - If (CveCliente > 0) Then - CargaCliente(CveCliente) - - - 'DESACTIVA CAMBIO DE CLIENTE - HlCliente.Attributes.Remove("class") - HlCliente.Attributes.Add("class", "Texto disabled") - TxtCodigo.ReadOnly = True - - UpCliente.Visible = True - - 'UpEmpresaCRM.Visible = False - Else - LblEmpresaCRM.Text = ObjCRM.DtResultados.Rows(0)("Empresa").ToString() - LblRFCCRM.Text = ObjCRM.DtResultados.Rows(0)("RFC").ToString() - LblMedioCaptacionCRM.Text = ObjCRM.DtResultados.Rows(0)("MedioCaptacion").ToString() - - - UPCondicionesPago.Visible = True - - - trNombreCliente.Visible = False - trsucursalciente.Visible = False - TrDireccion.Visible = False - TrCiudad.Visible = False - TrRFC.Visible = False - TrOP.Visible = False - 'trDireccionEnvio.Visible = False - - - trCRM1.Visible = True - trCRM2.Visible = True - trCRM3.Visible = True - - LblTituloPorletCliente.Text = "EMPRESA CRM" - - End If - Me.CveVendedorEmpresaCRM = ObjCRM.DtResultados.Rows(0)("CveVendedorAsignado").ToString().ToEntero() - - - LbAgregar.Enabled = True - - 'TrAtencionA.Visible = True - TrOC.Visible = True - - End If - - - - GvPS.Columns(5).Visible = True - - End If - ObjCRM.Dispose() - End Sub - - Private Sub CargaCliente(CveCliente As Integer, Optional Estatus As Integer = -1) - - If CveCliente <= 0 Then Exit Sub - - - - Dim ObjCliente As New ClsClientes() - - If ObjCliente.GetClientes(CveCliente, "-1", "-1", "-1", "-1", "-1", "-1", -1, UsuarioActual.CveEmpresa, Estatus, TipoCliente:=-1) Then - If ObjCliente.DtResultados.Rows.Count > 0 Then - TxtCodigo.Text = ObjCliente.Codigo - LblCliente.Text = String.Format("{1}", CveCliente, ObjCliente.NombreComercial) - ViewState("NombreCliente") = ObjCliente.Nombre - - ViewState("RequiereOC") = ObjCliente.RequiereOC - EnviarCorreoCliente = ObjCliente.EnviarFactura - EstatusCliente = ObjCliente.Estatus - - Me.PermiteCredito = ObjCliente.PermiteCredito - LnkAgregarCliente.Visible = False - - 'ClienteEsDistribuidor = Boolean.Parse(ObjCliente.DtResultados.Rows(0)("EsDistribuidor").ToString()) - TieneDiasVencidos = Boolean.Parse(ObjCliente.DtResultados.Rows(0)("TieneDiasVencidos").ToString()) - DiasVencidosCliente = ObjCliente.DtResultados.Rows(0)("DiasVencidosCliente").ToString().ToEntero() - - ClienteCodigoRegimenFiscal = ObjCliente.DtResultados.Rows(0)("CodigoRegimenFiscal").ToString() - ClienteRegimenFiscal = ObjCliente.DtResultados.Rows(0)("RegimenFiscal").ToString() - - If EstatusCliente = False And Not DdlTipoComprobante.SelectedValue.Contiene("Cot", "DPe") And (CveVenta <= 0 Or EsCreaApartirDe) Then - Alert("El Cliente seleccionado no esta activo", TipoMensaje.MsgAdvertencia) - BtnEmitirImprimir.Visible = EstatusCliente - TrVistaPrevia.Visible = EstatusCliente - End If - - If ViewState("CveDevolucion") IsNot Nothing AndAlso ViewState("NuevaFactura") IsNot Nothing Then - If (CveDevolucion > 0 AndAlso NuevaFactura = 1) Then - BtnEmitirImprimir.Visible = EstatusCliente - TrVistaPrevia.Visible = EstatusCliente - End If - End If - - 'CUANDO SEA COTIZACION Y SEA COMPUPROVEEDORES (EMPRESA 72) NO DEBE ENVIAR CORREO AL CLIENTE - - - ViewState("Mail") = If(DdlTipoComprobante.SelectedValue = "Cot", ObjCliente.MailCotizacion, ObjCliente.Mail) - ViewState("MailCC") = ObjCliente.NotificarA - CorreoEntregaAlmacen = ObjCliente.DtResultados(0)("CorreoEntregaAlmacen").ToString - LblDireccion.Text = ObjCliente.Direccion - LblColonia.Text = ObjCliente.Colonia - LblCiudad.Text = ObjCliente.Ciudad - LblEstado.Text = ObjCliente.Estado - LblCP.Text = ObjCliente.CP - LblRFC.Text = ObjCliente.RFC - LblTelefono.Text = ObjCliente.Telefono - LblRetIVA.Text = ObjCliente.RetIVA.ToString().FormatoNumero(5) - LblRetISR.Text = ObjCliente.RetISR.ToString().FormatoNumero(5) - If UsuarioActual.Empresa.MostrarRetISR AndAlso ObjCliente.RetISR > 0 Then - ' TrRetISR.Style.Add("display", "none") - TrRetISR.Visible = True - Else - TrRetISR.Visible = False - End If - ViewState("ClienteRetIVA") = ObjCliente.RetIVA / 100 - ViewState("ClienteRetISR") = ObjCliente.RetISR / 100 - - If CveVenta <= 0 OrElse EsCreaApartirDe Then - DdlTipoRetencion.SelectedValueExist(ObjCliente.DtResultados(0)("CveTipoRetencion").ToString()) - DdlTipoRetencion_SelectedIndexChanged(DdlTipoRetencion, EventArgs.Empty) - - ViewState("RetIVAFletes") = ObjCliente.RetieneIVAFletes - If ObjCliente.RetieneIVAFletes Then - TrRetIVA.Style.Add("display", "") - UsuarioActual.Empresa.MostrarRetIVA = True - End If - End If - - ViewState("Vendedor") = ObjCliente.Vendedor - ViewState("CodCliente") = ObjCliente.Codigo - - ViewState("CvePrecioLista") = ObjCliente.CvePrecioLista - ViewState("CvePrecioListaCliente") = ObjCliente.CvePrecioLista - - ViewState("CliNoExt") = ObjCliente.NoExt - ViewState("CliNoInt") = ObjCliente.NoInt - ViewState("CliLocalidad") = If(ObjCliente.Localidad.Trim.Length = 0, ObjCliente.Ciudad.Trim, ObjCliente.Localidad.Trim) - ViewState("CliPais") = ObjCliente.Pais - ImprimeNombreSucursal = ObjCliente.ImprimeNombreSucursal - - RegimenFiscalCliente = ObjCliente.DtResultados(0)("CodigoRegimenFiscal").ToString() - RegimenSociedad = ObjCliente.DtResultados(0)("RegimenSociedad").ToString() - TipoPersona = CBool(ObjCliente.DtResultados(0)("TipoPersona")) - CargaUsoCFDI() - 'ViewState("NumCtaPago") = ObjCliente.NumCtaPago - ViewState("ClienteDesglosaIEPS") = ObjCliente.DesglosaIEPS - - - ViewState("CargoUsado") = ObjCliente.CargoUsados - - Dim dr As DataRow = Nothing - dr = GlobalDTSubProyectos(-1, CveEmpresa:=UsuarioActual.CveEmpresa).FiltroPrimero("TipoSucursal = 1 And Estatus = 'Activo' AND CveEmpresa = " & UsuarioActual.CveEmpresa) - If dr IsNot Nothing Then - ViewState("MatCalle") = dr("Calle") - ViewState("MatNoExt") = dr("NoExt") - ViewState("MatNoInt") = dr("NoInt") - ViewState("MatColonia") = dr("Colonia") - ViewState("MatLocalidad") = dr("Localidad") - ViewState("MatMunicipio") = dr("Municipio") - ViewState("MatEstado") = dr("Estado") - ViewState("MatPais") = dr("Pais") - ViewState("MatCP") = dr("CP") - End If - - - If CveCliente = 239903 AndAlso UsuarioActual.CveEmpresa = 119 Then - DdlMetodoPago33.Enabled = False - 'ObjCliente.CveMetodoPago = 1 ' PUE, y que no se pueda modificar - Else - DdlMetodoPago33.Enabled = True - End If - - Dim CveCotizacion As Integer = IfNull(ViewState("CveCotizacion"), 0).ToString().ToEntero() - - Me.CveMetodoPago33Cliente = ObjCliente.CveMetodoPago33 - Me.CveFormaPago33Cliente = ObjCliente.CveFormaPago33 - - If (CveVenta <= 0 AndAlso CveCotizacion <= 0) Or EsCreaApartirDe Or NuevaFactura = 1 OrElse ModalidadEdicion Then - - DdlMetodoPago33.SelectedValueExist(ObjCliente.CveMetodoPago33) - CambiaMetodoPago33() - DdlFormaPago33.SelectedValueExist(ObjCliente.CveFormaPago33) - - - DdlUsoCFDI.SelectedValueExist(ObjCliente.CveUsoCFDI) - 'SI ES RFC GENERICO NO TIENE OBLIGACIONES FISCALES - If LblRFC.Text.Contiene("XAXX010101000", "XEXX010101000") Then - 'S01 Sin efectos fiscales. - DdlUsoCFDI.SelectedValueExist("23") - DdlUsoCFDI.Enabled = False - RegimenFiscalCliente = "616" - ClienteCodigoRegimenFiscal = "616" - End If - - End If - - PlazoCobranza = ObjCliente.PlazoCobranza - PlazoCobranzaRemision = ObjCliente.PlazoCobranzaRemision - - - - 'funcionalidad EnviarSMSTimbrado - If CveVenta <= 0 And UsuarioActual.Empresa.Funcionalidad(152) <> "" And DdlTipoComprobante.SelectedValue = "Ing" Then - If ObjCliente.CobranzaTelefono <> "" Then - LblMensaje.Text = $"Se enviará mensaje SMS a {ObjCliente.CobranzaTelefono}" - Else - LblMensaje.Text = $"El Cliente no tiene teléfono para envío SMS " - End If - LblMensaje.Visible = True - End If - - 'If Not ObjCliente.RFC = "XAXX010101000" Then - ' TxtNumCtaPago.Text = ObjCliente.NumCtaPago - 'End If - - 'Complementos - - - 'COMERCIO EXTERIOR - ViewState("AplicaComercioExterior") = ObjCliente.AplicaComercioExterior - ViewState("CveTipoOperacion") = ObjCliente.CveTipoOperacion - ViewState("CvePedimento") = ObjCliente.CvePedimento - ViewState("CveIncoterm") = ObjCliente.CveIncoterm - - - ViewState("AplicaFEMSA") = ObjCliente.AplicaFEMSA - - ViewState("AplicaDetallista") = ObjCliente.AplicaDetallista - - - ViewState("AplicaFord") = ObjCliente.AplicaFord - - - If ObjCliente.DtResultados(0)("CveVendedor").ToString().ToEntero() > 0 Then - CveVendedorCliente = ObjCliente.DtResultados(0)("CveVendedor").ToString().ToEntero() - End If - - UpFacturar.Update() - UpnTools.Update() - - If Not CveVenta > 0 Then - If ObjCliente.DtResultados.Rows.Count > 0 Then - If UsuarioActual.TienePermisoProceso(152) Then - DdlSubProyectoDatos.SelectedValueExist(UsuarioActual.CveSubProyecto) - DdlSubProyectoDatos.Enabled = False - Else - DdlSubProyectoDatos.SelectedValueExist(UsuarioActual.CveSubProyecto) ' DdlSubProyectoDatos.SelectedValueExist(ObjCliente.CveSubProyecto) - End If - 'RECARGA LOS VALORES DE LA SUCURSAL - CambiaSucursal() - UpParametros.Update() - End If - End If - - DdlSucursalCliente.Items.Clear() - If ObjCliente.GetSucursales(CveCliente) Then - DdlSucursalCliente.DataSource = ObjCliente.DtResultados - If ObjCliente.DtResultados.Rows.Count > 0 Then - trsucursalciente.Visible = True - Else - trsucursalciente.Visible = False - End If - Else - trsucursalciente.Visible = False - DdlSucursalCliente.DataSource = Nothing - End If - DdlSucursalCliente.Items.Insert(0, New ListItem("Matriz", "-1")) - DdlSucursalCliente.DataBind() - - 'SI UTILIZA EL RFC GENERICO PERMITE FACTURAR SUCURSAL - If (Not UsuarioActual.Empresa.Funcionalidad(558) = "1") AndAlso (CveVenta <= 0 OrElse NuevaFactura = 1) AndAlso LblRFC.Text.Trim() = "XAXX010101000" Then - HabilitarFacturacionSucursal() - End If - - 'CargaFolios() - - - If ObjCliente.GetClienteImpuestosLocales(CveCliente) AndAlso CveVenta <= 0 Then - 'se cargan impuestos locales - Dim DtClienteImpuesto As DataTable = ObjCliente.DtResultados.FiltraParametros("Seleccionado = 1", "Orden") - - If DtClienteImpuesto IsNot Nothing AndAlso DtClienteImpuesto.Rows.Count > 0 Then - - ' If TmpDTImpuestos Is Nothing Then CreaDTImpuestos() Else TmpDTImpuestos.Rows.Clear() - TmpDTImpuestos = DtClienteImpuesto - - GvImpuestosLocales2.DataSource = TmpDTImpuestos - GvImpuestosLocales2.DataBind() - - - If TmpDTImpuestos IsNot Nothing AndAlso TmpDTImpuestos.Rows.Count > 0 Then - TrOtros.Visible = True - GvImpuestosLocales2.Visible = True - TrOtros.Style.Add("display", "") - Else - TrOtros.Visible = False - GvImpuestosLocales2.Visible = False - End If - DtClienteImpuesto.Dispose() - - End If - UpImpuestos.Update() - - End If - - If DdlTipoComprobante.SelectedValue.Contiene("Cot") Then - 'TrAtencionA.Visible = True - TrDireccion.Visible = False - TrCiudad.Visible = False - TrRFC.Visible = False - 'tdTelefonoGen.Visible = False - 'tdTxtTelefonoGen.Visible = False - ElseIf ObjCliente.RFC = "XAXX010101000" AndAlso DdlTipoComprobante.SelectedValue.Contiene("Ing", "Ret") Then - 'TrAtencionA.Visible = True - TrDireccion.Visible = False - TrCiudad.Visible = False - TrRFC.Visible = False - 'tdTelefonoGen.Visible = True - 'tdTxtTelefonoGen.Visible = True - Else - 'TrAtencionA.Visible = False - TrDireccion.Visible = True - TrCiudad.Visible = True - TrRFC.Visible = True - 'tdTelefonoGen.Visible = False - 'tdTxtTelefonoGen.Visible = False - 'TxtAtencionA.Text = "" - 'TxtTelefonoGenerico.Text = "" - End If - - 'TrAtencionA.Visible = True - 'tdVigencia.Visible = DdlTipoComprobante.SelectedValue.Contiene("Cot") - 'tdFechaVigencia.Visible = DdlTipoComprobante.SelectedValue.Contiene("Cot") - - LbAgregar.Enabled = True - - - - If UsuarioActual.CveEmpresa.Contiene(72, 80, 1, 119) Then - BtnEmitirImprimir.OnClientClick = $"ValidaGuardar({ If(ImprimeNombreSucursal = True, 1, 0)});" - BtnEmitirImprimir.Attributes.Add("data-toggle", "confirmation") - BtnEmitirImprimir.Attributes.Add("data-popout", "true") - BtnEmitirImprimir.Attributes.Add("data-original-title", "confirmar") - BtnEmitirImprimir.Attributes.Add("data-btn-ok-label", "Guardar") - BtnEmitirImprimir.Attributes.Add("data-html", "true") - End If - - 'VALIDA ESTATUS CLIENTE - SOLO SE PUEDE USAR EL CLIENTE PARA COTIZAR EN CASO DE ESTAR INACTIVO - If DdlTipoComprobante.SelectedValue.Contiene("Cot", "DPe") Or TipoContrato >= 0 Then 'SI VIENE DE PEDIDO DE AF DESDE CONTRATO NO BLOQUEA CUANDO EL CLIENTE ESTA INACTIVO - BtnEmitirImprimir.Visible = True - TrVistaPrevia.Visible = True - 'Else - ' BtnEmitirImprimir.Visible = EstatusCliente - ' TrVistaPrevia.Visible = EstatusCliente - End If - - TrVistaPrevia.Visible = True - - - - ' si es empresa acumuladores - If UsuarioActual.Empresa.Funcionalidad(531) = "1" Then - CargaPorcentajeMarcas() - End If - - 'CargaFacturasARelacionar() - - UpFacturar.Update() - UpEstatus.Update() - UpPS.Update() - UpParametros.Update() - UPCondicionesPago.Update() - - UpCliente.Update() - - - - - UpnTools.Update() - Else - Alert("Ocurrió un error al cargar los datos del cliente. Por favor vuelva a intentar.", TipoMensaje.MsgError) - End If - End If - ObjCliente.Dispose() - - - - - BloqueaCondiconesPago() - DeshabilitarAplicarNotaDeCredito(LblRFC.Text) - - Dim CveVentaRef As Integer = -1 - - If Me.CveVenta > 0 AndAlso Not EsCreaApartirDe Then - CveVentaRef = Me.CveVenta - End If - - CargaRestriccionesCreditoCliente(True, CveVentaRef) - - If CveVenta <= 0 Then - 'CalculaLineasAdicionales() - HabilitaRemisionPublicoGeneral = 0 - HabilitarRemisionesPublicoGeneral() - End If - - - 'If UsuarioActual.Empresa.Funcionalidad(705) = "1" Then - ' Using ObjVentas As New ClsVentas - ' If ObjVentas.GetLineasAdicionales(-1, CveCliente, -1, -1, DdlMoneda.SelectedValue.ToEntero(), MinFecha, MaxFecha, 0, UsuarioActual.CveEmpresa) Then - ' If ObjVentas.DtResultados.Rows.Count > 0 Then - ' TrLineaAdicional.Visible = True - ' End If - ' End If - ' End Using - 'End If - End Sub - - Private Sub HabilitarRemisionesPublicoGeneral() - If UsuarioActual.Empresa.Funcionalidad(381).Trim() <> "" Then - 'SI ESTA BLOQUEADO POR AUTORIZACION, HABILITAR LA OPCION DE REMISION PARA PUBLICO EN GENERAL - If UsuarioActual.Empresa.Funcionalidad(381).Trim() = CveCliente.ToString() Then - Dim DeshabilitarAutorizacion As Boolean = CBool(GlobalDTSubProyectos(-1, CveSubProyecto:=DdlSubProyectoDatos.SelectedValue.ToEntero(), CveEmpresa:=UsuarioActual.CveEmpresa).FiltroPrimeroValor("DeshabilitaAutorizacion")) - - 'SI ESTA BLOQUEADO POR AUTORZACION O QUE TENGA LA OPCION DE AUTORIZACIONES Y NO SEA DEL MODULO DE COTIZACIONES - If (DdlTipoComprobante.SelectedValue.Contiene("PA") OrElse (DdlTipoComprobante.SelectedValue.Contiene("Cot") AndAlso DdlTipoComprobante.Items.FindByValue("PA") IsNot Nothing AndAlso Not IfNull(Request("Op"), "").ToString() = "Cot")) AndAlso DeshabilitarAutorizacion Then - If DdlTipoComprobante.Items.FindByValue("Rem") Is Nothing Then - DdlTipoComprobante.Items.Insert(0, New ListItem("Remisión", "Rem")) - End If - DdlTipoComprobante.SelectedValueExist("Rem") - HabilitaRemisionPublicoGeneral = 1 - End If - - 'SI TUVO HABILITADO EL BLOQUEO POR AUTORIZACION PERO DESPUES SE CAMBIO MANUAL A REMISION - If DdlTipoComprobante.SelectedValue.Contiene("Rem") AndAlso TieneBloqueoPorAutorizacion = 1 Then - HabilitaRemisionPublicoGeneral = 1 - End If - - 'SI TIENE LA HABILITACION DE REMISION ACTIVA Y LA SUCURSAL NO LO PERMITE - If Not DeshabilitarAutorizacion AndAlso HabilitaRemisionPublicoGeneral = 1 Then - HabilitaRemisionPublicoGeneral = 0 - DdlTipoComprobante.SelectedValueExist("PA") - If DdlTipoComprobante.Items.FindByValue("Rem") IsNot Nothing Then - DdlTipoComprobante.Items.Remove(DdlTipoComprobante.Items.FindByValue("Rem")) - End If - End If - - UpParametros.Update() - - End If - Else - HabilitaRemisionPublicoGeneral = 0 - End If - End Sub - - Private Function ValidaImportePublicoGeneral() As Boolean - Dim retorno As Boolean = False - - If DdlTipoComprobante.SelectedValue = "Rem" AndAlso HabilitaRemisionPublicoGeneral = 1 AndAlso UsuarioActual.Empresa.Funcionalidad(381).Trim() = CveCliente.ToString() Then - Dim Total As Decimal = TxtTotal.Text.ToDecimal() - - If DdlMoneda.SelectedValue = "1" Then - If Total <= 5000D Then - retorno = True - Else - Alert("No puede generar una remisión con un valor mayor a 5,000 MXN. Debe cambiar el tipo de documento a 'Autorización'", TipoMensaje.MsgAdvertencia) - End If - End If - - If DdlMoneda.SelectedValue = "2" Then - If TxtTipoCambio.Text.ToDecimal() > 0 Then - Dim TotalPesos As Decimal = (Total * TxtTipoCambio.Text.ToDecimal()) - If TotalPesos <= 5000D Then - retorno = True - Else - Alert($"No puede generar una remisión con un valor mayor a {(5000 / TxtTipoCambio.Text.ToDecimal()).RoundSQL(2)} USD. Debe cambiar el tipo de documento a 'Autorización'", TipoMensaje.MsgAdvertencia) - End If - Else - Alert("No se ha especificado un tipo de cambio", TipoMensaje.MsgAdvertencia) - End If - - End If - Else - retorno = True - End If - - Return retorno - End Function - - - - - - - Private Sub CargaRestriccionesCreditoCliente(Optional Alertas As Boolean = False, Optional CveVenta As Integer = -1) - - Dim ValorAutorizacion As String = UsuarioActual.Empresa.Funcionalidad(595) - - 'OBLIGAR PAGO DE CONTADO SI EL CLIENTE NO PERMITE CREDITO - If (Not UsuarioActual.Empresa.Funcionalidad(702).Contiene("1", "2")) AndAlso Me.PermiteCredito = False AndAlso ((DdlTipoComprobante.SelectedValue.Contiene("Ing", "Ant", "Rem") AndAlso CveVenta < 1) OrElse (DdlTipoComprobante.SelectedValue.Contiene("Ing", "Ant", "Rem", "Cot", "PA") AndAlso EsCreaApartirDe) OrElse (DdlTipoComprobante.SelectedValue.Contiene("Cot") AndAlso CveVenta > 0)) Then - - 'GENERAR UNA AUTORIZACIÓN SI EL CLIENTE NO PERMITE CREDITO - If UsuarioActual.Empresa.Funcionalidad(595) = "1" AndAlso Not UsuarioActual.TienePermisoProceso(268) Then - 'SI LLEGÓ POR LA OPCIÓN DE COTIZACIÓN NO DEBE DE RESTRINGUIR - If IfNull(Request("Op"), "").ToString() = "Cot" OrElse (DdlTipoComprobante.SelectedValue = "Cot" AndAlso CveVenta > 0) Then - DdlTipoComprobante.SelectedValue = "Cot" - BtnGenerarRemision.Visible = False - Else - DdlTipoComprobante.SelectedValueExistInsert("PA", "Autorización") - DdlTipoComprobante.SelectedValue = "PA" - - TieneBloqueoPorAutorizacion = 1 - End If - - - - DdlTipoComprobante.Items.Remove(DdlTipoComprobante.Items.FindByValue("Ing")) - If Not UsuarioActual.TienePermisoProceso(325) Then - DdlTipoComprobante.Items.Remove(DdlTipoComprobante.Items.FindByValue("Ant")) - End If - DdlTipoComprobante.Items.Remove(DdlTipoComprobante.Items.FindByValue("Rem")) - BtnsFacturar.Visible = False - End If - UPCondicionesPago.Update() - 'CARGAR CREDITO DISPONIBLE AL GENERAR UNA FACTURA - End If - - 'If ((DdlTipoComprobante.SelectedValue.Contiene("Ing", "Ant", "Rem", "Cot", "PA") AndAlso CveVenta <= 0) OrElse (DdlTipoComprobante.SelectedValue.Contiene("Cot") AndAlso CveVenta > 0)) AndAlso PermiteCredito Then - ' 'FUNCIONALIDAD 702 - NO VERIFICAR LIMITE DE CRÉDITO Y CANDADOS DE VENTA - ' If Not UsuarioActual.Empresa.Funcionalidad(702) = "1" Then - - ' Dim CreditoDispo As Decimal = CargaCreditoDisponible(CveCliente, DdlSucursalCliente.SelectedValue.ToEntero()) - - ' If CreditoDispo > 0 Then - ' TrCreditoDisponible.Visible = True - ' LblCreditoDisponible.Text = CreditoDispo.FormatoNumero - ' If PorcentajeCredito > 80 Then TrPorcentajeCredito.Visible = True : LblPorcentajeCredito.Text = $"{PorcentajeCredito.FormatoNumero}%" - - ' If Not UsuarioActual.TienePermisoProceso(268) AndAlso (DdlTipoComprobante.SelectedValue.Contiene("Ing", "Ant", "Rem", "PA") OrElse (DdlTipoComprobante.SelectedValue.Contiene("Cot") AndAlso CveVenta > 0)) AndAlso (Not UsuarioActual.Empresa.Funcionalidad(702).Contiene("2")) Then - ' Dim Vta As New ClsVentas - ' Dim Opcion As Integer = Vta.ObtenerClienteLimitesVenta(CveCliente, UsuarioActual.CveEmpresa) - ' Dim OpcionMsg As String = String.Format("El Cliente se encuentra bloqueado por la siguiente razón:

    {0}", Vta.SerieVenta) - ' Vta.Dispose() - ' If Opcion > 0 Then - ' 'si la cotización no debe de existir este canddado - ' If Alertas Then Alert(OpcionMsg, TipoMensaje.MsgAdvertencia) - ' 'RBLPago.SelectedValue = "2" - ' 'RBLPago.Items(0).Enabled = False - - ' UPCondicionesPago.Update() - - ' If Not EsCreaApartirDe AndAlso (DdlTipoComprobante.SelectedValue = "Cot" AndAlso CveVenta > 0) Then - ' DdlTipoComprobante.SelectedValueExist("Cot") - ' Else - ' If UsuarioActual.Empresa.Funcionalidad(531) <> "1" Then - ' DdlTipoComprobante.SelectedValueExistInsert("PA", "Autorización") - ' DdlTipoComprobante.SelectedValue = "PA" - - ' TieneBloqueoPorAutorizacion = 1 - ' End If - ' End If - - - ' 'si llegó por la opción de cotización no debe de restringuir - ' If IfNull(Request("Op"), "").ToString() = "Cot" OrElse (DdlTipoComprobante.SelectedValue = "Cot" AndAlso CveVenta > 0) Then DdlTipoComprobante.SelectedValue = "Cot" - - ' 'quito remisión y factura - ' If UsuarioActual.Empresa.Funcionalidad(531) <> "1" Then - ' DdlTipoComprobante.Items.Remove(DdlTipoComprobante.Items.FindByValue("Ing")) - ' If Not UsuarioActual.TienePermisoProceso(325) Then - ' DdlTipoComprobante.Items.Remove(DdlTipoComprobante.Items.FindByValue("Ant")) - ' End If - ' DdlTipoComprobante.Items.Remove(DdlTipoComprobante.Items.FindByValue("Rem")) - ' End If - - - ' 'SI ES AUTORIZACION DEBE PERMITIR GENERARLA - ' If (Not DdlTipoComprobante.SelectedValue.Contiene("PA")) AndAlso UsuarioActual.Empresa.Funcionalidad(531) <> "1" Then - ' BtnEmitirImprimir.Visible = False - ' BtnsFacturar.Visible = False - ' LBFacturarAnticipo.Visible = UsuarioActual.TienePermisoProceso(274) - ' BtnGenerarRemision.Visible = False - ' 'LnkPedido2SinFacturar.Visible = False - ' LnkCotizaciones.Visible = False - ' LnkOCs.Visible = False - ' End If - - ' If DdlTipoComprobante.SelectedValue = "Cot" AndAlso UsuarioActual.Empresa.Funcionalidad(531) = "1" Then - ' Dim Autorizacion As Integer = 0 - - ' Dim ObjVentas As New ClsVentas - ' If ObjVentas.GetAutorizacionLimite(UsuarioActual.CveEmpresa, CveCliente, DdlVendedor.SelectedValue.ToEntero, "Ing", CveEstatus:=1) Then - ' Dim RowAutorizacion As DataRow = Nothing - ' 'SI TIENE DIAS VENCIDOS BUSCAR POR TIPO VENCIMIENTO - ' If TieneDiasVencidos Then - ' RowAutorizacion = ObjVentas.DtResultados.FiltroPrimero($"TipoAutorizacion IN(1,2) AND CveVenta IS NULL AND CveTipoDocumento='Ing'", Orderby:="Importe DESC") - ' Else - ' RowAutorizacion = ObjVentas.DtResultados.FiltroPrimero($"TipoAutorizacion = 1 AND CveVenta IS NULL AND CveTipoDocumento='Ing'", Orderby:="Importe DESC") - ' End If - - ' If RowAutorizacion IsNot Nothing Then - ' Autorizacion = RowAutorizacion("CveAutorizacion").ToString().ToEntero() - ' End If - ' End If - ' ObjVentas.Dispose() - - ' 'SI NO TIENE AUTORIZACION, MANTIENE EL BLOQUEO POR CONDICIONES DE CREDITO - ' If Autorizacion > 0 Then - ' BtnsFacturar.Visible = True - ' End If - ' End If - - - ' Else - ' ' el cliente tiene crédito disponible, no tiene bloqueo - ' DdlTipoComprobante.Items.Remove(DdlTipoComprobante.Items.FindByValue("PA")) - ' Dim EsCotizacion As Boolean = False - ' If IfNull(Request("Op"), "").ToString() = "Cot" OrElse (DdlTipoComprobante.SelectedValue = "Cot" AndAlso CveVenta > 0) Then - ' EsCotizacion = True - ' End If - - ' If UsuarioActual.TienePermisoProceso(199) Then DdlTipoComprobante.SelectedValueExistInsert("Rem", "Remisión") ' puede remisionar - ' If UsuarioActual.TienePermisoProceso(60) Then DdlTipoComprobante.SelectedValueExistInsert("Ing", "Ingresos") 'puede facturar - - ' DdlTipoComprobante.SelectedValueExist(UsuarioActual.CveTipoDocumento) - ' If EsCotizacion Then - ' DdlTipoComprobante.SelectedValueExistInsert("Cot", "Cotización") - ' End If - - - ' If EsCotizacion AndAlso UsuarioActual.Empresa.Funcionalidad(531) = "1" Then - ' Dim Autorizacion As Integer = 0 - - ' Dim ObjVentas As New ClsVentas - ' If ObjVentas.GetAutorizacionLimite(UsuarioActual.CveEmpresa, CveCliente, DdlVendedor.SelectedValue.ToEntero, "Ing", CveEstatus:=1) Then - ' Dim RowAutorizacion As DataRow = Nothing - ' 'SI TIENE DIAS VENCIDOS BUSCAR POR TIPO VENCIMIENTO - ' If TieneDiasVencidos Then - ' RowAutorizacion = ObjVentas.DtResultados.FiltroPrimero($"TipoAutorizacion IN(1,2) AND CveVenta IS NULL AND CveTipoDocumento='Ing'", Orderby:="Importe DESC") - ' Else - ' RowAutorizacion = ObjVentas.DtResultados.FiltroPrimero($"TipoAutorizacion = 1 AND CveVenta IS NULL AND CveTipoDocumento='Ing'", Orderby:="Importe DESC") - ' End If - - ' If RowAutorizacion IsNot Nothing Then - ' Autorizacion = RowAutorizacion("CveAutorizacion").ToString().ToEntero() - ' End If - ' End If - ' ObjVentas.Dispose() - - ' 'SI NO TIENE AUTORIZACION, MANTIENE EL BLOQUEO POR CONDICIONES DE CREDITO - ' If Autorizacion > 0 Then - ' BtnsFacturar.Visible = True - ' End If - ' End If - - ' End If - - - ' End If - ' Else - ' 'GENERAR AUTORIZACION SI TIENE EXCEDIO EL LIMITE DE CREDITO - ' Select Case ValorAutorizacion - ' Case "1" 'CREAR DOCUMENTO DE AUTORIZACION PA - ' If Not UsuarioActual.TienePermisoProceso(268) AndAlso DdlTipoComprobante.SelectedValue.Contiene("Rem", "Ing", "Ant", "PA") AndAlso Not (UsuarioActual.Empresa.Funcionalidad(702).Contiene("2")) AndAlso UsuarioActual.Empresa.Funcionalidad(531) <> "1" Then - - ' 'VERIFICAR CANDADOS DE VENTA, REMISIONES SIN FACTURAR, FACTURAS QUE NO TENGAN VENCIDAS - ' Dim Vta As New ClsVentas - ' Dim Opcion As Integer = Vta.ObtenerClienteLimitesVenta(CveCliente, UsuarioActual.CveEmpresa) - ' Dim OpcionMsg As String = String.Format("El Cliente se encuentra bloqueado por la siguiente razón:

    {0}", Vta.SerieVenta) - ' Vta.Dispose() - ' If Opcion > 0 Then - ' 'If Opcion = 1 Then - ' ' BtnEmitirImprimir.Visible = False - ' ' BtnsFacturar.Visible = False - ' 'End If - ' If Alertas Then Alert(OpcionMsg, TipoMensaje.MsgAdvertencia) - ' Else - ' If Alertas Then Alert("El cliente tiene su límite de crédito agotado.", TipoMensaje.MsgAdvertencia) - ' End If - - - - ' UPCondicionesPago.Update() - ' DdlTipoComprobante.SelectedValueExistInsert("PA", "Autorización") - ' DdlTipoComprobante.SelectedValue = "PA" - ' TieneBloqueoPorAutorizacion = 1 - - - ' 'si llegó por la opción de cotización no debe de restringuir - ' If IfNull(Request("Op"), "").ToString() = "Cot" OrElse (DdlTipoComprobante.SelectedValue = "Cot" AndAlso CveVenta > 0) Then DdlTipoComprobante.SelectedValue = "Cot" - ' DdlTipoComprobante.Items.Remove(DdlTipoComprobante.Items.FindByValue("Ing")) - ' If Not UsuarioActual.TienePermisoProceso(325) Then - ' DdlTipoComprobante.Items.Remove(DdlTipoComprobante.Items.FindByValue("Ant")) - ' End If - ' DdlTipoComprobante.Items.Remove(DdlTipoComprobante.Items.FindByValue("Rem")) - ' BtnsFacturar.Visible = False - ' LBFacturarAnticipo.Visible = UsuarioActual.TienePermisoProceso(274) - ' BtnGenerarRemision.Visible = False - ' 'LnkPedido2SinFacturar.Visible = False - ' LnkCotizaciones.Visible = False - ' LnkOCs.Visible = False - - ' Else - - - ' If DdlTipoComprobante.SelectedValue = "Cot" AndAlso CveVenta > 0 Then - ' Dim Vta As New ClsVentas - ' Dim Opcion As Integer = Vta.ObtenerClienteLimitesVenta(CveCliente, UsuarioActual.CveEmpresa) - ' Dim OpcionMsg As String = String.Format("El Cliente se encuentra bloqueado por la siguiente razón:

    {0}", Vta.SerieVenta) - ' Vta.Dispose() - ' If Opcion > 0 Then - ' BtnsFacturar.Visible = False - ' BtnGenerarRemision.Visible = False - ' Alert(OpcionMsg, TipoMensaje.MsgAdvertencia) - ' End If - ' End If - ' End If - ' Case "2" 'Autorizacion desde una solicitud del catalogo de autorizaciones - ' 'RMF. validacion temporal - ' 'verifica si tiene autorizaciones de Nota de crédito autorizadas - ' Dim ObjVentas As New ClsVentas - ' If ObjVentas.GetAutorizacionLimite(UsuarioActual.CveEmpresa, CveCliente, -1, "Ing", CveEstatus:=1) Then - ' Dim RowAutorizacion As DataRow = ObjVentas.DtResultados.FiltroPrimero($"CveVenta IS NULL AND CveTipoDocumento='Egs'", Orderby:="TipoAutorizacion") - ' If RowAutorizacion IsNot Nothing Then - ' DdlTipoComprobante.SelectedValueExistInsert("Egs", "Egresos") - ' End If - ' End If - ' ObjVentas.Dispose() - ' Case Else 'SI NO TIENE NINGUN TIPO DE AUTORIZACION CONFIGURADO - ' 'RMF. codigo temporal para pruebas - ' If Alertas AndAlso UsuarioActual.CveEmpresa = 140 Then - ' Dim Vta As New ClsVentas - ' Dim Opcion As Integer = Vta.ObtenerClienteLimitesVenta(CveCliente, UsuarioActual.CveEmpresa) - ' Dim OpcionMsg As String = String.Format("El Cliente se encuentra bloqueado por la siguiente razón:

    {0}", Vta.SerieVenta) - ' Vta.Dispose() - ' If Opcion > 0 Then - ' LnkSolicitarCredito.Visible = True - ' Alert(OpcionMsg, TipoMensaje.MsgAdvertencia) - ' End If - ' Else - ' 'VERIFICAR CANDADOS DE VENTA - ' If DdlTipoComprobante.SelectedValue = "Cot" AndAlso CveVenta > 0 Then - ' Dim Vta As New ClsVentas - ' Dim Opcion As Integer = Vta.ObtenerClienteLimitesVenta(CveCliente, UsuarioActual.CveEmpresa) - ' Dim OpcionMsg As String = String.Format("El Cliente se encuentra bloqueado por la siguiente razón:

    {0}", Vta.SerieVenta) - ' Vta.Dispose() - ' If Opcion > 0 Then - ' BtnsFacturar.Visible = False - ' BtnGenerarRemision.Visible = False - ' Alert(OpcionMsg, TipoMensaje.MsgAdvertencia) - ' End If - ' End If - - ' End If - ' End Select - - ' End If - ' End If - - 'Else - - - - 'End If - - - - 'Puede hacer pedido - If CveVenta <= 0 Then - If Not UsuarioActual.TienePermisoProceso(177) Then - If DdlTipoComprobante.Items.FindByValue("Pd2") IsNot Nothing Then - DdlTipoComprobante.Items.Remove(DdlTipoComprobante.Items.FindByValue("Pd2")) - End If - End If - End If - - - - End Sub - - - Private Sub CargaClienteSucursal(CveClienteSuc As Integer, Optional ByRef ObjVentas As ClsVentas = Nothing) - Me.ClienteSucursal = Nothing - Me.FacturarSucursal = False - LtlTitleRFCSucursal.Text = "" - LtlRFCSucursal.Text = "" - - Dim ObjCliente As New ClsClientes - If CveClienteSuc > 0 Then - If ObjCliente.GetSucursales(CveCliente, CveClienteSuc) Then - If ObjCliente.DtResultados.Rows.Count > 0 Then - Dim Correo As String = ObjCliente.DtResultados.Rows(0)("Correo").ToString() - If Correo.Trim.Length > 0 Then - ViewState("Mail") = Correo - End If - LblDireccion.Text = ObjCliente.DtResultados.Rows(0)("Direccion").ToString() - LblColonia.Text = ObjCliente.DtResultados.Rows(0)("Colonia").ToString() - LblCiudad.Text = ObjCliente.DtResultados.Rows(0)("Ciudad").ToString() - LblEstado.Text = ObjCliente.DtResultados.Rows(0)("Estado").ToString() - 'TxtNumCtaPago.Text = ObjCliente.DtResultados.Rows(0)("NumCtaPago").ToString() - LblTelefono.Text = ObjCliente.DtResultados.Rows(0)("Telefono").ToString() - - ViewState("CliLocalidad") = ObjCliente.DtResultados.Rows(0)("Localidad").ToString() - ViewState("CliPais") = ObjCliente.DtResultados.Rows(0)("Pais").ToString() - ViewState("CliNoExt") = ObjCliente.DtResultados.Rows(0)("NoExt").ToString() - ViewState("CliNoInt") = ObjCliente.DtResultados.Rows(0)("NoInt").ToString() - Me.CveVendedorClienteSucursal = ObjCliente.DtResultados.Rows(0)("CveVendedor").ToString().ToEntero() - ViewState("CveClienteSucursal") = ObjCliente.DtResultados(0)("CveClienteSucursal").ToString() - ViewState("CliCorreoCot") = ObjCliente.DtResultados.Rows(0)("CorreoCotizacion").ToString() - - 'If ObjCliente.DtResultados.Rows(0)("Estatus").ToString() <> "Activo" Then - ' Alert("La Sucursal/Departamento del cliente se encuentra inactivo", TipoMensaje.MsgAdvertencia) - 'Else - - ' Dim CreditoDispo As Decimal = CargaCreditoDisponible(CveCliente, DdlSucursalCliente.SelectedValue.ToEntero(), ObjVentas) - - ' TrCreditoDisponible.Visible = True - ' LblCreditoDisponible.Text = CreditoDispo.FormatoNumero - ' UPPCreditoDisponible.Update() - ' UpParametros.Update() - 'End If - - 'SI EL CLIENTE TIENE RFC GENERICO Y LA SUCURSAL TIENE RFC DEBE FACTURAR LA SUCURSAL - If (Not UsuarioActual.Empresa.Funcionalidad(558) = "1") AndAlso LblRFC.Text.Trim() = "XAXX010101000" AndAlso Not String.IsNullOrEmpty(ObjCliente.DtResultados.Rows(0)("RFC").ToString()) Then - Me.FacturarSucursal = True - - LtlTitleRFCSucursal.Text = "RFC:" - LtlRFCSucursal.Text = ObjCliente.DtResultados.Rows(0)("RFC").ToString() - - Me.ClienteSucursal = New Modelos.SucursalModel - Me.ClienteSucursal.Nombre = ObjCliente.DtResultados.Rows(0)("SucursalCliente").ToString() - Me.ClienteSucursal.RFC = ObjCliente.DtResultados.Rows(0)("RFC").ToString() - Me.ClienteSucursal.NoExt = CliNoExt - Me.ClienteSucursal.NoInt = CliNoInt - Me.ClienteSucursal.Localidad = CliLocalidad - Me.ClienteSucursal.Direccion = LblDireccion.Text - Me.ClienteSucursal.Colonia = LblColonia.Text - Me.ClienteSucursal.Municipio = LblCiudad.Text - Me.ClienteSucursal.Estado = LblEstado.Text - Me.ClienteSucursal.CP = LblCP.Text - Me.ClienteSucursal.Pais = CliPais - Me.ClienteSucursal.CorreoSucursal = CliCorreoCot.ToString() - Me.ClienteSucursal.TelefonoSucursal = LblTelefono.Text - Me.ClienteSucursal.Sucursal = If(DdlSucursalCliente.SelectedValue.ToEntero() > 0, DdlSucursalCliente.SelectedItem.Text, "") - Me.ClienteSucursal.ImprimeNombreSucursal = ImprimeNombreSucursal.ToString() - - End If - - If CveVenta <= 0 Then - 'CveMetodoPagoCliente = ObjCliente.DtResultados.Rows(0)("CveMetodoPago").ToString().ToEntero() - - DdlMetodoPago33.SelectedValueExist(ObjCliente.DtResultados.Rows(0)("CveMetodoPago33").ToString()) - DdlMetodoPago33_SelectedIndexChanged(DdlMetodoPago33, EventArgs.Empty) - - DdlFormaPago33.SelectedValueExist(ObjCliente.DtResultados.Rows(0)("CveFormaPago33").ToString()) - DdlUsoCFDI.SelectedValueExist(ObjCliente.DtResultados.Rows(0)("CveUsoCFDI").ToString()) - 'SI ES RFC GENERICO NO TIENE OBLIGACIONES FISCALES - If LblRFC.Text.Contiene("XAXX010101000", "XEXX010101000") Then - 'S01 Sin efectos fiscales. - DdlUsoCFDI.SelectedValueExist("23") - DdlUsoCFDI.Enabled = False - RegimenFiscalCliente = "616" - ClienteCodigoRegimenFiscal = "616" - End If - - End If - - - End If - Else - Alert("No se pudieron cargar los datos de la sucursal", TipoMensaje.MsgAdvertencia) - End If - Else - If ObjCliente.GetClientes(CveCliente, "-1", "-1", "-1", "-1", "-1", "-1", -1, UsuarioActual.CveEmpresa, TipoCliente:=-1) Then - If ObjCliente.DtResultados.Rows.Count > 0 Then - ViewState("Mail") = If(DdlTipoComprobante.SelectedValue = "Cot", ObjCliente.MailCotizacion, ObjCliente.Mail) - LblDireccion.Text = ObjCliente.Direccion - LblColonia.Text = ObjCliente.Colonia - LblCiudad.Text = ObjCliente.Ciudad - LblEstado.Text = ObjCliente.Estado - LblCP.Text = ObjCliente.CP - LblTelefono.Text = ObjCliente.Telefono - Me.CveVendedorClienteSucursal = -1 - Me.CveVendedorCliente = ObjCliente.DtResultados.Rows(0)("CveVendedor").ToString().ToEntero() - ViewState("CliNoExt") = ObjCliente.NoExt - ViewState("CliNoInt") = ObjCliente.NoInt - PlazoCobranza = ObjCliente.PlazoCobranza - - Dim CveCotizacion As Integer = IfNull(ViewState("CveCotizacion"), 0).ToString().ToEntero() - - If CveVenta <= 0 AndAlso CveCotizacion <= 0 Then - 'CveMetodoPagoCliente = ObjCliente.CveMetodoPago - - DdlMetodoPago33.SelectedValueExist(ObjCliente.CveMetodoPago33) - DdlMetodoPago33_SelectedIndexChanged(DdlMetodoPago33, EventArgs.Empty) - - DdlFormaPago33.SelectedValueExist(ObjCliente.CveFormaPago33) - DdlUsoCFDI.SelectedValueExist(ObjCliente.CveUsoCFDI) - 'SI ES RFC GENERICO NO TIENE OBLIGACIONES FISCALES - If LblRFC.Text.Contiene("XAXX010101000", "XEXX010101000") Then - 'S01 Sin efectos fiscales. - DdlUsoCFDI.SelectedValueExist("23") - DdlUsoCFDI.Enabled = False - RegimenFiscalCliente = "616" - ClienteCodigoRegimenFiscal = "616" - End If - - End If - - End If - End If - End If - - ''SI LA SUCURSAL DEL CLIENTE NO TIENE VENDEDOR SELECCIONAMOS EL DEL USUARIO - 'If Not -1 > 0 Then - ' DdlVendedor.SelectedValueExist(UsuarioActual.CveVendedor.ToString()) - 'End If - - - - - ObjCliente.Dispose() - - - UpEstatus.Update() - UPCondicionesPago.Update() - UpCliente.Update() - 'UpEmitirTransitorio.Update() - End Sub - Private Function CargaCreditoDisponible(tCveCliente As Integer, tCveSucursalCliente As Integer, Optional ByRef ObjVentas As ClsVentas = Nothing) As Decimal - Dim Retorno As Decimal = 0 - Dim ObjVentasAplciar As ClsVentas = Nothing - If ObjVentas IsNot Nothing Then - ObjVentasAplciar = ObjVentas - Else - ObjVentasAplciar = New ClsVentas - End If - - If ObjVentasAplciar.ObtenerCreditoRestante(tCveCliente, tCveSucursalCliente) Then - If ObjVentasAplciar.DtResultados.Rows.Count > 0 Then - - If tCveSucursalCliente > 0 Then - - Dim LimiteRestanteSucursal As Decimal = ObjVentasAplciar.DtResultados(0)("LimiteRestanteSucursal").ToString().ToDecimal - Dim PorcentajeSaldoSucursal As Decimal = ObjVentasAplciar.DtResultados(0)("PorcentajeSaldoSucursal").ToString().ToDecimal - - Dim LimiteRestanteCliente As Decimal = ObjVentasAplciar.DtResultados(0)("LimiteRestanteCliente").ToString().ToDecimal - Dim PorcentajeSaldoCliente As Decimal = ObjVentasAplciar.DtResultados(0)("PorcentajeSaldoCliente").ToString().ToDecimal - - 'SI EL LIMITE DE LA SUCURSAL ES MAYOR AL DEL CLIENTE DEBE LIMITAR AL DEL CLIENTE - If LimiteRestanteSucursal > LimiteRestanteCliente Then - Retorno = LimiteRestanteCliente - PorcentajeCredito = PorcentajeSaldoCliente - ElseIf LimiteRestanteSucursal < LimiteRestanteCliente Then - Retorno = LimiteRestanteSucursal - PorcentajeCredito = PorcentajeSaldoSucursal - ElseIf LimiteRestanteSucursal = LimiteRestanteCliente Then - Retorno = LimiteRestanteSucursal - PorcentajeCredito = PorcentajeSaldoSucursal - End If - Else - Retorno = ObjVentasAplciar.DtResultados(0)("LimiteRestanteCliente").ToString().ToDecimal - PorcentajeCredito = ObjVentasAplciar.DtResultados(0)("PorcentajeSaldoCliente").ToString().ToDecimal - End If - End If - End If - - If ObjVentas Is Nothing Then - ObjVentasAplciar.Dispose() - End If - Return Retorno - End Function - Private Sub CargaDdlSubProyectos() - Dim dtt As New DataTable - dtt = GlobalDTSubProyectosUsuarios(UsuarioActual.CveUsuario, -1, UsuarioActual.CveEmpresa, -1, 1) - DdlSubProyectoDatos.DataSource = dtt.FiltraParametros("EsSucursal = True ") - DdlSubProyectoDatos.DataBind() - - 'DdlSubProyectoCobranza.DataSource = dtt.FiltraParametros("EsSucursal = True ") - 'DdlSubProyectoCobranza.DataBind() - - 'DdlSubProyectoEjecucion.DataSource = dtt.FiltraParametros("EsSucursal = True ") - 'DdlSubProyectoEjecucion.DataBind() - - 'DdlSubProyectoFiltroAF.DataSource = dtt - 'DdlSubProyectoFiltroAF.DataBind() - 'DdlSubProyectoFiltroAF.Items.Insert(0, New ListItem("Todos", "-1")) - - dtt.Dispose() - End Sub - Private Sub CargaClasificaciones() - If UsuarioActual.Empresa.TipoContabilidad = 2 AndAlso UsuarioActual.Empresa.UsaAC Then - DdlClasificacion.DataSource = GlobalDTClasificaciones(UsuarioActual.CveEmpresa, UsoClasificacion:=1).FiltraParametros(" Codigo = '' OR Codigo IS NULL ", Orderby:="Clasificacion") - Else - DdlClasificacion.DataSource = GlobalDTClasificaciones(UsuarioActual.CveEmpresa).FiltraParametros("UsoClasificacion IN (1,3) and Estado = 1", Orderby:="Clasificacion") - End If - 'DdlClasificacion.DataSource = GlobalDTClasificaciones(UsuarioActual.CveEmpresa) - DdlClasificacion.DataBind() - End Sub - Private Sub CargaPS(CveClasificacion As Integer, Objeto As ADServerControl.Dropdownlost, Optional AplicaParaVenta As Boolean = True) - - Objeto.setEsWebService(UsuarioActual.Empresa.Funcionalidad(141).ToString() = "1") - - If Not UsuarioActual.Empresa.Funcionalidad(141).ToString() = "1" Then - Objeto.ddl.Items.Clear() - 'Objeto.ddl.DataSource = GlobalDTProductosServicios(UsuarioActual.CveEmpresa, CveClasificacion:=CveClasificacion, AplicaParaVenta:=1, Estatus:=1) - Objeto.ddl.DataSource = GlobalDTPSSimplificado(UsuarioActual.CveEmpresa, CveClasificacion:=CveClasificacion, Estatus:=1, AplicaParaVenta:=If(AplicaParaVenta, 1, -1)) - Objeto.ddl.DataBind() - Objeto.ddl.Items.Insert(0, New ListItem("*** Actualizar listado de Productos o Servicios ***", "-2")) - Objeto.ddl.Items.Insert(0, New ListItem("Seleccione el Producto", "-1")) - Else - If Me.CveVenta > 0 Then - DdlSubProyectoDatos.SelectedValueExist(CveSubProyectoVenta) - End If - - Dim cvesubproyecto As String = DdlSubProyectoDatos.SelectedValue - If UsuarioActual.Empresa.Funcionalidad(558) = "1" OrElse UsuarioActual.Empresa.Funcionalidad(531) = "1" Then - 'cuando es empresa llantera (558) o cuando es empresa acumuladores - cvesubproyecto = "-1" - End If - - Objeto.Attributes.Add("data-cvesubproyecto", cvesubproyecto) - Objeto.ddlWS.Attributes.Add("data-cveclasificacion", CveClasificacion.ToString()) - Objeto.ddlWS.Attributes.Add("data-Estatus", "1") - If AplicaParaVenta Then - Objeto.ddlWS.Attributes.Add("data-pagina", "ventas/ventas") - Objeto.ddlWS.Attributes.Add("data-AplicaparaVenta", "1") - End If - End If - - End Sub - - Private Sub CargaTiposVenta() - RBLTipoVenta.DataSource = GlobalDTTipoVenta().FiltraParametros("Estatus = 'True' ") - RBLTipoVenta.DataBind() - - RegistraScript("$('#DvModalTipoVenta').modal({ backdrop: 'static', keyboard: false });") - End Sub - - Private Sub CargaProcedimientos() - DdlMedico.DataSource = GlobalDTMedicos(UsuarioActual.CveEmpresa).FiltraParametros("Estatus = 'True' ") - DdlMedico.DataBind() - - DdlMedicoModal.DataSource = GlobalDTMedicos(UsuarioActual.CveEmpresa).FiltraParametros("Estatus = 'True' ") - DdlMedicoModal.DataBind() - End Sub - - Private Sub CargaAgentes() - DdlProcedimiento.DataSource = GlobalDTProcedimientos(UsuarioActual.CveEmpresa).FiltraParametros("Estatus = 'True' ") - DdlProcedimiento.DataBind() - - DdlProcedimientoModal.DataSource = GlobalDTProcedimientos(UsuarioActual.CveEmpresa).FiltraParametros("Estatus = 'True' ") - DdlProcedimientoModal.DataBind() - - End Sub - - Private Sub CargaPSRemision(CveClasificacion As Integer, Objeto As ADServerControl.Dropdownlost) - - Objeto.setEsWebService(UsuarioActual.Empresa.Funcionalidad(141).ToString() = "1") - - If Not UsuarioActual.Empresa.Funcionalidad(141).ToString() = "1" Then - Objeto.ddl.Items.Clear() - 'Objeto.ddl.DataSource = GlobalDTProductosServicios(UsuarioActual.CveEmpresa, CveClasificacion:=CveClasificacion, AplicaParaVenta:=1, Estatus:=1) - Objeto.ddl.DataSource = GlobalDTPSSimplificado(UsuarioActual.CveEmpresa, CveClasificacion:=CveClasificacion, Estatus:=1, AplicaParaVenta:=1) - Objeto.ddl.DataBind() - Objeto.ddl.Items.Insert(0, New ListItem("*** Actualizar listado de Productos o Servicios ***", "-2")) - Objeto.ddl.Items.Insert(0, New ListItem("Seleccione el Producto", "-1")) - Else - Dim cvesubproyecto As String = "-1" - - Objeto.Attributes.Add("data-cvesubproyecto", cvesubproyecto) - Objeto.ddlWS.Attributes.Add("data-cveclasificacion", CveClasificacion.ToString()) - Objeto.ddlWS.Attributes.Add("data-pagina", "ventas/ventas") - Objeto.ddlWS.Attributes.Add("data-Estatus", "1") - Objeto.ddlWS.Attributes.Add("data-AplicaparaVenta", "1") - End If - - End Sub - - -#End Region - -#Region "G R I D V I E W S" - - Protected Sub GvPS_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GvPS.RowDataBound - If e.Row.RowType = DataControlRowType.DataRow Then - e.Row.Attributes("id") = e.Row.RowIndex.ToString() - If e.Row.RowIndex = 0 Then - End If - - - If e.Row.RowState = DataControlRowState.Edit OrElse e.Row.RowState = 5 Then - 'MODO EDICION - - If UsuarioActual.Empresa.UsaInventarios Then - e.Row.FCDropDownList("DdlUnidadMedida").DataSource = GlobalDTProductosServiciosEquivalencias(e.Row.DBCampo("CvePS").ToEntero(), -1, UsuarioActual.CveEmpresa) - Else - e.Row.FCDropDownList("DdlUnidadMedida").DataSource = GlobalDTUnidadesMedida(UsuarioActual.CveEmpresa) - End If - e.Row.FCDropDownList("DdlUnidadMedida").DataBind() - e.Row.FCDropDownList("DdlUnidadMedida").SelectedValueExist(e.Row.DBCampo("CveUM")) - - e.Row.FCDropDownList("DdlClasificacion").DataSource = GlobalDTClasificaciones(UsuarioActual.CveEmpresa, UsoClasificacion:=1) - e.Row.FCDropDownList("DdlClasificacion").DataBind() - e.Row.FCDropDownList("DdlClasificacion").SelectedValue = e.Row.DBCampo("CveClasificacion") - CargaPS(e.Row.FCDropDownList("DdlClasificacion").SelectedValue.ToEntero(), e.Row.FCDropDownLost("DdlPS")) - e.Row.FCDropDownLost("DdlPS").SelectedText = e.Row.DBCampo("PS") - e.Row.FCDropDownLost("DdlPS").SelectedValue = e.Row.DBCampo("CvePS") - - - If e.Row.DBCampo("CveSubProyecto") = "-1" Then - 'cargo todos las opciones para - 'e.Row.FCDropDownList("DdlProyecto").DataSource = GlobalDTProyectosUsuarios(UsuarioActual.CveUsuario, -1, UsuarioActual.CveEmpresa, -1) - 'e.Row.FCDropDownList("DdlProyecto").DataBind() - 'e.Row.FCDropDownList("DdlProyecto").Items.Insert(0, New ListItem("Sin Proyecto Asignado", "-1")) - - 'e.Row.FCDropDownList("DdlSubProyecto").DataSource = GlobalDTSubProyectosUsuarios(UsuarioActual.CveUsuario, -1, UsuarioActual.CveEmpresa, -1, 1) - 'e.Row.FCDropDownList("DdlSubProyecto").DataBind() - 'e.Row.FCDropDownList("DdlSubProyecto").Items.Insert(0, New ListItem("Sin SubProyecto Asignado", "-1")) - - Else - 'Dim dr As DataRow = GlobalDTSubProyectosUsuarios(UsuarioActual.CveUsuario, -1, UsuarioActual.CveEmpresa, e.Row.DBCampo("CveSubProyecto").ToEntero(), 1).FiltroPrimero("") - - 'If dr IsNot Nothing Then - ' e.Row.FCDropDownList("DdlProyecto").DataSource = GlobalDTProyectosUsuarios(UsuarioActual.CveUsuario, -1, UsuarioActual.CveEmpresa, -1) - ' e.Row.FCDropDownList("DdlProyecto").DataBind() - ' e.Row.FCDropDownList("DdlProyecto").SelectedValue = dr("CveProyecto").ToString() - ' e.Row.FCDropDownList("DdlSubProyecto").DataSource = GlobalDTSubProyectosUsuarios(UsuarioActual.CveUsuario, dr("CveProyecto").ToString().ToEntero(), UsuarioActual.CveEmpresa, -1, 1) - ' e.Row.FCDropDownList("DdlSubProyecto").DataBind() - ' e.Row.FCDropDownList("DdlSubProyecto").SelectedValueExist(e.Row.DBCampo("CveSubProyecto")) - - 'End If - - End If - - If UsuarioActual.TienePermisoProceso(68) Then - e.Row.FCTextBox("TxtPrecio").Enabled = False - e.Row.FCTextBox("TxtDescuento").Enabled = False - End If - - - If Not EsCreaApartirDe Then - 'Si es una devolucion - If NuevaFactura = 0 Then - e.Row.FCDropDownList("DdlUnidadMedida").Enabled = False - e.Row.FCDropDownList("DdlClasificacion").Enabled = False - e.Row.FCDropDownLost("DdlPS").Enabled = False - 'e.Row.FCDropDownList("DdlProyecto").Enabled = False - 'e.Row.FCDropDownList("DdlSubProyecto").Enabled = False - e.Row.FCTextBox("TxtPrecio").Enabled = False - ElseIf NuevaFactura = 1 Or CveContrato > 0 Then - e.Row.FCDropDownList("DdlUnidadMedida").Enabled = False - e.Row.FCDropDownList("DdlClasificacion").Enabled = False - e.Row.FCDropDownLost("DdlPS").Enabled = False - e.Row.FCTextBox("TxtCantidad").Enabled = False - e.Row.FCTextBox("TxtPrecio").Enabled = False - e.Row.FCTextBox("TxtDescuento").Enabled = False - - If TieneAlmacen Then e.Row.FCLinkButton("imgD").Visible = False - - If UsuarioActual.TienePermisoProceso(222) Then - e.Row.FCDropDownList("DdlUnidadMedida").Enabled = True - e.Row.FCDropDownList("DdlClasificacion").Enabled = True - e.Row.FCDropDownLost("DdlPS").Enabled = True - e.Row.FCTextBox("TxtCantidad").Enabled = True - e.Row.FCTextBox("TxtPrecio").Enabled = True - e.Row.FCTextBox("TxtDescuento").Enabled = True - End If - - End If - End If - - 'Si es facturacion de OC o Contrato - If CveContrato > 0 AndAlso Not CveVenta > 0 AndAlso Not CveCicloComercial > 0 Then - e.Row.FCLinkButton("imgClone").Visible = False - e.Row.FCTextBox("TxtOrden").Visible = True - e.Row.FCTextBox("TxtCantidad").Enabled = False - e.Row.FCDropDownList("DdlUnidadMedida").Enabled = False - e.Row.FCDropDownList("DdlClasificacion").Enabled = False - e.Row.FCDropDownLost("DdlPS").Enabled = False - 'e.Row.FCDropDownList("DdlProyecto").Enabled = False - 'e.Row.FCDropDownList("DdlSubProyecto").Enabled = False - e.Row.FCTextBox("TxtPrecio").Enabled = False - End If - - If CveContrato > 0 AndAlso CveContratoTipo = 33 Then - e.Row.FCTextBox("TxtCantidad").Enabled = True - e.Row.FCTextBox("TxtPrecio").Enabled = True - End If - - If DTOrdenesCompraPS IsNot Nothing AndAlso DTOrdenesCompraPS.Rows.Count > 0 Then - e.Row.FCLinkButton("imgClone").Visible = False - e.Row.FCTextBox("TxtOrden").Visible = True - e.Row.FCTextBox("TxtCantidad").Enabled = False - e.Row.FCDropDownList("DdlUnidadMedida").Enabled = False - e.Row.FCDropDownList("DdlClasificacion").Enabled = False - ' e.Row.FCDropDownList("DdlProyecto").Enabled = False - 'e.Row.FCDropDownList("DdlSubProyecto").Enabled = False - e.Row.FCLiteral("LtlPSEdit").Visible = True - e.Row.FCDropDownLost("DdlPS").Visible = False - e.Row.FCDropDownLost("DdlPS").Enabled = False - e.Row.FCTextBox("TxtPrecio").Enabled = True - End If - - If CveCicloComercial > 0 Then - e.Row.FCTextBox("TxtPrecio").Enabled = True - End If - - 'CUANDO SE QUIERE FACTURAR UNA REMISIÓN NO PERMITE EDITAR SU PRECIO - If DtRemisionesPS IsNot Nothing AndAlso DtRemisionesPS.Rows.Count > 0 AndAlso (e.Row.DBCampo("CveVentaDetalle").ToEntero() > 0 Or e.Row.DBCampo("CveVentaDetalleRemision").ToEntero() > 0) Then - e.Row.FCTextBox("TxtPrecio").Enabled = False - End If - - 'PERMISO EDITAR REM - If e.Row.DBCampo("TipoDocto") = "Rem" And ModalidadEdicion Then - 'LO PERMITIDO MODIFICAR - e.Row.FCTextBox("TxtPrecio").Enabled = True - e.Row.FCTextBox("TxtObsPS").Enabled = True - e.Row.FCTextBox("TxtCantidad").Attributes.Add("onblur", $"ValidarCantidadMenor(this,{e.Row.DBCampo("CantidadInventario").ToDouble})") - - 'LO NO PERMITIDO MODIFICAR - e.Row.FCDropDownList("DdlUnidadMedida").Enabled = False - If UsuarioActual.CveEmpresa = 119 Then - e.Row.FCTextBox("TxtCantidad").Enabled = False - End If - - 'cuando ya tiene una salida, no se puede cambiar el producto - If e.Row.DBCampo("CantidadInventario").ToDouble > 0 Then - e.Row.FCDropDownList("DdlClasificacion").Enabled = False - e.Row.FCDropDownLost("DdlPS").Enabled = False - e.Row.FCDropDownLost("DdlPS").ddlWS.Attributes.Add("disabled", "disabled") - End If - - e.Row.FCTextBox("TxtTiempoEntrega").Enabled = False - 'e.Row.FCDropDownList("DdlProyecto").Enabled = False - 'e.Row.FCDropDownList("DdlSubProyecto").Enabled = False - - e.Row.FCLinkButton("imgD").Visible = False - End If - - If UsuarioActual.CveEmpresa.Contiene(7, 122) Then - e.Row.FCTextBox("TxtCantidad").Width = New Unit("100%") - e.Row.FCLabel("LblTurnoEditar").Visible = True - e.Row.FCTextBox("TxtNumTurnosEditar").Visible = True - End If - - 'If UsuarioActual.CveEmpresa = 119 Then - ' e.Row.FCTextBox("TxtDescuento").Enabled = False - 'End If - - Else - 'MODO NORMAL - - If UsuarioActual.Empresa.TipoContabilidad = 2 AndAlso UsuarioActual.Empresa.UsaAC Then - e.Row.FCDropDownList("DdlFR").DataSource = DTPresupuestoIngresos - e.Row.FCDropDownList("DdlFR").DataBind() - e.Row.FCDropDownList("DdlFR").SelectedValue = e.Row.DBCampo("CvePresupuestoIngreso") - 'e.Row.FCDropDownList("DdlFR").Enabled = False - End If - - If e.Row.DataKey("IEPS").ToDouble > 0 Then : TrIEPS.Visible = True : End If - - If NuevaFactura = 1 Then - If Not UsuarioActual.TienePermisoProceso(222) Then - e.Row.FCLinkButton("imgD").Visible = False - e.Row.FCLinkButton("imgE").Visible = False - End If - If TieneAlmacen Then - e.Row.FCLinkButton("imgD").Visible = False - End If - End If - - If (CveContrato > 0 AndAlso Not CveVenta > 0) Then - e.Row.FCLinkButton("imgD").Visible = False - End If - - 'If DdlContratosModal.DataSource IsNot Nothing AndAlso CveCicloComercial <= 0 Then - ' e.Row.FCLinkButton("imgE").Visible = False - 'End If - - - - 'Si es facturacion de OC - If DTOrdenesCompraPS IsNot Nothing AndAlso DTOrdenesCompraPS.Rows.Count > 0 Then - e.Row.FCLinkButton("imgClone").Visible = False - e.Row.FCTextBox("TxtOrden").Visible = True - End If - - If UsuarioActual.Empresa.CvePlataforma = 2 Then - e.Row.FCLinkButton("imgE").Visible = False - e.Row.FCLinkButton("imgEPyME").Visible = True - End If - - If UsuarioActual.Empresa.Tipo_CentroCosto = 2 Or UsuarioActual.Empresa.Tipo_CentroCosto = 1 Then - e.Row.FCLabel("LblProyecto").Visible = False - End If - - If CveVenta > 0 Then 'And e.Row.DBCampo("TipoDocto") = "Rem" - If ModalidadEdicion Then - e.Row.FCLinkButton("imgE").Visible = Not e.Row.DBCampo("CantidadFacturadaRem").ToDouble > 0 - e.Row.FCLinkButton("imgD").Visible = Not e.Row.DBCampo("CantidadInventario").ToDouble > 0 - ElseIf Not CveDevolucion > 0 Then - e.Row.FCLinkButton("imgE").Visible = False - e.Row.FCLinkButton("imgD").Visible = False - End If - - 'EN BDH NO DEBE PODER EDITAR LOS PS - If UsuarioActual.Empresa.Funcionalidad(531) = "1" Then - If ModalidadEdicion Then - e.Row.FCLinkButton("imgE").Visible = True - e.Row.FCLinkButton("imgD").Visible = False - Else - e.Row.FCLinkButton("imgE").Visible = False - e.Row.FCLinkButton("imgD").Visible = False - End If - End If - End If - - If UsuarioActual.Empresa.Funcionalidad(360) = "1" AndAlso e.Row.DBCampo("CvePrecioLista").ToEntero() > 0 Then - e.Row.FCLiteral("LtlPrecioLista").Visible = True - End If - - If UsuarioActual.CveEmpresa.Contiene(7, 122) AndAlso e.Row.DBCampo("NumTurnos").ToDecimal() > 0 Then - e.Row.FCLiteral("LtlNumTurnos").Visible = True - End If - - 'CANTIDAD FACTURADA - Select Case e.Row.DBCampo("TipoDocto") - Case "Cot" - e.Row.FCLiteral("LtCantidadFacturada").Text = e.Row.DBCampo("CantidadFacturadaCot").ToDecimal.ToString("#,##0.##") - Case "Pd2" - e.Row.FCLiteral("LtCantidadFacturada").Text = e.Row.DBCampo("CantidadFacturadaPed2").ToDecimal.ToString("#,##0.##") - End Select - - If EsCreaApartirDe Then - e.Row.FCLinkButton("imgD").Visible = True - e.Row.FCLinkButton("imgE").Visible = True - End If - - 'If GvInv.Rows.Count > 0 AndAlso ModalidadEdicion AndAlso DdlTipoComprobante.SelectedValue = "Rem" AndAlso e.Row.DataKey("CveVentaDetalle").ToString().ToEntero() > 0 Then - ' e.Row.FCLinkButton("imgE").Enabled = False - ' e.Row.FCLinkButton("imgE").ToolTip = "No se puede editar debido a que ya hay un movimiento de almacen." - 'End If - - End If - End If - End Sub - Protected Sub GvPS_RowEditing(sender As Object, e As EventArgs) Handles GvPS.RowEditing - - 'ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewEditEventArgs - ' - LimpiaAgregar() - - Dim GvRow As GridViewRow = DirectCast(DirectCast(sender, LinkButton).NamingContainer, GridViewRow) - IndicePSActual = GvRow.RowIndex - - CantidadOriginal = GvRow.DataKey("Cantidad").ToDecimal - TxtCantidad.Text = GvRow.DataKey("Cantidad") - DdlClasificacion.SelectedValueExist(GvRow.DataKey("CveClasificacion")) - - If UsuarioActual.Empresa.Funcionalidad(141).ToString() = "1" Then - DdlPS.txtValue.Value = GvRow.DataKey("CvePS") - DdlPS.txtText.Value = GvRow.DataKey("CodigoPS") - Else - DdlPS.ddl.SelectedValueExist(GvRow.DataKey("CvePS")) - End If - - TxtObsPS.Text = GvRow.DataKey("Obs") - TxtPrecio.Text = GvRow.DataKey("PU") - - TxtCantidad.Focus() - - UpDVAddPS.Update() - - RegistraScript("$('#DVAddPS').modal();") - - - - '''************ - 'GvPS.EditIndex = e.NewEditIndex - 'GvPS.DataSource = TmpDT - 'DtInv = TmpDT.Copy.FiltraParametros("CveTipoPS = 2") - 'GvPS.DataBind() - 'If UsuarioActual.Empresa.Funcionalidad(558) = "1" Then - ' GvPS.Rows(e.NewEditIndex).FCDropDownList("DdlUnidadMedida").Enabled = False - ' GvPS.Rows(e.NewEditIndex).FCDropDownList("DdlClasificacion").Enabled = False - 'End If - - ''SI ES LLANTERA NO DEBE BLOQUEAR EL TEXTBOX - 'If GvPS.Rows(e.NewEditIndex).DataKey("CvePromocionDetalle").ToString().ToEntero() > 0 AndAlso (Not UsuarioActual.Empresa.Funcionalidad(558) = "1") Then - ' GvPS.Rows(e.NewEditIndex).FCTextBox("TxtDescuento").Enabled = False - ' GvPS.Rows(e.NewEditIndex).FCTextBox("TxtDescuento").ToolTip = "No se puede editar el descuento porque viene de una promoción" - 'End If - - 'If Me.CveVenta > 0 AndAlso UsuarioActual.CveEmpresa = 119 AndAlso DdlTipoComprobante.SelectedValue.Contiene("Ing", "Rem", "Cot") Then - ' GvPS.Rows(e.NewEditIndex).FCTextBox("TxtDescuento").Enabled = False - 'End If - - 'If CveVenta > 0 AndAlso UsuarioActual.Empresa.Funcionalidad(531) = "1" Then - ' GvPS.Rows(e.NewEditIndex).FCTextBox("TxtCantidad").Enabled = False - - ' GvPS.Rows(e.NewEditIndex).FCDropDownList("DdlUnidadMedida").Enabled = False - ' GvPS.Rows(e.NewEditIndex).FCDropDownLost("DdlPS").Enabled = False - ' GvPS.Rows(e.NewEditIndex).FCDropDownLost("DdlPS").ddlWS.Attributes.Add("disabled", "disabled") - ' GvPS.Rows(e.NewEditIndex).FCDropDownList("DdlUnidadMedida").Enabled = False - ' GvPS.Rows(e.NewEditIndex).FCDropDownList("DdlClasificacion").Enabled = False - ' GvPS.Rows(e.NewEditIndex).FCDropDownList("DdlProyecto").Enabled = False - ' GvPS.Rows(e.NewEditIndex).FCDropDownList("DdlSubProyecto").Enabled = False - - ' GvPS.Rows(e.NewEditIndex).FCTextBox("TxtObsPS").Enabled = True - ' GvPS.Rows(e.NewEditIndex).FCTextBox("TxtPrecio").Enabled = False - ' GvPS.Rows(e.NewEditIndex).FCTextBox("TxtDescuento").Enabled = False - 'End If - - End Sub - 'Protected Sub GvPS_RowCancelingEdit(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewCancelEditEventArgs) Handles GvPS.RowCancelingEdit - ' GvPS.EditIndex = -1 - ' GvPS.DataSource = TmpDT - ' DtInv = TmpDT.Copy.FiltraParametros("CveTipoPS = 2") - ' GvPS.DataBind() - 'End Sub - - - 'Protected Sub GvPS_RowUpdating(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewUpdateEventArgs) Handles GvPS.RowUpdating - - - ' 'Dim TipoDescuento As Integer - ' Dim Cantidad, PU, CantidadInventario As Decimal - ' Dim ObjDescuento As New Modelos.VentaDescuentos - ' Dim CuentaPredial As String - ' Cantidad = GvPS.Rows(e.RowIndex).FCTextBox("TxtCantidad").Text.ToDecimal - ' PU = (GvPS.Rows(e.RowIndex).FCTextBox("TxtPrecio").Text.ToDecimal).RoundSQL(6) - - ' Dim DescuentoManual As Decimal = (GvPS.Rows(e.RowIndex).FCTextBox("TxtDescuento").Text.ToDecimal).RoundSQL(NumeroDecimales) - - ' ObjDescuento.ImporteDescuento = DescuentoManual - ' CuentaPredial = GvPS.Rows(e.RowIndex).FCTextBox("TxtPredial").Text.Trim - - ' If PU <= 0 AndAlso UsuarioActual.Empresa.Funcionalidad(558) = "1" Then - ' Alert("El precio debe ser mayor a 0", TipoMensaje.MsgAdvertencia) - ' Exit Sub - ' End If - - ' If UsuarioActual.CveEmpresa = 140 OrElse DtPromociones IsNot Nothing AndAlso DtPromociones.Rows.Count > 0 Then - ' ObjDescuento = CalcularDescuentos(TmpDT.Rows(e.RowIndex)("CvePS").ToString().ToEntero(), Cantidad, PU) - ' End If - - ' 'SI ESTA HABILITADO LA OPCION DE DESCUENTO, SE AGREGO UN DESCUENTO MANUAL Y NO TIENE PROMOCION - ' If GvPS.Rows(e.RowIndex).FCTextBox("TxtDescuento").Enabled AndAlso (ObjDescuento.CvePromocionDetalle <= 0 AndAlso ObjDescuento.ImporteDescuento <= 0) AndAlso DescuentoManual > 0 Then - ' ObjDescuento.ImporteDescuento = DescuentoManual - ' End If - - ' 'VERIFICA SI EL DESCUENTO SUPERA EL SUBTOTAL - ' If ObjDescuento.ImporteDescuento.RoundSQL(2) > (Cantidad * PU).RoundSQL(2) Then - ' Alert("El descuento no puede ser mayor al subtotal", TipoMensaje.MsgAdvertencia) - ' Exit Sub - ' End If - - ' Dim CantidadOriginal As Decimal = GvPS.Rows(e.RowIndex).DataKey("Cantidad").ToDecimal() - - ' Dim DatarowPS As DataRow = Nothing - ' DatarowPS = GlobalDTPS(UsuarioActual.CveEmpresa, CvePS:=TmpDT.Rows(e.RowIndex)("CvePS").ToString().ToEntero()).FiltroPrimero("") ' Estado = -1 - - ' 'verifica si tiene ventaminima - ' If Cantidad > 0 AndAlso DatarowPS("VentaMinima").ToString().ToDecimal > 0 AndAlso (DdlTipoComprobante.SelectedValue = "Rem" Or DdlTipoComprobante.SelectedValue = "Ing") Then - ' 'verifico que la cantidad sea multiplo de venta minima, es decir ventaminima =5, solo puede vender 5,10,15... - ' If Cantidad Mod DatarowPS("VentaMinima").ToString().ToDecimal <> 0 Then - ' Alert(String.Format("El producto se vende solo en cantidades de {0}", DatarowPS("VentaMinima").ToString())) - ' Exit Sub - ' End If - ' End If - - - ' 'si es remisión, ingreso, anticipo debe de considerar el preciominimo - - ' If Not UsuarioActual.TienePermisoProceso(169) Then ' NO VALIDA EXISTENCIAS NI COSTO - PERMISO PARA NO VALIDAR - ' Dim CvePS As Integer = DatarowPS("CvePS").ToString().ToEntero() - ' Dim CveUM As Integer = GvPS.Rows(e.RowIndex).FCDropDownList("DdlUnidadMedida").SelectedValue.ToEntero() 'DatarowPS("CveUM").ToString().ToEntero() - ' Dim CveTipoPS As Integer = DatarowPS("CveTipoPS").ToString().ToEntero() - - ' CantidadInventario = GvPS.Rows(e.RowIndex).DataKey("CantidadInventario").ToDecimal - ' Dim CveUMInicial As Integer = GvPS.Rows(e.RowIndex).DataKey("CveUM").ToEntero - - ' Dim ValidaExistencia As Boolean = True - ' If (CantidadInventario > 0) OrElse (Cantidad <= CantidadOriginal) Then 'si ya hay algo surtido, que no valide existencia - ' ValidaExistencia = False - ' End If - ' If CveUM <> CveUMInicial Then ValidaExistencia = True - - ' 'SOLO VALIDA EXISTENCIAS Y COSTO: SI USA INVENTARIOS, SOLO PRODUCTOS TIPO PRODUCTO, SOLO REMISIONES E INGRESOS - ' If UsuarioActual.Empresa.UsaInventarios AndAlso CveTipoPS = 2 AndAlso (DdlTipoComprobante.SelectedValue.Contiene("Rem", "Ing", "PA") Or (DdlTipoComprobante.SelectedValue.Contiene("Cot") And UsuarioActual.CveEmpresa.Contiene(119))) Then - ' Dim ObjInventarios As New ClsInventarios - ' Dim Existencia As Decimal - ' If ValidaExistencia Then - ' Existencia = ObjInventarios.GetExistenciasPS(CvePS, CveUM, UsuarioActual.CveEmpresa, -1, FechaMovto:=DateTime.Today.AddDays(1).ToString("yyyy/MM/dd HH:mm"), CveSubProyecto:=DdlSubProyectoDatos.SelectedValue.ToEntero(), CveVendedor:=-1, CveCliente:=If(UsuarioActual.Empresa.Funcionalidad(146) = "1", -1, CveCliente), ExcluyeAdelantado:=1, PendientePorSurtir:=1, RestringirAlmacenes:=1, ExcluyeApartados:=-1) - ' End If - - ' Dim Costo As Decimal = ObjInventarios.GetCostoPS(CvePS, TxtCantidad.Text.Trim.ToDecimal, -1, "-1", NowADS, DdlSubProyectoDatos.SelectedValue.ToEntero(), CveTipoAlmacen:=1) - - ' 'si el costo es cero, puede ser que no halla movimientos del producto, en esa sucursal. y se volverá a sacar sin especificar sucursal - ' If Costo <= 0 Then Costo = ObjInventarios.GetCostoPS(CvePS, TxtCantidad.Text.Trim.ToDecimal, -1, "-1", NowADS, -1, CveTipoAlmacen:=1) - - ' ObjInventarios.Dispose() - ' Dim PrecioMinimo As Decimal = 0 - ' 'RMF. condicion temporal, para reubicación, precio mínimo - ' If UsuarioActual.CveEmpresa = 119 Then - ' 'Dim CvePrecioLista As Integer = 38 - ' Dim objPS As New ClsProductosServicios - ' If objPS.GetPSSucursalesALL(CvePS, UsuarioActual.CveEmpresa, CveSubProyecto:=DdlSubProyectoDatos.SelectedValue.ToEntero()) Then - ' PrecioMinimo = objPS.DtResultados.FiltroPrimeroValor("PrecioMinimo", "").ToDecimal - ' 'If PrecioMinimo > 0 Then - ' ' Costo = PrecioMinimo - ' 'End If - ' End If - ' objPS.Dispose() - - ' End If - - ' If ValidaExistencia AndAlso DdlTipoComprobante.SelectedValue <> "Cot" AndAlso Not RegistroxOC Then - ' 'VALIDA EXISTENCIA - ' If UsuarioActual.CveEmpresa.Contiene({72, 80, 119, 140, 153}) Then - ' 'SI ES VENTA NUEVA TOMA EN CUENTA LO DEL TMPDT - ' If CveVenta <= 0 Then - ' If Existencia - TmpDT.SUM("Cantidad", $"CvePS = {CvePS} AND (EntregaDirecta IS NULL OR EntregaDirecta < 1)") < TxtCantidad.Text.ToDouble Then - ' Alert("No cuenta con la cantidad suficiente en inventario. Cuenta con " + Existencia.FormatoNumero(2) + ".", TipoMensaje.MsgAdvertencia) - ' Exit Sub - ' End If - ' Else - ' If DdlTipoComprobante.SelectedValue = "Rem" Then - ' Dim CantidadVenta As Double = 0 - ' Using ObjVentas As New ClsVentas - ' If ObjVentas.GetVentaDetalle(CveVenta) Then - ' CantidadVenta = ObjVentas.DtResultados.SUM("Cantidad", $"CvePS = {CvePS}") - ' End If - ' End Using - - ' 'SUMA LO YA RESTADO EN PENDIENTE POR SURTIR QUE PERTENESCA A LA VENTA. - ' 'PARA QUE NO RESTE LA EXISTENCIA 2 VECES Y PUEDAS COMPARAR LO REAL - ' If (Existencia + CantidadVenta) - TmpDT.SUM("Cantidad", $"CvePS = {CvePS} AND (EntregaDirecta IS NULL OR EntregaDirecta < 1)") < TxtCantidad.Text.ToDouble Then - ' Alert("No cuenta con la cantidad suficiente en inventario. Cuenta con " + Existencia.FormatoNumero(2) + ".", TipoMensaje.MsgAdvertencia) - ' Exit Sub - ' End If - ' End If - - ' End If - - ' End If - ' End If - - ' 'VALIDA COSTOS - ' If Not CveContrato > 0 Then - - ' 'BANDERAS PARA VALIDACIONES - ' Dim EsValido As Boolean = False - ' Dim EsValidoMayor As Boolean = False - ' Dim CostoMenor As Decimal = 0 - ' Dim CostoMayor As Decimal = 0 - - ' 'PRECIO MINIMO - ' If UsuarioActual.Empresa.Funcionalidad(129).ToEntero() > 0 AndAlso UsuarioActual.CveUsuario <> 1560 Then - ' '' NOTA. si tiene preciominimo, debe de validarlos e ignorar el costo, pero se debe de considerar el TC, para el costo - ' If PrecioMinimo > 0 Then - ' 'SI EL PRECIO ES MAYOR AL COSTO, SI PASA - ' If PU >= PrecioMinimo Then ' aqui se comparar los importes directos, sin el TC - ' EsValido = True - ' End If - ' Else - ' CostoMenor = Costo + ((UsuarioActual.Empresa.Funcionalidad(129).ToDecimal / 100) * Costo) - ' 'SI EL PRECIO ES MAYOR AL COSTO, SI PASA - ' If PU * If(DdlMoneda.SelectedValue.ToEntero() = 1, 1, TxtTipoCambio.Text.ToDecimal) >= CostoMenor Then - ' EsValido = True - ' End If - ' End If - ' Else - ' EsValido = True - ' End If - - ' 'PRECIO MAXIMO - ' If UsuarioActual.Empresa.Funcionalidad(133).ToEntero() > 0 AndAlso UsuarioActual.CveUsuario <> 1560 Then - ' CostoMayor = Costo + ((UsuarioActual.Empresa.Funcionalidad(133).ToDecimal / 100) * Costo) - ' 'SI EL PRECIO ES MAYOR AL COSTO MAXIMO, SI PASA - ' If PU * If(DdlMoneda.SelectedValue.ToEntero() = 1, 1, TxtTipoCambio.Text.ToDecimal) <= CostoMayor Then - ' EsValidoMayor = True - ' End If - ' Else - ' EsValidoMayor = True - ' End If - - - - ' 'NO DEJA REGISTRAR MENOS AL PRECIO MINIMO - ' Dim MensajeCosto As New StringBuilder - ' Dim TienePermisoImportes As Boolean = UsuarioActual.TienePermisoProceso(201) - ' If Not EsValido Then - ' MensajeCosto.AppendFormat("El Producto {0}. No se puede vender a un precio menor de su Costo
    ", DatarowPS("PS").ToString()) - ' If TienePermisoImportes Then - ' MensajeCosto.AppendFormat("El costo del producto es: ${0:#,###.00}
    ", Costo) - ' MensajeCosto.AppendFormat("El rango menor aceptado es: {0:#,###.00}% ${1}
    ", UsuarioActual.Empresa.Funcionalidad(129).ToEntero(), CostoMenor) - ' MensajeCosto.AppendFormat("El precio indicado es: ${0:#,###.00} ({1}% de ganancia)
    ", PU.FormatoNumero, (If(Costo > 0, ((PU - Costo) * 100) / Costo, 0)).FormatoNumero) - ' End If - - - ' Alert(String.Format(MensajeCosto.ToString()), TipoMensaje.MsgAdvertencia) - ' MensajeCosto.Clear() - ' e.Cancel = True - ' Exit Sub - ' End If - - ' 'NO DEJA REGISTRAR MAS AL PRECIO MAXIMO - ' If Not EsValidoMayor Then - ' MensajeCosto.AppendFormat("El Producto {0}. No se puede vender a un precio mayor de su rango aceptado
    ", HdnPS.Value) - ' If TienePermisoImportes Then - ' MensajeCosto.AppendFormat("El costo del producto es: ${0:#,###.00}
    ", Costo) - ' MensajeCosto.AppendFormat("El rango mayor aceptado es: {0}% ${1:#,###.00}
    ", UsuarioActual.Empresa.Funcionalidad(133).ToEntero(), CostoMayor) - ' MensajeCosto.AppendFormat("El precio indicado es: ${0:#,###.00} ({1}% de ganancia)
    ", PU.FormatoNumero, (If(Costo > 0, ((PU - Costo) * 100) / Costo, 0)).FormatoNumero) - ' End If - ' Alert(MensajeCosto.ToString(), TipoMensaje.MsgAdvertencia) - ' MensajeCosto.Clear() - ' e.Cancel = True - ' Exit Sub - ' End If - - ' End If - ' End If - ' End If - - ' If UsuarioActual.Empresa.Funcionalidad(558) = "1" AndAlso ListaDescuentos IsNot Nothing AndAlso ObjDescuento IsNot Nothing Then - ' Dim ConsecEliminar As Integer = TmpDT.Rows(e.RowIndex)("Consec").ToString().ToEntero() - ' If ConsecEliminar > 0 Then - ' Dim descEliminar As Modelos.VentaDescuentos = ListaDescuentos.FirstOrDefault(Function(x) x.Consec = ConsecEliminar) - ' If descEliminar IsNot Nothing Then - ' ListaDescuentos.Remove(descEliminar) - ' End If - ' End If - ' End If - - ' If TmpDT.Rows(e.RowIndex)("CvePS").ToString() <> GvPS.Rows(e.RowIndex).FCDropDownLost("DdlPS").SelectedValue Then - ' 'eliminar y cargar el ps *** - ' Dim DdlUM As DropDownList = GvPS.Rows(e.RowIndex).FCDropDownList("DdlUnidadMedida") - ' Dim DdlCla As DropDownList = GvPS.Rows(e.RowIndex).FCDropDownList("DdlClasificacion") - - ' If DtPromociones IsNot Nothing AndAlso DtPromociones.Rows.Count > 0 Then - ' ObjDescuento = CalcularDescuentos(GvPS.Rows(e.RowIndex).FCDropDownLost("DdlPS").SelectedValue.ToEntero(), Cantidad, PU) - ' End If - - ' Dim NumTurnos As Decimal = 0 - ' If UsuarioActual.CveEmpresa.Contiene(7, 122) Then - ' NumTurnos = GvPS.Rows(e.RowIndex).FCTextBox("TxtNumTurnosEditar").Text.ToDecimal() - ' End If - - ' TmpDT.Rows.Remove(TmpDT.Rows(e.RowIndex)) - ' 'CalculaUsados() - ' AgregarProductoServicio(Cantidad, DdlUM.SelectedValue.ToEntero(), DdlUM.SelectedItem.Text, DdlCla.SelectedValue.ToEntero(), DdlCla.SelectedItem.Text, - ' GvPS.Rows(e.RowIndex).FCDropDownLost("DdlPS").SelectedValue.ToEntero(), GvPS.Rows(e.RowIndex).FCDropDownLost("DdlPS").SelectedText, - ' GvPS.Rows(e.RowIndex).FCTextBox("TxtObsPS").Text.Trim, PU, ObjDescuento.ImporteDescuento, - ' GvPS.Rows(e.RowIndex).FCDropDownList("DdlProyecto").SelectedValue.ToEntero(), GvPS.Rows(e.RowIndex).FCDropDownList("DdlProyecto").SelectedItem.Text, - ' GvPS.Rows(e.RowIndex).FCDropDownList("DdlSubProyecto").SelectedValue.ToEntero(), GvPS.Rows(e.RowIndex).FCDropDownList("DdlSubProyecto").SelectedItem.Text, - ' CuentaPredial:=CuentaPredial, CveVentaDetalle:=GvPS.Rows(e.RowIndex).DataKey("CveVentaDetalle").ToString().ToEntero(), SeActualiza:=True, CvePromocionDetalle:=ObjDescuento.CvePromocionDetalle, - ' ObjDescuento:=ObjDescuento, NumTurnos:=NumTurnos) - - ' ' TmpDT.Rows(e.RowIndex)("CveUM") = Ddl.SelectedValue - ' ' TmpDT.Rows(e.RowIndex)("UM") = Ddl.SelectedItem.Text - ' GvPS.EditIndex = -1 - ' GvPS.DataSource = TmpDT - ' DtInv = TmpDT.Copy.FiltraParametros("CveTipoPS = 2") - ' GvPS.DataBind() - - - ' Else - ' Dim DrPS As DataRow = Nothing - ' DrPS = GlobalDTPS(UsuarioActual.CveEmpresa, CvePS:=TmpDT.Rows(e.RowIndex)("CvePS").ToString().ToEntero()).FiltroPrimero("") - - ' If Not ClienteDesglosaIEPS Then - ' PU = PU * (1 + DrPS("IEPSPorcentaje").ToString().ToDecimal) - ' TmpDT.Rows(e.RowIndex)("PorcentajeIEPS") = 0 - ' End If - - ' Dim TotalCalculableImpuestos As Decimal = ((Cantidad * PU) - (ObjDescuento.ImporteDescuento)) - ' Dim TotalCalculableImpuestosIVA As Decimal = 0 - ' TotalCalculableImpuestosIVA = TotalCalculableImpuestos * (1 + TmpDT.Rows(e.RowIndex)("PorcentajeIEPS").ToString().ToDecimal) - - ' Dim ClienteRetIVA As Decimal = Me.ClienteRetIVA - ' If ClienteRetIVA <= 0 Then - ' If DdlTipoRetencion.SelectedValue.Contiene("1", "2") Then - ' ClienteRetIVA = 0.106667D - ' ElseIf DdlTipoRetencion.SelectedValue.Contiene("3") Then - ' ClienteRetIVA = 0.04D - ' End If - ' End If - - ' If DrPS("IVA").ToString().Contiene("-1", "") Then - ' TmpDT.Rows(e.RowIndex)("PorcentajeIVA") = PorcentajeIVA - ' Else - ' TmpDT.Rows(e.RowIndex)("PorcentajeIVA") = DrPS("IVA") - ' End If - - ' If UsuarioActual.Empresa.Funcionalidad(373) = "1" AndAlso LblRFC.Text = "XEXX010101000" Then - ' TmpDT.Rows(e.RowIndex)("PorcentajeIVA") = 0 - ' TmpDT.Rows(e.RowIndex)("ImporteIVA") = 0 - ' End If - - ' TmpDT.Rows(e.RowIndex)("CveUM") = GvPS.Rows(e.RowIndex).FCDropDownList("DdlUnidadMedida").SelectedValue.ToEntero() - ' TmpDT.Rows(e.RowIndex)("UM") = GvPS.Rows(e.RowIndex).FCDropDownList("DdlUnidadMedida").SelectedItem.Text - ' TmpDT.Rows(e.RowIndex)("Cantidad") = Cantidad - ' TmpDT.Rows(e.RowIndex)("Obs") = GvPS.Rows(e.RowIndex).FCTextBox("TxtObsPS").Text.TrimEnd - ' TmpDT.Rows(e.RowIndex)("TiempoEntrega") = GvPS.Rows(e.RowIndex).FCTextBox("TxtTiempoEntrega").Text.Trim - ' TmpDT.Rows(e.RowIndex)("PU") = PU - ' TmpDT.Rows(e.RowIndex)("Descuento") = ObjDescuento.ImporteDescuento - ' TmpDT.Rows(e.RowIndex)("Total") = (Cantidad * PU) - ' TmpDT.Rows(e.RowIndex)("TotalImporte") = (Cantidad * PU).RoundSQL(NumeroDecimales) - ' TmpDT.Rows(e.RowIndex)("ImporteIVA") = (TmpDT.Rows(e.RowIndex)("PorcentajeIVA").ToString().ToDecimal * TotalCalculableImpuestosIVA).RoundSQL(NumeroDecimales) - ' TmpDT.Rows(e.RowIndex)("ImporteIEPS") = (TmpDT.Rows(e.RowIndex)("PorcentajeIEPS").ToString().ToDecimal * TotalCalculableImpuestos).RoundSQL(NumeroDecimales) - ' TmpDT.Rows(e.RowIndex)("ImporteRetIVA") = (ClienteRetIVA * TotalCalculableImpuestos).RoundSQL(NumeroDecimales) - ' TmpDT.Rows(e.RowIndex)("RetIVA") = (ClienteRetIVA * TotalCalculableImpuestos).RoundSQL(NumeroDecimales) - ' TmpDT.Rows(e.RowIndex)("ImporteRetISR") = (ClienteRetISR * TotalCalculableImpuestos).RoundSQL(NumeroDecimales) - ' TmpDT.Rows(e.RowIndex)("PorcentajeRetIVA") = ClienteRetIVA - ' TmpDT.Rows(e.RowIndex)("PorcentajeRetISR") = ClienteRetISR - ' TmpDT.Rows(e.RowIndex)("CuentaPredial") = CuentaPredial - - ' Dim NumTurnos As Decimal = 0 - ' If UsuarioActual.CveEmpresa.Contiene(7, 122) Then - ' NumTurnos = GvPS.Rows(e.RowIndex).FCTextBox("TxtNumTurnosEditar").Text.ToDecimal() - ' End If - ' TmpDT.Rows(e.RowIndex)("NumTurnos") = NumTurnos - - ' If ObjDescuento IsNot Nothing Then - ' TmpDT.Rows(e.RowIndex)("CvePromocionDetalle") = ObjDescuento.CvePromocionDetalle - ' End If - - ' If GvPS.Rows(e.RowIndex).FCDropDownList("DdlProyecto").Items.Count = 0 Then - ' TmpDT.Rows(e.RowIndex)("Proyecto") = "Sin Proyecto Asignado" - ' TmpDT.Rows(e.RowIndex)("CveSubProyecto") = -1 - ' Else - ' TmpDT.Rows(e.RowIndex)("Proyecto") = GvPS.Rows(e.RowIndex).FCDropDownList("DdlProyecto").SelectedItem.Text - ' End If - - - ' If GvPS.Rows(e.RowIndex).FCDropDownList("DdlSubProyecto").Items.Count = 0 Then - ' TmpDT.Rows(e.RowIndex)("SubProyecto") = "Sin SubProyecto Asignado" - ' Else - ' 'si está visible en el encabezado, si no esta visible que no actualice, porque generar error, selecciona el primer item - - ' TmpDT.Rows(e.RowIndex)("SubProyecto") = GvPS.Rows(e.RowIndex).FCDropDownList("DdlSubProyecto").SelectedItem.Text - ' TmpDT.Rows(e.RowIndex)("CveSubProyecto") = GvPS.Rows(e.RowIndex).FCDropDownList("DdlSubProyecto").SelectedValue - - ' End If - - - ' 'RELACIONAL PS CON EL DESCUENTO - ' If ObjDescuento IsNot Nothing Then - ' ObjDescuento.Consec = TmpDT.Rows(e.RowIndex)("Consec").ToString().ToEntero() - ' End If - - - ' DrPS = Nothing - - ' GvPS.EditIndex = -1 - ' GvPS.DataSource = TmpDT - ' DtInv = TmpDT.Copy.FiltraParametros("CveTipoPS = 2") - ' GvPS.DataBind() - - ' End If - - ' If UsuarioActual.Empresa.Funcionalidad(558) = "1" AndAlso ListaDescuentos IsNot Nothing AndAlso ObjDescuento IsNot Nothing Then - ' ListaDescuentos.Add(ObjDescuento) - ' End If - - ' CalculaTotalesVenta() - - ' UpPS.Update() - - - - 'End Sub - Protected Sub GvPS_RowDeleting(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewDeleteEventArgs) Handles GvPS.RowDeleting - - If UsuarioActual.Empresa.Funcionalidad(558) = "1" AndAlso ListaDescuentos IsNot Nothing Then - Dim ConsecEliminar As Integer = TmpDT.Rows(e.RowIndex)("Consec").ToString().ToEntero() - If ConsecEliminar > 0 Then - Dim descEliminar As Modelos.VentaDescuentos = ListaDescuentos.FirstOrDefault(Function(x) x.Consec = ConsecEliminar) - If descEliminar IsNot Nothing Then - ListaDescuentos.Remove(descEliminar) - End If - End If - End If - - Dim DbRow As DataRow = Nothing - DbRow = TmpDT.Rows(e.RowIndex) - TmpDT.Rows.Remove(DbRow) - - 'CalculaUsados() - - GvPS.DataSource = TmpDT - DtInv = TmpDT.Copy.FiltraParametros("CveTipoPS = 2") - GvPS.DataBind() - 'CargaGVInv(DtInv) - CalculaTotalesVenta() - - Alert("Eliminado Correctamente.", TipoMensaje.MsgInformacion) - 'JJMQ 20160506: Se agrego para la validacion de pago de contado. - 'CVImporteContado.ValueToCompare = TxtTotal.Text.Replace(",", "") - - - End Sub - - - -#End Region - - - -#Region " EMITIR IMPRIMIR - GUARDAR " - Protected Sub BtnEmitirImprimir_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles BtnEmitirImprimir.Click - Try - EmitirImprimir() - Catch ex As Exception - OnError(ex.ToString(), ex) - End Try - End Sub - - Private Sub EmitirImprimir(Optional TipoDoctoViejo As String = "") - - DtRemisionesTmpDT = TmpDT.Copy - DtPedidos2TmpDT = TmpDT.Copy - DtCotizacionTmpDT = TmpDT.Copy - DtOCTmpDT = TmpDT.Copy - TmpDTError = TmpDT.Copy - - If DdlTipoComprobante.SelectedValue.Contiene("Ing", "Ant", "Rem", "Egs", "Dev") Then - If RegimenFiscalCliente.Contiene("-1", "") Then - Alert("El cliente no tiene asignado un régimen fiscal.", TipoMensaje.MsgAdvertencia) - Exit Sub - End If - - If DdlUsoCFDI.SelectedValue.ToEntero() <= 0 Then - Alert("No se ha seleccionado el Uso CFDI o el cliente no tiene asignado el correcto.", TipoMensaje.MsgAdvertencia) - Exit Sub - End If - End If - - - If DdlTipoComprobante.SelectedValue.Contiene("Ing", "Ant", "Egs", "Dev") Then - - If LblRFC.Text.Trim().ToUpper().Contiene("XAXX010101000", "XEXX010101000") AndAlso RegimenFiscalCliente <> "616" Then - Alert("El Regimen fiscal del cliente debe ser '616 - Sin obligaciones fiscales' cuando se utiliza el RFC genérico.", TipoMensaje.MsgAdvertencia) - Exit Sub - End If - - If LblRFC.Text.Trim().ToUpper().Contiene("XAXX010101000", "XEXX010101000") AndAlso DdlUsoCFDI.SelectedValue <> "23" Then - Alert("El uso cfdi del cliente debe ser 'S01 - Sin efectos fiscales' cuando se utiliza el RFC genérico.", TipoMensaje.MsgAdvertencia) - Exit Sub - End If - - If Not LblRFC.Text.Trim().ToUpper().Contiene("XAXX010101000", "XEXX010101000") AndAlso RegimenFiscalCliente = "616" Then - Alert("El Regimen fiscal del cliente no puede ser '616 - Sin obligaciones fiscales' si no se utiliza el RFC genérico.", TipoMensaje.MsgAdvertencia) - Exit Sub - End If - - Dim EsPersonaMoral As Boolean = Me.TipoPersona - Dim DtUsosCFDI As DataTable = GlobalDTSATUsosCFDI(If(Not EsPersonaMoral, 1, 0), RegimenFiscalReceptor:=RegimenFiscalCliente).FiltraParametros($"CveUsoCFDI = {DdlUsoCFDI.SelectedValue}") - - If DtUsosCFDI.Rows.Count = 0 Then - Alert("El Uso CFDI no corresponde con el tipo de persona (fisca, moral) y el régimen fiscal.", TipoMensaje.MsgAdvertencia) - Exit Sub - End If - End If - - If Not ValidaImportePublicoGeneral() Then - Exit Sub - End If - - If (Me.FacturarSucursal AndAlso DdlSucursalCliente.SelectedValue.ToEntero() > 0 AndAlso (Me.ClienteSucursal IsNot Nothing AndAlso String.IsNullOrEmpty(Me.ClienteSucursal.RFC))) Then - Alert("La sucursal no tiene asignada un RFC.", TipoMensaje.MsgAdvertencia) - Exit Sub - End If - - - 'VALIDACIONES - If Not CveCliente > 0 And Not CveEmpresaCRM > 0 Then - Alert("Es necesario seleccionar el cliente al cual se le va a facturar.", TipoMensaje.MsgAdvertencia) - Exit Sub - End If - - If TmpDT Is Nothing OrElse TmpDT.Rows.Count = 0 Then - Alert("Es necesario tener al menos un concepto registrado.", TipoMensaje.MsgAdvertencia) - Exit Sub - End If - - 'Subproyecto Obligatorio - If UsuarioActual.Empresa.Funcionalidad(120) = "1" AndAlso TmpDT.FiltraParametros("ISNULL(CveSubProyecto,0) <= 0").Rows.Count > 0 Then - Alert("El Subproyecto de los conceptos es obligatorio, Por favor rectifique y vuelva a intentar.", TipoMensaje.MsgAdvertencia) - Exit Sub - End If - - 'VENDEDOR OBLIGATORIO - If -1 <= 0 AndAlso UsuarioActual.Empresa.Funcionalidad(531) = "1" AndAlso DdlTipoComprobante.SelectedValue = "Ing" Then - Alert("Debe seleccionar un vendedor.", TipoMensaje.MsgAdvertencia) - Exit Sub - End If - - 'SI TIENE ANTICIPOS Y ESTA AMORTIZADO AL 100% EL DOCUMENTO (SALDO = 0) | NO VALIDA PU DEL CONCEPTO - If Not (LblAmortizacion.Text.ToDouble > 0 And TxtTotal.Text.ToDouble <= 0) Then - If Not DdlTipoComprobante.SelectedValue.Contiene("Ped", "Ant", "DPe") Then - If UsuarioActual.CveEmpresa.Contiene(72, 80) Then - If TmpDT.FiltraParametros($"TotalImporte = 0").Rows.Count > 0 Then - Alert("El importe de cada concepto debe ser mayor a cero. Por favor rectifique y vuelva a intentar.", TipoMensaje.MsgAdvertencia) - Exit Sub - End If - End If - End If - End If - - Dim CveContratoTipo As Integer = 0 - If CveContrato > 0 Then - Dim ObjContrato As New ClsContratos - If ObjContrato.GetContratos(CveContrato, UsuarioActual.CveEmpresa) Then - If ObjContrato.DtResultados.Rows.Count > 0 Then - CveContratoTipo = ObjContrato.DtResultados.Rows(0)("CveContratoTipo").ToString().ToEntero() - End If - End If - ObjContrato.Dispose() - End If - - Me.CveAutorizacion = -1 - 'SI ES A CREDITO DEBE VERIFICAR SI TIENE AUTORIZACIONES - If UsuarioActual.Empresa.Funcionalidad(531) = "1" AndAlso CveCliente > 0 AndAlso DdlTipoComprobante.SelectedValue.Contiene("Ing", "Egs") Then - Dim TipoDocumentoAutorizacion As String = "" - Dim ImporteAutorizacion As Decimal = 0 - Dim TipoAutorizacion As Integer = 0 - Dim DiasVencidosAutorizacion As Integer = 0 - Dim CveVendedor As Integer = -1 - Dim ObjVentas As New ClsVentas - - ObjVentas.Dispose() - - If TipoDocumentoAutorizacion = "Ing" Then - If TipoAutorizacion = 1 Then - - If TieneDiasVencidos Then - CveAutorizacion = -1 - Alert($"El crédito no esta autorizado. El cliente tiene días vencidos", TipoMensaje.MsgAdvertencia) - Exit Sub - End If - - If ImporteAutorizacion < TxtTotal.Text.ToDecimal() Then - Dim BloquearCredito As Boolean = True - CveAutorizacion = -1 - - 'VERIFICA SI TIENE CREDITO DISPONIBLE DENTRO DEL CLIENTE - Dim ObjCred As New ClsVentas - If ObjCred.ObtenerCreditoRestante(CveCliente, DdlSucursalCliente.SelectedValue.ToEntero()) AndAlso ObjCred.DtResultados.Rows.Count > 0 Then - 'SI TIENE CREDITO DISPONIBLE NO BLOQUEAR AUNQUE LA AUTORIZACION NO TENGA EL IMPORTE DEL DOCUMENTO - If DdlSucursalCliente.SelectedValue.ToEntero() > 0 Then - If (ObjCred.DtResultados(0)("LimiteRestanteSucursal").ToString().ToDecimal - If(TxtTipoCambio.Visible, TxtTotal.Text.ToDecimal * TxtTipoCambio.Text.ToDecimal, TxtTotal.Text.ToDecimal)) > 0 Then - BloquearCredito = False - End If - Else - If (ObjCred.DtResultados(0)("LimiteRestanteCliente").ToString().ToDecimal - If(TxtTipoCambio.Visible, TxtTotal.Text.ToDecimal * TxtTipoCambio.Text.ToDecimal, TxtTotal.Text.ToDecimal)) > 0 Then - BloquearCredito = False - End If - End If - End If - ObjCred.Dispose() - - - If BloquearCredito Then - Alert($"El crédito autorizado es insuficiente. Crédito Disponible:{ImporteAutorizacion:N2}", TipoMensaje.MsgAdvertencia) - Exit Sub - End If - - End If - - End If - - 'If TipoAutorizacion = 2 Then - ' If DiasVencidosCliente > DiasVencidosAutorizacion Then - ' CveAutorizacion = -1 - ' Alert($"El crédito no esta autorizado. Los días vencidos del cliente son mayores a lo autorizado", TipoMensaje.MsgAdvertencia) - ' Exit Sub - ' End If - 'End If - - 'SI NO SE ENCONTRO NINGUA AUTORIZACION - If TipoAutorizacion = 0 Then - If TieneDiasVencidos Then - CveAutorizacion = -1 - Alert($"El crédito no esta autorizado. El cliente tiene días vencidos", TipoMensaje.MsgAdvertencia) - Exit Sub - End If - End If - End If - - If TieneDiasVencidos AndAlso DdlTipoComprobante.SelectedValue = "Egs" AndAlso CveAutorizacion <= 0 Then - CveAutorizacion = -1 - Alert($"El crédito no esta autorizado. No tiene autorización para generar notas de crédito. El cliente tiene días vencidos", TipoMensaje.MsgAdvertencia) - Exit Sub - End If - - If TipoDocumentoAutorizacion = "Egs" Then - If TipoAutorizacion = 1 Then - If ImporteAutorizacion < TxtTotal.Text.ToDecimal() Then - CveAutorizacion = -1 - Alert($"El crédito autorizado es insuficiente. Crédito Disponible:{ImporteAutorizacion:N2}", TipoMensaje.MsgAdvertencia) - Exit Sub - End If - End If - End If - End If - - 'SI TIENE LINEA ADICIONAL NO VERIFICAR LIMITE DE CREDITO - 'SI NO TIENE AUTORIZACION VERIFICAR LIMITE DE CREDITO Y CANDADOS DE VENTA - 'No exceder el limite de credito, Si no tiene contrato limita el credito, si tiene no hace nada. Si no tiene remisiones tampoco hace nada. - 'If DdlLineaAdicional.SelectedValue.ToEntero() <= 0 AndAlso Me.CveAutorizacion <= 0 AndAlso (Not CveContrato > 0 Or CveContratoTipo.Contiene(28)) AndAlso (Not NuevaFactura = 1) AndAlso RBLPago.SelectedValue = "1" AndAlso DdlTipoComprobante.SelectedValue.Contiene("Ing", "Rem", "Ant") AndAlso RemisionesLista.Count <= 0 AndAlso TxtTotal.Text.ToDecimal > 0 AndAlso Not CvePedidoA > 0 Then - ' 'If UsuarioActual.Empresa.Funcionalidad(518) = "1" AndAlso Not UsuarioActual.TienePermisoProceso(185) Then - - ' If Not UsuarioActual.Empresa.Funcionalidad(702) = "1" Then - ' Dim ObjVentas As New ClsVentas - - ' If ObjVentas.ObtenerCreditoRestante(CveCliente, DdlSucursalCliente.SelectedValue.ToEntero()) Then - ' If ObjVentas.DtResultados.Rows.Count > 0 Then - - ' If DdlSucursalCliente.SelectedValue.ToEntero() > 0 Then - ' If ObjVentas.DtResultados(0)("LimiteRestanteSucursal").ToString().ToDecimal - If(TxtTipoCambio.Visible, TxtTotal.Text.ToDecimal * TxtTipoCambio.Text.ToDecimal, TxtTotal.Text.ToDecimal) < 0 Then - ' ObjVentas.Dispose() - ' Alert("Se está excediendo el límite de credito permitido de la Sucursal del Cliente.", TipoMensaje.MsgInformacion) - ' Exit Sub - ' End If - ' Else - ' If ObjVentas.DtResultados(0)("LimiteRestanteCliente").ToString().ToDecimal - If(TxtTipoCambio.Visible, TxtTotal.Text.ToDecimal * TxtTipoCambio.Text.ToDecimal, TxtTotal.Text.ToDecimal) < 0 Then - ' ObjVentas.Dispose() - ' Alert("Se está excediendo el límite de credito permitido del Cliente.", TipoMensaje.MsgInformacion) - ' Exit Sub - ' End If - ' End If - - ' Else - ' ObjVentas.Dispose() - ' Alert("Ocurrio un error al obtener el limite de credito del cliente", TipoMensaje.MsgError) - ' Exit Sub - ' End If - ' Else - ' ObjVentas.Dispose() - ' Alert("Ocurrio un error al obtener el limite de credito del cliente", TipoMensaje.MsgError) - ' Exit Sub - ' End If - ' ObjVentas.Dispose() - - ' 'VERIFICA SI TIENE BLOQUEO POR DIAS VENCIDOS - ' If UsuarioActual.Empresa.Funcionalidad(531) = "1" Then - ' Dim Vta As New ClsVentas - ' Dim Opcion As Integer = Vta.ObtenerClienteLimitesVenta(CveCliente, UsuarioActual.CveEmpresa, TipoVerificacion:=2) - ' Dim OpcionMsg As String = String.Format("El Cliente se encuentra bloqueado por la siguiente razón:

    {0}", Vta.SerieVenta) - ' Vta.Dispose() - - ' If Opcion = 2 Then - ' Alert(OpcionMsg, TipoMensaje.MsgError) - ' Exit Sub - ' End If - ' End If - - ' End If - - ' 'End If - 'End If - - - - - - 'VALIDA PRECIO AL AGREGAR A ALMACEN - If Not UsuarioActual.TienePermisoProceso(169) Then - If (DdlTipoComprobante.SelectedValue.Contiene("Rem", "Ing", "PA") AndAlso NuevaFactura <> 1) Or (DdlTipoComprobante.SelectedValue = "Cot" AndAlso BtnEmitirImprimir.Text = "Facturar") Or (DdlTipoComprobante.SelectedValue.Contiene("Cot") And UsuarioActual.CveEmpresa.Contiene(119)) Then - Dim MensajeCosto As New StringBuilder - Dim CostoMenor As Decimal = 0.0D - Dim CostoMayor As Decimal = 0.0D - Dim Costo As Decimal = 0.0D - Dim EsValido As Boolean = False 'BANDERA - Dim EsValidoMayor As Boolean = False - Dim EsValidoPU As Boolean = True 'SOLO SE VALIDA CUANDO EL TXTPU = 0 Y LO INVALIDA ALGUNA PROMOCION - - 'VALIDA PROMOCIONES Y EXISTENCIAS - Dim ObjVentas As New ClsVentas - If ObjVentas.GetPromocionesPS(-1, NowADS, DdlSubProyectoDatos.SelectedValue.ToEntero(), CveCliente, -1, 1, UsuarioActual.CveEmpresa) Then - DtPromociones = ObjVentas.DtResultados - End If - ObjVentas.Dispose() - - - Dim ObjInventarios As New ClsInventarios - Dim PU As Decimal = 0.0D - Dim Cantidad As Double - Dim CveUnidad As Integer - Dim CveProducto As Integer - Dim Existencia As Double - ' Dim CveAlmacen As Integer = ddlAlmacen.SelectedValue.ToEntero() - For Each dr As DataRow In TmpDT.FiltraParametros("CveTipoPS = 2").Rows - - If DdlTipoComprobante.SelectedValue <> "Cot" Then - 'VALIDA EXISTENCIA - CveProducto = dr("CvePS").ToString().ToEntero() - CveUnidad = dr("CveUM").ToString().ToEntero() - Cantidad = TmpDT.SUM("Cantidad", $"CvePS = {CveProducto} AND (EntregaDirecta IS NULL OR EntregaDirecta < 1)") 'VALIDA CONTRA LA SUMA DEL MISMO PS - If UsuarioActual.Empresa.UsaInventarios AndAlso RemisionesLista.Count < 1 AndAlso dr("EntregaDirecta").ToString().ToEntero() < 1 Then - Existencia = ObjInventarios.GetExistenciasPS(CveProducto, CveUnidad, UsuarioActual.CveEmpresa, CveAlmacenExistenciasContrato, FechaMovto:=DateTime.Today.AddDays(1).ToString("yyyy/MM/dd HH:mm"), CveSubProyecto:=DdlSubProyectoDatos.SelectedValue.ToEntero(), CveVendedor:=-1, CveCliente:=If(UsuarioActual.Empresa.Funcionalidad(146) = "1", -1, CveCliente), ExcluyeAdelantado:=1, PendientePorSurtir:=1, RestringirAlmacenes:=1, ExcluyeApartados:=-1) - If Existencia < Cantidad Then - MensajeCosto.AppendFormat("
    El Producto {0}. No cuenta con la cantidad suficiente en inventario. Cuenta con {1}.", dr("CodigoPS").ToString(), Existencia.FormatoNumero(2)) - Continue For - End If - End If - End If - - EsValido = False - EsValidoMayor = False - EsValidoPU = True - PU = dr("PU").ToString().ToDecimal * If(DdlMoneda.SelectedValue.ToEntero() = 1, 1, TxtTipoCambio.Text.ToDecimal) - Costo = ObjInventarios.GetCostoPS(dr("CvePS").ToString().ToEntero(), dr("Cantidad").ToString().ToDecimal, -1, "-1", NowADS, DdlSubProyectoDatos.SelectedValue.ToEntero(), CveTipoAlmacen:=1) - - Dim PrecioMinimo As Decimal = 0 - 'RMF. condicion temporal, para reubicación, precio mínimo - If UsuarioActual.CveEmpresa = 119 Then - 'Dim CvePrecioLista As Integer = 38 - Dim objPS As New ClsProductosServicios - If objPS.GetPSSucursalesALL(dr("CvePS").ToString().ToEntero(), UsuarioActual.CveEmpresa, CveSubProyecto:=DdlSubProyectoDatos.SelectedValue.ToEntero()) Then - PrecioMinimo = objPS.DtResultados.FiltroPrimeroValor("PrecioMinimo", "").ToDecimal - 'If PrecioMinimo > 0 Then - ' Costo = PrecioMinimo - 'End If - End If - objPS.Dispose() - - End If - - 'PRECIO MINIMO - If UsuarioActual.Empresa.Funcionalidad(129).ToEntero() > 0 AndAlso UsuarioActual.CveUsuario <> 1560 Then - '' NOTA. si tiene preciominimo, debe de validarlos e ignorar el costo, pero se debe de considerar el TC, para el costo - If PrecioMinimo > 0 Then - 'SI EL PRECIO ES MAYOR AL COSTO, SI PASA - If PU >= PrecioMinimo Then ' aqui se comparar los importes directos, sin el TC - EsValido = True - End If - Else - CostoMenor = Costo + ((UsuarioActual.Empresa.Funcionalidad(129).ToDecimal / 100) * Costo) - 'SI EL PRECIO ES MAYOR AL COSTO, SI PASA - If PU * If(DdlMoneda.SelectedValue.ToEntero() = 1, 1, TxtTipoCambio.Text.ToDecimal) >= CostoMenor Then - EsValido = True - End If - End If - Else - EsValido = True - End If - - If UsuarioActual.Empresa.Funcionalidad(133).ToEntero() > 0 AndAlso UsuarioActual.CveUsuario <> 1560 Then - CostoMayor = Costo + ((UsuarioActual.Empresa.Funcionalidad(133).ToDecimal / 100) * Costo) - 'SI EL PRECIO ES MAYOR AL COSTO, SI PASA - If PU <= CostoMayor Then - EsValidoMayor = True - End If - Else - EsValidoMayor = True - End If - - 'VALIDA PROMOCION: SI TIENE PROMOCION Y EL PRECIO ES MENOR AL PRECIO DE PROMOCION, NO PASA | SI YA CUMPLE NO VUELVE A VALIDAR - If Not EsValido Or PU = 0 Then - If DtPromociones.FiltraParametros($"CvePS = {dr("CvePS").ToString().ToEntero()}").Rows.Count > 0 Then - If PU * If(DdlMoneda.SelectedValue.ToEntero() = 1, 1, TxtTipoCambio.Text.ToDecimal) >= DtPromociones.FiltroPrimeroValor("PUPromocion", $"CvePS = {dr("CvePS").ToString().ToEntero()}").ToDecimal Then - EsValido = True - Else - EsValidoPU = False ' SI NO ENTRA DENTRO DE LA PROMOCION NO SE PUEDE VENDER A 0 - End If - Else - EsValidoPU = False ' SI NO TIENE PROMOCION NO SE PUEDE VENDER A 0 - End If - End If - 'NO DEJA REGISTRAR CON VALIDACION DE COSTO ALMACEN O PROMOCION - Dim TienePermisoImportes As Boolean = UsuarioActual.TienePermisoProceso(201) - If Not EsValido Then - - MensajeCosto.AppendFormat("El Producto {0}. No se puede vender a un precio menor de su Costo ni a un precio mayor de su rango aceptado
    ", dr("PS").ToString()) - If TienePermisoImportes Then - MensajeCosto.AppendFormat("El costo del producto es: {0:#,###.00}$
    ", Costo) - MensajeCosto.AppendFormat("El rango menor aceptado es: {0} {1:#,###.00}$
    ", UsuarioActual.Empresa.Funcionalidad(129).ToEntero(), CostoMenor) - MensajeCosto.AppendFormat("El precio indicado es: {0:#,###.00}$ ({1}% de ganancia)
    ", PU.FormatoNumero, If(Costo > 0, ((PU - Costo) * 100) / Costo, 0)) - End If - End If - - If Not EsValidoMayor Then - MensajeCosto.AppendFormat("El Producto {0}. No se puede vender a un precio mayor de su rango aceptado
    ", dr("PS").ToString()) - If TienePermisoImportes Then - MensajeCosto.AppendFormat("El costo del producto es: {0:#,###.00}$
    ", Costo) - MensajeCosto.AppendFormat("El rango mayor aceptado es: {0} {1:#,###.00}$
    ", UsuarioActual.Empresa.Funcionalidad(133).ToEntero(), CostoMayor) - MensajeCosto.AppendFormat("El precio indicado es: {0:#,###.00}$ ({1}% de ganancia)
    ", PU.FormatoNumero, If(Costo > 0, ((PU - Costo) * 100) / Costo, 0)) - End If - End If - - ' SOLO SI TIENE LA FUNCIONALIDAD DE RESTRICCION VALIDA EL IMPORTE CERO - If UsuarioActual.Empresa.Funcionalidad(139).ToString().ToEntero() > 0 Then - If Not EsValidoPU Then - MensajeCosto.AppendFormat($"El producto {dr("PS").ToString()}. No se puede vender a un importe de cero ($0)", TipoMensaje.MsgAdvertencia) - End If - End If - - Next - ObjInventarios.Dispose() - - If MensajeCosto.ToString().Length > 1 Then - Alert(MensajeCosto.ToString(), TipoMensaje.MsgAdvertencia) - MensajeCosto.Clear() - Exit Sub - End If - - End If - End If - 'Valida si en caso de que el detalle tenga llantas o polizas se agreguén kilometraje/serie en la parte de observaciones(solo para el caso de empresas llanteras) - If UsuarioActual.Empresa.Funcionalidad(558) = "1" Then - - - - If TxtObsFact.Text = "" Then - Dim FaltaObservacion As Integer = -1 - - FaltaObservacion = TmpDT.FiltroPrimeroValor("CveClasificacion", "CveClasificacion = 20345").ToEntero() - 'cuando es la clasificacion de polizas - If FaltaObservacion = 20345 Then - Alert("No se ha especificado la serie para la poliza en la sección de Observaciones", TipoMensaje.MsgAdvertencia) - Exit Sub - End If - End If - End If - - If UsuarioActual.Empresa.Funcionalidad(135) = "1" And DdlTipoComprobante.SelectedValue = "Cot" Then - Alert("Se mando autorización al supervisor.", TipoMensaje.MsgInformacion) - MandarCorreoSupervisor = True - Dim CorreoSupervisor As String = "" - Dim Objeto As New ClsVtaVendedores - Dim DTSupervisores As New DataTable - If Objeto.GetVendedores(UsuarioActual.CveEmpresa) Then - DTSupervisores = Objeto.DtResultados.FiltraParametros(String.Format("CveVendedor = {0}", -1)) - 'Verifico si el supervisor tiene correo para proceder - If DTSupervisores.Rows.Count > 0 Then - CorreoSupervisor = DTSupervisores.Rows(0)("CorreoSupervisor").ToString() - End If - End If - DTSupervisores.Dispose() - Objeto.Dispose() - If MandarCorreoSupervisor = True And CorreoSupervisor <> "" Then - ViewState("Mail") = CorreoSupervisor - End If - MandarCorreoSupervisor = False - End If - - If RequiereOC AndAlso DdlTipoComprobante.SelectedValue.Contiene("Ant", "Ing") AndAlso Not CveDevolucion > 0 Then - If Not CargaDocumentoOC Then - Alert("Tiene que cargar un archivo de orden de compra", TipoMensaje.MsgAdvertencia) - Exit Sub - End If - - If TxtOrdenCompra.Text.Trim = "" Then - Alert("Tiene que especificar un folio de orden de compra", TipoMensaje.MsgAdvertencia) - Exit Sub - End If - End If - - 'If DivAlmacen.Visible AndAlso DdlTipoComprobante.SelectedValue.Contiene("Ing", "Rem", "Dev") AndAlso GvInv.Rows.Cast(Of GridViewRow)().Count(Function(gvr) gvr.FCCheckBox("cbInv").Checked) > 0 AndAlso ddlAlmacen.SelectedValue.ToEntero() <= 0 Then - ' Alert("Tiene que seleccionar un almacén para la salida de almacén", TipoMensaje.MsgAdvertencia) - ' Exit Sub - 'End If - - EmitirImprimirNew(TipoDoctoViejo) - - End Sub -#End Region - -#Region " NNNNEEEEEEEWWWWWW " - Private Sub InicializaImprimirNew() - Dim Archivo As New System.IO.FileInfo(String.Format("{0}Formatos/Factura.rdlc", UsuarioActual.Empresa.Ruta)) - Dim Archivo2 As New System.IO.FileInfo(String.Format("{0}Formatos/Remision.rdlc", UsuarioActual.Empresa.Ruta)) - - Dim ArchivoSti As New System.IO.FileInfo(String.Format("{0}Formatos/Factura.mrt", UsuarioActual.Empresa.Ruta)) - Dim ArchivoSti2 As New System.IO.FileInfo(String.Format("{0}Formatos/Remision.mrt", UsuarioActual.Empresa.Ruta)) - Dim ArchivoSti3 As New System.IO.FileInfo(String.Format("{0}Formatos/Cotizacion.mrt", UsuarioActual.Empresa.Ruta)) - UpnTools.Update() - End Sub - - Protected Sub EmitirImprimirNew(Optional TipoDoctoViejo As String = "") - - 'If Not ValidaVentaContratoObra() Then - ' Exit Sub - 'End If - - 'If ValidaPagosContado(TipoDoctoViejo:=TipoDoctoViejo) Then - ' Exit Sub - 'End If - 'validaciones, si es Anticipo solo permitir "servicios de facturación" y si es ingreso todos menos serv. factu - If UsuarioActual.CveEmpresa = 119 Then - If DdlTipoComprobante.SelectedValue = "Ing" Then - Dim tCont As Integer = TmpDT.FiltraParametros("SATClaveProdServ='84111506'").Rows.Count - If tCont > 0 Then - Alert("Existen productos con código SAT '84111506' no permitido al facturar ingresos.", TipoMensaje.MsgAdvertencia) - Exit Sub - End If - End If - If DdlTipoComprobante.SelectedValue = "Ant" Then - Dim tCont As Integer = TmpDT.FiltraParametros("SATClaveProdServ<>'84111506'").Rows.Count - If tCont > 0 Then - Alert("Al facturar 'Anticipos' solo son permitidos código SAT '84111506'.", TipoMensaje.MsgAdvertencia) - Exit Sub - End If - End If - End If - - 'CREA UNA COPIA DE SEGURIDAD PARA LOS DATOS DEL TMPDT - If TmpDTError Is Nothing OrElse TmpDTError.Rows.Count = 0 Then - TmpDTError = TmpDT.Copy() - End If - - If UsuarioActual.CveRol = 1 AndAlso UsuarioActual.Empresa.Funcionalidad(558) = "1" AndAlso TbDescuentosAdicionales.Visible Then - If LblDescuentoAdicional.Text.ToDecimal() > 0 Then - Dim TotalDescuento As Decimal = LblDescuentoAdicional.Text.ToDecimal() / (1D + TmpDT.MAX("PorcentajeIVA").ToString().ToDecimal()) - Dim RowDescuentos As DataRow() = TmpDT.Select("Descuento > 0") - - If RowDescuentos IsNot Nothing Then - - Dim Row As DataRow = RowDescuentos(0) - Row("Descuento") = Row("Descuento").ToString().ToDecimal() + TotalDescuento - - Dim TotalCalculableImpuestos As Decimal = (Row("Cantidad").ToString().ToDecimal() * Row("PU").ToString().ToDecimal()) - Row("Descuento").ToString().ToDecimal() - Row("ImporteIVA") = (TotalCalculableImpuestos * Row("PorcentajeIVA").ToString().ToDecimal()).RoundSQL(2) - - CalculaTotalesVenta(RecalcularTotalOriginal:=False) - - 'UpPS.Update() - 'VALIDA EL CALCULO DE LOS DESCUENTOS - If (LblTotalOriginal.Text.ToDecimal() - LblDescuentoAdicional.Text.ToDecimal()) <> TxtTotal.Text.ToDecimal() Then - TmpDT = TmpDTError.Copy() - CalculaTotalesVenta(RecalcularTotalOriginal:=False) - Alert("Ocurrió un error al procesar los datos de la Venta. Los descuentos no coinciden con el importe final", TipoMensaje.MsgError) - Exit Sub - End If - End If - End If - End If - - CreaObjetosVenta(TipoDoctoViejo:=TipoDoctoViejo) - - If ObjFactura Is Nothing OrElse (ObjFactura.Cliente Is Nothing And Not CveEmpresaCRM > 0) Then - Alert("Ocurrió un error al procesar los datos de la Venta.", TipoMensaje.MsgError) - ObjFactura = Nothing - Exit Sub - End If - - - - If Not DdlTipoComprobante.SelectedValue.Contiene("Ped", "Ant", "DPe") Then - If UsuarioActual.CveEmpresa.Contiene(72, 80) Then - If ObjFactura.SubTotal <= 0 Then - Alert("Es necesario especificar el importe en los conceptos. Por favor rectifique y vuelva a intentar.", TipoMensaje.MsgAdvertencia) - Exit Sub - End If - End If - End If - - - - If ObjFactura.CveCliente > 0 Or CveEmpresaCRM > 0 Then - If TmpDT.Rows.Count > 0 Then - - Dim ObjVentas As New ClsVentas() - Dim ObjConta As New ClsContabilidad(ObjVentas.IniciaTransacSQL()) - Dim ObjInventario As New ClsInventarios(ObjVentas.IniciaTransacSQL()) - Dim ObjContr As New ClsContratos(ObjVentas.IniciaTransacSQL()) - Dim ObjOS As New ClsOS(ObjVentas.IniciaTransacSQL()) - Dim ObjBancos As New ClsBancos(ObjVentas.IniciaTransacSQL()) - Dim ObjClientes As New ClsClientes(ObjVentas.IniciaTransacSQL()) - Dim ObjEventos As New ClsOIEventos(ObjVentas.IniciaTransacSQL()) - Dim ObjCGame As New ClsCGame(ObjVentas.IniciaTransacSQL()) - Dim ObjDocCliente As New ClsEdocumentacion(ObjVentas.IniciaTransacSQL()) - Dim ObjGeneral As New ClsGenerales(ObjVentas.IniciaTransacSQL()) - Dim ObjAcum As New ClsAcumuladores(ObjVentas.IniciaTransacSQL()) - - 'Dim ObjFolios As New ClsGralFolios(ObjVentas.IniciaTransacSQL()) - ErrorList = New List(Of String) - MensajeAlert = New StringBuilder - - 'GUARDA VENTA - - Dim TieneAnticipo As Boolean = False - Dim CveAnticipoPadre As Integer = 0 ' vinculación con anticipo - Dim FolioFiscalRelacionado As String = "" - 'If GVAnticipos.Rows.Count > 0 Then - ' Dim actualindex As Integer = 0 - ' For Each row2 As GridViewRow In GVAnticipos.Rows - - ' If row2.FCCheckBox("Chk" & row2.RowIndex).Checked Then - - ' TieneAnticipo = True - ' CveAnticipoPadre = row2.DataKey("CveVenta").ToEntero() - ' CveAnticipo = CveAnticipoPadre - - ' 'CUANDO ES REFACTURACION DEBE RELACIONAR CON LA FACTURA REFACTURADA - ' If NuevaFactura <> 1 Then - ' ObjFactura.CveVentaRelacion = CveAnticipoPadre 'relaciona al anticipo - ' ObjFactura.ImporteRelacion = row2.FCTextBox($"TxtAnticipo{actualindex}").Text.ToDecimal - ' FolioFiscalRelacionado = row2.DataKey("FolioFiscal") - ' ObjFactura.CveVentaPadre = row2.DataKey("CveVenta").ToEntero() - ' Else - ' ObjFactura.CveVentaRelacion = CveDevolucion - ' End If - - ' End If - ' actualindex = actualindex + 1 - ' Next - 'End If - - Dim EsNCAmortizacion As Boolean = False - - Dim CveVentaAnterior As Integer = Me.CveVenta - - Dim CveTimbreCartaPorte As Integer = -1 - - GuardarVenta(ObjVentas, ObjConta, ObjInventario, ObjAcum, ObjContr, ObjFactura, TmpDT, ObjFactura.CveNCaVincular, ObjBancos, ObjOS, - ObjEventos, ObjCGame, ObjClientes, EsNCAmortizacion:=EsNCAmortizacion, CveAnticipoPadre:=CveAnticipoPadre) - - 'If ErrorList.Count = 0 AndAlso ChkEmitirCartaPorte.Checked AndAlso ObjFactura.TipoDocto = "Ing" Then - ' CveTimbreCartaPorte = GuardarCartaPorte(ObjFactura, ObjGeneral, ObjClientes) - ' If CveTimbreCartaPorte <= 0 Then - ' ErrorList.Add("Ocurrió un error al registrar la carta porte") - ' End If - 'End If - - 'Agregamos las OCs a la tabla - If ObjFactura.CveVenta > 0 AndAlso ErrorList.Count = 0 AndAlso DTOrdenesCompraPS IsNot Nothing AndAlso DTOrdenesCompraPS.Rows.Count > 0 AndAlso ErrorList.Count = 0 Then - Dim CveVentaDetalle As Integer = 0 - Dim CveOrdenCompraDetalle As Integer = 0 - Dim Cantidad As Decimal = 0 - - For Each row As DataRow In TmpDT.Rows - Cantidad = row("Cantidad").ToString().ToDecimal - CveVentaDetalle = row("CveVentaDetalle").ToString().ToEntero() - CveOrdenCompraDetalle = row("CveOrdenCompraDetalle").ToString().ToEntero() - If Not ObjVentas.AgregarVentaOCDetalle(CveVentaDetalle, CveOrdenCompraDetalle, Cantidad) Then - ErrorList.Add("Ocurrió un Error al agregar el detalle de la Remision") - Exit For - End If - Next - - - - End If - - If Not String.IsNullOrEmpty(TipoDoctoViejo) Then - 'SI VIENE DE UNA AUTORIZACION - If TipoDoctoViejo = "PA" Then - If Not ObjEventos.AddEventoBitacora(String.Format("Se generó una remisión en Folio: {1}", ObjFactura.CveVenta, ObjFactura.SerieFolio), "-1", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveVenta:=CveVentaAnterior) Then - ErrorList.Add("Ocurrió un error al agregar la bitacora de Póliza Virtual.") - End If - End If - End If - - 'SI ES REFACTURACION - Dim ObjNC As List(Of Object) = Nothing - If ErrorList.Count = 0 Then - If NuevaFactura = 1 Then - 'SI YA ESTA MARCADA LA VENTA ANTERIOR - If DevolucionAlmacenNC = 2 Then - If Not ObjInventario.ActualizarEsDevolucionVenta(ObjFactura.CveVenta, 2) Then - ErrorList.Add("No se pudo Cancelar el movimiento de almacen de la Factura") - End If - - 'MARCAR VENTA ANTERIOR - If Not ObjInventario.ActualizarEsDevolucionVenta(CveDevolucion, 2) Then - ErrorList.Add("No se pudo Cancelar el movimiento de almacen de la Factura") - End If - Else - 'MARCA LO PENDIENTE A NIVEL DETALLE - Dim DtMovDetalles As DataTable = Nothing - If ObjInventario.GetSaldoVentaDetalle(CveDevolucion, UsuarioActual.CveEmpresa) Then - DtMovDetalles = ObjInventario.DtResultados.Copy() - Else - ErrorList.Add("No se pudo verificar los movimientos de almacen de la factura") - End If - - 'MARCAR VENTA ANTERIOR - If Not ObjInventario.ActualizarEsDevolucionVenta(CveDevolucion, 2) Then - ErrorList.Add("No se pudo Cancelar el movimiento de almacen de la Factura") - End If - - If DtMovDetalles IsNot Nothing Then - - Dim CantidadTotal As Decimal = 0 - Dim TotalSalida As Decimal = 0 - - For Each Row As DataRow In DtMovDetalles.Rows - Dim Cantidad As Decimal = Row("Cantidad").ToString().ToDecimal() - Dim SaldoAlmacen As Decimal = Row("SaldoAlmacen").ToString().ToDecimal() - CantidadTotal += Cantidad - - If SaldoAlmacen < 0 AndAlso Cantidad = Math.Abs(SaldoAlmacen) Then - TotalSalida += Math.Abs(SaldoAlmacen) - If Not ObjInventario.UpdateEstatusAlmacen(Row("CveVentaDetalleNueva").ToString().ToEntero(), 1) Then - ErrorList.Add("No se pudo actualizar el movimiento de almacen de la factura") - End If - End If - Next - - 'SI SE VERIFICA QUE TODO ESTA SURTIDO, SE MARCA TODA LA FACTURA - If CantidadTotal = TotalSalida Then - If Not ObjInventario.ActualizarEsDevolucionVenta(ObjFactura.CveVenta, 2) Then - ErrorList.Add("No se pudo Cancelar el movimiento de almacen de la Factura") - End If - End If - End If - - DtMovDetalles.Dispose() - End If - End If - End If - - 'SI ES AMORTIZACION 3.3 - 'Dim ListaNotasCreditoGeneradas As New List(Of Modelos.Factura) - Dim NCDescuento As Boolean = ((ListaNCDesc IsNot Nothing AndAlso ListaNCDesc.Count > 0) OrElse (ListaNCBonificacion IsNot Nothing AndAlso ListaNCBonificacion.Count > 0)) - - Dim SerieFolioNCProntoPago As String = "" - Dim CveVentaNCProntoPago As Integer = -1 - - ''SOLO GENERAR NC POR DESCUENTO PRONTO PAGO SI EL PAGO ES DE CONTADO - 'If ErrorList.Count = 0 AndAlso RBLPago.SelectedValue = "2" AndAlso ObjFactura.DescuentoProntoPago > 0 Then - ' Dim ImportePagado As Decimal = DtPagos.SUMD("Importe") - ' Dim ImporteRNC As Decimal = LblDescuentosRNC.Text.ToDecimal() - - ' If (ImportePagado + ImporteRNC + ObjFactura.DescuentoProntoPago) >= ObjFactura.Total Then - - ' Dim RespFacturaProntoPago As Modelos.MensajeProntoPago = GenerarNCProntoPago(ObjVentas.IniciaTransacSQL(), ObjClientes, ObjFactura) - - ' If RespFacturaProntoPago.ObjFacturaProntoPago Is Nothing OrElse RespFacturaProntoPago Is Nothing Then - ' ErrorList.Add("No se pudo generar la nota de crédito de pronto pago") - ' Else - ' If RespFacturaProntoPago.Mensaje.CveVenta <= 0 OrElse RespFacturaProntoPago.Mensaje.TieneError Then - ' ErrorList.Add("No se pudo generar la nota de crédito de pronto pago") - ' Else - ' CveVentaNCProntoPago = RespFacturaProntoPago.Mensaje.CveVenta - ' SerieFolioNCProntoPago = RespFacturaProntoPago.Mensaje.SerieFolio - - ' ListaNotasCreditoGeneradas.Add(RespFacturaProntoPago.ObjFacturaProntoPago) - ' End If - ' End If - ' Else - ' ErrorList.Add("No se pudo generar la nota de crédito de pronto pago, no coiciden los pagos con el total a pagar de la factura") - ' End If - 'End If - - If UsuarioActual.Empresa.Funcionalidad(558) = "1" AndAlso ErrorList.Count = 0 AndAlso ObjFactura.TipoDocto = "Ing" Then - Dim RowVenta As DataRow = Nothing - If ObjVentas.GetVenta(ObjFactura.CveVenta, UsuarioActual.CveEmpresa, VerificaAlmacen:=False) Then - RowVenta = ObjVentas.DtResultados.Rows(0) - Else - ErrorList.Add("No se pudieron validar los datos de la venta") - End If - - If RowVenta IsNot Nothing Then - 'SI FUE VENTA DE CONTADO VALIDA QUE SE HAYA PAGADO EN SU TOTALIDAD - If RowVenta("CondicionesPago").ToString().ToEntero() = 0 AndAlso RowVenta("Saldo").ToString().ToDecimal() > 0.01D Then - ErrorList.Add("La venta no fue pagada en su totalidad") - End If - Else - ErrorList.Add("No se pudieron validar los datos de la venta") - End If - End If - - 'MARCA PARA NO SURTIR VENTA DE COTNRATO DE CONSIGNACION DE VENTA | [IPP] : PARCHE - If ErrorList.Count = 0 Then - If ObjFactura.CveVenta > 0 And CveAlmacenExistenciasContrato > 0 And DdlTipoComprobante.SelectedValue = "Ing" Then - If Not ObjInventario.ActualizarEsDevolucionVenta(ObjFactura.CveVenta, 2) Then - ErrorList.Add("No se pudo cancelar el movimiento de almacen de la Factura de consignación") - End If - End If - End If - - - - If ObjFactura.CveVenta > 0 AndAlso ErrorList.Count = 0 Then - - 'ACTUALIZA VENTA COTIZACIÓN - If EraCotizacion = 1 And BtnEmitirImprimir.Text = "Facturar" Then - If Not ObjVentas.UpdateVentaCotizacion(ObjFactura.CveVenta, Request("CveVenta").ToEntero()) Then - ErrorList.Add("Ocurrió un error al actualizar la cotización") - End If - End If - - 'ACTUALIZA VENTAPADRE PEDIDO - If Request("DevPed").ToEntero() > 0 AndAlso ErrorList.Count = 0 Then - If Not ObjVentas.UpdateVentaCotizacion(Request("DevPed").ToEntero(), ObjFactura.CveVenta) Then - ErrorList.Add("Ocurrió un error al actualizar la devolución de pedido") - End If - End If - - 'ACTUALIZA LA COLUMNA CveVentaFacturada - If (Request("CveRemision") IsNot Nothing AndAlso ViewState("CveRemision").ToString().ToEntero() > 0) AndAlso (Request("Op") IsNot Nothing AndAlso Request("Op") = "Rem") AndAlso ErrorList.Count = 0 Then - If Not ObjVentas.UpdateVentaRemision(ViewState("CveRemision").ToString().ToEntero(), ObjFactura.CveVenta) Then - ErrorList.Add("Ocurrió un error al actualizar la remision") - End If - End If - - 'Agregamos las Cotizaciones a la tabla - If DtCotizacionesPS IsNot Nothing AndAlso DtCotizacionesPS.Rows.Count > 0 AndAlso ErrorList.Count = 0 Then - Dim CveVentaDetalle As Integer = 0 - Dim CveVentaDetallePadre As Integer = 0 - Dim Cantidad As Decimal = 0 - Dim CvePS As Integer = 0 - Dim PU As Decimal = 0 - - For Each row As DataRow In DtCotizacionesPS.Rows - Cantidad = DtCotizacionTmpDT.FiltroPrimeroValor("Cantidad", $"CveVentaDetalleCotizacion={row("CveVentaDetalle")}").ToDecimal - CvePS = DtCotizacionTmpDT.FiltroPrimeroValor("CvePS", $"CveVentaDetalleCotizacion={row("CveVentaDetalle")}").ToEntero() - PU = DtCotizacionTmpDT.FiltroPrimeroValor("PU", $"CveVentaDetalleCotizacion={row("CveVentaDetalle")}").ToDecimal - CveVentaDetalle = TmpDT.FiltroPrimeroValor("CveVentaDetalle", $"CveVentaDetalleCotizacion={row("CveVentaDetalle")}").ToEntero() - CveVentaDetallePadre = row("CveVentaDetalle").ToString().ToEntero() - - If Not ObjVentas.AgregaCotizacionDetalle(CveVentaDetalle, CveVentaDetallePadre, Cantidad) Then - ErrorList.Add("Ocurrió un Error al agregar el detalle de la Cotización.") - End If - Next - End If - - 'Marcamos las ventas anteriores a febrero como surtidas - Ajuste Compu - If ErrorList.Count = 0 Then - If Not ObjVentas.MarcarRemisionesSinSurtir(ObjVentas.CveVenta) Then - ErrorList.Add("Ocurrió un Error al marcar la factura") - End If - End If - - - - 'If CveFactura > 0 AndAlso ErrorList.Count = 0 Then - ' If Not ObjVentas.UpdateVentaFacturas(CveFactura, ObjVentas.CveVenta, UsuarioActual.CveEmpresa) Then - ' ErrorList.Add("No se pudo actualizar la Factura") - ' End If - 'End If - - 'If CveCicloComercial > 0 AndAlso ErrorList.Count = 0 Then - ' If Not ObjContr.CicloComercialUpdate(CveCicloComercial, True, UsuarioActual.CveEmpresa, CveVenta:=ObjFactura.CveVenta) Then - ' ErrorList.Add("No se pudo actualizar ") - ' End If - 'End If - - - - 'MARCAR LA FACTURA ANTERIOR - If (Me.CveDevolucion > 0 AndAlso Me.NuevaFactura = 1) Then - If Me.ObjFacturaNC IsNot Nothing Then - If Me.ObjFacturaNC.CveEstatusRefacturacion = 4 AndAlso Not ObjVentas.UpdateEstatusVenta(ObjFacturaNC.CveVenta, ObjFacturaNC.CveEstatusFactura, UsuarioActual.CveEmpresa, CveEstatusRefacturacion:=5) Then - ErrorList.Add("No se actualizó el estatus de la factura anterior.") - End If - End If - End If - - 'ContPAQ El movimiento 1 es el de Venta - Dim AutoConta As Boolean = UsuarioActual.Empresa.Funcionalidad(200) = "1" - AutoConta = AutocontaMatriz(AutoConta) - - If DdlTipoComprobante.SelectedValue.Contiene("Rem", "RNC", "Cot", "Ped", "Pd2", "PA") Then - AutoConta = False - End If - - If UsuarioActual.CveEmpresa = 119 AndAlso DdlTipoComprobante.SelectedValue.Contiene("Ant", "Rem", "RNC", "Cot", "Ped", "Pd2", "PA", "Egs", "Dev") Then - AutoConta = False - End If - - If UsuarioActual.CveEmpresa = 140 Then - AutoConta = True - End If - - Try - If AutoConta Then - If Not ObjConta.ContabilizarPrePoliza(ObjFactura.CvePrePoliza, ObjFactura.CveUsuario, UsuarioActual.Empresa) Then - ErrorList.Add("Ocurrió un error al contabilizar, pongase en contacto con soporte técnico") - End If - End If - Catch ex As Exception - ErrorList.Add("Ocurrió un error al contabilizar, pongase en contacto con soporte técnico") - OnError("Ocurrió un error al contabilizar la factura", ex) - End Try - - If ObjFactura.CveVenta > 0 AndAlso ErrorList.Count = 0 AndAlso (SeGuardoPrePoliza Or ObjFactura.TipoDocto.Contiene("Ped", "Cot", "DPe", "PeC", "PA", "Pd2")) Then - ObjVentas.Commit() - - ObjFactura.DtDetalle = TmpDT 'actualiza por cambios de pedimentos. - ObjFactura.Timbre = PreParaTimbre(ObjFactura) - - Try - ViewState("CveVenta") = ObjFactura.CveVenta - - If Request("CveEmbarqueManifiesto") IsNot Nothing AndAlso IsNumeric(Request("CveEmbarqueManifiesto")) AndAlso Request("CveEmbarqueManifiesto").ToEntero() > 0 Then - - If ObjVentas.Embarque_ManifiestoUpvta(ObjFactura.CveVenta, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, Request("CveEmbarqueManifiesto").ToEntero()) Then - - End If - End If - Catch ex As Exception - OnError("Ocurrió un error al actualizar el embarque", ex) - End Try - Try - ViewState("CveVenta") = ObjFactura.CveVenta - - If Request("CveOrdenProduccion") IsNot Nothing AndAlso IsNumeric(Request("CveOrdenProduccion")) AndAlso Request("CveOrdenProduccion").ToEntero() > 0 Then - - If ObjVentas.AgroOrdenProduccionUpvta(ObjFactura.CveVenta, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, Request("CveOrdenProduccion").ToEntero()) Then - - End If - End If - Catch ex As Exception - OnError("Ocurrió un error al actualizar la orden de producción", ex) - End Try - - Try - Dim DirectoriArchivoXML As String = String.Format("{0}{1}", UsuarioActual.Empresa.Ruta, ObjFactura.TipoDocto) ' System.IO.Path.Combine() - If Not Directory.Exists(DirectoriArchivoXML) Then - Directory.CreateDirectory(DirectoriArchivoXML) - End If - Catch ex As Exception - OnError("Ocurrió un error al generar el directorio de xml", ex) - End Try - - - Dim SeTimbro As Boolean = False - Dim SeTimbroNC As Boolean = False - Dim EstatusSMS As Integer = 0 - - Dim MsgCancelacionRefacturacion As Modelos.Factura.MCancelacionVentaMensaje = Nothing - - 'TIMBRADO Y CASO ESPECIAL NOTA DE CREDITO - If (TipoDoctoDevolucion = "" OrElse Not TipoDoctoDevolucion.Contiene("Rem", "RNC", "Cot", "Ped", "DPe", "PA", "Pd2")) Then - - Dim DebeTimbrar As Boolean = True - If UsuarioActual.CveEmpresa.Contiene(1, 72, 80) Then - 'si tiene anticipos seleccionados y el total es cero, que no se timbre(previo empresa72) - If LblAmortizacion.Text.ToDouble > 0 And TxtTotal.Text.ToDouble <= 0 Then - DebeTimbrar = False - End If - End If - - - If UsuarioActual.TienePermisoProceso(335) Then - DebeTimbrar = False - End If - - DebeTimbrar = False - - If DebeTimbrar AndAlso ObjFactura.TipoDocto.Contiene("Ing", "Egs", "Ant", "Dev") Then - If UsuarioActual.Empresa.TipoFacturacion = "CFDi" AndAlso (UsuarioActual.Empresa.FacturaProduccion OrElse UsuarioActual.CveEmpresa = 1) Then - - 'FACTURA INGRESO/EGRESO - Dim FM As New Modelos.FemsaFactura - Dim TmpDT7Eleven As New DataTable - Dim TmpDTComplementosTimbrado As New DataTable - - Dim ObjTimbrado As New Timbrado - Try - 'If AplicaFEMSA Then - ' PrepararTimbrado(FM, TmpDT7Eleven, TmpDTComplementosTimbrado) - 'End If - If DebeTimbrar Then - SeTimbro = ObjTimbrado.TimbrarFactura(UsuarioActual, ObjFactura) - End If - Catch ex As Exception - OnError("Ocurrió un error al generar el timbrado", ex) - End Try - - Dim FolioFiscalFactura As String = ObjTimbrado.UUID - Dim MsgErrorTimbrado As String = ObjTimbrado.MensajeErrorCFDI - ObjTimbrado = Nothing - - 'NOTA DE CREDITO - REFACTURADA - CASO ESPECIAL, TIMBRADO E IMPRESION - 'If DebeTimbrar AndAlso SeTimbro AndAlso ListaNotasCreditoGeneradas IsNot Nothing AndAlso ListaNotasCreditoGeneradas.Count > 0 Then - ' Try - ' For Each NCGenerada As Modelos.Factura In ListaNotasCreditoGeneradas - ' If NCGenerada.Timbre IsNot Nothing Then - ' NCGenerada.Timbre.CFDIRelacionados.UUID.Clear() - ' NCGenerada.Timbre.CFDIRelacionados.UUID.Add(FolioFiscalFactura) - - ' Dim ObjTimbradoNC As New Timbrado - ' Dim TimbroNC As Boolean = ObjTimbradoNC.TimbrarFactura(UsuarioActual, NCGenerada) - - ' If Not TimbroNC Then - ' Alert(ObjTimbradoNC.MensajeErrorCFDI, TipoMensaje.MsgError) - ' End If - ' ObjTimbradoNC = Nothing - ' End If - ' Next - ' Catch ex As Exception - ' OnError("Ocurrió un error al timbrar la NC.", ex) - ' End Try - 'End If - - If Not SeTimbro Then - Alert(MsgErrorTimbrado, TipoMensaje.MsgError) - End If - - 'CANCELAR FACTURA ANTERIOR - Try - If SeTimbro AndAlso (Me.CveDevolucion > 0 AndAlso Me.NuevaFactura = 1) Then - If Me.ObjFacturaNC IsNot Nothing AndAlso Me.ObjFacturaNC.CveEstatusFactura <> 5 Then - Me.ObjFacturaNC.CveEstatusRefacturacion = 2 'MARCAR COMO REFACTURADA - MsgCancelacionRefacturacion = Me.ObjFacturaNC.CancelarPorRefacturacion(Me.ObjFacturaNC.CveMotivoCancelacion, Me.ObjFacturaNC.MotivoCancelacion, FolioFiscalFactura) - End If - End If - Catch ex As Exception - OnError("Ocurrió un error al cancelar la factura anterior.", ex) - End Try - - End If - End If - - End If - - - - 'MENSAJE PRINCIPAL - MensajeAlert.AppendFormat(String.Format("
    La {0}: {1} se generó correctamente.

    ", ObjFactura.TipoDocumento, ObjFactura.SerieFolio)) - - - ' DESCARGA XML - SI SE TIMBRA MANDA CORREO CON FACTURA - If SeTimbro Then - Dim ArchivoXML As String = String.Format("{0}/XML/{1}/{2}.xml", UsuarioActual.Empresa.Ruta, ObjFactura.TipoDocto, ObjFactura.SerieFolio) - If File.Exists(ArchivoXML) Then - MensajeAlert.AppendFormat("", Encripta(String.Format("OP=FactVta&CVEVENTA={0}&EXT={1}&SERIEFOLIO={2}&TIPODOCTO={3}", CveVenta, "XML", ObjFactura.SerieFolio, ObjFactura.TipoDocto))) - End If - - Try - 'MANDA CORREO - Dim strURLHOST As String = String.Format("{0}://{1}:{2}", HttpContext.Current.Request.Url.Scheme, HttpContext.Current.Request.Url.Host, HttpContext.Current.Request.Url.Port) - Dim Factura As New Modelos.Factura(UsuarioActual, CveVenta, UsuarioActual.CveEmpresa, EsCancelacion:=False, CargaDTDetalle:=False, CargaDatosCliente:=False, CargaDatosRelacionados:=False, VerificaAlmacen:=False) - Dim Hilo As New System.Threading.Thread(Sub() GeneraPDFFactura(False, Factura, UsuarioActual, strURLHOST)) - Hilo.Start() - Catch ex As Exception - OnError("Ocurrió un error al enviar el PDF", ex) - End Try - End If - - 'DESCARGA PDF - If DdlTipoComprobante.SelectedValue.Contiene("Ing", "Rem", "Ant", "Egs", "Dev", "Pd2") Then - 'If Not ImprimeAlert Then - - Dim ArchivoIngPyMe As New System.IO.FileInfo(String.Format("{0}Formatos/Factura.mrt", UsuarioActual.Empresa.Ruta)) - Dim ArchivoIng As New System.IO.FileInfo(String.Format("{0}Formatos/Factura.rdlc", UsuarioActual.Empresa.Ruta)) - Dim ArchivoRem As New System.IO.FileInfo(String.Format("{0}Formatos/Remision.rdlc", UsuarioActual.Empresa.Ruta)) - Dim ArchivoEgs As New System.IO.FileInfo(String.Format("{0}Formatos/NotaCredito.rdlc", UsuarioActual.Empresa.Ruta)) - - If ArchivoIng.Exists Or ArchivoRem.Exists Or ArchivoIngPyMe.Exists Or ArchivoEgs.Exists Then - MensajeAlert.AppendFormat("
    ", Encripta(String.Format("OP=VTA&CVEVENTA={0}&PAG=1&GUARDAR=1", CveVenta))) - Else - MensajeAlert.Append("Ocurrió un error al generar el PDF. Por favor vuelva a entrar a la factura para imprimir el PDF. ") - End If - End If - - 'CRM - If DdlTipoComprobante.SelectedValue.Contiene("Cot") AndAlso CveEmpresaCRM > 0 AndAlso CveAcercamientoCRM > 0 Then - - Dim ArchivoCotRdlc As New System.IO.FileInfo(String.Format("{0}Formatos/Cotizacion.rdlc", UsuarioActual.Empresa.Ruta)) - Dim ArchivoCotMrt As New System.IO.FileInfo(String.Format("{0}Formatos/Cotizacion.mrt", UsuarioActual.Empresa.Ruta)) - - If ArchivoCotRdlc.Exists Or ArchivoCotMrt.Exists Then - MensajeAlert.AppendFormat("
    ", Encripta(String.Format("OP=VTA&CVEVENTA={0}&PAG=1&GUARDAR=1", CveVenta))) - If ChkEnviarFacturaCRM.Checked AndAlso CorreoContactoCRM.Trim.Length > 0 Then - Try - Dim pdfCRM As Byte() = Nothing - 'If CveVenta > 0 Then - ' ObjFactura = New Modelos.Factura(UsuarioActual, CveVenta, UsuarioActual.CveEmpresa, EsCancelacion:=False) - 'End If - pdfCRM = PdfFactura(ObjFactura) - - If pdfCRM IsNot Nothing Then - Dim SerieFolioCRM As String = ObjFactura.SerieFolio - Dim TipoDoctoCRM As String = ObjFactura.TipoDocto - GeneraPDFCotizacion(True, CorreoContactoCRM:=CorreoContactoCRM, pdfCRM:=pdfCRM, SerieFolioCRM:=SerieFolioCRM, TipoDoctoCRM:=TipoDoctoCRM) - End If - - Catch ex As Exception - OnError("Ocurrió un error al enviar el PDF", ex) - End Try - End If - Else - MensajeAlert.Append("Ocurrió un error al generar el PDF. Por favor vuelva a entrar a la factura para imprimir el PDF. ") - End If - End If - - If DdlTipoComprobante.SelectedValue.Contiene("Cot") AndAlso CveEmpresaCRM > 0 AndAlso CveAcercamientoCRM > 0 Then - - Dim ArchivoCotRdlc As New System.IO.FileInfo(String.Format("{0}Formatos/Cotizacion.rdlc", UsuarioActual.Empresa.Ruta)) - Dim ArchivoCotMrt As New System.IO.FileInfo(String.Format("{0}Formatos/Cotizacion.mrt", UsuarioActual.Empresa.Ruta)) - - If ArchivoCotRdlc.Exists Or ArchivoCotMrt.Exists Then - MensajeAlert.AppendFormat("
    ", Encripta(String.Format("OP=VTA&CVEVENTA={0}&PAG=1&GUARDAR=1", CveVenta))) - Else - MensajeAlert.Append("Ocurrió un error al generar el PDF. Por favor vuelva a entrar a la factura para imprimir el PDF. ") - End If - End If - - 'ERROR DE NO TIMBRADO - If Not SeTimbro And (DdlTipoComprobante.SelectedValue = "Ing" Or DdlTipoComprobante.SelectedValue.Contiene("Egs", "Dev") Or DdlTipoComprobante.SelectedValue = "Ant") Then - MensajeAlert.AppendFormat("La factura no se pudo timbrar. Por favor intentelo de nuevo a traves del boton Emitir.") - End If - - 'ERROR DE NO TIMBRADO NC - If Not IsNothing(ObjNC) AndAlso ObjNC.Count > 0 AndAlso Not SeTimbroNC Then - MensajeAlert.AppendFormat("
    La NC #{0} no se pudo timbrar. Por favor intentelo de nuevo a traves del boton Emitir.", CType(ObjNC(0), Modelos.Factura).SerieFolio) - End If - - 'NOTIFICACION DE SMS - Select Case EstatusSMS - Case 1 - MensajeAlert.AppendFormat("
    Notificación SMS: enviado con éxito al cliente al celular: {0}", ObjFactura.Cliente.CobranzaTelefono) - Case 2 - MensajeAlert.AppendFormat("
    Notificación SMS: sin enviar. Ocurrió un error en el envío, por favor verifique la información del cliente.") - Case 3 - MensajeAlert.AppendFormat("
    Notificación SMS: sin enviar. No se pudo cargar el celular del cliente, por favor verifique la información del cliente.") - End Select - - - If DdlTipoComprobante.SelectedValue.Contiene("Cot") AndAlso CveEmpresaCRM > 0 AndAlso CveAcercamientoCRM > 0 Then - RegistraScript($"window.location.href = '/Compras/PopUpVerFactura.aspx?P={Encripta(String.Format("OP=VTA&CVEVENTA={0}&PAG=1", CveVenta))}'", "Imprimir") - End If - - 'DESCARGAR PDF DE CICOVISA - 'If UsuarioActual.CveEmpresa = 72 And CveCliente = 70381 Then - ' If DdlTipoComprobante.SelectedValue.Contiene("Ing", "Rem") Then - ' MensajeAlert.AppendFormat("
    ", Encripta(String.Format("OP=CIC&CVEVENTA={0}", CveVenta))) - ' End If - 'End If - - - 'MOVIMIENTO DE ALMACEN - If ObjFactura.Inv_CveMovimiento > 0 Then - MensajeAlert.AppendFormat("

    Movimiento de Almacén
    ", ObjFactura.Inv_CveMovimiento) - End If - - If CveVentaNCProntoPago > 0 Then - MensajeAlert.AppendFormat(String.Format("
    La nota de crédito {0} por descuento pronto pago se generó correctamente.

    ", SerieFolioNCProntoPago)) - End If - - If MsgCancelacionRefacturacion IsNot Nothing Then - If Not MsgCancelacionRefacturacion.HuboError Then - If MsgCancelacionRefacturacion.CveEstatus = 5 Then - MensajeAlert.AppendFormat("
    El folio {0} fue cancelado. Descargar Acuse", Me.ObjFacturaNC.SerieFolio, Encripta(String.Format("OP=CAN&CVEVTA={0}", Me.ObjFacturaNC.CveVenta))) - MensajeAlert.AppendFormat(" Enviar Acuse.

    ", Me.ObjFacturaNC.CveVenta) - ElseIf MsgCancelacionRefacturacion.CveEstatus = 20 Then - MensajeAlert.AppendFormat("
    El folio {0} esta en proceso de cancelación. Descargar Acuse", Me.ObjFacturaNC.SerieFolio, Encripta(String.Format("OP=CAN&CVEVTA={0}", Me.ObjFacturaNC.CveVenta))) - MensajeAlert.AppendFormat(" Enviar Acuse.

    ", Me.ObjFacturaNC.CveVenta) - Else - MensajeAlert.AppendFormat("
    El folio {0} no fue cancelado. Intente mas tarde cancelar el documento Ver en el reporte", Me.ObjFacturaNC.SerieFolio, Me.ObjFacturaNC.CveVenta) - End If - Else - MensajeAlert.AppendFormat("
    El folio {0} no fue cancelado. Intente mas tarde cancelar el documento Ver en el reporte", Me.ObjFacturaNC.SerieFolio, Me.ObjFacturaNC.CveVenta) - End If - End If - - '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/Ventas.aspx?CveVenta=-1"";")) - 'Alert(MensajeAlert.ToString(), TipoMensaje.MsgInformacion, Liga) - - Dim Liga As String = "" - Dim Liga2 As String = "" - - If Request("CveCliente") IsNot Nothing AndAlso Request("CveCliente").ToEntero > 0 Then - Liga = $"document.location.href=""/Ventas/Ventas.aspx?CveCliente={Request("CveCliente")}"";" - Else - Liga = "document.location.href=""/Ventas/Ventas.aspx?CveVenta=-1"";" - End If - - If CveEmpresaCRM > 0 Then - Liga2 = $"document.location.href=""/CRM/EmpresaCRM.aspx?CveEmpresaCRM={CveEmpresaCRM}"";" - Else - Liga2 = $"document.location.href=""/Ventas/Clientes.aspx?CveCliente={CveCliente}"";" - End If - - If DdlTipoComprobante.SelectedValue.Contiene("Cot") AndAlso CveEmpresaCRM > 0 AndAlso CveAcercamientoCRM > 0 Then - Liga = $"document.location.href=""/CRM/Acercamiento.aspx?CveAcercamiento={CveAcercamientoCRM}&OPTAB=COT"";" - Alert(MensajeAlert.ToString(), TipoMensaje.MsgInformacion, Liga, TextoConfirmacion:="Aceptar", TextoSegundoBoton:=Nothing, JSBtn2:=Nothing, ShowCloseButton:=False) - Else - Alert(MensajeAlert.ToString(), TipoMensaje.MsgDosBotones, Liga, TextoConfirmacion:="Seguir Registrando", TextoSegundoBoton:="Ir al Cliente", JSBtn2:=Liga2, ShowCloseButton:=False) - End If - - MensajeAlert.Clear() - - Try - - BtnEmitirImprimir.Visible = False - ObjFactura = Nothing - Catch ex As Exception - OnError("Ocurrió un error al limpiar los datos", ex) - End Try - - Else - ObjVentas.RollBack() - - For Each ErrorItem As String In ErrorList - Alert(ErrorItem, TipoMensaje.MsgAdvertencia) - Next - - 'MUESTA ALERT ERROR - Alert("Ocurrió un error al procesar los datos. Por favor rectifique y vuelta a intentar.", TipoMensaje.MsgError) - End If - - ObjVentas.Dispose() - ObjConta.Dispose() - ObjInventario.Dispose() - ObjCGame.Dispose() - ObjContr.Dispose() - ObjDocCliente.Dispose() - ObjAcum.Dispose() - 'ObjFolios.Dispose() - ErrorList.Clear() - ErrorList = Nothing - MensajeAlert = Nothing - TmpDT = TmpDTError.Copy - CalculaTotalesVenta(RecalcularTotalOriginal:=False) - - Else - ObjVentas.RollBack() - - For Each ErrorItem As String In ErrorList - Alert(ErrorItem, TipoMensaje.MsgAdvertencia) - Next - - 'MUESTA ALERT ERROR - Alert("Ocurrió un error al procesar los datos. Por favor rectifique y vuelta a intentar.", TipoMensaje.MsgError) - ObjVentas.Dispose() - ObjConta.Dispose() - ObjInventario.Dispose() - ObjCGame.Dispose() - ObjContr.Dispose() - ObjDocCliente.Dispose() - 'ObjFolios.Dispose() - ErrorList.Clear() - ErrorList = Nothing - MensajeAlert = Nothing - - TmpDT = TmpDTError.Copy - CalculaTotalesVenta(RecalcularTotalOriginal:=False) - End If - ObjFactura = Nothing - 'ListaNotasCreditoGeneradas = Nothing - End If - - End If - End Sub - - Private Function AutocontaMatriz(AutoConta As Boolean) As Boolean - Dim Respuesta As Boolean = False - - If UsuarioActual.CveEmpresa.Contiene(13, 83) Then - Dim DTSubproyectoActual As DataTable = GlobalDTSubProyectos(-1, DdlSubProyectoDatos.SelectedValue.ToEntero) - - If (DTSubproyectoActual.Rows(0)("TipoSucursal").ToString.ToEntero = 1) Then - Respuesta = True - Else - Respuesta = False - End If - - Else - Respuesta = AutoConta - End If - - Return Respuesta - - End Function - - Private Sub CreaObjetosVenta(Optional VistaPrevia As Boolean = False, Optional EsCancelacion As Boolean = False, Optional TipoDoctoViejo As String = "") - - If Me.CveVenta > 0 AndAlso NuevaFactura <> 1 Then - ObjFactura = New Modelos.Factura(UsuarioActual, CveVenta, UsuarioActual.CveEmpresa, EsCancelacion:=EsCancelacion) - Else - ObjFactura = New Modelos.Factura - End If - - ObjFactura.Version = "4.0" - If ObjFactura.Cliente Is Nothing Then ObjFactura.Cliente = New Modelos.ClienteModel - - ObjFactura.Cliente.CodigoRegimenFiscal = ClienteCodigoRegimenFiscal - ObjFactura.Cliente.RegimenFiscal = ClienteRegimenFiscal - - ObjFactura.CveUsuario = UsuarioActual.CveUsuario - ObjFactura.CveEmpresa = UsuarioActual.CveEmpresa - ObjFactura.TipoCambio = If(DdlMoneda.SelectedValue.ToEntero() = 1, 1, TxtTipoCambio.Text.Trim.ToDecimal) - ObjFactura.TipoCambioDolares = TxtTipoCambioDlls.Text.Trim.ToDecimal - ObjFactura.ConvertirPesos = ChkConvertirDoctoPesos.Checked - ObjFactura.ConvertirDolares = ChkConvertirDolares.Checked - ObjFactura.CveMoneda = DdlMoneda.SelectedValue.ToEntero() - ObjFactura.Moneda = DdlMoneda.SelectedItem.Text - ObjFactura.MonedaSAT = GlobalDTMonedas.FiltroPrimeroValor("AbreviaturaSAT", $"CveMoneda = {DdlMoneda.SelectedValue}") - ObjFactura.TipoDocto = If(IfNull(ViewState("CveRemision"), 0).ToString().ToEntero() > 0, "Ing", DdlTipoComprobante.SelectedValue) - ObjFactura.FacturarSucursal = (Me.FacturarSucursal AndAlso DdlSucursalCliente.SelectedValue.ToEntero() > 0 AndAlso (Me.ClienteSucursal IsNot Nothing AndAlso Not String.IsNullOrEmpty(Me.ClienteSucursal.RFC))) - ObjFactura.VentaDesglosaIEPS = Me.VentaDesglosaIEPS - - If EsCreaApartirDe Then - ViewState("EstablecioFolio") = False - End If - - 'si es cancelacion, debe de conservar el folio actual - - - ''SI NO ESTABLECIO UN FOLIO FIJO Y SI ES FACTURACION DE REMISION O COTIZACION NO TOMAR EL FOLIO QUE SE MUESTRA - 'If Not EstablecioFolio AndAlso (Not EsCancelacion AndAlso ObjFactura.Folio > 0 AndAlso TipoDoctoViejo.Contiene("Rem", "Cot")) Then - ' ObjFactura.Folio = -1 - 'End If - - ObjFactura.Folio = Me.FolioActual.ToEntero - ObjFactura.Serie = Me.Serie - - - If UsuarioActual.Empresa.Funcionalidad(531) = "1" Then - Dim ObjFolios As New ClsGralFolios() - Dim TipoDoctoConsulta As String = If(ObjFactura.TipoDocto = "Ant", "Ing", If(ObjFactura.TipoDocto = "PA", "Rem", ObjFactura.TipoDocto)) - - 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() - End If - DT.Dispose() - End If - ObjFolios.Dispose() - - End If - - ObjFactura.Fecha = New Date(NowADS.Year, NowADS.Month, NowADS.Day, NowADS().Hour, NowADS().Minute, NowADS().Second) - ObjFactura.CvePrePoliza = -1 - ObjFactura.CveMetodoPago = 0 'DdlMetodoPago.SelectedValue.ToEntero() - ObjFactura.MetodoPago = "" ' DdlMetodoPago.SelectedItem.Text - ObjFactura.ClaveMetodoPagoSAT = GlobalDTMetodosPago.FiltroPrimeroValor("ClaveSAT", $"CveMetodoPago = {DdlMetodoPago33.SelectedValue}") - ObjFactura.FechaVencimiento = NowADS() - - ' If ObjFactura.TipoDocto = "Cot" Then - - ObjFactura.CveMetodoPago33 = DdlMetodoPago33.SelectedValue.ToEntero() - ObjFactura.MetodoPago33 = If(DdlMetodoPago33.SelectedValue.ToEntero() > 0, DdlMetodoPago33.SelectedItem.Text, "") - ObjFactura.ClaveMetodoPagoSAT = GlobalDTVtaMetodoPago.FiltroPrimeroValor("ClaveMetodoPagoSAT", $"CveMetodoPago = {DdlMetodoPago33.SelectedValue}") - - ObjFactura.CveFormaPago33 = DdlFormaPago33.SelectedValue.ToEntero() - ObjFactura.FormaPago33 = If(DdlFormaPago33.SelectedValue.ToEntero() > 0, DdlFormaPago33.SelectedItem.Text, "") - ObjFactura.FormaPagoSAT33 = GlobalDTVtaFormaPago.FiltroPrimeroValor("ClaveFormaPagoSAT", $"CveFormaPago = {DdlFormaPago33.SelectedValue}") - - ObjFactura.CveUsoCFDI = DdlUsoCFDI.SelectedValue.ToEntero() - ObjFactura.UsoCFDI = If(DdlUsoCFDI.SelectedValue.ToEntero() > 0, DdlUsoCFDI.SelectedItem.Text, "") - ObjFactura.ClaveUsoCFDI = GlobalDTSATUsosCFDI.FiltroPrimeroValor("UsoCFDI", $"CveUsoCFDI = {DdlUsoCFDI.SelectedValue}") - ' End If - - ObjFactura.UsuarioCreo = LblUsuario.Text.Trim - ObjFactura.CveCondicionEntrega = --1 - ObjFactura.CondicionEntrega = "-1" - ObjFactura.CondicionesPago = 2 ' 0 - Contado, 1 - Credito, 2 - termianl - ObjFactura.FormaPago = 0 - - ObjFactura.AtencionA = "" - ObjFactura.FordGSDB = "" - - ObjFactura.NumeroContrato = NumeroContrato - ObjFactura.DescripcionContrato = DescripcionContrato - ObjFactura.NumeroDescripcionContrato = If($"{NumeroContrato} - {NumeroLicitacion}" = " - ", "", $"{NumeroContrato} {If(NumeroLicitacion = "", "", $" - Licitación: {NumeroLicitacion}")}") - ObjFactura.PedidoContrato = "" - ObjFactura.OrdenCompra = TxtOrdenCompra.Text.Trim - - Select Case ObjFactura.TipoDocto - Case "Ing" - ObjFactura.TipoDocumento = "Factura" - Case "Rem" - ObjFactura.TipoDocumento = "Remision" - Case "Cot" - ObjFactura.TipoDocumento = "Cotizacion" - Case "Egs" - ObjFactura.TipoDocumento = "Nota de Crédito" - Case "Dev" - ObjFactura.TipoDocumento = "Nota de Devolución" - Case "DPe" - ObjFactura.TipoDocumento = "Devolución de pedido" - Case "PeC" - ObjFactura.TipoDocumento = "Consignación de Pedido" - Case Else - ObjFactura.TipoDocumento = "" - End Select - - - ObjFactura.Fech1 = NowADS() - ObjFactura.Fech2 = NowADS() - ObjFactura.Fech3 = NowADS() - ObjFactura.Alfa1 = "" - ObjFactura.Alfa2 = "" - ObjFactura.Alfa3 = "" - ObjFactura.Num1 = 0 - ObjFactura.Num2 = 0 - ObjFactura.Num3 = 0 - - If divcondicionespago.Visible Then - ObjFactura.FechaPago = NowADS() - Else - ObjFactura.FechaPago = NowADS() - End If - - ObjFactura.DiasCredito = DiasCredito - ObjFactura.EsDiasCreditoFijo = EsDiasCreditoFijo - - ObjFactura.CveCorte = CveCorte - 'ObjFactura.CveMesa = -1 - ObjFactura.NumeroPersonas = 0 - - - 'If ObjFactura.TipoDocto = "Ant" And DdlContratosModal.SelectedValue.ToEntero > 0 Or ObjFactura.TipoDocto = "Ing" And DdlContratosModal.SelectedValue.ToEntero > 0 Or ObjFactura.TipoDocto = "Egs" And DdlContratosModal.SelectedValue.ToEntero > 0 Then - ' CveContrato = DdlContratosModal.SelectedValue.ToEntero - 'End If - - - ObjFactura.CveContrato = If(CveContrato > 0, CveContrato, CvePresupuesto) - - ObjFactura.CveClienteSucursal = DdlSucursalCliente.SelectedValue.ToEntero() - ObjFactura.Entrega = Entrega - ObjFactura.Vigencia = NowADS() - - ObjFactura.CveVentaPadre = If(CveDevolucion > 0, CveDevolucion, If(CvePedido2 > 0, CvePedido2, CvePedido)) - If DtVentasNC IsNot Nothing AndAlso DtVentasNC.Rows.Count > 0 Then - ObjFactura.CveVentaPadre = DtVentasNC.Rows(0)("CveVenta").ToString().ToEntero() - ObjFactura.SerieFolioPadre = DtVentasNC.Rows(0)("FolioFiscal").ToString() - End If - - If DdlTipoComprobante.SelectedValue = "Dev" AndAlso ListaRemisionesNC IsNot Nothing AndAlso ListaRemisionesNC.Count > 0 Then - Dim ObjRNC As Modelos.Factura = ListaRemisionesNC.FirstOrDefault - If ObjRNC IsNot Nothing Then - ObjFactura.CveVentaPadre = ObjRNC.CveVentaPadre - ObjFactura.SerieFolioPadre = ObjRNC.SerieFolioPadre - End If - End If - - ObjFactura.CveVendedor = -1 - - - ObjFactura.FechaEjecucion = NowADS() - ObjFactura.CveSubProyecto = DdlSubProyectoDatos.SelectedValue.ToEntero() - ObjFactura.CveSubProyectoCobranza = DdlSubProyectoDatos.SelectedValue.ToEntero() - ObjFactura.CveSubProyectoEjecucion = DdlSubProyectoDatos.SelectedValue.ToEntero() - ObjFactura.AtencionA = If(ObjFactura.TipoDocto = "Cot" Or (ObjFactura.TipoDocto.Contiene("Ing", "Rem") AndAlso LblRFC.Text = "XAXX010101000"), "", "-1") - ObjFactura.MotivoDescuento = "" - ObjFactura.Observaciones = TxtObsFact.Text.Trim - ObjFactura.Det_OrdenCompra = "" - ObjFactura.Det_FechaOrdenCompra = "" - ObjFactura.Det_ContraRecibo = "" - ObjFactura.MonedaAbreviatura = "" - - 'CONVERTIR REMISION - TIPO MONEDA -DOLARES A PESOS - If (ObjFactura.CveMoneda = 2 AndAlso ObjFactura.ConvertirPesos = True AndAlso ObjFactura.TipodeComprobante = "Ingresos" AndAlso RemisionesLista.Count > 0) Then - Dim TotalCalculableImpuestos, TotalCalculableImpuestosIVA As Decimal - For Each Row As DataRow In TmpDT.Rows - Row("PU") = Math.Round(Row("PU").ToString().ToDecimal * ObjFactura.TipoCambio, 6) - Row("Descuento") = Math.Round(Row("Descuento").ToString().ToDouble * ObjFactura.TipoCambio, NumeroDecimales) - - TotalCalculableImpuestos = (Row("Cantidad").ToString().ToDecimal * Row("PU").ToString().ToDecimal) - Row("Descuento").ToString().ToDecimal - TotalCalculableImpuestosIVA = TotalCalculableImpuestos * (1 + Row("PorcentajeIEPS").ToString().ToDecimal) - Row("IVA") = Row("PorcentajeIVA") - Row("ImporteIVA") = Math.Round(Row("PorcentajeIVA").ToString().ToDecimal * TotalCalculableImpuestosIVA, NumeroDecimales) - Row("ImporteRetIVA") = Math.Round(ClienteRetIVA * TotalCalculableImpuestos, NumeroDecimales) - Row("ImporteRetISR") = Math.Round(ClienteRetISR * TotalCalculableImpuestos, NumeroDecimales) - Row("ImporteIEPS") = Math.Round(Row("PorcentajeIEPS").ToString().ToDecimal * TotalCalculableImpuestos, NumeroDecimales) - Row("IEPS") = Row("ImporteIEPS") - Row("Total") = Math.Round(Row("Cantidad").ToString().ToDouble * Row("PU").ToString().ToDouble, NumeroDecimales) - Row("TotalImporte") = Math.Round(Row("Cantidad").ToString().ToDouble * Row("PU").ToString().ToDouble, NumeroDecimales) - Next - - Dim ImpuestosLocales As Double = 0 - For Each gvr As GridViewRow In GvImpuestosLocales2.Rows - If gvr.RowType = DataControlRowType.DataRow Then - gvr.FCTextBox("TxtImpuestoLocalPS").Text = (gvr.FCTextBox("TxtImpuestoLocalPS").Text.ToDouble * ObjFactura.TipoCambio).FormatoNumero - If gvr.DataKey("TipoImpuesto").ToString() = "5" Then - ImpuestosLocales -= Math.Round(gvr.FCTextBox("TxtImpuestoLocalPS").Text.ToDouble * ObjFactura.TipoCambio, NumeroDecimales) - Else - ImpuestosLocales += Math.Round(gvr.FCTextBox("TxtImpuestoLocalPS").Text.ToDouble * ObjFactura.TipoCambio, NumeroDecimales) - End If - - End If - Next - - ObjFactura.SubTotal = TmpDT.SUMD("Total") - ObjFactura.Descuento = TmpDT.SUMD("Descuento") - ObjFactura.Amortizacion = Math.Round(LblAmortizacion.Text.Trim.ToDecimal * ObjFactura.TipoCambio, NumeroDecimales) - ObjFactura.IVA = TmpDT.SUMD("ImporteIVA") - ObjFactura.RetIVA = TmpDT.SUMD("ImporteRetIVA") - ObjFactura.RetISR = TmpDT.SUMD("ImporteRetISR") - ObjFactura.IEPS = TmpDT.SUMD("ImporteIEPS") - ObjFactura.Total = (ObjFactura.SubTotal - ObjFactura.Descuento - ObjFactura.Amortizacion + ObjFactura.IVA + ObjFactura.IEPS - ObjFactura.RetIVA - ObjFactura.RetISR - ImpuestosLocales).ToDecimal - - TipoCambioRemision = ObjFactura.TipoCambio - ObjFactura.TipoCambio = 1 - ObjFactura.ConvertirPesos = False - ConversionRemision = "/" - - 'CONVERTIR REMISION - TIPO MONEDA -PESOS A DOLARES - ElseIf (ObjFactura.CveMoneda = 1 AndAlso ObjFactura.ConvertirDolares = True AndAlso ObjFactura.TipodeComprobante = "Ingresos" AndAlso RemisionesLista.Count > 0) Then - - For Each Row As DataRow In TmpDT.Rows - Row("PU") = Math.Round(Row("PU").ToString().ToDouble / ObjFactura.TipoCambioDolares, 6) - Row("Total") = Math.Round(Row("Cantidad").ToString().ToDouble * Row("PU").ToString().ToDouble, NumeroDecimales) - Row("TotalImporte") = Math.Round(Row("Cantidad").ToString().ToDouble * Row("PU").ToString().ToDouble, NumeroDecimales) - Row("Descuento") = Math.Round(Row("Descuento").ToString().ToDouble / ObjFactura.TipoCambioDolares, NumeroDecimales) - Row("ImporteIVA") = Math.Round(Row("ImporteIVA").ToString().ToDouble / ObjFactura.TipoCambioDolares, NumeroDecimales) - Row("ImporteIEPS") = Math.Round(Row("ImporteIEPS").ToString().ToDouble / ObjFactura.TipoCambioDolares, NumeroDecimales) - Row("ImporteRetIVA") = Math.Round(Row("ImporteRetIVA").ToString().ToDouble / ObjFactura.TipoCambioDolares, NumeroDecimales) - Row("ImporteRetISR") = Math.Round(Row("ImporteRetISR").ToString().ToDouble / ObjFactura.TipoCambioDolares, NumeroDecimales) - Next - - Dim ImpuestosLocales As Decimal = 0 - For Each gvr As GridViewRow In GvImpuestosLocales2.Rows - If gvr.RowType = DataControlRowType.DataRow Then - gvr.FCTextBox("TxtImpuestoLocalPS").Text = (gvr.FCTextBox("TxtImpuestoLocalPS").Text.ToDouble / ObjFactura.TipoCambioDolares).FormatoNumero - ImpuestosLocales += Math.Round(gvr.FCTextBox("TxtImpuestoLocalPS").Text.ToDecimal / ObjFactura.TipoCambioDolares, NumeroDecimales) - End If - Next - - ObjFactura.SubTotal = TmpDT.SUMD("Total") - ObjFactura.Descuento = TmpDT.SUMD("Descuento") - ObjFactura.Amortizacion = Math.Round(LblAmortizacion.Text.Trim.ToDecimal / ObjFactura.TipoCambioDolares, NumeroDecimales) - ObjFactura.IVA = TmpDT.SUMD("ImporteIVA") - ObjFactura.RetIVA = TmpDT.SUMD("ImporteRetIVA") - ObjFactura.RetISR = TmpDT.SUMD("ImporteRetISR") - ObjFactura.IEPS = TmpDT.SUMD("ImporteIEPS") - ObjFactura.Total = (ObjFactura.SubTotal - ObjFactura.Descuento - ObjFactura.Amortizacion + ObjFactura.IVA + ObjFactura.IEPS - ObjFactura.RetIVA - ObjFactura.RetISR - ImpuestosLocales) - - TipoCambioRemision = ObjFactura.TipoCambioDolares - ObjFactura.TipoCambioDolares = 1 - ObjFactura.ConvertirDolares = False - ConversionRemision = "*" - - 'CONVERTIR REMISION - TIPO MONEDA -DOLARES A PESOS REGISTRO DIRECTO SIN VENTA - ElseIf (EditoRemision = False AndAlso ObjFactura.CveMoneda = 2 AndAlso ObjFactura.ConvertirPesos = True) Then - - Dim TotalCalculableImpuestos, TotalCalculableImpuestosIVA As Decimal - For Each Row As DataRow In TmpDT.Rows - Row("PU") = Math.Round(Row("PU").ToString().ToDecimal * ObjFactura.TipoCambio, 6) - Row("Descuento") = Math.Round(Row("Descuento").ToString().ToDouble * ObjFactura.TipoCambio, NumeroDecimales) - - TotalCalculableImpuestos = (Row("Cantidad").ToString().ToDecimal * Row("PU").ToString().ToDecimal) - Row("Descuento").ToString().ToDecimal - TotalCalculableImpuestosIVA = TotalCalculableImpuestos * (1 + Row("PorcentajeIEPS").ToString().ToDecimal) - Row("IVA") = Row("PorcentajeIVA") - Row("ImporteIVA") = Math.Round(Row("PorcentajeIVA").ToString().ToDecimal * TotalCalculableImpuestosIVA, NumeroDecimales) - Row("ImporteRetIVA") = Math.Round(ClienteRetIVA * TotalCalculableImpuestos, NumeroDecimales) - Row("ImporteRetISR") = Math.Round(ClienteRetISR * TotalCalculableImpuestos, NumeroDecimales) - Row("ImporteIEPS") = Math.Round(Row("PorcentajeIEPS").ToString().ToDecimal * TotalCalculableImpuestos, NumeroDecimales) - Row("IEPS") = Row("ImporteIEPS") - Row("Total") = Math.Round(Row("Cantidad").ToString().ToDouble * Row("PU").ToString().ToDouble, NumeroDecimales) - Row("TotalImporte") = Math.Round(Row("Cantidad").ToString().ToDouble * Row("PU").ToString().ToDouble, NumeroDecimales) - Next - - Dim ImpuestosLocales As Double = 0 - For Each gvr As GridViewRow In GvImpuestosLocales2.Rows - If gvr.RowType = DataControlRowType.DataRow Then - gvr.FCTextBox("TxtImpuestoLocalPS").Text = (gvr.FCTextBox("TxtImpuestoLocalPS").Text.ToDecimal * ObjFactura.TipoCambio).FormatoNumero - ImpuestosLocales += Math.Round(gvr.FCTextBox("TxtImpuestoLocalPS").Text.ToDouble * ObjFactura.TipoCambio, NumeroDecimales) - End If - Next - - ObjFactura.SubTotal = TmpDT.SUM("Total") - ObjFactura.Descuento = TmpDT.SUM("Descuento") - ObjFactura.Amortizacion = Math.Round(LblAmortizacion.Text.Trim.ToDecimal * ObjFactura.TipoCambio, NumeroDecimales) - ObjFactura.IVA = TmpDT.SUM("ImporteIVA") - ObjFactura.RetIVA = TmpDT.SUM("ImporteRetIVA") - ObjFactura.RetISR = TmpDT.SUM("ImporteRetISR") - ObjFactura.IEPS = TmpDT.SUM("ImporteIEPS") - ObjFactura.Total = (ObjFactura.SubTotal - ObjFactura.Descuento - ObjFactura.Amortizacion + ObjFactura.IVA + ObjFactura.IEPS - ObjFactura.RetIVA - ObjFactura.RetISR - ImpuestosLocales).ToDecimal - - TipoCambioRemision = ObjFactura.TipoCambio - ObjFactura.TipoCambio = 1 - ObjFactura.ConvertirPesos = False - ConversionRemision = "/" - - 'CONVERTIR REMISION - TIPO MONEDA -PESOS A DOLARES REGISTRO DIRECTO SIN VENTA - ElseIf (EditoRemision = False AndAlso ObjFactura.CveMoneda = 1 AndAlso ObjFactura.ConvertirDolares = True) Then - For Each Row As DataRow In TmpDT.Rows - Row("PU") = Math.Round(Row("PU").ToString().ToDouble / ObjFactura.TipoCambioDolares, 6) - Row("Total") = Math.Round(Row("Cantidad").ToString().ToDouble * Row("PU").ToString().ToDouble, NumeroDecimales) - Row("TotalImporte") = Math.Round(Row("Cantidad").ToString().ToDouble * Row("PU").ToString().ToDouble, NumeroDecimales) - Row("Descuento") = Math.Round(Row("Descuento").ToString().ToDouble / ObjFactura.TipoCambioDolares, NumeroDecimales) - Row("ImporteIVA") = Math.Round(Row("ImporteIVA").ToString().ToDouble / ObjFactura.TipoCambioDolares, NumeroDecimales) - Row("ImporteIEPS") = Math.Round(Row("ImporteIEPS").ToString().ToDouble / ObjFactura.TipoCambioDolares, NumeroDecimales) - Row("ImporteRetIVA") = Math.Round(Row("ImporteRetIVA").ToString().ToDouble / ObjFactura.TipoCambioDolares, NumeroDecimales) - Row("ImporteRetISR") = Math.Round(Row("ImporteRetISR").ToString().ToDouble / ObjFactura.TipoCambioDolares, NumeroDecimales) - Next - - Dim ImpuestosLocales As Double = 0 - For Each gvr As GridViewRow In GvImpuestosLocales2.Rows - If gvr.RowType = DataControlRowType.DataRow Then - gvr.FCTextBox("TxtImpuestoLocalPS").Text = (gvr.FCTextBox("TxtImpuestoLocalPS").Text.ToDouble / ObjFactura.TipoCambioDolares).FormatoNumero - ImpuestosLocales += Math.Round(gvr.FCTextBox("TxtImpuestoLocalPS").Text.ToDouble / ObjFactura.TipoCambioDolares, NumeroDecimales) - End If - Next - - ObjFactura.SubTotal = TmpDT.SUM("Total") - ObjFactura.Descuento = TmpDT.SUM("Descuento") - ObjFactura.Amortizacion = Math.Round(LblAmortizacion.Text.Trim.ToDecimal / ObjFactura.TipoCambioDolares, NumeroDecimales) - ObjFactura.IVA = TmpDT.SUM("ImporteIVA") - ObjFactura.RetIVA = TmpDT.SUM("ImporteRetIVA") - ObjFactura.RetISR = TmpDT.SUM("ImporteRetISR") - ObjFactura.IEPS = TmpDT.SUM("ImporteIEPS") - ObjFactura.Total = (ObjFactura.SubTotal - ObjFactura.Descuento - ObjFactura.Amortizacion + ObjFactura.IVA + ObjFactura.IEPS - ObjFactura.RetIVA - ObjFactura.RetISR - ImpuestosLocales).ToDecimal - - TipoCambioRemision = ObjFactura.TipoCambioDolares - ObjFactura.TipoCambioDolares = 1 - ObjFactura.ConvertirDolares = False - ConversionRemision = "*" - - Else - 'Totales, Y se llena TmpDTImpuestos - ObjFactura.SubTotal = TxtSubTotal.Text.ToDecimal - ObjFactura.Descuento = LblDescuentos.Text.Trim.ToDecimal - ObjFactura.Amortizacion = LblAmortizacion.Text.Trim.ToDecimal - ObjFactura.IVA = TxtIVA.Text.ToDecimal - ObjFactura.RetIVA = TxtRetIVA.Text.ToDecimal - ObjFactura.RetISR = TxtRetISR.Text.ToDecimal - ObjFactura.IEPS = TxtIEPS.Text.ToDecimal - ObjFactura.Total = TxtTotal.Text.ToDecimal - End If - - Dim TmpSubtotal As Decimal = TxtSubTotal.Text.ToDecimal - ObjFactura.Descuento - - Dim TmpAmortizacion As Decimal = LblAmortizacion.Text.ToDecimal - - ObjFactura.DtDetalle = TmpDT - - 'If AplicaFord Then - ' ObjFactura.FordGSDB = TxtFordGSDB.Text - - ' Dim SB As New StringBuilder - ' For Each li As ListItem In LstFordASN.Items - ' SB.AppendFormat("{0}, ", li.Text) - ' Next - ' ObjFactura.FordASN = SB.ToString() - 'End If - - If TmpDTImpuestos Is Nothing Then CreaDTImpuestos() - - Dim TmpDTImpuestosVista As DataTable = TmpDTImpuestos.Clone() - - Dim DR As DataRow = TmpDTImpuestosVista.NewRow() - - If TxtSubTotal.Text.ToDecimal <> 0 Then DR("ImpuestoLocal") = "SubTotal" : DR("Importe") = ObjFactura.SubTotal : DR("Orden") = 10 : DR("TipoImpuesto") = "0" : TmpDTImpuestosVista.Rows.Add(DR) - DR = TmpDTImpuestosVista.NewRow() - If LblDescuentos.Text.Trim.ToDecimal <> 0 Then DR("ImpuestoLocal") = "Descuentos" : DR("Importe") = ObjFactura.Descuento : DR("Orden") = 20 : DR("TipoImpuesto") = "0" : TmpDTImpuestosVista.Rows.Add(DR) - DR = TmpDTImpuestosVista.NewRow() - If LblAmortizacion.Text.Trim.ToDecimal <> 0 Then DR("ImpuestoLocal") = "Amort.Ant" : DR("Importe") = ObjFactura.Amortizacion : DR("Orden") = 30 : DR("TipoImpuesto") = "0" : TmpDTImpuestosVista.Rows.Add(DR) - DR = TmpDTImpuestosVista.NewRow() - If TxtSubTotal2.Text.ToDecimal <> TxtSubTotal.Text.ToDecimal Then DR("ImpuestoLocal") = "SubTotal 2" : DR("Importe") = TxtSubTotal2.Text.ToDecimal : DR("Orden") = 40 : DR("TipoImpuesto") = "0" : TmpDTImpuestosVista.Rows.Add(DR) - DR = TmpDTImpuestosVista.NewRow() - - 'If TxtIVA.Text.ToDecimal <> 0 Then - DR("ImpuestoLocal") = "IVA" : DR("Importe") = ObjFactura.IVA : DR("Orden") = 50 : DR("TipoImpuesto") = "0" : TmpDTImpuestosVista.Rows.Add(DR) - DR = TmpDTImpuestosVista.NewRow() - - If TxtRetIVA.Text.ToDecimal <> 0 Then DR("ImpuestoLocal") = "Ret.IVA" : DR("Importe") = ObjFactura.RetIVA : DR("Orden") = 60 : DR("TipoImpuesto") = "0" : TmpDTImpuestosVista.Rows.Add(DR) - DR = TmpDTImpuestosVista.NewRow() - If TxtRetISR.Text.ToDecimal <> 0 Then DR("ImpuestoLocal") = "Ret.ISR" : DR("Importe") = ObjFactura.RetISR : DR("Orden") = 70 : DR("TipoImpuesto") = "0" : TmpDTImpuestosVista.Rows.Add(DR) - DR = TmpDTImpuestosVista.NewRow() - If TxtIEPS.Text.ToDecimal <> 0 Then DR("ImpuestoLocal") = "IEPS" : DR("Importe") = ObjFactura.IEPS : DR("Orden") = 80 : DR("TipoImpuesto") = "0" : TmpDTImpuestosVista.Rows.Add(DR) - DR = TmpDTImpuestosVista.NewRow() - - For Each gvr As GridViewRow In GvImpuestosLocales2.Rows - If gvr.RowType = DataControlRowType.DataRow Then - Dim Orden As Integer = 80 - If gvr.FCTextBox("TxtImpuestoLocalPS").Text.ToDouble > 0 Then - DR("ImpuestoLocal") = gvr.DataKey("ImpuestoLocal").ToString() : DR("Importe") = gvr.FCTextBox("TxtImpuestoLocalPS").Text.ToDouble : DR("Orden") = Orden : DR("Porcentaje") = gvr.DataKey("Porcentaje").ToString() : DR("TipoImpuesto") = gvr.DataKey("TipoImpuesto").ToString() : TmpDTImpuestosVista.Rows.Add(DR) - DR = TmpDTImpuestosVista.NewRow() - Orden = Orden + 1 - End If - End If - Next - - If TxtTotal.Text.ToDecimal <> 0 Then DR("ImpuestoLocal") = "Total" : DR("Importe") = ObjFactura.Total : DR("Orden") = 100 : DR("TipoImpuesto") = "0" : TmpDTImpuestosVista.Rows.Add(DR) - - ObjFactura.DtDeduccion = TmpDTImpuestosVista.FiltraParametros("", Orderby:="Orden ASC") - - 'TmpDT DESGLOSE DE IMPUESTOS 3.3 - If UsuarioActual.CveEmpresa.Contiene(119) Then - If TmpDTDocumentosRelacionados IsNot Nothing Then - ObjFactura.DtDocumentosRelacionados = TmpDTDocumentosRelacionados - End If - - If TmpDTNCVinculadas IsNot Nothing Then - ObjFactura.DtNCVinculadas = TmpDTNCVinculadas - End If - End If - - CreaDTImpuestosIVAIEPS() - - For Each DrImpuestos33 As DataRow In TmpDT.Rows - Dim DrIVA As DataRow = Nothing - Dim DrIEPS As DataRow = Nothing - - Try - DrIVA = TmpDTImpuestosIVAIEPS.Select("Impuesto = 'IVA'")(0) - Catch ex As Exception - DrIVA = Nothing - End Try - - If DrIVA IsNot Nothing Then - DrIVA("Importe") = DrIVA("Importe").ToString().ToDouble + DrImpuestos33("ImporteIVA").ToString().ToDouble - TmpDTImpuestosIVAIEPS.AcceptChanges() - Else - Dim DR2 As DataRow = TmpDTImpuestosIVAIEPS.NewRow() - If DrImpuestos33("PorcentajeIVA").ToString().ToDecimal > 0 Then - DR2("Impuesto") = "IVA" : DR2("tasa") = DdlIVA.SelectedItem.ToString() : DR2("Importe") = DrImpuestos33("ImporteIVA").ToString().ToDecimal : DR2("Orden") = "1" - TmpDTImpuestosIVAIEPS.Rows.Add(DR2) - TmpDTImpuestosIVAIEPS.AcceptChanges() - End If - End If - - Try - DrIEPS = TmpDTImpuestosIVAIEPS.Select($"Impuesto = 'IEPS' AND tasa = '{DrImpuestos33("PorcentajeIEPS").ToString().ToDecimal * 100} %'")(0) - Catch ex As Exception - DrIEPS = Nothing - End Try - - If DrIEPS IsNot Nothing Then - DrIEPS("Importe") = DrIEPS("Importe").ToString().ToDouble + DrImpuestos33("ImporteIEPS").ToString().ToDouble - TmpDTImpuestosIVAIEPS.AcceptChanges() - Else - Dim DR2 As DataRow = TmpDTImpuestosIVAIEPS.NewRow() - If DrImpuestos33("PorcentajeIEPS").ToString().ToDouble > 0 Then - DR2("Impuesto") = "IEPS" : DR2("tasa") = String.Format("{0} {1}", DrImpuestos33("PorcentajeIEPS").ToString().ToDouble * 100, "%") : DR2("Importe") = DrImpuestos33("ImporteIEPS").ToString().ToDouble : DR2("Orden") = If(DrImpuestos33("PorcentajeIEPS").ToString() = "0.03", "2", If(DrImpuestos33("PorcentajeIEPS").ToString() = "0.06", "3", If(DrImpuestos33("PorcentajeIEPS").ToString() = "0.07", "4", If(DrImpuestos33("PorcentajeIEPS").ToString() = "0.09", "5", "0")))) - TmpDTImpuestosIVAIEPS.Rows.Add(DR2) - TmpDTImpuestosIVAIEPS.AcceptChanges() - End If - End If - Next - - ObjFactura.DtDesgloseImpuestos = TmpDTImpuestosIVAIEPS.FiltraParametros("", Orderby:="Orden ASC") - - 'otros - 'ObjFactura.Det_FechaOrdenCompra = TxtDet_FechaOrdenCompra.Text.Trim - 'ObjFactura.Det_OrdenCompra = TxtDet_OrdenCompra.Text.Trim - 'ObjFactura.Det_ContraRecibo = TxtDet_ContraRecibo.Text.Trim - - ObjFactura.Det_FechaOrdenCompra = "" - ObjFactura.Det_OrdenCompra = "" - ObjFactura.Det_ContraRecibo = "" - ObjFactura.CveNCaVincular = -1 - - If ObjFactura.CveMoneda <> 1 AndAlso ChkConvertirDoctoPesos.Checked Then - ObjFactura.TipoCambio = 1 - ObjFactura.CveMoneda = 1 - - ObjFactura.Moneda = "Pesos" - ObjFactura.MonedaSAT = GlobalDTMonedas.FiltroPrimeroValor("AbreviaturaSAT", $"CveMoneda = {ObjFactura.CveMoneda}") - End If - - If ObjFactura.CveMoneda <> 2 AndAlso ChkConvertirDolares.Checked Then - ObjFactura.TipoCambio = TxtTipoCambioDlls.Text.Trim.ToDecimal - ObjFactura.CveMoneda = 2 - - ObjFactura.Moneda = "Dólares" - ObjFactura.MonedaSAT = GlobalDTMonedas.FiltroPrimeroValor("AbreviaturaSAT", $"CveMoneda = {ObjFactura.CveMoneda}") - End If - - 'Se agrega CveVenta -1 - For Each Row As DataRow In TmpDT.Rows - Row("CveVenta") = ObjFactura.CveVenta - Next - - 'DETALLES - ObjFactura.DtDetalle = TmpDT.Copy - ObjFactura.DtFirmas = DTmpF.Copy - - 'CLIENTE - ObjFactura.CveCliente = CveCliente - ObjFactura.SetCliente() - ObjFactura.CveEmpresaCRM = CveEmpresaCRM - If CveCliente = -1 And CveEmpresaCRM > 0 Then - ObjFactura.Cliente.Nombre = LblEmpresaCRM.Text - ObjFactura.Cliente.RFC = LblRFCCRM.Text - End If - - 'SUCURSAL - 'ObjFactura.CveSubProyecto = DdlSubProyectoDatos.SelectedValue.ToEntero() - ObjFactura.SetSubProyectoMatriz(Me) - ObjFactura.SetSubProyecto(Me) - ObjFactura.ClienteSucursal = New Modelos.SucursalModel() - If CveCliente > 0 Then - If Me.ClienteSucursal IsNot Nothing Then - ObjFactura.ClienteSucursal.RFC = Me.ClienteSucursal.RFC - ObjFactura.ClienteSucursal.Nombre = Me.ClienteSucursal.Nombre - End If - ObjFactura.ClienteSucursal.NoExt = CliNoExt - ObjFactura.ClienteSucursal.NoInt = CliNoInt - ObjFactura.ClienteSucursal.Localidad = CliLocalidad - ObjFactura.ClienteSucursal.Direccion = LblDireccion.Text - ObjFactura.ClienteSucursal.Colonia = LblColonia.Text - ObjFactura.ClienteSucursal.Municipio = LblCiudad.Text - ObjFactura.ClienteSucursal.Estado = LblEstado.Text - ObjFactura.ClienteSucursal.CP = LblCP.Text - ObjFactura.ClienteSucursal.Pais = CliPais - ObjFactura.ClienteSucursal.CorreoSucursal = CliCorreoCot.ToString() - ObjFactura.ClienteSucursal.TelefonoSucursal = LblTelefono.Text - ObjFactura.ClienteSucursal.Sucursal = If(DdlSucursalCliente.SelectedValue.ToEntero() > 0, DdlSucursalCliente.SelectedItem.Text, "") - ObjFactura.ClienteSucursal.ImprimeNombreSucursal = ImprimeNombreSucursal.ToString() - End If - - 'ENVIO DIRECCION - ObjFactura.EnviarA = New Modelos.EnviarAModel - 'If ChkDireccionEnvio.Checked Then - ' If TmpDTEnvioDireccion IsNot Nothing AndAlso TmpDTEnvioDireccion.FiltraParametros(String.Format("CveDireccionEnvio = {0}", DdlDireccionEnvio.SelectedValue.ToEntero())).Rows.Count > 0 Then - ' For Each Row As DataRow In TmpDTEnvioDireccion.FiltraParametros(String.Format("CveDireccionEnvio = {0}", DdlDireccionEnvio.SelectedValue.ToEntero())).Rows - ' ObjFactura.EnviarA.CveDireccionEnvio = Row("CveDireccionEnvio").ToString().ToEntero() - ' ObjFactura.EnviarA.EnvioDireccion = Row("EnvioDireccion").ToString() - ' ObjFactura.EnviarA.EnvioNoExt = Row("EnvioNoExt").ToString() - ' ObjFactura.EnviarA.EnvioNoInt = Row("EnvioNoInt").ToString() - ' ObjFactura.EnviarA.EnvioColonia = Row("EnvioColonia").ToString() - ' ObjFactura.EnviarA.EnvioCiudad = Row("EnvioCiudad").ToString() - ' ObjFactura.EnviarA.EnvioEstado = Row("EnvioEstado").ToString() - ' ObjFactura.EnviarA.EnvioCP = Row("EnvioCP").ToString() - ' ObjFactura.EnviarA.EnvioTel = Row("EnvioTel").ToString() - ' ObjFactura.EnviarA.EnvioContacto = Row("EnvioContacto").ToString() - ' ObjFactura.EnviarA.EnvioDepartamento = Row("EnvioDepartamento").ToString() - ' 'ObjFactura.EnviarA.EnvioPedidoContrato = Row("EnvioPedidoContrato").ToString() - ' Next - ' End If - 'End If - - 'Amortizacion - ObjFactura.CveTipoRelacion = -1 - - 'If ObjFactura.CveTipoRelacion > 0 Then - ' Select Case ObjFactura.CveTipoRelacion - ' Case 7 - ' ObjFactura.Timbre.CFDIRelacionados.TipoRelacion = "07" - ' ObjFactura.Timbre.CFDIRelacionados.TipoRelacionTexto = "07-CFDI por aplicación de anticipo" - - ' If ListaAnticiposAplicados IsNot Nothing Then - ' For Each Ant As Modelos.MAnticipoRelacionado In ListaAnticiposAplicados - ' ObjFactura.Timbre.CFDIRelacionados.UUID.Add(Ant.FolioFiscal) - ' Next - ' End If - - ' 'ObjFactura.Timbre.CFDIRelacionados.UUID.Add(HdnFolioFiscalNC.Value) - ' End Select - - 'End If - - ObjFactura.AplicaDevolucion = Me.AplicaDevolucion - ObjFactura.CveTipoAmortizacionAnticipo = -1 - - If ObjFactura.TipoDocto.Contiene("Ing", "Ant") AndAlso NuevaFactura = 1 Then ' refacturación - ObjFactura.CveTipoRelacion = DdlTiposRelacion.SelectedValue.ToEntero() - End If - - - - ' If CveCliente > 0 Then ObjFactura.Timbre = PreParaTimbre(ObjFactura) - - 'SI SE ESTA EDITANDO ACTUALIZA LOS IMPORTES DEL DT - If GvImpuestosLocales2.Visible AndAlso GvImpuestosLocales2.Enabled Then - For Each gvr As GridViewRow In GvImpuestosLocales2.Rows - If gvr.RowType = DataControlRowType.DataRow Then - - Dim DrsImpuestos As DataRow() = TmpDTImpuestos.Select($"CveImpuestoLocal={gvr.DataKey("CveImpuestoLocal")}") - - If DrsImpuestos IsNot Nothing AndAlso DrsImpuestos.Length = 1 Then - DrsImpuestos(0)("Importe") = gvr.FCTextBox("TxtImpuestoLocalPS").Text.ToDouble - End If - - End If - Next - End If - - 'INE COMPLEMENTO - 'If RblComplementos.SelectedValue.ToEntero() > 0 Then - ' ObjFactura.CveComplementoTimbrado = RblComplementos.SelectedValue.ToEntero() - ' Dim INE As New Modelos.ComplementoINE - ' Select Case RblComplementos.SelectedValue.ToEntero() - ' Case 5 - ' INE.INEIdContabilidad = TxtIdConta.Text.ToEntero() - ' INE.INETipoProceso = "Ordinario" - ' INE.INETipoComite = "Directivo Estatal" - ' INE.INEEntidad = DdlINEEntidad.SelectedValue - ' Case 6 - ' INE.INEIdContabilidad = TxtIdConta.Text.ToEntero() - ' INE.INETipoProceso = "Ordinario" - ' INE.INETipoComite = "Ejecutivo Estatal" - ' INE.INEEntidad = DdlINEEntidad.SelectedValue - ' Case 7 - ' INE.INEIdContabilidad = TxtIdConta.Text.ToEntero() - ' INE.INETipoProceso = "Ordinario" - ' INE.INETipoComite = "Ejecutivo Nacional" - ' Case 8 - ' INE.INEIdContabilidad = TxtIdConta.Text.ToEntero() - ' INE.INETipoProceso = DdlTipoCampaña.SelectedValue - ' INE.INETipoComite = DdlAmbitoComplemento.SelectedValue - ' INE.INEEntidad = DdlINEEntidad.SelectedValue - ' Case Else - ' INE.INEIdContabilidad = 0 - ' INE.INETipoProceso = "" - ' INE.INETipoComite = "" - ' INE.INEEntidad = "" - ' End Select - ' ObjFactura.ComplementoINE = INE - 'End If - - ObjFactura.CveTipoRetencion = DdlTipoRetencion.SelectedValue.ToEntero() - ObjFactura.DescuentoProntoPago = HdnProntoPago.Value.ToDecimal() - - ObjFactura.NuevaFactura = Me.NuevaFactura - - ObjFactura.EsGarantia = Me.EsGarantia - - 'ASIGNAR RFC RECEPTOR - If ObjFactura.Timbre IsNot Nothing Then - If ObjFactura.Timbre.Receptor IsNot Nothing Then - ObjFactura.RFCReceptor = ObjFactura.Timbre.Receptor.RFC - End If - End If - - ObjFactura.DtMercancias = DtMercancias - End Sub - - Private Function PreParaTimbre(Obj As Modelos.Factura) As CFDITimbre - Dim Timbre As New CFDITimbre - Timbre.Comprobante.Version = "4.0" - Timbre.Comprobante.TipoComprobante = If(Obj.TipoDocto.Contiene("Ing", "Ant"), "I", If(Obj.TipoDocto.Contiene("Egs", "Dev"), "E", "")) - Timbre.Comprobante.Folio = Obj.Folio.ToString() - Timbre.Comprobante.Serie = Obj.Serie - Timbre.Comprobante.Fecha = Obj.FechaCP - Timbre.Comprobante.FormadePago = Obj.FormaPagoSAT33 - Timbre.Comprobante.CondicionesdePago = If(UsuarioActual.CveEmpresa.Contiene(15, 76), "No Aplica", Obj.FormaPago33) - Timbre.Comprobante.MetodoPago = Obj.ClaveMetodoPagoSAT - Timbre.Comprobante.SubTotal = Obj.SubTotal - Timbre.Comprobante.Descuentos = Obj.Descuento - Timbre.Comprobante.Moneda = Obj.MonedaSAT - Timbre.Comprobante.TipoCambio = If(Obj.CveMoneda = 1, "1", Obj.TipoCambio.ToString()) - Timbre.Comprobante.Total = Obj.Total - - Timbre.Comprobante.LugarExpedicion = Obj.SubProyecto.CP - If Timbre.Comprobante.LugarExpedicion = "" Then - Dim aa As String = "no se guardo lugar de expedicion" - aa.GuardaLog() - End If - - Timbre.Comprobante.Confirmacion = "" - - If Obj.FacturarSucursal Then - Timbre.Receptor.RFC = Obj.ClienteSucursal.RFC - Timbre.Receptor.Nombre = Obj.ClienteSucursal.Nombre - Timbre.Receptor.DomicilioFiscalReceptor = Obj.ClienteSucursal.CP - Else - Timbre.Receptor.RFC = Obj.Cliente.RFC - Timbre.Receptor.Nombre = Obj.Cliente.Nombre - Timbre.Receptor.DomicilioFiscalReceptor = Obj.Cliente.CP - End If - - Timbre.Receptor.RegimenFiscalReceptor = Obj.Cliente.CodigoRegimenFiscal - - Timbre.Receptor.ResidenciaFiscal = "" - Timbre.Receptor.NumeroRegistroTributario = "" - Timbre.Receptor.UsoCFDI = Obj.ClaveUsoCFDI - - Timbre.Comprobante.TipoComprobante = If(Obj.TipoDocto.Contiene("Ing", "Ant"), "I", If(Obj.TipoDocto.Contiene("Egs", "Dev"), "E", "")) - - If Timbre.Comprobante.TipoComprobante = "E" Then - If Obj.TipoDocto = "Egs" Then - Timbre.CFDIRelacionados.TipoRelacion = "01" - Timbre.CFDIRelacionados.TipoRelacionTexto = "Nota de Crédito aplicada a Ingreso" - - End If - If Obj.TipoDocto = "Dev" Then - Timbre.CFDIRelacionados.TipoRelacion = "03" - Timbre.CFDIRelacionados.TipoRelacionTexto = "Devolución aplicada a Ingreso" - End If - Obj.CveTipoRelacion = DdlTiposRelacion.SelectedValue.ToEntero() - 'If HdnFolioFiscalNC.Value <> "0" And HdnFolioFiscalNC.Value <> "" Then Timbre.CFDIRelacionados.UUID.Add(HdnFolioFiscalNC.Value) - End If - - ' cuando es refacturacoin es cfdirelacionado, con relacion 04 - 'If Timbre.Comprobante.TipoComprobante = "I" AndAlso NuevaFactura = 1 Then - ' Timbre.CFDIRelacionados.TipoRelacion = "04" - ' Timbre.CFDIRelacionados.TipoRelacionTexto = "Refacturación de Ingreso" - ' Timbre.CFDIRelacionados.UUID.Add(HdnFolioFiscalNC.Value) - 'End If - - 'If HdnTipoDescuento.Value = "3" And DdlTipoAmortizacionAnticipo.SelectedValue.ToEntero() > 0 Then - - ' Timbre.CFDIRelacionados.TipoRelacion = "07" - ' Timbre.CFDIRelacionados.TipoRelacionTexto = "07-CFDI por aplicación de anticipo" - 'Else - ' 'SI LA FACTURA VIENE DE SER CANCELADA SISTEMA CUANDO SE REFACTURO NO HAY QUE RELACIONAR - ' If (CveEstatusFacturaPadre > 0 AndAlso CveEstatusFacturaPadre <> 4) OrElse (DtVentasNC IsNot Nothing AndAlso DtVentasNC.Rows.Count > 0) OrElse HdnFolioFiscalNC.Value.ToString() <> "" Then - ' If Obj.CveTipoRelacion > 0 Then - - ' Select Case Obj.CveTipoRelacion - ' Case 1 - ' Timbre.CFDIRelacionados.TipoRelacion = "01" - ' Timbre.CFDIRelacionados.TipoRelacionTexto = "01-Nota de Crédito aplicada a Ingreso" - ' Case 2 - ' Timbre.CFDIRelacionados.TipoRelacion = "02" - ' Timbre.CFDIRelacionados.TipoRelacionTexto = "02-Nota de débito de los documentos relacionados" - ' Case 3 - ' Timbre.CFDIRelacionados.TipoRelacion = "03" - ' Timbre.CFDIRelacionados.TipoRelacionTexto = "03-Devolución aplicada a Ingreso" - ' Case 4 - ' Timbre.CFDIRelacionados.TipoRelacion = "04" - ' Timbre.CFDIRelacionados.TipoRelacionTexto = "04-Sustitución de los CFDI Previos" - ' Case 7 - ' Timbre.CFDIRelacionados.TipoRelacion = "07" - ' Timbre.CFDIRelacionados.TipoRelacionTexto = "07-CFDI por aplicación de anticipo" - ' Case 8 - ' Timbre.CFDIRelacionados.TipoRelacion = "08" - ' Timbre.CFDIRelacionados.TipoRelacionTexto = "08-Factura generada por pagos en parcialidades " - ' Case 9 - ' Timbre.CFDIRelacionados.TipoRelacion = "09" - ' Timbre.CFDIRelacionados.TipoRelacionTexto = "09-Factura generada por pagos diferidos" - ' End Select - - ' If DtVentasNC IsNot Nothing AndAlso DtVentasNC.Rows.Count > 0 Then - ' For Each Dr As DataRow In DtVentasNC.Rows - ' Timbre.CFDIRelacionados.UUID.Add(Dr("FolioFiscal").ToString()) - ' Next - ' Else - ' If ListaAnticiposAplicados IsNot Nothing AndAlso ListaAnticiposAplicados.Count > 0 Then - ' For Each Ant As Modelos.MAnticipoRelacionado In ListaAnticiposAplicados - ' Timbre.CFDIRelacionados.UUID.Add(Ant.FolioFiscal) - ' Next - ' Else - ' If Not String.IsNullOrEmpty(HdnFolioFiscalNC.Value.Trim()) AndAlso HdnFolioFiscalNC.Value <> "0" Then - ' Timbre.CFDIRelacionados.UUID.Add(HdnFolioFiscalNC.Value) - ' End If - ' End If - ' End If - ' End If - ' End If - 'End If - - ''SI LAS FACTURAS SE RELACIONARAN MANUALMENTE SE AGREGAN - 'If UsuarioActual.TienePermisoProceso(321) AndAlso Me.AplicaRelacionManual AndAlso DdlTipoRelacionARelacionar.SelectedValue.ToEntero() > 0 Then - - ' Dim CveTipoRelacion As Integer = DdlTipoRelacionARelacionar.SelectedValue.ToEntero() - - ' Obj.CveTipoRelacion = DdlTipoRelacionARelacionar.SelectedValue.ToEntero() - - ' Dim RowTipoRelacion As DataRow = GlobalDTVtaTiposRelacion().FiltroPrimero($"CveTipoRelacion = {CveTipoRelacion}") - - ' Timbre.CFDIRelacionados.TipoRelacion = RowTipoRelacion("SATClaveTipoRelacion").ToString() - ' Timbre.CFDIRelacionados.TipoRelacionTexto = RowTipoRelacion("SATTipoRelacion").ToString() - - ' For Each GvRow As GridViewRow In GvFacturasRelacionadas.Rows - ' If GvRow.RowType = DataControlRowType.DataRow Then - ' Timbre.CFDIRelacionados.UUID.Add(GvRow.DataKey("FolioFiscal").Replace("test", "")) - ' End If - ' Next - 'End If - - Dim totSubTotal As Decimal = Obj.SubTotal - Dim totIVA As Decimal = Obj.IVA - Dim totRetIVA As Decimal = Obj.RetIVA - Dim totRetISR As Decimal = Obj.RetISR - Dim i As Integer = 1 - Dim tPS As String - 'detalles - For Each drr As DataRow In Obj.DtDetalle.Rows - If drr("PS").ToString().Length = 1 Then - tPS = drr("Obs").ToString() - Else - If drr("PS").ToString().Length = 0 Then - tPS = "" - Else - tPS = String.Format("{0} {1}", drr("PS"), drr("Obs")) - End If - End If - - tPS = tPS.Replace("|", " ") - - If tPS.Length >= 1000 Then - Dim tPSRecortado As String = tPS.Remove(999, tPS.Length - 999) - tPS = tPSRecortado - End If - - 'condicionante, especial - If UsuarioActual.CveEmpresa = 15 Then drr("UM") = "" ' les comentan que no debe de ir la etiqueta de "unidad" en el producto - - Dim concepto As New CFDIConceptos With {.Cantidad = drr("Cantidad").ToString().ToDecimal, - .Descripcion = tPS, - .ValorUnitario = drr("PU").ToString().ToDecimal, - .Importe = drr("TotalImporte").ToString().ToDecimal, - .Descuento = drr("Descuento").ToString().ToDecimal.RoundSQL(2), - .Unidad = drr("UM").ToString(), - .ClaveUnidad = drr("SATClaveUM").ToString(), - .ClaveProdServ = drr("SATClaveProdServ").ToString(), - .Noidentificacion = drr("Noidentificacion").ToString(), - .CuentaPredial = drr("CuentaPredial").ToString(), - .ImporteGravaIVAAdicional = drr("ImporteIEPS").ToString().ToDecimal, - .ObjetoImpuesto = drr("CodigoObjetoImpuesto").ToString(), - .NumeroPedimento = drr("NumeroPedimento").ToString} - 'verifica suma subtotales - If i = Obj.DtDetalle.Rows.Count AndAlso totSubTotal.RoundSQL(2) <> concepto.Importe.RoundSQL(2) AndAlso Math.Abs(totSubTotal.RoundSQL(2) - concepto.Importe.RoundSQL(2)) <= 0.01 Then 'proceso de ajusta de decimales - concepto.Importe = totSubTotal - 'concepto.ValorUnitario = totSubTotal / concepto.Cantidad - End If - totSubTotal = totSubTotal - concepto.Importe - - 'siempre estaremos agregando el iva, auqnue sea en importe cero o tasa cero, para que se emita la factura - ' If drr("ImporteIVA").ToString().ToDouble > 0 Then - - 'si es ingreso amortizado por la totalidad, y arroja el valor total de cero, no debe de impuestos, y si la BASE de calculo es mayor a cero - ' si es objimp = 01, significa que no lleva desglose de impuesto, está exento - If concepto.ObjetoImpuesto <> "01" AndAlso Timbre.Comprobante.Total > 0 AndAlso (concepto.Importe - concepto.Descuento + concepto.ImporteGravaIVAAdicional > 0) Then - concepto.Impuestos.Add(New CFDIConceptosImpuestos With {.TrasladooRetencion = "T", .Base = (concepto.Importe - concepto.Descuento + concepto.ImporteGravaIVAAdicional).RoundSQL(6), .TasaOCuota = drr("PorcentajeIVA").ToString().ToDecimal, .Impuesto = "002", .Importe = drr("ImporteIVA").ToString().ToDecimal}) - End If - - If concepto.ObjetoImpuesto <> "01" AndAlso drr("ImporteIEPS").ToString().ToDouble > 0 Then - concepto.Impuestos.Add(New CFDIConceptosImpuestos With {.TrasladooRetencion = "T", .Base = (concepto.Importe - concepto.Descuento).RoundSQL(6), .TasaOCuota = drr("PorcentajeIEPS").ToString().ToDecimal, .Impuesto = "003", .Importe = drr("ImporteIEPS").ToString().ToDecimal}) - End If - - If concepto.ObjetoImpuesto <> "01" AndAlso drr("ImporteRetIVA").ToString().ToDouble > 0 Then 'si hay retenciones - concepto.Impuestos.Add(New CFDIConceptosImpuestos With {.TrasladooRetencion = "R", .Base = (concepto.Importe - concepto.Descuento).RoundSQL(6), .TasaOCuota = drr("PorcentajeRetIVA").ToString().ToDecimal, .Impuesto = "002", .Importe = drr("ImporteRetIVA").ToString().ToDecimal}) - End If - - If concepto.ObjetoImpuesto <> "01" AndAlso drr("ImporteRetISR").ToString().ToDouble > 0 Then 'retención de ISR - concepto.Impuestos.Add(New CFDIConceptosImpuestos With {.TrasladooRetencion = "R", .Base = (concepto.Importe - concepto.Descuento).RoundSQL(6), .TasaOCuota = drr("PorcentajeRetISR").ToString().ToDecimal, .Impuesto = "001", .Importe = drr("ImporteRetISR").ToString().ToDecimal}) - End If - - 'si el codigo objeto impuesto es 02 y no tiene desglose de impuestos por el descuento, debe asignar el valor 04 - Si objeto de impuesto y no causa impuesto - If concepto.Impuestos.Count = 0 AndAlso concepto.ObjetoImpuesto = "02" AndAlso (concepto.Importe - concepto.Descuento + concepto.ImporteGravaIVAAdicional).RoundSQL(2) = 0.00D Then - concepto.ObjetoImpuesto = "04" - End If - - Timbre.Conceptos.Add(concepto) - i += 1 - Next - - 'RMF. faltan impuestos locales - If TmpDTImpuestos IsNot Nothing AndAlso TmpDTImpuestos.FiltraParametros("TipoImpuesto IN (1,3) ").Rows.Count > 0 Then - - For Each DrImpuestosLocales As DataRow In TmpDTImpuestos.FiltraParametros("TipoImpuesto IN (1,3) ").Rows - If DrImpuestosLocales("Importe").ToString().ToDecimal > 0 Then - Dim ret As New CFDIRetencionesLocales With - { - .TasaRetencion = DrImpuestosLocales("Porcentaje").ToString().ToDecimal, - .ImpuestoLocalRetenido = DrImpuestosLocales("ImpuestoLocal").ToString(), - .Importe = DrImpuestosLocales("Importe").ToString().ToDecimal(If(Obj.ConvertirPesos, Obj.TipoCambio, 1)).RoundSQL(2) - } - Timbre.RetencionesLocales.Add(ret) - End If - Next - End If - - If TmpDTImpuestos IsNot Nothing AndAlso TmpDTImpuestos.FiltraParametros("TipoImpuesto = 5").Rows.Count > 0 Then - - For Each DrImpuestosLocales As DataRow In TmpDTImpuestos.FiltraParametros("TipoImpuesto = 5").Rows - If DrImpuestosLocales("Importe").ToString().ToDecimal > 0 Then - Dim ret As New CFDITrasladosLocales With {.TasaTraslado = DrImpuestosLocales("Porcentaje").ToString().ToDecimal, .ImpuestoLocalTraslado = DrImpuestosLocales("ImpuestoLocal").ToString(), .Importe = DrImpuestosLocales("Importe").ToString().ToDecimal(If(Obj.ConvertirPesos, Obj.TipoCambio, 1))} - Timbre.TrasladosLocales.Add(ret) - End If - Next - End If - - Dim AplicaComercioExteriorSubProyecto As Boolean = True - - 'If ChkEmitirComercioExterior.Checked Then - ' 'AplicaComercioExteriorSubProyecto = If(GlobalDTSubProyectos(-1, Obj.CveSubProyecto, CveEmpresa:=UsuarioActual.CveEmpresa)(0)("AplicaComercioExterior").ToString() = "True", True, False) - ' Timbre.Complementos.ComercioExterior11.AplicaComercioExteriorSubProyecto = AplicaComercioExteriorSubProyecto - - ' 'DATOS GENERALES - - ' Timbre.Comprobante.Exportacion = "02" - ' Timbre.Complementos.ComercioExterior11.TipoOperacion = GlobalDTTipoOperacion().FiltraParametros($"CveTipoOperacion={CveTipoOperacion}")(0)("ClaveSATTipoOperacion").ToString() - ' Timbre.Complementos.ComercioExterior11.ClavedePedimento = GlobalDTClavePedimento().FiltraParametros($"CvePedimento={CvePedimento}")(0)("ClaveSATPedimento").ToString() - ' Timbre.Complementos.ComercioExterior11.CertificadoOrigen = "0" - ' Timbre.Complementos.ComercioExterior11.Incoterm = GlobalDTIncoterm.FiltroPrimeroValor("ClaveSATIncoterm", $"CveIncoterm={DdlIncoterm.SelectedValue}") - ' Timbre.Complementos.ComercioExterior11.Subdivision = "0" - - ' Timbre.Complementos.ComercioExterior11.TipoCambioUSD = If(Obj.CveMoneda = 1, 1, Obj.TipoCambio) - - ' Timbre.Complementos.ComercioExterior11.MotivoTraslado = "" - - ' 'If Timbre.Comprobante.TipoComprobante = "T" Then - ' ' Timbre.Complementos.ComercioExterior11.MotivoTraslado = GlobalDTSATMotivoTraslado.FiltroPrimeroValor("ClaveSATMotivoTraslado", $"CveMotivoTraslado={DdlSATMotivoTraslado.SelectedValue}") - ' 'Else - ' ' Timbre.Complementos.ComercioExterior11.MotivoTraslado = "" - ' 'End If - - ' 'EMISOR - ' Dim Dr As DataRow - ' Dr = Nothing - ' If GlobalDTSubProyectos(-1, DdlSubProyectoDatos.SelectedValue.ToEntero(), CveEmpresa:=UsuarioActual.CveEmpresa).Rows.Count > 0 Then - ' Dr = GlobalDTSubProyectos(-1, DdlSubProyectoDatos.SelectedValue.ToEntero(), CveEmpresa:=UsuarioActual.CveEmpresa)(0) - ' End If - ' Timbre.Complementos.ComercioExterior11.Emisor.CURP = UsuarioActual.Empresa.CURP - ' Timbre.Complementos.ComercioExterior11.Emisor.Calle = Dr("Calle").ToString() - ' Timbre.Complementos.ComercioExterior11.Emisor.NumeroExterior = Dr("NoExt").ToString() - ' Timbre.Complementos.ComercioExterior11.Emisor.NumeroInterior = Dr("NoInt").ToString() - ' Timbre.Complementos.ComercioExterior11.Emisor.Colonia = Dr("ClaveSATColonia").ToString() - ' Timbre.Complementos.ComercioExterior11.Emisor.Localidad = "" - ' Timbre.Complementos.ComercioExterior11.Emisor.Municipio = Dr("ClaveSATMunicipio").ToString() - ' Timbre.Complementos.ComercioExterior11.Emisor.Estado = Dr("ClaveSATEstado").ToString() - ' Timbre.Complementos.ComercioExterior11.Emisor.Pais = Dr("ClaveSATPais").ToString() - ' Timbre.Complementos.ComercioExterior11.Emisor.CP = Dr("ClaveSATCP").ToString() - - ' Dim ComExtPais, ComExtEstado, ComExtMunicipio, ComExtColonia, ComExtCalle, ComExtNumero, ComExtCP As String - ' ComExtColonia = "" : ComExtMunicipio = "" - ' ComExtPais = GlobalDTGralPaises.FiltroPrimeroValor("ClaveSATPais", $"CvePais={DdlComExtPais.SelectedValue}") - ' ComExtCalle = TxtComExtCalle.Text.Trim - ' ComExtNumero = TxtComExtNumero.Text.Trim - ' ComExtCP = TxtComExtCP.Text.Trim - - ' If ComExtPais = "MEX" Then - ' ComExtEstado = GlobalDTGralEstados(ComExtPais).FiltroPrimeroValor("ClaveSATEstado", $"CveEstado={DdlComExtEstado.SelectedValue}") - ' ComExtMunicipio = GlobalDTGralMunicipios(ComExtEstado).FiltroPrimeroValor("ClaveSATMunicipio", $"CveMunicipio={DdlComExtMunicipio.SelectedValue}") - ' ComExtColonia = GlobalDTGralColonias("-1", "-1", "-1", CveColonia:=DdlComExtColonia.SelectedValue.ToEntero).FiltroPrimeroValor("ClaveSATColonia", "") - ' Else - ' If ComExtPais.Contiene("USA", "CAN") Then - ' ComExtEstado = GlobalDTGralEstados(ComExtPais).FiltroPrimeroValor("ClaveSATEstado", $"CveEstado={DdlComExtEstado.SelectedValue}") - ' Else - ' ComExtEstado = TxtComExtEstado.Text.Trim - ' End If - ' ComExtMunicipio = TxtComExtMunicipio.Text.Trim - ' ComExtColonia = TxtComExtColonia.Text.Trim - ' End If - - ' 'RECEPTOR - ' Timbre.Complementos.ComercioExterior11.Receptor.NumRegIdTrib = If(Timbre.Comprobante.Version = "4.0", Obj.Cliente.NumRegIdTrib, "") ' EN LA VERSION 3.3 NO DEBE DE REGISTRARSE ESTE VALOR - ' Timbre.Complementos.ComercioExterior11.Receptor.Calle = ComExtCalle - ' Timbre.Complementos.ComercioExterior11.Receptor.NumeroExterior = ComExtNumero - ' Timbre.Complementos.ComercioExterior11.Receptor.NumeroInterior = "" - ' Timbre.Complementos.ComercioExterior11.Receptor.Colonia = ComExtColonia - ' Timbre.Complementos.ComercioExterior11.Receptor.Localidad = "" - ' Timbre.Complementos.ComercioExterior11.Receptor.Referencia = Obj.Cliente.ReferenciaFiscal - ' Timbre.Complementos.ComercioExterior11.Receptor.Municipio = ComExtMunicipio - ' Timbre.Complementos.ComercioExterior11.Receptor.CP = ComExtCP - ' Timbre.Complementos.ComercioExterior11.Receptor.Estado = ComExtEstado - ' Timbre.Complementos.ComercioExterior11.Receptor.Pais = ComExtPais - ' Timbre.Receptor.ResidenciaFiscal = Obj.Cliente.ClaveSATPais - ' Timbre.Receptor.NumeroRegistroTributario = Obj.Cliente.NumRegIdTrib - - - ' ''DESTINATARIO - ' 'If ChkAplicaDestinatario.Checked AndAlso DdlDirecionDestinatario.SelectedValue.ToEntero() > 0 Then - - ' ' Dim RowDireccion As DataRow = Nothing - ' ' Dim ObjClientes As New ClsClientes - ' ' If ObjClientes.DireccionEnvioGet(DdlDirecionDestinatario.SelectedValue.ToEntero(), CveCliente, -1) Then - ' ' RowDireccion = ObjClientes.DtResultados.Rows(0) - ' ' End If - ' ' ObjClientes.Dispose() - - ' ' If RowDireccion IsNot Nothing Then - - ' ' Timbre.Complementos.ComercioExterior11.Destinatario.Nombre = RowDireccion("EnvioContacto").ToString() - ' ' Timbre.Complementos.ComercioExterior11.Destinatario.Calle = RowDireccion("EnvioDireccion").ToString() - ' ' Timbre.Complementos.ComercioExterior11.Destinatario.NumeroExterior = RowDireccion("EnvioNoExt").ToString() - ' ' Timbre.Complementos.ComercioExterior11.Destinatario.NumeroInterior = "" - ' ' Timbre.Complementos.ComercioExterior11.Destinatario.Colonia = "" - ' ' Timbre.Complementos.ComercioExterior11.Destinatario.Localidad = RowDireccion("NombreLocalidad").ToString() - ' ' Timbre.Complementos.ComercioExterior11.Destinatario.Referencia = "" - ' ' Timbre.Complementos.ComercioExterior11.Destinatario.Municipio = RowDireccion("NombreMunicipio").ToString() - ' ' Timbre.Complementos.ComercioExterior11.Destinatario.CP = RowDireccion("EnvioCP").ToString() - ' ' Timbre.Complementos.ComercioExterior11.Destinatario.Estado = RowDireccion("NombreEstado").ToString() - ' ' Timbre.Complementos.ComercioExterior11.Destinatario.Pais = RowDireccion("ClaveSATPais").ToString() - ' ' Timbre.Complementos.ComercioExterior11.Destinatario.NumRegIdTrib = RowDireccion("COM_NumRegIdTrib").ToString() - - ' ' End If - - ' 'Else - ' ' Timbre.Complementos.ComercioExterior11.Destinatario = Nothing - ' 'End If - - ' ''MERCANCIAS - ' 'For Each Gvr As GridViewRow In GvComercioExterior.Rows - ' ' Dim mercancia As New CFDIComercioExterior11Mercancias With {.CantidadAduana = Gvr.FCTextBox("TxtCantidad").Text.ToDecimal, - ' ' .FraccionArancelaria = Gvr.DataKey("ClaveSATFraccionArancelaria").ToString(), - ' ' .UnidadAduana = Gvr.DataKey("ClaveSATUnidadAduana").ToString(), - ' ' .ValorDolares = Math.Round(Gvr.FCTextBox("TxtCantidad").Text.ToDecimal * Gvr.FCTextBox("TxtValorUnitario").Text.ToDecimal, 2), - ' ' .ValorUnitarioAduana = Gvr.FCTextBox("TxtValorUnitario").Text.ToDecimal, - ' ' .NoIdentificacion = Gvr.DataKey("Codigo")} - ' ' If Gvr.FCTextBox("TxtMarca").Text <> "" Then - ' ' mercancia.DescripcionesEspecificas.Marca = Gvr.FCTextBox("TxtMarca").Text - ' ' End If - - ' ' Timbre.Complementos.ComercioExterior11.Mercancias.Add(mercancia) - ' ' i += 1 - ' 'Next - - 'Else - ' Timbre.Complementos.ComercioExterior11.AplicaComercioExteriorSubProyecto = False - 'End If - - Return Timbre - End Function - - Private Sub PrepararTimbrado(ByRef FM As Modelos.FemsaFactura, ByRef TmpDT7Eleven As DataTable, ByRef TmpDTComplementosTimbrado As DataTable) - 'FM.AplicaFEMSA = AplicaFEMSA - 'FM.FEMSA_NumSociedad = TxtFEMSA_NumSociedad.Text.Trim - 'FM.FEMSA_NumProveedor = TxtFEMSA_NumProveedor.Text.Trim - 'FM.FEMSA_Mail = TxtFEMSA_Mail.Text.Trim - 'FM.FEMSA_Version = TxtFEMSA_Version.Text.ToEntero() - 'FM.FEMSA_NumPedido = TxtFEMSA_NumPedido.Text.Trim.ToLong - 'FM.FEMSA_NumEntrada = TxtFEMSA_NumEntrada.Text.Trim - 'FM.FEMSA_NumRemision = TxtFEMSA_NumRemision.Text.Trim - 'FM.FEMSA_NumSocio = TxtFEMSA_NumSocio.Text.Trim - 'FM.FEMSA_CentroCosto = TxtFEMSA_CentroCosto.Text.Trim - 'FM.FEMSA_IPeriodoLiquidacion = TxtFEMSA_IPeriodoLiquidacion.Text.Trim - 'FM.FEMSA_FPeriodoLiquidacion = TxtFEMSA_FPeriodoLiquidacion.Text.Trim - 'FM.FEMSA_CodRetencion1 = TxtFEMSA_CodRetencion1.Text.Trim - 'FM.FEMSA_CodRetencion2 = TxtFEMSA_CodRetencion2.Text.Trim - FM.AplicaFEMSA = False - FM.FEMSA_NumSociedad = "" - FM.FEMSA_NumProveedor = "" - FM.FEMSA_Mail = "" - FM.FEMSA_Version = 0 - FM.FEMSA_NumPedido = 0 - FM.FEMSA_NumEntrada = "" - FM.FEMSA_NumRemision = "" - FM.FEMSA_NumSocio = "" - FM.FEMSA_CentroCosto = "" - FM.FEMSA_IPeriodoLiquidacion = "" - FM.FEMSA_FPeriodoLiquidacion = "" - FM.FEMSA_CodRetencion1 = "" - FM.FEMSA_CodRetencion2 = "" - - TmpDT7Eleven.Columns.Add("sevenElevenNumProveedor") - TmpDT7Eleven.Columns.Add("sevenElevenFolio") - TmpDT7Eleven.Columns.Add("sevenElevenTienda") - TmpDT7Eleven.Columns.Add("sevenElevenFecha") - - Dim Row As DataRow = TmpDT7Eleven.NewRow - 'Row("sevenElevenNumProveedor") = Txt7ElevenNumProveedor.Text.Trim() - 'Row("sevenElevenFolio") = Txt7ElevenFolio.Text.Trim() - 'Row("sevenElevenTienda") = Txt7ElevenTienda.Text.Trim() - 'Row("sevenElevenFecha") = Txt7ElevenFecha.Text.Trim() - - Row("sevenElevenNumProveedor") = "" - Row("sevenElevenFolio") = "" - Row("sevenElevenTienda") = "" - Row("sevenElevenFecha") = "" - - TmpDT7Eleven.Rows.Add(Row) - - TmpDTComplementosTimbrado.Columns.Add("CveComplemento") - TmpDTComplementosTimbrado.Columns.Add("IdContabilidad") - TmpDTComplementosTimbrado.Columns.Add("TipoProceso") - TmpDTComplementosTimbrado.Columns.Add("TipoAmbito") - TmpDTComplementosTimbrado.Columns.Add("Entidad") - - Dim Row2 As DataRow = TmpDTComplementosTimbrado.NewRow - 'If RblComplementos.SelectedValue.ToEntero() > 0 Then - - ' Select Case RblComplementos.SelectedValue.ToEntero() - ' Case 5 - ' Row2("CveComplemento") = RblComplementos.SelectedValue.ToEntero() - ' Row2("IdContabilidad") = TxtIdConta.Text.ToEntero() - ' Row2("TipoProceso") = "Ordinario" - ' Row2("TipoAmbito") = "Directivo Estatal" - ' Row2("Entidad") = DdlINEEntidad.SelectedValue - ' Case 6 - ' Row2("CveComplemento") = RblComplementos.SelectedValue.ToEntero() - ' Row2("IdContabilidad") = TxtIdConta.Text.ToEntero() - ' Row2("TipoProceso") = "Ordinario" - ' Row2("TipoAmbito") = "Ejecutivo Estatal" - ' Row2("Entidad") = DdlINEEntidad.SelectedValue - ' Case 7 - ' Row2("CveComplemento") = RblComplementos.SelectedValue.ToEntero() - ' Row2("IdContabilidad") = TxtIdConta.Text.ToEntero() - ' Row2("TipoProceso") = "Ordinario" - ' Row2("TipoAmbito") = "Ejecutivo Nacional" - ' Row2("Entidad") = "" - ' Case 8 - ' Row2("CveComplemento") = RblComplementos.SelectedValue.ToEntero() - ' Row2("IdContabilidad") = TxtIdConta.Text.ToEntero() - ' Row2("TipoProceso") = DdlTipoCampaña.SelectedValue - ' Row2("TipoAmbito") = DdlAmbitoComplemento.SelectedValue - ' Row2("Entidad") = DdlINEEntidad.SelectedValue - ' End Select - 'Else - Row2("CveComplemento") = "" - Row2("IdContabilidad") = "" - Row2("TipoProceso") = "" - Row2("TipoAmbito") = "" - Row2("Entidad") = "" - 'End If - - - TmpDTComplementosTimbrado.Rows.Add(Row2) - End Sub -#End Region - - - -#Region " GUARDAR - VENTA, PREPOLIZAS, INV, ESTIMACIONES, AC, NOTA DE CRÉDITO " - Private Sub GuardarVenta(ByRef ObjVentas As ClsVentas, ByRef ObjConta As ClsContabilidad, ByRef ObjInventario As ClsInventarios, ByRef ObjAcum As ClsAcumuladores, ByRef ObjContr As ClsContratos, factura As Modelos.Factura, ByRef TmpDTDetalle As DataTable, CveNCaVincular As Integer, - Optional ByRef ObjBancos As ClsBancos = Nothing, Optional ByRef ObjOS As ClsOS = Nothing, ByRef Optional ObjEventos As ClsOIEventos = Nothing, ByRef Optional ObjCGame As ClsCGame = Nothing, - ByRef Optional ObjCliente As ClsClientes = Nothing, Optional EsNCAmortizacion As Boolean = False, Optional NCDescuento As Boolean = False, Optional ListaNCDescuento As List(Of Modelos.Factura) = Nothing, Optional CveAnticipoPadre As Integer = -1) - - Dim Msgok As New StringBuilder - Dim CveAlmacenTraspasoOrigen As Integer = -1 - Dim CveAlmacenTraspasoDestino As Integer = -1 - Dim EsDevolucionVenta As Integer = -1 - Dim EsInterno As Integer = -1 - - - - 'Si es devolucion revertimos los almacenes - If CvePedido > 0 And TipoContrato = 2 Then - EsDevolucionVenta = 1 - CveAlmacenTraspasoOrigen = -1 - CveAlmacenTraspasoDestino = -1 - End If - - 'VALIDA ENTREGA POR ADELANTADO - If UsuarioActual.Empresa.Funcionalidad(145) = "1" Then 'If UsuarioActual.CveEmpresa.Contiene(4, 72, 80, 119) Then - 'INCRUSTAMOS ALMACEN ENTREGA POR ADELANTADO CUANDO SEA REMISION Y NO TRAIGA ASIGNADO POR EL USUARIO - If CveAlmacenTraspasoDestino <= 0 And factura.TipoDocto = "Rem" Then - CveAlmacenTraspasoDestino = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("CveAlmacen", $"CveTipoAlmacen = 10 AND CveSubProyecto = {DdlSubProyectoDatos.SelectedValue}").ToString().ToEntero() - End If - - 'SI LA SUCURSAL NO TIENE ENTREGA POR ADELANTADO - If CveAlmacenTraspasoDestino <= 0 And factura.TipoDocto = "Rem" Then - ErrorList.Add("Ocurrió un error al seleccionar el almacen de entrega por adelantado de la sucursal.") - End If - End If - Dim TotalImpuestoLocal As Double = 0 - If GvImpuestosLocales2.Rows.Count > 0 Then - For Each gvr As GridViewRow In GvImpuestosLocales2.Rows - If gvr.RowType = DataControlRowType.DataRow Then - If gvr.FCTextBox("TxtImpuestoLocalPS").Text.ToDouble <> 0 Then - If gvr.DataKey("TipoImpuesto") = "5" Then ' cuando es traslado local - TotalImpuestoLocal -= gvr.FCTextBox("TxtImpuestoLocalPS").Text.ToDouble - Else ' cuando es retención - TotalImpuestoLocal += gvr.FCTextBox("TxtImpuestoLocalPS").Text.ToDouble - End If - - End If - End If - Next - End If - - 'SI LA FACTURA ESTA PAGADA DEBE MARCAR LA DEVOLUCION POR SI SE QUIERE AMORTIZAR - If (ObjFacturaNC IsNot Nothing AndAlso ObjFacturaNC.PagadoBancos > 0) AndAlso factura.TipoDocto = "Dev" Then - factura.Alfa3 = "DEV" - factura.DevolucionImportePagado = ObjFacturaNC.Total / ObjFacturaNC.PagadoBancos 'falta tomar el dato - End If - Dim tCveTipoPoliza As Integer = -1 - - If UsuarioActual.CveEmpresa = 140 Then - tCveTipoPoliza = 1 ' que sea siempre ingreso. - End If - - Dim TipoContable As Integer = -1 - - - factura.CvePrePoliza = ObjConta.AddPrePolizas("Ventas/GuardarVenta", factura.CvePlantillaPoliza, factura.Total, factura.Total, factura.CveMoneda, factura.Fecha, If(CveEmpresaCRM > 0, LblEmpresaCRM.Text, factura.Cliente.Nombre), factura.CveUsuario, factura.CveEmpresa, CveTipoPoliza:=tCveTipoPoliza, TipoContable:=TipoContable) - - Dim RFCReceptor As String = "" - - If factura.Timbre IsNot Nothing AndAlso factura.Timbre.Receptor IsNot Nothing Then - If Not String.IsNullOrEmpty(factura.Timbre.Receptor.RFC) Then - RFCReceptor = factura.Timbre.Receptor.RFC.Trim - End If - End If - - 'SI NO SE VA TIMBRAR TOMA EL DEL CLIENTE - If String.IsNullOrEmpty(RFCReceptor) Then - If Not String.IsNullOrEmpty(LblRFC.Text) Then - RFCReceptor = LblRFC.Text.Trim - End If - - If factura.FacturarSucursal Then - If factura.ClienteSucursal IsNot Nothing Then - RFCReceptor = factura.ClienteSucursal.RFC - End If - End If - - End If - - Dim DescripcionVenta As String = "" - 'If TxtDescripcionVenta.Text <> "" Then DescripcionVenta = TxtDescripcionVenta.Text - - If Not ObjVentas.AddVenta(factura.TipoDocto, factura.Folio, factura.CveCliente, factura.CveClienteSucursal, factura.SubTotalTC, factura.DescuentoTC, - factura.AmortizacionTC, factura.IVATC, factura.RetIVATC, factura.RetISRTC, - factura.TotalTC, factura.CveMoneda, factura.TipoCambio, factura.CveMetodoPago, factura.CondicionesPago, factura.FormaPago, factura.FechaPago, factura.Fecha, factura.MotivoDescuento, - factura.Observaciones, factura.FechaEjecucion, factura.CveVendedor, - factura.Alfa1, factura.Alfa2, factura.Alfa3, factura.Num1, factura.Num2, factura.Num3, - factura.Fech1, factura.Fech2, factura.Fech3, factura.CveCorte, factura.NumeroPersonas, factura.CvePrePoliza, factura.CveUsuario, factura.CveEmpresa, - AtencionA:=factura.AtencionA, TelefonoGenerico:="", CveContrato:=factura.CveContrato, CveVentaPadre:=If(AplicaDevolucion, CveVentaDevolucion, factura.CveVentaPadre), Det_FechaOrdenCompra:=factura.Det_FechaOrdenCompra, Det_OrdenCompra:=factura.Det_OrdenCompra, otros:=factura.Otros, - Entrega:="-1", Vigencia:=If(DdlTipoComprobante.SelectedValue = "Cot", NowADS(), MinFecha), - CveAlmacenTraspasoDestino:=CveAlmacenTraspasoDestino, CveAlmacenTraspasoOrigen:=CveAlmacenTraspasoOrigen, CveDireccionEnvio:=-1, CveOC:=CveOC, IEPS:=factura.IEPSTC, Serie:=factura.Serie, CveCondicionEntrega:=-1, - PedidoContrato:="", ObservacionesAlmacen:="", CveSubProyecto:=factura.CveSubProyecto, CveSubProyectoCobranza:=factura.CveSubProyectoCobranza, CveSubProyectoEjecucion:=factura.CveSubProyectoEjecucion, CveFormaPago33:=factura.CveFormaPago33, - CveMetodoPago33:=factura.CveMetodoPago33, CveUsoCFDI:=factura.CveUsoCFDI, OrdenCompra:=TxtOrdenCompra.Text, CveCuentaTerminal:=-1, CveTipoRelacion:=factura.CveTipoRelacion, ImpuestoLocal:=TotalImpuestoLocal, - CveVentaRelacion:=(If(factura.CveVentaRelacion.ToEntero() > 0, factura.CveVentaRelacion, -1)), ImporteRelacion:=(If(factura.ImporteRelacion <> Nothing, factura.ImporteRelacion, -1)), - CveTipoAmortizacionAnticipo:=factura.CveTipoAmortizacionAnticipo, CveEmpresaCRM:=CveEmpresaCRM, EsInterno:=EsInterno, CveAcercamientoCRM:=CveAcercamientoCRM, - DiasCredito:=factura.DiasCredito, EsDiasCreditoFijo:=factura.EsDiasCreditoFijo, AnticipoEspecial:=False, - Kilometraje:=0, EsAmortizacion:=EsNCAmortizacion, CveTipoRetencion:=factura.CveTipoRetencion, CorreoNotificacion:="", - FormaPaqueteria:=1, FacturarSucursal:=factura.FacturarSucursal, VentaDesglosaIEPS:=factura.VentaDesglosaIEPS, RFCReceptor:=RFCReceptor, Adjunto:=Adjunto, DevolucionImportePagado:=factura.DevolucionImportePagado, EsGarantia:=factura.EsGarantia, ServicioDomicilio:=False, - CveLineaAdicional:=-1, DescripcionVenta:=DescripcionVenta, CveMedico:=DdlMedico.SelectedValue.ToEntero, CveProcedimiento:=DdlProcedimiento.SelectedValue.ToEntero, CveTipoVenta:=RBLTipoVenta.SelectedValue.ToEntero) Then - ErrorList.Add("Ocurrió un error al Generar la Venta.
    Revise su factura y cualquier detalle comuníquese a Soporte Técnico") - Else - - ViewState("Serie") = ObjVentas.Serie - ViewState("Folio") = ObjVentas.Folio - ViewState("FolioActual") = ObjVentas.Folio - - 'If factura.TipoDocto.Contiene("Dev", "Egs") OrElse DtVentasNC IsNot Nothing OrElse CveEstatusRefacturacion > 0 OrElse CveAnticipoPadre > 0 Then - ' If DtVentasNC IsNot Nothing Then - ' For Each row As DataRow In DtVentasNC.Rows - ' If Not row("CveVenta").ToString().ToEntero() = -1 Then - ' If Not ObjVentas.AddVentasRelacionadas(ObjVentas.CveVenta, row("CveVenta").ToString().ToEntero()) Then - ' ErrorList.Add("Ocurrió un error al relacionar las ventas entre si comuníquese a Soporte Técnico") - ' End If - ' End If - ' Next - ' Else - ' 'SI ES REFACTURACION DEBE AGREGAR LA VENTA ANTERIOR COMO RELACIONADA TAMBIEN - ' If Not CveVenta = -1 Then - ' If Not ObjVentas.AddVentasRelacionadas(ObjVentas.CveVenta, CveVenta) Then - ' ErrorList.Add("Ocurrió un error al relacionar las ventas entre si comuníquese a Soporte Técnico") - ' End If - ' Else - ' If CveEstatusRefacturacion > 0 AndAlso CveDevolucion > 0 Then - ' If Not ObjVentas.AddVentasRelacionadas(ObjVentas.CveVenta, CveDevolucion) Then - ' ErrorList.Add("Ocurrió un error al relacionar las ventas entre si comuníquese a Soporte Técnico") - ' End If - ' End If - ' End If - - ' 'SI TIENE UN ANTICIPO TAMBIEN DEBE RELACIONARLO - ' If CveAnticipoPadre > 0 Then - ' If ListaAnticiposAplicados IsNot Nothing Then - ' For Each Ant As Modelos.MAnticipoRelacionado In ListaAnticiposAplicados - ' If Not ObjVentas.AddVentasRelacionadas(ObjVentas.CveVenta, Ant.CveVenta) Then - ' ErrorList.Add("Ocurrió un error al relacionar las ventas entre si comuníquese a Soporte Técnico") - ' End If - ' Next - ' End If - - ' 'If Not ObjVentas.AddVentasRelacionadas(ObjVentas.CveVenta, CveAnticipoPadre) Then - ' ' ErrorList.Add("Ocurrió un error al relacionar las ventas entre si comuníquese a Soporte Técnico") - ' 'End If - ' End If - ' End If - 'End If - - 'If UsuarioActual.TienePermisoProceso(321) AndAlso Me.AplicaRelacionManual Then - ' For Each GvRow As GridViewRow In GvFacturasRelacionadas.Rows - ' If GvRow.RowType = DataControlRowType.DataRow Then - ' If GvRow.DataKey("CveVenta").ToEntero() > 0 Then - ' If Not ObjVentas.AddVentasRelacionadas(ObjVentas.CveVenta, GvRow.DataKey("CveVenta").ToEntero()) Then - ' ErrorList.Add("Ocurrió un error al relacionar las ventas entre si comuníquese a Soporte Técnico") - ' End If - ' Else - ' Dim FolioFiscalRelacionado As String = GvRow.DataKey("FolioFiscal") - ' If Not String.IsNullOrEmpty(FolioFiscalRelacionado) Then - ' If Not ObjVentas.AddVentasRelacionadas(ObjVentas.CveVenta, -1, FolioFiscal:=FolioFiscalRelacionado) Then - ' ErrorList.Add("Ocurrió un error al relacionar las ventas entre si comuníquese a Soporte Técnico") - ' End If - ' End If - ' End If - ' End If - ' Next - 'End If - - ''SI SE SELECCIONO UNA FACTURA PARA DEVOLUCION DE EFECTIVO DEBE ASOCIARLA A LA NOTA DE CREDITO - 'If UsuarioActual.Empresa.Funcionalidad(531) = "1" AndAlso factura.TipoDocto = "Egs" AndAlso Me.CveVentaUsadoDevolucionEfectivo > 0 Then - ' If Not ObjVentas.AddVentasRelacionadas(ObjVentas.CveVenta, CveVentaUsadoDevolucionEfectivo) Then - ' ErrorList.Add("Ocurrió un error al relacionar la venta de devolución de efectivo entre si.") - ' End If - 'End If - - - - End If - - If ErrorList.Count = 0 AndAlso ObjVentas.CveVenta > 0 Then - - factura.CveVenta = ObjVentas.CveVenta - factura.Serie = ObjVentas.Serie - factura.Folio = ObjVentas.Folio - ViewState("VentaFolio") = ObjVentas.SerieFolio - factura.Timbre.Comprobante.Serie = ObjVentas.Serie - factura.Timbre.Comprobante.Folio = ObjVentas.Folio.ToString() - - If UsuarioActual.Empresa.Funcionalidad(531) = "1" AndAlso Me.CveAutorizacion > 0 Then - If Not ObjVentas.UpdateAutorizacionLimite(Me.CveAutorizacion, factura.CveCliente, factura.CveVenta) Then - ErrorList.Add("Error al guardar los limites de la autorizacion") - End If - End If - - - - - 'Se agregan los PS - For Each Row As DataRow In TmpDTDetalle.Rows - If Not ObjVentas.AddVentaDetalle(ObjVentas.CveVenta, Row("CvePS").ToString().ToEntero(), Row("Cantidad").ToString().ToDecimal, Row("CveUM").ToString().ToEntero(), - Row("PU").ToString().ToDecimal(If(factura.ConvertirPesos, factura.TipoCambio, 1)), Row("ImporteIVA").ToString().ToDecimal, Math.Round((Row("Total").ToString().ToDecimal(If(factura.ConvertirPesos, factura.TipoCambio, 1)) * (1 + Row("PorcentajeIVA").ToString().ToDecimal(If(factura.ConvertirPesos, factura.TipoCambio, 1)))), 6), - Row("Obs").ToString(), Row("Descuento").ToString().ToDecimal(If(factura.ConvertirPesos, factura.TipoCambio, 1)), Row("TipoDescuento").ToString().ToEntero(), Row("CveSubProyecto").ToString().ToEntero(), Row("CvePresupuestoIngreso").ToString().ToEntero(), TiempoEntrega:=Row("TiempoEntrega").ToString(), CveVentaDetallePadre:=Row("CveVentaDetalle").ToString().ToEntero(), - CveContratoDetalle:=Row("CveContratoDetalle").ToString().ToEntero(), CvePromocionDetalle:=Row("CvePromocionDetalle").ToString().ToEntero(), IEPS:=Row("ImporteIEPS").ToString().ToDecimal, CveMovimientoDetallePedido:=Row("CveMovimientoDetallePedido").ToString().ToEntero(), ImporteRetIVA:=Row("ImporteRetIVA").ToString().ToDecimal, ImporteRetISR:=Row("ImporteRetISR").ToString().ToDecimal, - PorcentajeIVA:=Row("PorcentajeIVA").ToString().ToDecimal, PorcentajeIEPS:=Row("PorcentajeIEPS").ToString().ToDouble, PorcentajeRetIVA:=Row("PorcentajeRetIVA").ToString().ToDouble, PorcentajeRetISR:=Row("PorcentajeRetISR").ToString().ToDecimal, CuentaPredial:=Row("CuentaPredial").ToString(), CvePrecioLista:=Row("CvePrecioLista").ToString().ToEntero(), CveActivoFijo:=Row("CveActivoFijo").ToString().ToEntero(), NumTurnos:=Row("NumTurnos").ToString().ToDecimal()) Then - ErrorList.Add("Ocurrió un error al agregar un Producto o Servicio a la Factura.
    Revise su factura y cualquier detalle comuníquese a Soporte Técnico") - Exit For - Else - - If CveContrato > 0 AndAlso factura.TipoDocto = "Rem" AndAlso AplicaGastoContrato Then - - If Not ObjContr.AddContratoGasto(CveContrato, Row("PS").ToString(), Row("Cantidad").ToString().ToDecimal * Row("PU").ToString().ToDecimal, factura.Fecha, UsuarioActual.CveUsuario, CveVenta:=ObjVentas.CveVenta) Then - ErrorList.Add("Ocurrió un error al agregar el gasto de la Factura.") - Exit For - End If - - End If - - ''Si es devolucion se agregan a la tabla de Vta_VentasDetalleDevolucion - 'If factura.AplicaDevolucion Then - ' Try - ' Dim EsCargo As Integer = If(Row("EsCargo").ToString() = "True", 1, 0) - ' If EsCargo = 1 Then - ' If Me.ObjFacturaNC IsNot Nothing Then - ' Dim CveVentaDetalleUsado As Integer = -1 - ' For Each RowIng As DataRow In Me.ObjFacturaNC.DtDetalle.Rows - ' If RowIng("Cantidad").ToString().ToDecimal() = Row("Cantidad").ToString().ToDecimal() AndAlso RowIng("CvePS").ToString().ToEntero() = Row("CvePS").ToString().ToEntero() Then - ' CveVentaDetalleUsado = RowIng("CveVentaDetalle").ToString().ToEntero() - ' Exit For - ' End If - ' Next - ' If CveVentaDetalleUsado > 0 Then - ' If Not ObjVentas.AddVentaDetalleDevolucion(CveVentaDetalleUsado, ObjVentas.CveVentaDetalle, Row("Cantidad").ToString().ToDouble) Then - ' ErrorList.Add("Ocurrió un error al agregar la venta detalle devolución.") - ' End If - ' End If - - ' End If - ' Else - ' If Not ObjVentas.AddVentaDetalleDevolucion(Row("CveVentaDetalle").ToString().ToEntero(), ObjVentas.CveVentaDetalle, Row("Cantidad").ToString().ToDouble) Then - ' ErrorList.Add("Ocurrió un error al agregar la venta detalle devolución.") - ' End If - ' End If - ' Catch ex As Exception - ' ErrorList.Add("Ocurrió un error al agregar la venta detalle devolución.") - ' End Try - - ' If ErrorList.Count = 0 Then - ' If Not ObjEventos.AddEventoBitacora(String.Format("Se aplicó una devolución en Folio: {1}", factura.CveVenta, factura.SerieFolio), "-1", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveVenta:=CveVentaDevolucion) Then - ' ErrorList.Add("Ocurrió un error al agregar la bitacora de devolución.") - ' End If - ' End If - 'End If - - 'Dim TmpDr As DataRow = TmpDTDetalle.Select($"Consec = {Row("Consec").ToString()}")(0) - 'TmpDr("CveVentaDetalle") = ObjVentas.CveVentaDetalle - - 'Try - ' If DtInv IsNot Nothing AndAlso DtInv.Rows.Count > 0 Then - ' Dim InvDr As DataRow = DtInv.Select($"Consec = {Row("Consec").ToString()}")(0) - ' InvDr("CveVentaDetalle") = ObjVentas.CveVentaDetalle - ' End If - - 'Catch ex As Exception - 'End Try - - 'SI SE FACTURA UNA RNC SE MUESTRA - 'If UsuarioActual.Empresa.Funcionalidad(531) = "1" 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 - - ' Dim EsCargo As Boolean = False - ' Dim ListaRNC As List(Of Modelos.Factura) = Nothing - - ' If NCDescuento Then - ' ListaRNC = ListaNCDescuento - ' Else - ' ' EsCargo = RblRNCTipo.SelectedValue = "1" - ' ListaRNC = ListaRemisionesNC - ' End If - - - - ' End If - 'End If - - End If - Next - - ''Orden Produccion' - 'If UsuarioActual.CveEmpresa.Contiene(126) Then - ' If ObjVentas.CveVenta > 0 And DdlOrdenProduccion.SelectedValue.ToEntero() > 0 Then - ' If Not ObjCGame.UpdateOrdenProduccionVenta(DdlOrdenProduccion.SelectedValue.ToEntero(), ObjVentas.CveVenta) Then - ' ErrorList.Add("Ocurrió un error al actualizar la orden de producción") - ' End If - ' End If - 'End If - - 'PedidoA' - 'If ObjVentas.CveVenta > 0 And CvePedidoA > 0 And DdlTipoComprobante.SelectedValue.Contiene("Rem") Then - ' If Not ObjCliente.UpdateEstatusPedido(CvePedidoA, 18, -1, UsuarioActual.CveUsuario, CveRemision:=factura.CveVenta) Then - ' ErrorList.Add("Ocurrió un error al actualizar el estatus del pedidoA") - ' Else - ' 'Remision - ' If Not ObjEventos.AddEventoBitacora($"Remisionado de autorización en: {ObjFactura.SerieFolio}", "-1", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveVenta:=CvePedidoA) Then - ' ErrorList.Add("Ocurrió un error al agregar bitácora de Autorización") - ' End If - ' End If - 'End If - - - - 'Contratos - 'If factura.CveContrato > 0 AndAlso Me.CveContratoTipo <> 33 Then - ' If factura.CveContrato > 0 AndAlso DdlTipoComprobante.SelectedValue.Contiene("Ing") Then - ' GuardarContratoAvanceEstimaciones(ObjContr, factura, ErrorList, 1) - ' 'CUANDO ES NOTA DE CRÉDITO, NO DEBE DE CONSIDERAR AVANCE, CUANDO ES NOTA DE CRÉDITO POR AMORTIZACIÓN - ' ElseIf factura.CveContrato > 0 AndAlso DdlTipoComprobante.SelectedValue.Contiene("Egs", "Dev") AndAlso Not EsNCAmortizacion Then - ' GuardarContratoAvanceEstimaciones(ObjContr, factura, ErrorList, -1) - ' End If - 'End If - - 'Impuestos Locales - For Each gvr As GridViewRow In GvImpuestosLocales2.Rows - If gvr.RowType = DataControlRowType.DataRow Then - If gvr.FCTextBox("TxtImpuestoLocalPS").Text.ToDouble <> 0 Then - If Not ObjVentas.AddVentaImpuestoLocales(factura.CveVenta, gvr.DataKey("CveImpuestoLocal").ToString().ToEntero(), gvr.FCTextBox("TxtImpuestoLocalPS").Text.ToDouble(If(factura.ConvertirPesos, factura.TipoCambio, 1))) Then - ErrorList.Add("Ocurrió un error al Guardar Impuestos Locales") - End If - End If - End If - Next - - If DTmpF.Rows.Count > 0 Then - For Each Row As DataRow In DTmpF.Rows - If Not ObjVentas.AddVentasFirmas(factura.CveVenta, Row("Titulo").ToString(), Row("Nombre").ToString(), Row("Puesto").ToString(), Row("Lado").ToString().ToEntero()) Then - ErrorList.Add("Ocurrio un error al Guardar Firmas") - End If - Next - End If - - If ErrorList.Count = 0 AndAlso ChkRequiereTecnico.Checked Then - GeneraOS(ObjVentas.IniciaTransacSQL, ErrorList) - End If - - 'Si viene de OS, Se guarda CveVenta en OS - If CveOS > 0 Then - If Not ObjOS.UpdateVentaOS(factura.CveVenta, CveOS) Then - ErrorList.Add("Ocurrió un error al guardar la venta en Ordenes de Servicio") - End If - End If - - - If ErrorList.Count = 0 Then - 'prepoliza - GuardarVentaPrePolizas(ObjConta, factura, TmpDTDetalle, CveNCaVincular, ObjBancos, ObjVentas, ObjEventos:=ObjEventos, EsNCAmortizacion:=EsNCAmortizacion, NCDescuento:=NCDescuento, ListaNCDescuento:=ListaNCDescuento, ObjInventario:=ObjInventario, TipoContable:=TipoContable) - If ErrorList.Count = 0 Then - - If ErrorList.Count = 0 Then - 'estimaciones - 'If Me.CveContratoTipo <> 33 Then - ' GuardarVentaEstimaciones(ObjContr, factura) - 'End If - If ErrorList.Count = 0 Then - 'armonizaccionContable - 'GuardarVentaAC(ObjVentas, factura, Msgok) - If ErrorList.Count = 0 Then - 'Impuestos Locales - If GuardarVentaImpuestosLocales(ObjVentas, ObjConta, factura) Then - ErrorList.Add("Ocurrio un error al Guardar Impuestos Locales") - End If - End If - End If - End If - End If - End If - - End If - End Sub - - Private Function GeneraOS(ByRef TransacSQL As SqlTransaction, ByRef errorList As List(Of String)) As Boolean - - - Dim Errores As Boolean = False - - Dim ObjOrdenServicio As New ClsOS(TransacSQL) - - Dim CveOSTipo As Integer = -1 - - If ObjOrdenServicio.GetTipoOrdenesServicios(UsuarioActual.CveEmpresa) Then - CveOSTipo = ObjOrdenServicio.DtResultados.FiltroPrimeroValor("CveOrdenServicioTipo", " Estatus = 'Activo' ").ToEntero - End If - - Dim EstatusOrdenServicio As Integer = GlobalDTEstatusOrdenServicios(UsuarioActual.CveEmpresa).FiltroPrimeroValor("CveEstatusOrdenServicio", "TipoEstatus = 1").ToEntero - - If ObjOrdenServicio.AddOrdenesServicios(CveCliente, DdlSubProyectoDatos.SelectedValue.ToEntero, UsuarioActual.Nombre, TxtFecha.Text.Replace(",", "").ToDateTime, $"Venta: {Serie}-{FolioActual}", UsuarioActual.CveUsuario, EstatusOrdenServicio, - UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, -1, -1, CveOSTipo, CveClienteSucursal:=DdlSubProyectoDatos.SelectedValue.ToEntero, - Direccion:="", Telefono:="", CveModeloAuto:=-1, Año:="", CveMedico:=DdlMedico.SelectedValue.ToEntero, - CveProcedimiento:=DdlProcedimiento.SelectedValue.ToEntero, CveTipoVenta:=RBLTipoVenta.SelectedValue.ToEntero, FechaCita:=TxtFecha.Text.Replace(",", "").ToDateTime) Then - CveOS = ObjOrdenServicio.CveOS - Else - errorList.Add("Se presento un error al guardar la orden de servicio.") - Errores = True - End If - - Dim CvePSDetalle As Integer = UsuarioActual.Empresa.Funcionalidad(708).ToEntero - - If Not CvePSDetalle > 0 Then - errorList.Add("No se tiene asignado un producto para la orden de servicio (FNC 708).") - Errores = True - End If - - If Not Errores Then - - Dim CveOsDetalle = ObjOrdenServicio.AddOrdenesServiciosDetalle(ObjOrdenServicio.CveOS, CvePSDetalle, 1, -1, -1, $"Venta: {Serie}-{FolioActual}", False, True, False, -1, "-1", "-1", "-1", "", UsuarioActual.CveUsuario, Archivo:="") - - If CveOsDetalle > 0 Then - 'MENSAJE PRINCIPAL - Dim MensajeAlertOS As New StringBuilder - MensajeAlertOS.AppendFormat(String.Format("
    La Orden de Servicio: {0} se generó correctamente.

    ", ObjOrdenServicio.Folio)) - MensajeAlert.AppendFormat("
    ", Encripta(String.Format("OP=OS&CVEOS={0}", ObjOrdenServicio.CveOS))) - Dim Liga = $"document.location.href=""/OS/RepOrdenesServicios.aspx"";" - Alert(MensajeAlertOS.ToString, TipoMensaje.MsgInformacion, Liga) - Else - errorList.Add("Se presento un error al guardar la el detalle de la orden de servicio.") - Errores = True - End If - - - End If - - Return If(Errores, False, True) - - End Function - - Private Sub GuardarVentaPrePolizas(ByRef ObjConta As ClsContabilidad, factura As Modelos.Factura, TmpDTDetalleMovimientos As DataTable, CveNCaVincular As Integer, - Optional ByRef ObjBancos As ClsBancos = Nothing, ByRef Optional ObjVentas As ClsVentas = Nothing, - ByRef Optional ObjEventos As ClsOIEventos = Nothing, Optional EsNCAmortizacion As Boolean = False, Optional NCDescuento As Boolean = False, - Optional ValorMultiplicador As Integer = 1, Optional ListaNCDescuento As List(Of Modelos.Factura) = Nothing, Optional ObjInventario As ClsInventarios = Nothing, Optional TipoContable As Integer = -1) - - Dim CveIE As Integer = -1 - Dim DT As DataTable = Nothing - - - Dim CveConceptoAfectacion As Integer = 1 'Cliente - Dim CveConceptoAntCli As Integer = 3 'Anticipo Cliente - Dim CveConceptoVenta As Integer = 4 'Venta - Dim CveConceptoCanAnt As Integer = 11 'Cancelacion Anticipos - Dim CveConceptoDSV As Integer = 12 ' DSV - Dim CveConceptoIVA As Integer = 13 'IVA Trasladado - Dim CveConceptoRetIVA As Integer = 8 'Ret IVA - Dim CveConceptoRetISR As Integer = 9 'Ret ISR - - 'P R E P O L I Z A S - If DdlTipoComprobante.SelectedValue <> "Cot" Then - If factura.CvePrePoliza > 0 Then - - If ProcesoPrepolizas(ObjConta, factura, CveIE, TmpDTDetalleMovimientos, ValorMultiplicador, ObjBancos, ObjVentas, ObjEventos:=ObjEventos, EsNCAmortizacion:=EsNCAmortizacion, NCDescuento:=NCDescuento, ListaNCDescuento:=ListaNCDescuento, ObjInventario:=ObjInventario, TipoContable:=TipoContable) Then - ErrorList.Add("Ocurrió un error al agregar los Movimientos de la prepoliza.
    Revise su factura y cualquier detalle comuníquese a Soporte Técnico") - End If - - Else - ErrorList.Add("Ocurrió un error al agregar los Movimientos de la prepoliza.
    Revise su factura y cualquier detalle comuníquese a Soporte Técnico") - End If - End If - End Sub - Private Function ProcesoPrepolizas(ByRef ObjConta As ClsContabilidad, ObjFactura As Modelos.Factura, CveIE As Integer, TmpDTDetalle As DataTable, - Optional ValorMultiplicador As Integer = 1, ByRef Optional ObjBancos As ClsBancos = Nothing, ByRef Optional ObjVentas As ClsVentas = Nothing, - ByRef Optional ObjEventos As ClsOIEventos = Nothing, Optional EsNCAmortizacion As Boolean = False, Optional NCDescuento As Boolean = False, - Optional ListaNCDescuento As List(Of Modelos.Factura) = Nothing, Optional ObjInventario As ClsInventarios = Nothing, Optional TipoContable As Integer = -1) As Boolean - Try - Dim DT As DataTable - Dim CvePlantilaPoliza As Integer - Dim PorcentajeAmortizacion As Decimal = 0 - Dim sumaAmorticaciones As Decimal = 0 - Dim ErrorPrepoliza As Boolean = False - Dim alertaContabilizacion As String = "Se enviaron correctamente las siguientes pólizas:

    " - Dim CveCuentaContabilizacion As Integer = 1 - Dim tipoCambio As Decimal - Dim TCPago As Decimal = 1 - Dim CuentasContablesInvalidasSIG As New StringBuilder - - If ObjFactura.TipoDocto = "Ing" Or ObjFactura.TipoDocto = "Ant" Or ObjFactura.TipoDocto = "Com" Then - CvePlantilaPoliza = 4 - ElseIf ObjFactura.TipoDocto.Contiene("Egs", "Dev") Then - CvePlantilaPoliza = 7 - ElseIf ObjFactura.TipoDocto.Contiene("Rem", "RNC") Then - CvePlantilaPoliza = 4 - End If - - If ObjFactura.CveMoneda = 2 AndAlso ObjFactura.TipoCambio > 0 Then - tipoCambio = ObjFactura.TipoCambio - TCPago = GlobalTipoCambio(ObjFactura.Fecha.AddDays(-1)).ToString().ToDecimal - ElseIf ObjFactura.CveMoneda = 2 AndAlso ObjFactura.TipoCambio <= 1 Then - If UsuarioActual.CveEmpresa.Contiene(13, 83) Then - tipoCambio = GlobalTipoCambio(ObjFactura.Fecha.AddDays(-1)).ToString().ToDecimal - Else - 'If ChkEmitirComercioExterior.Checked Then - ' tipoCambio = GlobalTipoCambio(ObjFactura.Fecha.AddDays(-1)).ToString().ToDecimal - 'Else - tipoCambio = GlobalTipoCambio(ObjFactura.Fecha).ToString().ToDecimal - 'End If - - End If - Else - tipoCambio = 1 - End If - - Dim ConceptoContable As Integer - Dim TipoMovimiento As Boolean - Dim importeMovimiento As Decimal - Dim FechaMovimiento As Date = ObjFactura.Fecha - Dim Concepto As String = ObjFactura.SerieFolio - Dim Referencia As String = ObjFactura.SerieFolio - Dim Fecha As Date = NowADS() - - Dim importeMX As Decimal - Dim Multiplicador As Integer - Dim CveIEPago As Integer - Dim FolioIE As Long - Dim CveIEAnticipo As Integer - Dim CveSubProyectoVenta As Integer = DdlSubProyectoDatos.SelectedValue.ToEntero() - Dim CveSubProyectoContabilizar As Integer - Dim SeContabiliza As Boolean = True - - - Dim AutoConta As Boolean = UsuarioActual.Empresa.Funcionalidad(200) = "1" - If UsuarioActual.CveEmpresa = 119 AndAlso DdlTipoComprobante.SelectedValue.Contiene("Ant", "Rem", "RNC", "Cot", "Ped", "Pd2", "PA", "Egs", "Dev") Then - AutoConta = False - End If - - Dim UsaComplementariaClientes As Boolean = True - - If ObjConta.GetPlantillaConceptos(ObjFactura.CveEmpresa, CvePlantilaPoliza) Then - Dim dtt As DataTable = ObjConta.DtResultados - If ValorMultiplicador = -1 Then dtt = ObjConta.DtResultados.FiltraParametros("", "Orden DESC") ' se ordena contrario al registro para llevar los saldos correctos - For Each Row As DataRow In dtt.Rows - - ConceptoContable = Row("CveConcepto").ToString().ToEntero() - TipoMovimiento = If(Row("TipoMovto").ToString() = "True", True, False) - importeMovimiento = 0 - CveSubProyectoContabilizar = 0 - Multiplicador = (Row("Multiplicador").ToString().ToEntero()) - Concepto = ObjConta.ObtenerConceptoEmpresa(UsuarioActual.CveEmpresa, ConceptoContable, NombreCliente, $"{ObjFactura.Serie}-{ObjFactura.Folio}", "") - Dim PorcentajeImpuesto As Decimal = 0 - - Select Case ConceptoContable - Case 1 'Cliente - If Not ObjFactura.TipoDocto.Contiene("Egs", "Rem", "RNC") Then - If ObjFactura.CveMoneda > 1 Then ConceptoContable = 291 - importeMovimiento = (ObjFactura.Total - TotalOtrosConceptos) * ValorMultiplicador - importeMX = importeMovimiento * tipoCambio * Multiplicador - FechaMovimiento = ObjFactura.FechaPago - CveSubProyectoContabilizar = CveSubProyectoVenta - If tipoCambio > 1 Then Concepto += $" TC:{tipoCambio} ${importeMovimiento.FormatoNumero(2)}" - - If tipoCambio > 1 Then - If importeMovimiento <> 0 AndAlso (UsaComplementariaClientes) Then - importeMX = importeMovimiento - If Not ObjConta.AddPrePolizasDetalle(ObjFactura.CvePrePoliza, TipoMovimiento, 0, (importeMovimiento * tipoCambio - importeMovimiento).RoundSQL, 203, Referencia, Concepto, CveVenta:=ObjFactura.CveVenta, CveCliente:=ObjFactura.CveCliente, CveIE:=CveIE, ImporteME:=If(tipoCambio = 1, 0, importeMovimiento), TipoCambio:=tipoCambio, CveSubProyecto:=CveSubProyectoContabilizar, Contabilizable:=SeContabiliza) Then - ErrorPrepoliza = True - End If - End If - End If - Dim DtAF As DataTable = TmpDT.FiltraParametros("CveActivoFijo > 0") - - If DtAF.Rows.Count > 0 Then - For Each RowAF As DataRow In DtAF.FiltraParametros("", "", {"CveActivoFijo", "Obs"}).Rows - Dim ImporteDepreciado As Decimal = DtAF.SUMD("AFDepreciacion", $"CveActivoFijo = {RowAF("CveActivoFijo")}").RoundSQL(2) - - If Not ObjConta.AddPrePolizasDetalle(ObjFactura.CvePrePoliza, TipoMovimiento, ImporteDepreciado, (ImporteDepreciado).RoundSQL, 271, Referencia, $"Depreciación {RowAF("Obs")}", CveVenta:=ObjFactura.CveVenta, CveCliente:=ObjFactura.CveCliente, CveIE:=CveIE, ImporteME:=If(tipoCambio = 1, 0, importeMovimiento), TipoCambio:=tipoCambio, CveSubProyecto:=DdlSubProyectoDatos.SelectedValue.ToEntero(), Contabilizable:=SeContabiliza) Then - ErrorPrepoliza = True - End If - - 'MARCAR EL ACTIVO FIJO COMO VENDEDIDO - If Not ErrorPrepoliza AndAlso RowAF("CveActivoFijo").ToString().ToEntero() > 0 Then - If Not ObjVentas.UpdateEstatusAFVendido(RowAF("CveActivoFijo").ToString().ToEntero(), UsuarioActual.CveEmpresa, 5) Then - ErrorPrepoliza = True - End If - End If - Next - End If - End If - - Case 3 'Cliente - - If ObjFactura.TipoDocto = "Ant" Then - ConceptoContable = If(UsuarioActual.CveEmpresa.Contiene(119), 95, ConceptoContable) - importeMovimiento = ObjFactura.SubTotal * ValorMultiplicador - importeMX = importeMovimiento * tipoCambio * Multiplicador - FechaMovimiento = ObjFactura.FechaPago - CveSubProyectoContabilizar = CveSubProyectoVenta - If tipoCambio > 1 Then Concepto += $" TC:{tipoCambio} ${importeMovimiento.FormatoNumero(2)}" - End If - Case 190 'Remisión del cliente - - If ObjFactura.TipoDocto = "Rem" Then - importeMovimiento = (ObjFactura.Total - TotalOtrosConceptos) * ValorMultiplicador - importeMX = importeMovimiento * tipoCambio * Multiplicador - FechaMovimiento = ObjFactura.FechaPago - CveSubProyectoContabilizar = CveSubProyectoVenta - If tipoCambio > 1 Then Concepto += $" TC:{tipoCambio} ${importeMovimiento.FormatoNumero(2)}" - - Dim ContabilizableRem As Boolean = False - If TipoContable <> -1 Then - ContabilizableRem = True - End If - - If ObjConta.AddPrePolizasDetalle(ObjFactura.CvePrePoliza, TipoMovimiento, importeMovimiento, importeMX, 190, Referencia, Concepto, CveVenta:=ObjFactura.CveVenta, CveCliente:=ObjFactura.CveCliente, CveIE:=CveIE, ImporteME:=If(tipoCambio = 1, 0, importeMovimiento), Contabilizable:=ContabilizableRem, CveSubProyecto:=CveSubProyectoContabilizar) Then - If Not ObjConta.AddPrePolizasDetalle(ObjFactura.CvePrePoliza, Not TipoMovimiento, importeMovimiento, importeMX, 193, Referencia, Concepto, CveVenta:=ObjFactura.CveVenta, CveCliente:=ObjFactura.CveCliente, CveIE:=CveIE, ImporteME:=If(tipoCambio = 1, 0, importeMovimiento), Contabilizable:=ContabilizableRem, CveSubProyecto:=CveSubProyectoContabilizar) Then - ErrorPrepoliza = True - End If - Else - ErrorPrepoliza = True - End If - - importeMovimiento = 0 - ViewState("SeGuardoPrePoliza") = True - End If - - Case 277 'Remisión de NC - - If ObjFactura.TipoDocto = "RNC" Then - importeMovimiento = (ObjFactura.Total - TotalOtrosConceptos) * ValorMultiplicador - importeMX = importeMovimiento * tipoCambio * Multiplicador - FechaMovimiento = ObjFactura.FechaPago - CveSubProyectoContabilizar = CveSubProyectoVenta - If tipoCambio > 1 Then Concepto += $" TC:{tipoCambio} ${importeMovimiento.FormatoNumero(2)}" - If ObjConta.AddPrePolizasDetalle(ObjFactura.CvePrePoliza, TipoMovimiento, importeMovimiento, importeMX, 277, Referencia, Concepto, CveVenta:=ObjFactura.CveVenta, CveCliente:=ObjFactura.CveCliente, CveIE:=CveIE, ImporteME:=If(tipoCambio = 1, 0, importeMovimiento), Contabilizable:=False, CveSubProyecto:=CveSubProyectoContabilizar) Then - If Not ObjConta.AddPrePolizasDetalle(ObjFactura.CvePrePoliza, Not TipoMovimiento, importeMovimiento, importeMX, 278, Referencia, Concepto, CveVenta:=ObjFactura.CveVenta, CveCliente:=ObjFactura.CveCliente, CveIE:=CveIE, ImporteME:=If(tipoCambio = 1, 0, importeMovimiento), Contabilizable:=False, CveSubProyecto:=CveSubProyectoContabilizar) Then - ErrorPrepoliza = True - End If - Else - ErrorPrepoliza = True - End If - - importeMovimiento = 0 - ViewState("SeGuardoPrePoliza") = True - End If - - Case 12 'Nota de Credito - If ObjFactura.TipoDocto.Contiene("Egs", "Dev") Then - Dim ConPreP As ConceptosTipoSaldo = ObtenerCveConceptoPrePoliza(6, ObjFactura.CveMoneda, False, 2) - - importeMovimiento = ObjFactura.Total * ValorMultiplicador - importeMX = (importeMovimiento * tipoCambio * Multiplicador).RoundSQL(2) - FechaMovimiento = ObjFactura.FechaPago - - CveSubProyectoContabilizar = ObjFactura.CveSubProyecto - If ObjFactura.CveMoneda = 2 Then - importeMX = importeMovimiento - Concepto += $" TC:{tipoCambio} ${importeMovimiento.FormatoNumero(2)}" - End If - - If Not ObjConta.AddPrePolizasDetalle(ObjFactura.CvePrePoliza, TipoMovimiento, importeMovimiento, importeMX, ConPreP.CveConcepto, Referencia, Concepto, CveVenta:=ObjFactura.CveVenta, CveCliente:=ObjFactura.CveCliente, CveIE:=CveIE, ImporteME:=If(tipoCambio = 1, 0, importeMovimiento), TipoCambio:=tipoCambio, CveSubProyecto:=CveSubProyectoContabilizar) Then - ErrorPrepoliza = True - End If - - If UsaComplementariaClientes AndAlso ObjFactura.CveMoneda = 2 Then - If Not ObjConta.AddPrePolizasDetalle(ObjFactura.CvePrePoliza, TipoMovimiento, 0, (importeMovimiento * tipoCambio - importeMovimiento).RoundSQL(2), ConPreP.CveConceptoComplementario, Referencia, Concepto, CveVenta:=ObjFactura.CveVenta, CveCliente:=ObjFactura.CveCliente, CveIE:=CveIE, ImporteME:=If(tipoCambio = 1, 0, importeMovimiento), TipoCambio:=tipoCambio, CveSubProyecto:=CveSubProyectoContabilizar) Then - ErrorPrepoliza = True - End If - End If - - Dim TipoCambioNC As Decimal = 1 - - If ObjFactura.CveMoneda = 2 Then - If tipoCambio > 1 Then - TipoCambioNC = tipoCambio - Else - If UsuarioActual.CveEmpresa.Contiene(13, 83) Then - TipoCambioNC = GlobalTipoCambio(ObjFactura.Fecha.AddDays(-1)).ToDecimal - Else - TipoCambioNC = GlobalTipoCambio(ObjFactura.Fecha).ToDecimal - End If - End If - End If - - importeMovimiento = 0 - importeMX = 0 - - 'APLICA NC SALDOS DIRECTOS - If Not ErrorPrepoliza AndAlso DtVentasNC IsNot Nothing AndAlso DtVentasNC.Rows.Count > 0 Then - For Each Dr As DataRow In DtVentasNC.Rows - Dim ObjFacturaRef As New Modelos.Factura(UsuarioActual, Dr("CveVenta").ToString().ToEntero(), UsuarioActual.CveEmpresa, CargaDTDetalle:=False, VerificaAlmacen:=False, CargaDatosCliente:=False, CargaDatosRelacionados:=False) - - Dim ventaRef As New Venta(ObjFacturaRef, UsuarioActual) - - ObjFacturaRef.Dispose() - - Dim Pago As New VentaPago - Pago.Fecha = ObjFactura.Fecha - Pago.FechaDocumentoRelacionado = ObjFactura.Fecha - Pago.ImportePagoVenta = Dr("Importe").ToString().ToDecimal() - Pago.ImportePago = Dr("Importe").ToString().ToDecimal() - Pago.CveMonedaPago = ObjFactura.CveMoneda - Pago.TCPago = TipoCambioNC - Pago.TipoPago = "NC" - Pago.CveVentaAmortizacion = ObjFactura.CveVenta 'Dr("CveVenta").ToString().ToEntero() - Pago.AplicaTraslado = False - Pago.Referencia = Concepto - 'Pago.CveConceptoPago = 251 - - ErrorPrepoliza = AplicaPrePolizaPagoVenta(ventaRef, Pago, ObjFactura.CvePrePoliza, ObjConta) - - If ErrorPrepoliza Then - Exit For - End If - - - Next - - If Not ErrorPrepoliza AndAlso ObjConta.ValidacionesPrePoliza(ObjFactura.CvePrePoliza, UsuarioActual, Opcion:=5, AutoConta:=AutoConta) Then - If ObjConta.ValorPolizaDescuadre > 0 Then - 'ErrorPrepoliza = True - GuardaLogAD($"Ventas/Ventas-ProcesoPrePolizas | Error:{ObjConta.MensajePolizaDescuadre} Diferencia:{ObjConta.ValorDiferencia} | CvePrePoliza:{ObjFactura.CvePrePoliza}", "LogPrePolizas") - End If - End If - - - If ErrorPrepoliza Then - Exit For - End If - End If - - 'APLICA DEVOLUCION SALDOS DIRECTOS - If AplicaDevolucion Then - Dim importeMovimientoDev As Decimal = TxtTotal.Text.ToDecimal - importeMovimientoDev = If(SaldoVentaDevolucion < importeMovimientoDev, SaldoVentaDevolucion, importeMovimientoDev) - If importeMovimientoDev > 0 Then - Dim importeMXDev As Decimal = importeMovimientoDev * tipoCambio * Multiplicador - If tipoCambio > 1 Then Concepto += $" TC:{tipoCambio} ${importeMovimientoDev.FormatoNumero(2)}" - - If UsaComplementariaClientes AndAlso tipoCambio > 1 Then - importeMXDev = importeMovimientoDev - Dim ImporteComplementaria As Decimal = ((importeMovimientoDev * tipoCambio) - importeMovimientoDev).RoundSQL - If Not ObjConta.AddPrePolizasDetalle(ObjFactura.CvePrePoliza, False, importeMovimientoDev, ImporteComplementaria, 203, Referencia, Concepto, CveVenta:=ObjFactura.CveVenta, CveCliente:=ObjFactura.CveCliente, CveVentaAmortizacion:=CveVentaDevolucion, ImporteME:=If(tipoCambio = 1, 0, importeMovimientoDev), CveSubProyecto:=CveSubProyectoContabilizar, TipoCambio:=tipoCambio, TipoCambioPago:=TipoCambioFactura) Then - ErrorPrepoliza = True - Exit For - End If - End If - - If Not ObjConta.AddPrePolizasDetalle(ObjFactura.CvePrePoliza, False, importeMovimientoDev, importeMXDev, 91, Referencia, Concepto, CveVenta:=ObjFactura.CveVenta, CveCliente:=ObjFactura.CveCliente, CveVentaAmortizacion:=CveVentaDevolucion, ImporteME:=If(tipoCambio = 1, 0, importeMovimientoDev), CveSubProyecto:=CveSubProyectoContabilizar) Then - ErrorPrepoliza = True - Exit For - End If - - If UsaComplementariaClientes AndAlso TipoCambioFactura > 1 Then - importeMXDev = importeMovimientoDev - Dim ImporteComplementaria As Decimal = ((importeMovimientoDev * TipoCambioFactura) - importeMovimientoDev).RoundSQL - If Not ObjConta.AddPrePolizasDetalle(ObjFactura.CvePrePoliza, True, importeMovimientoDev, ImporteComplementaria, 207, Referencia, Concepto, CveVenta:=CveVentaDevolucion, CveCliente:=ObjFactura.CveCliente, ImporteME:=If(TipoCambioFactura = 1, 0, importeMovimientoDev), CveSubProyecto:=CveSubProyectoContabilizar, CveVentaAmortizacion:=ObjFactura.CveVenta, TipoCambio:=TipoCambioFactura) Then - ErrorPrepoliza = True - Exit For - End If - End If - - Dim CveConceptoPagoNC As Integer = 251 - If ObjFactura.CveMoneda > 1 Then - CveConceptoPagoNC = 301 - End If - - If Not ObjConta.AddPrePolizasDetalle(ObjFactura.CvePrePoliza, True, importeMovimientoDev, importeMXDev, CveConceptoPagoNC, Referencia, Concepto, CveVenta:=CveVentaDevolucion, CveCliente:=ObjFactura.CveCliente, CveVentaAmortizacion:=ObjFactura.CveVenta, ImporteME:=If(tipoCambio = 1, 0, importeMovimientoDev), CveSubProyecto:=CveSubProyectoContabilizar) Then - ErrorPrepoliza = True - Exit For - End If - - If tipoCambio <> TipoCambioFactura Then - Dim difFluctuacion As Decimal = tipoCambio - TipoCambioFactura - Dim CveConceptoFluctua As Integer = 64 '64.ganacia, 65.perdida - Dim TipoMovtoFluctua As Boolean = True - If difFluctuacion < 0 Then - CveConceptoFluctua = 65 - TipoMovtoFluctua = False - Else - CveConceptoFluctua = 64 - TipoMovtoFluctua = True - End If - Dim ImporteFluctuacion As Decimal = Math.Abs((importeMovimientoDev * difFluctuacion).RoundSQL) - - If Not ObjConta.AddPrePolizasDetalle(ObjFactura.CvePrePoliza, TipoMovtoFluctua, ImporteFluctuacion, ImporteFluctuacion, CveConceptoFluctua, Referencia, Concepto, CveVenta:=ObjFactura.CveVenta, CveCliente:=ObjFactura.CveCliente, CveVentaAmortizacion:=CveVentaDevolucion, ImporteME:=ImporteFluctuacion, CveSubProyecto:=CveSubProyectoContabilizar, TipoCambio:=tipoCambio, TipoCambioPago:=TipoCambioFactura) Then - ErrorPrepoliza = True - Exit For - End If - End If - - If ObjConta.ValidacionesPrePoliza(ObjFactura.CvePrePoliza, UsuarioActual, Opcion:=2, AutoConta:=AutoConta) Then - If ObjConta.ValorPolizaDescuadre > 0 Then - GuardaLogAD($"Ventas/Ventas-ProcesoPrePolizas | Error:{ObjConta.MensajePolizaDescuadre} Diferencia:{ObjConta.ValorDiferencia} | CvePrePoliza:{ObjFactura.CvePrePoliza}", "LogPrePolizas") - End If - End If - - End If - End If - End If - importeMovimiento = 0 - Case 136 'Otros Conceptos Dinamicos - 'For Each row2 As GridViewRow In GVOtrosConceptos.Rows - ' If row2.FCTextBox("TxtCantidadConcepto").Text.ToDecimal > 0 Then - - ' importeMovimiento = row2.FCTextBox("TxtCantidadConcepto").Text.ToDecimal * ValorMultiplicador - ' CveSubProyectoContabilizar = CveSubProyectoVenta - ' If tipoCambio > 1 Then Concepto += $" TC:{tipoCambio} ${importeMovimiento.FormatoNumero(2)}" - - ' If importeMovimiento <> 0 Then - ' If Not ObjConta.AddPrePolizasDetalle(ObjFactura.CvePrePoliza, If(row2.DataKey("TipoMovto").ToString() = "True", True, False), importeMovimiento, importeMovimiento * tipoCambio, row2.DataKey("CveConceptoContable").ToEntero(), Referencia, Concepto, CveVenta:=ObjFactura.CveVenta, CveCliente:=ObjFactura.CveCliente, ImporteME:=If(tipoCambio = 1, 0, importeMovimiento), CveSubProyecto:=CveSubProyectoContabilizar) Then - ' ErrorPrepoliza = True - ' End If - ' End If - - ' End If - 'Next - importeMovimiento = 0 - - Case 11 'Anticipo - - '[IPP] SI ES REFACTURACION LOS ANTICIPOS NO LOS DEBE APLICAR EN EL INGRESO REFACTURADO (VIEJO) - If NuevaFactura = 1 And ObjFactura.CveVenta = CveDevolucion Then - Exit Select - End If - - If ObjFactura.TipoDocto = "Ing" AndAlso ValorMultiplicador = -1 Then - For Each row2 As GridViewRow In GvAntNC.Rows - If row2.DataKey("CveConceptoContable").ToString().ToEntero() = 11 Then - importeMovimiento = row2.DataKey("Importe").ToString().ToDecimal * ValorMultiplicador '- ((row2.FCTextBox("TxtAnticipo" & row2.RowIndex).Text.ToDecimal / row2.DataKey("TotalAnticipo").ToDecimal) * row2.DataKey("IVAAnticipo").ToDecimal) - If tipoCambio > 1 Then Concepto += $" TC:{tipoCambio} ${importeMovimiento.FormatoNumero(2)}" - CveSubProyectoContabilizar = CveSubProyectoVenta - - If importeMovimiento <> 0 Then - If Not ObjConta.AddPrePolizasDetalle(ObjFactura.CvePrePoliza, TipoMovimiento, importeMovimiento, importeMovimiento * tipoCambio, ConceptoContable, Referencia, Concepto, CveVenta:=row2.DataKey("CveVenta").ToEntero(), CveVentaAmortizacion:=ObjFactura.CveVenta, CveCliente:=ObjFactura.CveCliente, CveIE:=CveIEAnticipo, ImporteME:=If(tipoCambio = 1, 0, importeMovimiento), CveSubProyecto:=CveSubProyectoContabilizar, Contabilizable:=SeContabiliza) Then - ErrorPrepoliza = True - Exit For - Else - ViewState("SeGuardoPrePoliza") = True - End If - End If - - End If - Next - End If - - 'CUANDO APLICAN UNA NOTA DE CREDITO SOBRE UN ANTICIPO - If ObjFactura.TipoDocto = "Egs" AndAlso EsNCAmortizacion Then - If DtAnticipoAmortizacion IsNot Nothing AndAlso DtAnticipoAmortizacion.Rows.Count > 0 Then - For Each RowAnticipo As DataRow In DtAnticipoAmortizacion.Rows - Dim CveVentaAnticipo As Integer = RowAnticipo("CveVenta").ToString().ToEntero() - importeMovimiento = RowAnticipo("SaldoAnticipo").ToString().ToDecimal - If tipoCambio > 1 Then Concepto += $" TC:{tipoCambio} ${importeMovimiento.FormatoNumero(2)}" - CveSubProyectoContabilizar = CveSubProyectoVenta - If importeMovimiento <> 0 Then - If Not ObjConta.AddPrePolizasDetalle(ObjFactura.CvePrePoliza, TipoMovimiento, importeMovimiento, importeMovimiento, ConceptoContable, Referencia, Concepto, CveVenta:=CveVentaAnticipo, CveVentaAmortizacion:=ObjFactura.CveVenta, CveCliente:=ObjFactura.CveCliente, CveIE:=CveIEAnticipo, ImporteME:=If(tipoCambio = 1, 0, importeMovimiento), CveSubProyecto:=CveSubProyectoContabilizar, Contabilizable:=SeContabiliza) Then - ErrorPrepoliza = True - Exit For - Else - ViewState("SeGuardoPrePoliza") = True - End If - End If - Next - End If - End If - - 'cuando es anticipo - ' cuando es amortización de nota de crédito, y es la nc - ' cuando es amortización por descuento, y es el ingreso - ' cuando es amortización en cero - 'DdlTipoAmortizacionAnticipo.SelectedValue.ToEntero() = 2 AndAlso ObjFactura.TipoDocto.Contiene("Egs") OrElse - - 'Cuando la funcionalidad de amortizacion en PS esta activa - If Not ErrorPrepoliza Then - DT = TmpDTDetalle.FiltraParametros($"CvePS = {CvePSAmortizacion}") - If DT.Rows.Count > 0 Then - For Each Row2 As DataRow In DT.Rows - importeMovimiento = Math.Abs(Row2("PU").ToString().ToDecimal) - CveSubProyectoContabilizar = CveSubProyectoVenta - If tipoCambio > 1 Then Concepto += $" TC:{tipoCambio} ${importeMovimiento.FormatoNumero(2)}" - - If importeMovimiento <> 0 Then - If Not ObjConta.AddPrePolizasDetalle(ObjFactura.CvePrePoliza, TipoMovimiento, importeMovimiento, importeMovimiento * tipoCambio, ConceptoContable, Referencia, Concepto, CveVenta:=ObjFactura.CveVenta, CveVentaAmortizacion:=ObjFactura.CveVenta, CveCliente:=ObjFactura.CveCliente, ImporteME:=If(tipoCambio = 1, 0, importeMovimiento), CveSubProyecto:=CveSubProyectoContabilizar, Contabilizable:=SeContabiliza) Then - ErrorPrepoliza = True - Else - ViewState("SeGuardoPrePoliza") = True - End If - End If - Next - End If - End If - - 'PorcentajeAmortizacion = sumaAmorticaciones / TxtTotal.Text.ToDecimal - importeMovimiento = 0 - - Case 91 'Amortizacion Nota de Credito - Dim Contabilizable As Boolean = If(UsuarioActual.CveEmpresa = 119, False, True) - - If ValorMultiplicador = -1 Then - 'cuando es cancelación - For Each row2 As GridViewRow In GvNC.Rows - - If row2.DataKey("CveConceptoContable").ToString().ToEntero() = 91 Then - - importeMovimiento = row2.DataKey("Importe").ToDecimal * ValorMultiplicador - sumaAmorticaciones += importeMovimiento - If tipoCambio > 1 Then Concepto += $" TC:{tipoCambio} ${importeMovimiento.FormatoNumero(2)}" - - CveSubProyectoContabilizar = CveSubProyectoVenta - - If importeMovimiento <> 0 Then - - Dim CveConceptoPagoNC As Integer = 251 - If ObjFactura.CveMoneda > 1 Then - CveConceptoPagoNC = 301 - End If - - If ObjConta.AddPrePolizasDetalle(ObjFactura.CvePrePoliza, True, importeMovimiento, importeMovimiento * tipoCambio, CveConceptoPagoNC, Referencia, Concepto, CveVenta:=row2.DataKey("CveVentaNC").ToString().ToEntero(), CveCliente:=ObjFactura.CveCliente, CveVentaAmortizacion:=ObjFactura.CveVenta, ImporteME:=If(tipoCambio = 1, 0, importeMovimiento), CveSubProyecto:=CveSubProyectoContabilizar, Contabilizable:=Contabilizable) Then - If Not ObjConta.AddPrePolizasDetalle(ObjFactura.CvePrePoliza, False, importeMovimiento, importeMovimiento * tipoCambio, 91, Referencia, Concepto, CveVenta:=ObjFactura.CveVenta, CveCliente:=ObjFactura.CveCliente, CveVentaAmortizacion:=row2.DataKey("CveVentaNC").ToString().ToEntero(), ImporteME:=If(tipoCambio = 1, 0, importeMovimiento), CveSubProyecto:=CveSubProyectoContabilizar, Contabilizable:=Contabilizable) Then - ErrorPrepoliza = True - Exit For - End If - Else - ErrorPrepoliza = True - Exit For - End If - End If - End If - Next - - Else - 'For Each row2 As GridViewRow In GVAnticipos.Rows - - ' If row2.DataKey("CveConceptoContable").ToString().ToEntero() = 12 Then - - ' If row2.FCCheckBox("Chk" & row2.RowIndex).Checked Then - ' importeMovimiento = row2.FCTextBox("TxtAnticipo" & row2.RowIndex).Text.ToDecimal - ' sumaAmorticaciones += importeMovimiento - ' If tipoCambio > 1 Then Concepto += $" TC:{tipoCambio} ${importeMovimiento.FormatoNumero(2)}" - ' CveSubProyectoContabilizar = CveSubProyectoVenta - ' If importeMovimiento <> 0 Then - - ' If Not ObjConta.AddPrePolizasDetalle(ObjFactura.CvePrePoliza, TipoMovimiento, importeMovimiento, importeMovimiento * tipoCambio, ConceptoContable, Referencia, Concepto, CveVenta:=row2.DataKey("CveVenta").ToString().ToEntero(), CveCliente:=ObjFactura.CveCliente, CveVentaAmortizacion:=ObjFactura.CveVenta, ImporteME:=If(tipoCambio = 1, 0, importeMovimiento), CveSubProyecto:=CveSubProyectoContabilizar, Contabilizable:=Contabilizable) Then - ' ErrorPrepoliza = True - ' End If - ' End If - ' End If - - ' End If - - 'Next - - If UsuarioActual.Empresa.Funcionalidad(344) = "1" AndAlso ObjFactura.TipoDocto = "Egs" Then - Dim ListaNC As List(Of Modelos.Factura) = Nothing - - If NCDescuento Then - ListaNC = ListaNCDescuento - Else - ListaNC = ListaRemisionesNC - End If - - If ListaNC IsNot Nothing Then - For Each ObjRNC As Modelos.Factura In ListaNC - If ObjRNC.TipoDocto = "RNC" Then - importeMovimiento = ObjRNC.TotalRemNCAplicado * -1 - importeMX = importeMovimiento * tipoCambio * Multiplicador - FechaMovimiento = ObjFactura.FechaPago - CveSubProyectoContabilizar = CveSubProyectoVenta - If tipoCambio > 1 Then Concepto += $" TC:{tipoCambio} ${importeMovimiento.FormatoNumero(2)}" - - 'ACTUALIZA SI LA VENTA FUE MARCADA CON OTRA PARA EL FILTRO DE USADOS - If ObjRNC.Num3 > 0 Then - If Not ObjVentas.UpdateVentaRNCUsado(ObjRNC.CveVenta, ObjRNC.Num3.ToEntero()) Then - ErrorPrepoliza = True - End If - End If - Dim CveMovimiento As Integer = -1 - Dim CveAlmacen As Integer = -1 - - If ObjInventario IsNot Nothing AndAlso ObjInventario.GetInv_Mov(ObjRNC.CveVenta, UsuarioActual.CveEmpresa) Then - CveMovimiento = ObjInventario.DtResultados.FiltroPrimeroValor("CveMovimiento", "CvePS IS NULL AND CveConcepto = 42").ToEntero() - CveAlmacen = ObjInventario.DtResultados.FiltroPrimeroValor("CveAlmacen", "CvePS IS NULL AND CveConcepto = 42").ToEntero() - End If - - 'VERIFICA SI TIENE MOVIMIENTO DE ENTRADA DE USADO - If CveMovimiento > 0 AndAlso CveAlmacen > 0 Then - - If Not ObjConta.AddPrePolizasDetalle(ObjFactura.CvePrePoliza, TipoMovimiento, importeMovimiento, importeMX, 277, Referencia, Concepto, CveVenta:=ObjRNC.CveVenta, CveVentaAmortizacion:=ObjFactura.CveVenta, CveCliente:=ObjFactura.CveCliente, CveIE:=CveIE, ImporteME:=If(tipoCambio = 1, 0, importeMovimiento), Contabilizable:=False, CveSubProyecto:=CveSubProyectoContabilizar) Then - ErrorPrepoliza = True - End If - - Dim SubTotalCalculado As Decimal = (importeMovimiento / (1D + ObjRNC.PorcentajeIVA)).ToDecimal - - Dim Importe318 As Decimal = (SubTotalCalculado * ObjRNC.PorcentajeIVA).RoundSQL(2).ToDecimal() - - If Not ObjConta.AddPrePolizasDetalle(ObjFactura.CvePrePoliza, Not TipoMovimiento, Importe318, Importe318, 318, Referencia, Concepto, CveVenta:=ObjRNC.CveVenta, CveVentaAmortizacion:=ObjFactura.CveVenta, CveCliente:=ObjFactura.CveCliente, CveIE:=CveIE, ImporteME:=If(tipoCambio = 1, 0, importeMovimiento), Contabilizable:=False, CveSubProyecto:=CveSubProyectoContabilizar) Then - ErrorPrepoliza = True - End If - - If Not ObjConta.AddPrePolizasDetalle(ObjFactura.CvePrePoliza, Not TipoMovimiento, SubTotalCalculado, SubTotalCalculado, 150, Referencia, Concepto, CveVenta:=ObjRNC.CveVenta, CveVentaAmortizacion:=ObjFactura.CveVenta, CveCliente:=ObjFactura.CveCliente, CveIE:=CveIE, CveClasificacion:=ObjRNC.DtDetalle.MAX("CveClasificacion").ToEntero(), CveSubProyecto:=ObjRNC.CveSubProyecto, ImporteME:=If(tipoCambio = 1, 0, importeMovimiento), TipoCambio:=tipoCambio, Contabilizable:=False) Then - ErrorPrepoliza = True - Else - ViewState("SeGuardoPrePoliza") = True - End If - - Else - If ObjConta.AddPrePolizasDetalle(ObjFactura.CvePrePoliza, TipoMovimiento, importeMovimiento, importeMX, 277, Referencia, Concepto, CveVenta:=ObjRNC.CveVenta, CveVentaAmortizacion:=ObjFactura.CveVenta, CveCliente:=ObjFactura.CveCliente, CveIE:=CveIE, ImporteME:=If(tipoCambio = 1, 0, importeMovimiento), Contabilizable:=False, CveSubProyecto:=CveSubProyectoContabilizar) Then - If Not ObjConta.AddPrePolizasDetalle(ObjFactura.CvePrePoliza, Not TipoMovimiento, importeMovimiento, importeMX, 278, Referencia, Concepto, CveVenta:=ObjRNC.CveVenta, CveVentaAmortizacion:=ObjFactura.CveVenta, CveCliente:=ObjFactura.CveCliente, CveIE:=CveIE, ImporteME:=If(tipoCambio = 1, 0, importeMovimiento), Contabilizable:=False, CveSubProyecto:=CveSubProyectoContabilizar) Then - ErrorPrepoliza = True - End If - Else - ErrorPrepoliza = True - End If - End If - - importeMovimiento = 0 - End If - Next - End If - End If - If sumaAmorticaciones <> 0 Then - - Dim CveConceptoPagoNC As Integer = 251 - If ObjFactura.CveMoneda > 1 Then - CveConceptoPagoNC = 301 - End If - - If Not ObjConta.AddPrePolizasDetalle(ObjFactura.CvePrePoliza, True, sumaAmorticaciones, sumaAmorticaciones * tipoCambio, CveConceptoPagoNC, Referencia, Concepto, CveVenta:=ObjFactura.CveVenta, CveCliente:=ObjFactura.CveCliente, CveIE:=CveIE, ImporteME:=If(tipoCambio = 1, 0, importeMovimiento), CveSubProyecto:=CveSubProyectoContabilizar, Contabilizable:=Contabilizable) Then - ErrorPrepoliza = True - Else - ViewState("SeGuardoPrePoliza") = True - End If - End If - - End If - importeMovimiento = 0 - - Case 4 'Venta Clasificacion - If Not ObjFactura.TipoDocto.Contiene("Rem", "RNC", "Ant", "Egs", "Dev") Then - - Dim ConceptoContableAplicar As Integer = 4 - Dim CveVentaAplicar As Integer = ObjFactura.CveVenta - Dim CveVentaAmortizacionAplicar As Integer = -1 - - If ObjFactura.TipoDocto.Contiene("Egs") And DdlTipoComprobante.SelectedValue = "Ant" And CveDevolucion > 0 And NuevaFactura = 1 Then - ConceptoContableAplicar = 11 - CveVentaAplicar = CveDevolucion - CveVentaAmortizacionAplicar = ObjFactura.CveVenta - End If - - DT = TmpDTDetalle.FiltraParametros($"CvePS <> {CvePSAmortizacion}", "", {"CveClasificacion", "CveSubProyecto", "PorcentajeIVA", "CveActivoFijo"}) - - If DT.Rows.Count > 0 Then - 'Se agrega movimiento separado por la cuenta de ventas (ER) - For Each Row2 As DataRow In DT.Rows - importeMovimiento = (TmpDTDetalle.SUM("TotalImporte", String.Format("CveClasificacion = {0} And CveSubProyecto = {1} AND PorcentajeIVA = {2} AND ISNULL(CveActivoFijo,-1) = {3}", Row2("CveClasificacion"), Row2("CveSubProyecto"), Row2("PorcentajeIVA"), If(Row2("CveActivoFijo").ToString().ToEntero() > 0, Row2("CveActivoFijo").ToString().ToEntero(), -1))).ToString().ToDecimal()) * ValorMultiplicador - importeMX = importeMovimiento * tipoCambio * Multiplicador - FechaMovimiento = ObjFactura.FechaPago - Concepto = $"{ObjFactura.SerieFolio} {If(Row2("CveClasificacion").ToString().ToEntero() > 0, GlobalDTClasificaciones(UsuarioActual.CveEmpresa).FiltroPrimeroValor("Clasificacion", $"CveClasificacion = {Row2("CveClasificacion").ToString()}"), "")} - {If(Row2("CveSubProyecto").ToString().ToEntero() > 0, GlobalDTSubProyectos(-1, -1, UsuarioActual.CveEmpresa).FiltroPrimeroValor("SubProyecto", $"CveSubProyecto = {Row2("CveSubProyecto").ToString()}"), "Sin SubProyecto Asignado")}" - - If tipoCambio > 1 Then Concepto += $" TC:{tipoCambio} ${importeMovimiento.FormatoNumero(2)}" - 'Nota cuando es Nota de crédiot, debe de tomar el devoluciones y rebajas - - If importeMovimiento <> 0 Then - - If Row2("CveActivoFijo").ToString().ToEntero() > 0 Then - Dim DtAF As DataTable = TmpDT.FiltraParametros($"CveActivoFijo = {Row2("CveActivoFijo")}") - - If DtAF.Rows.Count > 0 Then - For Each RowAF As DataRow In DtAF.FiltraParametros("", "", {"CveActivoFijo", "Obs"}).Rows - Dim ImporteCosto As Decimal = DtAF.SUMD("AFValorInicial", $"CveActivoFijo = {RowAF("CveActivoFijo")}").RoundSQL(2) - Dim ImporteDepreciacion As Decimal = DtAF.SUMD("AFDepreciacion", $"CveActivoFijo = {RowAF("CveActivoFijo")}").RoundSQL(2) - Dim ImporteC4 As Decimal = importeMovimiento - Dim ImporteC4MX As Decimal = importeMX - - importeMovimiento = ImporteC4 - ImporteCosto + ImporteDepreciacion - importeMX = ImporteC4MX - ImporteCosto + ImporteDepreciacion - - If Not ObjConta.AddPrePolizasDetalle(ObjFactura.CvePrePoliza, TipoMovimiento, ImporteCosto, (ImporteCosto).RoundSQL, 49, Referencia, $"COSTO {RowAF("Obs")}", CveVenta:=ObjFactura.CveVenta, CveCliente:=ObjFactura.CveCliente, CveIE:=CveIE, ImporteME:=If(tipoCambio = 1, 0, importeMovimiento), TipoCambio:=tipoCambio, CveSubProyecto:=DdlSubProyectoDatos.SelectedValue.ToEntero(), CveActivoFijo:=Row2("CveActivoFijo").ToString().ToEntero(), Contabilizable:=SeContabiliza) Then - ErrorPrepoliza = True - End If - Next - End If - End If - If Not ObjConta.AddPrePolizasDetalle(ObjFactura.CvePrePoliza, TipoMovimiento, importeMovimiento, importeMX, ConceptoContableAplicar, Referencia, Concepto, CveVenta:=CveVentaAplicar, CveVentaAmortizacion:=CveVentaAmortizacionAplicar, CveCliente:=ObjFactura.CveCliente, CveIE:=CveIE, CveClasificacion:=Row2("CveClasificacion").ToString().ToEntero(), CveSubProyecto:=Row2("CveSubProyecto").ToString().ToEntero(), ImporteME:=If(tipoCambio = 1, 0, importeMovimiento), TipoCambio:=tipoCambio, PorcentajeImpuesto:=Row2("PorcentajeIVA").ToString().ToDecimal) Then - ErrorPrepoliza = True - Else - ViewState("SeGuardoPrePoliza") = True - End If - End If - Next - End If - End If - - importeMovimiento = 0 - Case 150 'Descuento sobre ventas - If (ObjFactura.TipoDocto.Contiene("Egs", "Dev") AndAlso Not EsNCAmortizacion) OrElse NCDescuento Then - - Dim ConceptoContableAplicar As Integer = 150 - Dim CveVentaAplicar As Integer = ObjFactura.CveVenta - Dim CveVentaAmortizacionAplicar As Integer = -1 - - DT = TmpDTDetalle.FiltraParametros($"CvePS <> {CvePSAmortizacion}", "", {"CveClasificacion", "CveSubProyecto", "PorcentajeIVA"}) - - If DT.Rows.Count > 0 Then - 'Se agrega movimiento separado por la cuenta de ventas (ER) - For Each Row2 As DataRow In DT.Rows - importeMovimiento = (TmpDTDetalle.SUM("TotalImporte", String.Format("CveClasificacion = {0} And CveSubProyecto = {1} AND PorcentajeIVA = {2}", Row2("CveClasificacion"), Row2("CveSubProyecto"), Row2("PorcentajeIVA"))).ToString().ToDecimal) * ValorMultiplicador - - importeMX = importeMovimiento * tipoCambio * Multiplicador - FechaMovimiento = ObjFactura.FechaPago - Concepto = $"{ObjFactura.SerieFolio} {If(Row2("CveClasificacion").ToString().ToEntero() > 0, GlobalDTClasificaciones(UsuarioActual.CveEmpresa).FiltroPrimeroValor("Clasificacion", $"CveClasificacion = {Row2("CveClasificacion").ToString()}"), "")} - {If(Row2("CveSubProyecto").ToString().ToEntero() > 0, GlobalDTSubProyectos(-1, -1, UsuarioActual.CveEmpresa).FiltroPrimeroValor("SubProyecto", $"CveSubProyecto = {Row2("CveSubProyecto").ToString()}"), "Sin SubProyecto Asignado")}" - - If tipoCambio > 1 Then Concepto += $" TC:{tipoCambio} ${importeMovimiento.FormatoNumero(2)}" - 'Nota cuando es Nota de crédiot, debe de tomar el devoluciones y rebajas - If importeMovimiento <> 0 Then - If Not ObjConta.AddPrePolizasDetalle(ObjFactura.CvePrePoliza, TipoMovimiento, importeMovimiento, importeMX, ConceptoContableAplicar, Referencia, Concepto, CveVenta:=CveVentaAplicar, CveVentaAmortizacion:=CveVentaAmortizacionAplicar, CveCliente:=ObjFactura.CveCliente, CveIE:=CveIE, CveClasificacion:=Row2("CveClasificacion").ToString().ToEntero(), CveSubProyecto:=Row2("CveSubProyecto").ToString().ToEntero(), ImporteME:=If(tipoCambio = 1, 0, importeMovimiento), TipoCambio:=tipoCambio, PorcentajeImpuesto:=Row2("PorcentajeIVA").ToString().ToDecimal) Then - ErrorPrepoliza = True - Else - ViewState("SeGuardoPrePoliza") = True - End If - End If - Next - End If - End If - - importeMovimiento = 0 - Case 103 'Descuento - - importeMovimiento = 0 - - - Case 8 'Ret IVA por Trasladar - If Not ObjFactura.TipoDocto.Contiene("Rem", "RNC") AndAlso ObjFactura.CveTipoRetencion <> 4 Then 'SI NO ES RETENCION DE IVA DE SERVICIOS - importeMovimiento = ObjFactura.RetIVA * ValorMultiplicador - importeMX = Math.Round(importeMovimiento, 2) * tipoCambio * Multiplicador - FechaMovimiento = ObjFactura.FechaPago - CveSubProyectoContabilizar = CveSubProyectoVenta - If tipoCambio > 1 Then Concepto += $" TC:{tipoCambio} ${importeMovimiento.FormatoNumero(2)}" - - 'SI LA FACTURA ESTA PAGADA EN SU TOTALIDAD DEBE REGRESAR EL IMPUESTO - If (ObjFacturaNC IsNot Nothing AndAlso ObjFacturaNC.PagadoBancos > 0) AndAlso ObjFactura.TipoDocto = "Dev" Then - TipoMovimiento = Not TipoMovimiento - ConceptoContable = 62 - importeMovimiento = importeMovimiento * -1 - importeMX = importeMX * -1 - End If - End If - Case 313 'Ret Iva Servicios - If Not ObjFactura.TipoDocto.Contiene("Rem", "RNC") AndAlso ObjFactura.CveTipoRetencion = 4 Then 'SI TIENE RETENCION DE IVA DE SERVICIOS - importeMovimiento = ObjFactura.RetIVA * ValorMultiplicador - importeMX = Math.Round(importeMovimiento, 2) * tipoCambio * Multiplicador - FechaMovimiento = ObjFactura.FechaPago - CveSubProyectoContabilizar = CveSubProyectoVenta - If tipoCambio > 1 Then Concepto += $" TC:{tipoCambio} ${importeMovimiento.FormatoNumero(2)}" - - 'SI LA FACTURA ESTA PAGADA EN SU TOTALIDAD DEBE REGRESAR EL IMPUESTO - If (ObjFacturaNC IsNot Nothing AndAlso ObjFacturaNC.PagadoBancos > 0) AndAlso ObjFactura.TipoDocto = "Dev" Then - TipoMovimiento = Not TipoMovimiento - ConceptoContable = 314 - importeMovimiento = importeMovimiento * -1 - importeMX = importeMX * -1 - End If - - End If - - Case 9 'Ret ISR por Trasladar - If Not ObjFactura.TipoDocto.Contiene("Rem", "RNC") Then - importeMovimiento = ObjFactura.RetISR * ValorMultiplicador - importeMX = Math.Round(importeMovimiento, 2) * tipoCambio * Multiplicador - FechaMovimiento = ObjFactura.FechaPago - CveSubProyectoContabilizar = CveSubProyectoVenta - - 'SI LA FACTURA ESTA PAGADA EN SU TOTALIDAD DEBE REGRESAR EL IMPUESTO - If (ObjFacturaNC IsNot Nothing AndAlso ObjFacturaNC.PagadoBancos > 0) AndAlso ObjFactura.TipoDocto = "Dev" Then - TipoMovimiento = Not TipoMovimiento - ConceptoContable = 63 - importeMovimiento = importeMovimiento * -1 - importeMX = importeMX * -1 - End If - - If tipoCambio > 1 Then Concepto += $" TC:{tipoCambio} ${importeMovimiento.FormatoNumero(2)}" - - End If - Case 13 'Iva por Trasladar - If Not ObjFactura.TipoDocto.Contiene("Rem", "RNC") And ObjFactura.IVA > 0 Then - importeMovimiento = ObjFactura.IVA * ValorMultiplicador - importeMX = Math.Round(importeMovimiento * tipoCambio * Multiplicador, 2) - FechaMovimiento = ObjFactura.FechaPago - PorcentajeImpuesto = TmpDT.MAX("PorcentajeIVA").ToDecimal - - 'SI LA FACTURA ESTA PAGADA EN SU TOTALIDAD DEBE REGRESAR EL IMPUESTO - If (ObjFacturaNC IsNot Nothing AndAlso ObjFacturaNC.PagadoBancos > 0) AndAlso ObjFactura.TipoDocto = "Dev" Then - TipoMovimiento = Not TipoMovimiento - ConceptoContable = 61 - importeMovimiento = importeMovimiento * -1 - importeMX = importeMX * -1 - End If - - CveSubProyectoContabilizar = CveSubProyectoVenta - If tipoCambio > 1 Then Concepto += $" TC:{tipoCambio} ${importeMovimiento.FormatoNumero(2)}" - End If - - - Case 38 'IEPS por Trasladar - If Not ObjFactura.TipoDocto.Contiene("Rem") Then - importeMovimiento = ObjFactura.IEPS * ValorMultiplicador - importeMX = Math.Round(importeMovimiento * tipoCambio * Multiplicador, 2) - FechaMovimiento = ObjFactura.Fecha - CveSubProyectoContabilizar = CveSubProyectoVenta - - 'SI LA FACTURA ESTA PAGADA EN SU TOTALIDAD DEBE REGRESAR EL IMPUESTO - If (ObjFacturaNC IsNot Nothing AndAlso ObjFacturaNC.PagadoBancos > 0) AndAlso ObjFactura.TipoDocto = "Dev" Then - TipoMovimiento = Not TipoMovimiento - ConceptoContable = 39 - importeMovimiento = importeMovimiento * -1 - importeMX = importeMX * -1 - CveIE = ObjFacturaNC.PagadoCveIE - End If - If tipoCambio > 1 Then Concepto += $" TC:{tipoCambio} ${importeMovimiento.FormatoNumero(2)}" - - End If - - - Case 30 'PAGO - BANCOS - 'If DtPagos IsNot Nothing AndAlso DtPagos.Rows.Count > 0 AndAlso ObjFactura.TipoDocto <> "Rem" Then - - ' For Each DrPago As DataRow In DtPagos.Rows - ' CveIEPago = -1 - - ' FolioIE = -1 - ' FolioIE = ObjBancos.GetNextFolio(DrPago("CveCuenta").ToString().ToEntero(), DrPago("CveTipoMovimiento").ToString().ToEntero()) - ' If Not FolioIE > 0 Then - ' ErrorPrepoliza = True - ' Exit For - ' End If - - ' 'If DrPago("CveTipoMovimiento").ToString().ToEntero() = 8 Then '13 - ' ' DrPago("Importe") = DrPago("Importe").ToString().ToDecimal - TxtCambio.Text.ToDecimal - ' 'End If - - ' CveIEPago = ObjBancos.AddBancos_IE(DrPago("CveCuenta").ToString().ToEntero(), DrPago("CveTipoMovimiento").ToString().ToEntero(), Fecha, FolioIE.ToString(), String.Format("PAGO: {0}", TxtFolio.Text), DrPago("Importe").ToString().ToDouble, DdlMoneda.SelectedValue.ToEntero(), tipoCambio, DrPago("Observaciones").ToString(), "", False, False, -1, ObjFactura.CvePrePoliza, "-1", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveCorte:=CveCorte, MesesSinIntereses:=DrPago("MesesSinIntereses").ToString().ToEntero(), Modulo:="Ventas/Guardar") - - ' If CveIEPago > 0 Then - ' importeMovimiento = DrPago("Importe").ToString().ToDecimal * ValorMultiplicador - ' importeMX = (importeMovimiento * tipoCambio * Multiplicador).RoundSQL - ' CveSubProyectoContabilizar = CveSubProyectoVenta - - ' 'MONEDA EXTRANJERA - ' If ObjFactura.CveMoneda > 1 Then - ' 'BANCOS - ' Concepto = ObjConta.ObtenerConceptoEmpresa(UsuarioActual.CveEmpresa, 30, NombreCliente, $"{ObjFactura.Serie}-{ObjFactura.Folio}", FolioIE.ToString()) - ' If Not ObjConta.AddPrePolizasDetalle(ObjFactura.CvePrePoliza, TipoMovimiento, importeMovimiento, importeMovimiento, ConceptoContable, Referencia, Concepto, CveVenta:=ObjFactura.CveVenta, CveCliente:=CveCliente, CveIE:=CveIEPago, ImporteME:=If(tipoCambio = 1, 0, importeMovimiento), CveSubProyecto:=CveSubProyectoContabilizar) Then - ' ErrorPrepoliza = True - ' Exit For - ' End If - - ' 'BANCOS COMPLEMENTARIA - ' If UsaComplementariaClientes Then - ' Dim ImporteComplementaria As Decimal = ((importeMovimiento * tipoCambio) - importeMovimiento).RoundSQL - - ' Concepto = ObjConta.ObtenerConceptoEmpresa(UsuarioActual.CveEmpresa, 204, NombreCliente, $"{ObjFactura.Serie}-{ObjFactura.Folio}", FolioIE.ToString()) - ' If Not ObjConta.AddPrePolizasDetalle(ObjFactura.CvePrePoliza, TipoMovimiento, importeMovimiento, ImporteComplementaria, 204, Referencia, Concepto, CveVenta:=ObjFactura.CveVenta, CveCliente:=ObjFactura.CveCliente, CveIE:=CveIEPago, ImporteME:=If(tipoCambio = 1, 0, importeMovimiento), TipoCambio:=tipoCambio, TipoCambioPago:=tipoCambio, CveSubProyecto:=CveSubProyectoContabilizar, Contabilizable:=SeContabiliza) Then - ' ErrorPrepoliza = True - ' End If - ' End If - - ' 'PAGO CLIENTES - ' Concepto = ObjConta.ObtenerConceptoEmpresa(UsuarioActual.CveEmpresa, 2, NombreCliente, $"{ObjFactura.Serie}-{ObjFactura.Folio}", FolioIE.ToString()) - ' If Not ObjConta.AddPrePolizasDetalle(ObjFactura.CvePrePoliza, Not TipoMovimiento, importeMovimiento, importeMovimiento, 2, Referencia, Concepto, CveVenta:=ObjFactura.CveVenta, CveCliente:=CveCliente, CveIE:=CveIEPago, ImporteME:=If(tipoCambio = 1, 0, importeMovimiento), CveSubProyecto:=CveSubProyectoContabilizar) Then - ' ErrorPrepoliza = True - ' Exit For - ' End If - - ' 'PAGO CLIENTES COMPLEMENTARIA - ' If UsaComplementariaClientes Then - ' Dim ImporteComplementaria As Decimal = ((importeMovimiento * tipoCambio) - importeMovimiento).RoundSQL - - ' Concepto = ObjConta.ObtenerConceptoEmpresa(UsuarioActual.CveEmpresa, 207, NombreCliente, $"{ObjFactura.Serie}-{ObjFactura.Folio}", FolioIE.ToString()) - ' If Not ObjConta.AddPrePolizasDetalle(ObjFactura.CvePrePoliza, Not TipoMovimiento, 0, ImporteComplementaria, 207, Referencia, Concepto, CveVenta:=ObjFactura.CveVenta, CveCliente:=ObjFactura.CveCliente, CveIE:=CveIEPago, ImporteME:=If(tipoCambio = 1, 0, importeMovimiento), TipoCambio:=tipoCambio, TipoCambioPago:=tipoCambio, CveSubProyecto:=CveSubProyectoContabilizar, Contabilizable:=SeContabiliza) Then - ' ErrorPrepoliza = True - ' End If - ' End If - - ' Else - ' 'BANCOS - ' Concepto = ObjConta.ObtenerConceptoEmpresa(UsuarioActual.CveEmpresa, 30, NombreCliente, $"{ObjFactura.Serie}-{ObjFactura.Folio}", FolioIE.ToString()) - ' If Not ObjConta.AddPrePolizasDetalle(ObjFactura.CvePrePoliza, TipoMovimiento, importeMovimiento, importeMX, ConceptoContable, Referencia, Concepto, CveVenta:=ObjFactura.CveVenta, CveCliente:=CveCliente, CveIE:=CveIEPago, ImporteME:=If(tipoCambio = 1, 0, importeMovimiento), CveSubProyecto:=CveSubProyectoContabilizar) Then - ' ErrorPrepoliza = True - ' Exit For - ' End If - - ' 'PAGO CLIENTES - ' Concepto = ObjConta.ObtenerConceptoEmpresa(UsuarioActual.CveEmpresa, 2, NombreCliente, $"{ObjFactura.Serie}-{ObjFactura.Folio}", FolioIE.ToString()) - ' If Not ObjConta.AddPrePolizasDetalle(ObjFactura.CvePrePoliza, Not TipoMovimiento, importeMovimiento, importeMX, 2, Referencia, Concepto, CveVenta:=ObjFactura.CveVenta, CveCliente:=CveCliente, CveIE:=CveIEPago, ImporteME:=If(tipoCambio = 1, 0, importeMovimiento), CveSubProyecto:=CveSubProyectoContabilizar) Then - ' ErrorPrepoliza = True - ' Exit For - ' End If - - ' End If - - ' If ObjFactura.IVA <> 0 Then - ' Dim PorcentajeImpuestoPago As Decimal = TmpDT.MAX("PorcentajeIVA").ToDecimal - - ' 'IVA X TRASLADAR - ' Concepto = ObjConta.ObtenerConceptoEmpresa(UsuarioActual.CveEmpresa, 13, NombreCliente, $"{ObjFactura.Serie}-{ObjFactura.Folio}", FolioIE.ToString()) - ' If Not ObjConta.AddPrePolizasDetalle(ObjFactura.CvePrePoliza, TipoMovimiento, (importeMovimiento * ObjFactura.IVA) / ObjFactura.Total, ((importeMovimiento * ObjFactura.IVA) / ObjFactura.Total) * tipoCambio * Multiplicador, 13, Referencia, Concepto, CveVenta:=ObjFactura.CveVenta, CveCliente:=CveCliente, CveIE:=CveIEPago, ImporteME:=If(tipoCambio = 1, 0, importeMovimiento), CveSubProyecto:=CveSubProyectoContabilizar, PorcentajeImpuesto:=PorcentajeImpuestoPago) Then - ' ErrorPrepoliza = True - ' Exit For - ' End If - - ' 'IVA PAGADO - ' Concepto = ObjConta.ObtenerConceptoEmpresa(UsuarioActual.CveEmpresa, 61, NombreCliente, $"{ObjFactura.Serie}-{ObjFactura.Folio}", FolioIE.ToString()) - ' If Not ObjConta.AddPrePolizasDetalle(ObjFactura.CvePrePoliza, Not TipoMovimiento, (importeMovimiento * ObjFactura.IVA) / ObjFactura.Total, ((importeMovimiento * ObjFactura.IVA) / ObjFactura.Total) * tipoCambio * Multiplicador, 61, Referencia, Concepto, CveVenta:=ObjFactura.CveVenta, CveCliente:=CveCliente, CveIE:=CveIEPago, ImporteME:=If(tipoCambio = 1, 0, importeMovimiento), CveSubProyecto:=CveSubProyectoContabilizar, PorcentajeImpuesto:=PorcentajeImpuestoPago) Then - ' ErrorPrepoliza = True - ' Exit For - ' End If - ' End If - - ' If ObjFactura.IEPS <> 0 Then - ' Dim PorcentajeImpuestoPago As Decimal = TmpDT.MAX("PorcentajeIEPS").ToDecimal - - ' 'IEPS X TRASLADAR - ' Concepto = ObjConta.ObtenerConceptoEmpresa(UsuarioActual.CveEmpresa, 38, NombreCliente, $"{ObjFactura.Serie}-{ObjFactura.Folio}", FolioIE.ToString()) - ' If ObjFactura.IEPS > 0 AndAlso Not ObjConta.AddPrePolizasDetalle(ObjFactura.CvePrePoliza, TipoMovimiento, (importeMovimiento * ObjFactura.IEPS) / ObjFactura.Total, ((importeMovimiento * ObjFactura.IEPS) / ObjFactura.Total) * tipoCambio * Multiplicador, 38, Referencia, Concepto, CveVenta:=ObjFactura.CveVenta, CveCliente:=CveCliente, CveIE:=CveIEPago, ImporteME:=If(tipoCambio = 1, 0, importeMovimiento), CveSubProyecto:=CveSubProyectoContabilizar, PorcentajeImpuesto:=PorcentajeImpuestoPago) Then - ' ErrorPrepoliza = True - ' Exit For - ' End If - - ' 'IEPS PAGADO - ' Concepto = ObjConta.ObtenerConceptoEmpresa(UsuarioActual.CveEmpresa, 39, NombreCliente, $"{ObjFactura.Serie}-{ObjFactura.Folio}", FolioIE.ToString()) - ' If ObjFactura.IEPS > 0 AndAlso Not ObjConta.AddPrePolizasDetalle(ObjFactura.CvePrePoliza, Not TipoMovimiento, (importeMovimiento * ObjFactura.IEPS) / ObjFactura.Total, ((importeMovimiento * ObjFactura.IEPS) / ObjFactura.Total) * tipoCambio * Multiplicador, 39, Referencia, Concepto, CveVenta:=ObjFactura.CveVenta, CveCliente:=CveCliente, CveIE:=CveIEPago, ImporteME:=If(tipoCambio = 1, 0, importeMovimiento), CveSubProyecto:=CveSubProyectoContabilizar, PorcentajeImpuesto:=PorcentajeImpuestoPago) Then - ' ErrorPrepoliza = True - ' Exit For - ' End If - ' End If - - ' If ObjFactura.RetIVA <> 0 AndAlso ObjFactura.CveTipoRetencion = 4 Then - ' Dim PorcentajeImpuestoPago As Decimal = TmpDT.MAX("PorcentajeRetIVA").ToDecimal - ' 'RETIVA X TRASLADAR - ' 'OBTENER CUENTAS - - ' Concepto = ObjConta.ObtenerConceptoEmpresa(UsuarioActual.CveEmpresa, 313, NombreCliente, $"{ObjFactura.Serie}-{ObjFactura.Folio}", FolioIE.ToString()) - ' If Not ObjConta.AddPrePolizasDetalle(ObjFactura.CvePrePoliza, Not TipoMovimiento, (importeMovimiento * ObjFactura.RetIVA) / ObjFactura.Total, ((importeMovimiento * ObjFactura.RetIVA) / ObjFactura.Total) * tipoCambio * Multiplicador, 313, Referencia, Concepto, CveVenta:=ObjFactura.CveVenta, CveCliente:=CveCliente, CveIE:=CveIEPago, ImporteME:=If(tipoCambio = 1, 0, importeMovimiento), CveSubProyecto:=CveSubProyectoContabilizar, PorcentajeImpuesto:=PorcentajeImpuestoPago) Then - ' ErrorPrepoliza = True - ' Exit For - ' End If - - ' Concepto = ObjConta.ObtenerConceptoEmpresa(UsuarioActual.CveEmpresa, 314, NombreCliente, $"{ObjFactura.Serie}-{ObjFactura.Folio}", FolioIE.ToString()) - ' If Not ObjConta.AddPrePolizasDetalle(ObjFactura.CvePrePoliza, TipoMovimiento, (importeMovimiento * ObjFactura.RetIVA) / ObjFactura.Total, ((importeMovimiento * ObjFactura.RetIVA) / ObjFactura.Total) * tipoCambio * Multiplicador, 314, Referencia, Concepto, CveVenta:=ObjFactura.CveVenta, CveCliente:=CveCliente, CveIE:=CveIEPago, ImporteME:=If(tipoCambio = 1, 0, importeMovimiento), CveSubProyecto:=CveSubProyectoContabilizar, PorcentajeImpuesto:=PorcentajeImpuestoPago) Then - ' ErrorPrepoliza = True - ' Exit For - ' End If - ' End If - ' Else - ' ErrorPrepoliza = True - ' Exit For - ' End If - ' Next - ' importeMovimiento = 0 - 'End If - importeMovimiento = 0 - End Select - - If (importeMovimiento <> 0 OrElse (importeMovimiento = 0 AndAlso ObjFactura.Total = 0 AndAlso ConceptoContable = 1)) And Not ErrorPrepoliza Then - - If Not ObjConta.AddPrePolizasDetalle(ObjFactura.CvePrePoliza, TipoMovimiento, importeMovimiento, importeMX, ConceptoContable, Referencia, Concepto, CveVenta:=ObjFactura.CveVenta, CveCliente:=ObjFactura.CveCliente, CveIE:=CveIE, ImporteME:=If(tipoCambio = 1, 0, importeMovimiento), CveSubProyecto:=CveSubProyectoContabilizar, TipoCambio:=tipoCambio, PorcentajeImpuesto:=PorcentajeImpuesto, Contabilizable:=SeContabiliza) Then - ErrorPrepoliza = True - Else - ViewState("SeGuardoPrePoliza") = True - End If - End If - - If ErrorPrepoliza Then - Exit For - End If - Next - - End If - - 'Si es Facturacion de una remision cancelamos, traspasamos saldos y agregamos evento a la bitacora - If RemisionesLista.Count > 0 AndAlso ObjFactura.TipoDocto.Contiene("Ing", "Ant") Then - - 'se verifica que el documento que se está generando sea "Ing", "Ant" - If Not ObjFactura.TipoDocto.Contiene("Ing", "Ant") Then - ErrorPrepoliza = True - ErrorList.Add("No se pueden facturar las remisiones, con ese tipo de comprobante seleccionado") - Else - For Each CveRemision As Integer In RemisionesLista - - If Not ObjConta.TraspasarSaldosRemision(CveRemision, ObjFactura.CvePrePoliza, ObjFactura.CveVenta) Then - ErrorPrepoliza = True - End If - - If CveRemision > 0 Then - If ObjVentas.GetVenta(CveRemision, UsuarioActual.CveEmpresa, VerificaAlmacen:=False) Then - Dim SerieFolioRem As String = ObjVentas.DtResultados.Rows(0)("SerieFolio").ToString() - 'Factura - If Not ObjEventos.AddEventoBitacora($"Venta facturada de Remisión: {SerieFolioRem}", "-1", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveVenta:=ObjFactura.CveVenta) Then - ErrorPrepoliza = True - End If - Else - ErrorPrepoliza = True - End If - Else - ErrorPrepoliza = True - End If - - 'Remision - If Not ObjEventos.AddEventoBitacora($"Remisión facturada en Venta: {ObjFactura.SerieFolio}", "-1", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveVenta:=CveRemision) Then - ErrorPrepoliza = True - End If - Next - End If - End If - - 'REGRESA SALDO A LAS REMISIONES QUE SE FACTURARON EN EL INGRESO QUE SE ESTA CANCELANDO - If ObjFactura.TipoDocto = "Ing" And ValorMultiplicador = -1 AndAlso NuevaFactura <> 1 AndAlso Not SeCancelaRemisionProceso Then ' se debe de excluir cuando es refacturación - If ObjVentas.GetRemisionesRelacionadas(ObjFactura.CveVenta, ObjFactura.TipoDocto) AndAlso ObjVentas.DtResultados.Rows.Count > 0 Then - For Each Dr As DataRow In ObjVentas.DtResultados.Rows - Dim Selecciono As Boolean = False - - If Not Selecciono Then - If Not ObjConta.TraspasarSaldosRemision(Dr("CveVenta").ToString().ToEntero(), ObjFactura.CvePrePoliza, ObjFactura.CveVenta, 1) Then - ErrorPrepoliza = True - End If - - 'Remision - If Not ObjEventos.AddEventoBitacora($"Facturación cancelada en: ", "-1", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveVenta:=Dr("CveVenta").ToString().ToEntero()) Then - ErrorPrepoliza = True - End If - End If - Next - End If - End If - - If NuevaFactura = 1 AndAlso TotalOriginal > TxtTotal.Text.ToDouble AndAlso ObjEventos IsNot Nothing Then - If Not ObjEventos.AddEventoBitacora($"Factura a menor precio de la factura origen.", "-1", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveVenta:=ObjFactura.CveVenta) Then - ErrorPrepoliza = True - Else - Alert("Factura a menor precio de la factura origen.", TipoMensaje.MsgAdvertencia) - End If - End If - - 'Simplificacion de PrePolizas - 'If ObjFactura.TipoDocto.Contiene("Egs", "Dev") OrElse SimplificarPrePoliza Then - ' If Not ObjConta.PrePolizaSimplificacion(ObjFactura.CvePrePoliza, UsuarioActual.CveEmpresa) Then - ' Alert("No se pudo simplificar los movimientos", TipoMensaje.MsgError) - ' End If - 'End If - - Dim ModalidadRefacturacion As Integer = UsuarioActual.Empresa.Funcionalidad(586).ToEntero() - - 'REFACTURACION CON PAGOS, DEBE CANCELAR SALDOS DEL DOCUMENTO ANTERIOR Y TRASPASAR PAGOS AL NUEVO - If ModalidadRefacturacion = 2 AndAlso ObjFactura.TipoDocto.Contiene("Ing", "Ant") AndAlso ObjFactura.NuevaFactura = 1 Then - If Not ObjConta.TraspasarSaldosPrePolizasRefacturacion(ObjFacturaNC.CveVenta, ObjFactura.CveVenta, ObjFactura.CvePrePoliza, CvePlantilaPoliza, UsuarioActual.CveEmpresa) Then - ErrorList.Add("Ocurrió un error al traspasos saldos en refacturación") - End If - Else - 'EN CASO DE SER REFACTURACION DE ANTICIPO SE ACTUALIZAN LAS VENTAS APLICADAS HACIA EL NUEVO - If NuevaFactura = 1 AndAlso CveDevolucion > 0 AndAlso ObjFactura.TipoDocto.Contiene("Ant") Then - If Not ObjVentas.TraspasaVentasAplicadasAnt(ObjFactura.CveVenta, CveDevolucion, UsuarioActual.CveEmpresa, ObjFactura.CvePrePoliza) Then - ErrorPrepoliza = True - End If - End If - End If - - If ObjConta.ValidacionesPrePoliza(ObjFactura.CvePrePoliza, UsuarioActual, Opcion:=2, AutoConta:=AutoConta) Then - If ObjConta.ValorPolizaDescuadre > 0 Then - If ObjConta.ValorPolizaDescuadre = 2 Then - ErrorPrepoliza = True - Alert(ObjConta.MensajePolizaDescuadre, TipoMensaje.MsgError) - End If - 'ErrorPrepoliza = True - GuardaLogAD($"Ventas/Ventas-ProcesoPrePolizas | Error:{ObjConta.MensajePolizaDescuadre} Diferencia:{ObjConta.ValorDiferencia} | CvePrePoliza:{ObjFactura.CvePrePoliza}", "LogPrePolizas") - - 'SIRVE PARA VER LA PREPOLIZA QUE SE VALIDA - 'If ObjConta.GetPrePolizasDetalle(ObjFactura.CvePrePoliza) Then - ' Dim DtTest = ObjConta.DtResultados - 'End If - End If - Else - ErrorPrepoliza = True - End If - - Return ErrorPrepoliza - Catch ex As Exception - GuardaLog("GuardaPreP." & ex.ToString()) - Return True - End Try - - End Function - - Private Function GuardarVentaImpuestosLocales(ObjVentas As ClsVentas, ObjConta As ClsContabilidad, Factura As Modelos.Factura, Optional ValorMultiplicador As Integer = 1) As Boolean - Dim ErrorPrepoliza As Boolean = False - - If TmpDTImpuestos IsNot Nothing AndAlso Factura.CvePrePoliza > 0 AndAlso Not DdlTipoComprobante.SelectedValue.Contiene("Cot", "Rem") Then - - Dim Importe As Decimal - Dim Concepto As String - Dim tipoCambio As Decimal - Dim CveSubProyectoContabilizar As Integer = DdlSubProyectoDatos.SelectedValue.ToEntero() - - For Each RowIL As DataRow In TmpDTImpuestos.Rows - If RowIL("TipoImpuesto").ToString().ToEntero() > 0 Then - - Importe = RowIL("Importe").ToString().ToDecimal * ValorMultiplicador - Concepto = ViewState("VentaFolio").ToString() - - If ObjFactura.CveMoneda = 2 AndAlso ObjFactura.TipoCambio > 0 Then - tipoCambio = Factura.TipoCambio - ElseIf ObjFactura.CveMoneda = 2 AndAlso ObjFactura.TipoCambio <= 1 Then - If UsuarioActual.CveEmpresa.Contiene(13, 83) Then - tipoCambio = GlobalTipoCambio(Factura.Fecha.AddDays(-1)).ToString().ToDecimal - Else - tipoCambio = GlobalTipoCambio(Factura.Fecha).ToString().ToDecimal - End If - Else - tipoCambio = 1 - End If - - Select Case RowIL("TipoImpuesto").ToString() - Case "1" - If Not ObjConta.AddPrePolizasDetalle(Factura.CvePrePoliza, False, Importe, Importe * tipoCambio, 27, Concepto, Concepto, CveVenta:=Factura.CveVenta, CveCliente:=Factura.CveCliente, CveSubProyecto:=CveSubProyectoContabilizar) Then - ErrorPrepoliza = True - End If - Case "3" - If Not ObjConta.AddPrePolizasDetalle(Factura.CvePrePoliza, False, Importe, Importe * tipoCambio, 116, Concepto, Concepto, CveVenta:=Factura.CveVenta, CveCliente:=Factura.CveCliente, CveSubProyecto:=CveSubProyectoContabilizar) Then - ErrorPrepoliza = True - End If - Case "4" - If Not ObjConta.AddPrePolizasDetalle(Factura.CvePrePoliza, False, Importe, Importe * tipoCambio, 58, Concepto, Concepto, CveVenta:=Factura.CveVenta, CveCliente:=Factura.CveCliente, CveSubProyecto:=CveSubProyectoContabilizar) Then - ErrorPrepoliza = True - End If - Case "5" - If Not ObjConta.AddPrePolizasDetalle(Factura.CvePrePoliza, True, Importe, Importe * tipoCambio, 27, Concepto, Concepto, CveVenta:=Factura.CveVenta, CveCliente:=Factura.CveCliente, CveSubProyecto:=CveSubProyectoContabilizar) Then - ErrorPrepoliza = True - End If - End Select - End If - Next - - End If - - Return ErrorPrepoliza - End Function - -#End Region - -#Region " VISTA PREVIA NEW " - Private Sub VistaPreviaNew() - - If Not CveCliente > 0 And Not CveEmpresaCRM > 0 Then - Alert("Es necesario seleccionar el cliente al cual se le va a facturar.", TipoMensaje.MsgAdvertencia, "AbrirVentana(""/Ventas/PopUpBuscarClientes.aspx?Opt=Fact"", 800, 547, ""N"", ""PopUpBuscar"")") - Exit Sub - End If - - CreaObjetosVenta(True) - - If ObjFactura Is Nothing Or (ObjFactura.Cliente Is Nothing And Not CveEmpresaCRM > 0) Then - Alert("Ocurrió un error al procesar los datos para la vista previa. Por favor rectifique y vuelva a intentar.", TipoMensaje.MsgError) - ObjFactura = Nothing - Exit Sub - End If - - Dim CartaPorte As Modelos.MSubReportData = Nothing - - If UsuarioActual.CveEmpresa = 13 Then - CartaPorte = New Modelos.MSubReportData() - CartaPorte.Parametros.Add(New ReportParameter($"TieneCartaPorte", "False")) - End If - - ImprimirbytesPDF(PdfFactura(ObjFactura, Guardar:=False, SubReportData:=CartaPorte), "Factura", "PDF") - - End Sub - -#End Region - -#Region "¡ P D F R E P O R T V I E W E R !" - Private Sub GeneraPDFFactura(EnviaCorreo As Boolean, Factura As Modelos.Factura, UsuarioActual As Usuario, strURLHOST As String, Optional CorreoCRM As String = "") - 'GUARDA PDF - Dim LocalSerieFolio As String = String.Empty - Dim LocalTipoDocto As String = String.Empty - - 'TIMBRADO NUEVO - Try - DescargarFactura(Factura.CveVenta, UsuarioActual.CveEmpresa, UsuarioActual.CveUsuario, Regenerar:=True, strURLHOST:=strURLHOST) - Catch ex As Exception - OnError("Ocurrió un error al generar el PDF", ex) - End Try - - Dim ErrorCorreo As Boolean = False - - 'If EnviaCorreo Then - ' If Factura IsNot Nothing Then - ' 'MANDA CORREO - ' If EnviaCorreo Then - ' LocalSerieFolio = Factura.SerieFolio - ' LocalTipoDocto = Factura.TipoDocto - - ' Dim ArchivoAdjunto As String = "" - ' Dim ArchivoXML As String = String.Format("{0}XML\{1}\{2}.xml", UsuarioActual.Empresa.Ruta, LocalTipoDocto, LocalSerieFolio) - ' Dim ArchivoPDF As String = String.Format("{0}PDF\{1}\{2}.pdf", UsuarioActual.Empresa.Ruta, LocalTipoDocto, LocalSerieFolio) - ' If Adjunto <> "" Then - ' ArchivoAdjunto = String.Format("{0}Ventas\{1}", UsuarioActual.Empresa.Ruta, Adjunto) - ' End If - - ' Try - ' Dim FIXML As New FileInfo(ArchivoXML) - ' Dim FIPDF As New FileInfo(ArchivoPDF) - ' If FIXML.Exists AndAlso FIPDF.Exists Then - ' MandaMails(UsuarioActual, CveVenta, Factura.TipoDocto, LocalSerieFolio, EnviaCorreo, ArchivoXML, ArchivoPDF, ArchivoAdjunto, CorreoCRM) - ' Else - ' ErrorCorreo = True - ' End If - ' Catch ex As Exception - ' ErrorCorreo = True - ' End Try - - ' End If - ' Else - ' ErrorCorreo = True - ' End If - - ' If ErrorCorreo Then - ' Dim ObjVentas As New ClsVentas - ' If EnviaCorreo Then - ' ObjVentas.UpdateVentaMail(3, CveVenta) - ' Else - ' ObjVentas.UpdateVentaMail(0, CveVenta) - ' End If - ' ObjVentas.Dispose() - ' End If - 'End If - - End Sub - Private Sub GeneraPDFCotizacion(EnviaCorreo As Boolean, Optional CorreoContactoCRM As String = "", Optional pdfCRM As Byte() = Nothing, - Optional SerieFolioCRM As String = "", Optional TipoDoctoCRM As String = "") - - Dim pdf As Byte() = Nothing - 'GUARDA PDF - Dim LocalSerieFolio As String = String.Empty - Dim LocalTipoDocto As String = String.Empty - - - - 'TIMBRADO NUEVO - - If CorreoContactoCRM.Trim.Length > 0 Then - pdf = pdfCRM - LocalSerieFolio = SerieFolioCRM - LocalTipoDocto = TipoDoctoCRM - Else - Try - If CveVenta > 0 Then - ObjFactura = New Modelos.Factura(UsuarioActual, CveVenta, UsuarioActual.CveEmpresa, EsCancelacion:=False) - End If - - pdf = PdfFactura(ObjFactura) - - LocalSerieFolio = ObjFactura.SerieFolio - LocalTipoDocto = ObjFactura.TipoDocto - - Catch ex As Exception - OnError("Ocurrió un error al generar el PDF", ex) - End Try - End If - - 'MANDA CORREO - If EnviaCorreo Then - Dim ArchivoAdjunto As String = "" - Dim ArchivoXML As String = "" - Dim ArchivoPDF As String = String.Format("{0}PDF\{1}\{2}.pdf", UsuarioActual.Empresa.Ruta, LocalTipoDocto, LocalSerieFolio) - - If Adjunto <> "" Then - ArchivoAdjunto = String.Format("{0}Ventas\{1}", UsuarioActual.Empresa.Ruta, Adjunto) - End If - - 'Try - ' ' BytesPdfCotizacion(CveVenta) - ' Dim Hilo As New System.Threading.Thread(Sub() MandaMails(UsuarioActual, CveVenta, DdlTipoComprobante.SelectedValue.ToString(), LocalSerieFolio, False, ArchivoXML, ArchivoPDF, ArchivoAdjunto, CorreoContactoCRM:=CorreoContactoCRM)) - ' Hilo.Start() - 'Catch ex As Exception - - ' OnError("Ocurrió error al mandar Mail", ex) - ' Dim ObjVentas As New ClsVentas - ' ObjVentas.UpdateVentaMail(0, CveVenta) - ' ObjVentas.Dispose() - - - 'End Try - End If - - End Sub - - -#End Region - - - - - - -#Region " VISTA PREVIA " - Protected Sub BtnVistaPrevia_Click(sender As Object, e As System.EventArgs) Handles BtnVistaPrevia.Click - VistaPreviaNew() - End Sub - -#End Region - - -#Region "D R O P - D O W N - L I S T" - Private Sub DdlPSIndexChange(CvePSParametro As Integer, Ddl As ADServerControl.Dropdownlost) - - If Not CveCliente > 0 And Not CveEmpresaCRM > 0 Then - Alert("Es necesario seleccionar el cliente al cual se le va a facturar.", TipoMensaje.MsgAdvertencia, "AbrirVentana(""/Ventas/PopUpBuscarClientes.aspx?Opt=Fact"", 800, 547, ""N"", ""PopUpBuscar"")") - Exit Sub - End If - - If CvePSParametro > 0 Then - Dim drPS As DataRow = GlobalDTPS(UsuarioActual.CveEmpresa, CvePS:=CvePSParametro).FiltroPrimero("") - - If drPS IsNot Nothing Then - 'HdnUnidadMedida.Value = PS.Rows(0)("CveUnidadMedida").ToString() - HdnPS.Value = drPS("PS").ToString() - HdnCodigoPS.Value = drPS("PSCodigo").ToString() - HdnTipoPS.Value = drPS("CveTipoPS").ToString() - HdnTipoInv.Value = drPS("Inv_CveMetodoInventario").ToString() - HdnAplicaIEPS.Value = drPS("AplicaIEPS").ToString() - HdnPorcentajeIEPS.Value = drPS("IEPSPorcentaje").ToString() - DdlUnidadMedida.Items.Clear() - If UsuarioActual.Empresa.UsaInventarios Then - DdlUnidadMedida.DataSource = GlobalDTProductosServiciosEquivalencias(CvePSParametro, -1, UsuarioActual.CveEmpresa) - Else - DdlUnidadMedida.DataSource = GlobalDTUnidadesMedida(UsuarioActual.CveEmpresa) - End If - DdlUnidadMedida.Items.Insert(0, New ListItem("Seleccione", "-1")) - DdlUnidadMedida.SelectedValue = "-1" - DdlUnidadMedida.DataBind() - DdlUnidadMedida.SelectedValueExist(drPS("CveUnidadMedida").ToString()) - - If drPS("CveTipoPS").ToString() = "1" Then 'Si es servicio - If UsuarioActual.Empresa.Funcionalidad(558).ToString() = "1" Then 'Si es Empresa llantera - TxtPrecio.Enabled = True - Else - 'TxtPrecio.Enabled = False - End If - Else - TxtPrecio.Enabled = True - End If - - Dim PSCodigoSAT As String = drPS("SATClavePS").ToString - - If UsuarioActual.TienePermisoProceso(68) AndAlso Not PSCodigoSAT.Contiene("84111506", "80141610") Then TxtPrecio.Enabled = False - - 'If TmpDT IsNot Nothing AndAlso TmpDT.Rows.Count = 0 AndAlso Not ChkEmitirComercioExterior.Checked Then - ' DdlMoneda.SelectedValueExist(drPS("CveMoneda").ToString()) - ' CambiaMoneda() - 'End If - - 'If TmpDT IsNot Nothing AndAlso TmpDT.Rows.Count = 0 AndAlso Not ChkEmitirComercioExterior.Checked Then - ' DdlMoneda.SelectedValueExist(drPS("CveMoneda").ToString()) - ' CambiaMoneda() - 'End If - - 'SUGIERE PRECIO - Dim PrecioSugerido As Decimal = 0 - Dim tPrecioSugerido As Decimal = 0 - tPrecioSugerido = drPS("Precio").ToString().ToDecimal - Dim ObjPrecioSugerido As Modelos.MPrecioSugerido = CalculaPrecioSugerido(CvePSParametro, drPS("CveClasificacion").ToString().ToEntero()) - - PrecioSugerido = ObjPrecioSugerido.PrecioSugerido - - - - If PrecioSugerido <= 0 Then PrecioSugerido = tPrecioSugerido - - TxtPrecio.Text = PrecioSugerido.ToString("#,###.####") ' que muestre hasta los 4 digitos si lo requiere - - - - - HdnIVAPS.Value = If(drPS("IVA").ToString() = "-1", ViewState("IVA"), drPS("IVA").ToString()).ToString() - HdnIVARetAPS.Value = drPS("RetIVA").ToString() - HdnCodigo.Value = drPS("Codigo").ToString() - If DdlClasificacion.SelectedIndex = 0 Then - If drPS("CveClasificacion").ToString() IsNot Nothing Then - DdlClasificacion.SelectedValueExist(drPS("CveClasificacion").ToString()) - Else - Alert("El Productos/Servicio no tiene asignada una Clasificación.", TipoMensaje.MsgInformacion) - End If - - End If - - End If - - ElseIf CvePSParametro = -2 Then - CargaPS(DdlClasificacion.SelectedValue.ToEntero(), Ddl) - End If - - UPPPS.Update() - UpPS.Update() - UpDVAddPS.Update() - - End Sub - - Private Function CalculaPrecioSugerido(CvePSParametro As Integer, CveClasificacion As Integer, Optional CvePrecioListaSugerido As Integer = -1) As Modelos.MPrecioSugerido - Dim Retorno As New Modelos.MPrecioSugerido - - Dim PrecioSugerido As Decimal = 0 - - If UsuarioActual.CveEmpresa.Contiene(1) Then - Dim ObjPS As New ClsProductosServicios - If ObjPS.GetPorcentajeProductos(CveCliente) Then - Dim PrecioAplicado As Decimal = ObjPS.DtResultados.FiltraParametros($"CvePS = {CvePSParametro}").FiltroPrimeroValor("PrecioA").ToDecimal - If PrecioAplicado > 0 Then - PrecioSugerido = PrecioAplicado - End If - End If - ObjPS.Dispose() - End If - - If UsuarioActual.Empresa.Funcionalidad(404).ToEntero > 0 Then 'cuando el valor es 10.- secuencia Cliente/Sucursal, 20 - sucursal/cliente - Dim TipoPrecioLista As Integer = UsuarioActual.Empresa.Funcionalidad(404).ToEntero - ' si es 10. primero el cliente - Dim CvePrecioListaPS As Integer - Dim PorcentajePrecio As Decimal = 0 - - If TipoPrecioLista = 10 Then - - CvePrecioListaPS = Me.CvePrecioListaCliente - If CvePrecioListaPS <= 0 Then - CvePrecioListaPS = GlobalDTSubProyectos(-1, CveSubProyecto:=DdlSubProyectoDatos.SelectedValue.ToEntero(), CveEmpresa:=UsuarioActual.CveEmpresa).FiltroPrimeroValor("CvePrecioLista", "").ToEntero() - - End If - Else - CvePrecioListaPS = GlobalDTSubProyectos(-1, CveSubProyecto:=DdlSubProyectoDatos.SelectedValue.ToEntero(), CveEmpresa:=UsuarioActual.CveEmpresa).FiltroPrimeroValor("CvePrecioLista", "").ToEntero() - If CvePrecioListaPS <= 0 Then - CvePrecioListaPS = Me.CvePrecioListaCliente 'GlobalDTCliente(UsuarioActual.CveEmpresa, Estatus:=-1, CveCliente:=CveCliente).FiltroPrimeroValor("CvePrecioLista").ToEntero() - End If - - If Me.CvePrecioListaCliente > 0 Then - Dim ArrayClientes As String() = UsuarioActual.Empresa.Funcionalidad(711).Split(",".ToCharArray()) - 'VERIFICA SI EL CLIENTE ACTUAL DEBE TENER PRIORIDAD SU LISTA DE PRECIOS - If ArrayClientes.Length > 0 AndAlso ArrayClientes.Count(Function(cliente) cliente.Trim() = Me.CveCliente.ToString()) > 0 Then - CvePrecioListaPS = Me.CvePrecioListaCliente - End If - End If - - End If - - - - If CvePrecioListaPS > 0 Then - Dim ObjPS As New ClsProductosServicios - If ObjPS.GetPSPreciosLista(UsuarioActual.CveEmpresa, CvePrecioListaPS, CvePS:=CvePSParametro) Then - PrecioSugerido = ObjPS.DtResultados.FiltroPrimeroValor("PrecioLista").ToDecimal - PorcentajePrecio = ObjPS.DtResultados.FiltroPrimeroValor("Porcentaje").ToDecimal - End If - ObjPS.Dispose() - End If - - If PrecioSugerido = 0 Then - Dim ObjInventarios As New ClsInventarios - Dim CostoPS As Decimal = ObjInventarios.GetCostoPS(CvePSParametro, TxtCantidad.Text.Trim.ToDecimal, -1, "-1", NowADS, DdlSubProyectoDatos.SelectedValue.ToEntero(), CveTipoAlmacen:=1) - 'si el costo es cero, puede ser que no halla movimientos del producto, en esa sucursal. y se volverá a sacar sin especificar sucursal - If CostoPS = 0 Then CostoPS = ObjInventarios.GetCostoPS(CvePSParametro, TxtCantidad.Text.Trim.ToDecimal, -1, "-1", NowADS, -1, CveTipoAlmacen:=1) - ObjInventarios.Dispose() - If CostoPS > 0 And PorcentajePrecio > 0 Then - PrecioSugerido = ((PorcentajePrecio / 100) + 1) * CostoPS - End If - End If - Me.CvePrecioLista = CvePrecioListaPS - Retorno.CvePrecioLista = CvePrecioListaPS - End If - - - If PrecioSugerido > 0 Then - Dim PrecioBaseCosto As Decimal = 0 - PrecioBaseCosto = GlobalDTClasificaciones(UsuarioActual.CveEmpresa, CveClasificacion:=CveClasificacion).FiltroPrimeroValor("PrecioBaseCosto", "").ToDecimal - - If PrecioBaseCosto > 0 Then - PrecioSugerido = PrecioSugerido * ((PrecioBaseCosto / 100) + 1) - End If - End If - - Retorno.PrecioSugerido = PrecioSugerido - - Return Retorno - End Function - Protected Sub DdlPS_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles DdlPS.selectedindexchange - DdlPSIndexChange(DdlPS.SelectedValue.ToEntero(), DdlPS) - End Sub - Protected Sub DdlClasificacion_SelectedIndexChanged(sender As Object, e As System.EventArgs) Handles DdlClasificacion.SelectedIndexChanged - CargaPS(DdlClasificacion.SelectedValue.ToEntero(), DdlPS) - UpPS.Update() - End Sub - 'Protected Sub DdlNCFactura_SelectedIndexChanged(sender As Object, e As System.EventArgs) Handles DdlNCFactura.SelectedIndexChanged - ' Dim objcompras As New ClsCompras - ' If objcompras.GetCompraDetallealmacen(0, DdlNCFactura.SelectedValue.ToEntero()) Then - ' GvInvNC.DataSource = objcompras.DtResultados - ' If objcompras.DtResultados.Rows.Count > 0 Then - ' Tab.ActiveTabIndex = 1 - ' Updatetabs.Update() - ' End If - ' Else - ' GvInvNC.DataSource = Nothing - ' End If - ' GvInvNC.DataBind() - ' UpINVNC.Update() - ' objcompras.Dispose() - 'End Sub - Protected Sub DdlTipoComprobante_SelectedIndexChanged(sender As Object, e As System.EventArgs) Handles DdlTipoComprobante.SelectedIndexChanged - CambiaTipoComprobante() - End Sub - Private Sub CambiaTipoComprobante() - CambiaTipoDocto() - - - End Sub - Private Sub CambiaTipoDocto() - - ConfiguraTipoDocto() - CargaFolios() - CargaEstatusFactura(DdlTipoComprobante.SelectedValue) - UpEstatus.Update() - - - - 'REINICIALIZA VALORES DE ENTREGA POR ADELANTADO - RequiereAlmacenDestino = False - - - If DdlTipoComprobante.SelectedValue = "Cot" And UsuarioActual.Empresa.Funcionalidad(135).Contiene("1", "2") Then - Alert("Se ocupa una autorización.", TipoMensaje.MsgAdvertencia) - TrDireccion.Visible = False - TrCiudad.Visible = False - TrRFC.Visible = False - 'RBLPago.Enabled = False - 'TxtFechaVencimientoCotizacion.Text = NowADS().ToString() - GvPS.Columns(5).Visible = True - - - UpnTools.Update() - 'tdTelefonoGen.Visible = False - 'tdTxtTelefonoGen.Visible = False - - - Else - If DdlTipoComprobante.SelectedValue = "Cot" Then - TrDireccion.Visible = False - TrCiudad.Visible = False - TrRFC.Visible = False - 'RBLPago.Enabled = False - 'RBLPago.SelectedValue = "2" - 'TxtFechaVencimientoCotizacion.Text = NowADS().ToString() - GvPS.Columns(5).Visible = True - - 'tdTelefonoGen.Visible = False - 'tdTxtTelefonoGen.Visible = False - - - Else - TrDireccion.Visible = True - TrCiudad.Visible = True - TrRFC.Visible = True - GvPS.Columns(5).Visible = False - - - LblMensaje.Visible = UsuarioActual.Empresa.Funcionalidad(152) <> "" And DdlTipoComprobante.SelectedValue.Contiene("Ing") - - If DdlTipoComprobante.SelectedValue.Contiene("Ing", "Egs", "Dev") Then - - 'ObtenerFechaVencimientoCER() - - If DdlTipoComprobante.SelectedValue.Contiene("Egs") Then - - 'se cargan las facturas timbradas - 'CargaFacturasRelacionar() - 'RegistraScript("$('#DivRelacionarFacturasNC').modal('show');") - End If - End If - - 'If DdlTipoComprobante.SelectedValue.Contiene("Rem", "PeC", "PA", "Pd2") Then - - ' 'ENTREGA POR ADELANTADO - ' If UsuarioActual.Empresa.Funcionalidad(145) = "1" And Not DdlTipoComprobante.SelectedValue.Contiene("PA") Then 'If UsuarioActual.CveEmpresa.Contiene(4, 72, 80, 119) Then - ' RequiereAlmacenDestino = True - - ' 'If DdlTipoComprobante.SelectedValue.Contiene("Ped", "PeC") Then - ' ' TrAlmacenAsignado.Visible = True - ' 'End If - - ' Dim CveAlmacenDestino As Integer = DtContratos.FiltroPrimeroValor("CveAlmacenDestino", $"CveContrato = {If(DdlContratosModal.Items.Count > 0, DdlContratosModal.SelectedValue, "0")}").ToEntero() - ' If CveAlmacenDestino > 0 Then - ' DdlAlmacenAsignado.Items.Clear() - ' DdlAlmacenAsignado.DataSource = GlobalDTAlmacenUsuarios(UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveTipoAlmacen:=-1).FiltraParametros($"CveSubProyecto = {DdlSubProyectoDatos.SelectedValue.ToEntero()} And CveTipoAlmacen In (4,10)") - ' DdlAlmacenAsignado.DataBind() - ' DdlAlmacenAsignado.Items.Insert(0, New ListItem(DtContratos.FiltroPrimeroValor("Almacen", $"CveContrato = {DdlContratosModal.SelectedValue}"), CveAlmacenDestino.ToString())) - ' DdlAlmacenAsignado.SelectedValue = CveAlmacenDestino.ToString() - ' Else - ' DdlAlmacenAsignado.Items.Clear() - ' DdlAlmacenAsignado.DataSource = GlobalDTAlmacenUsuarios(UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveTipoAlmacen:=-1).FiltraParametros($"CveSubProyecto = {DdlSubProyectoDatos.SelectedValue.ToEntero()} AND CveTipoAlmacen IN (10)") - ' DdlAlmacenAsignado.DataBind() - ' End If - - ' Dim CveAlmacenOrigen As Integer = DtContratos.FiltroPrimeroValor("CveAlmacenOrigen", $"CveContrato = {If(DdlContratosModal.Items.Count > 0, DdlContratosModal.SelectedValue, "0")}").ToEntero() - - ' If CveAlmacenOrigen > 0 Then - ' DdlAlmacenOrigen.Items.Clear() - ' DdlAlmacenOrigen.DataSource = GlobalDTAlmacen(UsuarioActual.CveEmpresa, CveTipoAlmacen:=-1, CveAlmacen:=CveAlmacenOrigen) '.FiltraParametros($"CveSubProyecto = {DdlSubProyectoDatos.SelectedValue.ToEntero()}") - ' DdlAlmacenOrigen.DataBind() - ' DdlAlmacenOrigen.SelectedValueExist(CveAlmacenOrigen.ToString()) - ' End If - - ' UpParametros.Update() - ' Else - ' RequiereAlmacenDestino = False - ' TrAlmacenAsignado.Visible = False - ' TrAlmacenOrigen.Visible = False - ' End If - - ' 'ENVIO DE FACTURA - - ' ChkEnviarFactura.Checked = False - ' ChkEnviarFactura.Visible = True - ' LblEnviarMail.Visible = True - - ' If CveVenta > 0 AndAlso EnviarCorreoCliente Then ChkEnviarFactura.Checked = EnviarCorreoCliente - 'End If - - If DdlTipoComprobante.SelectedValue.Contiene("Ing", "Rem", "PA", "Pd2") AndAlso (ReceptorRFC = "XAXX010101000" Or LblRFC.Text = "XAXX010101000") Then - TrDireccion.Visible = False - TrCiudad.Visible = False - TrRFC.Visible = False - 'tdTelefonoGen.Visible = True - 'tdTxtTelefonoGen.Visible = True - Else - 'TxtAtencionA.Text = "" - 'TxtTelefonoGenerico.Text = "" - End If - End If - - - End If - - If DdlTipoComprobante.SelectedValue.Contiene("Ing") Then - ImgAntiPend.Visible = True - Else - ImgAntiPend.Visible = False - End If - - - - - 'VALIDA ESTATUS CLIENTE - SOLO SE PUEDE USAR EL CLIENTE PARA COTIZAR EN CASO DE ESTAR INACTIVO - If EsCreaApartirDe OrElse ModalidadEdicion OrElse CveVenta <= 0 Then - If DdlTipoComprobante.SelectedValue.Contiene("Cot", "DPe") Or TipoContrato >= 0 Then 'SI VIENE DE PEDIDO DE AF DESDE CONTRATO NO BLOQUEA CUANDO EL CLIENTE ESTA INACTIVO - BtnEmitirImprimir.Visible = True - TrVistaPrevia.Visible = True - Else - If LblCliente.Text <> "Cliente" And Not EstatusCliente Then - Alert("El Cliente seleccionado no esta activo", TipoMensaje.MsgAdvertencia) - End If - If Not CveEmpresaCRM > 0 Then - BtnEmitirImprimir.Visible = EstatusCliente - TrVistaPrevia.Visible = EstatusCliente - Else - BtnEmitirImprimir.Visible = True - TrVistaPrevia.Visible = True - End If - - End If - End If - - If DdlTipoComprobante.SelectedValue = "Ing" Then - ImgAntiPend.Visible = True - End If - - - - 'TrAtencionA.Visible = True - 'tdVigencia.Visible = DdlTipoComprobante.SelectedValue.Contiene("Cot") - 'tdFechaVigencia.Visible = DdlTipoComprobante.SelectedValue.Contiene("Cot") - - - - Updatetabs.Update() - UPCondicionesPago.Update() - UpCliente.Update() - UpPS.Update() - UPObservaciones.Update() - End Sub - Protected Sub DdlSucursalCliente_SelectedIndexChanged(sender As Object, e As EventArgs) Handles DdlSucursalCliente.SelectedIndexChanged - CargaClienteSucursal(DdlSucursalCliente.SelectedValue.ToEntero()) - - 'RECARGA LAS RESTRICCIONES DE CREDITO SI SE CAMBIO LA SUCURSAL DEL CLIENTE - If DdlSucursalCliente.SelectedValue.ToEntero() > 0 Then - CargaRestriccionesCreditoCliente(Alertas:=True, CveVenta:=Me.CveVenta) - End If - - End Sub - Protected Sub DdlCCEdit_SelectedIndexChanged(sender As Object, e As System.EventArgs) - Dim gvr As GridViewRow = DirectCast(DirectCast(sender, DropDownList).BindingContainer, GridViewRow) - Dim CveProyecto As String = DirectCast(sender, DropDownList).SelectedValue - - gvr.FCDropDownList("DDlSubProyecto").Items.Clear() - gvr.FCDropDownList("DDlSubProyecto").DataSource = GlobalDTSubProyectos(CveProyecto.ToEntero(), CveEmpresa:=UsuarioActual.CveEmpresa) - gvr.FCDropDownList("DDlSubProyecto").DataBind() - gvr.FCDropDownList("DDlSubProyecto").Items.Insert(0, New ListItem("Sin SubProyecto Asignado", "-1")) - - End Sub - Protected Sub DdlClasificacion_SelectedIndexChanged1(sender As Object, e As EventArgs) - Dim gvr As GridViewRow = DirectCast(DirectCast(sender, DropDownList).BindingContainer, GridViewRow) - CargaPS(gvr.FCDropDownList("DdlClasificacion").SelectedValue.ToEntero(), gvr.FCDropDownLost("DdlPS")) - End Sub - - 'Protected Sub DdlProyecto_SelectedIndexChanged(sender As Object, e As System.EventArgs) Handles DdlProyecto.SelectedIndexChanged - ' CargaSubProyecto(FiltraPorProyecto:=True) - 'End Sub -#End Region - -#Region " SUCURSAL FACTURACION " - Private Sub DdlSubProyectoDatos_SelectedIndexChanged(sender As Object, e As EventArgs) Handles DdlSubProyectoDatos.SelectedIndexChanged - CambiaSucursalGeneral() - End Sub - Private Sub CambiaSucursalGeneral(Optional RecargarPartidas As Boolean = True) - Dim ObjSubProyectos As New ClsSubProyectos - 'Dim ObjSucursal As New ClsSucursales - If ObjSubProyectos.GetSubProyectos() Then - DTSucursal = ObjSubProyectos.DtResultados.FiltraParametros(String.Format("CveSubProyecto = {0}", DdlSubProyectoDatos.SelectedValue.ToEntero())) - 'Dim drc As DataRow - 'drc = DTSucursal(0) - - 'DdlSubProyecto.Items.Clear() - 'DdlSubProyecto.DataSource = DTSucursal - ''DdlSubProyecto.Items.Insert(0, New ListItem("Seleccione", "-1")) - ''DdlSubProyecto.SelectedValue = "-1" - 'DdlSubProyecto.DataBind() - 'DdlSubProyecto.SelectedValueExist(DdlSubProyectoDatos.SelectedValue) - 'CambiaSucursal(RecargarPartidas) - - - - 'If ObjSucursal.GetSucursales(UsuarioActual.CveEmpresa) Then - ' DTSucursal = ObjSucursal.DtResultados.FiltraParametros(String.Format("CveSucursal = {0}", drc("CveSucursal").ToString().ToEntero())) - ' Dim dre As DataRow - ' dre = DTSucursal(0) - ' DdlSucursal.SelectedValue = dre("CveSucursal").ToString() - ' CambiaSucursal() - 'End If - End If - ObjSubProyectos.Dispose() - - - HabilitarRemisionesPublicoGeneral() - - 'UpDetalle.Update() - 'UpEmitirTransitorio.Update() - End Sub - Private Sub CambiaSucursal(Optional RecargarPartidas As Boolean = True) - CargaFormatoSucursal() - CargaFolios() - - 'CargarAlmacenes() - - If RecargarPartidas Then - RecargaSucursalPartidas() - End If - - DdlPS.Attributes.Remove("data-cvesubproyecto") - DdlPS.Attributes.Add("data-cvesubproyecto", DdlSubProyectoDatos.SelectedValue) - - UpPS.Update() - End Sub - Private Sub RecargaSucursalPartidas() - - Dim CveSubProyecto As Integer = DdlSubProyectoDatos.SelectedValue.ToEntero() - Dim SubProyecto As String = "" - If CveSubProyecto > 0 Then - SubProyecto = DdlSubProyectoDatos.SelectedItem.Text - End If - - If TmpDT IsNot Nothing AndAlso TmpDT.Rows.Count > 0 Then - For Each Row As DataRow In TmpDT.Rows - Row("CveSubProyecto") = CveSubProyecto - Row("SubProyecto") = SubProyecto - Next - End If - - GvPS.DataSource = TmpDT - DtInv = TmpDT.Copy.FiltraParametros("CveTipoPS = 2") - GvPS.DataBind() - UpPS.Update() - End Sub - Private Sub CargaFolios(Optional FacturarDocumentoNuevo As Boolean = False) - - If DdlSubProyectoDatos.SelectedValue.ToEntero() <= 0 Then - Alert("No se tienen asignadas sucursales", TipoMensaje.MsgError) - Exit Sub - End If - - Dim ObjFolios As New ClsGralFolios() - Dim TipoDoctoConsulta As String = "Ing" ' If(DdlTipoComprobante.SelectedValue = "Ant", "Ing", If(DdlTipoComprobante.SelectedValue = "PA", "Rem", DdlTipoComprobante.SelectedValue)) - - 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 - - ViewState("CveFolio") = DT.Rows(0)("CveFolio").ToString().ToEntero() - ViewState("FolioActual") = DT.Rows(0)("FActual").ToString() - ViewState("Serie") = DT.Rows(0)("Serie").ToString() - UpFacturar.Update() - Else - - 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 - - BtnEmitirImprimir.Visible = False - UpFacturar.Update() - End If - DT.Dispose() - End If - ObjFolios.Dispose() - 'End If - - End Sub - Private Sub CargaFormatoSucursal(Optional RecalcularIVA As Boolean = True) - Dim dr As DataRow = GlobalDTSubProyectos(-1, CveEmpresa:=UsuarioActual.CveEmpresa).FiltroPrimero(String.Format("CveSubProyecto = {0}", If(DdlSubProyectoDatos.SelectedValue = "", "-1", DdlSubProyectoDatos.SelectedValue))) - If dr IsNot Nothing Then - ViewState("SucCalle") = dr("Calle") - ViewState("SucNoExt") = dr("NoExt") - ViewState("SucNoInt") = dr("NoInt") - ViewState("SucColonia") = dr("Colonia") - ViewState("SucLocalidad") = dr("Localidad") - ViewState("SucMunicipio") = dr("Municipio") - ViewState("SucEstado") = dr("Estado") - ViewState("SucPais") = dr("Pais") - ViewState("SucCP") = dr("CP") - ViewState("FormatoFactura") = dr("FormatoFactura") - ViewState("IVA") = dr("IVA") - DdlIVA.Visible = False - Select Case ViewState("IVA").ToString().ToDouble - Case 0 - DdlIVA.SelectedValue = "1" - PorcentajeIVA = ViewState("IVA").ToString().ToDecimal - Case 0.08 - DdlIVA.SelectedValue = If(EsCreaApartirDe, $"{(TmpDT.MAX("PorcentajeIVA").ToDecimal() + 1).RoundSQL(2).ToString()}", "1.08") - PorcentajeIVA = If(EsCreaApartirDe, TmpDT.MAX("PorcentajeIVA").ToDecimal, ViewState("IVA").ToString().ToDecimal).RoundSQL(2) - DdlIVA.Visible = If(Not CveVenta > 0 Or EsCreaApartirDe Or CveDevolucion > 0, True, False) - Case 0.16 - DdlIVA.SelectedValue = "1.16" - PorcentajeIVA = ViewState("IVA").ToString().ToDecimal - End Select - 'SI ES COTIZACION HABILITAR EL DDL DE IVA - If CveVenta <= 0 AndAlso DdlTipoComprobante.SelectedValue = "Cot" Then - DdlIVA.Visible = True - End If - If RecalcularIVA AndAlso TmpDT IsNot Nothing AndAlso TmpDT.Rows.Count > 0 AndAlso (Not CveVenta > 0 Or EsCreaApartirDe Or CveDevolucion > 0) Then RecalculaIVA() - 'ViewState("SubProyectoPorcentajeIVA") = dr("IVA") - ViewState("TipoFormato") = dr("TipoFormato") - - - - Dim CveSubProyecto As Integer = GetSubProyectoSucursal() - If CveSubProyecto > 0 Then CargaSubProyecto(CveSubProyecto) - - - TipoVentaSucursal = dr("TipoVenta").ToString().ToEntero() - - - End If - - UpFacturar.Update() - UpPS.Update() - - UpParametros.Update() - End Sub - -#End Region - -#Region " AGREGAR PS " - Protected Sub LbAgregar_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles LbAgregar.Click - AgregarPS() - End Sub - Private Function ValidaAgregarPS(CvePS As Integer, CveUM As Integer, PU As Double, CveTipoPS As Integer) As Boolean 'NO TOCAR - IPP - - 'VALIDA PARAMETROS - If CvePS <= 0 Or CveUM <= 0 Then - Alert("Es necesario seleccionar el Producto o Servicio a facturar.", TipoMensaje.MsgAdvertencia) - Return False - End If - - If HdnPS.Value = "" Or HdnPS.Value = "-1" Then - Alert("Es necesario seleccionar el Producto o Servicio a facturar.", TipoMensaje.MsgAdvertencia) - Return False - End If - - 'SI USA CONTABILIDAD LA CLASIFICACION ES OBLIGATORIA - If DdlClasificacion.SelectedValue.ToEntero() <= 0 AndAlso UsuarioActual.Empresa.UsaContabilidad Then - Alert("La Clasificación es obligatoria, favor de seleccionarla", TipoMensaje.MsgAdvertencia) - Return False - End If - - 'SUBPROYECTO OBLIGATORIO - If DdlSubProyectoDatos.SelectedValue.ToEntero() <= 0 AndAlso UsuarioActual.Empresa.Funcionalidad(120) = "1" Then - Alert("El Subproyecto es obligatorio, favor de seleccionarlo", TipoMensaje.MsgAdvertencia) - Return False - End If - - If CveCliente <= 0 And Not CveEmpresaCRM > 0 Then - Alert("Es necesario seleccionar el cliente al cual se le va a facturar.", TipoMensaje.MsgAdvertencia, "AbrirVentana('/Ventas/PopUpBuscarClientes.aspx?Opt=Fact', 800, 547, 'N', 'PopUpBuscar')") - Return False - End If - - If PU <= 0 Then - Alert("No se puede vender a un importe de cero", TipoMensaje.MsgAdvertencia) - Return False - End If - - 'VALIDA PROMOCIONES - Dim ObjVentas As New ClsVentas - If ObjVentas.GetPromocionesPS(-1, NowADS, DdlSubProyectoDatos.SelectedValue.ToEntero(), CveCliente, -1, 1, UsuarioActual.CveEmpresa) Then - DtPromociones = ObjVentas.DtResultados - End If - ObjVentas.Dispose() - - 'VALIDA PRECIO CERO (0) - 'If UsuarioActual.Empresa.Funcionalidad(139).ToString().ToEntero() > 0 And PU = 0 And DtPromociones.FiltroPrimeroValor("PUPromocion", $"CvePS = {CvePS}").ToDecimal > 0 Then - ' Alert($"El producto {HdnPS.Value}. No se puede vender a un importe de cero ($0)", TipoMensaje.MsgAdvertencia) - ' Return False - 'End If - - 'SI NO TIENE LA FUNCIONALIDAD VALIDARA LAS MONEDAS - If UsuarioActual.Empresa.Funcionalidad(524) <> "" Then - If TmpDT IsNot Nothing AndAlso TmpDT.Rows.Count >= 1 Then - Dim DrPS As DataRow = GlobalDTPS(UsuarioActual.CveEmpresa, CvePS:=CvePS).Rows(0) - If DrPS IsNot Nothing Then - If DrPS("CveMoneda").ToString().ToEntero() <> DdlMoneda.SelectedValue.ToEntero() Then - Alert("No puede agregar un producto de diferente moneda a la ya seleccionada", TipoMensaje.MsgAdvertencia) - Return False - End If - End If - End If - End If - - ' NO VALIDA EXISTENCIAS NI COSTO - PERMISO PARA NO VALIDAR - If Not UsuarioActual.TienePermisoProceso(169) Then - 'SOLO VALIDA EXISTENCIAS Y COSTO: SI USA INVENTARIOS, SOLO PRODUCTOS TIPO PRODUCTO, SOLO REMISIONES E INGRESOS - If UsuarioActual.Empresa.UsaInventarios AndAlso CveTipoPS = 2 AndAlso (DdlTipoComprobante.SelectedValue.Contiene("Rem", "Ing", "PA") Or (DdlTipoComprobante.SelectedValue.Contiene("Cot") And UsuarioActual.CveEmpresa.Contiene(119))) Then - Dim ObjInventarios As New ClsInventarios - Dim Existencia As Decimal = ObjInventarios.GetExistenciasPS(CvePS, CveUM, UsuarioActual.CveEmpresa, -1, FechaMovto:=DateTime.Today.AddDays(1).ToString("yyyy/MM/dd HH:mm"), CveSubProyecto:=DdlSubProyectoDatos.SelectedValue.ToEntero(), CveVendedor:=-1, CveCliente:=If(UsuarioActual.Empresa.Funcionalidad(146) = "1", -1, CveCliente), ExcluyeAdelantado:=1, PendientePorSurtir:=1, RestringirAlmacenes:=1, ExcluyeApartados:=-1) - Dim Costo As Decimal = ObjInventarios.GetCostoPS(CvePS, TxtCantidad.Text.Trim.ToDecimal, -1, "-1", NowADS, DdlSubProyectoDatos.SelectedValue.ToEntero(), CveTipoAlmacen:=1) - - 'si el costo es cero, puede ser que no halla movimientos del producto, en esa sucursal. y se volverá a sacar sin especificar sucursal - If Costo <= 0 Then Costo = ObjInventarios.GetCostoPS(CvePS, TxtCantidad.Text.Trim.ToDecimal, -1, "-1", NowADS, -1, CveTipoAlmacen:=1) - - ObjInventarios.Dispose() - Dim PrecioMinimo As Decimal = 0 - 'RMF. condicion temporal, para reubicación, precio mínimo - If UsuarioActual.CveEmpresa = 119 Then - 'Dim CvePrecioLista As Integer = 38 - Dim objPS As New ClsProductosServicios - If objPS.GetPSSucursalesALL(CvePS, UsuarioActual.CveEmpresa, CveSubProyecto:=DdlSubProyectoDatos.SelectedValue.ToEntero()) Then - PrecioMinimo = objPS.DtResultados.FiltroPrimeroValor("PrecioMinimo", "").ToDecimal - 'If PrecioMinimo > 0 Then - ' Costo = PrecioMinimo - 'End If - End If - objPS.Dispose() - - End If - - If DdlTipoComprobante.SelectedValue <> "Cot" Then - 'VALIDA EXISTENCIA - If UsuarioActual.CveEmpresa.Contiene({72, 80, 119, 153, 140}) Then - If CveVenta <= 0 OrElse Me.EsCreaApartirDe Then - If Existencia - TmpDT.SUM("Cantidad", $"CvePS = {CvePS} AND (EntregaDirecta IS NULL OR EntregaDirecta < 1)") < TxtCantidad.Text.ToDouble Then - Alert("No cuenta con la cantidad suficiente en inventario. Cuenta con " + Existencia.FormatoNumero(2) + ".", TipoMensaje.MsgAdvertencia) - Return False - End If - Else - If DdlTipoComprobante.SelectedValue = "Rem" Then - Dim CantidadVenta As Double = 0 - Using ObjVentasE As New ClsVentas - If ObjVentasE.GetVentaDetalle(CveVenta) Then - CantidadVenta = ObjVentasE.DtResultados.SUM("Cantidad", $"CvePS = {CvePS}") - End If - End Using - - 'SUMA LO YA RESTADO EN PENDIENTE POR SURTIR QUE PERTENESCA A LA VENTA. - 'PARA QUE NO RESTE LA EXISTENCIA 2 VECES Y PUEDAS COMPARAR LO REAL - If (Existencia + CantidadVenta) - TmpDT.SUM("Cantidad", $"CvePS = {CvePS} And (EntregaDirecta Is NULL Or EntregaDirecta < 1)") < TxtCantidad.Text.ToDouble Then - Alert("No cuenta con la cantidad suficiente en inventario. Cuenta con " + Existencia.FormatoNumero(2) + ".", TipoMensaje.MsgAdvertencia) - Return False - End If - End If - End If - - End If - End If - - 'VALIDA COSTOS - If Not CveContrato > 0 Then - - 'BANDERAS PARA VALIDACIONES - Dim EsValido As Boolean = False - Dim EsValidoMayor As Boolean = False - Dim CostoMenor As Decimal = 0.0D - Dim CostoMayor As Decimal = 0.0D - - 'PRECIO MINIMO - If UsuarioActual.Empresa.Funcionalidad(129).ToEntero() > 0 AndAlso UsuarioActual.CveUsuario <> 1560 Then - '' NOTA. si tiene preciominimo, debe de validarlos e ignorar el costo, pero se debe de considerar el TC, para el costo - If PrecioMinimo > 0 Then - 'SI EL PRECIO ES MAYOR AL COSTO, SI PASA - If PU >= PrecioMinimo Then ' aqui se comparar los importes directos, sin el TC - EsValido = True - End If - Else - CostoMenor = Costo + ((UsuarioActual.Empresa.Funcionalidad(129).ToDecimal / 100) * Costo) - 'SI EL PRECIO ES MAYOR AL COSTO, SI PASA - If PU * If(DdlMoneda.SelectedValue.ToEntero() = 1, 1, TxtTipoCambio.Text.ToDecimal) >= CostoMenor Then - EsValido = True - End If - End If - Else - EsValido = True - End If - - 'PRECIO MAXIMO - If UsuarioActual.Empresa.Funcionalidad(133).ToEntero() > 0 AndAlso UsuarioActual.CveUsuario <> 1560 Then - CostoMayor = Costo + ((UsuarioActual.Empresa.Funcionalidad(133).ToDecimal / 100) * Costo) - 'SI EL PRECIO ES MAYOR AL COSTO MAXIMO, SI PASA - If PU * If(DdlMoneda.SelectedValue.ToEntero() = 1, 1, TxtTipoCambio.Text.ToDecimal) <= CostoMayor Then - EsValidoMayor = True - End If - Else - EsValidoMayor = True - End If - - 'VALIDA PROMOCION: SI TIENE PROMOCION Y EL PRECIO ES MENOR AL PRECIO DE PROMOCION, NO PASA | SI YA CUMPLE NO VUELVE A VALIDAR - 'SIRVE PARA VALIDAR PRECIOS DEBAJO DEL PRECIO MINIMO PERMITIDO - If Not EsValido Then - If DtPromociones.FiltraParametros($"CvePS = {CvePS}").Rows.Count > 0 Then - If PU * If(DdlMoneda.SelectedValue.ToEntero() = 1, 1, TxtTipoCambio.Text.ToDecimal) >= DtPromociones.FiltroPrimeroValor("PUPromocion", $"CvePS = {CvePS}").ToDecimal Then - EsValido = True - End If - Else - Dim DrPS As DataRow = GlobalDTPSSimplificado(UsuarioActual.CveEmpresa, CvePS:=CvePS).FiltroPrimero("") - 'valida sino tiene promocion la clasificacion - If DrPS IsNot Nothing Then - If DtPromociones.FiltraParametros(String.Format("CveClasificacion = {0}", DdlClasificacion.SelectedValue.ToEntero())).Rows.Count > 0 Then - ''falta aplicar si tiene promocion - Dim drPromo As DataRow = DtPromociones.FiltroPrimero(String.Format("CveClasificacion = {0}", DdlClasificacion.SelectedValue.ToEntero())) - If drPromo IsNot Nothing Then - If drPromo("CveMarca").ToString() = DrPS("CveMarca").ToString() Then - - End If - End If - End If - End If - - - End If - End If - - 'NO DEJA REGISTRAR MENOS AL PRECIO MINIMO - Dim MensajeCosto As New StringBuilder - Dim TienePermisoImportes As Boolean = UsuarioActual.TienePermisoProceso(201) - If Not EsValido Then - MensajeCosto.AppendFormat("El Producto {0}-{1}. No se puede vender a un precio menor de su Costo
    ", HdnCodigoPS.Value, HdnPS.Value) - If TienePermisoImportes Then - MensajeCosto.AppendFormat("El costo del producto es: ${0:#,###.00}
    ", Costo) - MensajeCosto.AppendFormat("El rango menor aceptado es: {0}% ${1:#,###.00}
    ", UsuarioActual.Empresa.Funcionalidad(129).ToEntero(), CostoMenor) - MensajeCosto.AppendFormat("El precio indicado es: ${0:#,###.00} ({1}% de ganancia)
    ", PU.FormatoNumero, (If(Costo > 0, ((PU - Costo) * 100) / Costo, 0)).FormatoNumero) - End If - - Alert(String.Format(MensajeCosto.ToString()), TipoMensaje.MsgAdvertencia) - Return False - End If - - 'NO DEJA REGISTRAR MAS AL PRECIO MAXIMO - If Not EsValidoMayor Then - MensajeCosto.AppendFormat("El Producto {0}. No se puede vender a un precio mayor de su rango aceptado
    ", HdnPS.Value) - If TienePermisoImportes Then - MensajeCosto.AppendFormat("El costo del producto es: ${0:#,###.00}
    ", Costo) - MensajeCosto.AppendFormat("El rango mayor aceptado es: {0}% ${1:#,###.00}
    ", UsuarioActual.Empresa.Funcionalidad(133).ToEntero(), CostoMayor) - MensajeCosto.AppendFormat("El precio indicado es: ${0:#,###.00} ({1}% de ganancia)
    ", PU.FormatoNumero, (If(Costo > 0, ((PU - Costo) * 100) / Costo, 0)).FormatoNumero) - End If - Alert(MensajeCosto.ToString(), TipoMensaje.MsgAdvertencia) - Return False - End If - - End If - End If - End If - - - - Return True - - End Function - Private Function CalcularDescuentos(CvePS As Integer, Cantidad As Decimal, PU As Decimal) As Modelos.VentaDescuentos - Dim Descuento As Decimal = 0 - - - Dim ValidaCondicionesComerciales As Boolean = True - - 'AGREGA PROMOCION EN EL DESCUENTO - Dim TipoPromo As Integer = 0 - Dim TotalPromocion As Decimal = 0 - Dim PromocionPorcentaje As Decimal = 0 - Dim PUModificado As Decimal = 0 - Dim SeAjustoPU As Boolean = False - Dim PUPromocion As Decimal = 0 - Dim CantMinima As Integer = 0 - Dim CveMarcaPS As Integer = 0 - Dim CveClasifPS As Integer = 0 - Dim CveRinTamañoPS As Integer = 0 - Dim CvePromocionDetalle As Integer = 0 - Dim IncluyeImpuestos As Boolean = False - Dim TipoAplicacion As Integer = 1 ' 1 - descuento, 2 en PU - Dim ObjDescuento As New Modelos.VentaDescuentos - - If DdlSubProyectoDatos.SelectedValue = "11842" Then '' E141, el subproyecto: Franquicia, no proceden las promociones - Return ObjDescuento - End If - - - Dim DrPS As DataRow = GlobalDTPSSimplificado(UsuarioActual.CveEmpresa, CvePS:=CvePS).FiltroPrimero("") - If DrPS IsNot Nothing Then - - CveMarcaPS = DrPS("CveMarca").ToString().ToEntero() - CveClasifPS = DrPS("CveClasificacion").ToString().ToEntero() - CveRinTamañoPS = DrPS("CveRinTamaño").ToString().ToEntero() - - If CveClasifPS = 20636 Then - ValidaCondicionesComerciales = False - End If - 'CAMBIO DE VIGENCIA NO SE APLICAN DESCUENTOS - If CveClasifPS = 20637 Then - ObjDescuento.ImporteDescuento = 0 - Return ObjDescuento - End If - - If UsuarioActual.CveRol = 1 AndAlso DdlTipoComprobante.SelectedValue.Contiene("Ing", "Cot") AndAlso CveRinTamañoPS > 0 Then - If UsuarioActual.Empresa.Funcionalidad(558) = "1" AndAlso Not TbDescuentosAdicionales.Visible Then - TbDescuentosAdicionales.Visible = True - End If - End If - End If - - Dim dr As DataRow = Nothing - If DtPromociones IsNot Nothing AndAlso DtPromociones.Rows.Count > 0 Then - dr = DtPromociones.FiltroPrimero(String.Format("CvePS = {0} AND (CveSubProyecto = {1} OR CveSubProyecto IS NULL) AND (CveRinTamaño = {2} OR CveRinTamaño IS NULL) AND ((TipoPromocion <> 3 AND (CantidadMinima <= {3} OR CantidadMinima IS NULL)) OR (TipoPromocion = 3 AND CantidadMinima <= {3} ))", CvePS, DdlSubProyectoDatos.SelectedValue, CveRinTamañoPS, Cantidad), Orderby:="CantidadMinima desc ") - If dr Is Nothing Then - - 'verifica marca, si tiene asignada la promocion - dr = DtPromociones.FiltroPrimero(String.Format("CvePS IS NULL AND CveClasificacion = {0} AND (CveMarca = {1} OR CveMarca IS NULL) AND (CveSubProyecto = {2} OR CveSubProyecto IS NULL) AND (CveRinTamaño = {3} OR CveRinTamaño IS NULL) AND ((TipoPromocion <> 3 AND (CantidadMinima <= {4} OR CantidadMinima IS NULL)) OR (TipoPromocion = 3 AND CantidadMinima <= {4} )) ", CveClasifPS, CveMarcaPS, DdlSubProyectoDatos.SelectedValue, CveRinTamañoPS, Cantidad), Orderby:="CantidadMinima desc") - - End If - End If - Dim Cant As Integer = 1 - Dim CveMarcaPromocion As Integer = -1 - - If dr IsNot Nothing Then - - CveMarcaPromocion = dr("CveMarca").ToString().ToEntero() - TipoPromo = dr("TipoPromocion").ToString().ToEntero() - CantMinima = dr("CantidadMinima").ToString().ToEntero() - IncluyeImpuestos = dr("IncluyeImpuestos").ToString() = "True" - PromocionPorcentaje = dr("Promocion").ToString().ToDecimal - PUPromocion = dr("PUPromocion").ToString().ToDecimal - CvePromocionDetalle = dr("CvePromocionDetalle").ToString().ToEntero() - TipoAplicacion = dr("TipoAplicacion").ToString().ToEntero() - - If CantMinima > 0 Then - Cant = Math.Floor(Cantidad / CantMinima).ToEntero() - End If - - End If - - TotalPromocion = Math.Round(PUPromocion * Cant / (1 + If(IncluyeImpuestos, PorcentajeIVA, 0)), 6) - - If TipoPromo = 1 Then 'Promocion por Importe $ - If TipoAplicacion = 2 Then - Descuento = 0 - SeAjustoPU = True - PUModificado = Math.Round(PUPromocion / (1 + If(IncluyeImpuestos, PorcentajeIVA, 0)), 6) - Else - Descuento = Descuento + PU - TotalPromocion - End If - - ElseIf TipoPromo = 2 Then 'Promocion por % - Descuento = Descuento + ((PU * PromocionPorcentaje / 100) * Cantidad) - ElseIf TipoPromo = 3 Then 'Promocion por Cantidad - If Cantidad >= CantMinima Then - Descuento = Descuento + TotalPromocion - Else - CvePromocionDetalle = -1 - End If - End If - - - 'VERIFICA SI APLICAN CONDICIONES COMERCIALES - If ValidaCondicionesComerciales AndAlso DtPorcentajeMarcas IsNot Nothing AndAlso DtPorcentajeMarcas.Rows.Count > 0 Then - 'VERIFICA SI EL PRODUCTO TIENE ESPECIFICADA UNA MARCA - If Not String.IsNullOrEmpty(DrPS("CveMarca").ToString()) AndAlso DrPS("CveMarca").ToString().ToEntero() > 0 Then - Dim RowPorcentaje As DataRow = DtPorcentajeMarcas.FiltroPrimero($"CveMarca={DrPS("CveMarca").ToString()}") - 'REALIZA LOS DESCUENTOS DE ACUERDO AL PORCENTAJE POR MARCA - If RowPorcentaje IsNot Nothing Then - '(AHORA LOS DESCUENTOS SON ACUMULABLES) - 'Descuento = 0 - Dim PorcentajeProducto As Decimal = RowPorcentaje("PorcentajeProducto").ToString().ToDecimal() / 100D - Dim PorcentajeProducto2 As Decimal = RowPorcentaje("PorcentajeProducto2").ToString().ToDecimal() / 100D - Dim PorcentajeProducto3 As Decimal = RowPorcentaje("PorcentajeProducto3").ToString().ToDecimal() / 100D - - Dim TotalInicial As Decimal = (Cantidad * (PU)) '- Descuento - Dim TotalFinal As Decimal = TotalInicial - 'SI APLICA EL PRIMER DESCUENTO - If PorcentajeProducto > 0 Then - Dim Descuento1 As Decimal = (TotalInicial * PorcentajeProducto).RoundSQL(2) - Dim Total2 As Decimal = (TotalInicial - Descuento1) - - 'SI APLICA EL SEGUNDO DESCUENTO - If PorcentajeProducto2 > 0 Then - Dim Descuento2 As Decimal = (Total2 * PorcentajeProducto2).RoundSQL(2) - Dim Total3 As Decimal = (Total2 - Descuento2) - - 'SI APLICA EL TERCER DESCUENTO - If PorcentajeProducto3 > 0 Then - Dim Descuento3 As Decimal = (Total3 * PorcentajeProducto3).RoundSQL(2) - TotalFinal = Total3 - Descuento3 - Else - TotalFinal = Total3 - End If - Else - TotalFinal = Total2 - End If - Else - TotalFinal = TotalInicial - End If - - If PorcentajeProducto > 0 Then - Descuento += ((Cantidad * PU) - TotalFinal) - End If - - 'SI TIENE PRONTO PAGO CALCULA EL IMPORTE - If DdlTipoComprobante.SelectedValue = "Ing" AndAlso RowPorcentaje("ProntoPago").ToString().ToDecimal() > 0 Then - Dim SubTotalProntoPago As Decimal = (Cantidad * (PU)) - Descuento - Dim TotalProntoPago As Decimal = SubTotalProntoPago * (1 + PorcentajeIVA) - - Dim PorcentajeProntoPago As Decimal = RowPorcentaje("ProntoPago").ToString().ToDecimal() / 100D - - ObjDescuento.ImporteProntoPago = (TotalProntoPago * PorcentajeProntoPago).RoundSQL(2) - End If - - End If - End If - End If - - If Descuento < 0 Then - Descuento = 0 - Alert("No se calculó el descuento correctamente", TipoMensaje.MsgAdvertencia) - End If - - If UsuarioActual.Empresa.Funcionalidad(531) = "1" Then - 'LTH AA Paq. 2 baterias, LTH AAA Paq. 02 baterias, LTH AA Paq. 4 baterias, LTH AAA Paq. 4 Baterias - If CvePS.Contiene(521445, 521448, 402917, 402918) Then - 'SI TIENE BATERIAS AGREGADAS CON LA MARCA LTH, APLICAR PROMOCION, LA CLASIFICACION DEBE SER ACUMULADORES - If TmpDT.SUMD("Cantidad", "CveMarca IN (819,826,1085,1052) AND CveClasificacion IN (20520,20522,20513,20521,20512,20514,20229)") >= 1D Then - Descuento = 0 - SeAjustoPU = True - 'Paq. 2 baterias - If CvePS.Contiene(521445, 521448) Then - PUPromocion = 25D - End If - 'Paq. 4 baterias - If CvePS.Contiene(402917, 402918) Then - PUPromocion = 40D - End If - PUModificado = Math.Round(PUPromocion / (1 + PorcentajeIVA), 6) - End If - End If - - End If - - 'YOKOHAMA - If UsuarioActual.Empresa.Funcionalidad(558) = "1" AndAlso CveRinTamañoPS > 0 AndAlso CveMarcaPromocion.Contiene(800, 912, 1238, 1381, 1456, 1528, 1600, 1672, 1807) Then - Dim DtRines As DataTable = Nothing - Dim ObjGral As New ClsGenerales - If ObjGral.GetRimTamanios(UsuarioActual.CveEmpresa) Then - DtRines = ObjGral.DtResultados.Copy() - End If - ObjGral.Dispose() - - If CveMarcaPromocion > 0 Then - ObjDescuento.NombrePromo = "YOKOHAMA VERANO" 'dr("NombrePromocion").ToString() - ObjDescuento.CveMarca = CveMarcaPromocion - Dim Rin As String = DtRines.FiltroPrimeroValor("RinTamaño", $"CveRinTamaño = {CveRinTamañoPS}") - Dim PromoDescuento As Decimal = (Descuento * (1 + If(IncluyeImpuestos, PorcentajeIVA, 0))).RoundSQL(2) - - ObjDescuento.ObsDescuento = String.Format("RIN {0} BONO ${1:N2}", Rin, PromoDescuento) - End If - - End If - - ObjDescuento.ImporteDescuento = Descuento.RoundSQL(2) - ObjDescuento.CvePromocionDetalle = CvePromocionDetalle - If SeAjustoPU Then - ObjDescuento.PU = PUModificado - ObjDescuento.EsPUModificado = True - End If - - Return ObjDescuento - End Function - - Private Sub AgregarPS() - 'SELECCIONA EL PS DEPENDIENDO LA MODALIDAD (CODIGO BARRAS - DDL) - Try - - If IndicePSActual = -1 Then - Dim CvePS As Integer = -1 - - CvePS = DdlPS.SelectedValue.ToEntero() - - If ValidaAgregarPS(CvePS, DdlUnidadMedida.SelectedValue.ToEntero(), TxtPrecio.Text.Trim.ToDouble, HdnTipoPS.Value.ToEntero()) Then - - If UsuarioActual.Empresa.Funcionalidad(507) = DdlPS.SelectedValue Then - CvePSAmortizacion = DdlPS.SelectedValue.ToEntero().ToEntero() - End If - - Dim Cantidad As Decimal = TxtCantidad.Text.ToDecimal - Dim PU As Decimal = If(CvePSAmortizacion > 0, TxtPrecio.Text.Trim.ToDecimal * -1, TxtPrecio.Text.Trim.ToDecimal) - - Dim ObjDescuento As Modelos.VentaDescuentos = CalcularDescuentos(CvePS, Cantidad, PU) - If ObjDescuento.EsPUModificado Then - PU = ObjDescuento.PU - End If - - Dim CvePrecioListaPS As Integer = -1 - Dim PrecioListaPS As String = "" - - - If AgregarProductoServicio(Cantidad, DdlUnidadMedida.SelectedValue.ToEntero(), DdlUnidadMedida.SelectedItem.Text, DdlClasificacion.SelectedValue.ToEntero(), DdlClasificacion.SelectedItem.Text, - CvePS, "", TxtObsPS.Text.TrimEnd, PU, ObjDescuento.ImporteDescuento, - -1, "", DdlSubProyectoDatos.SelectedValue.ToEntero(), DdlSubProyectoDatos.SelectedItem.Text, - Serie:="", TiempoEntrega:="", CuentaPredial:="", RegeneraIEPS:=ClienteDesglosaIEPS, CvePromocionDetalle:=ObjDescuento.CvePromocionDetalle, - ImporteProntoPago:=ObjDescuento.ImporteProntoPago, ObjDescuento:=ObjDescuento, CvePrecioLista:=CvePrecioListaPS, PrecioLista:=PrecioListaPS, NumTurnos:=0) Then - If UsuarioActual.Empresa.Funcionalidad(558) = "1" AndAlso ListaDescuentos IsNot Nothing AndAlso ObjDescuento IsNot Nothing Then - ListaDescuentos.Add(ObjDescuento) - End If - - CalculaTotalesVenta() - - LimpiaAgregar() - UpPS.Update() - RegistraScript("$('#DVAddPS').modal('hide')") - - End If - - End If - - Else - - 'Dim TipoDescuento As Integer - Dim Cantidad, PU, CantidadInventario As Decimal - Dim CvePS As Integer = DdlPS.SelectedValue.ToEntero - Dim ObjDescuento As New Modelos.VentaDescuentos - - Cantidad = TxtCantidad.Text.ToDecimal - PU = TxtPrecio.Text.ToDecimal.RoundSQL(6) - - - ObjDescuento.ImporteDescuento = 0 - - - If PU <= 0 AndAlso UsuarioActual.Empresa.Funcionalidad(558) = "1" Then - Alert("El precio debe ser mayor a 0", TipoMensaje.MsgAdvertencia) - Exit Sub - End If - - If UsuarioActual.CveEmpresa = 140 OrElse DtPromociones IsNot Nothing AndAlso DtPromociones.Rows.Count > 0 Then - ObjDescuento = CalcularDescuentos(CvePS, Cantidad, PU) - End If - - - ''VERIFICA SI EL DESCUENTO SUPERA EL SUBTOTAL - - - Dim DatarowPS As DataRow = Nothing - DatarowPS = GlobalDTPS(UsuarioActual.CveEmpresa, CvePS:=CvePS).FiltroPrimero("") ' Estado = -1 - - 'verifica si tiene ventaminima - If Cantidad > 0 AndAlso DatarowPS("VentaMinima").ToString().ToDecimal > 0 AndAlso (DdlTipoComprobante.SelectedValue = "Rem" Or DdlTipoComprobante.SelectedValue = "Ing") Then - 'verifico que la cantidad sea multiplo de venta minima, es decir ventaminima =5, solo puede vender 5,10,15... - If Cantidad Mod DatarowPS("VentaMinima").ToString().ToDecimal <> 0 Then - Alert(String.Format("El producto se vende solo en cantidades de {0}", DatarowPS("VentaMinima").ToString())) - Exit Sub - End If - End If - - - 'si es remisión, ingreso, anticipo debe de considerar el preciominimo - - If Not UsuarioActual.TienePermisoProceso(169) Then ' NO VALIDA EXISTENCIAS NI COSTO - PERMISO PARA NO VALIDAR - - Dim CveUM As Integer = DdlUnidadMedida.SelectedValue.ToEntero() 'DatarowPS("CveUM").ToString().ToEntero() - Dim CveTipoPS As Integer = DatarowPS("CveTipoPS").ToString().ToEntero() - - CantidadInventario = TmpDT.Rows(IndicePSActual)("CantidadInventario").tostring.ToDecimal - Dim CveUMInicial As Integer = TmpDT.Rows(IndicePSActual)("CveUM").tostring.ToEntero - - Dim ValidaExistencia As Boolean = True - If (CantidadInventario > 0) OrElse (Cantidad <= CantidadOriginal) Then 'si ya hay algo surtido, que no valide existencia - ValidaExistencia = False - End If - If CveUM <> CveUMInicial Then ValidaExistencia = True - - 'SOLO VALIDA EXISTENCIAS Y COSTO: SI USA INVENTARIOS, SOLO PRODUCTOS TIPO PRODUCTO, SOLO REMISIONES E INGRESOS - If UsuarioActual.Empresa.UsaInventarios AndAlso CveTipoPS = 2 AndAlso (DdlTipoComprobante.SelectedValue.Contiene("Rem", "Ing", "PA") Or (DdlTipoComprobante.SelectedValue.Contiene("Cot") And UsuarioActual.CveEmpresa.Contiene(119))) Then - Dim ObjInventarios As New ClsInventarios - Dim Existencia As Decimal - If ValidaExistencia Then - Existencia = ObjInventarios.GetExistenciasPS(CvePS, CveUM, UsuarioActual.CveEmpresa, -1, FechaMovto:=DateTime.Today.AddDays(1).ToString("yyyy/MM/dd HH:mm"), CveSubProyecto:=DdlSubProyectoDatos.SelectedValue.ToEntero(), CveVendedor:=-1, CveCliente:=If(UsuarioActual.Empresa.Funcionalidad(146) = "1", -1, CveCliente), ExcluyeAdelantado:=1, PendientePorSurtir:=1, RestringirAlmacenes:=1, ExcluyeApartados:=-1) - End If - - Dim Costo As Decimal = ObjInventarios.GetCostoPS(CvePS, TxtCantidad.Text.Trim.ToDecimal, -1, "-1", NowADS, DdlSubProyectoDatos.SelectedValue.ToEntero(), CveTipoAlmacen:=1) - - 'si el costo es cero, puede ser que no halla movimientos del producto, en esa sucursal. y se volverá a sacar sin especificar sucursal - If Costo <= 0 Then Costo = ObjInventarios.GetCostoPS(CvePS, TxtCantidad.Text.Trim.ToDecimal, -1, "-1", NowADS, -1, CveTipoAlmacen:=1) - - ObjInventarios.Dispose() - Dim PrecioMinimo As Decimal = 0 - 'RMF. condicion temporal, para reubicación, precio mínimo - If UsuarioActual.CveEmpresa = 119 Then - 'Dim CvePrecioLista As Integer = 38 - Dim objPS As New ClsProductosServicios - If objPS.GetPSSucursalesALL(CvePS, UsuarioActual.CveEmpresa, CveSubProyecto:=DdlSubProyectoDatos.SelectedValue.ToEntero()) Then - PrecioMinimo = objPS.DtResultados.FiltroPrimeroValor("PrecioMinimo", "").ToDecimal - - End If - objPS.Dispose() - - End If - - If ValidaExistencia AndAlso DdlTipoComprobante.SelectedValue <> "Cot" AndAlso Not RegistroxOC Then - 'VALIDA EXISTENCIA - If UsuarioActual.CveEmpresa.Contiene({72, 80, 119, 140, 153}) Then - 'SI ES VENTA NUEVA TOMA EN CUENTA LO DEL TMPDT - If CveVenta <= 0 Then - If Existencia - TmpDT.SUM("Cantidad", $"CvePS = {CvePS} AND (EntregaDirecta IS NULL OR EntregaDirecta < 1)") < TxtCantidad.Text.ToDouble Then - Alert("No cuenta con la cantidad suficiente en inventario. Cuenta con " + Existencia.FormatoNumero(2) + ".", TipoMensaje.MsgAdvertencia) - Exit Sub - End If - Else - If DdlTipoComprobante.SelectedValue = "Rem" Then - Dim CantidadVenta As Double = 0 - Using ObjVentas As New ClsVentas - If ObjVentas.GetVentaDetalle(CveVenta) Then - CantidadVenta = ObjVentas.DtResultados.SUM("Cantidad", $"CvePS = {CvePS}") - End If - End Using - - 'SUMA LO YA RESTADO EN PENDIENTE POR SURTIR QUE PERTENESCA A LA VENTA. - 'PARA QUE NO RESTE LA EXISTENCIA 2 VECES Y PUEDAS COMPARAR LO REAL - If (Existencia + CantidadVenta) - TmpDT.SUM("Cantidad", $"CvePS = {CvePS} AND (EntregaDirecta IS NULL OR EntregaDirecta < 1)") < TxtCantidad.Text.ToDouble Then - Alert("No cuenta con la cantidad suficiente en inventario. Cuenta con " + Existencia.FormatoNumero(2) + ".", TipoMensaje.MsgAdvertencia) - Exit Sub - End If - End If - - End If - - End If - End If - - 'VALIDA COSTOS - If Not CveContrato > 0 Then - - 'BANDERAS PARA VALIDACIONES - Dim EsValido As Boolean = False - Dim EsValidoMayor As Boolean = False - Dim CostoMenor As Decimal = 0 - Dim CostoMayor As Decimal = 0 - - 'PRECIO MINIMO - If UsuarioActual.Empresa.Funcionalidad(129).ToEntero() > 0 AndAlso UsuarioActual.CveUsuario <> 1560 Then - '' NOTA. si tiene preciominimo, debe de validarlos e ignorar el costo, pero se debe de considerar el TC, para el costo - If PrecioMinimo > 0 Then - 'SI EL PRECIO ES MAYOR AL COSTO, SI PASA - If PU >= PrecioMinimo Then ' aqui se comparar los importes directos, sin el TC - EsValido = True - End If - Else - CostoMenor = Costo + ((UsuarioActual.Empresa.Funcionalidad(129).ToDecimal / 100) * Costo) - 'SI EL PRECIO ES MAYOR AL COSTO, SI PASA - If PU * If(DdlMoneda.SelectedValue.ToEntero() = 1, 1, TxtTipoCambio.Text.ToDecimal) >= CostoMenor Then - EsValido = True - End If - End If - Else - EsValido = True - End If - - 'PRECIO MAXIMO - If UsuarioActual.Empresa.Funcionalidad(133).ToEntero() > 0 AndAlso UsuarioActual.CveUsuario <> 1560 Then - CostoMayor = Costo + ((UsuarioActual.Empresa.Funcionalidad(133).ToDecimal / 100) * Costo) - 'SI EL PRECIO ES MAYOR AL COSTO MAXIMO, SI PASA - If PU * If(DdlMoneda.SelectedValue.ToEntero() = 1, 1, TxtTipoCambio.Text.ToDecimal) <= CostoMayor Then - EsValidoMayor = True - End If - Else - EsValidoMayor = True - End If - - - - 'NO DEJA REGISTRAR MENOS AL PRECIO MINIMO - Dim MensajeCosto As New StringBuilder - Dim TienePermisoImportes As Boolean = UsuarioActual.TienePermisoProceso(201) - If Not EsValido Then - MensajeCosto.AppendFormat("El Producto {0}. No se puede vender a un precio menor de su Costo
    ", DatarowPS("PS").ToString()) - If TienePermisoImportes Then - MensajeCosto.AppendFormat("El costo del producto es: ${0:#,###.00}
    ", Costo) - MensajeCosto.AppendFormat("El rango menor aceptado es: {0:#,###.00}% ${1}
    ", UsuarioActual.Empresa.Funcionalidad(129).ToEntero(), CostoMenor) - MensajeCosto.AppendFormat("El precio indicado es: ${0:#,###.00} ({1}% de ganancia)
    ", PU.FormatoNumero, (If(Costo > 0, ((PU - Costo) * 100) / Costo, 0)).FormatoNumero) - End If - - - Alert(String.Format(MensajeCosto.ToString()), TipoMensaje.MsgAdvertencia) - MensajeCosto.Clear() - Exit Sub - End If - - 'NO DEJA REGISTRAR MAS AL PRECIO MAXIMO - If Not EsValidoMayor Then - MensajeCosto.AppendFormat("El Producto {0}. No se puede vender a un precio mayor de su rango aceptado
    ", HdnPS.Value) - If TienePermisoImportes Then - MensajeCosto.AppendFormat("El costo del producto es: ${0:#,###.00}
    ", Costo) - MensajeCosto.AppendFormat("El rango mayor aceptado es: {0}% ${1:#,###.00}
    ", UsuarioActual.Empresa.Funcionalidad(133).ToEntero(), CostoMayor) - MensajeCosto.AppendFormat("El precio indicado es: ${0:#,###.00} ({1}% de ganancia)
    ", PU.FormatoNumero, (If(Costo > 0, ((PU - Costo) * 100) / Costo, 0)).FormatoNumero) - End If - Alert(MensajeCosto.ToString(), TipoMensaje.MsgAdvertencia) - MensajeCosto.Clear() - - Exit Sub - End If - - End If - End If - End If - - If UsuarioActual.Empresa.Funcionalidad(558) = "1" AndAlso ListaDescuentos IsNot Nothing AndAlso ObjDescuento IsNot Nothing Then - Dim ConsecEliminar As Integer = TmpDT.Rows(IndicePSActual)("Consec").ToString().ToEntero() - If ConsecEliminar > 0 Then - Dim descEliminar As Modelos.VentaDescuentos = ListaDescuentos.FirstOrDefault(Function(x) x.Consec = ConsecEliminar) - If descEliminar IsNot Nothing Then - ListaDescuentos.Remove(descEliminar) - End If - End If - End If - - If TmpDT.Rows(IndicePSActual)("CvePS").ToString().ToEntero <> CvePS Then - - - - TmpDT.Rows.Remove(TmpDT.Rows(IndicePSActual)) - - AgregarProductoServicio(Cantidad, DdlUnidadMedida.SelectedValue.ToEntero(), DdlUnidadMedida.Text, DdlClasificacion.SelectedValue.ToEntero(), DdlClasificacion.SelectedItem.Text, - DdlPS.SelectedValue.ToEntero(), DdlPS.SelectedText, TxtObsPS.Text.Trim, PU, ObjDescuento.ImporteDescuento, CveProyecto:=-1, Proyecto:="", - CveSubProyecto:=DdlSubProyectoDatos.SelectedValue.ToEntero(), SubProyecto:=DdlSubProyectoDatos.SelectedItem.Text, - CuentaPredial:="", CveVentaDetalle:=CvePS, SeActualiza:=True, CvePromocionDetalle:=ObjDescuento.CvePromocionDetalle, - ObjDescuento:=ObjDescuento, NumTurnos:=0) - - - GvPS.EditIndex = -1 - GvPS.DataSource = TmpDT - DtInv = TmpDT.Copy.FiltraParametros("CveTipoPS = 2") - GvPS.DataBind() - - - Else - Dim DrPS As DataRow = Nothing - DrPS = GlobalDTPS(UsuarioActual.CveEmpresa, CvePS:=TmpDT.Rows(IndicePSActual)("CvePS").ToString().ToEntero()).FiltroPrimero("") - - If Not ClienteDesglosaIEPS Then - PU = PU * (1 + DrPS("IEPSPorcentaje").ToString().ToDecimal) - TmpDT.Rows(IndicePSActual)("PorcentajeIEPS") = 0 - End If - - Dim TotalCalculableImpuestos As Decimal = ((Cantidad * PU) - (ObjDescuento.ImporteDescuento)) - Dim TotalCalculableImpuestosIVA As Decimal = 0 - TotalCalculableImpuestosIVA = TotalCalculableImpuestos * (1 + TmpDT.Rows(IndicePSActual)("PorcentajeIEPS").ToString().ToDecimal) - - Dim ClienteRetIVA As Decimal = Me.ClienteRetIVA - If ClienteRetIVA <= 0 Then - If DdlTipoRetencion.SelectedValue.Contiene("1", "2") Then - ClienteRetIVA = 0.106667D - ElseIf DdlTipoRetencion.SelectedValue.Contiene("3") Then - ClienteRetIVA = 0.04D - End If - End If - - If DrPS("IVA").ToString().Contiene("-1", "") Then - TmpDT.Rows(IndicePSActual)("PorcentajeIVA") = PorcentajeIVA - Else - TmpDT.Rows(IndicePSActual)("PorcentajeIVA") = DrPS("IVA") - End If - - If UsuarioActual.Empresa.Funcionalidad(373) = "1" AndAlso LblRFC.Text = "XEXX010101000" Then - TmpDT.Rows(IndicePSActual)("PorcentajeIVA") = 0 - TmpDT.Rows(IndicePSActual)("ImporteIVA") = 0 - End If - - TmpDT.Rows(IndicePSActual)("CveUM") = DdlUnidadMedida.SelectedValue.ToEntero() - TmpDT.Rows(IndicePSActual)("UM") = DdlUnidadMedida.SelectedItem.Text - TmpDT.Rows(IndicePSActual)("Cantidad") = Cantidad - TmpDT.Rows(IndicePSActual)("Obs") = TxtObsPS.Text.TrimEnd - TmpDT.Rows(IndicePSActual)("TiempoEntrega") = "" - TmpDT.Rows(IndicePSActual)("PU") = PU - TmpDT.Rows(IndicePSActual)("Descuento") = ObjDescuento.ImporteDescuento - TmpDT.Rows(IndicePSActual)("Total") = (Cantidad * PU) - TmpDT.Rows(IndicePSActual)("TotalImporte") = (Cantidad * PU).RoundSQL(NumeroDecimales) - TmpDT.Rows(IndicePSActual)("ImporteIVA") = (TmpDT.Rows(IndicePSActual)("PorcentajeIVA").ToString().ToDecimal * TotalCalculableImpuestosIVA).RoundSQL(NumeroDecimales) - TmpDT.Rows(IndicePSActual)("ImporteIEPS") = (TmpDT.Rows(IndicePSActual)("PorcentajeIEPS").ToString().ToDecimal * TotalCalculableImpuestos).RoundSQL(NumeroDecimales) - TmpDT.Rows(IndicePSActual)("ImporteRetIVA") = (ClienteRetIVA * TotalCalculableImpuestos).RoundSQL(NumeroDecimales) - TmpDT.Rows(IndicePSActual)("RetIVA") = (ClienteRetIVA * TotalCalculableImpuestos).RoundSQL(NumeroDecimales) - TmpDT.Rows(IndicePSActual)("ImporteRetISR") = (ClienteRetISR * TotalCalculableImpuestos).RoundSQL(NumeroDecimales) - TmpDT.Rows(IndicePSActual)("PorcentajeRetIVA") = ClienteRetIVA - TmpDT.Rows(IndicePSActual)("PorcentajeRetISR") = ClienteRetISR - TmpDT.Rows(IndicePSActual)("CuentaPredial") = "" - - - TmpDT.Rows(IndicePSActual)("NumTurnos") = 0 - - If ObjDescuento IsNot Nothing Then - TmpDT.Rows(IndicePSActual)("CvePromocionDetalle") = ObjDescuento.CvePromocionDetalle - End If - - - 'RELACIONAL PS CON EL DESCUENTO - If ObjDescuento IsNot Nothing Then - ObjDescuento.Consec = TmpDT.Rows(IndicePSActual)("Consec").ToString().ToEntero() - End If - - - DrPS = Nothing - - GvPS.EditIndex = -1 - GvPS.DataSource = TmpDT - DtInv = TmpDT.Copy.FiltraParametros("CveTipoPS = 2") - GvPS.DataBind() - - End If - - If UsuarioActual.Empresa.Funcionalidad(558) = "1" AndAlso ListaDescuentos IsNot Nothing AndAlso ObjDescuento IsNot Nothing Then - ListaDescuentos.Add(ObjDescuento) - End If - - CalculaTotalesVenta() - - RegistraScript("$('#DVAddPS').modal('hide')") - - UpPS.Update() - End If - - - - - Catch ex As Exception - OnError("Ocurrió un error al agregar el producto", ex) - End Try - - End Sub - - - Protected Sub LnkAgregarPS_Click(sender As Object, e As EventArgs) - - LimpiaAgregar() - RegistraScript("$('#DVAddPS').modal();") - - End Sub - - Private Sub LimpiaAgregar() - - IndicePSActual = -1 - CantidadOriginal = 0 - - TxtCantidad.Text = "" - - HdnPS.Value = "-1" - HdnCodigoPS.Value = "-1" - HdnTipoPS.Value = "-1" - HdnTipoInv.Value = "-1" - - DdlClasificacion.SelectedIndex = 0 - - If Not UsuarioActual.Empresa.Funcionalidad(141).ToString() = "1" Then - DdlPS.SelectedValue = "" - DdlPS.SelectedText = "" - Else - DdlPS.SelectedValue = "-1" - End If - - TxtObsPS.Text = "" - TxtPrecio.Text = "" - HdnIVAPS.Value = "-1" - HdnIVARetAPS.Value = "-1" - HdnAplicaIEPS.Value = "False" - HdnPorcentajeIEPS.Value = "0" - HdnCodigo.Value = "-1" - - TxtCantidad.Focus() - - UpDVAddPS.Update() - - End Sub - Private Sub CargaPorcentajeMarcas() - Dim ObjPS As New ClsProductosServicios - If ObjPS.GetPorcentajeMarcas(CveCliente) Then - DtPorcentajeMarcas = ObjPS.DtResultados.Copy() - End If - ObjPS.Dispose() - End Sub - - Private Function AgregarProductoServicio(Cantidad As Decimal, CveUM As Integer, UM As String, CveClasificacion As Integer, Clasificacion As String, CvePS As Integer, PS As String, Obs As String, - PU As Decimal, Descuento As Decimal, CveProyecto As Integer, Proyecto As String, CveSubProyecto As Integer, SubProyecto As String, Optional Serie As String = "", Optional TiempoEntrega As String = "", - Optional EntregaDirecta As Integer = 0, Optional CveContratoDetalle As Integer = 0, Optional CveVentaDetalle As Integer = 0, Optional CveMovimientoDetallePedido As Integer = 0, - Optional CveOrdenCompraDetalle As Integer = 0, Optional CveVentaDetalleRemision As Integer = 0, Optional CveVentaDetalleCotizacion As Integer = 0, Optional CuentaPredial As String = "", - Optional RegeneraIEPS As Boolean = True, Optional CveVentaDetallePedido2 As Integer = 0, Optional SeActualiza As Boolean = False, Optional CvePromocionDetalle As Integer = -1, Optional EsCargo As Boolean = False, - Optional ImporteProntoPago As Decimal = 0, Optional ByRef ObjDescuento As Modelos.VentaDescuentos = Nothing, Optional CvePrecioLista As Integer = -1, Optional PrecioLista As String = "", - Optional CveActivoFijo As Integer = -1, Optional AFDepreciacion As Decimal = 0D, Optional AFValorInicial As Decimal = 0D, Optional NumTurnos As Decimal = 0D) As Boolean - - Dim Retorno As Boolean = False - - Try - - If Not CvePS > 0 Then - Alert("Ocurrió un error al cargar la información del producto a agregar. Por favor verifique y vuelva a intentar.", TipoMensaje.MsgError) - Return False - End If - - - 'VALIDA CONCEPTOS EN CERO - YA SE VALIDA ANTES CON FUNCIONALIDAD - A MIRAS DE ELIMINAR - IPP 28 AGOSTO 2017 - If Not DdlTipoComprobante.SelectedValue.Contiene("Ped", "Ant") Then - If UsuarioActual.CveEmpresa.Contiene(72, 80) AndAlso CveOrdenCompraDetalle = 0 Then ' si viene de una oc, se permiten valores en cero - If Cantidad * PU <= 0 Then - If Not DdlTipoComprobante.SelectedValue = "DPe" Then - Alert("El importe del concepto debe ser mayor a cero. Por favor verifique y vuelva a intentar.", TipoMensaje.MsgAdvertencia) - Return False - End If - End If - End If - End If - - Dim Row As DataRow = Nothing - Dim TotalCalculableImpuestos As Decimal = 0 - Dim TotalCalculableImpuestosIVA As Decimal = 0 - PU = PU.RoundSQL(6) ' el precio unitario puede llevar hasta 6 decimales permitidos - Descuento = Descuento.RoundSQL(NumeroDecimales) - - If Not TmpDT.Columns.Contains("RetIVA") Then - TmpDT.Columns.Add("RetIVA", GetType(Decimal)) - End If - - Row = TmpDT.NewRow() - Row("CveProyecto") = CveProyecto - Row("Proyecto") = Proyecto - Row("CveSubProyecto") = CveSubProyecto - Row("SubProyecto") = SubProyecto - Row("Serie") = Serie - Row("TiempoEntrega") = TiempoEntrega - If Modalidad = "U" Then - Row("Orden") = Index - Else - Dim ConsecutivoActual As Integer = TmpDT.MAX("Consec").ToEntero() - If ConsecutivoActual < 0 Then - ConsecutivoActual = 0 - End If - Row("Orden") = ConsecutivoActual + 1 - End If - - Dim DrPS As DataRow = Nothing - - DrPS = GlobalDTPS(UsuarioActual.CveEmpresa, CvePS:=CvePS).FiltroPrimero("") ' Estado = -1 - - If DrPS Is Nothing Then - Alert("Ocurrió un error al cargar la información del Producto. Por favor vuelva a intentar.", TipoMensaje.MsgError) - Return False - End If - - If (DrPS("SATClaveUnidadMedida").ToString() = "" Or DrPS("SATClavePS").ToString() = "") Then - 'VALIDA CLAVESAT - If Not DdlTipoComprobante.SelectedValue.Contiene("Ped", "PeC") Then 'DOCUMENTOS DONDE NO SE VALIDA - If DrPS("SATClavePS").ToString() = "" Then - MensajeCveSAT.AppendFormat("{0}-{1}: Sin producto SAT
    ", DrPS("Codigo").ToString(), DrPS("PS").ToString()) - Return False - ElseIf DrPS("SATClaveUnidadMedida").ToString() = "" Then - MensajeCveSAT.AppendFormat("{0}-{1}: Sin Unidad Medida SAT
    ", DrPS("Codigo").ToString(), DrPS("PS").ToString()) - Return False - End If - - 'If UsuarioActual.CveEmpresa.Contiene(72, 80, 146) AndAlso DrPS("SATClavePS").ToString() = "01010101" Then - ' MensajeCveSAT.AppendFormat("{0}-{1}: El producto/servicio no existe en el catálogo del SAT
    ", DrPS("Codigo").ToString(), DrPS("PS").ToString()) - ' Return False - 'End If - End If - Else - If UsuarioActual.CveEmpresa.Contiene(72, 80, 146) AndAlso DrPS("SATClavePS").ToString() = "01010101" Then - MensajeCveSAT.AppendFormat("{0}-{1}: El producto/servicio no existe en el catálogo del SAT
    ", DrPS("Codigo").ToString(), DrPS("PS").ToString()) - Return False - End If - End If - - 'SI NO ES REFACTURACION verifica si tiene ventaminima - If NuevaFactura <> 1 Then - If Cantidad > 0 AndAlso DrPS("VentaMinima").ToString().ToDecimal > 0 Then - 'verifico que la cantidad sea multiplo de venta minima, es decir ventaminima =5, solo puede vender 5,10,15... - If Cantidad Mod DrPS("VentaMinima").ToString().ToDecimal <> 0 Then - Alert(String.Format("El producto se vende solo en cantidades de {0}", DrPS("VentaMinima").ToString())) - Return False - End If - End If - End If - - If CveUM <= 0 Then - CveUM = DrPS("CveUnidadMedida").ToString().ToEntero() - End If - - Row("Cantidad") = Cantidad - Row("CveUM") = CveUM - Row("UM") = DrPS("UnidadMedida") - Row("CveClasificacion") = DrPS("CveClasificacion") - Row("Clasificacion") = DrPS("Clasificacion") - Row("CvePS") = CvePS - Row("Obs") = Obs - - 'VERIFICA SI EN LA FACTURA PADRE SE DESGLOSO EL IEPS - Dim FacturaDesglosoIEPS As Boolean = ((CveDevolucion > 0 AndAlso NuevaFactura = 1) AndAlso (Me.ObjFacturaNC IsNot Nothing AndAlso Not Me.ObjFacturaNC.VentaDesglosaIEPS)) - - If Not ClienteDesglosaIEPS Then - If Not RegeneraIEPS AndAlso Not FacturaDesglosoIEPS Then - PU = PU * (1 + DrPS("IEPSPorcentaje").ToString().ToDecimal) - VentaDesglosaIEPS = True - End If - DrPS("IEPSPorcentaje") = 0 - End If - 'SI YA SE DESGLOSO EL IEPS SE GUARDA LA BANDERA EN ESTA FACTURA - If FacturaDesglosoIEPS Then - VentaDesglosaIEPS = True - End If - - If DrPS("IVA").ToString().Contiene("-1", "") Then - Row("PorcentajeIVA") = PorcentajeIVA - Else - Row("PorcentajeIVA") = DrPS("IVA") - End If - - If UsuarioActual.Empresa.Funcionalidad(373) = "1" AndAlso LblRFC.Text = "XEXX010101000" Then - DrPS("IVA") = 0 - Row("PorcentajeIVA") = 0 - End If - - If ClienteNODesglosaIVA Then - 'If Not RegeneraIEPS AndAlso Not FacturaDesglosoIEPS Then - PU = PU * (1 + Row("PorcentajeIVA").ToString().ToDecimal) - VentaNODesglosaIVA = True - 'End If - DrPS("IVA") = 0 - Row("PorcentajeIVA") = 0 - End If - - TotalCalculableImpuestos = ((Cantidad * (PU)) - Descuento) - TotalCalculableImpuestosIVA = TotalCalculableImpuestos * (1 + DrPS("IEPSPorcentaje").ToString().ToDecimal) - - Row("PU") = PU - Row("Codigo") = DrPS("Codigo") - Row("NoIdentificacion") = DrPS("Codigo") - Row("ClaveSATFraccionArancelaria") = DrPS("ClaveSATFraccionArancelaria") - Row("ClaveSATUnidadAduana") = DrPS("ClaveSATUnidadAduana") - Row("ClaveSATFraccionArancelariaDescripcion") = DrPS("ClaveSATFraccionArancelariaDescripcion") - Row("ClaveSATUnidadAduanaDescripcion") = DrPS("ClaveSATUnidadAduanaDescripcion") - If Modalidad = "U" Then - Row("Consec") = Index - Else - Dim ConsecutivoActual As Integer = TmpDT.MAX("Consec").ToEntero() - If ConsecutivoActual < 0 Then - ConsecutivoActual = 0 - End If - Row("Consec") = ConsecutivoActual + 1 - End If - - Row("PS") = DrPS("PS") - Row("CodigoPS") = DrPS("PSCodigo").ToString() - Row("CveTipoPS") = DrPS("CveTipoPS") - Row("CveTipoInvPS") = DrPS("Inv_CveMetodoInventario") - Row("CveTamaño") = DrPS("CveTamaño") - Row("CodigoObjetoImpuesto") = DrPS("CodigoObjetoImpuesto") - - If CveClasificacion <= 0 Then Row("CveClasificacion") = DrPS("CveClasificacion") - If Clasificacion = "" Then Row("Clasificacion") = DrPS("Clasificacion") - - - Dim ClienteRetIVA As Decimal = Me.ClienteRetIVA - If ClienteRetIVA <= 0 AndAlso DrPS("RetIVA").ToString.ToDecimal > 0 Then - ClienteRetIVA = DrPS("RetIVA").ToString.ToDecimal - DdlTipoRetencion.Enabled = True - End If - - If ClienteRetIVA <= 0 Then - If DdlTipoRetencion.SelectedValue.Contiene("1", "2") Then - ClienteRetIVA = 0.106667D - ElseIf DdlTipoRetencion.SelectedValue.Contiene("3") Then - ClienteRetIVA = 0.04D - End If - End If - - LblRetIVA.Text = (ClienteRetIVA * 100).FormatoNumero - If LblRetIVA.Text.ToDecimal() > 0 Then - TrRetIVA.Style.Add("display", "") - DdlTipoRetencion.Visible = True - Else - TrRetIVA.Style.Add("display", "none") - End If - - Row("IVA") = Row("PorcentajeIVA") - Row("ImporteIVA") = (Row("PorcentajeIVA").ToString().ToDecimal * TotalCalculableImpuestosIVA).RoundSQL(NumeroDecimales) - Row("ImporteRetIVA") = (ClienteRetIVA * TotalCalculableImpuestos).RoundSQL(NumeroDecimales) - - Row("RetIVA") = (ClienteRetIVA * TotalCalculableImpuestos).RoundSQL(NumeroDecimales) - - Row("ImporteRetISR") = (ClienteRetISR * TotalCalculableImpuestos).RoundSQL(NumeroDecimales) - Row("PorcentajeRetIVA") = ClienteRetIVA - Row("PorcentajeRetISR") = ClienteRetISR - Row("PorcentajeIEPS") = DrPS("IEPSPorcentaje") - Row("ImporteIEPS") = (DrPS("IEPSPorcentaje").ToString().ToDecimal * TotalCalculableImpuestos).RoundSQL(NumeroDecimales) - Row("IEPS") = Row("ImporteIEPS") - Row("Descuento") = (Descuento).RoundSQL(NumeroDecimales) - Row("TipoDescuento") = "-1" - Row("CvePromocionDetalle") = CvePromocionDetalle - Row("Total") = (Cantidad * PU) - Row("TotalImporte") = (Cantidad * PU).RoundSQL(NumeroDecimales) - Row("SATClaveProdServ") = DrPS("SATClavePS") - Row("SATClaveUM") = DrPS("SATClaveUnidadMedida") - - If UsuarioActual.Empresa.TipoContabilidad = 2 AndAlso UsuarioActual.Empresa.UsaAC Then - Row("CvePresupuestoIngreso") = Me.DdlFuenteRecaudacion.SelectedValue - End If - - Row("EntregaDirecta") = EntregaDirecta - 'Contratos - Row("CveContratoDetalle") = CveContratoDetalle - Row("CveVentaDetalle") = CveVentaDetalle - Row("CveMovimientoDetallePedido") = CveMovimientoDetallePedido - Row("CveOrdenCompraDetalle") = CveOrdenCompraDetalle - Row("CveVentaDetalleRemision") = CveVentaDetalleRemision - Row("CveVentaDetalleCotizacion") = CveVentaDetalleCotizacion - Row("CveVentaDetallePedido2") = CveVentaDetallePedido2 - Row("CuentaPredial") = CuentaPredial - Row("EsCargo") = EsCargo - - If TmpDT.Columns.Contains("CveMarca") Then - Row("CveMarca") = DrPS("CveMarca") - End If - - If ImporteProntoPago > 0 Then - Row("ImporteProntoPago") = ImporteProntoPago - Row("TieneProntoPago") = "Si" - - End If - - Row("CvePrecioLista") = CvePrecioLista - Row("PrecioLista") = PrecioLista - - Row("CveActivoFijo") = CveActivoFijo - Row("AFDepreciacion") = AFDepreciacion - Row("AFValorInicial") = AFValorInicial - - Row("NumTurnos") = NumTurnos - - If UsuarioActual.CveEmpresa.Contiene(119, 13, 83) Then - If Not RemisionesLista.Count > 0 Then 'SI VIENE DE REMISION NO SE CONSIDERA - - 'MONEDA DIFERENTE DEL PS AL PRIMER PS AGREGADO - If DdlMoneda.Enabled = False And CveVenta < 0 And TmpDT.Rows.Count > 0 Then - If DdlMoneda.SelectedValue <> DrPS("CveMoneda").ToString() Then - Alert($"La moneda base del producto: {DrPS("PSCodigo").ToString()} es diferente a la moneda del documento.", TipoMensaje.MsgAdvertencia) - Return False - End If - End If - - 'ACTIVA PRODUCTOS DE LA MISMA MONEDA - If TmpDT.Rows.Count = 0 And CveVenta < 0 Then - DdlMoneda.SelectedValueExist(DrPS("CveMoneda").ToString()) - CambiaMoneda() - DdlMoneda.Enabled = False - End If - End If - End If - - 'RELACIONAL PS CON EL DESCUENTO - If ObjDescuento IsNot Nothing Then - ObjDescuento.Consec = Row("Consec").ToString().ToEntero() - End If - - 'RECARGAR GV - TmpDT.Rows.Add(Row) - - 'AGREGA PS ADICIONAL - If UsuarioActual.Empresa.Funcionalidad(561).ToString() = "1" AndAlso Not UsuarioActual.TienePermisoProceso(285) AndAlso GlobalDTPSAdicionales(CvePS, UsuarioActual.CveEmpresa).Rows.Count > 0 AndAlso Not SeActualiza Then - - For Each Dr As DataRow In GlobalDTPSAdicionales(CvePS, UsuarioActual.CveEmpresa).Rows - Dim CvePSAdicional As Integer = Dr("CvePSAdicional").ToString().ToEntero() - Dim DrPoliza As DataRow = TmpDT.NewRow() - DrPoliza.ItemArray = Row.ItemArray - Dim DrPSAdicional As DataRow = GlobalDTPS(UsuarioActual.CveEmpresa, CvePSAdicional).Rows(0) - If DrPSAdicional IsNot Nothing Then - DrPoliza("CvePS") = CvePSAdicional - DrPoliza("PS") = DrPSAdicional("PS").ToString() - DrPoliza("CveUM") = DrPSAdicional("CveUM").ToString().ToEntero() - DrPoliza("UM") = DrPSAdicional("UnidadMedida").ToString() - DrPoliza("CveClasificacion") = DrPSAdicional("CveClasificacion").ToString().ToEntero() - DrPoliza("Clasificacion") = DrPSAdicional("Clasificacion").ToString() - DrPoliza("CodigoPS") = DrPSAdicional("PSCodigo").ToString() - DrPoliza("CveTipoPS") = DrPSAdicional("CveTipoPS") - DrPoliza("CveTipoInvPS") = DrPSAdicional("Inv_CveMetodoInventario") - DrPoliza("NoIdentificacion") = DrPSAdicional("Codigo") - - If Modalidad = "U" Then - DrPoliza("Consec") = Index - Else - Dim ConsecutivoActual As Integer = TmpDT.MAX("Consec").ToEntero() - If ConsecutivoActual < 0 Then - ConsecutivoActual = 0 - End If - DrPoliza("Consec") = ConsecutivoActual + 1 - End If - - Row("Orden") = TmpDT.Rows.Count + 1 - DrPoliza("Cantidad") = If(Dr("Cantidad").ToString().ToDecimal > 0, Dr("Cantidad").ToString().ToDecimal, Cantidad) - PU = 0 - - Dim PrecioSugerido As Decimal = 0 - 'Dim CvePrecioListaPS = GlobalDTCliente(UsuarioActual.CveEmpresa, -1).FiltroPrimeroValor("CvePrecioLista", $"CveCliente = {CveCliente}").ToEntero() - If CvePrecioLista > 0 Then - Dim ObjPS As New ClsProductosServicios - If ObjPS.GetPSPreciosLista(UsuarioActual.CveEmpresa, CvePrecioLista, CvePS:=CvePSAdicional) Then - - PrecioSugerido = ObjPS.DtResultados.FiltroPrimeroValor("PrecioLista").ToDecimal - If PrecioSugerido = 0 Then - Dim ObjInventarios As New ClsInventarios - Dim CostoPS As Decimal = ObjInventarios.GetCostoPS(CvePSAdicional, DrPoliza("Cantidad").ToString().ToDecimal, -1, "-1", NowADS, DdlSubProyectoDatos.SelectedValue.ToEntero(), CveTipoAlmacen:=1) - - 'si el costo es cero, puede ser que no halla movimientos del producto, en esa sucursal. y se volverá a sacar sin especificar sucursal - If CostoPS = 0 Then CostoPS = ObjInventarios.GetCostoPS(CvePSAdicional, DrPoliza("Cantidad").ToString().ToDecimal, -1, "-1", NowADS, -1, CveTipoAlmacen:=1) - - ObjInventarios.Dispose() - Dim PorcentajePrecio As Decimal = ObjPS.DtResultados.FiltroPrimeroValor("Porcentaje").ToDecimal - If CostoPS > 0 And PorcentajePrecio > 0 Then - PrecioSugerido = ((PorcentajePrecio / 100) + 1) * CostoPS - End If - End If - ObjPS.Dispose() - End If - End If - - - If PrecioSugerido > 0 Then - PU = PrecioSugerido - End If - PU = PU.RoundSQL(6) - DrPoliza("PU") = PU - TotalCalculableImpuestos = (DrPoliza("Cantidad").ToString().ToDecimal * (PU)) - - If DrPSAdicional("IVA").ToString().Contiene("-1", "") Then - DrPoliza("PorcentajeIVA") = PorcentajeIVA - Else - DrPoliza("PorcentajeIVA") = DrPSAdicional("IVA") - End If - DrPoliza("IVA") = DrPoliza("PorcentajeIVA") - DrPoliza("ImporteIVA") = (DrPoliza("PorcentajeIVA").ToString().ToDecimal * TotalCalculableImpuestos).RoundSQL(NumeroDecimales) - DrPoliza("ImporteRetIVA") = (ClienteRetIVA * TotalCalculableImpuestos).RoundSQL(NumeroDecimales) - DrPoliza("ImporteRetISR") = (ClienteRetISR * TotalCalculableImpuestos).RoundSQL(NumeroDecimales) - DrPoliza("PorcentajeRetIVA") = ClienteRetIVA - DrPoliza("PorcentajeRetISR") = ClienteRetISR - DrPoliza("PorcentajeIEPS") = DrPSAdicional("IEPSPorcentaje") - DrPoliza("ImporteIEPS") = (DrPSAdicional("IEPSPorcentaje").ToString().ToDecimal * TotalCalculableImpuestos).RoundSQL(NumeroDecimales) - DrPoliza("IEPS") = DrPoliza("ImporteIEPS") - DrPoliza("Descuento") = 0 ' Descuento - DrPoliza("TipoDescuento") = "" - DrPoliza("Total") = (DrPoliza("Cantidad").ToString().ToDecimal * PU) - DrPoliza("TotalImporte") = (DrPoliza("Cantidad").ToString().ToDecimal * PU).RoundSQL(NumeroDecimales) - DrPoliza("SATClaveProdServ") = DrPSAdicional("SATClavePS") - DrPoliza("SATClaveUM") = DrPSAdicional("SATClaveUnidadMedida") - DrPoliza("CveActivoFijo") = -1 - - TmpDT.Rows.Add(DrPoliza) - End If - Next - - End If - - Retorno = True - Catch ex As Exception - Retorno = False - OnError("Ocurrió un error al agregar el producto/servicio", ex) - End Try - - Return Retorno - End Function - -#End Region - -#Region "D A T A - T A B L E S" - Private Sub CreaDTVentas() - TmpDT = New DataTable - TmpDT.Columns.Add("CveVenta", GetType(Integer)) - TmpDT.Columns.Add("Consec", GetType(Integer)) - TmpDT.Columns.Add("Cantidad", GetType(Decimal)) - TmpDT.Columns.Add("Codigo", GetType(String)) - TmpDT.Columns.Add("CveUM", GetType(Integer)) - TmpDT.Columns.Add("UM", GetType(String)) - TmpDT.Columns.Add("SATClaveUM", GetType(String)) - TmpDT.Columns.Add("CveClasificacion", GetType(Integer)) - TmpDT.Columns.Add("Clasificacion", GetType(String)) - TmpDT.Columns.Add("CvePS", GetType(Integer)) - TmpDT.Columns.Add("PS", GetType(String)) - TmpDT.Columns.Add("CodigoPS", GetType(String)) - TmpDT.Columns.Add("SATClaveProdServ", GetType(String)) - TmpDT.Columns.Add("NoIdentificacion", GetType(String)) - TmpDT.Columns.Add("CveTipoPS", GetType(Integer)) - TmpDT.Columns.Add("CveTipoInvPS", GetType(Integer)) - TmpDT.Columns.Add("Serie", GetType(String)) - TmpDT.Columns.Add("CuentaPredial", GetType(String)) - TmpDT.Columns.Add("Obs", GetType(String)) - TmpDT.Columns.Add("TiempoEntrega", GetType(String)) - TmpDT.Columns.Add("PU", GetType(Decimal)) - TmpDT.Columns.Add("IVA", GetType(Decimal)) - TmpDT.Columns.Add("ImporteIVA", GetType(Decimal)) - TmpDT.Columns.Add("PorcentajeIVA", GetType(Decimal)) - TmpDT.Columns.Add("ImporteRetIVA", GetType(Decimal)) - TmpDT.Columns.Add("ImporteRetISR", GetType(Decimal)) - TmpDT.Columns.Add("PorcentajeRetIVA", GetType(Decimal)) - TmpDT.Columns.Add("PorcentajeRetISR", GetType(Decimal)) - TmpDT.Columns.Add("ImporteIEPS", GetType(Decimal)) - TmpDT.Columns.Add("IEPS", GetType(Decimal)) - TmpDT.Columns.Add("PorcentajeIEPS", GetType(Decimal)) - TmpDT.Columns.Add("Descuento", GetType(Decimal)) - TmpDT.Columns.Add("TipoDescuento", GetType(Integer)) - TmpDT.Columns.Add("TotalImporte", GetType(Decimal)) - TmpDT.Columns.Add("Total", GetType(Decimal)) - TmpDT.Columns.Add("RetIVA", GetType(Decimal)) - TmpDT.Columns.Add("RetISR", GetType(Decimal)) - 'Para uso del módulo contable - TmpDT.Columns.Add("CveProyecto", GetType(Integer)) - TmpDT.Columns.Add("Proyecto", GetType(String)) - TmpDT.Columns.Add("CveSubProyecto", GetType(Integer)) - TmpDT.Columns.Add("SubProyecto", GetType(String)) - TmpDT.Columns.Add("CveVentaDetallePadre", GetType(Integer)) - TmpDT.Columns.Add("CvePromocionDetalle", GetType(Integer)) - - 'TipoDescuento: 1 = Descuento * PU; 2 = Descuento por Total del concepto - TmpDT.Columns.Add("CvePresupuestoIngreso", GetType(Integer)) - TmpDT.Columns.Add("CveFuenteRecaudacion", GetType(Integer)) - 'Contratos - TmpDT.Columns.Add("CveContratoDetalle", GetType(Integer)) - 'Remisiones a Facturas - TmpDT.Columns.Add("CveVentaDetalle", GetType(Integer)) - TmpDT.Columns.Add("CveVentaDetalleRemision", GetType(Integer)) - TmpDT.Columns.Add("CveVentaDetalleCotizacion", GetType(Integer)) - - 'Pedido2 a Facturas - TmpDT.Columns.Add("CveVentaDetallePedido2", GetType(Integer)) - - TmpDT.Columns.Add("Origen", GetType(Integer)) - 'Ordenes Servicio - TmpDT.Columns.Add("CveOS", GetType(Integer)) - TmpDT.Columns.Add("CveOSDetalle", GetType(Integer)) - TmpDT.Columns.Add("SeFacturara", GetType(Integer)) - TmpDT.Columns.Add("Folio", GetType(Integer)) - TmpDT.Columns.Add("Estatus", GetType(String)) - 'Ordenamiento - TmpDT.Columns.Add("Orden", GetType(Integer)) - TmpDT.Columns.Add("TipoDocto", GetType(String)) - 'OC - TmpDT.Columns.Add("CveOrdenCompraDetalle", GetType(Integer)) - TmpDT.Columns.Add("EntregaDirecta", GetType(Integer)) - - TmpDT.Columns.Add("CveMovimientoDetallePedido", GetType(Integer)) - TmpDT.Columns.Add("CantidadFacturadaRem", GetType(Decimal)) - TmpDT.Columns.Add("CantidadFacturadaCot", GetType(Decimal)) - TmpDT.Columns.Add("CantidadFacturadaPed2", GetType(Decimal)) - TmpDT.Columns.Add("CantidadInventario", GetType(Decimal)) - - TmpDT.Columns.Add("ClaveSATFraccionArancelaria", GetType(String)) - TmpDT.Columns.Add("ClaveSATUnidadAduana", GetType(String)) - TmpDT.Columns.Add("ClaveSATFraccionArancelariaDescripcion", GetType(String)) - TmpDT.Columns.Add("ClaveSATUnidadAduanaDescripcion", GetType(String)) - - TmpDT.Columns.Add("CveTamaño", GetType(Integer)) - TmpDT.Columns.Add("CveConcepto", GetType(Integer)) - TmpDT.Columns.Add("EsCargo", GetType(Boolean)) - TmpDT.Columns.Add("CveVentaDetalleRNC", GetType(Integer)) - - TmpDT.Columns.Add("TieneProntoPago", GetType(String)) - TmpDT.Columns.Add("ImporteProntoPago", GetType(Decimal)) - TmpDT.Columns.Add("CodigoObjetoImpuesto", GetType(String)) - TmpDT.Columns.Add("CveMarca", GetType(Integer)) - - TmpDT.Columns.Add("CvePrecioLista", GetType(Integer)) - TmpDT.Columns.Add("PrecioLista", GetType(String)) - - TmpDT.Columns.Add("CveActivoFijo", GetType(Integer)) - TmpDT.Columns.Add("AFDepreciacion", GetType(Decimal)) - TmpDT.Columns.Add("AFValorInicial", GetType(Decimal)) - TmpDT.Columns("EsCargo").DefaultValue = False - - TmpDT.Columns("TieneProntoPago").DefaultValue = "No" - TmpDT.Columns("ImporteProntoPago").DefaultValue = 0 - - TmpDT.Columns.Add("NumTurnos", GetType(Decimal)) - TmpDT.Columns("NumTurnos").DefaultValue = 0 - TmpDT.Columns.Add("NumeroPedimento", GetType(String)) - - End Sub - Private Sub CreaDTmpC() - DTmpC = New DataTable - DTmpC.Columns.Add("Descripcion", GetType(String)) - End Sub - Private Sub CreaDTmpF() - DTmpF = New DataTable - DTmpF.Columns.Add("CveVenta", GetType(Integer)) - DTmpF.Columns.Add("Titulo", GetType(String)) - DTmpF.Columns.Add("Nombre", GetType(String)) - DTmpF.Columns.Add("Puesto", GetType(String)) - DTmpF.Columns.Add("Lado", GetType(Integer)) - End Sub - Private Sub CreaDTImpuestos() - TmpDTImpuestos = New DataTable - TmpDTImpuestos.Columns.Add("CveImpuestoLocal", GetType(Integer)) - TmpDTImpuestos.Columns.Add("ImpuestoLocal", GetType(String)) - TmpDTImpuestos.Columns.Add("Porcentaje", GetType(Decimal)) - TmpDTImpuestos.Columns.Add("Importe", GetType(Decimal)) - TmpDTImpuestos.Columns.Add("TipoImpuesto", GetType(Integer)) - TmpDTImpuestos.Columns.Add("CveCuenta", GetType(Integer)) - TmpDTImpuestos.Columns.Add("Orden", GetType(Integer)) - End Sub - Private Sub CreaDTImpuestosIVAIEPS() - TmpDTImpuestosIVAIEPS = New DataTable - TmpDTImpuestosIVAIEPS.Columns.Add("Impuesto", GetType(String)) - TmpDTImpuestosIVAIEPS.Columns.Add("tasa", GetType(String)) - TmpDTImpuestosIVAIEPS.Columns.Add("Importe", GetType(Decimal)) - TmpDTImpuestosIVAIEPS.Columns.Add("Orden", GetType(Integer)) - End Sub - Private Sub CreaDTDocumentosRelacionados() - TmpDTDocumentosRelacionados = New DataTable - TmpDTDocumentosRelacionados.Columns.Add("SerieFolio", GetType(String)) - TmpDTDocumentosRelacionados.Columns.Add("Fecha", GetType(String)) - TmpDTDocumentosRelacionados.Columns.Add("Importe", GetType(Decimal)) - TmpDTDocumentosRelacionados.Columns.Add("FolioFiscal", GetType(Integer)) - End Sub -#End Region - -#Region "P D F" - - -#End Region - -#Region "A C T U A L I Z A " - -#Region "New" - 'Private Function ActualizaTimbrado(Timbro As Boolean, CveVenta As Integer) As Boolean - ' Dim Retorno = False - ' Dim ObjVentas As New ClsVentas() - - ' Retorno = ObjVentas.UpdateVentaTimbre(CBool(Timbro), CveVenta) - ' ObjVentas.Dispose() - - ' Return Retorno - 'End Function - 'Private Sub ActualizaCadenaOriginal(CadenaOriginal As String, CveVenta As Integer) - ' Dim ObjVentas As New ClsVentas() - ' ObjVentas.UpdateVentaCadenaOriginal(CadenaOriginal.ToString(), CveVenta) - ' ObjVentas.Dispose() - 'End Sub - 'Private Sub ActualizaEstatus(CveEstatus As Integer, FolioFiscal As String, CveVenta As Integer) - ' Dim ObjVentas As New ClsVentas() - ' ObjVentas.UpdateEstatusFactura(CveEstatus, FolioFiscal, "", NowADS(), CveVenta) - ' ObjVentas.Dispose() - 'End Sub - 'Private Sub ActualizaCliente(NumCtaPago As String, MetodoDePago As Integer, CveCliente As Integer) - ' Dim ObjCliente As New ClsClientes - ' ObjCliente.UpdateClienteFactura(NumCtaPago, MetodoDePago, CveCliente, UsuarioActual.CveUsuario) - ' ObjCliente.Dispose() - 'End Sub -#End Region -#End Region - -#Region "M E T O D O S" - - - Private Sub SetValues() - ViewState("TipoCambio") = 1 - - If UsuarioActual.Empresa.MostrarRetIVA Then TrRetIVA.Style.Add("display", "") - If UsuarioActual.Empresa.MostrarRetISR Then TrRetISR.Style.Add("display", "") - - - - - End Sub - Private Sub SetPermisos() - If CveVenta < 1 OrElse EsCreaApartirDe Then - 'Puede cotizar - If Not UsuarioActual.TienePermisoProceso(59) Then - DdlTipoComprobante.Items.Remove(DdlTipoComprobante.Items.FindByValue("Cot")) - End If - - 'Puede Hacer NC - If Not UsuarioActual.TienePermisoProceso(175) Then - DdlTipoComprobante.Items.Remove(DdlTipoComprobante.Items.FindByValue("Egs")) - End If - - 'Puede Hacer Devolución - If Not UsuarioActual.TienePermisoProceso(264) Then - DdlTipoComprobante.Items.Remove(DdlTipoComprobante.Items.FindByValue("Dev")) - End If - - 'Puede facturar - If Not UsuarioActual.TienePermisoProceso(60) Then - DdlTipoComprobante.Items.Remove(DdlTipoComprobante.Items.FindByValue("Ing")) - DdlTipoComprobante.Items.Remove(DdlTipoComprobante.Items.FindByValue("Ant")) - If Not UsuarioActual.TienePermisoProceso(175) Then - DdlTipoComprobante.Items.Remove(DdlTipoComprobante.Items.FindByValue("Egs")) - End If - If Not UsuarioActual.TienePermisoProceso(264) Then - DdlTipoComprobante.Items.Remove(DdlTipoComprobante.Items.FindByValue("Dev")) - End If - End If - - 'Puede remisionar - If Not UsuarioActual.TienePermisoProceso(199) Then - DdlTipoComprobante.Items.Remove(DdlTipoComprobante.Items.FindByValue("Rem")) - - End If - - 'Puede hacer pedido - If Me.CveVenta <= 0 Then - If Not UsuarioActual.TienePermisoProceso(177) Then - If DdlTipoComprobante.Items.FindByValue("Pd2") IsNot Nothing Then - DdlTipoComprobante.Items.Remove(DdlTipoComprobante.Items.FindByValue("Pd2")) - End If - End If - End If - - - '[IPP]: FALTA CONFIGURAR Y DAR PERMISO A TODOS LOS QUE TENGAN ACCESO A VENTAS - ''Puede remisionar - 'If Not UsuarioActual.TienePermisoProceso(199) Then - ' DdlTipoComprobante.Items.Remove(DdlTipoComprobante.Items.FindByValue("Rem")) - 'End If - - ''MODO SOLO LECTURA - 'If DdlTipoComprobante.Items.Count = 0 Then - ' DdlTipoComprobante.Items.Insert(0, New ListItem("Solo lectura", "-1")) - ' TrBotones.Visible = False - 'End If - - ConfiguraTipoDocto() - End If - End Sub - Private Sub CalculaTotalesVenta(Optional RecalculaImpuestosLocales As Boolean = True, Optional NCDescuento As Boolean = False, Optional ValidarDescuentos As Boolean = False, Optional RecalcularTotalOriginal As Boolean = True) - - Dim TotalSubTotal As Decimal = TmpDT.SUMD("TotalImporte") - Dim TotalSubTotalRef As Decimal = TotalSubTotal - - Dim TotalDescuentos As Decimal = TmpDT.SUMD("Descuento") - Dim TotalAmortizacion As Decimal = LblAmortizacion.Text.ToDecimal - Dim TotalIVA As Decimal = TmpDT.SUMD("ImporteIVA") - Dim TotalIEPS As Decimal = TmpDT.SUMD("ImporteIEPS") - Dim TotalRetIVA As Decimal = TmpDT.SUMD("ImporteRetIVA") - Dim TotalRetISR As Decimal = TmpDT.SUMD("ImporteRetISR") - Dim Total As Decimal = 0 - Dim TotalImpuestosLocales As Decimal = 0 - - Dim TotalProntoPago As Decimal = 0 - - If ValidarDescuentos Then - TotalSubTotalRef = TotalSubTotal - TotalDescuentos - End If - - 'If TotalAmortizacion > 0 AndAlso TotalSubTotalRef = TotalAmortizacion Then ' si se amortizó completa la factura, debe de limpiar los impuestos PorcentajeRetIVA - ' If DdlTipoAmortizacionAnticipo.SelectedValue.Contiene("3") Then - ' For Each dr As DataRow In TmpDT.Rows - ' dr("ImporteIVA") = 0 : dr("ImporteIEPS") = 0 : dr("PorcentajeIEPS") = 0 : dr("ImporteRetIVA") = 0 : dr("PorcentajeRetIVA") = 0 : dr("ImporteRetISR") = 0 : dr("PorcentajeIVA") = 0 : dr("IVA") = 0 - ' Next - - ' If TmpDTImpuestos IsNot Nothing Then - ' For Each dr2 As DataRow In TmpDTImpuestos.Rows - ' dr2("Importe") = 0 - ' Next - ' TmpDTImpuestos.AcceptChanges() - ' End If - - ' TmpDT.AcceptChanges() - ' TotalIVA = TmpDT.SUMD("ImporteIVA") - ' TotalIEPS = TmpDT.SUMD("ImporteIEPS") - ' TotalRetIVA = TmpDT.SUMD("ImporteRetIVA") - ' TotalRetISR = TmpDT.SUMD("ImporteRetISR") - ' TotalImpuestosLocales = TmpDTImpuestos.SUMD("Importe") - ' End If - 'End If - - If RecalculaImpuestosLocales AndAlso TmpDTImpuestos IsNot Nothing AndAlso TmpDTImpuestos.Rows.Count > 0 Then - If TotalSubTotal <> TotalAmortizacion Then - For Each drt As DataRow In TmpDTImpuestos.Rows - drt("Importe") = drt("Porcentaje").ToString().ToDecimal * TotalSubTotal / 100 - Next - End If - - GvImpuestosLocales2.DataSource = TmpDTImpuestos - GvImpuestosLocales2.DataBind() - End If - - For Each gvr As GridViewRow In GvImpuestosLocales2.Rows - If gvr.RowType = DataControlRowType.DataRow Then - - If gvr.FCTextBox("TxtImpuestoLocalPS").Text.ToDecimal > 0 Then - If gvr.DataKey("TipoImpuesto") = "5" Then ' traslado de imp local - TotalImpuestosLocales -= gvr.FCTextBox("TxtImpuestoLocalPS").Text.ToDecimal - Else - TotalImpuestosLocales += gvr.FCTextBox("TxtImpuestoLocalPS").Text.ToDecimal - End If - End If - End If - Next - - 'If TotalDescuentos > 0 Then GvPS.Columns(ColumnaDescuento).Visible = True : thEncDesc1.Visible = True : thEncDesc2.Visible = True Else GvPS.Columns(ColumnaDescuento).Visible = False : thEncDesc1.Visible = False : thEncDesc2.Visible = False - If TotalIEPS > 0 Then TrIEPS.Visible = True : GvPS.Columns(ColumnaIEPS).Visible = True Else TrIEPS.Visible = False : GvPS.Columns(ColumnaIEPS).Visible = False - If TotalRetIVA > 0 Then GvPS.Columns(ColumnaRetIVA).Visible = True Else GvPS.Columns(ColumnaRetIVA).Visible = False - If TotalRetISR > 0 Then GvPS.Columns(ColumnaRetISR).Visible = True Else GvPS.Columns(ColumnaRetISR).Visible = False - - 'If DdlTipoAmortizacionAnticipo.SelectedValue.ToEntero().Contiene(2, 1) Then - ' TotalAmortizacion = 0 - 'End If - - Dim TotalRemNCAplicado As Decimal = 0 - - If TbDescuentosRNC.Visible AndAlso ListaNCDesc IsNot Nothing Then - TotalRemNCAplicado = ListaNCDesc.Sum(Function(RNC) RNC.TotalRemNCAplicado) - If ListaNCBonificacion IsNot Nothing AndAlso ListaNCBonificacion.Count > 0 Then - TotalRemNCAplicado += ListaNCBonificacion.Sum(Function(RNC) RNC.TotalRemNCAplicado) - End If - End If - - Total = (TotalSubTotal - TotalDescuentos - TotalAmortizacion + TotalIVA + TotalIEPS - TotalRetIVA - TotalRetISR - TotalImpuestosLocales) - 'LblSubTotal1.Text = TotalSubTotal.FormatoNumero(2) - TxtSubTotal.Text = TotalSubTotal.FormatoNumero(2) - LblDescuentos.Text = TotalDescuentos.FormatoNumero - TxtSubTotal2.Text = (TotalSubTotal - TotalDescuentos - TotalAmortizacion).FormatoNumero(2) - TxtRetIVA.Text = TotalRetIVA.FormatoNumero(2) - TxtRetISR.Text = TotalRetISR.FormatoNumero(2) - TxtIVA.Text = TotalIVA.FormatoNumero - TxtIEPS.Text = TotalIEPS.FormatoNumero - TxtTotal.Text = Total.FormatoNumero - - - - HdnProntoPago.Value = TotalProntoPago.ToString() - LblProntoPago.Text = TotalProntoPago.FormatoNumero(2) - - LblTotalAPagar.Text = (TxtTotal.Text.ToDecimal() - TotalRemNCAplicado - TotalProntoPago).FormatoNumero - - If RecalcularTotalOriginal Then - LblTotalOriginal.Text = (TxtTotal.Text.ToDecimal()).FormatoNumero - End If - - LblTotalAPagarAdicional.Text = (LblTotalOriginal.Text.ToDecimal() - LblDescuentoAdicional.Text.ToDecimal()).FormatoNumero - - 'LblAmort.Text = TxtSubTotal.Text - If CveVenta <= 0 OrElse (CveDevolucion > 0 And NuevaFactura = 1) Then - HdnVentaSaldo.Value = Total.ToString() - Else - HdnVentaSaldo.Value = SaldoVenta.ToString() - End If - HdnIVAOriginal.Value = TxtIVA.Text - - 'JJMQ 20160506: Se agrego para la validacion de pago de contado. - 'CVImporteContado.ValueToCompare = Total.ToString() - - If MensajeCveSAT IsNot Nothing AndAlso MensajeCveSAT.ToString().Length > 0 Then - Alert($"Los siguientes conceptos hace falta especificar clave SAT

    {MensajeCveSAT.ToString()}", TipoMensaje.MsgAdvertencia) - MensajeCveSAT.Clear() - End If - - Dim view As DataView = New DataView(TmpDT) - view.Sort = "Consec" - GvPS.DataSource = view - GvPS.DataBind() - - - - If UsuarioActual.Empresa.Funcionalidad(558) = "1" AndAlso ListaDescuentos IsNot Nothing AndAlso ListaDescuentos.Count > 0 Then - - Dim Titulo As String = ListaDescuentos.FirstOrDefault().NombrePromo - Dim strPromos As New StringBuilder - If Not String.IsNullOrEmpty(Titulo) Then - - For Each Promo As Modelos.VentaDescuentos In ListaDescuentos - If Not String.IsNullOrEmpty(Promo.ObsDescuento) Then - strPromos.AppendFormat("{0}, ", Promo.ObsDescuento) - End If - Next - - If strPromos.Length > 2 Then - strPromos.Remove(strPromos.Length - 2, 2) - End If - - If strPromos.Length > 0 Then - TxtObsFact.Text = "" - TxtObsFact.Text = String.Format("{0} {1}", Titulo, strPromos.ToString()) - End If - - End If - - End If - - ValidaImportePublicoGeneral() - - UPObservaciones.Update() - - UpPS.Update() - RegistraScript("BorraDescuentos();", "BorraDescuentos") - End Sub - - Private Sub VinculaCotizacionVenta() - Dim ObjVentas As New ClsVentas() - ObjVentas.UpdateVentaCotizacion(CveVenta, Request("CveVenta").ToEntero()) - ObjVentas.Dispose() - End Sub - - Protected Sub DdlFuenteRecaudacion_SelectedIndexChanged(sender As Object, e As EventArgs) Handles DdlFuenteRecaudacion.SelectedIndexChanged - For Each dr As DataRow In TmpDT.Rows - dr("CvePresupuestoIngreso") = DdlFuenteRecaudacion.SelectedValue - Next - - GvPS.DataSource = TmpDT - GvPS.DataBind() - - UpPS.Update() - End Sub - Protected Sub DdlFR_SelectedIndexChanged(sender As Object, e As EventArgs) - Dim DdlFR_Gv As DropDownList = CType(sender, DropDownList) - Dim index As Integer = CType(DdlFR_Gv.NamingContainer, GridViewRow).FCLiteral("LtlConsecutivo").Text.ToString().ToEntero() - - If UsuarioActual.Empresa.TipoContabilidad = 2 AndAlso UsuarioActual.Empresa.UsaAC Then - TmpDT(index - 1)("CvePresupuestoIngreso") = DdlFR_Gv.SelectedValue - End If - TmpDT.AcceptChanges() - End Sub - - - Protected Sub TxtCodigo_TextChanged(sender As Object, e As System.EventArgs) Handles TxtCodigo.TextChanged - - Dim ObjClientes As New ClsClientes() - - Dim Nombre As String = "-1" - Dim Codigo As String = "-1" - Dim NombreCorto As String = "-1" - Dim RFC As String = "-1" - Dim Telefono As String = "-1" - Dim Mail As String = "-1" - - If TxtCodigo.Text.Trim <> String.Empty Then Codigo = TxtCodigo.Text.Trim - - If Codigo <> "-1" Then - If ObjClientes.GetClientes(-1, Nombre, Codigo, NombreCorto, RFC, Telefono, Mail, -1, UsuarioActual.CveEmpresa, TipoCliente:=-1) Then - If ObjClientes.DtResultados.Rows.Count > 0 Then - If UsuarioActual.CveEmpresa = 2 AndAlso UsuarioActual.CveUsuario = 77 AndAlso Not ObjClientes.CveCliente.Contiene(10450, 10460, 10458) Then - TrEmitir.Visible = False : LbAgregar.Enabled = False : BtnBuscarCliente.Enabled = False : BtnEmitirImprimir.Visible = False : TrVistaPrevia.Visible = False - UpFacturar.Update() - Exit Sub - ElseIf UsuarioActual.CveEmpresa = 2 AndAlso UsuarioActual.CveUsuario = 21 AndAlso Not ObjClientes.CveCliente.Contiene(27448) Then - TrEmitir.Visible = False : LbAgregar.Enabled = False : BtnBuscarCliente.Enabled = False : BtnEmitirImprimir.Visible = False : TrVistaPrevia.Visible = False - UpFacturar.Update() - Exit Sub - Else - HdnCveCliente.Value = ObjClientes.CveCliente.ToString() - End If - BtnBuscarCliente_Click(sender, e) - Else - Alert("No se encontró el cliente con el código: " & TxtCodigo.Text.Trim & ".", Extensiones.TipoMensaje.MsgAdvertencia) - TxtCodigo.Text = "" - LblCliente.Text = "Cliente" - LblDireccion.Text = "Dirección" - LblColonia.Text = "Colonia" - LblCiudad.Text = "Ciudad" - LblEstado.Text = "Estado" - LblCP.Text = "00000" - LblRFC.Text = "AAA010101AAA" - LblTelefono.Text = "9999999999" - trsucursalciente.Visible = False - End If - End If - ObjClientes.Dispose() - - End If - End Sub - - Private Sub HabilitarFacturacionSucursal() - trsucursalciente.Visible = True - 'LnkAgregarSucursal.Visible = True - LblSucursal.Text = "Cliente" - If (CveVenta <= 0 OrElse NuevaFactura = 1) Then - DdlSucursalCliente.Enabled = True - End If - DdlSucursalCliente_SelectedIndexChanged(DdlSucursalCliente, EventArgs.Empty) - - UpCliente.Update() - End Sub - - Protected Sub ChkFacturarSucursal_CheckedChanged(sender As Object, e As EventArgs) - - End Sub - - - - Private Sub ConfiguraTipoDocto() - - - Tr33.Visible = False - - 'si tiene la funcionalidad que se active independiente del tipo de documento RMF 15-10-2017 - Tr33.Visible = True - - If DdlTipoComprobante.SelectedValue.Contiene("Ing", "Ant") Then - BtnEmitirImprimir.Text = "Emitir e Imprimir" - 'TdReferencia.Style.Add("display", "none") - ElseIf DdlTipoComprobante.SelectedValue.Contiene("Egs", "Dev") Then - BtnEmitirImprimir.Text = "Emitir e Imprimir" - 'TdReferencia.Style.Remove("display") - ElseIf DdlTipoComprobante.SelectedValue = "Rem" Then - BtnEmitirImprimir.Text = "Registrar" - 'TdReferencia.Style.Add("display", "none") - ElseIf DdlTipoComprobante.SelectedValue.Contiene("Ped", "PeC", "PA", "Pd2") Then - BtnEmitirImprimir.Text = "Registrar" - 'TdReferencia.Style.Add("display", "none") - ElseIf DdlTipoComprobante.SelectedValue = "Cot" Then - BtnEmitirImprimir.Text = "Cotizar" - 'TdReferencia.Style.Add("display", "none") - - 'FACTURACION 3.3 - Tr33.Visible = True - - ElseIf DdlTipoComprobante.SelectedValue = "Com" Then - BtnEmitirImprimir.Text = "Registrar" - 'TdReferencia.Style.Add("display", "none") - ElseIf DdlTipoComprobante.SelectedValue.ToString() = "OP" Then - BtnEmitirImprimir.Text = "Registrar" - - End If - - UpFacturar.Update() - - End Sub - Private Sub EliminaPoliza() - - 'If UsuarioActual.Empresa.TipoContabilidad = 2 Then - - ' Dim ObjAC As New ClsContPAQi(UsuarioActual.Empresa) - ' ObjAC.IniciaTransacSQL() - ' Dim ObjConta As New ClsContabilidad - ' ObjConta.IniciaTransacSQL() - - ' Dim ErrorMovimiento = False - - ' 'Elimina la poliza - ' If UsuarioActual.Empresa.TipoContabilidad = 2 AndAlso (UsuarioActual.Empresa.UsaAC Or UsuarioActual.Empresa.UsaContabilidad) AndAlso IdPoliza > 0 Then - ' If Not ObjAC.RemovePoliza(IdPoliza) Then - ' ErrorMovimiento = True - ' End If - ' End If - - ' 'Desasocia la poliza - ' If Not ErrorMovimiento Then - ' If Not ObjConta.DesasociarPoliza(IdPoliza, UsuarioActual.CveEmpresa) Then - ' ErrorMovimiento = True - ' End If - ' End If - - ' If Not ErrorMovimiento Then - ' If Not ObjConta.UpdatePrePolizasDetalleBloquear(CvePrePoliza, False) Then - ' ErrorMovimiento = True - ' End If - ' End If - - ' If Not ErrorMovimiento Then - ' Alert("La póliza ha sido desvinculada y eliminada con éxito.", TipoMensaje.MsgInformacion) - ' ObjAC.Commit() - ' ObjConta.Commit() - ' BtnDescontabilizar.Visible = False - ' Else - ' Alert("Ocurrió un error al desvincular y/o eliminar la póliza. Por favor intente de nuevo ", TipoMensaje.MsgError) - ' ObjAC.RollBack() - ' ObjConta.RollBack() - ' End If - - ' ObjAC.Dispose() - ' ObjConta.Dispose() - - 'End If - - - - End Sub - Protected Sub DdlPS_SelectedIndexChanged1(sender As Object, e As EventArgs) - Dim Ddl As DropDownList = CType(sender, DropDownList) - Dim gvr As GridViewRow = CType(Ddl.BindingContainer, GridViewRow) - gvr.FCDropDownList("DdlUnidadMedida").DataSource = GlobalDTProductosServiciosEquivalencias(Ddl.SelectedValue.ToEntero(), -1, UsuarioActual.CveEmpresa) - gvr.FCDropDownList("DdlUnidadMedida").DataBind() - - End Sub - - Private Function CuadrarFacturaMovimientos(ByRef ObjVentas As ClsVentas, CveRemision As Integer, MovDetalle As DataTable) As DataTable - Dim MovDTCuadrados As New DataTable - MovDTCuadrados = MovDetalle.Clone - MovDTCuadrados.Clear() - - 'Llenamos el DT solo si es primera llamada - If DtRemConceptosSurtidos Is Nothing Then - Dim DtDetalleRemision As DataTable = Nothing - Dim StrCveVentasDetalle As New StringBuilder() - - If ObjVentas.GetVentaDetalle(CveRemision) Then - DtDetalleRemision = ObjVentas.DtResultados.FiltraParametros("", DistinctColumns:={"CveVenta", "CveVentaDetalle"}) - End If - - For Each RowDetalle As DataRow In DtDetalleRemision.Rows - StrCveVentasDetalle.AppendFormat("{0},", RowDetalle("CveVentaDetalle")) - Next - - If StrCveVentasDetalle.Length > 0 Then - StrCveVentasDetalle.Remove(StrCveVentasDetalle.Length - 1, 1) - End If - - If DtDetalleRemision IsNot Nothing Then - - DtRemConceptosSurtidos = New DataTable - DtRemConceptosSurtidos.Columns.Add("CveRemision", GetType(Integer)) - DtRemConceptosSurtidos.Columns.Add("CveVentaDetalle", GetType(Integer)) - DtRemConceptosSurtidos.Columns.Add("Cantidad", GetType(Decimal)) - DtRemConceptosSurtidos.Columns.Add("Surtido", GetType(Decimal)) - - 'VERIFICA SOLO LOS QUE SON TIPO PRODUCTOS - For Each dr As DataRow In DtRemisionesTmpDT.FiltraParametros($"CveTipoPS = 2 AND CveVentaDetalle IN ({StrCveVentasDetalle.ToString()})").Rows - Dim dtr As DataRow = DtRemConceptosSurtidos.NewRow - dtr("CveRemision") = CveRemision - dtr("CveVentaDetalle") = dr("CveVentaDetalle") - dtr("Cantidad") = dr("Cantidad") - dtr("Surtido") = 0 - DtRemConceptosSurtidos.Rows.Add(dtr) - Next - End If - - End If - - For Each dr As DataRow In MovDetalle.Rows - Dim rowSurtidos As DataRow = DtRemConceptosSurtidos.FiltroPrimero($"CveVentaDetalle={dr("CveVentaDetalle")}") - Dim rowSurtidosP As DataRow = DtRemConceptosSurtidos.Select($"CveVentaDetalle={dr("CveVentaDetalle")}").FirstOrDefault - Dim Indice As Integer = DtRemConceptosSurtidos.Rows.IndexOf(rowSurtidosP) - - 'Si no se ha terminado de surtir agregamos el movimiento - If Indice >= 0 Then - ' rowSurtidos("Surtido").ToString().ToDouble < rowSurtidos("Cantidad").ToString().ToDouble AndAlso (dr("CantidadDisponible").ToString().ToDouble - rowSurtidos("Surtido").ToString().ToDouble > 0 Or dr("Serie").ToString() <> "") - If rowSurtidos("Surtido").ToString().ToDecimal < rowSurtidos("Cantidad").ToString().ToDecimal Then - Dim CantidadSurtida As Decimal = If(dr("CantidadDisponible").ToString().ToDecimal < rowSurtidos("Cantidad").ToString().ToDouble, dr("CantidadDisponible").ToString().ToDecimal, rowSurtidos("Cantidad").ToString().ToDecimal) - - 'SI LA CANTIDAD SURTIDA SUPERA LO REQUERIDO, TOMA SOLO LO NECESARIO PARA COMPLETAR - If (rowSurtidos("Surtido").ToString().ToDecimal + CantidadSurtida) > rowSurtidos("Cantidad").ToString().ToDecimal Then - CantidadSurtida = (rowSurtidos("Cantidad").ToString().ToDecimal - rowSurtidos("Surtido").ToString().ToDecimal) - End If - - MovDTCuadrados.ImportRow(dr) - MovDTCuadrados(MovDTCuadrados.Rows.Count - 1)("Cantidad") = CantidadSurtida - DtRemConceptosSurtidos(Indice)("Surtido") = rowSurtidos("Surtido").ToString().ToDecimal + CantidadSurtida - End If - Else - ErrorList.Add("Ocurrió un error al traspasar el inventario de la remisión") - Exit For - End If - Next - - Return MovDTCuadrados - End Function - - - -#End Region - - - - -#Region "E V E N T O - B I T A C O R A" - Protected Sub GvEB_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles GvEB.RowDataBound - If e.Row.RowType = DataControlRowType.DataRow Then - If e.Row.RowIndex = 0 Then - e.Row.Cells(0).Width = Unit.Pixel(200) - e.Row.Cells(1).Width = Unit.Pixel(200) - e.Row.Cells(2).Width = Unit.Pixel(100) - e.Row.Cells(3).Width = Unit.Pixel(500) - End If - - If e.Row.DBCampo("Archivo").ToString() <> "" Then - e.Row.FCLinkButton("LinkArchivo").Visible = True - e.Row.FCLinkButton("LinkArchivo").CommandArgument = String.Format("OI\{0}", e.Row.DBCampo("Archivo").ToString()) - ScriptManager.GetCurrent(Me).RegisterPostBackControl(e.Row.FCLinkButton("LinkArchivo")) 'Registro un evento Postbacktrigger, que recargue toda la pagina para que funcione - End If - - e.Row.Cells(3).HorizontalAlign = HorizontalAlign.Left - End If - End Sub - Protected Sub BtnGuardarEventoBitacora_Click(sender As Object, e As EventArgs) Handles BtnGuardarEventoBitacora.Click - - Dim FileExtension As String = "-1" - Dim filesgral As List(Of Archivo) = Anexo.getfiles().Archivos - Dim Filename As String = "" - - For Each fileItem As Archivo In filesgral - FileExtension = IO.Path.GetExtension(String.Format("{0}Temp\{1}", AppDomain.CurrentDomain.BaseDirectory, fileItem.filename)).Replace(".", "") - Filename = fileItem.filename - Next - - Dim ObjEventos As New ClsOIEventos() - If ObjEventos.AddEventoBitacora(TxtEventoDescripcion.Text.Trim, String.Format(".{0}", FileExtension), UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveVenta:=CveVenta) Then - If Filename <> "" Then - Filename.FilesMove(String.Format("OI{0}", ObjEventos.CveEvento.ToString()), String.Format("{0}OI", UsuarioActual.Empresa.Ruta), ConcatenarDirectorioBase:=False) - End If - End If - ObjEventos.Dispose() - CargaEventoBitacora() - UPEventoBitacora.Update() - - End Sub - Private Sub CargaEventoBitacora() - If CveVenta <= 0 Then Exit Sub - - Dim ObjEventoBitacora As New ClsOIEventos() - If ObjEventoBitacora.GetAgendaBitacora(UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveVenta:=CveVenta) Then - GvEB.DataSource = ObjEventoBitacora.DtResultados.FiltraParametros("CveTipoEvento IN(6,2,1)") - Else - GvEB.DataSource = Nothing - End If - ObjEventoBitacora.Dispose() - - GvEB.DataBind() - End Sub - - Protected Sub DownloadFile(ByVal sender As Object, ByVal e As EventArgs) - Dim filePath As String = String.Format("{0}{1}", UsuarioActual.Empresa.Ruta, CType(sender, LinkButton).CommandArgument) - Dim Archivo As New System.IO.FileInfo(filePath) - - HttpContext.Current.Response.Clear() - HttpContext.Current.Response.ClearContent() - HttpContext.Current.Response.ContentType = "application/octet-stream" - HttpContext.Current.Response.AppendHeader("Content-disposition", "attachment; filename=" + Path.GetFileName(filePath)) - HttpContext.Current.Response.AddHeader("Content-Length", Archivo.Length.ToString()) - HttpContext.Current.Response.TransmitFile(filePath) - HttpContext.Current.Response.Flush() - HttpContext.Current.Response.End() - - Archivo = Nothing - End Sub - -#End Region - -#Region "BTN 'S" - Protected Sub LnkActualizarOrdenProduccion_Click(sender As Object, e As EventArgs) - If DdlOrdenProduccion.SelectedValue.ToEntero() > 0 Then - Dim ObjCGame As New ClsCGame - If ObjCGame.UpdateOrdenProduccionVenta(DdlOrdenProduccion.SelectedValue.ToEntero(), CveVenta) Then - Alert("La orden de producción fue actualizada con exito.") - End If - ObjCGame.Dispose() - Else - Alert("Tiene que seleccionar una orden de producción.", TipoMensaje.MsgAdvertencia) - End If - End Sub - - - - - - - - 'BtnRefacturacionConfirmar - Private Sub BtnRefacturacionConfirmar_Click(sender As Object, e As System.EventArgs) Handles BtnRefacturacionConfirmar.Click - ' DdlMotivoRefactura.SelectedValueExist(1) - ' DdlMotivoCancelacion.Enabled = False - - 'UpRefac.Update() - RegistraScript("$('#DivMotivoRefacturacion').modal({ backdrop: 'static', keyboard: false });", "R1") - 'CancelarDocumento(True) - End Sub - Private Sub BtnRefacturacionConfirmarAceptacion_Click(sender As Object, e As System.EventArgs) Handles BtnRefacturacionConfirmarAceptacion.Click - 'DdlMotivoCancelacion.SelectedValueExist(1) - 'DdlMotivoCancelacion.Enabled = False - - 'UpRefac.Update() - RegistraScript("$('#DivMotivoRefacturacion').modal({ backdrop: 'static', keyboard: false });", "R1") - 'CancelarDocumento(True) - End Sub - - Protected Sub BtnDescontabilizar_Click(sender As Object, e As EventArgs) - 'Alert("Hola entre", TipoMensaje.MsgError) - 'Exit Sub - - Dim ObjConta As New ClsContabilidad - Dim Movimientos As Integer = ObjConta.GetMovimientosPoliza(IdPoliza, UsuarioActual.CveEmpresa) - - 'Verifica que solo exista 1 compra asociada - If Movimientos = 1 Then - EliminaPoliza() - Else - RegistraScript("ConfirmEliminarPolizaMultiple();") - End If - - ObjConta.Dispose() - End Sub - Private Sub BtnMateriales_Click(sender As Object, e As EventArgs) Handles BtnMateriales.Click - Dim OS As New ClsOS - Dim DtDetalle As DataTable = Nothing - Dim DtDetalleMateriales As DataTable = Nothing - - DtDetalle = TmpDT.Copy - - For Each Row As DataRow In DtDetalle.Rows - If OS.GetDetalleMateriales(Row("CveOSDetalle").ToString().ToEntero(), CveOS) Then - Dim Cons As Integer = TmpDT.Rows.Count + 1 - - For Each dr As DataRow In OS.DtResultados.FiltraParametros("SeFacturara = 1 ").Rows - Dim drt As DataRow = TmpDT.NewRow - FacturaMateriales = 1 - drt("Consec") = Cons - drt("CveClasificacion") = dr("CveClasificacion") - drt("Clasificacion") = dr("Clasificacion") - drt("CvePS") = dr("CvePS") - drt("PS") = dr("PS") - drt("CodigoPS") = dr("CodigoPS") - drt("Cantidad") = dr("Cantidad") - drt("CveOSDetalle") = dr("CveOSDetalle") - drt("CveSubProyecto") = dr("CveSubProyecto") - drt("SubProyecto") = dr("SubProyecto") - drt("CveActivoFijo") = -1 - TmpDT.Rows.Add(drt) - Cons = Cons + 1 - Next - End If - DtDetalleMateriales = OS.DtResultados.FiltraParametros("SeFacturara = 1 ") - Next - OS.Dispose() - - GvPS.DataSource = TmpDT - DtInv = TmpDT.Copy.FiltraParametros("CveTipoPS = 2") - GvPS.DataBind() - UpPS.Update() - End Sub - - - - - Private Sub RegenerarPDF(CveVenta As Integer, CveEmpresa As Integer, CveUsuario As Integer, strURLHOST As String) - Try - DescargarFactura(CveVenta, CveEmpresa, CveUsuario, Regenerar:=True, strURLHOST:=strURLHOST) - Catch ex As Exception - OnError("Ocurrió error al regenerar el PDF", ex) - End Try - End Sub - -#End Region - - - Private Sub DdlMoneda_SelectedIndexChanged(sender As Object, e As EventArgs) Handles DdlMoneda.SelectedIndexChanged - CambiaMoneda() - End Sub - Private Sub CambiaMoneda() - TrConversionTipoCambio.Visible = False - TrConversionDolares.Visible = False - - Select Case DdlMoneda.SelectedValue - Case "1" - TxtTipoCambio.Text = "1" - TxtTipoCambioDlls.Text = GlobalTipoCambio(NowADS).ToString() - TrConversionDolares.Visible = True - ChkConvertirDolares.Enabled = Not UsuarioActual.TienePermisoProceso(324) - Case "2" - TxtTipoCambioDlls.Text = "1" - 'If UsuarioActual.CveEmpresa.Contiene(13, 83) OrElse ChkEmitirComercioExterior.Checked Then - ' TxtTipoCambio.Text = GlobalTipoCambio(NowADS.AddDays(-1)).ToString() - 'Else - TxtTipoCambio.Text = GlobalTipoCambio(NowADS).ToString() - 'End If - TrConversionTipoCambio.Visible = True - ChkConvertirDoctoPesos.Enabled = Not UsuarioActual.TienePermisoProceso(324) - - Case Else - 'If UsuarioActual.CveEmpresa.Contiene(13, 83) OrElse ChkEmitirComercioExterior.Checked Then - ' TxtTipoCambio.Text = GlobalTipoCambio(NowADS.AddDays(-1)).ToString() - 'Else - TxtTipoCambio.Text = GlobalTipoCambio(NowADS).ToString() - 'End If - TrConversionTipoCambio.Visible = True - End Select - - If UsuarioActual.CveEmpresa.Contiene(13, 83) Then - TxtTipoCambio.Enabled = True - TxtTipoCambioDlls.Enabled = True - TxtTipoCambio.ReadOnly = False - TxtTipoCambioDlls.ReadOnly = False - End If - - - UpPS.Update() - - - End Sub - - -#Region " BUSCAR CLIENTE " - Protected Sub BtnBuscarCliente_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles BtnBuscarCliente.Click - ViewState("CveCliente") = HdnCveCliente.Value.ToEntero() - CargaCliente(HdnCveCliente.Value.ToEntero()) - If DdlPS.SelectedValue IsNot Nothing AndAlso DdlPS.SelectedValue.ToEntero() > 0 Then - DdlPS_SelectedIndexChanged(sender, e) - DdlPS.Focus() - Else - TxtCantidad.Focus() - End If - - End Sub - - - - - - -#End Region - - - -#Region "IMPUESTOS LOCALES" - Private Sub GvImpuestosLocales2_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles GvImpuestosLocales2.RowDataBound - If e.Row.RowType = DataControlRowType.DataRow Then - 'e.Row.FCTextBox("TxtImpuestoLocalPS").Text = (TxtSubTotal.Text.ToDouble - (TxtSubTotal.Text.ToDouble * (e.Row.DBCampo("Porcentaje").ToString().ToDouble) / 100)).ToString() - e.Row.FCTextBox("TxtImpuestoLocalPS").Attributes.Add("onKeyUp", String.Format("FnSuma();")) - - End If - End Sub - - - Private Function RegeneracionPolizas(ByRef ObjVentas As ClsVentas, ByRef ObjConta As ClsContabilidad, ObjBancos As ClsBancos) As Boolean - - Dim ErrorCancelar As Boolean = False - Dim Mensaje As String = "" - - CreaObjetosVenta() - - 'If UsuarioActual.Empresa.TipoContabilidad = 2 AndAlso UsuarioActual.Empresa.UsaAC Then - ' ObjAC = New ClsContPAQi(UsuarioActual.Empresa) : ObjAC.IniciaTransacSQL() - 'End If - - 'REMOVEMOS LOS CONCEPTOS DE LA PREPOLIZA - ErrorCancelar = Not ObjConta.RemovePrePolizasDetalle(CvePrePoliza, -1, CveVenta, 2) - - ObjFactura.CveVenta = CveVenta - ObjFactura.CvePrePoliza = CvePrePoliza - - 'VUELVE A GENERAR LAS PREPOLIZAS - If Not ErrorCancelar Then ErrorCancelar = ProcesoPrepolizas(ObjConta, ObjFactura, -1, TmpDT, 1, ObjBancos, ObjVentas) - - If Not ErrorCancelar Then ErrorCancelar = GuardarVentaImpuestosLocales(ObjVentas, ObjConta, ObjFactura, 1) - - Return ErrorCancelar - End Function - -#End Region - -#Region " DEVOLUCION ALMACEN " - - Protected Sub LBDevolucionAlmacen_Click(sender As Object, e As EventArgs) - Dim SaldoAlmacen As Decimal = 0 - - Dim ErrorVerificacion As Boolean = False - - Using ObjInv As New ClsInventarios - If ObjInv.GetInv_Mov(CveVenta, UsuarioActual.CveEmpresa) Then - If ObjInv.DtResultados.Rows.Count > 0 Then - TieneAlmacen = True - End If - Else - ErrorVerificacion = True - End If - End Using - - If ErrorVerificacion Then - Alert("No se pudieron verificar los movimientos de almacen del documento.", TipoMensaje.MsgError) - Exit Sub - End If - - If Not TieneAlmacen Then - Alert("El documento no tiene movimientos de almacen.", TipoMensaje.MsgAdvertencia) - Exit Sub - End If - - Using ObjVentas As New ClsVentas - If ObjVentas.GetVenta(CveVenta, UsuarioActual.CveEmpresa, VerificaAlmacen:=True) Then - If ObjVentas.DtResultados.Rows.Count > 0 Then - Dim DbRowVenta As DataRow = ObjVentas.DtResultados.Rows(0) - Me.DevolucionAlmacen = DbRowVenta("EsDevolucionVenta").ToString().ToEntero() - SaldoAlmacen = DbRowVenta("SaldoAlmacen").ToString().ToDecimal() - End If - End If - End Using - - If DdlTipoComprobante.SelectedValue.ToString() = "Rem" AndAlso SaldoAlmacen = 0 Then - Alert("El documento ya fue devuelto.", TipoMensaje.MsgAdvertencia) - Exit Sub - End If - - If DdlTipoComprobante.SelectedValue.ToString() = "Ing" AndAlso SaldoAlmacen = 0 Then - Alert("El movimiento ya fue devuelto.", TipoMensaje.MsgAdvertencia) - Exit Sub - End If - - - - Dim EstatusDevolucion As Integer = If(Me.DevolucionAlmacen = 0, 1, 0) - - Dim ObjV As New ClsVentas - If ObjV.UpdateVentasDevolucionAlmacen(EstatusDevolucion, CveVenta) Then - Alert("La solicitud de Devolución de Almacén se guardó correctamente") - End If - ObjV.Dispose() - - Me.DevolucionAlmacen = EstatusDevolucion - - 'InicializaDevolucionAlmacen() - 'UpnTools.Update() - - End Sub - -#End Region - - - -#Region "Metodos Viejos" - - Private Sub GvPS_RowCommand(sender As Object, e As GridViewCommandEventArgs) Handles GvPS.RowCommand - If e.CommandName = "Clonar" Then - Dim RowNum As Integer = Convert.ToInt32(e.CommandArgument) - Dim GvRow As GridViewRow = GvPS.Rows(RowNum) - TxtCantidad.Text = GvPS.Rows(RowNum).FCLiteral("LtlCantidad").Text - DdlClasificacion.SelectedValue = GvRow.DataKey("CveClasificacion") - DdlPS.SelectedValue = GvRow.DataKey("CvePS") - DdlPS_SelectedIndexChanged(Nothing, Nothing) - DdlUnidadMedida.SelectedValue = GvRow.DataKey("CveUM") - TxtObsPS.Text = GvRow.FCLiteral("LtlObsPS").Text - 'DdlProyecto.SelectedValue = GvRow.DataKey("CveProyecto") - 'DdlProyecto_SelectedIndexChanged(Nothing, Nothing) - 'DdlSubProyecto.SelectedValue = GvRow.DataKey("CveSubProyecto") - TxtPrecio.Text = GvRow.FCLiteral("LtlPU").Text - RegistraScript("Recalcula();") - LbAgregar_Click(Nothing, Nothing) - Else - DdlPS_SelectedIndexChanged(Nothing, Nothing) - End If - End Sub - Protected Sub OrdenarGvPS(ByVal sender As Object, ByVal e As EventArgs) - - For Each row As GridViewRow In GvPS.Rows - TmpDT.Rows(row.RowIndex)("Orden") = row.FCTextBox("TxtOrden").Text.ToEntero() - Next - - Dim resultados = From OrdenDT In TmpDT - Order By OrdenDT("Orden").ToString().ToEntero() - Select OrdenDT - TmpDT = resultados.CopyToDataTable - CalculaTotalesVenta() - - GvPS.DataSource = TmpDT - GvPS.DataBind() - UpPS.Update() - - End Sub - -#End Region - - -#Region "DESCARGAR E IMPRIMIR LISTADO" - Public Sub DescargarFormato() - Dim Directorio As String = ModExtensiones.DirectorioBaseEmpresas & "Empresas\Grales\Formatos\FormatoVentas.xlsx" - - Dim Archivo As New IO.FileInfo(Directorio) - If Archivo.Exists Then - Response.Clear() - Response.ClearHeaders() - Response.ClearContent() - Response.AddHeader("Content-Disposition", "attachment; filename=" + Archivo.Name) - Response.AddHeader("Content-Length", Archivo.Length.ToString()) - Response.ContentType = "text/plain" - Response.Flush() - Response.TransmitFile(Archivo.FullName) - Response.End() - End If - End Sub - - Private Sub CargarArchivo(Ruta As String, FileName As String, Tipo As String, FileUrl As String) - Dim dt As New DataTable - Dim ErrorArchivo As Boolean = False - Dim n As Integer = 0 - dt = ReadExcelFile(FileUrl, True) - If Not ErrorArchivo Then - If Not dt.Columns(0).ColumnName = "Cantidad" Then - Alert("El nombre de la primera columna debe ser 'Cantidad'.Favor de corregirlo", TipoMensaje.MsgError) - Exit Sub - End If - If Not dt.Columns(1).ColumnName = "Código" Then - Alert("El nombre de la segunda columna debe ser 'Código'. Favor de corregirlo", TipoMensaje.MsgError) - Exit Sub - End If - If Not dt.Columns(2).ColumnName = "Codigo Barras" Then - Alert("El nombre de la tecera columna debe ser 'Codigo Barras'. Favor de corregirlo", TipoMensaje.MsgError) - Exit Sub - End If - If Not dt.Columns(3).ColumnName = "Producto/Servicio" Then - Alert("El nombre de la cuarta columna debe ser 'Producto/Servicio'. Favor de corregirlo", TipoMensaje.MsgError) - Exit Sub - End If - If Not dt.Columns(4).ColumnName = "UM" Then - Alert("El nombre de la quinta columna debe ser 'U.M'. Favor de corregirlo", TipoMensaje.MsgError) - Exit Sub - End If - If Not dt.Columns(5).ColumnName = "Precio Unitario" Then - Alert("El nombre de la sexta columna debe ser 'Precio Unitario'. Favor de corregirlo", TipoMensaje.MsgError) - Exit Sub - End If - If Not dt.Columns(6).ColumnName = "Proyecto" Then - Alert("El nombre de la séptima columna debe ser 'Proyecto'. Favor de corregirlo", TipoMensaje.MsgError) - Exit Sub - End If - If Not dt.Columns(7).ColumnName = "Observaciones" Then - Alert("El nombre de la octava columna debe ser 'Observaciones'. Favor de corregirlo", TipoMensaje.MsgError) - Exit Sub - End If - - If Not dt.Columns(8).ColumnName = "Tiempo Entrega" Then - Alert("El nombre de la octava columna debe ser 'Tiempo Entrega'. Favor de corregirlo", TipoMensaje.MsgError) - Exit Sub - End If - - dt.TableName = "Datos" - - Dim DtSubProyecto As DataTable = GlobalDTSubProyectos(-1, CveEmpresa:=UsuarioActual.CveEmpresa) - DtSubProyecto.CaseSensitive = False - If Not ErrorArchivo Then - NumRow = 1 - Dim RowNoEncontrados As String = "" - Dim NumAgregados As Integer = 0 - For Each Row As DataRow In dt.Rows - NumAgregados = NumAgregados + 1 - Dim Cantidad As Decimal = Row("Cantidad").ToString().ToDecimal - Dim UM As String = Row("UM").ToString() - Dim Codigo As String = Row("Código").ToString().Trim.ToUpper - Dim CodigoBarras As String = Row("Codigo Barras").ToString().Trim.ToUpper - Dim ProductoServicio As String = Row("Producto/Servicio").ToString().Trim.ToUpper - Dim PrecioUnitario As Decimal = Row("Precio Unitario").ToString().ToDecimal - Dim Proyecto As String = Row("Proyecto").ToString().Trim.ToUpper - Dim Observaciones As String = Row("Observaciones").ToString().Trim.ToUpper - Dim TiempoEntrega As String = Row("Tiempo Entrega").ToString() - Dim CvePS As Integer = 0 - Dim CveClasificacion As Integer = 0 - Dim CveUM As Integer = 0 - Dim CodigoPS As Integer = 0 - Dim DrProyecto As DataRow - Dim SubProyecto As String = "" - Dim CveProyecto As Integer = 0 - Dim CveSubProyecto As Integer = 0 - NumRow = NumRow + 1 - - If Proyecto <> "" Then - DrProyecto = DtSubProyecto.FiltroPrimero($"(SubProyecto) = '{Proyecto}'") - If DrProyecto IsNot Nothing Then - CveSubProyecto = DrProyecto("CveSubProyecto").ToString().ToEntero() - CveProyecto = DrProyecto("CveProyecto").ToString().ToEntero() - SubProyecto = DrProyecto("SubProyecto").ToString() - End If - Else - CveProyecto = -1 - CveSubProyecto = -1 - End If - - If Codigo <> "" Then - - Using ObjPS As New ClsProductosServicios - If ObjPS.GetPS(-1, -1, UsuarioActual.CveEmpresa, Codigo:=Codigo) Then - If ObjPS.CvePS > 0 Then - CvePS = ObjPS.CvePS - CveUM = ObjPS.CveUnidadMedida - CveClasificacion = ObjPS.CveClasificacion - Else - RowNoEncontrados = String.Format("{3}    - No se encontró {0} en la fila {1}, columna {2}<\BR>", Codigo, NumRow, "Codigo", RowNoEncontrados) - End If - Else - RowNoEncontrados = String.Format("{3}    - No se encontró {0} en la fila {1}, columna {2}<\BR>(NoBD)", Codigo, NumRow, "Codigo", RowNoEncontrados) - End If - End Using - - ElseIf CodigoBarras <> "" Then - - Using ObjPS As New ClsProductosServicios - If ObjPS.GetPS(-1, -1, UsuarioActual.CveEmpresa, CodigoBarras:=CodigoBarras) Then - If ObjPS.CvePS > 0 Then - CvePS = ObjPS.CvePS - CveUM = ObjPS.CveUnidadMedida - CveClasificacion = ObjPS.CveClasificacion - Else - RowNoEncontrados = String.Format("{3}    - No se encontró {0} en la fila {1}, columna {2}<\BR>", Codigo, NumRow, "Codigo", RowNoEncontrados) - End If - Else - RowNoEncontrados = String.Format("{3}    - No se encontró {0} en la fila {1}, columna {2}<\BR>(NoBD)", Codigo, NumRow, "Codigo", RowNoEncontrados) - End If - End Using - - ElseIf ProductoServicio <> "" Then - - Using ObjPS As New ClsProductosServicios - If ObjPS.GetPS(-1, -1, UsuarioActual.CveEmpresa, CodigoBarras:=CodigoBarras) Then - If ObjPS.CvePS > 0 Then - CvePS = ObjPS.CvePS - CveUM = ObjPS.CveUnidadMedida - CveClasificacion = ObjPS.CveClasificacion - Else - RowNoEncontrados = String.Format("{3}    - No se encontró {0} en la fila {1}, columna {2}<\BR>", Codigo, NumRow, "Codigo", RowNoEncontrados) - End If - Else - RowNoEncontrados = String.Format("{3}    - No se encontró {0} en la fila {1}, columna {2}<\BR>(NoBD)", Codigo, NumRow, "Codigo", RowNoEncontrados) - End If - End Using - Else - RowNoEncontrados &= "<\BR>    - En la fila " & NumRow & " no se especificó código, código de barras ó descripción." - End If - - If CvePS > 0 Then - - If PrecioUnitario <= 0 Then - Dim ObjPrecioSugerido As Modelos.MPrecioSugerido = CalculaPrecioSugerido(CvePS, CveClasificacion) - PrecioUnitario = ObjPrecioSugerido.PrecioSugerido - End If - - AgregarProductoServicio(Cantidad, CveUM, UM, -1, "", - CvePS, HdnPS.Value, Observaciones, PrecioUnitario, 0, - CveProyecto, Proyecto, CveSubProyecto, SubProyecto, - TiempoEntrega:=TiempoEntrega) - End If - Next - - CalculaTotalesVenta() - - If RowNoEncontrados.Length > 0 Then - Alert("Los siguientes productos o servicios no se encontraron en la Base de Datos.<\BR>" & RowNoEncontrados, TipoMensaje.MsgAdvertencia) - Else - Alert("Se cargaron " & NumAgregados & " productos o servicios correctamente.") - End If - End If - End If - dt.Dispose() - End Sub - - - - 'Private dtps As DataTable = Nothing - 'Private Function GetPS(Opt As String, Valor As String) As String - ' Dim StrReturn As String = String.Empty - ' Dim CvePS As Integer = 0 - ' If dtps Is Nothing Then dtps = GlobalDTPS(UsuarioActual.CveEmpresa) - ' CvePS = dtps.FiltroPrimeroValor("CvePS", Opt & " = '" & Valor & "'").ToString().ToEntero() - ' If CvePS > 0 Then - ' StrReturn = "True|" & CvePS.ToString() - ' Else - ' StrReturn = "False|    - No se encontró " & Valor & " en la fila " & NumRow & ", columna " & Opt - ' End If - ' Return StrReturn - 'End Function -#End Region - - - -#Region " BOTONERA - ACCIONES DE ABAJO " - -#Region " GENERAR FACTURA " - Protected Sub LBFacturarIngreso_Click(sender As Object, e As EventArgs) - EraCotizacion = If(DdlTipoComprobante.SelectedValue = "Cot", 1, 0) - 'DdlTipoComprobante.SelectedValue = "Ing" - EmitirDocumentoNuevo("Ing") - End Sub - Protected Sub LBFacturarAnticipo_Click(sender As Object, e As EventArgs) - EraCotizacion = If(DdlTipoComprobante.SelectedValue = "Cot", 1, 0) - 'DdlTipoComprobante.SelectedValue = "Ant" - EmitirDocumentoNuevo("Ant") - End Sub -#End Region - -#Region " GENERAR REMISION " - Private Sub BtnGenerarRemision_Click(sender As Object, e As EventArgs) Handles BtnGenerarRemision.Click - If DdlTipoComprobante.SelectedValue.Contiene("Cot", "PA", "Pd2") Then 'CUANDO ES COTIZACION O PEDIDOA O PEDIDO2 SE HARA REMISION - EraCotizacion = If(DdlTipoComprobante.SelectedValue = "Cot", 1, 0) - 'DdlTipoComprobante.SelectedValue = "Rem" - EmitirDocumentoNuevo("Rem") - End If - End Sub -#End Region - -#Region "GENERAR AUTORIZACIÓN" - - Protected Sub BtnGeneraAutorizacion_Click(sender As Object, e As EventArgs) - If DdlTipoComprobante.SelectedValue.Contiene("Pd2") Then - - EmitirDocumentoNuevo("PA") - End If - End Sub - -#End Region - -#Region " EMITIR DOCUMENTO NUEVO " - - Private Function ValidaFacturarCotizacion() As Boolean - Dim Retorno As Boolean = True - - If UsuarioActual.Empresa.Funcionalidad(558) = "1" Then - Dim Total As Decimal = TxtTotal.Text.ToDecimal() - - Dim AmortizacionNC As Decimal = 0 - - Dim TienePagos As Boolean = ((Not (DtPagos Is Nothing OrElse DtPagos.Rows.Count = 0)) AndAlso (DtPagos IsNot Nothing AndAlso DtPagos.Rows.Count > 0)) OrElse AmortizacionNC > 0 - - - If Not PermiteCredito AndAlso Not TienePagos AndAlso Total > 0 Then - Alert("Es necesario especificar un pago.", TipoMensaje.MsgAdvertencia) - Retorno = False - Return Retorno - End If - - If Not PermiteCredito AndAlso TienePagos AndAlso Total > 0 Then - Dim TotalPago As Decimal = DtPagos.SUM("Importe") + AmortizacionNC - - If TotalPago < Total Then - Alert("La suma de los pagos debe ser igual al total de la venta.", TipoMensaje.MsgAdvertencia) - Retorno = False - Return Retorno - End If - - End If - - End If - - Return Retorno - End Function - Private Sub EmitirDocumentoNuevo(TipoDoctoNuevo As String) - - - - If (FacturarSucursal AndAlso DdlSucursalCliente.SelectedValue.ToEntero() > 0 AndAlso (Me.ClienteSucursal IsNot Nothing AndAlso String.IsNullOrEmpty(Me.ClienteSucursal.RFC))) Then - Alert("La sucursal no tiene asignada un RFC.", TipoMensaje.MsgAdvertencia) - Exit Sub - End If - - Dim TieneSoloServicios As Boolean = TmpDT.MAX("CveTipoPS") = "1" - 'SI ES REMISION Y TIENE PRODUCTOS, DEBE VERIFICAR EL ALMACEN - If UsuarioActual.Empresa.Funcionalidad(531) = "1" AndAlso Not TieneSoloServicios AndAlso DdlTipoComprobante.SelectedValue = "Rem" AndAlso TipoDoctoNuevo = "Ing" AndAlso Not TmpDT.MAX("CveTipoPS") = "1" Then - Dim SaldoAlmacenExA As Decimal = 0 - 'Dim SaldoAlmacenUsados As Decimal = 0 - - Using ObjInventarios As New ClsInventarios - 'VERIFICA SI HACE FALTA DEVOLVER PRODUCTOS Y USADOS EN ESPECIFICO - If ObjInventarios.GetSaldoVentaDetalleAlmacen(CveVenta, UsuarioActual.CveEmpresa) Then - SaldoAlmacenExA = ObjInventarios.DtResultados.SUMD("SaldoAlmacen", $"CveTipoAlmacen = 10") - 'SaldoAlmacenUsados = ObjInventarios.DtResultados.SUMD("SaldoAlmacen", $"CveTipoAlmacen = 22") - End If - End Using - - 'Si ya se surtió y recibió - If SaldoAlmacenExA <= 0 Then - BtnsFacturar.Visible = False - Alert("No se puede facturar hasta que se haya surtido la remisión", TipoMensaje.MsgAdvertencia) - Exit Sub - End If - - End If - - - - Dim FolioFijo As Integer = 0 - - - - If FolioFijo = 0 Then CargaFolios(FacturarDocumentoNuevo:=True) 'RECARGA FOLIOS CON EL NUEVO TIPO DOCTO - EmitirImprimir("Ing") 'MANDA A EMITIR - PROCESO VIEJO - - - End Sub -#End Region - -#End Region - - - -#Region "PORCENTAJE IVA" - Protected Sub DdlIVA_SelectedIndexChanged(sender As Object, e As EventArgs) - If Not CveVenta > 0 Or EsCreaApartirDe Or CveDevolucion > 0 Then RecalculaIVA() - - If ModalidadEdicion AndAlso DdlTipoComprobante.SelectedValue = "Cot" Then - RecalculaIVA() - End If - - End Sub - - Private Sub RecalculaIVA() - PorcentajeIVA = Math.Round(DdlIVA.SelectedValue.ToDouble - 1, 2).ToDecimal - For Each Row As DataRow In TmpDT.Rows - If PorcentajeIVA > 0 Then - Dim DrPS As DataRow = GlobalDTPS(UsuarioActual.CveEmpresa, CvePS:=Row("CvePS").ToString().ToEntero()).FiltroPrimero("") - If DrPS IsNot Nothing Then - If DrPS("IVA").ToString().Contiene("-1", "") Then - Row("PorcentajeIVA") = PorcentajeIVA - Else - Row("PorcentajeIVA") = DrPS("IVA") - End If - - Dim PU As Decimal = Row("PU").ToString().ToDecimal().RoundSQL(6) ' el precio unitario puede llevar hasta 6 decimales permitidos - - Dim TotalCalculableImpuestos As Decimal = (Row("Cantidad").ToString().ToDecimal * PU) - Row("Descuento").ToString().ToDecimal - Dim TotalCalculableImpuestosIVA As Decimal = TotalCalculableImpuestos * (1 + Row("PorcentajeIEPS").ToString().ToDecimal) - - Row("IVA") = Row("PorcentajeIVA").ToString().ToDouble - Row("ImporteIVA") = (Row("PorcentajeIVA").ToString().ToDouble * TotalCalculableImpuestosIVA).RoundSQL(NumeroDecimales) - End If - Else - Row("IVA") = 0 - Row("PorcentajeIVA") = 0 - Row("ImporteIVA") = 0 - End If - Next - CalculaTotalesVenta() - End Sub - -#End Region - - - - - Protected Sub DdlTipoRetencion_SelectedIndexChanged(sender As Object, e As EventArgs) - - If CveVenta <= 0 OrElse EsCreaApartirDe Then - - If TmpDT IsNot Nothing AndAlso TmpDT.Rows.Count > 0 Then - For Each RowServicio As DataRow In TmpDT.Rows - Dim tClienteRetIVA As Decimal = ClienteRetIVA - If tClienteRetIVA <= 0 Then - If DdlTipoRetencion.SelectedValue.Contiene("1", "2") Then - tClienteRetIVA = 0.106667D - ElseIf DdlTipoRetencion.SelectedValue.Contiene("3") Then - tClienteRetIVA = 0.04D - ElseIf DdlTipoRetencion.SelectedValue.Contiene("0") Then - tClienteRetIVA = 0.00D - End If - ViewState("ClienteRetIVA") = tClienteRetIVA - End If - - Dim TotalCalculableImpuestos As Decimal = (RowServicio("Cantidad").ToString().ToDecimal() * RowServicio("PU").ToString().ToDecimal()) - RowServicio("Descuento").ToString().ToDecimal() - RowServicio("ImporteRetIVA") = (TotalCalculableImpuestos * ClienteRetIVA).RoundSQL() - RowServicio("PorcentajeRetIVA") = ClienteRetIVA - - Next - TxtRetIVA.Text = TmpDT.SUM("ImporteRetIVA").FormatoNumero(2) - Dim PorcentajeRetIVA As Decimal = (TmpDT.MAX("PorcentajeRetIVA").ToDecimal() * 100) - LblRetIVA.Text = PorcentajeRetIVA.FormatoNumero(2) - If PorcentajeRetIVA > 0 Then - TrRetIVA.Style.Add("display", "") - UsuarioActual.Empresa.MostrarRetIVA = True - DdlTipoRetencion.Visible = True - End If - - GvPS.DataSource = TmpDT - GvPS.DataBind() - End If - End If - UpPS.Update() - - End Sub - - - Private Function DescargarFactura(CveVenta As Integer, CveEmpresa As Integer, CveUsuarioCreo As Integer, Optional GetBytes As Boolean = True, Optional Regenerar As Boolean = False, Optional strURLHOST As String = "") As Byte() - - If String.IsNullOrEmpty(strURLHOST) Then - strURLHOST = String.Format("{0}://{1}:{2}", HttpContext.Current.Request.Url.Scheme, HttpContext.Current.Request.Url.Host, HttpContext.Current.Request.Url.Port) - End If - - Dim Url As New Uri(String.Format("{0}/Compras/PopUpVerFactura.aspx?P={1}", strURLHOST, Encripta(String.Format("OP=VTA&CVEVENTA={0}&PAG=1&GUARDAR=1®ENERAR={1}", CveVenta, If(Regenerar, "1", "0"))))) - Dim File As Byte() = Nothing - Try - Using httpClient As New HttpClient() - httpClient.Timeout = New TimeSpan(0, 2, 0) - Using request As New HttpRequestMessage(HttpMethod.Get, Url) - request.Headers.Add("ADSToken", Encripta(String.Format("CVEEMPRESA={0}&TICKS={1}&CveUsuario={2}", CveEmpresa, DateTime.UtcNow.Ticks, CveUsuarioCreo))) - Dim response = httpClient.SendAsync(request).Result - If GetBytes AndAlso response.StatusCode = Net.HttpStatusCode.OK Then - File = response.Content.ReadAsByteArrayAsync().Result - End If - End Using - End Using - Catch ex As Exception - File = Nothing - OnError("Ocurrió un error al descargar la factura", ex) - End Try - - Return File - End Function - - - Protected Sub btnupEventoBitacora_Click(sender As Object, e As EventArgs) - CargaEventoBitacora() - End Sub - - - Protected Sub BtnEditar_Click() Handles BtnEditar.Click - Dim Opcion As String = BtnEditar.Text - If Opcion = "Editar" Then - EditarHabilitarCampos() - ElseIf Opcion = "Guardar" Then - GuardarValoresEditados() - End If - End Sub - - Private Sub EditarHabilitarCampos() - 'Datos de emisión - - - 'Observaciones - TxtObsFact.Enabled = True - TxtOrdenCompra.Enabled = True - - BtnEditar.Text = "Guardar" - - - - If UsuarioActual.TienePermisoProceso(357) AndAlso LblSeTimbro.Text = "No" Then - DdlUsoCFDI.Enabled = True - End If - - If UsuarioActual.TienePermisoProceso(289) Then - If LblSeTimbro.Text = "No" Then - DdlUsoCFDI.Enabled = False - DdlMetodoPago33.Enabled = False - DdlFormaPago33.Enabled = False - End If - - - End If - - - UpParametros.Update() - UPObservaciones.Update() - UpFacturar.Update() - UPCondicionesPago.Update() - End Sub - - Private Sub GuardarValoresEditados() - Dim TieneError As Boolean = False - Dim AplicaUpdateTC As Boolean = False - - - If DdlMoneda.SelectedValue.ToEntero() = 2 AndAlso DdlTipoComprobante.SelectedValue = "Ing" Then - AplicaUpdateTC = True - End If - - - Dim ObjVentas As New ClsVentas() - ObjVentas.IniciaTransacSQL() - - If Not ObjVentas.UpdateObservacionesVenta(Me.CveVenta, UsuarioActual.CveEmpresa, -1, TxtObsFact.Text, -1, "", - "", "", TxtOrdenCompra.Text, NowADS.ToString) Then - TieneError = True - End If - - If Not TieneError AndAlso AplicaUpdateTC Then - If Not ObjVentas.UpdateVentaTC(Me.CveVenta, UsuarioActual.CveEmpresa, TxtTipoCambio.Text.ToDecimal()) Then - TieneError = True - End If - End If - - If Not TieneError Then - ObjVentas.Commit() - BtnEditar.Text = "Editar" - - Dim Liga As String = $"document.location.href=""/Ventas/Ventas.aspx?CveVenta={Me.CveVenta}"";" - Alert("La venta se actualizó correctamente", TipoMensaje.MsgInformacion, Liga, TextoConfirmacion:="Aceptar", TextoSegundoBoton:=Nothing, JSBtn2:=Nothing, ShowCloseButton:=False) - - UpParametros.Update() - UPObservaciones.Update() - UpFacturar.Update() - Else - ObjVentas.RollBack() - End If - - ObjVentas.Dispose() - 'REGENERAR EL PDF - Try - Dim CveEmpresaPDF As Integer = UsuarioActual.CveEmpresa - Dim CveUsuarioPDF As Integer = UsuarioActual.CveUsuario - - Dim strURLHOST As String = String.Format("{0}://{1}:{2}", HttpContext.Current.Request.Url.Scheme, HttpContext.Current.Request.Url.Host, HttpContext.Current.Request.Url.Port) - RegenerarPDF(CveVenta, CveEmpresaPDF, CveUsuarioPDF, strURLHOST) - Catch ex As Exception - OnError("Ocurrió un error al regenerar el PDF", ex) - End Try - End Sub - - Private Function DeshabilitarAplicarNotaDeCredito(RFC As String) As Boolean - Dim Retorno As Boolean = False - If UsuarioActual.CveEmpresa = 119 AndAlso RFC.Contiene("XAXX010101000", "XEXX010101000") AndAlso Not UsuarioActual.CveUsuario.Contiene(1719, 3761) Then - - UpnTools.Update() - Retorno = True - End If - Return Retorno - End Function - - - Private Sub DdlMetodoPago33_SelectedIndexChanged(sender As Object, e As EventArgs) Handles DdlMetodoPago33.SelectedIndexChanged - CambiaMetodoPago33() - End Sub - Private Sub CambiaMetodoPago33() - CargaFormaPago(DdlMetodoPago33.SelectedValue.ToEntero()) - End Sub - - Protected Sub ChkRequiereTecnico_CheckedChanged(sender As Object, e As EventArgs) - TdFechaOS2.Visible = ChkRequiereTecnicoModal.Checked - UpCliente.Update() - End Sub - - Protected Sub RBLTipoVenta_SelectedIndexChanged(sender As Object, e As EventArgs) - - If RBLTipoVenta.SelectedValue.ToEntero > 0 Then - DvModalTipoVentaPasoTipo.Visible = False - DvModalTipoVentaPasoCliente.Visible = True - 'DvModalTipoVentaPasoRequiereOS.Visible = False - 'DvModalTipoVentaPasoMedicoProcedimiento.Visible = False - End If - UpDvModalTipoVenta.Update() - End Sub - - Protected Sub DdlClientesWS_selectedindexchange(sender As Object, e As EventArgs) - - If DdlClientesWS.SelectedValue.ToEntero > 0 Then - - DvModalTipoVentaPasoCliente.Visible = False - DvModalTipoVentaPasoRequiereOS.Visible = True - - TxtFechaModal.Text = NowADS.ToString("yyyy-MM-dd HH:mm:ss").Replace(" ", "T") - - 'si es A - Vista o ,Fuera De Linea requiere tecnico - If RBLTipoVenta.SelectedValue.ToEntero.Contiene(1, 3) Then - ChkRequiereTecnicoModal.Checked = True - ChkRequiereTecnicoModal.Enabled = False - DvModalRequiereOSFecha.Visible = True - End If - - End If - - UpDvModalTipoVenta.Update() - - End Sub - - Protected Sub LnkDvModalTipoVentaSeuigenteRequiereTecnico_Click(sender As Object, e As EventArgs) - - If ChkRequiereTecnicoModal.Checked Then - If Not IsDate(TxtFechaModal.Text.Replace(",", "")) Then - Alert("El campo fecha no es valido.", TipoMensaje.MsgAdvertencia) - Exit Sub - End If - End If - - DvModalTipoVentaPasoRequiereOS.Visible = False - DvModalTipoVentaPasoMedicoProcedimiento.Visible = True - - UpDvModalTipoVenta.Update() - - End Sub - - Protected Sub DdlMedicoModal_SelectedIndexChanged(sender As Object, e As EventArgs) - ModalValidaMedicoProcedimiento() - End Sub - - Protected Sub DdlProcedimientoModal_SelectedIndexChanged(sender As Object, e As EventArgs) - ModalValidaMedicoProcedimiento() - End Sub - - Protected Sub ModalValidaMedicoProcedimiento() - - If DdlMedicoModal.SelectedValue.ToEntero > 0 AndAlso DdlProcedimientoModal.SelectedValue.ToEntero > 0 Then - LnkDvModalTipoVentaAceptar.Visible = True - Else - LnkDvModalTipoVentaAceptar.Visible = False - End If - - UpDvModalTipoVenta.Update() - - End Sub - - Protected Sub LnkDvModalTipoVentaCancelar_Click(sender As Object, e As EventArgs) - - LnkDvModalTipoVentaAceptar.Visible = False - - DvModalTipoVentaPasoTipo.Visible = True - DvModalTipoVentaPasoCliente.Visible = False - DvModalTipoVentaPasoRequiereOS.Visible = False - DvModalTipoVentaPasoMedicoProcedimiento.Visible = False - - DdlClientesWS.txtText.Value = "" - DdlClientesWS.txtValue.Value = "" - DdlClientesWS.ddl.SelectedValueExist(-1) - - DvModalRequiereOSFecha.Visible = False - ChkRequiereTecnicoModal.Checked = False - - RBLTipoVenta.SelectedValue = Nothing - - DdlMedicoModal.SelectedValueExist(-1) - DdlProcedimientoModal.SelectedValueExist(-1) - - UpDvModalTipoVenta.Update() - - End Sub - - - Protected Sub LnkDvModalTipoVentaAceptar_Click(sender As Object, e As EventArgs) - - ChkRequiereTecnico.Checked = ChkRequiereTecnicoModal.Checked - TxtFecha.Text = TxtFechaModal.Text - - If ChkRequiereTecnicoModal.Checked Then - TdFechaOS1.Visible = True - TdFechaOS2.Visible = True - Else - TdFechaOS1.Visible = False - TdFechaOS2.Visible = False - End If - - DdlMedico.SelectedValueExist(DdlMedicoModal.SelectedValue) - DdlProcedimiento.SelectedValueExist(DdlProcedimientoModal.SelectedValue) - - 'si es A - Vista o ,Fuera De Linea requiere tecnico - If RBLTipoVenta.SelectedValue.ToEntero.Contiene(1, 3) Then - TdFechaOS1.Visible = True - TdFechaOS2.Visible = True - ChkRequiereTecnico.Checked = True - ChkRequiereTecnico.Enabled = False - End If - - TdRequiereTecnico1.Visible = True - TdRequiereTecnico2.Visible = True - - CargaCliente(DdlClientesWS.SelectedValue.ToEntero) - - RegistraScript("$('#DvModalTipoVenta').modal('hide');") - - UpCliente.Update() - - End Sub - - Protected Sub ChkRequiereTecnicoModal_CheckedChanged(sender As Object, e As EventArgs) - - DvModalRequiereOSFecha.Visible = ChkRequiereTecnicoModal.Checked - UpDvModalTipoVenta.Update() - - End Sub - - - -End Class - From 8c8126e4cea8a3f7e257c0b6f1b76354896f40a4 Mon Sep 17 00:00:00 2001 From: rrene Date: Sat, 23 Mar 2024 12:14:39 -0700 Subject: [PATCH 108/197] =?UTF-8?q?--=20correcci=C3=B3n=20de=20palabra?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Compras/RepCxP.aspx.vb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Compras/RepCxP.aspx.vb b/Compras/RepCxP.aspx.vb index 0c06daa35..39f548632 100644 --- a/Compras/RepCxP.aspx.vb +++ b/Compras/RepCxP.aspx.vb @@ -98,7 +98,7 @@ Partial Class Compras_RepCxP If Not Page.IsPostBack Then SePersonalizo = 0 CargaCombos() - CargaGvPersonalizarRaqngoColumnas() + CargaGvPersonalizarRangoColumnas() ProcesaRequest() CargaDatos() @@ -1556,7 +1556,7 @@ Partial Class Compras_RepCxP UpBodyPersonalizar.Update() End Sub - Private Sub CargaGvPersonalizarRaqngoColumnas() + Private Sub CargaGvPersonalizarRangoColumnas() Dim ObjComp As New ClsCompras If ObjComp.GetRepCxPColumnas(UsuarioActual.CveEmpresa) Then GvPersonalizarRango.DataSource = ObjComp.DtResultados From 377e9857ca7af48a62a6435e9af9d74700529517 Mon Sep 17 00:00:00 2001 From: Jonathan Alexis Perez Morales Date: Sat, 23 Mar 2024 13:04:16 -0700 Subject: [PATCH 109/197] --Fix de generacion de NC con pronto pago --- Ventas/Ventas.aspx.vb | 1 + 1 file changed, 1 insertion(+) diff --git a/Ventas/Ventas.aspx.vb b/Ventas/Ventas.aspx.vb index 46cb61701..0c9d95a80 100644 --- a/Ventas/Ventas.aspx.vb +++ b/Ventas/Ventas.aspx.vb @@ -35253,6 +35253,7 @@ Partial Class Ventas TmpDT.Columns.Add("NumTurnos", GetType(Decimal)) TmpDT.Columns("NumTurnos").DefaultValue = 0D TmpDT.Columns.Add("NumeroPedimento", GetType(String)) + TmpDT.Columns.Add("TotalConImpuestos", GetType(Decimal)) Return TmpDT End Function From d034f59768f489465448a21d5279cec33e2866da Mon Sep 17 00:00:00 2001 From: rakcsle Date: Sat, 23 Mar 2024 13:16:39 -0700 Subject: [PATCH 110/197] GDiaz - Compras Prontos Pagos --- App_Code/ClsCompraManager.vb | 1865 +++++++++++++++++++++++++++ Compras/Compras.aspx.vb | 2341 +++++++++++++++++++++++++++++++++- Compras/eFacturas.aspx.vb | 11 +- 3 files changed, 4188 insertions(+), 29 deletions(-) create mode 100644 App_Code/ClsCompraManager.vb diff --git a/App_Code/ClsCompraManager.vb b/App_Code/ClsCompraManager.vb new file mode 100644 index 000000000..fcdc08bc1 --- /dev/null +++ b/App_Code/ClsCompraManager.vb @@ -0,0 +1,1865 @@ +Imports System.Data +Imports System.IO +Imports System.Xml +Imports ClsPaginas +Imports Extensiones +Imports Microsoft.VisualBasic + +Public Class ClsCompraManager + + Enum EnumCargaCompra + DesdeXML + DesdeArchivo + SinXML + End Enum + Public Enum EnumCFDIVersion + v32 + V33 + V40 + End Enum + + Public Enum EnumTipoCompra + Sin_definir = -1 + Gasto_con_almacen = 10 + Activo_Fijo = 1 + 'Costo_Indirecto = 2 + Almacen = 3 + Almacen_con_costo_indirecto = 8 + Costo_Indirecto = 4 + Importación = 5 + NC_Con_Productos = 6 + Apoyo_Logístico = 9 + NC_Por_Devolución = 11 + Garantia = 12 + End Enum + + + Public Enum EnumModalidadAccionPS + Agregar + Actualizar + End Enum + + Public Property CveCompra As Integer = -1 + Public Property CveProveedor As Integer + Public Property CveTipoConceptoProveedor As Integer + Public Property CveMoneda As Integer + Public Property Fecha As Date + Public ReadOnly Property SerieFolio As String + Get + If Serie.Length > 0 Then + Return $"{Serie}-{Folio}" + Else + Return $"{Folio}" + End If + End Get + End Property + + Public Property Serie As String = "" + Public Property Folio As String = "" + Public Property FolioSecundario As String = "" + Public Property Descripcion As String = "" + Public Property CFDIVersion As EnumCFDIVersion = EnumCFDIVersion.V40 + Public Property ProveedorNombre As String = "" + Public Property EsImportacion As Boolean = False + Public Property TC As Decimal = 1 + Public Property SubTotal As Decimal = 0D + Public Property SubTotal2 As Decimal = 0D + Public Property Descuento As Decimal = 0D + Public Property Total As Decimal = 0D + Public Property Moneda As String = "" + Public Property TipoComprobante As String + Public Property TipoCambio As Decimal = 1 + Public Property CompraNoDeducible As Integer = 0 + Public Property IVA As Decimal = 0D + Public Property IVADeducible As Decimal = 0D + Public Property IVANoDeducible As Decimal = 0 + Public Property IEPS As Decimal = 0D + Public Property RetIVA As Decimal = 0D + Public Property RetISR As Decimal = 0D + Public Property PorcentajeIVA As Decimal = 0 + Public Property PorcentajeISR As Decimal = 0 + Public Property CveRetIVAConcepto As Integer = -1 + Public Property CveRetISRConcepto As Integer = -1 + Public Property CveSubProyecto As Integer = -1 + Public Property UsuarioActual As Usuario + Public ReadOnly Property ConceptoPrePolizaIVA As ConceptosRetenciones + Get + Dim Ret As New ConceptosRetenciones + If EsImportacion Then + Ret.CveConceptoAcreditable = 288 + Ret.CveConceptoxAcreditar = 287 + Else + Ret.CveConceptoAcreditable = 19 + Ret.CveConceptoxAcreditar = 14 + End If + Return Ret + End Get + End Property + Public ReadOnly Property ConceptoPrePolizaRetIVA As ConceptosRetenciones + Get + Dim Ret As New ConceptosRetenciones + Dim Funcionalidad, FuncionalidadxAcred As Integer + If CveRetIVAConcepto = 1 Then + Funcionalidad = 308 : FuncionalidadxAcred = 307 + Ret.CveConceptoAcreditable = 22 + Ret.CveConceptoxAcreditar = 15 + ElseIf CveRetIVAConcepto = 2 Then + Funcionalidad = 310 : FuncionalidadxAcred = 309 + Ret.CveConceptoAcreditable = 184 + Ret.CveConceptoxAcreditar = 183 + ElseIf CveRetIVAConcepto = 3 Then + Funcionalidad = 312 : FuncionalidadxAcred = 311 + Ret.CveConceptoAcreditable = 186 + Ret.CveConceptoxAcreditar = 185 + ElseIf CveRetIVAConcepto = 4 Then + Funcionalidad = 314 : FuncionalidadxAcred = 313 + Ret.CveConceptoAcreditable = 249 + Ret.CveConceptoxAcreditar = 248 + ElseIf CveRetIVAConcepto = 5 Then + Funcionalidad = 578 : FuncionalidadxAcred = 578 + Ret.CveConceptoAcreditable = 286 + Ret.CveConceptoxAcreditar = 285 + ElseIf CveRetIVAConcepto = 6 Then + Funcionalidad = 578 : FuncionalidadxAcred = 578 + Ret.CveConceptoAcreditable = 333 + Ret.CveConceptoxAcreditar = 334 + End If + Return Ret + End Get + End Property + Public ReadOnly Property ConceptoPrePolizaRetISR As ConceptosRetenciones + Get + Dim Ret As New ConceptosRetenciones + Dim Funcionalidad, FuncionalidadxAcred As Integer + If CveRetISRConcepto = 1 Then + Funcionalidad = 316 : FuncionalidadxAcred = 315 + Ret.CveConceptoAcreditable = 23 + Ret.CveConceptoxAcreditar = 16 + ElseIf CveRetISRConcepto = 2 Then + Funcionalidad = 318 : FuncionalidadxAcred = 317 + Ret.CveConceptoAcreditable = 244 + Ret.CveConceptoxAcreditar = 243 + ElseIf CveRetISRConcepto = 3 Then + Funcionalidad = 349 : FuncionalidadxAcred = 348 + Ret.CveConceptoAcreditable = 328 + Ret.CveConceptoxAcreditar = 327 + End If + Return Ret + End Get + End Property + + Public Property CveMetodoPago As Integer + Public Property MetodoPago As String + Public Property DocumentosRelacionadosUUIDSList As List(Of String) = New List(Of String) + Public ReadOnly Property DocumentosRelacionadosUUIDSString As String + Get + Return GeneraStringDoctosRelacionados() + End Get + End Property + + Public Property DocumentosRelacionadosAnticiposUUIDList As List(Of String) = New List(Of String) + Public Property TieneAnticiposXML As Boolean = False + Public Property EmisorRFC As String + Public Property ReceptorRFC As String + Public Property UUID As String = "" + Public Property TotalRetenciones As Decimal = 0D + Public Property RetencionIVA As Decimal = 0D + Public Property RetencionISR As Decimal = 0D + Public Property SumaTotalRetenciones As Decimal = 0D + Public Property TotalTraslados As Decimal = 0D + Public Property TrasladoIVA As Decimal = 0D + Public Property TrasladoIEPS As Decimal = 0D + Public Property SumaTotalTraslados As Decimal = 0D + Public Property OtrosImpuestos As Decimal = 0D + Private Property OtrosImpuestosRetenciones As Decimal = 0D + Public Property Amortizacion As Decimal = 0D + Public Property FechaPago As Date 'FIX ME corregir usando fecha interna calculada por los dias de credito del proveedor + Public Property AplicaNotaCredito As Boolean = False + Public Property XMlStr As String + Public Property XMLCargaExistosa As Boolean = True + Public Property Observaciones As String = "" + Public Property CveEstatusFactura As Integer = 1 + Public Property CvePrePoliza As Integer = -1 + Public Property Redondeo As Decimal = 0 + Public Property IdPoliza As Integer = -1 + Public Property CveCajaChica As Integer = -1 + Public Property CvePersonal As Integer = -1 + Public Property NumeroReembolso As String = "" + Public Property CveProveedorSucursal As Integer = -1 + Public Property AplicoPromocion As Boolean = False + Public Property CveConceptoContableAlmacen As Integer = -1 + Public Property NoDeducible As Integer = 0 + Public Property CveTipoCompra As Integer = 1 + Public Property TotalOriginal As Decimal = 0D + Public Property CveTipoConcepto As Integer = 1 'FIX ME Esto tiene que ver con el CveTipoProveedor 1 y 3 es CveTipoConcepto 1 y 2 es CveTipoConcepto 2 + Public Property CveSubProyectoPrincipal As Integer = -1 + Public Property CveFactura As Integer = -1 + Public Property CveFolioGarantia As Integer = -1 + Public Property TmpDT As DataTable = New DataTable + Public Property SubTotalConceptos As Decimal = 0D + + Private Errores As StringBuilder = New StringBuilder + + Public ReadOnly Property MensajeError As String + Get + Return Errores.ToString() + End Get + End Property + + Public Property CompraSaldo As Decimal = 0D + Public Property SubTotalOriginal As Decimal = 0D + Public Property SubTotal2Original As Double = 0D + Public Property IVAOriginal As Decimal = 0D + Public Property RetIVAOriginal As Decimal = 0D + Public Property RetISROriginal As Decimal = 0D + Public Property Proyecto As String = "" + Public Property CveProyecto As Integer = -1 + Public Property SubProyecto As String = "" + Public Property TipoCompra As EnumTipoCompra = EnumTipoCompra.Sin_definir + Private Property DTTiposGastos() As DataTable + Public Property CveTipoProveedor As Integer = -1 + Public Property IEPSGasto As Boolean = False + Public Property OtrosImpuestosGasto As Boolean = False + Public Property OCVinculada As Boolean = False + Public Property NumNoDed As Integer = 0 + Public Property CveTipoPoliza As Integer = -1 + Public Property NombreProveedor As Object + Public Property CveCreditoDetalle As Integer = -1 + Public Property CveIE As Integer = -1 + Public Property CveCompraAmortizacion As Integer = -1 + + Public Sub New(XmlFuente As String, OpcionCarga As EnumCargaCompra, DTTiposGastos As DataTable, UsuarioActual As Usuario) + + Errores = New StringBuilder + + Me.DTTiposGastos = DTTiposGastos + Me.UsuarioActual = UsuarioActual + + If OpcionCarga = EnumCargaCompra.DesdeArchivo Then + CargaDesdeArchivo(XmlFuente) + Else + CargaDesdeString(XmlFuente) + End If + + End Sub + + Private Sub CargaDesdeArchivo(XmlFuenteRuta As String) + + Dim XMLDoc As New XmlDocument + + If IO.File.Exists(XmlFuenteRuta) Then + XMlStr = File.ReadAllText(XmlFuenteRuta).Replace("<br>", "").Replace("<", "").Replace("o;?", "") + Try + XMLDoc.LoadXml(XMlStr) + XMLCargaExistosa = True + Catch ex As Exception + Try + Dim oReader As New StreamReader(XmlFuenteRuta, Encoding.GetEncoding("ISO-8859-1")) + XMLDoc.Load(oReader) + oReader.Dispose() + XMLCargaExistosa = True + Catch ex2 As Exception + GuardaLog("Error al intentar leer el XML del SAT. Error:" & ex2.ToString()) + Errores.AppendLine("Error al intentar leer el XML. Error:" & ex2.ToString()) + XMLCargaExistosa = False + End Try + End Try + End If + + If XMLCargaExistosa Then + CargaComprobanteXML(XMLDoc) + End If + + End Sub + Private Sub CargaDesdeString(XmlFuente As String) + XMlStr = XmlFuente.Replace("<br>", "").Replace("<", "").Replace("o;?", "") + Dim XMLDoc As New XmlDocument + Try + XMLDoc.LoadXml(XMlStr) + XMLCargaExistosa = True + Catch ex As Exception + GuardaLog("Error al intentar leer . Error:" & ex.ToString()) + Errores.AppendLine("Error al intentar leer el XML. Error:" & ex.ToString()) + XMLCargaExistosa = False + End Try + + If XMLCargaExistosa Then + CargaComprobanteXML(XMLDoc) + End If + + End Sub + + Private Sub CargaComprobanteXML(XMLDoc As XmlDocument) + Dim nodo As XmlNode = XMLDoc.DocumentElement + + Serie = ValorXML(nodo, "serie") + + Dim StrCFDIVerion As String = ValorXML(nodo, "version") + + If StrCFDIVerion = "3.2" Then + CFDIVersion = EnumCFDIVersion.v32 + ElseIf StrCFDIVerion = "3.3" Then + CFDIVersion = EnumCFDIVersion.V33 + ElseIf StrCFDIVerion = "4.0" Then + CFDIVersion = EnumCFDIVersion.V40 + Else + GuardaLog($"CFDI Versión {StrCFDIVerion} no soportada") + Errores.AppendLine($"CFDI Versión {StrCFDIVerion} no soportada") + XMLCargaExistosa = False + Exit Sub + End If + + Folio = ValorXML(nodo, "folio") + Fecha = ValorXML(nodo, "fecha").ToDate + SubTotal = ValorXML(nodo, "subTotal").ToDecimal + Total = ValorXML(nodo, "total").ToDecimal + Descuento = ValorXML(nodo, "descuento").ToDecimal + Moneda = ValorXML(nodo, "Moneda") + + CveMoneda = GlobalDTMonedas().FiltroPrimeroValor("CveMoneda", $" AbreviaturaSAT = '{Moneda}' ").ToEntero + If Not CveMoneda > 0 Then + GuardaLog($"Moneda {Moneda} no se obtuvo la clabe") + Errores.AppendLine($"Moneda {Moneda} no se obtuvo la clabe") + XMLCargaExistosa = False + Exit Sub + End If + + TipoComprobante = ValorXML(nodo, "tipoDeComprobante") + TipoCambio = ValorXML(nodo, "TipoCambio", "1").ToDecimal + + If CFDIVersion = EnumCFDIVersion.V33 Or CFDIVersion = EnumCFDIVersion.V40 Then + Dim drm As DataRow = GlobalDTVtaMetodoPago.FiltroPrimero(String.Format("ClaveMetodoPagoSAT = '{0}'", ValorXML(nodo, "MetodoPago"))) + If drm IsNot Nothing Then + CveMetodoPago = drm("CveMetodoPago").ToString.ToEntero + MetodoPago = drm("MetodoPagoSAT").ToString + End If + End If + + Dim namespaces As New XmlNamespaceManager(XMLDoc.NameTable) + Dim Prefijo As String = If(XMLDoc.DocumentElement.Prefix = "", "cfd", XMLDoc.DocumentElement.Prefix) + Dim cfdVer As String = "" + + If CFDIVersion = EnumCFDIVersion.v32 Then + Prefijo = "cfd" + cfdVer = "http://www.sat.gob.mx/cfd/2" + ElseIf CFDIVersion = EnumCFDIVersion.V33 Then + cfdVer = "http://www.sat.gob.mx/cfd/3" + Else ' se considera que es la version 4.0 + cfdVer = "http://www.sat.gob.mx/cfd/4" + End If + namespaces.AddNamespace(Prefijo, cfdVer) + namespaces.AddNamespace("aerolineas", "http://www.sat.gob.mx/aerolineas") + namespaces.AddNamespace("tfd", "http://www.sat.gob.mx/TimbreFiscalDigital") + namespaces.AddNamespace("implocal", "http://www.sat.gob.mx/implocal") + namespaces.AddNamespace("registrofiscal", "http://www.sat.gob.mx/registrofiscal") + + If TipoComprobante.ToUpper = "E" AndAlso (CFDIVersion = EnumCFDIVersion.V33 OrElse CFDIVersion = EnumCFDIVersion.V40) Then + Dim UUIDS As String = "" + + Dim UUIDSLista As New List(Of String) + Dim nodeCFDIRelacionados As XmlNode + nodeCFDIRelacionados = XMLDoc.SelectSingleNode(String.Format("//{0}:CfdiRelacionados", Prefijo), namespaces) + + If nodeCFDIRelacionados IsNot Nothing Then + For Each CFDIRelacionados As XmlNode In nodeCFDIRelacionados + UUIDSLista.Add("" & CFDIRelacionados.Attributes("UUID").Value.ToString & "") + Next + End If + DocumentosRelacionadosUUIDSList = UUIDSLista + + End If + + Dim node As XmlNode + node = XMLDoc.SelectSingleNode(String.Format("//{0}:Emisor", Prefijo), namespaces) + + If node IsNot Nothing AndAlso node.ChildNodes.Count > 0 Then + EmisorRFC = ValorXML(node, "RFC") + End If + + node = XMLDoc.SelectSingleNode(String.Format("//{0}:Receptor", Prefijo), namespaces) + + If node IsNot Nothing AndAlso node.ChildNodes.Count > 0 Then + ReceptorRFC = ValorXML(node, "RFC") + End If + + If UsuarioActual.CveEmpresa.Contiene(119, 7) Then + node = XMLDoc.SelectSingleNode(String.Format("//{0}:CfdiRelacionados", Prefijo), namespaces) + If node IsNot Nothing AndAlso node.ChildNodes.Count > 0 Then + If ValorXML(node, "TipoRelacion").ToString.Contiene("07") Then + Dim nodeDocumentosRelacionados As XmlNodeList = XMLDoc.SelectNodes(String.Format("//{0}:CfdiRelacionado", Prefijo), namespaces) + For Each documento As XmlNode In nodeDocumentosRelacionados + If documento.Attributes("UUID").Value <> "" Then + DocumentosRelacionadosAnticiposUUIDList.Add(documento.Attributes("UUID").Value) + End If + TieneAnticiposXML = True + Next + End If + End If + End If + + node = XMLDoc.SelectSingleNode(String.Format("//{0}:Impuestos", Prefijo), namespaces) + If node IsNot Nothing AndAlso node.ChildNodes.Count > 0 Then + Dim nodeRetenciones As XmlNodeList = XMLDoc.SelectNodes(String.Format("//{0}:Comprobante/{0}:Impuestos/{0}:Retenciones/{0}:Retencion", Prefijo), namespaces) + + TotalRetenciones = ValorXML(node, "totalImpuestosRetenidos", "0").ToDecimal + + If CFDIVersion = EnumCFDIVersion.V33 OrElse CFDIVersion = EnumCFDIVersion.V40 Then + + For Each retencion As XmlNode In nodeRetenciones + If retencion.Attributes("Impuesto").Value = "002" Then RetencionIVA += retencion.Attributes("Importe").Value.ToDecimal + If retencion.Attributes("Impuesto").Value = "001" Then RetencionISR += retencion.Attributes("Importe").Value.ToDecimal + Next + + Else + + For Each retencion As XmlNode In nodeRetenciones + If retencion.Attributes("impuesto").Value = "IVA" Then RetencionIVA += retencion.Attributes("importe").Value.ToDecimal + If retencion.Attributes("impuesto").Value = "ISR" Then RetencionISR += retencion.Attributes("importe").Value.ToDecimal + Next + End If + SumaTotalRetenciones += RetencionIVA + SumaTotalRetenciones += RetencionISR + + TotalTraslados = ValorXML(node, "totalImpuestosTrasladados", "0").ToDecimal + Dim nodeTraslados As XmlNodeList = XMLDoc.SelectNodes(String.Format("//{0}:Comprobante/{0}:Impuestos/{0}:Traslados/{0}:Traslado", Prefijo), namespaces) + + If CFDIVersion = EnumCFDIVersion.V33 OrElse CFDIVersion = EnumCFDIVersion.V40 Then + + For Each traslado As XmlNode In nodeTraslados + + If traslado.Attributes("Importe") IsNot Nothing Then + If traslado.Attributes("Impuesto").Value = "002" Then TrasladoIVA += traslado.Attributes("Importe").Value.ToDecimal + If traslado.Attributes("Impuesto").Value = "003" Then TrasladoIEPS += traslado.Attributes("Importe").Value.ToDecimal + End If + Next + Else + + For Each traslado As XmlNode In nodeTraslados + If traslado.Attributes("Importe") IsNot Nothing Then + If traslado.Attributes("impuesto").Value = "IVA" Then TrasladoIVA += traslado.Attributes("importe").Value.ToDecimal + + If traslado.Attributes("impuesto").Value = "IEPS" Then TrasladoIEPS += traslado.Attributes("importe").Value.ToDecimal + End If + Next + End If + + SumaTotalTraslados += TrasladoIVA + SumaTotalTraslados += TrasladoIEPS + End If + + Dim nodeComp As XmlNode = XMLDoc.SelectSingleNode(String.Format("//{0}:Complemento", Prefijo), namespaces) + If node IsNot Nothing AndAlso node.ChildNodes.Count > 0 Then + + Dim nodeTFD As XmlNode = nodeComp.SelectSingleNode(String.Format("//{0}:TimbreFiscalDigital", "tfd"), namespaces) + + UUID = ValorXML(nodeTFD, "UUID", "") + + Dim nodeRF As XmlNode = nodeComp.SelectSingleNode(String.Format("//{0}:CFDIRegistroFiscal ", "registrofiscal"), namespaces) + If nodeRF IsNot Nothing Then + Folio = ValorXML(nodeRF, "folio").TrimStart("0"c) + End If + + node = node.SelectSingleNode(String.Format("//{0}:ImpuestosLocales", "implocal"), namespaces) + + If node IsNot Nothing AndAlso node.ChildNodes.Count > 0 Then + OtrosImpuestos = ValorXML(node, "TotaldeTraslados", "0").ToDecimal + '2022.06.04-- se quitan los datos de retenciones de impuestos locales, generan conflicto. RMF + 'OtrosImpuestosRetenciones = ValorXML(node, "TotaldeRetenciones", "0").ToDecimal + End If + End If + + + If XMLCargaExistosa Then + If Not ValidateUUID(UUID) Then + GuardaLog($"UUID Invalido {UUID} .") + Errores.AppendLine($"UUID Invalido {UUID} .") + XMLCargaExistosa = False + End If + End If + + +#Region "DETALLES" + + Dim ObjeFacturas As New ClsCompras + Dim AjustaUltimoConcepto As Boolean = False + + Dim nodeconceptos As XmlNode = XMLDoc.SelectSingleNode(String.Format("//{0}:Conceptos", Prefijo), namespaces) + Dim XML As String = Replace(nodeconceptos.OuterXml, "", "") 'salto de linea html + XML = XML.Replace("<br>", "") + XML = XML.Replace("<", "") + + XML = XML.Replace("&", "") 'adicional, si hay otros + + If ObjeFacturas.GetFacturasComparacionXML(StrCFDIVerion, XML, UsuarioActual.CveEmpresa) Then + TmpDT = ObjeFacturas.DtResultados + TmpDT.Columns.Add("CveSATPSActualizado") + SubTotalConceptos = TmpDT.SUMD("Total").RoundSQL + + If Not TmpDT.Columns.Contains("Amortizacion") Then + TmpDT.Columns.Add("Amortizacion", GetType(Decimal)) + End If + '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")) + Next + + If ProductosCodigoSATNoPermitidos.ToString.Length > 0 Then + Errores.AppendLine($"El comprobante contiene productos con código SAT '01010101', revise los productos:

    {ProductosCodigoSATNoPermitidos.ToString}") + + End If + Else + GuardaLog($"Error al cargar detalles GetFacturasComparacionXML.") + Errores.AppendLine($"Error al cargar detalles GetFacturasComparacionXML.") + XMLCargaExistosa = False + End If + + ObjeFacturas.Dispose() + + If CFDIVersion = EnumCFDIVersion.V33 OrElse CFDIVersion = EnumCFDIVersion.V40 Then + If Not TmpDT.Columns.Contains("Amortizacion") Then + TmpDT.Columns.Add("Amortizacion", GetType(Decimal)) + End If + TmpDT.AcceptChanges() + ValidacionesTotalesXml() + End If + + Me.PorcentajeIVA = TmpDT.MAX("IVAPorcentaje").ToDecimal + +#End Region + End Sub + + Public Function ConfiguraRegistroRapidoReembolso(CvePS As Integer, CveSubProyecto As Integer, CveCajaChica As Integer, CvePersonal As Integer, CveRetIVAConcepto As Integer, CveRetISRConcepto As Integer, NumeroReembolso As String) As Boolean + + Dim respuesta As Boolean = True + Me.CveSubProyecto = CveSubProyecto + Me.CveSubProyectoPrincipal = CveSubProyecto + Me.CveCajaChica = CveCajaChica + Me.CvePersonal = CvePersonal + Me.CveRetIVAConcepto = CveRetIVAConcepto + Me.CveRetISRConcepto = CveRetISRConcepto + Me.CveTipoPoliza = 3 + Me.NumeroReembolso = NumeroReembolso + + Dim dRowSubProyecto As DataRow = GlobalDTSubProyectos(-1, CveSubProyecto, CveEmpresa:=UsuarioActual.CveEmpresa).FiltroPrimero("") + + If dRowSubProyecto IsNot Nothing Then + Me.Proyecto = dRowSubProyecto("Proyecto").ToString + Me.CveProyecto = (dRowSubProyecto("CveProyecto").ToString).ToEntero + Me.SubProyecto = dRowSubProyecto("SubProyecto").ToString + Else + Errores.AppendLine($"Error al cargar el Sub Proyecto CveSubProyecto: {CveSubProyecto}") + Return False + End If + + Dim DTIndex As DataTable = TmpDT.FiltraParametros("", DistinctColumns:={"Consec"}) + + For Each dRowIndex As DataRow In DTIndex.Rows + If Not UpdatePSReembolso(dRowIndex("Consec").ToString.ToEntero, CvePS) Then + respuesta = False + End If + Next + + If respuesta AndAlso IEPS > 0 Then + If Not AgregaIEPSReembolso(CvePS:=CvePS) Then + respuesta = False + Else + IEPS = 0 + End If + End If + + If Not AjustesValidacion() Then + respuesta = False + End If + + Return respuesta + + End Function + Public Function ConfiguraRegistroRapidoRemNC(CvePS As Integer, CveSubProyecto As Integer, CveCajaChica As Integer, CvePersonal As Integer, CveRetIVAConcepto As Integer, CveRetISRConcepto As Integer, NumeroReembolso As String) As Boolean + + Dim respuesta As Boolean = True + Me.CveSubProyecto = CveSubProyecto + Me.CveSubProyectoPrincipal = CveSubProyecto + Me.CveCajaChica = CveCajaChica + Me.CvePersonal = CvePersonal + Me.CveRetIVAConcepto = CveRetIVAConcepto + Me.CveRetISRConcepto = CveRetISRConcepto + Me.CveTipoPoliza = 3 + Me.NumeroReembolso = NumeroReembolso + + Dim dRowSubProyecto As DataRow = GlobalDTSubProyectos(-1, CveSubProyecto, CveEmpresa:=UsuarioActual.CveEmpresa).FiltroPrimero("") + + If dRowSubProyecto IsNot Nothing Then + Me.Proyecto = dRowSubProyecto("Proyecto").ToString + Me.CveProyecto = (dRowSubProyecto("CveProyecto").ToString).ToEntero + Me.SubProyecto = dRowSubProyecto("SubProyecto").ToString + Else + Errores.AppendLine($"Error al cargar el Sub Proyecto CveSubProyecto: {CveSubProyecto}") + Return False + End If + + Dim DTIndex As DataTable = TmpDT.FiltraParametros("", DistinctColumns:={"Consec"}) + + For Each dRowIndex As DataRow In DTIndex.Rows + If Not UpdatePSReembolso(dRowIndex("Consec").ToString.ToEntero, CvePS) Then + respuesta = False + End If + Next + + If respuesta AndAlso IEPS > 0 Then + If Not AgregaIEPSReembolso(CvePS:=CvePS) Then + respuesta = False + Else + IEPS = 0 + End If + End If + + If Not AjustesValidacion() Then + respuesta = False + End If + + Return respuesta + + End Function + + Private Function AjustesValidacion() As Boolean + Dim respuesta As Boolean = True + 'VALIDA IMPORTES + If Not ValidaTotalesGuardar() Then + respuesta = False + End If + + If Not AjustaCombustibles() Then + respuesta = False + End If + + If Not AjustaIVA() Then + respuesta = False + End If + + If Not AjustaRetIVA() Then + respuesta = False + End If + + If Not AjustaRetISR() Then + respuesta = False + End If + + Return respuesta + + End Function + + Private Function ValidaTotalesGuardar() As Boolean + Dim EsValido As Boolean = True + + 'VALIDA IMPORTES + 'VALIDA TOTAL CON LOS IMPORTES TOTALES + Dim TempSubTotal, TempDescuentos, TempIVA, TempSubTotal2, TempRetIVA, TempRetISR, TempTotal, DifTotales, TempIEPS As Decimal + + Dim Amortizacion As Decimal = 0 + Dim TieneAmortizacion As Boolean = False + If DocumentosRelacionadosAnticiposUUIDList IsNot Nothing AndAlso DocumentosRelacionadosAnticiposUUIDList.Count > 0 Then 'Fix me + ' AndAlso ArrAnticipos IsNot Nothing AndAlso ArrAnticipos.Count > 0 Then + 'TieneAmortizacion = True + End If + + 'If CveCompra < 0 AndAlso Not TieneAmortizacion Then + ' LblAmortizacion.Text = "0.00" + 'End If + + 'If UsuarioActual.CveEmpresa = 119 AndAlso TieneAmortizacion Then + ' Amortizacion = LblAmortizacion.Text.Trim.ToDecimal + ' TxtSubTotal.Text = (TxtSubTotal.Text.ToDouble + Amortizacion).ToString + 'End If + + + TempSubTotal = SubTotal + SubTotalOriginal = SubTotal + SubTotal2Original = SubTotal2 + TempDescuentos = Descuento + Amortizacion + TempSubTotal2 = TempSubTotal - TempDescuentos + TempIVA = IVA + TempIEPS = IEPS + TempRetIVA = RetIVA + TempRetISR = RetISR + TempTotal = Math.Round(TempSubTotal2 + TempIVA + TempIEPS - TempRetIVA - TempRetISR + OtrosImpuestos - Amortizacion, 2) + DifTotales = Total - TempTotal + Dim DiferenciaPermitida As Decimal = 0.6D + + If Math.Abs(DifTotales) > DiferenciaPermitida Then + Errores.AppendLine($"Los importes de los conceptos (Productos/Servicios) no cuadran con el total. Por favor verifique y vuelva a intentar.[{Math.Abs(DifTotales) - DiferenciaPermitida}]") + EsValido = False + ElseIf DifTotales <> 0 Then + SubTotal2 = (SubTotal2 + DifTotales) + SubTotal = (SubTotal + DifTotales) + SubTotalOriginal = SubTotal + SubTotal2Original = SubTotal2 + End If + + Dim DiferenciaSubtotales As Decimal = 0 + If CveCompra > 0 Or CveFactura > 0 Or OCVinculada Then + + If SubTotalOriginal = Nothing Then + SubTotalOriginal = 0 + End If + + If SubTotal2Original = Nothing Then + SubTotal2Original = 0 + End If + + DiferenciaSubtotales = SubTotal2Original.ToString.ToDecimal - TmpDT.SUM("Total").ToString.ToDecimal + '[IPP] PARCHE: Factura TELMEX para APH 12/ENERO/2018 + If CveFactura = 286290 Then + DiferenciaSubtotales += Descuento + End If + If Math.Abs(DiferenciaSubtotales) > 1 And Not CompraNoDeducible = 1 Then 'EsNoDeducible + Errores.AppendLine("Los importes de los conceptos (Productos/Servicios) no cuadran con el total. Por favor verifique y vuelva a intentar.") + EsValido = False + Else + AjustaImporteUltimoConcepto(DiferenciaSubtotales) + End If + Else + DiferenciaSubtotales = (SubTotal2 - TmpDT.SUMD("Total")).ToString.ToDecimal + If Math.Abs(DiferenciaSubtotales) > 1 Then + Errores.AppendLine("Los importes de los conceptos (Productos/Servicios) no cuadran con el total. Por favor verifique y vuelva a intentar.") + EsValido = False + Else + AjustaImporteUltimoConcepto(DiferenciaSubtotales) + End If + End If + + Return EsValido + End Function + + + + Private Function AjustaCombustibles() As Boolean + + Dim Respuesta As Boolean = False + + Dim IVADetalles As Decimal = TmpDT.SUMD("IVA", " IVA > 0 ") + Dim DiferenciaIVas As Decimal = IVA - IVADetalles + + + If Not TmpDT.Columns.Contains("AplicaIEPS") Then + TmpDT.Columns.Add(New DataColumn("AplicaIEPS", GetType(Boolean))) + End If + + If Not TmpDT.Columns.Contains("IEPSGrabaIVA") Then + TmpDT.Columns.Add(New DataColumn("IEPSGrabaIVA", GetType(Boolean))) + End If + + For Each dRow As DataRow In TmpDT.Rows + Dim DttPS As DataTable = GlobalDTPS(UsuarioActual.CveEmpresa, CvePS:=dRow("CvePS").ToString.ToEntero) + If DttPS IsNot Nothing AndAlso DttPS.Rows.Count > 0 Then + Dim DrPS As DataRow = DttPS.Rows(0) + dRow("AplicaIEPS") = Boolean.Parse(DrPS("AplicaIEPS").ToString) + dRow("IEPSGrabaIVA") = Boolean.Parse(DrPS("IEPSGrabaIVA").ToString) + Else + dRow("AplicaIEPS") = False + dRow("IEPSGrabaIVA") = False + End If + Next + + Dim DTConsulta As New DataTable + DTConsulta = TmpDT.FiltraParametros(" AplicaIEPS = 'True' AND IEPSGrabaIVA = 'False' AND IVA > 0 ") + + If DTConsulta.Rows.Count > 0 Then + + Dim IndiceContador As Integer = 0 + Dim IndiceUltimo As Integer = 0 + Dim CantidadRegistroConIVA As Decimal + + For Each dRow As DataRow In TmpDT.Rows + If Boolean.Parse(dRow("AplicaIEPS").ToString) And Boolean.Parse(dRow("IEPSGrabaIVA").ToString) = False And dRow("IVA").ToString.ToDecimal > 0 Then + IndiceUltimo = IndiceContador + CantidadRegistroConIVA = CantidadRegistroConIVA + 1 + End If + IndiceContador = IndiceContador + 1 + Next + + IVADetalles = TmpDT.SUMD("IVA", " IVA > 0 ") + DiferenciaIVas = IVA - IVADetalles + + If Math.Abs(DiferenciaIVas) > 0.01D Then + + If (TmpDT.Rows(IndiceUltimo)("IVA").ToString.ToDecimal + DiferenciaIVas) < 0 Then + + Dim AjusteteDividido As Decimal = Math.Abs(DiferenciaIVas) / CantidadRegistroConIVA + + For Each dRow As DataRow In TmpDT.Rows + If Boolean.Parse(dRow("AplicaIEPS").ToString) And Boolean.Parse(dRow("IEPSGrabaIVA").ToString) = False And dRow("IVA").ToString.ToDecimal > 0 Then + dRow("IVA") = dRow("IVA").ToString.ToDecimal - AjusteteDividido + End If + Next + Else + TmpDT.Rows(IndiceUltimo)("IVA") = TmpDT.Rows(IndiceUltimo)("IVA").ToString.ToDecimal + DiferenciaIVas + End If + TmpDT.AcceptChanges() + End If + + End If + + 'Revalidacion de ajuste + IVADetalles = TmpDT.SUMD("IVA", " IVA > 0 ") + DiferenciaIVas = IVA - IVADetalles + + If Math.Abs(DiferenciaIVas) > 0.01D Then + Respuesta = False + If IVADetalles > 0 Then + + For Each dRow As DataRow In TmpDT.Rows + If dRow("IVA").ToString.ToDecimal > 0 Then + dRow("IVA") = dRow("IVA").ToString.ToDecimal + DiferenciaIVas + TmpDT.AcceptChanges() + Respuesta = True + Exit For + End If + Next + Else + Alert("Los productos especificados en el listado no tienen asignado impuesto IVA, favor de realizar la corrección en el producto que aplique el impuesto.", TipoMensaje.MsgAdvertencia) + Respuesta = False + End If + Else + Respuesta = True + End If + + If Respuesta Then + + Dim IEPSPSDetalles As Decimal = TmpDT.SUMD("IEPSPS", " IEPSPS > 0 ") + Dim DiferenciaIEPSPS As Decimal = IEPS - IEPSPSDetalles + + Dim DTConsultaIEPSPS As New DataTable + DTConsultaIEPSPS = TmpDT.FiltraParametros(" AplicaIEPS = 'True'") + Dim IndiceContador As Integer = 0 + Dim IndicePrimero As Integer = 0 + + For Each dRow As DataRow In TmpDT.Rows + If Boolean.Parse(dRow("AplicaIEPS").ToString) And dRow("IEPSPS").ToString.ToDecimal > 0 Then + IndicePrimero = IndiceContador + Exit For + End If + IndiceContador = IndiceContador + 1 + Next + If DiferenciaIEPSPS.RoundSQL(2) <> 0 Then + + TmpDT.Rows(IndicePrimero)("IEPSPS") = TmpDT.Rows(IndicePrimero)("IEPSPS").ToString.ToDecimal + DiferenciaIEPSPS + TmpDT.AcceptChanges() + End If + + For Each dRow As DataRow In TmpDT.Rows + If dRow("IEPSPSPorcentaje").ToString.ToDecimal > 0 AndAlso dRow("IEPSPS").ToString.ToDecimal = 0 Then + dRow("IEPSPSPorcentaje") = 0 + End If + Next + TmpDT.AcceptChanges() + End If + + Return Respuesta + + End Function + + + Private Function AjustaIVA() As Boolean + + Dim Respuesta As Boolean = False + + Dim IVADetalles As Decimal = TmpDT.SUMD("IVA", " IVA > 0 ") + Dim DiferenciaIVas As Decimal = IVA - IVADetalles + + If Math.Abs(DiferenciaIVas) > 0 Then + If Math.Abs(DiferenciaIVas) <= 0.05 Then + + Dim DTConsulta As New DataTable + DTConsulta = TmpDT.FiltraParametros(" IVA > 0 ") + + If DTConsulta.Rows.Count > 0 Then + + Dim IndiceContador As Integer = 0 + Dim IndiceUltimo As Integer = 0 + Dim CantidadRegistroConIVA As Decimal + + For Each dRow As DataRow In TmpDT.Rows + If dRow("IVA").ToString.ToDecimal > 0 Then + IndiceUltimo = IndiceContador + CantidadRegistroConIVA = CantidadRegistroConIVA + 1 + End If + IndiceContador = IndiceContador + 1 + Next + + IVADetalles = TmpDT.SUMD("IVA", " IVA > 0 ") + DiferenciaIVas = IVA - IVADetalles + + If Math.Abs(DiferenciaIVas) > 0.0D Then + + If (TmpDT.Rows(IndiceUltimo)("IVA").ToString.ToDecimal + DiferenciaIVas) < 0 Then + + Dim AjusteteDividido As Decimal = Math.Abs(DiferenciaIVas) / CantidadRegistroConIVA + + For Each dRow As DataRow In TmpDT.Rows + dRow("IVA") = dRow("IVA").ToString.ToDecimal - AjusteteDividido + Next + Else + TmpDT.Rows(IndiceUltimo)("IVA") = TmpDT.Rows(IndiceUltimo)("IVA").ToString.ToDecimal + DiferenciaIVas + End If + TmpDT.AcceptChanges() + End If + End If + + 'Revalidacion de ajuste + IVADetalles = TmpDT.SUMD("IVA", " IVA > 0 ") + DiferenciaIVas = IVA - IVADetalles + + If Math.Abs(DiferenciaIVas) > 0.01D Then + Respuesta = False + If IVADetalles > 0 Then + + For Each dRow As DataRow In TmpDT.Rows + If dRow("IVA").ToString.ToDecimal > 0 Then + dRow("IVA") = dRow("IVA").ToString.ToDecimal + DiferenciaIVas + TmpDT.AcceptChanges() + Respuesta = True + Exit For + End If + Next + + Else + Errores.AppendLine("Los productos especificados en el listado no tienen asignado impuesto IVA, favor de realizar la corrección en el producto que aplique el impuesto.") + Respuesta = False + End If + Else + Respuesta = True + End If + + Else + Errores.AppendLine($"existe una diferencia de {DiferenciaIVas} entre el IVA de la compra y los detalles.") + Respuesta = False + End If + Else + Respuesta = True + End If + + Return Respuesta + + End Function + + Private Function AjustaRetIVA() As Boolean + + Dim Respuesta As Boolean = False + + Dim RetIVADetalles As Decimal = TmpDT.SUMD("RetIVA", " RetIVA > 0 ") + Dim DiferenciaRetIVA As Decimal = RetIVA - RetIVADetalles + + If Math.Abs(DiferenciaRetIVA) > 0 Then + If Math.Abs(DiferenciaRetIVA) <= 0.05 Then + + Dim DTConsulta As New DataTable + DTConsulta = TmpDT.FiltraParametros(" RetIVA > 0 ") + + If DTConsulta.Rows.Count > 0 Then + + Dim IndiceContador As Integer = 0 + Dim IndiceUltimo As Integer = 0 + Dim CantidadRegistroConRetIVA As Decimal + + For Each dRow As DataRow In TmpDT.Rows + If dRow("RetIVA").ToString.ToDecimal > 0 Then + IndiceUltimo = IndiceContador + CantidadRegistroConRetIVA = CantidadRegistroConRetIVA + 1 + End If + IndiceContador = IndiceContador + 1 + Next + + RetIVADetalles = TmpDT.SUMD("RetIVA", " RetIVA > 0 ") + DiferenciaRetIVA = RetIVA - RetIVADetalles + + If Math.Abs(DiferenciaRetIVA) > 0.0D Then + + If (TmpDT.Rows(IndiceUltimo)("RetIVA").ToString.ToDecimal + DiferenciaRetIVA) < 0 Then + + Dim AjusteteDividido As Decimal = Math.Abs(DiferenciaRetIVA) / CantidadRegistroConRetIVA + + For Each dRow As DataRow In TmpDT.Rows + dRow("RetIVA") = dRow("RetIVA").ToString.ToDecimal - AjusteteDividido + Next + + Else + TmpDT.Rows(IndiceUltimo)("RetIVA") = TmpDT.Rows(IndiceUltimo)("RetIVA").ToString.ToDecimal + DiferenciaRetIVA + End If + + TmpDT.AcceptChanges() + + End If + + End If + + 'Revalidacion de ajuste + RetIVADetalles = TmpDT.SUMD("RetIVA", " RetIVA > 0 ") + DiferenciaRetIVA = RetIVA - RetIVADetalles + + If Math.Abs(DiferenciaRetIVA) > 0.01D Then + Respuesta = False + If RetIVADetalles > 0 Then + + For Each dRow As DataRow In TmpDT.Rows + If dRow("RetIVA").ToString.ToDecimal > 0 Then + dRow("RetIVA") = dRow("RetIVA").ToString.ToDecimal + DiferenciaRetIVA + TmpDT.AcceptChanges() + Respuesta = True + Exit For + End If + Next + + Else + Errores.AppendLine("Los productos especificados en el listado no tienen asignado impuesto RetIVA, favor de realizar la corrección en el producto que aplique el impuesto.") + Respuesta = False + End If + Else + Respuesta = True + End If + + Else + Errores.AppendLine($"existe una diferencia de {DiferenciaRetIVA} entre el RetIVA de la compra y los detalles.") + End If + Else + Respuesta = True + + End If + + Return Respuesta + + End Function + + Private Function AjustaRetISR() As Boolean + + Dim Respuesta As Boolean = False + + Dim RetISRDetalles As Decimal = TmpDT.SUMD("RetISR", " RetISR > 0 ") + Dim DiferenciaRetISR As Decimal = RetISR - RetISRDetalles + + If Math.Abs(DiferenciaRetISR) > 0 Then + If Math.Abs(DiferenciaRetISR) <= 0.05 Then + + Dim DTConsulta As New DataTable + DTConsulta = TmpDT.FiltraParametros(" RetISR > 0 ") + + If DTConsulta.Rows.Count > 0 Then + + Dim IndiceContador As Integer = 0 + Dim IndiceUltimo As Integer = 0 + Dim CantidadRegistroConRetISR As Decimal + + For Each dRow As DataRow In TmpDT.Rows + If dRow("RetISR").ToString.ToDecimal > 0 Then + IndiceUltimo = IndiceContador + CantidadRegistroConRetISR = CantidadRegistroConRetISR + 1 + End If + IndiceContador = IndiceContador + 1 + Next + + RetISRDetalles = TmpDT.SUMD("RetISR", " RetISR > 0 ") + DiferenciaRetISR = RetISR - RetISRDetalles + + If Math.Abs(DiferenciaRetISR) > 0.0D Then + + If (TmpDT.Rows(IndiceUltimo)("RetISR").ToString.ToDecimal + DiferenciaRetISR) < 0 Then + + Dim AjusteteDividido As Decimal = Math.Abs(DiferenciaRetISR) / CantidadRegistroConRetISR + + For Each dRow As DataRow In TmpDT.Rows + dRow("RetISR") = dRow("RetISR").ToString.ToDecimal - AjusteteDividido + Next + + Else + TmpDT.Rows(IndiceUltimo)("RetISR") = TmpDT.Rows(IndiceUltimo)("RetISR").ToString.ToDecimal + DiferenciaRetISR + End If + + TmpDT.AcceptChanges() + + End If + + End If + + 'Revalidacion de ajuste + RetISRDetalles = TmpDT.SUMD("RetISR", " RetISR > 0 ") + DiferenciaRetISR = RetISR - RetISRDetalles + + If Math.Abs(DiferenciaRetISR) > 0.01D Then + Respuesta = False + If RetISRDetalles > 0 Then + + For Each dRow As DataRow In TmpDT.Rows + If dRow("RetISR").ToString.ToDecimal > 0 Then + dRow("RetISR") = dRow("RetISR").ToString.ToDecimal + DiferenciaRetISR + TmpDT.AcceptChanges() + Respuesta = True + Exit For + End If + Next + + Else + Errores.AppendLine("Los productos especificados en el listado no tienen asignado impuesto RetISR, favor de realizar la corrección en el producto que aplique el impuesto.") + Respuesta = False + End If + Else + Respuesta = True + End If + + Else + Errores.AppendLine($"existe una diferencia de {DiferenciaRetISR} entre el RetISR de la compra y los detalles.") + Respuesta = False + End If + Else + Respuesta = True + End If + + Return Respuesta + + End Function + + Private Function AgregaIEPSReembolso(CvePS As Integer) As Boolean + + Dim respuesta As Boolean = True + + If IEPSGasto Or OtrosImpuestosGasto Then + + 'AGREGA IEPS COMO CONCEPTO + If IEPSGasto Then + AgregarConceptoIEPS(TrasladoIEPS, CvePS) + For Each Dr As DataRow In TmpDT.Rows + Dr("IEPSPS") = 0 + Dr("IEPSPSPorcentaje") = 0 + Next + TmpDT.AcceptChanges() + End If + 'AGREGA OTROS IMPUESTOS COMO CONCEPTO + If OtrosImpuestosGasto Then + AgregarConceptoIEPS(OtrosImpuestos, CvePS) + End If + Else + respuesta = False + Errores.AppendLine("Debe seleccionar al menos un impuesto. ") + End If + CalculaTotales() + + Return respuesta + + End Function + + + Private Sub AgregarConceptoIEPS(IEPS As Decimal, CvePS1 As Integer) + Dim SubTotalR As Decimal = TmpDT.SUM("Total").ToString.ToDecimal + + Dim PSS As DataTable = GlobalDTPS(UsuarioActual.CveEmpresa).FiltraParametros(String.Format("CvePS = {0} ", CvePS1), "PS") + Dim PSS2 As DataTable = TmpDT.FiltraParametros(String.Format("CvePS = {0} ", CvePS1), "PS") + + If PSS.Rows.Count > 0 Or PSS2.Rows.Count > 0 Then + Dim CveUM As Integer = 0 + Dim UM As String = "" + Dim CveClasificacion As Integer = 0 + Dim Clasificacion As String = "" + Dim CvePS As Integer = 0 + Dim PS As String = "" + Dim CveTipoPS As Integer = 0 + + If PSS.Rows.Count > 0 Then + CveUM = PSS.Rows(0)("CveUM").ToString.ToEntero + UM = PSS.Rows(0)("UnidadMedida").ToString + CveClasificacion = PSS.Rows(0)("CveClasificacion").ToString.ToEntero + Clasificacion = PSS.Rows(0)("Clasificacion").ToString + CvePS = PSS.Rows(0)("CvePS").ToString.ToEntero + PS = PSS.Rows(0)("PS").ToString + CveTipoPS = PSS.Rows(0)("CveTipoPS").ToString.ToEntero + End If + + Dim Cantidad As Decimal = 1 + Dim CveSubProyectoContrato As String = "-1" + Dim CveProyecto As String = "-1" + Dim SubProyecto As String = "SE" + Dim Proyecto As String = "SE" + Dim Obs As String = "" + Dim PU As Decimal = IEPS + Dim Total As Decimal = Cantidad * PU + Dim IVA As Decimal = 0 + Dim Descuento As Decimal = 0 + + If PSS2.Rows.Count > 0 Then + CveUM = PSS2.Rows(0)("CveUM").ToString.ToEntero + UM = PSS2.Rows(0)("UM").ToString + CveClasificacion = PSS2.Rows(0)("CveClasificacion").ToString.ToEntero + Clasificacion = PSS2.Rows(0)("Clasificacion").ToString + CvePS = PSS2.Rows(0)("CvePS").ToString.ToEntero + PS = PSS2.Rows(0)("PS").ToString + CveTipoPS = PSS2.Rows(0)("CveTipoPS").ToString.ToEntero + + CveSubProyectoContrato = PSS2.Rows(0)("CveSubProyecto").ToString + CveProyecto = PSS2.Rows(0)("CveProyecto").ToString + SubProyecto = PSS2.Rows(0)("SubProyecto").ToString + Proyecto = PSS2.Rows(0)("Proyecto").ToString + Obs = PSS2.Rows(0)("Obs").ToString + + Dim CveTipoGasto As Integer = PSS2.Rows(0)("CveTipoGasto").ToString.ToEntero + Dim TipoGasto As String = PSS2.Rows(0)("TipoGasto").ToString + + AddPS(Cantidad, CveUM, UM, CveClasificacion, Clasificacion, CvePS, PS, CveTipoPS, CveSubProyectoContrato, SubProyecto, Proyecto, CveProyecto, Obs, PU, Total, IVA, 0, 0, 0, 0, Descuento, TCalculaTotales:=False, CveTipoGasto:=CveTipoGasto, + TipoGasto:=TipoGasto, ModalidadAccionPS:=EnumModalidadAccionPS.Agregar) + + Else + AddPS(Cantidad, CveUM, UM, CveClasificacion, Clasificacion, CvePS, PS, CveTipoPS, CveSubProyectoContrato, SubProyecto, Proyecto, CveProyecto, Obs, PU, Total, IVA, 0, 0, 0, 0, Descuento, TCalculaTotales:=False) + End If + End If + + Dim SubTotalIEPS As Decimal = TmpDT.SUMD("Total") + + Me.SubTotal = Math.Round(SubTotalIEPS, 2) + Me.SubTotalConceptos = Math.Round(SubTotalIEPS, 2) + + PSS.Dispose() + End Sub + + Private Function AddPS(Cantidad As Decimal, CveUM As Integer, UM As String, CveClasificacion As Integer, Clasificacion As String, CvePS As Integer, PS As String, CveTipoPS As Integer, CveSubProyectoContrato As String, SubProyecto As String, Proyecto As String, CveProyecto As String, + Obs As String, PU As Decimal, Total As Decimal, IVA As Decimal, RetIVA As Decimal, RetISR As Decimal, IEPSPS As Decimal, IEPSPSIVA As Decimal, Descuento As Decimal, Optional CveOrdenCompraDetalle As Integer = -1, Optional TCalculaTotales As Boolean = True, + Optional PSCodigo As String = "-", Optional PSDescripcion As String = "-", Optional CantidadF As Double = -1, Optional EntregaDirecta As Integer = -1, Optional OtrosGastos As Decimal = 0, + Optional CveSATPS As Integer = -1, Optional CargaXml As Boolean = False, Optional CveTipoGasto As Integer = -1, Optional TipoGasto As String = "", Optional PorcentajeIVA As Decimal = 0, + Optional PorcentajeIEPS As Decimal = 0, Optional PorcentajeRetIVA As Decimal = 0, Optional PorcentajeRetISR As Decimal = 0, Optional NoDeducible As Boolean = False, Optional CveContratoDetalle As Integer = -1, Optional CveCultivoCuadroDetalle As Integer = -1, + Optional CveSATPSActualizado As Boolean = False, Optional TemporadaCuadro As String = "", Optional ModalidadAccionPS As EnumModalidadAccionPS = EnumModalidadAccionPS.Agregar, Optional Con As Integer = -1, + Optional CveProgramaOperativo As Integer = -1, Optional CveUnidadAdministrativa As Integer = -1, Optional CveFuenteFinanciamiento As Integer = -1, Optional CveTipoGastoAC As Integer = -1, Optional CveClasificacionOG As Integer = -1) As Integer + + Dim Row As DataRow = Nothing + + Row = TmpDT.NewRow() + Dim Retorno As Integer = 0 + Dim CveContrato As Integer = -1 + Dim CveSubProyecto As Integer = -1 + Dim Valores As String() + + ''CONTRATOS + If CveSubProyectoContrato.Contains("|"c) Then + Valores = CveSubProyectoContrato.Split("|"c) + CveContrato = Valores(1).ToEntero + CveSubProyecto = Valores(0).ToEntero + Else + CveSubProyecto = CveSubProyectoContrato.ToEntero + End If + + 'DR PS + Dim DrPS As DataRow = Nothing + If CvePS > 0 Then + DrPS = GlobalDTPS(UsuarioActual.CveEmpresa, CvePS:=CvePS).Rows(0) + End If + + If DrPS IsNot Nothing Then + Row("PSCodigo") = If(PSCodigo = "", DrPS("PSCodigo").ToString, PSCodigo) + Row("CveMetodoInventario") = DrPS("Inv_CveMetodoInventario").ToString.ToEntero + + If CveTipoCompra = EnumTipoCompra.Garantia AndAlso DrPS("AplicaSerie").ToString = "True" Then + Row("CveMetodoInventario") = "1" + End If + + Else + Row("PSCodigo") = PSCodigo + Row("CveMetodoInventario") = 0 + End If + + If ModalidadAccionPS = EnumModalidadAccionPS.Actualizar Then + Row("Consec") = Con + Else + Row("Consec") = TmpDT.Rows.Count + 1 + End If + + If (CFDIVersion = EnumCFDIVersion.V33 Or CFDIVersion = EnumCFDIVersion.V40) And CveSATPS > 0 Then + Dim DrPSSAT As DataRow = Nothing + If CargaXml Then + DrPSSAT = GlobalDTPSATPS("-1", CveSATPS.ToString).FiltroPrimero("") + Else + DrPSSAT = GlobalDTPSATPS("-1", CveSATPS.ToString).FiltroPrimero("") + End If + If DrPSSAT IsNot Nothing Then + Row("SATClaveProductoServicio") = DrPSSAT("SATClaveProductoServicio").ToString + Row("CveSATPS") = DrPSSAT("CveSATPS").ToString + If CveSATPSActualizado Then + Row("CveSATPSActualizado") = 1 + Else + Row("CveSATPSActualizado") = 0 + End If + End If + End If + + Try + If (DrPS("CvePSCargo").ToString <> "") Then 'si es un producto de usado. que se registre contablemente como alamcen(como producto) + CveTipoPS = 2 + End If + Catch ex As Exception + + End Try + + Dim DecimalesPermitidos As Integer = 6 + + Row("CveConcepto") = TmpDT.Rows.Count + 1 + Row("Cantidad") = Math.Round(Cantidad, DecimalesPermitidos) + Row("CantidadF") = If(CantidadF = -1, Math.Round(Cantidad, DecimalesPermitidos), Math.Round(CantidadF, DecimalesPermitidos)) + Row("CveUM") = CveUM + Row("UM") = UM + Row("CveClasificacion") = CveClasificacion + Row("CveClasificacionActualizar") = CveClasificacion + Row("Clasificacion") = Clasificacion + Row("CvePS") = CvePS + Row("PS") = PS + Row("CveTipoPS") = CveTipoPS + + Row("PSDescripcion") = PSDescripcion + Row("CveSubProyecto") = CveSubProyecto.ToEntero + Row("CveProyecto") = CveProyecto.ToEntero + Row("CveContrato") = CveContrato.ToEntero + Row("SubProyecto") = If(SubProyecto = "Seleccione", "Sin Sub Proyecto", SubProyecto) + Row("Proyecto") = If(Proyecto = "Seleccione", "Sin Proyecto", Proyecto) + Row("CveActivoFijo") = -1 + Row("Obs") = Obs + Row("CveActivoFijo") = -1 + Row("CodAF") = "-1" + Row("TipoAF") = -1 + Row("CveOrdenCompraDetalle") = CveOrdenCompraDetalle + Row("EntregaDirecta") = EntregaDirecta + + Row("NoDeducible") = NoDeducible + + + Total = Math.Round(PU, DecimalesPermitidos) * Cantidad - Descuento + Row("PU") = Math.Round(PU, DecimalesPermitidos) + If CargaXml And (CFDIVersion = EnumCFDIVersion.V33 Or CFDIVersion = EnumCFDIVersion.V40) Then + + If CveFactura > 0 And IVA = 0 Then + Row("IVA") = 0 + Row("IVAPorcentaje") = 0 + Else + Row("IVA") = Math.Round(IVA, DecimalesPermitidos) + Row("IVAPorcentaje") = PorcentajeIVA + End If + + Row("RetIVA") = Math.Round(RetIVA, DecimalesPermitidos) + Row("RetIVAPorcentaje") = PorcentajeRetIVA + Row("RetISR") = Math.Round(RetISR, DecimalesPermitidos) + Row("RetISRPorcentaje") = PorcentajeRetISR + Row("IEPSPS") = Math.Round(IEPSPS, DecimalesPermitidos) + Row("IEPSPSPorcentaje") = PorcentajeIEPS + Else + 'If DdlIVA.SelectedValue.ToDouble = 0 Then Row("IVA") = 0 Else Row("IVA") = Math.Round(IVA * Total, DecimalesPermitidos) + + If CveFactura > 0 And IVA = 0 Then + Row("IVA") = 0 + Row("IVAPorcentaje") = 0 + Else + Row("IVA") = (IVA * Total).RoundSQL + Row("IVAPorcentaje") = IVA + End If + + Row("RetIVA") = (RetIVA * Total).RoundSQL + Row("RetIVAPorcentaje") = RetIVA + Row("RetISR") = (RetISR * Total).RoundSQL + Row("RetISRPorcentaje") = RetISR + Row("IEPSPS") = (IEPSPS * Total).RoundSQL + Row("IEPSPSPorcentaje") = IEPSPS + End If + + Row("ImporteConImpuestos") = (Row("Cantidad").ToString.ToDecimal * Row("PU").ToString.ToDecimal) + Row("IVA").ToString.ToDecimal + Row("IEPSPS").ToString.ToDecimal - (Row("RetIVA").ToString.ToDecimal + Row("RetISR").ToString.ToDecimal) + Row("ImporteSinImpuestos") = Row("Cantidad").ToString.ToDecimal * Row("PU").ToString.ToDecimal + + Row("IEPSPSIVA") = Math.Round(IEPSPSIVA * Total, DecimalesPermitidos) + Row("IEPSPSIVAPorcentaje") = IEPSPSIVA + Row("Descuento") = Math.Round(Descuento, DecimalesPermitidos) + Row("OtrosGastos") = Math.Round(OtrosGastos, DecimalesPermitidos) + Row("Total") = Math.Round(Total, DecimalesPermitidos) + + Row("CveTipoGasto") = CveTipoGasto + Row("TipoGasto") = If(CveTipoGasto > 0, TipoGasto, "") + + Row("CveContratoDetalle") = CveContratoDetalle + + Row("CveCultivoCuadroDetalle") = CveCultivoCuadroDetalle + Row("TemporadaCuadro") = TemporadaCuadro + + If UsuarioActual.Empresa.UsaAC Then + Row("CveProgramaOperativo") = CveProgramaOperativo + Row("CveUnidadAdministrativa") = CveUnidadAdministrativa + Row("CveFuenteFinanciamiento") = CveFuenteFinanciamiento + Row("CveTipoGastoAC") = CveTipoGastoAC + Row("CveClasificacionOG") = CveClasificacionOG + End If + 'Esta parte es para validar cuando la factura tenga ieps en o se asignara el ieps como una partida ya no se considere + If (CveFactura > 0 Or CveCompra > 0) And IEPS = 0 Then + Row("IEPSPS") = 0 + Row("IEPSPSPorcentaje") = 0 + End If + TmpDT.Rows.Add(Row) + TmpDT.Rows.IndexOf(Row) + + If TCalculaTotales Then + CalculaTotales(True) + End If + + Return Retorno + End Function + + Private Sub CalculaTotales(Optional CalculaIVA As Boolean = False, Optional EsNoDeducible As Boolean = False) + 'VARIABLES DE CALCULO + Dim LocalSubTotal, LocalDescuentos, LocalAmortizacion, LocalIVA, LocalSubTotal2, LocalRetIVA, LocalRetISR, LocalIEPSPS, LocalTotal, LocalSubTotalIVA, LocalSubTotalIEPSIVA As Decimal + + 'HACEMOS CALCULOS + LocalSubTotalIVA = TmpDT.SUMD("IVA") + LocalSubTotalIEPSIVA = TmpDT.SUMD("IEPSPSIVA") + LocalSubTotal = (TmpDT.SUMD("Total") + TmpDT.SUMD("Descuento")).RoundSQL(8) + LocalRetIVA = TmpDT.SUMD("RetIVA") + LocalRetISR = TmpDT.SUMD("RetISR") + LocalIEPSPS = TmpDT.SUMD("IEPSPS") + + If CveCompra > 0 AndAlso CveFactura > 0 Then + LocalIVA = IVA + Else + LocalIVA = If(TmpDT.SUM("IVA") > 0, LocalSubTotalIVA + LocalSubTotalIEPSIVA, 0) + End If + + LocalDescuentos = TmpDT.SUMD("Descuento") + + If Not CveCompra > 0 Then + LocalAmortizacion = Me.Amortizacion + End If + + 'RETENCIONES + Dim Retenciones As Decimal = 0 + Retenciones = LocalRetIVA + Retenciones += LocalRetISR + + + LocalSubTotal2 = LocalSubTotal - LocalDescuentos + LocalTotal = LocalSubTotal2 + LocalIVA + LocalIEPSPS - Retenciones + + 'ASIGNAMOS VALORES A VISTA + If CveCompra > 0 Or CveFactura > 0 Or Me.OCVinculada Then + SubTotal = LocalSubTotal + SubTotal2 = LocalSubTotal2 + Descuento = LocalDescuentos + + If EsNoDeducible Then + IVA = LocalIVA + RetIVA = LocalRetIVA + RetISR = LocalRetISR + IEPS = LocalIEPSPS + End If + + Total = LocalTotal + Else + SubTotal = LocalSubTotal + SubTotal2 = LocalSubTotal2 + IVA = LocalIVA + Descuento = LocalDescuentos + RetIVA = LocalRetIVA + RetISR = LocalRetISR + IEPS = LocalIEPSPS + Total = LocalTotal + 'VALORES PROPIEDAD + CompraSaldo = LocalTotal + + End If + Me.NumNoDed = TmpDT.COUNT("CvePS", "NoDeducible = True ") + + End Sub + + Private Function UpdatePSReembolso(Index As Integer, CvePS As Integer) As Boolean + + Dim Respuesta As Boolean = True + + Dim DrPS As DataRow = Nothing + Try + DrPS = TmpDT.Select($"Consec = {Index}")(0) + If DrPS Is Nothing Then + Errores.AppendLine($"No se encontrol el producto con index {Index}") + Return False + End If + Catch ex As Exception + Errores.AppendLine($"No se encontrol el producto con index {Index}") + Return False + End Try + + 'DATOS GENERALES + DrPS("Obs") = "" + DrPS("Proyecto") = Proyecto + DrPS("CveProyecto") = CveProyecto + DrPS("SubProyecto") = SubProyecto + DrPS("CveSubProyecto") = CveSubProyecto + DrPS("CveContratoDetalle") = -1 + + 'IMPORTES - [CANTIDAD Y PRECIO] + Dim Cantidad As Double = DrPS("Cantidad").ToString.ToDouble + Dim PU As Double = DrPS("PU").ToString.ToDouble + Dim Descuento As Double = DrPS("Descuento").ToString.ToDouble + Dim Total As Double = (Cantidad * PU) - Descuento + DrPS("NoDeducible") = NoDeducible + + Dim PSRow As DataRow = GlobalDTPS(UsuarioActual.CveEmpresa, CvePS:=CvePS).FiltroPrimero("") + If PSRow IsNot Nothing Then + Dim CveTipoPS As Integer = PSRow("CveTipoPS").ToString.ToEntero + If PSRow("CvePSCargo").ToString <> "" Then 'si es un producto de usado. que se registre contablemente como alamcen(como producto) + CveTipoPS = 2 + End If + + DrPS("CveClasificacion") = PSRow("CveClasificacion").ToString + DrPS("Clasificacion") = PSRow("Clasificacion").ToString + DrPS("CvePS") = CvePS + DrPS("PS") = PSRow("PS").ToString + DrPS("CveTipoPS") = CveTipoPS + DrPS("CveSATPS") = PSRow("CveSATPS").ToString.ToEntero + DrPS("SATClaveProductoServicio") = PSRow("SATClaveProductoServicio").ToString + DrPS("CveSATPSActualizado") = 0 + + DrPS("CveUM") = PSRow("CveUnidadMedida").ToString.ToEntero + DrPS("UM") = PSRow("UnidadMedida").ToString + + Dim DrTipoGasto As DataRow = Me.DTTiposGastos.FiltroPrimero("") + + DrPS("CveTipoGasto") = DrTipoGasto("CveTipoGasto") + DrPS("TipoGasto") = DrTipoGasto("TipoGasto") + + If UsuarioActual.Empresa.Funcionalidad(562).ToEntero > 0 Then + DrPS("AplicaCostoIndirecto") = "0" + End If + + DrPS("CveCultivoCuadroDetalle") = -1 + DrPS("TemporadaCuadro") = "" + + Else + Errores.AppendLine($"No se encontrol el producto con CvePS {CvePS}") + Respuesta = False + End If + TmpDT.AcceptChanges() + Return Respuesta + End Function + + Private Sub ValidacionesTotalesXml() + + If Not TmpDT.Columns.Contains("Amortizacion") Then + TmpDT.Columns.Add("Amortizacion", GetType(Decimal)) + End If + + Dim Msg As String = "" + Dim SubtotalTemp As Decimal = TmpDT.SUMD("Total") + Math.Round(TmpDT.SUM("Descuento") + Math.Round(TmpDT.SUM("Amortizacion")), 2) + Dim DescuentosTemp As Decimal = TmpDT.SUMD("Descuento") + Dim Subtotal2Temp As Decimal = TmpDT.SUMD("Total") + Dim IVATemp As Decimal = TmpDT.SUMD("IVA") + Dim IEPSTemp As Decimal = TmpDT.SUMD("IEPSPS") + Dim RetIVATemp As Decimal = TmpDT.SUMD("RetIVA") + Dim RetISRTemp As Decimal = TmpDT.SUMD("RetISR") + Dim TotalTemp As Decimal = Subtotal2Temp - RetIVATemp - RetISRTemp + Math.Round(IVATemp, 6) + IEPSTemp + OtrosImpuestos - OtrosImpuestosRetenciones + + If Math.Abs(Math.Round(DescuentosTemp, 6) - Math.Round(Descuento, 6)) > 0.01 Then + Msg &= String.Format("- Los descuentos del detalle no coinciden con el descuento general
    ") + End If + + If Math.Abs(Math.Round(IVATemp, 6) - Math.Round(TrasladoIVA, 6)) > 0.01 Then + Msg &= String.Format("- Los IVAS del detalle no coinciden con el IVA general
    ") + End If + + If Math.Abs(Math.Round(IEPSTemp, 6) - Math.Round(TrasladoIEPS, 6)) > 0.01 Then + Msg &= String.Format("- Los IEPS del detalle no coinciden con el IEPS general
    ") + End If + + If Math.Abs(Math.Round(RetIVATemp, 6) - Math.Round(RetencionIVA, 6)) > 0.01 Then + Msg &= String.Format("- Los RetIVA del detalle no coinciden con el RetIVA general
    ") + End If + + If Math.Abs(Math.Round(RetISRTemp, 6) - Math.Round(RetencionISR, 6)) > 0.01 Then + Msg &= String.Format("- Las RetISR del detalle no coinciden con el RetIVA general
    ") + End If + + If Math.Abs(Math.Round(TotalTemp, 2) - Math.Round(Total, 2)) > 0.01 Then + Msg &= String.Format("- El total generado por los detalles no coincide con el total general
    ({0}-{1})", Math.Round(TotalTemp, 2), Math.Round(Total, 2)) + End If + + If Msg <> "" Then + Errores.AppendLine($" El comprobante XML presenta las siguientes inconsistencias:{Msg}. ") + Else + + DescuentosTemp = Descuento + IVATemp = TrasladoIVA + TotalTemp = Total + RetIVATemp = RetencionIVA + RetISRTemp = RetencionISR + IEPSTemp = TrasladoIEPS + End If + + Me.SubTotal = SubtotalTemp + Me.Descuento = DescuentosTemp + Me.SubTotal2 = Subtotal2Temp + Me.IVA = IVATemp + Me.Total = TotalTemp + Me.RetIVA = RetIVATemp + Me.RetISR = RetISRTemp + Me.IEPS = IEPSTemp + CompraSaldo = TotalTemp + + AsignaValoresOriginales(SubtotalTemp, Subtotal2Temp, IVATemp, RetIVATemp, RetISRTemp, Total) + + End Sub + + Private Sub AsignaValoresOriginales(SubTotal As Decimal, SubTotal2 As Double, IVA As Decimal, RetIVA As Decimal, RetISR As Decimal, Total As Decimal) + SubTotalOriginal = SubTotal + SubTotal2Original = SubTotal2 + IVAOriginal = IVA + RetIVAOriginal = RetIVA + RetISROriginal = RetISR + TotalOriginal = Total + End Sub + + Private Sub AjustaImporteUltimoConcepto(ImporteAjuste As Decimal, Optional EsCarga As Boolean = False) + + If ImporteAjuste = 0 Then Exit Sub + + Dim Amortizacion As Decimal = 0 + + If TmpDT.Rows.Count > 0 Then ' si hay movimientos y si esta afectando al total, que se haga el ajuste + Dim Indice As Integer = If(TmpDT.Rows(TmpDT.Rows.Count - 1)("CvePS").ToString = UsuarioActual.Empresa.Funcionalidad(112).ToString, TmpDT.Rows.Count - 2, TmpDT.Rows.Count - 1) + Dim tPU As Decimal + + If TmpDT.Rows(Indice)("Cantidad").ToString.ToDecimal > 0 Then + tPU = ImporteAjuste / TmpDT.Rows(Indice)("Cantidad").ToString.ToDecimal + Else + tPU = 0 + End If + + If TmpDT.Rows(Indice)("PU").ToString.ToDecimal + tPU < 0 Then 'si es negativo, que tome el dato anterior + Indice = Indice - 1 + If TmpDT.Rows(Indice)("Cantidad").ToString.ToDecimal > 0 Then + tPU = ImporteAjuste / TmpDT.Rows(Indice)("Cantidad").ToString.ToDecimal + Else + tPU = 0 + End If + End If + + TmpDT.Rows(Indice)("PU") = TmpDT.Rows(Indice)("PU").ToString.ToDecimal + tPU + TmpDT.Rows(Indice)("Total") = TmpDT.Rows(Indice)("Total").ToString.ToDecimal + ImporteAjuste + TmpDT.Rows(Indice)("IEPSPS") = (TmpDT.Rows(Indice)("Total").ToString.ToDecimal() * TmpDT.Rows(Indice)("IEPSPSPorcentaje").ToString.ToDecimal()).RoundAD(2) + TmpDT.Rows(Indice)("IVA") = (TmpDT.Rows(Indice)("PU").ToString.ToDecimal * TmpDT.Rows(Indice)("Cantidad").ToString.ToDecimal - TmpDT.Rows(Indice)("Descuento").ToString.ToDecimal) * TmpDT.Rows(Indice)("IVAPorcentaje").ToString.ToDecimal + TmpDT.AcceptChanges() + End If + + SubTotal = TmpDT.SUMD("Total") + If Not EsCarga Then + Descuento = TmpDT.SUMD("Descuento") + End If + + SubTotalConceptos = SubTotal + + End Sub + + Public Function ValidateUUID(ByVal uuid As String) As Boolean + Dim pattern As String = "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$" + Dim regex As New Regex(pattern) + Return regex.IsMatch(uuid) + End Function + Private Function GeneraStringDoctosRelacionados() As String + + Dim DoctosRelacionados As String = "-1" + Dim listaUUIDSRelacionados As New List(Of String) + + If DocumentosRelacionadosUUIDSList.Count > 0 Then + For Each s As String In DocumentosRelacionadosUUIDSList + If s.Trim.Length > 0 Then + listaUUIDSRelacionados.Add(s.Trim) + End If + Next + End If + + If listaUUIDSRelacionados.Count > 0 Then + DoctosRelacionados = String.Join(",", listaUUIDSRelacionados.ToArray()) + End If + + Return DoctosRelacionados + End Function + Private Function ValorXML(n As XmlNode, Campo As String, Optional Retorno As String = "") As String + Dim o As XmlNode = n.Attributes.Cast(Of XmlAttribute)().SingleOrDefault(Function(a) String.Compare(a.Name, Campo, True) = 0) + If o Is Nothing Then + Return Retorno + Else + Return o.Value + End If + End Function + + Public Function AddCompra() As Boolean + + If Not AjustesValidacion() Then Return False + + Dim respuesta As Boolean = True + Dim ObjCompras As New ClsCompras + Dim ObjConta As New ClsContabilidad(ObjCompras.IniciaTransacSQL()) + + If Not AddPrepolizaCabecera(ObjConta) Then + respuesta = False + End If + + If respuesta AndAlso ObjCompras.AddCompra(If(Me.TipoComprobante = "I", "Fac", "NC"), Me.Descripcion, Me.Serie, Me.Folio, Me.FolioSecundario, Me.CveProveedor, Me.SubTotal, Me.Descuento, + Me.Amortizacion, Me.IVA, Me.RetIVA, Me.RetISR, Me.IEPS, Me.OtrosImpuestos, + Me.Redondeo, Me.Total, Me.Fecha, Me.CveMoneda, Me.TipoCambio, If(Me.FechaPago = Nothing, Me.Fecha, Me.FechaPago), Me.AplicaNotaCredito, Me.Observaciones, Me.CveEstatusFactura, + Me.CvePrePoliza, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, Me.IdPoliza, CveCajaChica:=Me.CveCajaChica, CvePersonal:=Me.CvePersonal, NumeroReembolso:=Me.NumeroReembolso, CveProveedorSucursal:=Me.CveProveedorSucursal, + AplicoPromocion:=Me.AplicoPromocion, PorcentajeIVA:=Me.PorcentajeIVA, CveMetodoPago:=Me.CveMetodoPago, CveRetIVAConcepto:=Me.CveRetIVAConcepto, + CveConceptoContableAlmacen:=Me.CveConceptoContableAlmacen, + CveRetISRConcepto:=Me.CveRetISRConcepto, NoDeducible:=Me.NoDeducible, CveTipoCompra:=Me.CveTipoCompra, TotalOriginal:=Me.TotalOriginal, CveTipoConcepto:=Me.CveTipoConcepto, + EsImportacion:=Me.EsImportacion, CveFactura:=Me.CveFactura, CveSubProyecto:=Me.CveSubProyectoPrincipal, DoctosRelacionados:=Me.DocumentosRelacionadosUUIDSString, CveFolioGarantia:=Me.CveFolioGarantia) Then + Me.CveCompra = ObjCompras.CveCompra + Else + respuesta = False + End If + + If respuesta AndAlso Me.CveCompra > 0 Then + + For Each Row As DataRow In Me.TmpDT.Rows + + Dim TipoRecepcion As Integer = -1 + Dim Referencia As String = "" + Dim EsNoDeducible As Boolean = False + Dim CveAF As Integer = If(Row("CveActivoFijo").ToString.ToEntero > 0 AndAlso Row("TipoAF").ToString.ToEntero = 1, Row("CveActivoFijo").ToString.ToEntero, -1) + Dim CveAFC As Integer = If(Row("CveActivoFijo").ToString.ToEntero > 0 AndAlso Row("TipoAF").ToString.ToEntero = 2, Row("CveActivoFijo").ToString.ToEntero, -1) + + If Not ObjCompras.AddCompraDetalle(Me.CveCompra, Row("CveUM").ToString.ToEntero, Row("CvePS").ToString.ToEntero, Row("CveSubProyecto").ToString.ToEntero, -1, CveAF, + Row("Cantidad").ToString.ToDecimal, Row("PU").ToString.ToDecimal, Row("IVA").ToString.ToDecimal, Row("Total").ToString.ToDecimal, Row("Descuento").ToString.ToDecimal, + Row("Obs").ToString, Row("CveOrdenCompraDetalle").ToString.ToEntero, TipoRecepcion, Row("CveContrato").ToString.ToEntero, Row("CvePresupuestoEgreso").ToString.ToEntero, + AplicaCostoIndirecto:=Row("AplicaCostoIndirecto").ToString.ToEntero, EstatusAlmacen:=Row("EntregaDirecta").ToString.ToEntero, CvePersonal:=CvePersonal, + CveTipoGasto:=Row("CveTipoGasto").ToString.ToEntero, AF_Medida:=Row("AFMedida").ToString.ToEntero, AF_TipoMantenimiento:=Row("AFTipoMantenimiento").ToString.ToEntero, Referencia:=Referencia, OtrosGastos:=Row("OtrosGastos").ToString.ToDecimal, + RetIVA:=Row("RetIVA").ToString.ToDecimal, RetISR:=Row("RetISR").ToString.ToDecimal, IEPSPS:=Row("IEPSPS").ToString.ToDecimal.RoundSQL, IEPSPSIVA:=Row("IEPSPSIVA").ToString.ToDecimal, + IVAPorcentaje:=Row("IVAPorcentaje").ToString.ToDecimal, RetIVAPorcentaje:=Row("RetIVAPorcentaje").ToString.ToDecimal, RetISRPorcentaje:=Row("RetISRPorcentaje").ToString.ToDecimal, + IEPSPSPorcentaje:=Row("IEPSPSPorcentaje").ToString.ToDecimal, IEPSPSIVAPorcentaje:=Row("IEPSPSIVAPorcentaje").ToString.ToDecimal, NoDeducible:=If((Row("NoDeducible").ToString().ToUpper().Contiene("TRUE", "1")) AndAlso EsNoDeducible, True, False), + CveContratoDetalle:=Row("CveContratoDetalle").ToString.ToEntero, CveCultivoCuadroDetalle:=Row("CveCultivoCuadroDetalle").ToString.ToEntero, CveActivoFijoCompra:=CveAFC) Then + + respuesta = False + Exit For + End If + Next + End If + + If respuesta Then + If Not AddPrePolizaDetalles(ObjConta) Then respuesta = False + End If + + If respuesta AndAlso ObjConta.ValidacionesPrePoliza(CvePrePoliza, UsuarioActual, 4) Then + If ObjConta.ValorPolizaDescuadre > 0 Then + Errores.AppendLine($"eFacturas/Compras-Guardar | Error{ObjConta.MensajePolizaDescuadre} Diferencia{ObjConta.ValorDiferencia} | CvePrePoliza:{CvePrePoliza}.") + GuardaLogAD($"eFacturas/Compras-Guardar | Error{ObjConta.MensajePolizaDescuadre} Diferencia{ObjConta.ValorDiferencia} | CvePrePoliza:{CvePrePoliza}", "LogPrePolizas") + respuesta = False + End If + End If + + If respuesta Then + If Not ObjCompras.UpdateCompraFactura(Me.CveCompra, Me.CveFactura, Me.Serie, Me.Folio) Then respuesta = False + End If + + If respuesta Then + ObjCompras.Commit() + Else + ObjCompras.RollBack() + End If + + ObjCompras.Dispose() + ObjConta.Dispose() + + Return respuesta + End Function + + Private Function AddPrepolizaCabecera(ByRef ObjConta As ClsContabilidad) As Boolean + + Dim respuesta As Boolean = False + Dim ConceptoPoliza As String = String.Format("{0} - {1} - {2}", NombreProveedor, SerieFolio, "") + Me.CvePrePoliza = ObjConta.AddPrePolizas("eFacturas/Registrar", 1, Me.Total, Me.Total, Me.CveMoneda, Me.Fecha, ConceptoPoliza, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, 0, "", CveTipoPoliza:=Me.CveTipoPoliza) + respuesta = If(Me.CvePrePoliza > 0, True, False) + + Return respuesta + End Function + + Private Function AddPrePolizaDetalles(ByRef ObjConta As ClsContabilidad) As Boolean + Dim respuesta As Boolean = True + Dim Concepto As String = $"{Me.NombreProveedor} {Me.SerieFolio}" + Dim Referencia As String = Me.SerieFolio + Dim importeMovimiento As Decimal + Dim importeMN As Decimal + '6 + For Each RowDetalle As DataRow In TmpDT.FiltraParametros("ISNULL(TipoAF,0) <> 2", "", {"CveClasificacion", "CveSubProyecto"}).Rows + + importeMovimiento = TmpDT.SUMD("Total", $" CveClasificacion = {RowDetalle("CveClasificacion").ToString} AND CveSubProyecto = {RowDetalle("CveSubProyecto").ToString}") + importeMN = (importeMovimiento * Me.TipoCambio).RoundSQL + + If importeMN <> 0 Then + If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, importeMovimiento, importeMN, 6, Referencia, Concepto, CveCompra:=CveCompra, CveProveedor:=Me.CveProveedor, CveIE:=Me.CveIE, CvePersonal:=CvePersonal, CveCreditoDetalle:=Me.CveCreditoDetalle, ImporteME:=If(TipoCambio = 1, 0, importeMovimiento), TipoCambio:=TipoCambio, + CveClasificacion:=RowDetalle("CveClasificacion").ToString().ToEntero(), CveSubProyecto:=RowDetalle("CveSubProyecto").ToString().ToEntero(), Contabilizable:=True) Then + respuesta = False + Exit For + End If + End If + Next + '14 + If respuesta AndAlso Me.IVA > 0 Then + importeMovimiento = Me.IVA + importeMN = (importeMovimiento * Me.TipoCambio).RoundSQL + If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, importeMovimiento, importeMN, 14, Referencia, Concepto, CveCompra:=CveCompra, CveSubProyecto:=Me.CveSubProyectoPrincipal, CveProveedor:=Me.CveProveedor, CveIE:=Me.CveIE, CvePersonal:=CvePersonal, CveCreditoDetalle:=CveCreditoDetalle, ImporteME:=If(Me.TipoCambio = 1, 0, importeMovimiento), TipoCambio:=Me.TipoCambio, PorcentajeImpuesto:=Me.PorcentajeIVA, Contabilizable:=True) Then + respuesta = False + End If + End If + '25 + If respuesta AndAlso Me.IEPS > 0 Then + importeMovimiento = Me.IEPS + importeMN = (importeMovimiento * Me.TipoCambio).RoundSQL + If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, importeMovimiento, importeMN, 25, Referencia, Concepto, CveCompra:=CveCompra, CveSubProyecto:=Me.CveSubProyectoPrincipal, CveProveedor:=Me.CveProveedor, CveIE:=Me.CveIE, CvePersonal:=CvePersonal, CveCreditoDetalle:=CveCreditoDetalle, ImporteME:=If(Me.TipoCambio = 1, 0, importeMovimiento), TipoCambio:=Me.TipoCambio, PorcentajeImpuesto:=0, Contabilizable:=True) Then + respuesta = False + End If + End If + ' + If respuesta AndAlso Me.RetIVA > 0 Then + importeMovimiento = Me.RetIVA + importeMN = (importeMovimiento * Me.TipoCambio).RoundSQL + Dim ret As ConceptosRetenciones = ConceptoPrePolizaRetIVA + If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, importeMovimiento, importeMN, ret.CveConceptoxAcreditar, Referencia, Concepto, CveCompra:=CveCompra, CveSubProyecto:=Me.CveSubProyectoPrincipal, CveProveedor:=Me.CveProveedor, CveIE:=Me.CveIE, CvePersonal:=CvePersonal, CveCreditoDetalle:=CveCreditoDetalle, ImporteME:=If(Me.TipoCambio = 1, 0, importeMovimiento), TipoCambio:=Me.TipoCambio, PorcentajeImpuesto:=0, Contabilizable:=True) Then + respuesta = False + End If + End If + ' + If respuesta AndAlso Me.RetISR > 0 Then + importeMovimiento = Me.RetISR + importeMN = (importeMovimiento * Me.TipoCambio).RoundSQL + Dim ret As ConceptosRetenciones = ConceptoPrePolizaRetISR + If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, importeMovimiento, importeMN, ret.CveConceptoxAcreditar, Referencia, Concepto, CveCompra:=CveCompra, CveSubProyecto:=Me.CveSubProyectoPrincipal, CveProveedor:=Me.CveProveedor, CveIE:=Me.CveIE, CvePersonal:=CvePersonal, CveCreditoDetalle:=CveCreditoDetalle, ImporteME:=If(Me.TipoCambio = 1, 0, importeMovimiento), TipoCambio:=Me.TipoCambio, PorcentajeImpuesto:=0, Contabilizable:=True) Then + respuesta = False + End If + End If + '5 + If respuesta Then + importeMovimiento = Me.Total + importeMN = (importeMovimiento * Me.TipoCambio).RoundSQL + Dim ConPreP As ConceptosTipoSaldo = ObtenerCveConceptoPrePoliza(1, Me.CveMoneda, False, Me.CveTipoConceptoProveedor) + Dim ImporteME As Decimal = importeMovimiento + Dim UsaComplementaria As Boolean = True + If Me.CveMoneda > 1 Then ImporteME = importeMovimiento + + If UsuarioActual.CveEmpresa.Contiene(13, 83) Then 'caso excepcional de complementarias + UsaComplementaria = False + importeMN = importeMovimiento * Me.TipoCambio + Else + importeMN = importeMovimiento + End If + If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, importeMovimiento, importeMN, ConPreP.CveConcepto, Referencia, Concepto, CveCompra:=CveCompra, CveSubProyecto:=Me.CveSubProyectoPrincipal, CveProveedor:=Me.CveProveedor, CveIE:=Me.CveIE, CvePersonal:=CvePersonal, CveCreditoDetalle:=CveCreditoDetalle, ImporteME:=If(Me.TipoCambio = 1, 0, importeMovimiento), TipoCambio:=Me.TipoCambio, PorcentajeImpuesto:=0, Contabilizable:=True) Then + respuesta = False + End If + If respuesta AndAlso Me.CveMoneda > 1 AndAlso UsaComplementaria Then + If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, importeMovimiento, (importeMovimiento * Me.TipoCambio - importeMovimiento).RoundSQL, ConPreP.CveConceptoComplementario, Referencia, Concepto, CveCompra:=Me.CveCompra, CveProveedor:=Me.CveProveedor, CveIE:=Me.CveIE, CvePersonal:=Me.CvePersonal, CveCompraAmortizacion:=Me.CveCompraAmortizacion, TipoCambio:=Me.TipoCambio, TipoCambioPago:=1, ImporteME:=ImporteME, CveSubProyecto:=Me.CveSubProyecto) Then + respuesta = False + End If + End If + End If + + Return respuesta + End Function + +End Class \ No newline at end of file diff --git a/Compras/Compras.aspx.vb b/Compras/Compras.aspx.vb index b8355d7c9..407979093 100644 --- a/Compras/Compras.aspx.vb +++ b/Compras/Compras.aspx.vb @@ -10,7 +10,8 @@ Imports System.Threading.Tasks Imports Newtonsoft.Json Imports Extensiones Imports MoreLinq - +Imports ClsPaginas +Imports System.Data.SqlClient @@ -1132,26 +1133,62 @@ Partial Class Compras_Compras ViewState("PorcentajeProntoPago") = value End Set End Property - Private Property ImporteRemNC As Decimal + Private Property AjusteProntoPagoConIVA As Decimal Get - If ViewState("ImporteRemNC") Is Nothing Then - ViewState("ImporteRemNC") = 0D + If ViewState("AjusteProntoPagoConIVA") Is Nothing Then + ViewState("AjusteProntoPagoConIVA") = 0D End If - Return ViewState("ImporteRemNC").ToString.ToDecimal + Return ViewState("AjusteProntoPagoConIVA").ToString.ToDecimal End Get Set(value As Decimal) - ViewState("ImporteRemNC") = value + ViewState("AjusteProntoPagoConIVA") = value End Set End Property - Private Property ImporteRemNCProntoPago As Decimal + + Private Property AjusteProntoPagoPorcentajeIVA As Decimal Get - If ViewState("ImporteRemNCProntoPago") Is Nothing Then - ViewState("ImporteRemNCProntoPago") = 0D + If ViewState("AjusteProntoPagoPorcentajeIVA") Is Nothing Then + ViewState("AjusteProntoPagoPorcentajeIVA") = 0D End If - Return ViewState("ImporteRemNCProntoPago").ToString.ToDecimal + Return ViewState("AjusteProntoPagoPorcentajeIVA").ToString.ToDecimal End Get Set(value As Decimal) - ViewState("ImporteRemNCProntoPago") = value + ViewState("AjusteProntoPagoPorcentajeIVA") = value + End Set + End Property + + + Private Property AjusteProntoPagoSinIVA As Decimal + Get + If ViewState("AjusteProntoPagoSinIVA") Is Nothing Then + ViewState("AjusteProntoPagoSinIVA") = 0D + End If + Return ViewState("AjusteProntoPagoSinIVA").ToString.ToDecimal + End Get + Set(value As Decimal) + ViewState("AjusteProntoPagoSinIVA") = value + End Set + End Property + Private Property ImporteRNC As Decimal + Get + If ViewState("ImporteRNC") Is Nothing Then + ViewState("ImporteRNC") = 0D + End If + Return ViewState("ImporteRNC").ToString.ToDecimal + End Get + Set(value As Decimal) + ViewState("ImporteRNC") = value + End Set + End Property + Private Property ImporteRNCProntoPago As Decimal + Get + If ViewState("ImporteRNCProntoPago") Is Nothing Then + ViewState("ImporteRNCProntoPago") = 0D + End If + Return ViewState("ImporteRNCProntoPago").ToString.ToDecimal + End Get + Set(value As Decimal) + ViewState("ImporteRNCProntoPago") = value End Set End Property @@ -7428,6 +7465,14 @@ Partial Class Compras_Compras 'End If End If + + If UsuarioActual.Empresa.Funcionalidad(574).ToEntero = 1 AndAlso (ImporteRNC > 0 Or ImporteRNCProntoPago > 0) Then + If Not GeneraRemisionsNotadeCredito(ObjCompras.IniciaTransacSQL) Then + TieneError = True + End If + End If + + If Not TieneError Then ObjCompras.Commit() If ObjContaAC IsNot Nothing Then ObjContaAC.Commit() @@ -10048,8 +10093,7 @@ Partial Class Compras_Compras TmpDT.Columns.Add("CveContratoDetalle", GetType(Integer)) TmpDT.Columns.Add("CveCultivoCuadroDetalle", GetType(Integer)) TmpDT.Columns.Add("TemporadaCuadro", GetType(String)) - TmpDT.Columns.Add("PUProntoPago", GetType(Decimal)) - TmpDT.Columns.Add("TotalProntoPago", GetType(Decimal)) + TmpDTOriginal = New DataTable TmpDTOriginal.Columns.Add("Consec", GetType(Integer)) @@ -10159,8 +10203,7 @@ Partial Class Compras_Compras TmpDTOriginal.Columns.Add("CveContratoDetalle", GetType(Double)) TmpDTOriginal.Columns.Add("CveCultivoCuadroDetalle", GetType(Double)) TmpDTOriginal.Columns.Add("TemporadaCuadro", GetType(String)) - TmpDTOriginal.Columns.Add("PUProntoPago", GetType(Decimal)) - TmpDTOriginal.Columns.Add("TotalProntoPago", GetType(Decimal)) + End Sub @@ -10493,7 +10536,7 @@ Partial Class Compras_Compras If UsuarioActual.Empresa.Funcionalidad(574).ToEntero = 1 Then - e.Row.Cells(4).Text = e.Row.DataKey("PUProtoPago").ToDecimal.ToString("###,###,###.00") + 'e.Row.Cells(4).Text = e.Row.DataKey("PUProtoPago").ToDecimal.ToString("###,###,###.00") 'If PorcentajeProntoPago > 0 Then ' e.Row.Cells(4).Text = e.Row.DataKey("PUProtoPago").ToDecimal - () @@ -14301,6 +14344,10 @@ Partial Class Compras_Compras End Sub Protected Sub BtnVincularOC_Click(sender As Object, e As EventArgs) + + AjusteProntoPagoPorcentajeIVA = 0D + AjusteProntoPagoConIVA = 0D + AjusteProntoPagoSinIVA = 0D 'If DdlOCVinculaInv.SelectedValue.ToEntero = 237 And Not CveFlete > 0 Then Alert("Necesita vincular un flete si selecciona Factura de Flete", TipoMensaje.MsgAdvertencia) : Exit Sub 'If DdlOCVinculaInv.SelectedValue.ToEntero = 240 And Not CveImportacion > 0 Then Alert("Necesita vincular una Importación si selecciona Factura de Importación", TipoMensaje.MsgAdvertencia) : Exit Sub @@ -14360,8 +14407,26 @@ Partial Class Compras_Compras If UsuarioActual.Empresa.Funcionalidad(574).ToEntero = 1 Then - ImporteRemNC = (SubTotalCompra - SubTotalGV).RoundSQL(2) - ImporteRemNCProntoPago = (SubTotalCompra * PorcentajeProntoPago).RoundSQL(2) + ImporteRNC = (SubTotalCompra - SubTotalGV).RoundSQL(2) + ImporteRNCProntoPago = (SubTotalCompra * PorcentajeProntoPago).RoundSQL(2) + + Dim ImporteOCConIVA As Decimal = 0D + Dim ImporteOCSinIVA As Decimal = 0D + + Dim ImporteCompraConIVA As Decimal = TmpDT.SUM("Total", " IVAPorcentaje > 0 ") + Dim ImporteCompraSinIVA As Decimal = TmpDT.SUM("Total", " IVAPorcentaje = 0 ") + + For Each gvr As GridViewRow In GvOC1.Rows + If gvr.DataKey("IVAPorcentaje").ToDecimal > 0 Then + ImporteOCConIVA = ImporteOCConIVA + (gvr.FCTextBox("TxtCantidad").Text.ToDecimal * gvr.FCTextBox("TxtPU").Text.ToDecimal) + Else + ImporteOCSinIVA = ImporteOCSinIVA + (gvr.FCTextBox("TxtCantidad").Text.ToDecimal * gvr.FCTextBox("TxtPU").Text.ToDecimal) + End If + Next + + AjusteProntoPagoPorcentajeIVA = TmpDT.MAX("IVAPorcentaje").ToDecimal + AjusteProntoPagoConIVA = (ImporteCompraConIVA - ImporteOCConIVA) '+ ((ImporteCompraConIVA) * PorcentajeProntoPago) + AjusteProntoPagoSinIVA = (ImporteCompraSinIVA - ImporteOCSinIVA) '+ ((ImporteCompraSinIVA) * PorcentajeProntoPago) Vinculacion() @@ -14505,6 +14570,51 @@ Partial Class Compras_Compras IndexTmpOriginal += 1 Next + + + + + If UsuarioActual.Empresa.Funcionalidad(574).ToEntero = 1 AndAlso (AjusteProntoPagoConIVA > 0 Or AjusteProntoPagoSinIVA > 0) Then + + Dim CvePS_RNC As Integer = UsuarioActual.Empresa.Funcionalidad(580).ToEntero + Dim PSRow As DataRow = GlobalDTPS(UsuarioActual.CveEmpresa, CvePS:=CvePS_RNC).FiltroPrimero("") + Dim CveSubProyectoPrincipal As Integer = AsignarSubProyectoPrincipal() + Dim SubProyecto As String = GlobalDTSubProyectos(-1, CveSubProyectoPrincipal, UsuarioActual.CveEmpresa).FiltroPrimeroValor("SubProyecto") + + Dim CveTipoPS As Integer = PSRow("CveTipoPS").ToString.ToEntero + If PSRow("CvePSCargo").ToString <> "" Then + CveTipoPS = 2 + End If + + Dim CveClasificacion As Integer = PSRow("CveClasificacion").ToString.ToEntero + Dim Clasificacion As String = PSRow("Clasificacion").ToString + Dim PS As String = PSRow("PS").ToString + Dim CveUM As Integer = PSRow("CveUnidadMedida").ToString.ToEntero + + + + Dim DTConIVA As DataTable = TmpDT.FiltraParametros(" IVAPorcentaje > 0") + If DTConIVA.Rows.Count > 0 Then + + End If + + Dim DTSinIVA As DataTable = TmpDT.FiltraParametros(" IVAPorcentaje = 0") + If DTSinIVA.Rows.Count > 0 Then + + End If + + Dim UM As String = PSRow("UnidadMedida").ToString + + If AjusteProntoPagoConIVA > 0 Then + AddPS(1, CveUM, UM, CveClasificacion, Clasificacion, CvePS_RNC, PS, 1, CveSubProyectoPrincipal.ToString, SubProyecto, "", "-1", "", AjusteProntoPagoConIVA, AjusteProntoPagoConIVA, AjusteProntoPagoPorcentajeIVA, 0, 0, 0, 0, 0) + End If + + If AjusteProntoPagoSinIVA > 0 Then + AddPS(1, CveUM, UM, CveClasificacion, Clasificacion, CvePS_RNC, PS, 1, CveSubProyectoPrincipal.ToString, SubProyecto, "", "-1", "", AjusteProntoPagoSinIVA, AjusteProntoPagoSinIVA, 0, 0, 0, 0, 0, 0) + End If + + End If + AddPS2(False) 'AJUSTE DE REDONDEO O DIFERENCIA PERMITIDA DE IMPORTE @@ -14614,6 +14724,7 @@ Partial Class Compras_Compras End If + CalculaTotales() CompraEstaVinculadaOC = True @@ -16942,12 +17053,7 @@ Partial Class Compras_Compras Dim Row As DataRow = Nothing - If Not TmpDT.Columns.Contains("PUProntoPago") Then - TmpDT.Columns.Add("PUProntoPago", GetType(Decimal)) - End If - If Not TmpDT.Columns.Contains("TotalProntoPago") Then - TmpDT.Columns.Add("TotalProntoPago", GetType(Decimal)) - End If + Row = TmpDT.NewRow() Dim Retorno As Integer = 0 @@ -20512,6 +20618,91 @@ Partial Class Compras_Compras End Function +#End Region + + +#Region "PRONTO PAGO" + + Public Function GeneraRemisionsNotadeCredito(ByRef trasaccion As SqlTransaction) As Boolean + Dim respuesta As Boolean = True + + Dim CvePS_RNC As Integer = UsuarioActual.Empresa.Funcionalidad(580).ToEntero + Dim PSRow As DataRow = GlobalDTPS(UsuarioActual.CveEmpresa, CvePS:=CvePS_RNC).FiltroPrimero("") + Dim CveSubProyectoPrincipal As Integer = AsignarSubProyectoPrincipal() + Dim SubProyecto As String = "" + + If Not CvePS_RNC > 0 Then + Alert("No esta definido el producto de Remisión de Nota de Crédito.", TipoMensaje.MsgAdvertencia) + Return False + End If + + + If Not CveSubProyectoPrincipal > 0 Then + Alert("No esta definido el Sub Proyecto.", TipoMensaje.MsgAdvertencia) + Return False + End If + + SubProyecto = GlobalDTSubProyectos(-1, CveSubProyectoPrincipal, UsuarioActual.CveEmpresa).FiltroPrimeroValor("SubProyecto") + + If PSRow IsNot Nothing Then + + Dim CompraRNC As New ClsCompraManagerCompras("", ClsCompraManagerCompras.EnumCargaCompra.SinXML, GlobalDTTiposGastos(UsuarioActual.CveEmpresa), UsuarioActual) + CompraRNC.CveFactura = -1 + CompraRNC.CveProveedor = DdlProveedor.SelectedValue.ToEntero + CompraRNC.CveTipoProveedor = CveTipoProveedor + CompraRNC.CveTipoConceptoProveedor = CveTipoConcepto + CompraRNC.TipoCompra = ClsCompraManagerCompras.EnumTipoCompra.Sin_definir + CompraRNC.IEPSGasto = False + CompraRNC.Descripcion = $"Remisión Nota de Crédito {TxtDescripcion.Text}" + CompraRNC.NombreProveedor = DdlProveedor.SelectedItem.Text + CompraRNC.Fecha = TxtFecha.Text.ToDate + CompraRNC.CveMoneda = DdlMoneda.SelectedValue.ToEntero + + + Dim CveTipoPS As Integer = PSRow("CveTipoPS").ToString.ToEntero + If PSRow("CvePSCargo").ToString <> "" Then + CveTipoPS = 2 + End If + + Dim CveClasificacion As Integer = PSRow("CveClasificacion").ToString.ToEntero + Dim Clasificacion As String = PSRow("Clasificacion").ToString + Dim PS As String = PSRow("PS").ToString + Dim CveUM As Integer = PSRow("CveUnidadMedida").ToString.ToEntero + Dim UM As String = PSRow("UnidadMedida").ToString + + CompraRNC.ConfiguraRegistroRapidoRNC(CvePS_RNC, CveUM, UM, CveClasificacion, Clasificacion, PS, CveSubProyectoPrincipal, SubProyecto, ImporteRNC, ImporteRNC) + If Not CompraRNC.AddCompraRNC(trasaccion) Then + respuesta = False + End If + + If respuesta Then + + Dim CompraRNCProntoPAgo As New ClsCompraManagerCompras("", ClsCompraManagerCompras.EnumCargaCompra.SinXML, GlobalDTTiposGastos(UsuarioActual.CveEmpresa), UsuarioActual) + CompraRNCProntoPAgo.CveFactura = -1 + CompraRNCProntoPAgo.CveProveedor = DdlProveedor.SelectedValue.ToEntero + CompraRNCProntoPAgo.CveTipoProveedor = CveTipoProveedor + CompraRNCProntoPAgo.CveTipoConceptoProveedor = CveTipoConcepto + CompraRNCProntoPAgo.TipoCompra = ClsCompraManagerCompras.EnumTipoCompra.Sin_definir + CompraRNCProntoPAgo.IEPSGasto = False + CompraRNCProntoPAgo.Descripcion = $"Remisión Nota de Crédito {TxtDescripcion.Text}" + CompraRNCProntoPAgo.NombreProveedor = DdlProveedor.SelectedItem.Text + CompraRNCProntoPAgo.Fecha = TxtFecha.Text.ToDate + CompraRNCProntoPAgo.CveMoneda = DdlMoneda.SelectedValue.ToEntero + + CompraRNCProntoPAgo.ConfiguraRegistroRapidoRNC(CvePS_RNC, CveUM, UM, CveClasificacion, Clasificacion, PS, CveSubProyectoPrincipal, SubProyecto, ImporteRNCProntoPago, ImporteRNCProntoPago) + If Not CompraRNCProntoPAgo.AddCompraRNC(trasaccion) Then + respuesta = False + End If + + End If + + + End If + + + + Return respuesta + End Function #End Region @@ -20525,3 +20716,2105 @@ Public Class MMensajeDevolucion Public Property Total As Decimal End Class + + +Public Class ClsCompraManagerCompras + + Enum EnumCargaCompra + DesdeXML + DesdeArchivo + SinXML + End Enum + Public Enum EnumCFDIVersion + v32 + V33 + V40 + End Enum + Public Enum EnumTipoCompra + Sin_definir = -1 + Gasto_con_almacen = 10 + Activo_Fijo = 1 + 'Costo_Indirecto = 2 + Almacen = 3 + Almacen_con_costo_indirecto = 8 + Costo_Indirecto = 4 + Importación = 5 + NC_Con_Productos = 6 + Apoyo_Logístico = 9 + NC_Por_Devolución = 11 + Garantia = 12 + End Enum + + + Public Enum EnumModalidadAccionPS + Agregar + Actualizar + End Enum + + Public Property CveCompra As Integer = -1 + Public Property CveProveedor As Integer + Public Property CveTipoConceptoProveedor As Integer + Public Property CveMoneda As Integer + Public Property Fecha As Date + Public ReadOnly Property SerieFolio As String + Get + If Serie.Length > 0 Then + Return $"{Serie}-{Folio}" + Else + Return $"{Folio}" + End If + End Get + End Property + + Public Property Serie As String = "" + Public Property Folio As String = "" + Public Property FolioSecundario As String = "" + Public Property Descripcion As String = "" + Public Property CFDIVersion As EnumCFDIVersion = EnumCFDIVersion.V40 + Public Property ProveedorNombre As String = "" + Public Property EsImportacion As Boolean = False + Public Property TC As Decimal = 1 + Public Property SubTotal As Decimal = 0D + Public Property SubTotal2 As Decimal = 0D + Public Property Descuento As Decimal = 0D + Public Property Total As Decimal = 0D + Public Property Moneda As String = "" + Public Property TipoComprobante As String + Public Property TipoCambio As Decimal = 1 + Public Property CompraNoDeducible As Integer = 0 + Public Property IVA As Decimal = 0D + Public Property IVADeducible As Decimal = 0D + Public Property IVANoDeducible As Decimal = 0 + Public Property IEPS As Decimal = 0D + Public Property RetIVA As Decimal = 0D + Public Property RetISR As Decimal = 0D + Public Property PorcentajeIVA As Decimal = 0 + Public Property PorcentajeISR As Decimal = 0 + Public Property CveRetIVAConcepto As Integer = -1 + Public Property CveRetISRConcepto As Integer = -1 + Public Property CveSubProyecto As Integer = -1 + Public Property UsuarioActual As Usuario + Public ReadOnly Property ConceptoPrePolizaIVA As ConceptosRetenciones + Get + Dim Ret As New ConceptosRetenciones + If EsImportacion Then + Ret.CveConceptoAcreditable = 288 + Ret.CveConceptoxAcreditar = 287 + Else + Ret.CveConceptoAcreditable = 19 + Ret.CveConceptoxAcreditar = 14 + End If + Return Ret + End Get + End Property + Public ReadOnly Property ConceptoPrePolizaRetIVA As ConceptosRetenciones + Get + Dim Ret As New ConceptosRetenciones + Dim Funcionalidad, FuncionalidadxAcred As Integer + If CveRetIVAConcepto = 1 Then + Funcionalidad = 308 : FuncionalidadxAcred = 307 + Ret.CveConceptoAcreditable = 22 + Ret.CveConceptoxAcreditar = 15 + ElseIf CveRetIVAConcepto = 2 Then + Funcionalidad = 310 : FuncionalidadxAcred = 309 + Ret.CveConceptoAcreditable = 184 + Ret.CveConceptoxAcreditar = 183 + ElseIf CveRetIVAConcepto = 3 Then + Funcionalidad = 312 : FuncionalidadxAcred = 311 + Ret.CveConceptoAcreditable = 186 + Ret.CveConceptoxAcreditar = 185 + ElseIf CveRetIVAConcepto = 4 Then + Funcionalidad = 314 : FuncionalidadxAcred = 313 + Ret.CveConceptoAcreditable = 249 + Ret.CveConceptoxAcreditar = 248 + ElseIf CveRetIVAConcepto = 5 Then + Funcionalidad = 578 : FuncionalidadxAcred = 578 + Ret.CveConceptoAcreditable = 286 + Ret.CveConceptoxAcreditar = 285 + ElseIf CveRetIVAConcepto = 6 Then + Funcionalidad = 578 : FuncionalidadxAcred = 578 + Ret.CveConceptoAcreditable = 333 + Ret.CveConceptoxAcreditar = 334 + End If + Return Ret + End Get + End Property + Public ReadOnly Property ConceptoPrePolizaRetISR As ConceptosRetenciones + Get + Dim Ret As New ConceptosRetenciones + Dim Funcionalidad, FuncionalidadxAcred As Integer + If CveRetISRConcepto = 1 Then + Funcionalidad = 316 : FuncionalidadxAcred = 315 + Ret.CveConceptoAcreditable = 23 + Ret.CveConceptoxAcreditar = 16 + ElseIf CveRetISRConcepto = 2 Then + Funcionalidad = 318 : FuncionalidadxAcred = 317 + Ret.CveConceptoAcreditable = 244 + Ret.CveConceptoxAcreditar = 243 + ElseIf CveRetISRConcepto = 3 Then + Funcionalidad = 349 : FuncionalidadxAcred = 348 + Ret.CveConceptoAcreditable = 328 + Ret.CveConceptoxAcreditar = 327 + End If + Return Ret + End Get + End Property + + Public Property CveMetodoPago As Integer + Public Property MetodoPago As String + Public Property DocumentosRelacionadosUUIDSList As List(Of String) = New List(Of String) + Public ReadOnly Property DocumentosRelacionadosUUIDSString As String + Get + Return GeneraStringDoctosRelacionados() + End Get + End Property + + Public Property DocumentosRelacionadosAnticiposUUIDList As List(Of String) = New List(Of String) + Public Property TieneAnticiposXML As Boolean = False + Public Property EmisorRFC As String + Public Property ReceptorRFC As String + Public Property UUID As String = "" + Public Property TotalRetenciones As Decimal = 0D + Public Property RetencionIVA As Decimal = 0D + Public Property RetencionISR As Decimal = 0D + Public Property SumaTotalRetenciones As Decimal = 0D + Public Property TotalTraslados As Decimal = 0D + Public Property TrasladoIVA As Decimal = 0D + Public Property TrasladoIEPS As Decimal = 0D + Public Property SumaTotalTraslados As Decimal = 0D + Public Property OtrosImpuestos As Decimal = 0D + Private Property OtrosImpuestosRetenciones As Decimal = 0D + Public Property Amortizacion As Decimal = 0D + Public Property FechaPago As Date 'FIX ME corregir usando fecha interna calculada por los dias de credito del proveedor + Public Property AplicaNotaCredito As Boolean = False + Public Property XMlStr As String + Public Property XMLCargaExistosa As Boolean = True + Public Property Observaciones As String = "" + Public Property CveEstatusFactura As Integer = 1 + Public Property CvePrePoliza As Integer = -1 + Public Property Redondeo As Decimal = 0 + Public Property IdPoliza As Integer = -1 + Public Property CveCajaChica As Integer = -1 + Public Property CvePersonal As Integer = -1 + Public Property NumeroReembolso As String = "" + Public Property CveProveedorSucursal As Integer = -1 + Public Property AplicoPromocion As Boolean = False + Public Property CveConceptoContableAlmacen As Integer = -1 + Public Property NoDeducible As Integer = 0 + Public Property CveTipoCompra As Integer = 1 + Public Property TotalOriginal As Decimal = 0D + Public Property CveTipoConcepto As Integer = 1 'FIX ME Esto tiene que ver con el CveTipoProveedor 1 y 3 es CveTipoConcepto 1 y 2 es CveTipoConcepto 2 + Public Property CveSubProyectoPrincipal As Integer = -1 + Public Property CveFactura As Integer = -1 + Public Property CveFolioGarantia As Integer = -1 + Public Property TmpDT As DataTable = New DataTable + Public Property SubTotalConceptos As Decimal = 0D + + Private Errores As StringBuilder = New StringBuilder + + Public ReadOnly Property MensajeError As String + Get + Return Errores.ToString() + End Get + End Property + + Public Property CompraSaldo As Decimal = 0D + Public Property SubTotalOriginal As Decimal = 0D + Public Property SubTotal2Original As Double = 0D + Public Property IVAOriginal As Decimal = 0D + Public Property RetIVAOriginal As Decimal = 0D + Public Property RetISROriginal As Decimal = 0D + Public Property Proyecto As String = "" + Public Property CveProyecto As Integer = -1 + Public Property SubProyecto As String = "" + Public Property TipoCompra As EnumTipoCompra = EnumTipoCompra.Sin_definir + Private Property DTTiposGastos() As DataTable + Public Property CveTipoProveedor As Integer = -1 + Public Property IEPSGasto As Boolean = False + Public Property OtrosImpuestosGasto As Boolean = False + Public Property OCVinculada As Boolean = False + Public Property NumNoDed As Integer = 0 + Public Property CveTipoPoliza As Integer = -1 + Public Property NombreProveedor As Object + Public Property CveCreditoDetalle As Integer = -1 + Public Property CveIE As Integer = -1 + Public Property CveCompraAmortizacion As Integer = -1 + + Public Sub New(XmlFuente As String, OpcionCarga As EnumCargaCompra, DTTiposGastos As DataTable, UsuarioActual As Usuario) + + Errores = New StringBuilder + + Me.DTTiposGastos = DTTiposGastos + Me.UsuarioActual = UsuarioActual + + + + If OpcionCarga = EnumCargaCompra.SinXML Then + + Else + If OpcionCarga = EnumCargaCompra.DesdeArchivo Then + CargaDesdeArchivo(XmlFuente) + Else + CargaDesdeString(XmlFuente) + End If + End If + + + + End Sub + + Private Sub CargaDesdeArchivo(XmlFuenteRuta As String) + + Dim XMLDoc As New XmlDocument + + If IO.File.Exists(XmlFuenteRuta) Then + XMlStr = File.ReadAllText(XmlFuenteRuta).Replace("<br>", "").Replace("<", "").Replace("o;?", "") + Try + XMLDoc.LoadXml(XMlStr) + XMLCargaExistosa = True + Catch ex As Exception + Try + Dim oReader As New StreamReader(XmlFuenteRuta, Encoding.GetEncoding("ISO-8859-1")) + XMLDoc.Load(oReader) + oReader.Dispose() + XMLCargaExistosa = True + Catch ex2 As Exception + GuardaLog("Error al intentar leer el XML del SAT. Error:" & ex2.ToString()) + Errores.AppendLine("Error al intentar leer el XML. Error:" & ex2.ToString()) + XMLCargaExistosa = False + End Try + End Try + End If + + If XMLCargaExistosa Then + CargaComprobanteXML(XMLDoc) + End If + + End Sub + Private Sub CargaDesdeString(XmlFuente As String) + XMlStr = XmlFuente.Replace("<br>", "").Replace("<", "").Replace("o;?", "") + Dim XMLDoc As New XmlDocument + Try + XMLDoc.LoadXml(XMlStr) + XMLCargaExistosa = True + Catch ex As Exception + GuardaLog("Error al intentar leer . Error:" & ex.ToString()) + Errores.AppendLine("Error al intentar leer el XML. Error:" & ex.ToString()) + XMLCargaExistosa = False + End Try + + If XMLCargaExistosa Then + CargaComprobanteXML(XMLDoc) + End If + + End Sub + + Private Sub CargaComprobanteXML(XMLDoc As XmlDocument) + Dim nodo As XmlNode = XMLDoc.DocumentElement + + Serie = ValorXML(nodo, "serie") + + Dim StrCFDIVerion As String = ValorXML(nodo, "version") + + If StrCFDIVerion = "3.2" Then + CFDIVersion = EnumCFDIVersion.v32 + ElseIf StrCFDIVerion = "3.3" Then + CFDIVersion = EnumCFDIVersion.V33 + ElseIf StrCFDIVerion = "4.0" Then + CFDIVersion = EnumCFDIVersion.V40 + Else + GuardaLog($"CFDI Versión {StrCFDIVerion} no soportada") + Errores.AppendLine($"CFDI Versión {StrCFDIVerion} no soportada") + XMLCargaExistosa = False + Exit Sub + End If + + Folio = ValorXML(nodo, "folio") + Fecha = ValorXML(nodo, "fecha").ToDate + SubTotal = ValorXML(nodo, "subTotal").ToDecimal + Total = ValorXML(nodo, "total").ToDecimal + Descuento = ValorXML(nodo, "descuento").ToDecimal + Moneda = ValorXML(nodo, "Moneda") + + CveMoneda = GlobalDTMonedas().FiltroPrimeroValor("CveMoneda", $" AbreviaturaSAT = '{Moneda}' ").ToEntero + If Not CveMoneda > 0 Then + GuardaLog($"Moneda {Moneda} no se obtuvo la clabe") + Errores.AppendLine($"Moneda {Moneda} no se obtuvo la clabe") + XMLCargaExistosa = False + Exit Sub + End If + + TipoComprobante = ValorXML(nodo, "tipoDeComprobante") + TipoCambio = ValorXML(nodo, "TipoCambio", "1").ToDecimal + + If CFDIVersion = EnumCFDIVersion.V33 Or CFDIVersion = EnumCFDIVersion.V40 Then + Dim drm As DataRow = GlobalDTVtaMetodoPago.FiltroPrimero(String.Format("ClaveMetodoPagoSAT = '{0}'", ValorXML(nodo, "MetodoPago"))) + If drm IsNot Nothing Then + CveMetodoPago = drm("CveMetodoPago").ToString.ToEntero + MetodoPago = drm("MetodoPagoSAT").ToString + End If + End If + + Dim namespaces As New XmlNamespaceManager(XMLDoc.NameTable) + Dim Prefijo As String = If(XMLDoc.DocumentElement.Prefix = "", "cfd", XMLDoc.DocumentElement.Prefix) + Dim cfdVer As String = "" + + If CFDIVersion = EnumCFDIVersion.v32 Then + Prefijo = "cfd" + cfdVer = "http://www.sat.gob.mx/cfd/2" + ElseIf CFDIVersion = EnumCFDIVersion.V33 Then + cfdVer = "http://www.sat.gob.mx/cfd/3" + Else ' se considera que es la version 4.0 + cfdVer = "http://www.sat.gob.mx/cfd/4" + End If + namespaces.AddNamespace(Prefijo, cfdVer) + namespaces.AddNamespace("aerolineas", "http://www.sat.gob.mx/aerolineas") + namespaces.AddNamespace("tfd", "http://www.sat.gob.mx/TimbreFiscalDigital") + namespaces.AddNamespace("implocal", "http://www.sat.gob.mx/implocal") + namespaces.AddNamespace("registrofiscal", "http://www.sat.gob.mx/registrofiscal") + + If TipoComprobante.ToUpper = "E" AndAlso (CFDIVersion = EnumCFDIVersion.V33 OrElse CFDIVersion = EnumCFDIVersion.V40) Then + Dim UUIDS As String = "" + + Dim UUIDSLista As New List(Of String) + Dim nodeCFDIRelacionados As XmlNode + nodeCFDIRelacionados = XMLDoc.SelectSingleNode(String.Format("//{0}:CfdiRelacionados", Prefijo), namespaces) + + If nodeCFDIRelacionados IsNot Nothing Then + For Each CFDIRelacionados As XmlNode In nodeCFDIRelacionados + UUIDSLista.Add("" & CFDIRelacionados.Attributes("UUID").Value.ToString & "") + Next + End If + DocumentosRelacionadosUUIDSList = UUIDSLista + + End If + + Dim node As XmlNode + node = XMLDoc.SelectSingleNode(String.Format("//{0}:Emisor", Prefijo), namespaces) + + If node IsNot Nothing AndAlso node.ChildNodes.Count > 0 Then + EmisorRFC = ValorXML(node, "RFC") + End If + + node = XMLDoc.SelectSingleNode(String.Format("//{0}:Receptor", Prefijo), namespaces) + + If node IsNot Nothing AndAlso node.ChildNodes.Count > 0 Then + ReceptorRFC = ValorXML(node, "RFC") + End If + + If UsuarioActual.CveEmpresa.Contiene(119, 7) Then + node = XMLDoc.SelectSingleNode(String.Format("//{0}:CfdiRelacionados", Prefijo), namespaces) + If node IsNot Nothing AndAlso node.ChildNodes.Count > 0 Then + If ValorXML(node, "TipoRelacion").ToString.Contiene("07") Then + Dim nodeDocumentosRelacionados As XmlNodeList = XMLDoc.SelectNodes(String.Format("//{0}:CfdiRelacionado", Prefijo), namespaces) + For Each documento As XmlNode In nodeDocumentosRelacionados + If documento.Attributes("UUID").Value <> "" Then + DocumentosRelacionadosAnticiposUUIDList.Add(documento.Attributes("UUID").Value) + End If + TieneAnticiposXML = True + Next + End If + End If + End If + + node = XMLDoc.SelectSingleNode(String.Format("//{0}:Impuestos", Prefijo), namespaces) + If node IsNot Nothing AndAlso node.ChildNodes.Count > 0 Then + Dim nodeRetenciones As XmlNodeList = XMLDoc.SelectNodes(String.Format("//{0}:Comprobante/{0}:Impuestos/{0}:Retenciones/{0}:Retencion", Prefijo), namespaces) + + TotalRetenciones = ValorXML(node, "totalImpuestosRetenidos", "0").ToDecimal + + If CFDIVersion = EnumCFDIVersion.V33 OrElse CFDIVersion = EnumCFDIVersion.V40 Then + + For Each retencion As XmlNode In nodeRetenciones + If retencion.Attributes("Impuesto").Value = "002" Then RetencionIVA += retencion.Attributes("Importe").Value.ToDecimal + If retencion.Attributes("Impuesto").Value = "001" Then RetencionISR += retencion.Attributes("Importe").Value.ToDecimal + Next + + Else + + For Each retencion As XmlNode In nodeRetenciones + If retencion.Attributes("impuesto").Value = "IVA" Then RetencionIVA += retencion.Attributes("importe").Value.ToDecimal + If retencion.Attributes("impuesto").Value = "ISR" Then RetencionISR += retencion.Attributes("importe").Value.ToDecimal + Next + End If + SumaTotalRetenciones += RetencionIVA + SumaTotalRetenciones += RetencionISR + + TotalTraslados = ValorXML(node, "totalImpuestosTrasladados", "0").ToDecimal + Dim nodeTraslados As XmlNodeList = XMLDoc.SelectNodes(String.Format("//{0}:Comprobante/{0}:Impuestos/{0}:Traslados/{0}:Traslado", Prefijo), namespaces) + + If CFDIVersion = EnumCFDIVersion.V33 OrElse CFDIVersion = EnumCFDIVersion.V40 Then + + For Each traslado As XmlNode In nodeTraslados + + If traslado.Attributes("Importe") IsNot Nothing Then + If traslado.Attributes("Impuesto").Value = "002" Then TrasladoIVA += traslado.Attributes("Importe").Value.ToDecimal + If traslado.Attributes("Impuesto").Value = "003" Then TrasladoIEPS += traslado.Attributes("Importe").Value.ToDecimal + End If + Next + Else + + For Each traslado As XmlNode In nodeTraslados + If traslado.Attributes("Importe") IsNot Nothing Then + If traslado.Attributes("impuesto").Value = "IVA" Then TrasladoIVA += traslado.Attributes("importe").Value.ToDecimal + + If traslado.Attributes("impuesto").Value = "IEPS" Then TrasladoIEPS += traslado.Attributes("importe").Value.ToDecimal + End If + Next + End If + + SumaTotalTraslados += TrasladoIVA + SumaTotalTraslados += TrasladoIEPS + End If + + Dim nodeComp As XmlNode = XMLDoc.SelectSingleNode(String.Format("//{0}:Complemento", Prefijo), namespaces) + If node IsNot Nothing AndAlso node.ChildNodes.Count > 0 Then + + Dim nodeTFD As XmlNode = nodeComp.SelectSingleNode(String.Format("//{0}:TimbreFiscalDigital", "tfd"), namespaces) + + UUID = ValorXML(nodeTFD, "UUID", "") + + Dim nodeRF As XmlNode = nodeComp.SelectSingleNode(String.Format("//{0}:CFDIRegistroFiscal ", "registrofiscal"), namespaces) + If nodeRF IsNot Nothing Then + Folio = ValorXML(nodeRF, "folio").TrimStart("0"c) + End If + + node = node.SelectSingleNode(String.Format("//{0}:ImpuestosLocales", "implocal"), namespaces) + + If node IsNot Nothing AndAlso node.ChildNodes.Count > 0 Then + OtrosImpuestos = ValorXML(node, "TotaldeTraslados", "0").ToDecimal + '2022.06.04-- se quitan los datos de retenciones de impuestos locales, generan conflicto. RMF + 'OtrosImpuestosRetenciones = ValorXML(node, "TotaldeRetenciones", "0").ToDecimal + End If + End If + + + If XMLCargaExistosa Then + If Not ValidateUUID(UUID) Then + GuardaLog($"UUID Invalido {UUID} .") + Errores.AppendLine($"UUID Invalido {UUID} .") + XMLCargaExistosa = False + End If + End If + + +#Region "DETALLES" + + Dim ObjeFacturas As New ClsCompras + Dim AjustaUltimoConcepto As Boolean = False + + Dim nodeconceptos As XmlNode = XMLDoc.SelectSingleNode(String.Format("//{0}:Conceptos", Prefijo), namespaces) + Dim XML As String = Replace(nodeconceptos.OuterXml, "", "") 'salto de linea html + XML = XML.Replace("<br>", "") + XML = XML.Replace("<", "") + + XML = XML.Replace("&", "") 'adicional, si hay otros + + If ObjeFacturas.GetFacturasComparacionXML(StrCFDIVerion, XML, UsuarioActual.CveEmpresa) Then + TmpDT = ObjeFacturas.DtResultados + TmpDT.Columns.Add("CveSATPSActualizado") + SubTotalConceptos = TmpDT.SUMD("Total").RoundSQL + + If Not TmpDT.Columns.Contains("Amortizacion") Then + TmpDT.Columns.Add("Amortizacion", GetType(Decimal)) + End If + '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")) + Next + + If ProductosCodigoSATNoPermitidos.ToString.Length > 0 Then + Errores.AppendLine($"El comprobante contiene productos con código SAT '01010101', revise los productos:

    {ProductosCodigoSATNoPermitidos.ToString}") + + End If + Else + GuardaLog($"Error al cargar detalles GetFacturasComparacionXML.") + Errores.AppendLine($"Error al cargar detalles GetFacturasComparacionXML.") + XMLCargaExistosa = False + End If + + ObjeFacturas.Dispose() + + If CFDIVersion = EnumCFDIVersion.V33 OrElse CFDIVersion = EnumCFDIVersion.V40 Then + If Not TmpDT.Columns.Contains("Amortizacion") Then + TmpDT.Columns.Add("Amortizacion", GetType(Decimal)) + End If + TmpDT.AcceptChanges() + ValidacionesTotalesXml() + End If + + Me.PorcentajeIVA = TmpDT.MAX("IVAPorcentaje").ToDecimal + +#End Region + End Sub + + Public Function ConfiguraRegistroRapidoReembolso(CvePS As Integer, CveSubProyecto As Integer, CveCajaChica As Integer, CvePersonal As Integer, CveRetIVAConcepto As Integer, CveRetISRConcepto As Integer, NumeroReembolso As String) As Boolean + + Dim respuesta As Boolean = True + Me.CveSubProyecto = CveSubProyecto + Me.CveSubProyectoPrincipal = CveSubProyecto + Me.CveCajaChica = CveCajaChica + Me.CvePersonal = CvePersonal + Me.CveRetIVAConcepto = CveRetIVAConcepto + Me.CveRetISRConcepto = CveRetISRConcepto + Me.CveTipoPoliza = 3 + Me.NumeroReembolso = NumeroReembolso + + Dim dRowSubProyecto As DataRow = GlobalDTSubProyectos(-1, CveSubProyecto, CveEmpresa:=UsuarioActual.CveEmpresa).FiltroPrimero("") + + If dRowSubProyecto IsNot Nothing Then + Me.Proyecto = dRowSubProyecto("Proyecto").ToString + Me.CveProyecto = (dRowSubProyecto("CveProyecto").ToString).ToEntero + Me.SubProyecto = dRowSubProyecto("SubProyecto").ToString + Else + Errores.AppendLine($"Error al cargar el Sub Proyecto CveSubProyecto: {CveSubProyecto}") + Return False + End If + + Dim DTIndex As DataTable = TmpDT.FiltraParametros("", DistinctColumns:={"Consec"}) + + For Each dRowIndex As DataRow In DTIndex.Rows + If Not UpdatePSReembolso(dRowIndex("Consec").ToString.ToEntero, CvePS) Then + respuesta = False + End If + Next + + If respuesta AndAlso IEPS > 0 Then + If Not AgregaIEPSReembolso(CvePS:=CvePS) Then + respuesta = False + Else + IEPS = 0 + End If + End If + + If Not AjustesValidacion() Then + respuesta = False + End If + + Return respuesta + + End Function + Public Function ConfiguraRegistroRapidoRNC(CvePS As Integer, CveUM As Integer, UM As String, CveClasificacion As Integer, Clasificacion As String, PS As String, CveSubProyecto As Integer, SubProyecto As String, + SubTotal As Decimal, Total As Decimal) As Boolean + + Dim respuesta As Boolean = True + Me.CveSubProyecto = CveSubProyecto + Me.CveSubProyectoPrincipal = CveSubProyecto + Me.CveCajaChica = -1 + Me.CvePersonal = -1 + Me.CveRetIVAConcepto = -1 + Me.CveRetISRConcepto = -1 + Me.CveTipoPoliza = 3 + Me.NumeroReembolso = "" + Me.SubTotal = SubTotal + Me.Total = Total + + + Dim dRowSubProyecto As DataRow = GlobalDTSubProyectos(-1, CveSubProyecto, CveEmpresa:=UsuarioActual.CveEmpresa).FiltroPrimero("") + + If dRowSubProyecto IsNot Nothing Then + Me.Proyecto = dRowSubProyecto("Proyecto").ToString + Me.CveProyecto = (dRowSubProyecto("CveProyecto").ToString).ToEntero + Me.SubProyecto = dRowSubProyecto("SubProyecto").ToString + Else + Errores.AppendLine($"Error al cargar el Sub Proyecto CveSubProyecto: {CveSubProyecto}") + Return False + End If + + + CreaDTCompras() + AddPS(1, CveUM, UM, CveClasificacion, Clasificacion, CvePS, PS, 1, CveSubProyecto.ToString, SubProyecto, "", "-1", "", SubTotal, SubTotal, 0, 0, 0, 0, 0, 0) + + 'If respuesta AndAlso IEPS > 0 Then + ' If Not AgregaIEPSReembolso(CvePS:=CvePS) Then + ' respuesta = False + ' Else + ' IEPS = 0 + ' End If + 'End If + + 'If Not AjustesValidacion() Then + ' respuesta = False + 'End If + + Return respuesta + + End Function + + + Private Sub CreaDTCompras() + + TmpDT = New DataTable + TmpDT.Columns.Add("Consec", GetType(Integer)) + TmpDT.Columns.Add("Cantidad", GetType(Decimal)) + TmpDT.Columns.Add("Codigo", GetType(String)) + TmpDT.Columns.Add("CveUM", GetType(Integer)) + TmpDT.Columns.Add("UM", GetType(String)) + TmpDT.Columns.Add("CveClasificacion", GetType(Integer)) + TmpDT.Columns.Add("Clasificacion", GetType(String)) + TmpDT.Columns.Add("CveClasificacionActualizar", GetType(Integer)) + TmpDT.Columns.Add("CvePS", GetType(Integer)) + TmpDT.Columns.Add("PS", GetType(String)) + TmpDT.Columns.Add("Obs", GetType(String)) + TmpDT.Columns.Add("PU", GetType(Decimal)) + TmpDT.Columns.Add("IVA", GetType(Decimal)) + TmpDT.Columns.Add("IVAPorcentaje", GetType(Decimal)) + TmpDT.Columns.Add("RetIVA", GetType(Decimal)) + TmpDT.Columns.Add("RetIVAPorcentaje", GetType(Decimal)) + TmpDT.Columns.Add("RetISR", GetType(Decimal)) + TmpDT.Columns.Add("RetISRPorcentaje", GetType(Decimal)) + TmpDT.Columns.Add("IEPSPS", GetType(Double)) + TmpDT.Columns.Add("IEPSPSPorcentaje", GetType(Double)) + TmpDT.Columns.Add("IEPSPSIVA", GetType(Double)) + TmpDT.Columns.Add("IEPSPSIVAPorcentaje", GetType(Double)) + TmpDT.Columns.Add("Descuento", GetType(Decimal)) + TmpDT.Columns.Add("OtrosGastos", GetType(Decimal)) + TmpDT.Columns.Add("Total", GetType(Decimal)) + TmpDT.Columns.Add("AsientoContableCompras", GetType(Integer)) + TmpDT.Columns.Add("Proyecto", GetType(String)) + TmpDT.Columns.Add("CveProyecto", GetType(Integer)) + TmpDT.Columns.Add("CveSubProyecto", GetType(Integer)) + TmpDT.Columns.Add("CveContrato", GetType(Integer)) + TmpDT.Columns.Add("SubProyecto", GetType(String)) + 'TmpDT.Columns.Add("CveEq", GetType(Integer)) + TmpDT.Columns.Add("CveAlmacen", GetType(Integer)) + TmpDT.Columns.Add("CvePersonal", GetType(String)) + TmpDT.Columns.Add("Referencia", GetType(String)) + + 'AC + TmpDT.Columns.Add("CveTipoGastoAC", GetType(Integer)) + TmpDT.Columns.Add("CvePresupuestoEgreso", GetType(Integer)) + TmpDT.Columns.Add("CveProgramaOperativo", GetType(Integer)) + TmpDT.Columns.Add("CveUnidadAdministrativa", GetType(Integer)) + TmpDT.Columns.Add("CveFuenteFinanciamiento", GetType(Integer)) + TmpDT.Columns.Add("CveClasificacionOG", GetType(Integer)) + + TmpDT.Columns.Add("IdCuentaComprometido", GetType(Integer)) + TmpDT.Columns.Add("IdCuentaPorEjercer", GetType(Integer)) + TmpDT.Columns.Add("IdCuentaDevengado", GetType(Integer)) + TmpDT.Columns.Add("IdCuentaMatriz", GetType(Integer)) + + 'INVENTARIO SERIE/LOTE + TmpDT.Columns.Add("CveMetodoInventario", GetType(Integer)) + + TmpDT.Columns.Add("CveConcepto", GetType(Integer)) + + 'AF + TmpDT.Columns.Add("CveActivoFijo", GetType(Integer)) + TmpDT.Columns.Add("CodAF", GetType(String)) + TmpDT.Columns.Add("TipoAF", GetType(Integer)) + TmpDT.Columns.Add("AFMedida", GetType(Integer)) + TmpDT.Columns.Add("AFTipoMantenimiento", GetType(Integer)) + + 'PS + TmpDT.Columns.Add("CveTipoPS", GetType(Integer)) + TmpDT.Columns.Add("CodigoPS", GetType(String)) + TmpDT.Columns.Add("PSDescripcion", GetType(String)) + 'CAMPO ESPECIAL PARA GLUYAS - LEE EL DEL XML - A GLUYAS LE INTERESA EL CODIGO DEL PROVEEDOR + TmpDT.Columns.Add("PSCodigo", GetType(String)) + + + 'OC + TmpDT.Columns.Add("CveOrdenCompraDetalle", GetType(Integer)) + TmpDT.Columns.Add("ProductoOC", GetType(String)) + TmpDT.Columns.Add("CantidadF", GetType(Double)) + + 'Consignaciones + TmpDT.Columns.Add("CveAlmacenConsignacion", GetType(Integer)) + TmpDT.Columns.Add("NoConsignacion", GetType(Integer)) + TmpDT.Columns.Add("CveConsignacion", GetType(Integer)) + TmpDT.Columns.Add("HdnPS", GetType(String)) + TmpDT.Columns.Add("HdnCvePS", GetType(String)) + TmpDT.Columns.Add("HdnClasificacion", GetType(String)) + TmpDT.Columns.Add("HdnCveClasificacion", GetType(String)) + TmpDT.Columns.Add("HdnCveAlmacen", GetType(String)) + + 'Fletes y Servicios + TmpDT.Columns.Add("AplicaCostoIndirecto", GetType(Integer)) + TmpDT.Columns.Add("CostoIndirectoAlmacen", GetType(Decimal)) + TmpDT.Columns.Add("CveCompraDetalle", GetType(Integer)) + + TmpDT.Columns.Add("EntregaDirecta", GetType(Integer)) + + 'SAT + TmpDT.Columns.Add("CveSATPS", GetType(Integer)) + TmpDT.Columns.Add("SATClaveProductoServicio", GetType(String)) + TmpDT.Columns.Add("CveUnidadMedidaSAT", GetType(Integer)) + TmpDT.Columns.Add("SATClaveUnidadMedida", GetType(String)) + TmpDT.Columns.Add("CveSATPSActualizado", GetType(Integer)) + + + 'Tipo de Gasto + TmpDT.Columns.Add("CveTipoGasto", GetType(Integer)) + TmpDT.Columns.Add("TipoGasto", GetType(String)) + + TmpDT.Columns.Add("ImporteSinImpuestos", GetType(Double)) + TmpDT.Columns.Add("ImporteConImpuestos", GetType(Double)) + TmpDT.Columns.Add("NoDeducible", GetType(Boolean)) + + TmpDT.Columns.Add("DifPSSat", GetType(Integer)) + + + TmpDT.Columns.Add("CveContratoDetalle", GetType(Integer)) + TmpDT.Columns.Add("CveCultivoCuadroDetalle", GetType(Integer)) + TmpDT.Columns.Add("TemporadaCuadro", GetType(String)) + + + TmpDT.AcceptChanges() + + + End Sub + Private Function AjustesValidacion() As Boolean + Dim respuesta As Boolean = True + 'VALIDA IMPORTES + If Not ValidaTotalesGuardar() Then + respuesta = False + End If + + If Not AjustaCombustibles() Then + respuesta = False + End If + + If Not AjustaIVA() Then + respuesta = False + End If + + If Not AjustaRetIVA() Then + respuesta = False + End If + + If Not AjustaRetISR() Then + respuesta = False + End If + + Return respuesta + + End Function + + Private Function ValidaTotalesGuardar() As Boolean + Dim EsValido As Boolean = True + + 'VALIDA IMPORTES + 'VALIDA TOTAL CON LOS IMPORTES TOTALES + Dim TempSubTotal, TempDescuentos, TempIVA, TempSubTotal2, TempRetIVA, TempRetISR, TempTotal, DifTotales, TempIEPS As Decimal + + Dim Amortizacion As Decimal = 0 + Dim TieneAmortizacion As Boolean = False + If DocumentosRelacionadosAnticiposUUIDList IsNot Nothing AndAlso DocumentosRelacionadosAnticiposUUIDList.Count > 0 Then 'Fix me + ' AndAlso ArrAnticipos IsNot Nothing AndAlso ArrAnticipos.Count > 0 Then + 'TieneAmortizacion = True + End If + + 'If CveCompra < 0 AndAlso Not TieneAmortizacion Then + ' LblAmortizacion.Text = "0.00" + 'End If + + 'If UsuarioActual.CveEmpresa = 119 AndAlso TieneAmortizacion Then + ' Amortizacion = LblAmortizacion.Text.Trim.ToDecimal + ' TxtSubTotal.Text = (TxtSubTotal.Text.ToDouble + Amortizacion).ToString + 'End If + + + TempSubTotal = SubTotal + SubTotalOriginal = SubTotal + SubTotal2Original = SubTotal2 + TempDescuentos = Descuento + Amortizacion + TempSubTotal2 = TempSubTotal - TempDescuentos + TempIVA = IVA + TempIEPS = IEPS + TempRetIVA = RetIVA + TempRetISR = RetISR + TempTotal = Math.Round(TempSubTotal2 + TempIVA + TempIEPS - TempRetIVA - TempRetISR + OtrosImpuestos - Amortizacion, 2) + DifTotales = Total - TempTotal + Dim DiferenciaPermitida As Decimal = 0.6D + + If Math.Abs(DifTotales) > DiferenciaPermitida Then + Errores.AppendLine($"Los importes de los conceptos (Productos/Servicios) no cuadran con el total. Por favor verifique y vuelva a intentar.[{Math.Abs(DifTotales) - DiferenciaPermitida}]") + EsValido = False + ElseIf DifTotales <> 0 Then + SubTotal2 = (SubTotal2 + DifTotales) + SubTotal = (SubTotal + DifTotales) + SubTotalOriginal = SubTotal + SubTotal2Original = SubTotal2 + End If + + Dim DiferenciaSubtotales As Decimal = 0 + If CveCompra > 0 Or CveFactura > 0 Or OCVinculada Then + + If SubTotalOriginal = Nothing Then + SubTotalOriginal = 0 + End If + + If SubTotal2Original = Nothing Then + SubTotal2Original = 0 + End If + + DiferenciaSubtotales = SubTotal2Original.ToString.ToDecimal - TmpDT.SUM("Total").ToString.ToDecimal + '[IPP] PARCHE: Factura TELMEX para APH 12/ENERO/2018 + If CveFactura = 286290 Then + DiferenciaSubtotales += Descuento + End If + If Math.Abs(DiferenciaSubtotales) > 1 And Not CompraNoDeducible = 1 Then 'EsNoDeducible + Errores.AppendLine("Los importes de los conceptos (Productos/Servicios) no cuadran con el total. Por favor verifique y vuelva a intentar.") + EsValido = False + Else + AjustaImporteUltimoConcepto(DiferenciaSubtotales) + End If + Else + DiferenciaSubtotales = (SubTotal2 - TmpDT.SUMD("Total")).ToString.ToDecimal + If Math.Abs(DiferenciaSubtotales) > 1 Then + Errores.AppendLine("Los importes de los conceptos (Productos/Servicios) no cuadran con el total. Por favor verifique y vuelva a intentar.") + EsValido = False + Else + AjustaImporteUltimoConcepto(DiferenciaSubtotales) + End If + End If + + Return EsValido + End Function + + + + Private Function AjustaCombustibles() As Boolean + + Dim Respuesta As Boolean = False + + Dim IVADetalles As Decimal = TmpDT.SUMD("IVA", " IVA > 0 ") + Dim DiferenciaIVas As Decimal = IVA - IVADetalles + + + If Not TmpDT.Columns.Contains("AplicaIEPS") Then + TmpDT.Columns.Add(New DataColumn("AplicaIEPS", GetType(Boolean))) + End If + + If Not TmpDT.Columns.Contains("IEPSGrabaIVA") Then + TmpDT.Columns.Add(New DataColumn("IEPSGrabaIVA", GetType(Boolean))) + End If + + For Each dRow As DataRow In TmpDT.Rows + Dim DttPS As DataTable = GlobalDTPS(UsuarioActual.CveEmpresa, CvePS:=dRow("CvePS").ToString.ToEntero) + If DttPS IsNot Nothing AndAlso DttPS.Rows.Count > 0 Then + Dim DrPS As DataRow = DttPS.Rows(0) + dRow("AplicaIEPS") = Boolean.Parse(DrPS("AplicaIEPS").ToString) + dRow("IEPSGrabaIVA") = Boolean.Parse(DrPS("IEPSGrabaIVA").ToString) + Else + dRow("AplicaIEPS") = False + dRow("IEPSGrabaIVA") = False + End If + Next + + Dim DTConsulta As New DataTable + DTConsulta = TmpDT.FiltraParametros(" AplicaIEPS = 'True' AND IEPSGrabaIVA = 'False' AND IVA > 0 ") + + If DTConsulta.Rows.Count > 0 Then + + Dim IndiceContador As Integer = 0 + Dim IndiceUltimo As Integer = 0 + Dim CantidadRegistroConIVA As Decimal + + For Each dRow As DataRow In TmpDT.Rows + If Boolean.Parse(dRow("AplicaIEPS").ToString) And Boolean.Parse(dRow("IEPSGrabaIVA").ToString) = False And dRow("IVA").ToString.ToDecimal > 0 Then + IndiceUltimo = IndiceContador + CantidadRegistroConIVA = CantidadRegistroConIVA + 1 + End If + IndiceContador = IndiceContador + 1 + Next + + IVADetalles = TmpDT.SUMD("IVA", " IVA > 0 ") + DiferenciaIVas = IVA - IVADetalles + + If Math.Abs(DiferenciaIVas) > 0.01D Then + + If (TmpDT.Rows(IndiceUltimo)("IVA").ToString.ToDecimal + DiferenciaIVas) < 0 Then + + Dim AjusteteDividido As Decimal = Math.Abs(DiferenciaIVas) / CantidadRegistroConIVA + + For Each dRow As DataRow In TmpDT.Rows + If Boolean.Parse(dRow("AplicaIEPS").ToString) And Boolean.Parse(dRow("IEPSGrabaIVA").ToString) = False And dRow("IVA").ToString.ToDecimal > 0 Then + dRow("IVA") = dRow("IVA").ToString.ToDecimal - AjusteteDividido + End If + Next + Else + TmpDT.Rows(IndiceUltimo)("IVA") = TmpDT.Rows(IndiceUltimo)("IVA").ToString.ToDecimal + DiferenciaIVas + End If + TmpDT.AcceptChanges() + End If + + End If + + 'Revalidacion de ajuste + IVADetalles = TmpDT.SUMD("IVA", " IVA > 0 ") + DiferenciaIVas = IVA - IVADetalles + + If Math.Abs(DiferenciaIVas) > 0.01D Then + Respuesta = False + If IVADetalles > 0 Then + + For Each dRow As DataRow In TmpDT.Rows + If dRow("IVA").ToString.ToDecimal > 0 Then + dRow("IVA") = dRow("IVA").ToString.ToDecimal + DiferenciaIVas + TmpDT.AcceptChanges() + Respuesta = True + Exit For + End If + Next + Else + Alert("Los productos especificados en el listado no tienen asignado impuesto IVA, favor de realizar la corrección en el producto que aplique el impuesto.", TipoMensaje.MsgAdvertencia) + Respuesta = False + End If + Else + Respuesta = True + End If + + If Respuesta Then + + Dim IEPSPSDetalles As Decimal = TmpDT.SUMD("IEPSPS", " IEPSPS > 0 ") + Dim DiferenciaIEPSPS As Decimal = IEPS - IEPSPSDetalles + + Dim DTConsultaIEPSPS As New DataTable + DTConsultaIEPSPS = TmpDT.FiltraParametros(" AplicaIEPS = 'True'") + Dim IndiceContador As Integer = 0 + Dim IndicePrimero As Integer = 0 + + For Each dRow As DataRow In TmpDT.Rows + If Boolean.Parse(dRow("AplicaIEPS").ToString) And dRow("IEPSPS").ToString.ToDecimal > 0 Then + IndicePrimero = IndiceContador + Exit For + End If + IndiceContador = IndiceContador + 1 + Next + If DiferenciaIEPSPS.RoundSQL(2) <> 0 Then + + TmpDT.Rows(IndicePrimero)("IEPSPS") = TmpDT.Rows(IndicePrimero)("IEPSPS").ToString.ToDecimal + DiferenciaIEPSPS + TmpDT.AcceptChanges() + End If + + For Each dRow As DataRow In TmpDT.Rows + If dRow("IEPSPSPorcentaje").ToString.ToDecimal > 0 AndAlso dRow("IEPSPS").ToString.ToDecimal = 0 Then + dRow("IEPSPSPorcentaje") = 0 + End If + Next + TmpDT.AcceptChanges() + End If + + Return Respuesta + + End Function + + + Private Function AjustaIVA() As Boolean + + Dim Respuesta As Boolean = False + + Dim IVADetalles As Decimal = TmpDT.SUMD("IVA", " IVA > 0 ") + Dim DiferenciaIVas As Decimal = IVA - IVADetalles + + If Math.Abs(DiferenciaIVas) > 0 Then + If Math.Abs(DiferenciaIVas) <= 0.05 Then + + Dim DTConsulta As New DataTable + DTConsulta = TmpDT.FiltraParametros(" IVA > 0 ") + + If DTConsulta.Rows.Count > 0 Then + + Dim IndiceContador As Integer = 0 + Dim IndiceUltimo As Integer = 0 + Dim CantidadRegistroConIVA As Decimal + + For Each dRow As DataRow In TmpDT.Rows + If dRow("IVA").ToString.ToDecimal > 0 Then + IndiceUltimo = IndiceContador + CantidadRegistroConIVA = CantidadRegistroConIVA + 1 + End If + IndiceContador = IndiceContador + 1 + Next + + IVADetalles = TmpDT.SUMD("IVA", " IVA > 0 ") + DiferenciaIVas = IVA - IVADetalles + + If Math.Abs(DiferenciaIVas) > 0.0D Then + + If (TmpDT.Rows(IndiceUltimo)("IVA").ToString.ToDecimal + DiferenciaIVas) < 0 Then + + Dim AjusteteDividido As Decimal = Math.Abs(DiferenciaIVas) / CantidadRegistroConIVA + + For Each dRow As DataRow In TmpDT.Rows + dRow("IVA") = dRow("IVA").ToString.ToDecimal - AjusteteDividido + Next + Else + TmpDT.Rows(IndiceUltimo)("IVA") = TmpDT.Rows(IndiceUltimo)("IVA").ToString.ToDecimal + DiferenciaIVas + End If + TmpDT.AcceptChanges() + End If + End If + + 'Revalidacion de ajuste + IVADetalles = TmpDT.SUMD("IVA", " IVA > 0 ") + DiferenciaIVas = IVA - IVADetalles + + If Math.Abs(DiferenciaIVas) > 0.01D Then + Respuesta = False + If IVADetalles > 0 Then + + For Each dRow As DataRow In TmpDT.Rows + If dRow("IVA").ToString.ToDecimal > 0 Then + dRow("IVA") = dRow("IVA").ToString.ToDecimal + DiferenciaIVas + TmpDT.AcceptChanges() + Respuesta = True + Exit For + End If + Next + + Else + Errores.AppendLine("Los productos especificados en el listado no tienen asignado impuesto IVA, favor de realizar la corrección en el producto que aplique el impuesto.") + Respuesta = False + End If + Else + Respuesta = True + End If + + Else + Errores.AppendLine($"existe una diferencia de {DiferenciaIVas} entre el IVA de la compra y los detalles.") + Respuesta = False + End If + Else + Respuesta = True + End If + + Return Respuesta + + End Function + + Private Function AjustaRetIVA() As Boolean + + Dim Respuesta As Boolean = False + + Dim RetIVADetalles As Decimal = TmpDT.SUMD("RetIVA", " RetIVA > 0 ") + Dim DiferenciaRetIVA As Decimal = RetIVA - RetIVADetalles + + If Math.Abs(DiferenciaRetIVA) > 0 Then + If Math.Abs(DiferenciaRetIVA) <= 0.05 Then + + Dim DTConsulta As New DataTable + DTConsulta = TmpDT.FiltraParametros(" RetIVA > 0 ") + + If DTConsulta.Rows.Count > 0 Then + + Dim IndiceContador As Integer = 0 + Dim IndiceUltimo As Integer = 0 + Dim CantidadRegistroConRetIVA As Decimal + + For Each dRow As DataRow In TmpDT.Rows + If dRow("RetIVA").ToString.ToDecimal > 0 Then + IndiceUltimo = IndiceContador + CantidadRegistroConRetIVA = CantidadRegistroConRetIVA + 1 + End If + IndiceContador = IndiceContador + 1 + Next + + RetIVADetalles = TmpDT.SUMD("RetIVA", " RetIVA > 0 ") + DiferenciaRetIVA = RetIVA - RetIVADetalles + + If Math.Abs(DiferenciaRetIVA) > 0.0D Then + + If (TmpDT.Rows(IndiceUltimo)("RetIVA").ToString.ToDecimal + DiferenciaRetIVA) < 0 Then + + Dim AjusteteDividido As Decimal = Math.Abs(DiferenciaRetIVA) / CantidadRegistroConRetIVA + + For Each dRow As DataRow In TmpDT.Rows + dRow("RetIVA") = dRow("RetIVA").ToString.ToDecimal - AjusteteDividido + Next + + Else + TmpDT.Rows(IndiceUltimo)("RetIVA") = TmpDT.Rows(IndiceUltimo)("RetIVA").ToString.ToDecimal + DiferenciaRetIVA + End If + + TmpDT.AcceptChanges() + + End If + + End If + + 'Revalidacion de ajuste + RetIVADetalles = TmpDT.SUMD("RetIVA", " RetIVA > 0 ") + DiferenciaRetIVA = RetIVA - RetIVADetalles + + If Math.Abs(DiferenciaRetIVA) > 0.01D Then + Respuesta = False + If RetIVADetalles > 0 Then + + For Each dRow As DataRow In TmpDT.Rows + If dRow("RetIVA").ToString.ToDecimal > 0 Then + dRow("RetIVA") = dRow("RetIVA").ToString.ToDecimal + DiferenciaRetIVA + TmpDT.AcceptChanges() + Respuesta = True + Exit For + End If + Next + + Else + Errores.AppendLine("Los productos especificados en el listado no tienen asignado impuesto RetIVA, favor de realizar la corrección en el producto que aplique el impuesto.") + Respuesta = False + End If + Else + Respuesta = True + End If + + Else + Errores.AppendLine($"existe una diferencia de {DiferenciaRetIVA} entre el RetIVA de la compra y los detalles.") + End If + Else + Respuesta = True + + End If + + Return Respuesta + + End Function + + Private Function AjustaRetISR() As Boolean + + Dim Respuesta As Boolean = False + + Dim RetISRDetalles As Decimal = TmpDT.SUMD("RetISR", " RetISR > 0 ") + Dim DiferenciaRetISR As Decimal = RetISR - RetISRDetalles + + If Math.Abs(DiferenciaRetISR) > 0 Then + If Math.Abs(DiferenciaRetISR) <= 0.05 Then + + Dim DTConsulta As New DataTable + DTConsulta = TmpDT.FiltraParametros(" RetISR > 0 ") + + If DTConsulta.Rows.Count > 0 Then + + Dim IndiceContador As Integer = 0 + Dim IndiceUltimo As Integer = 0 + Dim CantidadRegistroConRetISR As Decimal + + For Each dRow As DataRow In TmpDT.Rows + If dRow("RetISR").ToString.ToDecimal > 0 Then + IndiceUltimo = IndiceContador + CantidadRegistroConRetISR = CantidadRegistroConRetISR + 1 + End If + IndiceContador = IndiceContador + 1 + Next + + RetISRDetalles = TmpDT.SUMD("RetISR", " RetISR > 0 ") + DiferenciaRetISR = RetISR - RetISRDetalles + + If Math.Abs(DiferenciaRetISR) > 0.0D Then + + If (TmpDT.Rows(IndiceUltimo)("RetISR").ToString.ToDecimal + DiferenciaRetISR) < 0 Then + + Dim AjusteteDividido As Decimal = Math.Abs(DiferenciaRetISR) / CantidadRegistroConRetISR + + For Each dRow As DataRow In TmpDT.Rows + dRow("RetISR") = dRow("RetISR").ToString.ToDecimal - AjusteteDividido + Next + + Else + TmpDT.Rows(IndiceUltimo)("RetISR") = TmpDT.Rows(IndiceUltimo)("RetISR").ToString.ToDecimal + DiferenciaRetISR + End If + + TmpDT.AcceptChanges() + + End If + + End If + + 'Revalidacion de ajuste + RetISRDetalles = TmpDT.SUMD("RetISR", " RetISR > 0 ") + DiferenciaRetISR = RetISR - RetISRDetalles + + If Math.Abs(DiferenciaRetISR) > 0.01D Then + Respuesta = False + If RetISRDetalles > 0 Then + + For Each dRow As DataRow In TmpDT.Rows + If dRow("RetISR").ToString.ToDecimal > 0 Then + dRow("RetISR") = dRow("RetISR").ToString.ToDecimal + DiferenciaRetISR + TmpDT.AcceptChanges() + Respuesta = True + Exit For + End If + Next + + Else + Errores.AppendLine("Los productos especificados en el listado no tienen asignado impuesto RetISR, favor de realizar la corrección en el producto que aplique el impuesto.") + Respuesta = False + End If + Else + Respuesta = True + End If + + Else + Errores.AppendLine($"existe una diferencia de {DiferenciaRetISR} entre el RetISR de la compra y los detalles.") + Respuesta = False + End If + Else + Respuesta = True + End If + + Return Respuesta + + End Function + + Private Function AgregaIEPSReembolso(CvePS As Integer) As Boolean + + Dim respuesta As Boolean = True + + If IEPSGasto Or OtrosImpuestosGasto Then + + 'AGREGA IEPS COMO CONCEPTO + If IEPSGasto Then + AgregarConceptoIEPS(TrasladoIEPS, CvePS) + For Each Dr As DataRow In TmpDT.Rows + Dr("IEPSPS") = 0 + Dr("IEPSPSPorcentaje") = 0 + Next + TmpDT.AcceptChanges() + End If + 'AGREGA OTROS IMPUESTOS COMO CONCEPTO + If OtrosImpuestosGasto Then + AgregarConceptoIEPS(OtrosImpuestos, CvePS) + End If + Else + respuesta = False + Errores.AppendLine("Debe seleccionar al menos un impuesto. ") + End If + CalculaTotales() + + Return respuesta + + End Function + + + Private Sub AgregarConceptoIEPS(IEPS As Decimal, CvePS1 As Integer) + Dim SubTotalR As Decimal = TmpDT.SUM("Total").ToString.ToDecimal + + Dim PSS As DataTable = GlobalDTPS(UsuarioActual.CveEmpresa).FiltraParametros(String.Format("CvePS = {0} ", CvePS1), "PS") + Dim PSS2 As DataTable = TmpDT.FiltraParametros(String.Format("CvePS = {0} ", CvePS1), "PS") + + If PSS.Rows.Count > 0 Or PSS2.Rows.Count > 0 Then + Dim CveUM As Integer = 0 + Dim UM As String = "" + Dim CveClasificacion As Integer = 0 + Dim Clasificacion As String = "" + Dim CvePS As Integer = 0 + Dim PS As String = "" + Dim CveTipoPS As Integer = 0 + + If PSS.Rows.Count > 0 Then + CveUM = PSS.Rows(0)("CveUM").ToString.ToEntero + UM = PSS.Rows(0)("UnidadMedida").ToString + CveClasificacion = PSS.Rows(0)("CveClasificacion").ToString.ToEntero + Clasificacion = PSS.Rows(0)("Clasificacion").ToString + CvePS = PSS.Rows(0)("CvePS").ToString.ToEntero + PS = PSS.Rows(0)("PS").ToString + CveTipoPS = PSS.Rows(0)("CveTipoPS").ToString.ToEntero + End If + + Dim Cantidad As Decimal = 1 + Dim CveSubProyectoContrato As String = "-1" + Dim CveProyecto As String = "-1" + Dim SubProyecto As String = "SE" + Dim Proyecto As String = "SE" + Dim Obs As String = "" + Dim PU As Decimal = IEPS + Dim Total As Decimal = Cantidad * PU + Dim IVA As Decimal = 0 + Dim Descuento As Decimal = 0 + + If PSS2.Rows.Count > 0 Then + CveUM = PSS2.Rows(0)("CveUM").ToString.ToEntero + UM = PSS2.Rows(0)("UM").ToString + CveClasificacion = PSS2.Rows(0)("CveClasificacion").ToString.ToEntero + Clasificacion = PSS2.Rows(0)("Clasificacion").ToString + CvePS = PSS2.Rows(0)("CvePS").ToString.ToEntero + PS = PSS2.Rows(0)("PS").ToString + CveTipoPS = PSS2.Rows(0)("CveTipoPS").ToString.ToEntero + + CveSubProyectoContrato = PSS2.Rows(0)("CveSubProyecto").ToString + CveProyecto = PSS2.Rows(0)("CveProyecto").ToString + SubProyecto = PSS2.Rows(0)("SubProyecto").ToString + Proyecto = PSS2.Rows(0)("Proyecto").ToString + Obs = PSS2.Rows(0)("Obs").ToString + + Dim CveTipoGasto As Integer = PSS2.Rows(0)("CveTipoGasto").ToString.ToEntero + Dim TipoGasto As String = PSS2.Rows(0)("TipoGasto").ToString + + AddPS(Cantidad, CveUM, UM, CveClasificacion, Clasificacion, CvePS, PS, CveTipoPS, CveSubProyectoContrato, SubProyecto, Proyecto, CveProyecto, Obs, PU, Total, IVA, 0, 0, 0, 0, Descuento, TCalculaTotales:=False, CveTipoGasto:=CveTipoGasto, + TipoGasto:=TipoGasto, ModalidadAccionPS:=EnumModalidadAccionPS.Agregar) + + Else + AddPS(Cantidad, CveUM, UM, CveClasificacion, Clasificacion, CvePS, PS, CveTipoPS, CveSubProyectoContrato, SubProyecto, Proyecto, CveProyecto, Obs, PU, Total, IVA, 0, 0, 0, 0, Descuento, TCalculaTotales:=False) + End If + End If + + Dim SubTotalIEPS As Decimal = TmpDT.SUMD("Total") + + Me.SubTotal = Math.Round(SubTotalIEPS, 2) + Me.SubTotalConceptos = Math.Round(SubTotalIEPS, 2) + + PSS.Dispose() + End Sub + + Private Function AddPS(Cantidad As Decimal, CveUM As Integer, UM As String, CveClasificacion As Integer, Clasificacion As String, CvePS As Integer, PS As String, CveTipoPS As Integer, CveSubProyectoContrato As String, SubProyecto As String, Proyecto As String, CveProyecto As String, + Obs As String, PU As Decimal, Total As Decimal, IVA As Decimal, RetIVA As Decimal, RetISR As Decimal, IEPSPS As Decimal, IEPSPSIVA As Decimal, Descuento As Decimal, Optional CveOrdenCompraDetalle As Integer = -1, Optional TCalculaTotales As Boolean = True, + Optional PSCodigo As String = "-", Optional PSDescripcion As String = "-", Optional CantidadF As Double = -1, Optional EntregaDirecta As Integer = -1, Optional OtrosGastos As Decimal = 0, + Optional CveSATPS As Integer = -1, Optional CargaXml As Boolean = False, Optional CveTipoGasto As Integer = -1, Optional TipoGasto As String = "", Optional PorcentajeIVA As Decimal = 0, + Optional PorcentajeIEPS As Decimal = 0, Optional PorcentajeRetIVA As Decimal = 0, Optional PorcentajeRetISR As Decimal = 0, Optional NoDeducible As Boolean = False, Optional CveContratoDetalle As Integer = -1, Optional CveCultivoCuadroDetalle As Integer = -1, + Optional CveSATPSActualizado As Boolean = False, Optional TemporadaCuadro As String = "", Optional ModalidadAccionPS As EnumModalidadAccionPS = EnumModalidadAccionPS.Agregar, Optional Con As Integer = -1, + Optional CveProgramaOperativo As Integer = -1, Optional CveUnidadAdministrativa As Integer = -1, Optional CveFuenteFinanciamiento As Integer = -1, Optional CveTipoGastoAC As Integer = -1, Optional CveClasificacionOG As Integer = -1) As Integer + + Dim Row As DataRow = Nothing + + Row = TmpDT.NewRow() + Dim Retorno As Integer = 0 + Dim CveContrato As Integer = -1 + Dim CveSubProyecto As Integer = -1 + Dim Valores As String() + + ''CONTRATOS + If CveSubProyectoContrato.Contains("|"c) Then + Valores = CveSubProyectoContrato.Split("|"c) + CveContrato = Valores(1).ToEntero + CveSubProyecto = Valores(0).ToEntero + Else + CveSubProyecto = CveSubProyectoContrato.ToEntero + End If + + 'DR PS + Dim DrPS As DataRow = Nothing + If CvePS > 0 Then + DrPS = GlobalDTPS(UsuarioActual.CveEmpresa, CvePS:=CvePS).Rows(0) + End If + + If DrPS IsNot Nothing Then + Row("PSCodigo") = If(PSCodigo = "", DrPS("PSCodigo").ToString, PSCodigo) + Row("CveMetodoInventario") = DrPS("Inv_CveMetodoInventario").ToString.ToEntero + + If CveTipoCompra = EnumTipoCompra.Garantia AndAlso DrPS("AplicaSerie").ToString = "True" Then + Row("CveMetodoInventario") = "1" + End If + + Else + Row("PSCodigo") = PSCodigo + Row("CveMetodoInventario") = 0 + End If + + If ModalidadAccionPS = EnumModalidadAccionPS.Actualizar Then + Row("Consec") = Con + Else + Row("Consec") = TmpDT.Rows.Count + 1 + End If + + If (CFDIVersion = EnumCFDIVersion.V33 Or CFDIVersion = EnumCFDIVersion.V40) And CveSATPS > 0 Then + Dim DrPSSAT As DataRow = Nothing + If CargaXml Then + DrPSSAT = GlobalDTPSATPS("-1", CveSATPS.ToString).FiltroPrimero("") + Else + DrPSSAT = GlobalDTPSATPS("-1", CveSATPS.ToString).FiltroPrimero("") + End If + If DrPSSAT IsNot Nothing Then + Row("SATClaveProductoServicio") = DrPSSAT("SATClaveProductoServicio").ToString + Row("CveSATPS") = DrPSSAT("CveSATPS").ToString + If CveSATPSActualizado Then + Row("CveSATPSActualizado") = 1 + Else + Row("CveSATPSActualizado") = 0 + End If + End If + End If + + Try + If (DrPS("CvePSCargo").ToString <> "") Then 'si es un producto de usado. que se registre contablemente como alamcen(como producto) + CveTipoPS = 2 + End If + Catch ex As Exception + + End Try + + Dim DecimalesPermitidos As Integer = 6 + + Row("CveConcepto") = TmpDT.Rows.Count + 1 + Row("Cantidad") = Math.Round(Cantidad, DecimalesPermitidos) + Row("CantidadF") = If(CantidadF = -1, Math.Round(Cantidad, DecimalesPermitidos), Math.Round(CantidadF, DecimalesPermitidos)) + Row("CveUM") = CveUM + Row("UM") = UM + Row("CveClasificacion") = CveClasificacion + Row("CveClasificacionActualizar") = CveClasificacion + Row("Clasificacion") = Clasificacion + Row("CvePS") = CvePS + Row("PS") = PS + Row("CveTipoPS") = CveTipoPS + + Row("PSDescripcion") = PSDescripcion + Row("CveSubProyecto") = CveSubProyecto.ToEntero + Row("CveProyecto") = CveProyecto.ToEntero + Row("CveContrato") = CveContrato.ToEntero + Row("SubProyecto") = If(SubProyecto = "Seleccione", "Sin Sub Proyecto", SubProyecto) + Row("Proyecto") = If(Proyecto = "Seleccione", "Sin Proyecto", Proyecto) + Row("CveActivoFijo") = -1 + Row("Obs") = Obs + Row("CveActivoFijo") = -1 + Row("CodAF") = "-1" + Row("TipoAF") = -1 + Row("CveOrdenCompraDetalle") = CveOrdenCompraDetalle + Row("EntregaDirecta") = EntregaDirecta + + Row("NoDeducible") = NoDeducible + + + Total = Math.Round(PU, DecimalesPermitidos) * Cantidad - Descuento + Row("PU") = Math.Round(PU, DecimalesPermitidos) + If CargaXml And (CFDIVersion = EnumCFDIVersion.V33 Or CFDIVersion = EnumCFDIVersion.V40) Then + + If CveFactura > 0 And IVA = 0 Then + Row("IVA") = 0 + Row("IVAPorcentaje") = 0 + Else + Row("IVA") = Math.Round(IVA, DecimalesPermitidos) + Row("IVAPorcentaje") = PorcentajeIVA + End If + + Row("RetIVA") = Math.Round(RetIVA, DecimalesPermitidos) + Row("RetIVAPorcentaje") = PorcentajeRetIVA + Row("RetISR") = Math.Round(RetISR, DecimalesPermitidos) + Row("RetISRPorcentaje") = PorcentajeRetISR + Row("IEPSPS") = Math.Round(IEPSPS, DecimalesPermitidos) + Row("IEPSPSPorcentaje") = PorcentajeIEPS + Else + 'If DdlIVA.SelectedValue.ToDouble = 0 Then Row("IVA") = 0 Else Row("IVA") = Math.Round(IVA * Total, DecimalesPermitidos) + + If CveFactura > 0 And IVA = 0 Then + Row("IVA") = 0 + Row("IVAPorcentaje") = 0 + Else + Row("IVA") = (IVA * Total).RoundSQL + Row("IVAPorcentaje") = IVA + End If + + Row("RetIVA") = (RetIVA * Total).RoundSQL + Row("RetIVAPorcentaje") = RetIVA + Row("RetISR") = (RetISR * Total).RoundSQL + Row("RetISRPorcentaje") = RetISR + Row("IEPSPS") = (IEPSPS * Total).RoundSQL + Row("IEPSPSPorcentaje") = IEPSPS + End If + + Row("ImporteConImpuestos") = (Row("Cantidad").ToString.ToDecimal * Row("PU").ToString.ToDecimal) + Row("IVA").ToString.ToDecimal + Row("IEPSPS").ToString.ToDecimal - (Row("RetIVA").ToString.ToDecimal + Row("RetISR").ToString.ToDecimal) + Row("ImporteSinImpuestos") = Row("Cantidad").ToString.ToDecimal * Row("PU").ToString.ToDecimal + + Row("IEPSPSIVA") = Math.Round(IEPSPSIVA * Total, DecimalesPermitidos) + Row("IEPSPSIVAPorcentaje") = IEPSPSIVA + Row("Descuento") = Math.Round(Descuento, DecimalesPermitidos) + Row("OtrosGastos") = Math.Round(OtrosGastos, DecimalesPermitidos) + Row("Total") = Math.Round(Total, DecimalesPermitidos) + + Row("CveTipoGasto") = CveTipoGasto + Row("TipoGasto") = If(CveTipoGasto > 0, TipoGasto, "") + + Row("CveContratoDetalle") = CveContratoDetalle + + Row("CveCultivoCuadroDetalle") = CveCultivoCuadroDetalle + Row("TemporadaCuadro") = TemporadaCuadro + + If UsuarioActual.Empresa.UsaAC Then + Row("CveProgramaOperativo") = CveProgramaOperativo + Row("CveUnidadAdministrativa") = CveUnidadAdministrativa + Row("CveFuenteFinanciamiento") = CveFuenteFinanciamiento + Row("CveTipoGastoAC") = CveTipoGastoAC + Row("CveClasificacionOG") = CveClasificacionOG + End If + 'Esta parte es para validar cuando la factura tenga ieps en o se asignara el ieps como una partida ya no se considere + If (CveFactura > 0 Or CveCompra > 0) And IEPS = 0 Then + Row("IEPSPS") = 0 + Row("IEPSPSPorcentaje") = 0 + End If + TmpDT.Rows.Add(Row) + TmpDT.Rows.IndexOf(Row) + + If TCalculaTotales Then + CalculaTotales(True) + End If + + Return Retorno + End Function + + Private Sub CalculaTotales(Optional CalculaIVA As Boolean = False, Optional EsNoDeducible As Boolean = False) + 'VARIABLES DE CALCULO + Dim LocalSubTotal, LocalDescuentos, LocalAmortizacion, LocalIVA, LocalSubTotal2, LocalRetIVA, LocalRetISR, LocalIEPSPS, LocalTotal, LocalSubTotalIVA, LocalSubTotalIEPSIVA As Decimal + + 'HACEMOS CALCULOS + LocalSubTotalIVA = TmpDT.SUMD("IVA") + LocalSubTotalIEPSIVA = TmpDT.SUMD("IEPSPSIVA") + LocalSubTotal = (TmpDT.SUMD("Total") + TmpDT.SUMD("Descuento")).RoundSQL(8) + LocalRetIVA = TmpDT.SUMD("RetIVA") + LocalRetISR = TmpDT.SUMD("RetISR") + LocalIEPSPS = TmpDT.SUMD("IEPSPS") + + If CveCompra > 0 AndAlso CveFactura > 0 Then + LocalIVA = IVA + Else + LocalIVA = If(TmpDT.SUM("IVA") > 0, LocalSubTotalIVA + LocalSubTotalIEPSIVA, 0) + End If + + LocalDescuentos = TmpDT.SUMD("Descuento") + + If Not CveCompra > 0 Then + LocalAmortizacion = Me.Amortizacion + End If + + 'RETENCIONES + Dim Retenciones As Decimal = 0 + Retenciones = LocalRetIVA + Retenciones += LocalRetISR + + + LocalSubTotal2 = LocalSubTotal - LocalDescuentos + LocalTotal = LocalSubTotal2 + LocalIVA + LocalIEPSPS - Retenciones + + 'ASIGNAMOS VALORES A VISTA + If CveCompra > 0 Or CveFactura > 0 Or Me.OCVinculada Then + SubTotal = LocalSubTotal + SubTotal2 = LocalSubTotal2 + Descuento = LocalDescuentos + + If EsNoDeducible Then + IVA = LocalIVA + RetIVA = LocalRetIVA + RetISR = LocalRetISR + IEPS = LocalIEPSPS + End If + + Total = LocalTotal + Else + SubTotal = LocalSubTotal + SubTotal2 = LocalSubTotal2 + IVA = LocalIVA + Descuento = LocalDescuentos + RetIVA = LocalRetIVA + RetISR = LocalRetISR + IEPS = LocalIEPSPS + Total = LocalTotal + 'VALORES PROPIEDAD + CompraSaldo = LocalTotal + + End If + Me.NumNoDed = TmpDT.COUNT("CvePS", "NoDeducible = True ") + + End Sub + + Private Function UpdatePSReembolso(Index As Integer, CvePS As Integer) As Boolean + + Dim Respuesta As Boolean = True + + Dim DrPS As DataRow = Nothing + Try + DrPS = TmpDT.Select($"Consec = {Index}")(0) + If DrPS Is Nothing Then + Errores.AppendLine($"No se encontrol el producto con index {Index}") + Return False + End If + Catch ex As Exception + Errores.AppendLine($"No se encontrol el producto con index {Index}") + Return False + End Try + + 'DATOS GENERALES + DrPS("Obs") = "" + DrPS("Proyecto") = Proyecto + DrPS("CveProyecto") = CveProyecto + DrPS("SubProyecto") = SubProyecto + DrPS("CveSubProyecto") = CveSubProyecto + DrPS("CveContratoDetalle") = -1 + + 'IMPORTES - [CANTIDAD Y PRECIO] + Dim Cantidad As Double = DrPS("Cantidad").ToString.ToDouble + Dim PU As Double = DrPS("PU").ToString.ToDouble + Dim Descuento As Double = DrPS("Descuento").ToString.ToDouble + Dim Total As Double = (Cantidad * PU) - Descuento + DrPS("NoDeducible") = NoDeducible + + Dim PSRow As DataRow = GlobalDTPS(UsuarioActual.CveEmpresa, CvePS:=CvePS).FiltroPrimero("") + If PSRow IsNot Nothing Then + Dim CveTipoPS As Integer = PSRow("CveTipoPS").ToString.ToEntero + If PSRow("CvePSCargo").ToString <> "" Then 'si es un producto de usado. que se registre contablemente como alamcen(como producto) + CveTipoPS = 2 + End If + + DrPS("CveClasificacion") = PSRow("CveClasificacion").ToString + DrPS("Clasificacion") = PSRow("Clasificacion").ToString + DrPS("CvePS") = CvePS + DrPS("PS") = PSRow("PS").ToString + DrPS("CveTipoPS") = CveTipoPS + DrPS("CveSATPS") = PSRow("CveSATPS").ToString.ToEntero + DrPS("SATClaveProductoServicio") = PSRow("SATClaveProductoServicio").ToString + DrPS("CveSATPSActualizado") = 0 + + DrPS("CveUM") = PSRow("CveUnidadMedida").ToString.ToEntero + DrPS("UM") = PSRow("UnidadMedida").ToString + + Dim DrTipoGasto As DataRow = Me.DTTiposGastos.FiltroPrimero("") + + DrPS("CveTipoGasto") = DrTipoGasto("CveTipoGasto") + DrPS("TipoGasto") = DrTipoGasto("TipoGasto") + + If UsuarioActual.Empresa.Funcionalidad(562).ToEntero > 0 Then + DrPS("AplicaCostoIndirecto") = "0" + End If + + DrPS("CveCultivoCuadroDetalle") = -1 + DrPS("TemporadaCuadro") = "" + + Else + Errores.AppendLine($"No se encontrol el producto con CvePS {CvePS}") + Respuesta = False + End If + TmpDT.AcceptChanges() + Return Respuesta + End Function + + Private Sub ValidacionesTotalesXml() + + If Not TmpDT.Columns.Contains("Amortizacion") Then + TmpDT.Columns.Add("Amortizacion", GetType(Decimal)) + End If + + Dim Msg As String = "" + Dim SubtotalTemp As Decimal = TmpDT.SUMD("Total") + Math.Round(TmpDT.SUM("Descuento") + Math.Round(TmpDT.SUM("Amortizacion")), 2) + Dim DescuentosTemp As Decimal = TmpDT.SUMD("Descuento") + Dim Subtotal2Temp As Decimal = TmpDT.SUMD("Total") + Dim IVATemp As Decimal = TmpDT.SUMD("IVA") + Dim IEPSTemp As Decimal = TmpDT.SUMD("IEPSPS") + Dim RetIVATemp As Decimal = TmpDT.SUMD("RetIVA") + Dim RetISRTemp As Decimal = TmpDT.SUMD("RetISR") + Dim TotalTemp As Decimal = Subtotal2Temp - RetIVATemp - RetISRTemp + Math.Round(IVATemp, 6) + IEPSTemp + OtrosImpuestos - OtrosImpuestosRetenciones + + If Math.Abs(Math.Round(DescuentosTemp, 6) - Math.Round(Descuento, 6)) > 0.01 Then + Msg &= String.Format("- Los descuentos del detalle no coinciden con el descuento general
    ") + End If + + If Math.Abs(Math.Round(IVATemp, 6) - Math.Round(TrasladoIVA, 6)) > 0.01 Then + Msg &= String.Format("- Los IVAS del detalle no coinciden con el IVA general
    ") + End If + + If Math.Abs(Math.Round(IEPSTemp, 6) - Math.Round(TrasladoIEPS, 6)) > 0.01 Then + Msg &= String.Format("- Los IEPS del detalle no coinciden con el IEPS general
    ") + End If + + If Math.Abs(Math.Round(RetIVATemp, 6) - Math.Round(RetencionIVA, 6)) > 0.01 Then + Msg &= String.Format("- Los RetIVA del detalle no coinciden con el RetIVA general
    ") + End If + + If Math.Abs(Math.Round(RetISRTemp, 6) - Math.Round(RetencionISR, 6)) > 0.01 Then + Msg &= String.Format("- Las RetISR del detalle no coinciden con el RetIVA general
    ") + End If + + If Math.Abs(Math.Round(TotalTemp, 2) - Math.Round(Total, 2)) > 0.01 Then + Msg &= String.Format("- El total generado por los detalles no coincide con el total general
    ({0}-{1})", Math.Round(TotalTemp, 2), Math.Round(Total, 2)) + End If + + If Msg <> "" Then + Errores.AppendLine($" El comprobante XML presenta las siguientes inconsistencias:{Msg}. ") + Else + + DescuentosTemp = Descuento + IVATemp = TrasladoIVA + TotalTemp = Total + RetIVATemp = RetencionIVA + RetISRTemp = RetencionISR + IEPSTemp = TrasladoIEPS + End If + + Me.SubTotal = SubtotalTemp + Me.Descuento = DescuentosTemp + Me.SubTotal2 = Subtotal2Temp + Me.IVA = IVATemp + Me.Total = TotalTemp + Me.RetIVA = RetIVATemp + Me.RetISR = RetISRTemp + Me.IEPS = IEPSTemp + CompraSaldo = TotalTemp + + AsignaValoresOriginales(SubtotalTemp, Subtotal2Temp, IVATemp, RetIVATemp, RetISRTemp, Total) + + End Sub + + Private Sub AsignaValoresOriginales(SubTotal As Decimal, SubTotal2 As Double, IVA As Decimal, RetIVA As Decimal, RetISR As Decimal, Total As Decimal) + SubTotalOriginal = SubTotal + SubTotal2Original = SubTotal2 + IVAOriginal = IVA + RetIVAOriginal = RetIVA + RetISROriginal = RetISR + TotalOriginal = Total + End Sub + + Private Sub AjustaImporteUltimoConcepto(ImporteAjuste As Decimal, Optional EsCarga As Boolean = False) + + If ImporteAjuste = 0 Then Exit Sub + + Dim Amortizacion As Decimal = 0 + + If TmpDT.Rows.Count > 0 Then ' si hay movimientos y si esta afectando al total, que se haga el ajuste + Dim Indice As Integer = If(TmpDT.Rows(TmpDT.Rows.Count - 1)("CvePS").ToString = UsuarioActual.Empresa.Funcionalidad(112).ToString, TmpDT.Rows.Count - 2, TmpDT.Rows.Count - 1) + Dim tPU As Decimal + + If TmpDT.Rows(Indice)("Cantidad").ToString.ToDecimal > 0 Then + tPU = ImporteAjuste / TmpDT.Rows(Indice)("Cantidad").ToString.ToDecimal + Else + tPU = 0 + End If + + If TmpDT.Rows(Indice)("PU").ToString.ToDecimal + tPU < 0 Then 'si es negativo, que tome el dato anterior + Indice = Indice - 1 + If TmpDT.Rows(Indice)("Cantidad").ToString.ToDecimal > 0 Then + tPU = ImporteAjuste / TmpDT.Rows(Indice)("Cantidad").ToString.ToDecimal + Else + tPU = 0 + End If + End If + + TmpDT.Rows(Indice)("PU") = TmpDT.Rows(Indice)("PU").ToString.ToDecimal + tPU + TmpDT.Rows(Indice)("Total") = TmpDT.Rows(Indice)("Total").ToString.ToDecimal + ImporteAjuste + TmpDT.Rows(Indice)("IEPSPS") = (TmpDT.Rows(Indice)("Total").ToString.ToDecimal() * TmpDT.Rows(Indice)("IEPSPSPorcentaje").ToString.ToDecimal()).RoundAD(2) + TmpDT.Rows(Indice)("IVA") = (TmpDT.Rows(Indice)("PU").ToString.ToDecimal * TmpDT.Rows(Indice)("Cantidad").ToString.ToDecimal - TmpDT.Rows(Indice)("Descuento").ToString.ToDecimal) * TmpDT.Rows(Indice)("IVAPorcentaje").ToString.ToDecimal + TmpDT.AcceptChanges() + End If + + SubTotal = TmpDT.SUMD("Total") + If Not EsCarga Then + Descuento = TmpDT.SUMD("Descuento") + End If + + SubTotalConceptos = SubTotal + + End Sub + + Public Function ValidateUUID(ByVal uuid As String) As Boolean + Dim pattern As String = "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$" + Dim regex As New Regex(pattern) + Return regex.IsMatch(uuid) + End Function + Private Function GeneraStringDoctosRelacionados() As String + + Dim DoctosRelacionados As String = "-1" + Dim listaUUIDSRelacionados As New List(Of String) + + If DocumentosRelacionadosUUIDSList.Count > 0 Then + For Each s As String In DocumentosRelacionadosUUIDSList + If s.Trim.Length > 0 Then + listaUUIDSRelacionados.Add(s.Trim) + End If + Next + End If + + If listaUUIDSRelacionados.Count > 0 Then + DoctosRelacionados = String.Join(",", listaUUIDSRelacionados.ToArray()) + End If + + Return DoctosRelacionados + End Function + Private Function ValorXML(n As XmlNode, Campo As String, Optional Retorno As String = "") As String + Dim o As XmlNode = n.Attributes.Cast(Of XmlAttribute)().SingleOrDefault(Function(a) String.Compare(a.Name, Campo, True) = 0) + If o Is Nothing Then + Return Retorno + Else + Return o.Value + End If + End Function + + Public Function AddCompra() As Boolean + + If Not AjustesValidacion() Then Return False + + Dim respuesta As Boolean = True + Dim ObjCompras As New ClsCompras + Dim ObjConta As New ClsContabilidad(ObjCompras.IniciaTransacSQL()) + + If Not AddPrepolizaCabecera(ObjConta) Then + respuesta = False + End If + + If respuesta AndAlso ObjCompras.AddCompra(If(Me.TipoComprobante = "I", "Fac", "NC"), Me.Descripcion, Me.Serie, Me.Folio, Me.FolioSecundario, Me.CveProveedor, Me.SubTotal, Me.Descuento, + Me.Amortizacion, Me.IVA, Me.RetIVA, Me.RetISR, Me.IEPS, Me.OtrosImpuestos, + Me.Redondeo, Me.Total, Me.Fecha, Me.CveMoneda, Me.TipoCambio, If(Me.FechaPago = Nothing, Me.Fecha, Me.FechaPago), Me.AplicaNotaCredito, Me.Observaciones, Me.CveEstatusFactura, + Me.CvePrePoliza, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, Me.IdPoliza, CveCajaChica:=Me.CveCajaChica, CvePersonal:=Me.CvePersonal, NumeroReembolso:=Me.NumeroReembolso, CveProveedorSucursal:=Me.CveProveedorSucursal, + AplicoPromocion:=Me.AplicoPromocion, PorcentajeIVA:=Me.PorcentajeIVA, CveMetodoPago:=Me.CveMetodoPago, CveRetIVAConcepto:=Me.CveRetIVAConcepto, + CveConceptoContableAlmacen:=Me.CveConceptoContableAlmacen, + CveRetISRConcepto:=Me.CveRetISRConcepto, NoDeducible:=Me.NoDeducible, CveTipoCompra:=Me.CveTipoCompra, TotalOriginal:=Me.TotalOriginal, CveTipoConcepto:=Me.CveTipoConcepto, + EsImportacion:=Me.EsImportacion, CveFactura:=Me.CveFactura, CveSubProyecto:=Me.CveSubProyectoPrincipal, DoctosRelacionados:=Me.DocumentosRelacionadosUUIDSString, CveFolioGarantia:=Me.CveFolioGarantia) Then + Me.CveCompra = ObjCompras.CveCompra + Else + respuesta = False + End If + + If respuesta AndAlso Me.CveCompra > 0 Then + + For Each Row As DataRow In Me.TmpDT.Rows + + Dim TipoRecepcion As Integer = -1 + Dim Referencia As String = "" + Dim EsNoDeducible As Boolean = False + Dim CveAF As Integer = If(Row("CveActivoFijo").ToString.ToEntero > 0 AndAlso Row("TipoAF").ToString.ToEntero = 1, Row("CveActivoFijo").ToString.ToEntero, -1) + Dim CveAFC As Integer = If(Row("CveActivoFijo").ToString.ToEntero > 0 AndAlso Row("TipoAF").ToString.ToEntero = 2, Row("CveActivoFijo").ToString.ToEntero, -1) + + If Not ObjCompras.AddCompraDetalle(Me.CveCompra, Row("CveUM").ToString.ToEntero, Row("CvePS").ToString.ToEntero, Row("CveSubProyecto").ToString.ToEntero, -1, CveAF, + Row("Cantidad").ToString.ToDecimal, Row("PU").ToString.ToDecimal, Row("IVA").ToString.ToDecimal, Row("Total").ToString.ToDecimal, Row("Descuento").ToString.ToDecimal, + Row("Obs").ToString, Row("CveOrdenCompraDetalle").ToString.ToEntero, TipoRecepcion, Row("CveContrato").ToString.ToEntero, Row("CvePresupuestoEgreso").ToString.ToEntero, + AplicaCostoIndirecto:=Row("AplicaCostoIndirecto").ToString.ToEntero, EstatusAlmacen:=Row("EntregaDirecta").ToString.ToEntero, CvePersonal:=CvePersonal, + CveTipoGasto:=Row("CveTipoGasto").ToString.ToEntero, AF_Medida:=Row("AFMedida").ToString.ToEntero, AF_TipoMantenimiento:=Row("AFTipoMantenimiento").ToString.ToEntero, Referencia:=Referencia, OtrosGastos:=Row("OtrosGastos").ToString.ToDecimal, + RetIVA:=Row("RetIVA").ToString.ToDecimal, RetISR:=Row("RetISR").ToString.ToDecimal, IEPSPS:=Row("IEPSPS").ToString.ToDecimal.RoundSQL, IEPSPSIVA:=Row("IEPSPSIVA").ToString.ToDecimal, + IVAPorcentaje:=Row("IVAPorcentaje").ToString.ToDecimal, RetIVAPorcentaje:=Row("RetIVAPorcentaje").ToString.ToDecimal, RetISRPorcentaje:=Row("RetISRPorcentaje").ToString.ToDecimal, + IEPSPSPorcentaje:=Row("IEPSPSPorcentaje").ToString.ToDecimal, IEPSPSIVAPorcentaje:=Row("IEPSPSIVAPorcentaje").ToString.ToDecimal, NoDeducible:=If((Row("NoDeducible").ToString().ToUpper().Contiene("TRUE", "1")) AndAlso EsNoDeducible, True, False), + CveContratoDetalle:=Row("CveContratoDetalle").ToString.ToEntero, CveCultivoCuadroDetalle:=Row("CveCultivoCuadroDetalle").ToString.ToEntero, CveActivoFijoCompra:=CveAFC) Then + + respuesta = False + Exit For + End If + Next + End If + + If respuesta Then + If Not AddPrePolizaDetalles(ObjConta) Then respuesta = False + End If + + If respuesta AndAlso ObjConta.ValidacionesPrePoliza(CvePrePoliza, UsuarioActual, 4) Then + If ObjConta.ValorPolizaDescuadre > 0 Then + Errores.AppendLine($"eFacturas/Compras-Guardar | Error{ObjConta.MensajePolizaDescuadre} Diferencia{ObjConta.ValorDiferencia} | CvePrePoliza:{CvePrePoliza}.") + GuardaLogAD($"eFacturas/Compras-Guardar | Error{ObjConta.MensajePolizaDescuadre} Diferencia{ObjConta.ValorDiferencia} | CvePrePoliza:{CvePrePoliza}", "LogPrePolizas") + respuesta = False + End If + End If + + If respuesta Then + If Not ObjCompras.UpdateCompraFactura(Me.CveCompra, Me.CveFactura, Me.Serie, Me.Folio) Then respuesta = False + End If + + If respuesta Then + ObjCompras.Commit() + Else + ObjCompras.RollBack() + End If + + ObjCompras.Dispose() + ObjConta.Dispose() + + Return respuesta + End Function + + + Public Function AddCompraRNC(ByRef transacccion As SqlTransaction) As Boolean + + If Not AjustesValidacion() Then Return False + + Dim respuesta As Boolean = True + Dim ObjCompras As New ClsCompras + Dim ObjConta As New ClsContabilidad(transacccion) + + If Not AddPrepolizaCabecera(ObjConta) Then + respuesta = False + End If + + If respuesta AndAlso ObjCompras.AddCompra("RNC", Me.Descripcion, Me.Serie, Me.Folio, Me.FolioSecundario, Me.CveProveedor, Me.SubTotal, Me.Descuento, + Me.Amortizacion, Me.IVA, Me.RetIVA, Me.RetISR, Me.IEPS, Me.OtrosImpuestos, + Me.Redondeo, Me.Total, Me.Fecha, Me.CveMoneda, Me.TipoCambio, If(Me.FechaPago = Nothing, Me.Fecha, Me.FechaPago), Me.AplicaNotaCredito, Me.Observaciones, Me.CveEstatusFactura, + Me.CvePrePoliza, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, Me.IdPoliza, CveCajaChica:=Me.CveCajaChica, CvePersonal:=Me.CvePersonal, NumeroReembolso:=Me.NumeroReembolso, CveProveedorSucursal:=Me.CveProveedorSucursal, + AplicoPromocion:=Me.AplicoPromocion, PorcentajeIVA:=Me.PorcentajeIVA, CveMetodoPago:=Me.CveMetodoPago, CveRetIVAConcepto:=Me.CveRetIVAConcepto, + CveConceptoContableAlmacen:=Me.CveConceptoContableAlmacen, + CveRetISRConcepto:=Me.CveRetISRConcepto, NoDeducible:=Me.NoDeducible, CveTipoCompra:=Me.CveTipoCompra, TotalOriginal:=Me.TotalOriginal, CveTipoConcepto:=Me.CveTipoConcepto, + EsImportacion:=Me.EsImportacion, CveFactura:=Me.CveFactura, CveSubProyecto:=Me.CveSubProyectoPrincipal, DoctosRelacionados:=Me.DocumentosRelacionadosUUIDSString, CveFolioGarantia:=Me.CveFolioGarantia) Then + Me.CveCompra = ObjCompras.CveCompra + Else + respuesta = False + End If + + If respuesta AndAlso Me.CveCompra > 0 Then + + For Each Row As DataRow In Me.TmpDT.Rows + + Dim TipoRecepcion As Integer = -1 + Dim Referencia As String = "" + Dim EsNoDeducible As Boolean = False + Dim CveAF As Integer = If(Row("CveActivoFijo").ToString.ToEntero > 0 AndAlso Row("TipoAF").ToString.ToEntero = 1, Row("CveActivoFijo").ToString.ToEntero, -1) + Dim CveAFC As Integer = If(Row("CveActivoFijo").ToString.ToEntero > 0 AndAlso Row("TipoAF").ToString.ToEntero = 2, Row("CveActivoFijo").ToString.ToEntero, -1) + + If Not ObjCompras.AddCompraDetalle(Me.CveCompra, Row("CveUM").ToString.ToEntero, Row("CvePS").ToString.ToEntero, Row("CveSubProyecto").ToString.ToEntero, -1, CveAF, + Row("Cantidad").ToString.ToDecimal, Row("PU").ToString.ToDecimal, Row("IVA").ToString.ToDecimal, Row("Total").ToString.ToDecimal, Row("Descuento").ToString.ToDecimal, + Row("Obs").ToString, Row("CveOrdenCompraDetalle").ToString.ToEntero, TipoRecepcion, Row("CveContrato").ToString.ToEntero, Row("CvePresupuestoEgreso").ToString.ToEntero, + AplicaCostoIndirecto:=Row("AplicaCostoIndirecto").ToString.ToEntero, EstatusAlmacen:=Row("EntregaDirecta").ToString.ToEntero, CvePersonal:=CvePersonal, + CveTipoGasto:=Row("CveTipoGasto").ToString.ToEntero, AF_Medida:=Row("AFMedida").ToString.ToEntero, AF_TipoMantenimiento:=Row("AFTipoMantenimiento").ToString.ToEntero, Referencia:=Referencia, OtrosGastos:=Row("OtrosGastos").ToString.ToDecimal, + RetIVA:=Row("RetIVA").ToString.ToDecimal, RetISR:=Row("RetISR").ToString.ToDecimal, IEPSPS:=Row("IEPSPS").ToString.ToDecimal.RoundSQL, IEPSPSIVA:=Row("IEPSPSIVA").ToString.ToDecimal, + IVAPorcentaje:=Row("IVAPorcentaje").ToString.ToDecimal, RetIVAPorcentaje:=Row("RetIVAPorcentaje").ToString.ToDecimal, RetISRPorcentaje:=Row("RetISRPorcentaje").ToString.ToDecimal, + IEPSPSPorcentaje:=Row("IEPSPSPorcentaje").ToString.ToDecimal, IEPSPSIVAPorcentaje:=Row("IEPSPSIVAPorcentaje").ToString.ToDecimal, NoDeducible:=If((Row("NoDeducible").ToString().ToUpper().Contiene("TRUE", "1")) AndAlso EsNoDeducible, True, False), + CveContratoDetalle:=Row("CveContratoDetalle").ToString.ToEntero, CveCultivoCuadroDetalle:=Row("CveCultivoCuadroDetalle").ToString.ToEntero, CveActivoFijoCompra:=CveAFC) Then + + respuesta = False + Exit For + End If + Next + End If + + If respuesta Then + If Not AddPrePolizaDetalles(ObjConta, True) Then respuesta = False + End If + + If respuesta AndAlso ObjConta.ValidacionesPrePoliza(CvePrePoliza, UsuarioActual, 4) Then + If ObjConta.ValorPolizaDescuadre > 0 Then + Errores.AppendLine($"Compras/RNC | Error{ObjConta.MensajePolizaDescuadre} Diferencia{ObjConta.ValorDiferencia} | CvePrePoliza:{CvePrePoliza}.") + GuardaLogAD($"Compras/RNC | Error{ObjConta.MensajePolizaDescuadre} Diferencia{ObjConta.ValorDiferencia} | CvePrePoliza:{CvePrePoliza}", "LogPrePolizas") + respuesta = False + End If + End If + + 'If respuesta Then + ' If Not ObjCompras.UpdateCompraFactura(Me.CveCompra, Me.CveFactura, Me.Serie, Me.Folio) Then respuesta = False + 'End If + + 'If respuesta Then + ' ObjCompras.Commit() + 'Else + ' ObjCompras.RollBack() + 'End If + + 'ObjCompras.Dispose() + 'ObjConta.Dispose() + + Return respuesta + End Function + + + Private Function AddPrepolizaCabecera(ByRef ObjConta As ClsContabilidad, Optional ES_RNC As Boolean = False) As Boolean + + Dim respuesta As Boolean = False + + Dim ConceptoPoliza As String = String.Format("{0} - {1} - {2}", NombreProveedor, SerieFolio, "") + Dim Modulo As String = "eFacturas/Registrar" + + If ES_RNC Then + ConceptoPoliza = String.Format("{0} - {1} - {2}", NombreProveedor, SerieFolio, "") + Modulo = "Compras/RNC" + End If + + Me.CvePrePoliza = ObjConta.AddPrePolizas(Modulo, 1, Me.Total, Me.Total, Me.CveMoneda, Me.Fecha, ConceptoPoliza, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, 0, "", CveTipoPoliza:=Me.CveTipoPoliza) + respuesta = If(Me.CvePrePoliza > 0, True, False) + + Return respuesta + End Function + + Private Function AddPrePolizaDetalles(ByRef ObjConta As ClsContabilidad, Optional ES_RNC As Boolean = False) As Boolean + Dim respuesta As Boolean = True + Dim Concepto As String = $"{Me.NombreProveedor} {Me.SerieFolio}" + Dim Referencia As String = Me.SerieFolio + + If ES_RNC Then + + If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, Me.Total, Me.Total, 370, Referencia, Concepto, CveCompra:=CveCompra, CveProveedor:=Me.CveProveedor, ImporteME:=If(TipoCambio = 1, 0, Me.Total), TipoCambio:=TipoCambio, + CveClasificacion:=-1, CveSubProyecto:=Me.CveSubProyecto, Contabilizable:=False) Then + respuesta = False + + End If + + If respuesta Then + If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, Me.Total, Me.Total, 371, Referencia, Concepto, CveCompra:=CveCompra, CveProveedor:=Me.CveProveedor, ImporteME:=If(TipoCambio = 1, 0, Me.Total), TipoCambio:=TipoCambio, + CveClasificacion:=-1, CveSubProyecto:=Me.CveSubProyecto, Contabilizable:=False) Then + respuesta = False + + End If + End If + + Else + + Dim importeMovimiento As Decimal + Dim importeMN As Decimal + + + '6 + For Each RowDetalle As DataRow In TmpDT.FiltraParametros("ISNULL(TipoAF,0) <> 2", "", {"CveClasificacion", "CveSubProyecto"}).Rows + + importeMovimiento = TmpDT.SUMD("Total", $" CveClasificacion = {RowDetalle("CveClasificacion").ToString} AND CveSubProyecto = {RowDetalle("CveSubProyecto").ToString}") + importeMN = (importeMovimiento * Me.TipoCambio).RoundSQL + + If importeMN <> 0 Then + If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, importeMovimiento, importeMN, 6, Referencia, Concepto, CveCompra:=CveCompra, CveProveedor:=Me.CveProveedor, CveIE:=Me.CveIE, CvePersonal:=CvePersonal, CveCreditoDetalle:=Me.CveCreditoDetalle, ImporteME:=If(TipoCambio = 1, 0, importeMovimiento), TipoCambio:=TipoCambio, + CveClasificacion:=RowDetalle("CveClasificacion").ToString().ToEntero(), CveSubProyecto:=RowDetalle("CveSubProyecto").ToString().ToEntero(), Contabilizable:=True) Then + respuesta = False + Exit For + End If + End If + Next + '14 + If respuesta AndAlso Me.IVA > 0 Then + importeMovimiento = Me.IVA + importeMN = (importeMovimiento * Me.TipoCambio).RoundSQL + If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, importeMovimiento, importeMN, 14, Referencia, Concepto, CveCompra:=CveCompra, CveSubProyecto:=Me.CveSubProyectoPrincipal, CveProveedor:=Me.CveProveedor, CveIE:=Me.CveIE, CvePersonal:=CvePersonal, CveCreditoDetalle:=CveCreditoDetalle, ImporteME:=If(Me.TipoCambio = 1, 0, importeMovimiento), TipoCambio:=Me.TipoCambio, PorcentajeImpuesto:=Me.PorcentajeIVA, Contabilizable:=True) Then + respuesta = False + End If + End If + '25 + If respuesta AndAlso Me.IEPS > 0 Then + importeMovimiento = Me.IEPS + importeMN = (importeMovimiento * Me.TipoCambio).RoundSQL + If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, importeMovimiento, importeMN, 25, Referencia, Concepto, CveCompra:=CveCompra, CveSubProyecto:=Me.CveSubProyectoPrincipal, CveProveedor:=Me.CveProveedor, CveIE:=Me.CveIE, CvePersonal:=CvePersonal, CveCreditoDetalle:=CveCreditoDetalle, ImporteME:=If(Me.TipoCambio = 1, 0, importeMovimiento), TipoCambio:=Me.TipoCambio, PorcentajeImpuesto:=0, Contabilizable:=True) Then + respuesta = False + End If + End If + ' + If respuesta AndAlso Me.RetIVA > 0 Then + importeMovimiento = Me.RetIVA + importeMN = (importeMovimiento * Me.TipoCambio).RoundSQL + Dim ret As ConceptosRetenciones = ConceptoPrePolizaRetIVA + If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, importeMovimiento, importeMN, ret.CveConceptoxAcreditar, Referencia, Concepto, CveCompra:=CveCompra, CveSubProyecto:=Me.CveSubProyectoPrincipal, CveProveedor:=Me.CveProveedor, CveIE:=Me.CveIE, CvePersonal:=CvePersonal, CveCreditoDetalle:=CveCreditoDetalle, ImporteME:=If(Me.TipoCambio = 1, 0, importeMovimiento), TipoCambio:=Me.TipoCambio, PorcentajeImpuesto:=0, Contabilizable:=True) Then + respuesta = False + End If + End If + ' + If respuesta AndAlso Me.RetISR > 0 Then + importeMovimiento = Me.RetISR + importeMN = (importeMovimiento * Me.TipoCambio).RoundSQL + Dim ret As ConceptosRetenciones = ConceptoPrePolizaRetISR + If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, importeMovimiento, importeMN, ret.CveConceptoxAcreditar, Referencia, Concepto, CveCompra:=CveCompra, CveSubProyecto:=Me.CveSubProyectoPrincipal, CveProveedor:=Me.CveProveedor, CveIE:=Me.CveIE, CvePersonal:=CvePersonal, CveCreditoDetalle:=CveCreditoDetalle, ImporteME:=If(Me.TipoCambio = 1, 0, importeMovimiento), TipoCambio:=Me.TipoCambio, PorcentajeImpuesto:=0, Contabilizable:=True) Then + respuesta = False + End If + End If + '5 + If respuesta Then + importeMovimiento = Me.Total + importeMN = (importeMovimiento * Me.TipoCambio).RoundSQL + Dim ConPreP As ConceptosTipoSaldo = ObtenerCveConceptoPrePoliza(1, Me.CveMoneda, False, Me.CveTipoConceptoProveedor) + Dim ImporteME As Decimal = importeMovimiento + Dim UsaComplementaria As Boolean = True + If Me.CveMoneda > 1 Then ImporteME = importeMovimiento + + If UsuarioActual.CveEmpresa.Contiene(13, 83) Then 'caso excepcional de complementarias + UsaComplementaria = False + importeMN = importeMovimiento * Me.TipoCambio + Else + importeMN = importeMovimiento + End If + If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, importeMovimiento, importeMN, ConPreP.CveConcepto, Referencia, Concepto, CveCompra:=CveCompra, CveSubProyecto:=Me.CveSubProyectoPrincipal, CveProveedor:=Me.CveProveedor, CveIE:=Me.CveIE, CvePersonal:=CvePersonal, CveCreditoDetalle:=CveCreditoDetalle, ImporteME:=If(Me.TipoCambio = 1, 0, importeMovimiento), TipoCambio:=Me.TipoCambio, PorcentajeImpuesto:=0, Contabilizable:=True) Then + respuesta = False + End If + If respuesta AndAlso Me.CveMoneda > 1 AndAlso UsaComplementaria Then + If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, importeMovimiento, (importeMovimiento * Me.TipoCambio - importeMovimiento).RoundSQL, ConPreP.CveConceptoComplementario, Referencia, Concepto, CveCompra:=Me.CveCompra, CveProveedor:=Me.CveProveedor, CveIE:=Me.CveIE, CvePersonal:=Me.CvePersonal, CveCompraAmortizacion:=Me.CveCompraAmortizacion, TipoCambio:=Me.TipoCambio, TipoCambioPago:=1, ImporteME:=ImporteME, CveSubProyecto:=Me.CveSubProyecto) Then + respuesta = False + End If + End If + End If + End If + + Return respuesta + + End Function + +End Class \ No newline at end of file diff --git a/Compras/eFacturas.aspx.vb b/Compras/eFacturas.aspx.vb index 9563c4d45..8497a219a 100644 --- a/Compras/eFacturas.aspx.vb +++ b/Compras/eFacturas.aspx.vb @@ -5205,13 +5205,13 @@ Partial Class Compras_eFacturas Exit For End If - Dim CompraActual As New Compra2(CFDIXmlPath, Compra2.EnumCargaCompra.DesdeArchivo, GlobalDTTiposGastos(UsuarioActual.CveEmpresa), UsuarioActual) + Dim CompraActual As New ClsCompraManager(CFDIXmlPath, ClsCompraManager.EnumCargaCompra.DesdeArchivo, GlobalDTTiposGastos(UsuarioActual.CveEmpresa), UsuarioActual) CompraActual.CveFactura = GvRow.DataKey("CveFactura").ToEntero CompraActual.CveProveedor = GvRow.DataKey("CveProveedor").ToEntero CompraActual.CveTipoProveedor = GvRow.DataKey("CveTipoProveedor").ToEntero CompraActual.CveTipoConceptoProveedor = GvRow.DataKey("CveTipoProveedor").ToEntero - CompraActual.TipoCompra = Compra2.EnumTipoCompra.Sin_definir + CompraActual.TipoCompra = ClsCompraManager.EnumTipoCompra.Sin_definir CompraActual.IEPSGasto = True CompraActual.Descripcion = TxtDescripcionCompra.Text.Trim CompraActual.NombreProveedor = GvRow.DataKey("NombreProveedor") @@ -5250,7 +5250,9 @@ Partial Class Compras_eFacturas End Class -Public Class Compra2 + + +Public Class ClsCompraManager Enum EnumCargaCompra DesdeXML @@ -6941,7 +6943,7 @@ Public Class Compra2 End If If respuesta Then - If Not AddPrepolizaDetalles(ObjConta) Then respuesta = False + If Not AddPrePolizaDetalles(ObjConta) Then respuesta = False End If If respuesta AndAlso ObjConta.ValidacionesPrePoliza(CvePrePoliza, UsuarioActual, 4) Then @@ -7064,7 +7066,6 @@ End Class - Public Class GeneralesAPIeFacturas Inherits ADSNetLibraryzdE.HelpersE.ConexionesE.SIGAPIE.BaseSIGAPIeFacturas From baff2886c0808739a81e8c9a4846579dd44739fa Mon Sep 17 00:00:00 2001 From: rakcsle Date: Sat, 23 Mar 2024 14:02:35 -0700 Subject: [PATCH 111/197] Re Correcion PU Pronto pago --- Compras/Compras.aspx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Compras/Compras.aspx b/Compras/Compras.aspx index e28d950df..6de031337 100644 --- a/Compras/Compras.aspx +++ b/Compras/Compras.aspx @@ -1202,7 +1202,7 @@ - From 7af55a8f05e0e895439e744ba8933b2ffa0e0ba7 Mon Sep 17 00:00:00 2001 From: rrene Date: Sat, 23 Mar 2024 14:10:56 -0700 Subject: [PATCH 112/197] =?UTF-8?q?--=20visualizar=20c=C3=B3digo=20+=20PS?= =?UTF-8?q?=20en=20FNC109?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Compras/Compras.aspx.vb | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Compras/Compras.aspx.vb b/Compras/Compras.aspx.vb index 407979093..a99e74ffd 100644 --- a/Compras/Compras.aspx.vb +++ b/Compras/Compras.aspx.vb @@ -9736,6 +9736,8 @@ Partial Class Compras_Compras e.Row.FCLabel("LtlUnidadMedida").Attributes.Add("title", "Unidad de medida SIN registrar") End If + If UsuarioActual.Empresa.Funcionalidad(109) = "1" Then e.Row.FCHyperLink("HplPS").Text = e.Row.DBCampo("PSCodigo") + 'EQUIVALENCIA If e.Row.DBCampo("CveUM").ToString.ToEntero > 0 And e.Row.DBCampo("CveTipoPS").ToString.ToEntero = 2 Then From 8070b0e6fe4d050e2a2eaba05489d4c9702729d9 Mon Sep 17 00:00:00 2001 From: rrene Date: Sat, 23 Mar 2024 15:54:37 -0700 Subject: [PATCH 113/197] - mejora en unitario --- App_Code/ClsProductosServicios.vb | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/App_Code/ClsProductosServicios.vb b/App_Code/ClsProductosServicios.vb index 05d871ea6..c9bcb106e 100644 --- a/App_Code/ClsProductosServicios.vb +++ b/App_Code/ClsProductosServicios.vb @@ -906,8 +906,6 @@ Public Class ClsProductosServicios DataAdapter("PA_Inv_UltimoPrecioCompraGet") With SqlAdapter.SelectCommand.Parameters - - .Add("@CveEmpresa", SqlDbType.Int).Value = CveEmpresa .Add("@CvePS", SqlDbType.Int).Value = CvePS .Add("@PU", SqlDbType.Money).Direction = ParameterDirection.Output @@ -915,7 +913,7 @@ Public Class ClsProductosServicios Try SqlAdapter.Fill(Data) - Retorno = CDbl(SqlAdapter.SelectCommand.Parameters("@PU").Value) + Retorno = SqlAdapter.SelectCommand.Parameters("@PU").Value.ToString.ToDecimal Catch Ex1 As SqlException Me.OnError("Ocurrió un error al obtener el precio unitario.", Ex1, SqlAdapter.SelectCommand.Parameters.ParametrosInfo()) From a31674e67ce4f019527d2e93e4914a0c0f8194bd Mon Sep 17 00:00:00 2001 From: rrene Date: Sat, 23 Mar 2024 15:54:52 -0700 Subject: [PATCH 114/197] =?UTF-8?q?--=20correcci=C3=B3n=20msg=20de=20error?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- App_Code/ClsVentas.vb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/App_Code/ClsVentas.vb b/App_Code/ClsVentas.vb index 5260ef910..9f00eb8e9 100644 --- a/App_Code/ClsVentas.vb +++ b/App_Code/ClsVentas.vb @@ -6066,7 +6066,7 @@ Public Class ClsVentas SqlAdapter.Fill(Data) Retorno = True Catch ex As Exception - OnError("Ocurrió un error al eliminar los datos de facturación.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo()) + OnError("Ocurrió un error al actualizar el corte en la venta.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo()) End Try Return Retorno From 34f9cea097b9b24ccbabd39e8e478eb33bca61f6 Mon Sep 17 00:00:00 2001 From: AbrahamCastilloV Date: Sat, 23 Mar 2024 16:00:24 -0700 Subject: [PATCH 115/197] -- --- App_Code/ClsTransportes.vb | 11 +- Transportes/Boletos.aspx | 81 ++++-- Transportes/Boletos.aspx.vb | 91 +++--- Transportes/RepContratoDetalle.aspx | 76 +++-- Transportes/RepContratoDetalle.aspx.vb | 55 +++- Transportes/RepContratos.aspx | 383 +++++++++++++------------ Transportes/RepContratos.aspx.vb | 28 +- 7 files changed, 433 insertions(+), 292 deletions(-) diff --git a/App_Code/ClsTransportes.vb b/App_Code/ClsTransportes.vb index d1b7b42dc..07e43b962 100644 --- a/App_Code/ClsTransportes.vb +++ b/App_Code/ClsTransportes.vb @@ -135,7 +135,7 @@ Public Class ClsTransportes #End Region #Region "Boletos" - Public Function AddViajesPasajeros(CveViaje As Integer, CveDestinoOrigen As Integer, CveDestinoFinal As Integer, Importe As Decimal, Asiento As Integer, Nombre As String, Visa As String, Celular As String, Sexo As Boolean, Observacion As String, CveUsuario As Integer, CveVendedor As Integer) As Integer + Public Function AddViajesPasajeros(CveViaje As Integer, CveDestinoOrigen As Integer, CveDestinoFinal As Integer, CveVendedor As Integer, Importe As Decimal, Asiento As Integer, Nombre As String, INE As String, FechaNacimiento As Date, Sexo As Boolean, Visa As String, VisaVigencia As Date, Celular As String, Observacion As String, CveUsuario As Integer) As Integer Dim Retorno As Integer = -1 DataAdapter("PA_Trans_ViajesPasajerosAdd") @@ -145,15 +145,18 @@ Public Class ClsTransportes .Add("@CveViaje", SqlDbType.Int).Value = CveViaje .Add("@CveDestinoOrigen", SqlDbType.Int).Value = CveDestinoOrigen .Add("@CveDestinoFinal", SqlDbType.Int).Value = CveDestinoFinal + .Add("@CveVendedor", SqlDbType.Int).Value = CveVendedor .Add("@Importe", SqlDbType.Money).Value = Importe .Add("@Asiento", SqlDbType.Int).Value = Asiento .Add("@Nombre", SqlDbType.VarChar).Value = Nombre - .Add("@Visa", SqlDbType.VarChar).Value = Visa - .Add("@Celular", SqlDbType.VarChar).Value = Celular + .Add("@INE", SqlDbType.VarChar).Value = INE + .Add("@FechaNacimiento", SqlDbType.Date).Value = FechaNacimiento .Add("@Sexo", SqlDbType.Bit).Value = Sexo + .Add("@Visa", SqlDbType.VarChar).Value = Visa + .Add("@VisaVigencia", SqlDbType.Date).Value = VisaVigencia + .Add("@Celular", SqlDbType.VarChar).Value = Celular .Add("@Observacion", SqlDbType.VarChar).Value = Observacion .Add("@CveUsuario", SqlDbType.Int).Value = CveUsuario - .Add("@CveVendedor", SqlDbType.Int).Value = CveVendedor End With diff --git a/Transportes/Boletos.aspx b/Transportes/Boletos.aspx index 81bc24dfe..52d4f6030 100644 --- a/Transportes/Boletos.aspx +++ b/Transportes/Boletos.aspx @@ -114,9 +114,9 @@
    -
    +
    - -
    +
    - - + + + +
    +
    + +
    +
    + + +
    -
    +
    @@ -146,23 +159,50 @@
    -
    +
    - - + - + +
    +
    + +
    +
    + + + +
    +
    +
    + +
    +
    +
    + + + +
    +
    +
    +
    + + +
    -
    - - - -
    @@ -237,7 +277,7 @@
    <%-- Botón para Agregar Pasajero(Oculto) --%>
    -
    +

    information: Los boletos están siendo apartados hasta finalizar su compra

    + GridLines="None" DataKeyNames="Nombre,Visa,Asiento, INE"> - + + diff --git a/Transportes/Boletos.aspx.vb b/Transportes/Boletos.aspx.vb index d46b13d25..3e4f63084 100644 --- a/Transportes/Boletos.aspx.vb +++ b/Transportes/Boletos.aspx.vb @@ -59,6 +59,7 @@ Partial Class Boletos #End Region +#Region "Carga Página" Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load If Not IsPostBack Then If Request.QueryString("CveViaje") Is Nothing And UsuarioActual.CveVendedor <> Nothing And UsuarioActual.CveVendedor <> -1 Then @@ -88,7 +89,10 @@ Partial Class Boletos DtPasajeros.Columns.Add("CveViajePasajero", GetType(Integer)) DtPasajeros.Columns.Add("Numero", GetType(Integer)) DtPasajeros.Columns.Add("Nombre", GetType(String)) + DtPasajeros.Columns.Add("INE", GetType(String)) DtPasajeros.Columns.Add("Visa", GetType(String)) + DtPasajeros.Columns.Add("VisaVigencia", GetType(Date)) + DtPasajeros.Columns.Add("FechaNacimiento", GetType(Date)) DtPasajeros.Columns.Add("Sexo", GetType(String)) DtPasajeros.Columns.Add("CveSexo", GetType(Integer)) DtPasajeros.Columns.Add("Celular", GetType(String)) @@ -140,29 +144,15 @@ Partial Class Boletos If ObjDestinos.GetDestinosTarifas(CveSubProyecto, -1, -1) Then If ObjDestinos.DtResultados.Rows.Count > 0 Then DtDestinos = ObjDestinos.DtResultados - DdlPartida.DataSource = DtDestinos.FiltraParametros("", DistinctColumns:={"CveDestinoOrigen", "Partida"}) - DdlPartida.DataBind() + DdlPartida.DataSource = DtDestinos.FiltraParametros("", DistinctColumns:={"CveDestinoOrigen", "Partida"}) : DataBind() DdlPartida.Items.Insert(0, New ListItem("Seleccione Partida", "-1")) - - 'DdlDestino.DataSource = DtDestinos - 'DdlDestino.DataBind() - 'DdlDestino.Items.Insert(0, New ListItem("Seleccione Destino", "-1")) End If End If - 'If ObjDestinos.GetDestinos(CveSubProyecto:=CveSubProyecto) Then - ' If ObjDestinos.DtResultados.Rows.Count > 0 Then - ' DdlPartida.DataSource = ObjDestinos.DtResultados - ' DdlPartida.DataBind() - ' DdlPartida.Items.Insert(0, New ListItem("Seleccione Partida", "-1")) - - ' DdlDestino.DataSource = ObjDestinos.DtResultados - ' DdlDestino.DataBind() - ' DdlDestino.Items.Insert(0, New ListItem("Seleccione Destino", "-1")) - ' End If - 'End If ObjDestinos.Dispose() End Sub +#End Region + Protected Sub CotizarTarifa() If DdlDestino.SelectedValue <> "-1" And DdlPartida.SelectedValue <> "-1" Then Dim ImporteR As Decimal = 0 @@ -170,7 +160,18 @@ Partial Class Boletos Dim CveSubProyecto As Integer = Contrato.Rows(0)("CveSubProyecto").ToString.ToEntero If ObjDestinos.GetDestinosTarifas(CveSubProyecto, DdlPartida.SelectedValue.ToEntero, DdlDestino.SelectedValue.ToEntero) Then - ImporteR = ObjDestinos.DtResultados.FiltroPrimeroValor("Importe").ToDecimal.RoundSQL + Dim fechaHoy As Date = Date.Today + Dim fechaNacimiento As Date = TxtFechaNacimiento.Text.ToDate + Dim edad As Integer + + ' Calcular la diferencia en años entre la fecha actual y la fecha de nacimiento + edad = CInt(DateDiff(DateInterval.Year, fechaNacimiento, fechaHoy)) + If edad < 8 Or edad > 65 Then + ImporteR = ObjDestinos.DtResultados.FiltroPrimeroValor("Importe").ToDecimal.RoundSQL - 20 + Else + ImporteR = ObjDestinos.DtResultados.FiltroPrimeroValor("Importe").ToDecimal.RoundSQL + + End If End If If ImporteR > 0 Then ViewState("Importe") = ImporteR @@ -216,22 +217,9 @@ Partial Class Boletos Try For Each dr As DataRow In DtPasajeros.Rows - Dim Nombre, Visa, Celular, Obs, Asiento As String - Dim Sexo As Boolean - Dim Importe As Decimal = 0 - Dim CveDestinoOrigen, CveDestinoFinal As Integer - CveDestinoOrigen = dr("CveDestinoOrigen").ToString.ToEntero - CveDestinoFinal = dr("CveDestinoFinal").ToString.ToEntero - Importe = dr("Importe").ToString.ToDecimal - Asiento = dr("Asiento").ToString - Nombre = dr("Nombre").ToString - Visa = dr("Visa").ToString - Celular = dr("Celular").ToString - Sexo = dr("CveSexo").ToString.ToBool - Obs = dr("Observaciones").ToString - Dim CveViajePasajero = ObjTransporte.AddViajesPasajeros(CveViaje, CveDestinoOrigen, CveDestinoFinal, Importe, Asiento.ToEntero, Nombre, Visa, Celular, Sexo, Obs, UsuarioActual.CveUsuario, UsuarioActual.CveVendedor) + Dim CveViajePasajero As Integer = ObjTransporte.AddViajesPasajeros(CveViaje, dr("CveDestinoOrigen").ToString.ToEntero, dr("CveDestinoFinal").ToString.ToEntero, UsuarioActual.CveVendedor, dr("Importe").ToString.ToDecimal, dr("Asiento").ToString.ToEntero, dr("Nombre").ToString, dr("INE").ToString, dr("FechaNacimiento").ToString.ToDate, dr("CveSexo").ToString.ToBool, dr("Visa").ToString, dr("VisaVigencia").ToString.ToDate, dr("Celular").ToString, dr("Observaciones").ToString, UsuarioActual.CveUsuario) If CveViajePasajero < 1 Then TieneError = True @@ -328,6 +316,12 @@ Partial Class Boletos DdlDestino.Items.Insert(0, New ListItem("Seleccione Destino", "-1")) End Sub Protected Sub DdlDestino_SelectedIndexChanged(sender As Object, e As EventArgs) Handles DdlDestino.SelectedIndexChanged + If TxtFechaNacimiento.Text = "" Then + DdlDestino.SelectedValue = "-1" + DdlPartida.SelectedValue = "-1" + Alert("Debe seleccionar la fecha de nacimiento", TipoMensaje.MsgAdvertencia) + Exit Sub + End If CotizarTarifa() End Sub Private Sub GeneraPasajeros(Cantidad As Integer) @@ -353,24 +347,30 @@ Partial Class Boletos Exit Sub End If Dim Dr1 As DataRow = DtPasajeros.NewRow - Dr1("Asiento") = AsientoSeleccionado.Replace("A", "") - Dr1("Nombre") = TxtNombre.Text.Trim - Dr1("Visa") = TxtVisa.Text.Trim - Dr1("Sexo") = RblSexo.SelectedItem - Dr1("CveSexo") = RblSexo.SelectedValue.ToBool - Dr1("Celular") = TxtCelular.Text.Trim - Dr1("Observaciones") = TxtObservaciones.Text.Trim Dr1("Partida") = DdlPartida.SelectedItem Dr1("Destino") = DdlDestino.SelectedItem Dr1("CveDestinoOrigen") = DdlPartida.SelectedValue.ToEntero Dr1("CveDestinoFinal") = DdlDestino.SelectedValue.ToEntero Dr1("Importe") = Me.Importe + Dr1("Asiento") = AsientoSeleccionado.Replace("A", "") + Dr1("Nombre") = TxtNombre.Text.Trim + Dr1("INE") = TxtINE.Text.Trim + Dr1("FechaNacimiento") = TxtFechaNacimiento.Text.Trim + Dr1("Sexo") = RblSexo.SelectedItem + Dr1("CveSexo") = RblSexo.SelectedValue.ToBool + Dr1("Visa") = TxtVisa.Text.Trim + Dr1("VisaVigencia") = TxtVisaVigencia.Text.Trim + Dr1("Celular") = TxtCelular.Text.Trim + Dr1("Observaciones") = TxtObservaciones.Text.Trim + 'Reiniciamos Datos' DtPasajeros.Rows.Add(Dr1) AsientoSeleccionado = "" TxtNombre.Text = "" + TxtINE.Text = "" + TxtFechaNacimiento.Text = "" TxtVisa.Text = "" - TxtCelular.Text = "" + TxtVisaVigencia.Text = "" TxtCelular.Text = "" TxtObservaciones.Text = "" GvB.DataSource = DtPasajeros @@ -408,7 +408,7 @@ Partial Class Boletos Return Retorno End If - Dim ObjFactura = Modelos.Factura.CrearVentaNueva(UsuarioActual, -1, CveCliente, CveMoneda, "Rem") + Dim ObjFactura As Modelos.Factura = Modelos.Factura.CrearVentaNueva(UsuarioActual, -1, CveCliente, CveMoneda, "Rem") If ObjFactura IsNot Nothing Then 'TOMA EL SUBPROYECTO DEL CLIENTE @@ -426,8 +426,8 @@ Partial Class Boletos ObjFactura.SetSubProyectoMatriz() For Each Dr As DataRow In DtPasajeros.Rows - Dim Obs = Dr("Observaciones").ToString - Dim Importe = Dr("Importe").ToString.ToDecimal() + Dim Obs As String = Dr("Observaciones").ToString + Dim Importe As Decimal = Dr("Importe").ToString.ToDecimal() If Importe <= 0 Then Retorno.Mensajes.Add("El importe debe ser mayor a 0") @@ -477,8 +477,5 @@ Partial Class Boletos Return Retorno End Function - 'Protected Sub TimerActualizar_Tick(ByVal sender As Object, ByVal e As EventArgs) Handles timerActualizar.Tick - ' ScriptManager.RegisterStartupScript(Me, Me.GetType(), "ActualizarTiempo", "actualizarTiempo();", True) - ' UpTimer.Update() - 'End Sub + End Class diff --git a/Transportes/RepContratoDetalle.aspx b/Transportes/RepContratoDetalle.aspx index 8591d596e..945d85a0d 100644 --- a/Transportes/RepContratoDetalle.aspx +++ b/Transportes/RepContratoDetalle.aspx @@ -266,25 +266,29 @@
    -
    - +
    +
    -
    - + + +
    -
    -
    -
    - -
    - -
    -
    - + + + + +
    - +
    @@ -301,13 +305,13 @@
    -
    -
    - - +
    + + +
    <%-- Contrato Digitalizado --%> @@ -320,7 +324,7 @@
    - Contrato Digitalizado + Contrato Digitalizado
    @@ -349,6 +353,30 @@
    + <%-- Bitácora --%> +
    +
    +
    +
    + +
    +
    + Bitácora +
    +
    +
    + + + + + + +
    +
    +
    @@ -574,6 +602,10 @@ <%-- Asientos --%> +
    + + +
    0 Then - Dim Dolares As Decimal = Contrato.Rows(0)("Importe").ToString.ToDecimal + Dim Importe As Decimal = Contrato.Rows(0)("Importe").ToString.ToDecimal Dim Pesos As Decimal = Contrato.Rows(0)("ImporteMax").ToString.ToDecimal Dim Anticipo As Decimal = Contrato.Rows(0)("ImporteMin").ToString.ToDecimal @@ -136,8 +140,7 @@ Partial Class RepContratoDetalle TxtFechaRegreso.Text = Contrato.Rows(0)("FechaFinal").ToString TxtCantidadPasajeros.Text = Contrato.Rows(0)("CantidadPasajeros").ToString DdlTipoAF.SelectedValue = If(Contrato.Rows(0)("CveTipoAF") Is Nothing, "", Contrato.Rows(0)("CveTipoAF").ToString) - TxtDolares.Text = Math.Round(Dolares, 2).ToString - TxtPesos.Text = Math.Round(Pesos, 2).ToString + TxtImporte.Text = Math.Round(Importe, 2).ToString TxtAnticipo.Text = Math.Round(Anticipo, 2).ToString CveContratoEstatus = Contrato.Rows(0)("CveContratosEstatus").ToString.ToEntero If Not IsDBNull(ObjContratos.Archivo) AndAlso ObjContratos.Archivo <> "" AndAlso ObjContratos.Archivo <> "-1" AndAlso ObjContratos.Archivo <> $"{ObjContratos.CveContrato}." Then @@ -158,6 +161,14 @@ Partial Class RepContratoDetalle ObjTransportes.Dispose() GvViajesPasajeros.DataBind() End If + 'Bitácora + Dim ObjEventoBitacora As New ClsOIEventos + If ObjEventoBitacora.GetEventos(-1, -1, -1, "-1", "-1", -1, -1, -1, -1, -1, -1, "-1", -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveContrato:=CveContrato) Then + GvEventosBitacora.DataSource = ObjEventoBitacora.DtResultados + GvEventosBitacora.DataBind() + End If + ObjEventoBitacora.Dispose() + End If Else ObjContratos.Dispose() @@ -245,8 +256,7 @@ Partial Class RepContratoDetalle Dim ObjContratos As New ClsContratos ObjContratos.IniciaTransacSQL() Try - 'ObjContratos.AddContratos(LbFolio.Text, TxtDescripcion.Text, "", UsuarioActual.CveProveedor, DdlClientes.SelectedValue.ToEntero, -1, TxtFechaSalida.Text.ToDate, TxtFechaRegreso.Text.ToDate, TxtUbicacion.Text, "", 10, -1, -1, -1, -1, LbArchivo.Text, "", -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, False, TxtAnticipo.Text.ToDecimal, TxtPesos.Text.ToDecimal, TxtDolares.Text.ToDecimal, DdlMoneda.SelectedValue.ToEntero, 0, CveContratoTipo:=34, CveContratosEstatus:=50, CveTipoAF:=DdlTipoAF.SelectedValue.ToEntero, CantidadPasajeros:=TxtCantidadPasajeros.Text.ToEntero, Observaciones:=TxtObservaciones.Text) - If ObjContratos.UpdateContratos(CveContrato, LbFolio.Text, TxtDescripcion.Text, "", UsuarioActual.CveProveedor, DdlClientes.SelectedValue.ToEntero, -1, TxtFechaSalida.Text.ToDate, TxtFechaRegreso.Text.ToDate, TxtUbicacion.Text, "", LbCveSubProyecto.Text.ToEntero, -1, -1, -1, -1, ArchivoUpdate, "", -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, False, TxtAnticipo.Text.ToDecimal, TxtPesos.Text.ToDecimal, TxtDolares.Text.ToDecimal, -1, 0, CveContratoTipo:=CveContratoTipo, CveTipoAF:=DdlTipoAF.SelectedValue.ToEntero, CveContratosEstatus:=CveContratoEstatus) Then + If ObjContratos.UpdateContratos(CveContrato, LbFolio.Text, TxtDescripcion.Text, "", UsuarioActual.CveProveedor, DdlClientes.SelectedValue.ToEntero, -1, TxtFechaSalida.Text.ToDate, TxtFechaRegreso.Text.ToDate, TxtUbicacion.Text, "", LbCveSubProyecto.Text.ToEntero, -1, -1, -1, -1, ArchivoUpdate, "", -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, False, TxtAnticipo.Text.ToDecimal, -1, TxtImporte.Text.ToDecimal, DdlMoneda.SelectedValue.ToEntero, 0, CveContratoTipo:=CveContratoTipo, CveTipoAF:=DdlTipoAF.SelectedValue.ToEntero, CveContratosEstatus:=CveContratoEstatus) Then Alert("Contrato actualizado correctamente") End If ObjContratos.Commit() @@ -255,6 +265,7 @@ Partial Class RepContratoDetalle ObjContratos.RollBack() Finally ObjContratos.Dispose() + AgregarABitacora($"Actualización del contrato {CveContrato}") CargaDatos() End Try End Sub @@ -264,12 +275,16 @@ Partial Class RepContratoDetalle If CveMasivo <> 0 Then If ObjContratos.RemoveContrato(CveContrato, UsuarioActual.CveEmpresa, CveMasivo:=CveMasivo) Then Alert("Viajes masivos eliminados correctamente") + AgregarABitacora($"Eliminación del contrato {CveContrato}") + ObjContratos.Dispose() Response.Redirect("RepViajes.aspx") End If Else If ObjContratos.RemoveContrato(CveContrato, UsuarioActual.CveEmpresa) Then Alert("Viaje eliminado correctamente") + AgregarABitacora($"Eliminación de contratos masivos con clave {CveMasivo}") + ObjContratos.Dispose() Response.Redirect("RepViajes.aspx") End If @@ -296,13 +311,24 @@ Partial Class RepContratoDetalle New ReportParameter("FechaRegreso", TxtFechaRegreso.Text.ToDate.ToString("HH:mm")), New ReportParameter("CantidadPasajeros", TxtCantidadPasajeros.Text), New ReportParameter("TipoAF", DdlTipoAF.Text), - New ReportParameter("Dolares", Math.Round(TxtDolares.Text.ToDecimal, 2).ToString), - New ReportParameter("Pesos", Math.Round(TxtPesos.Text.ToDecimal, 2).ToString), + New ReportParameter("Importe", Math.Round(TxtImporte.Text.ToDecimal, 2).ToString), New ReportParameter("Anticipo", (TxtAnticipo.Text.ToDecimal * 100).ToString) } ImprimirPDFStimul($"{UsuarioActual.Empresa.Ruta}Formatos\Contrato.mrt", dtResult, params, NombreArchivo:="Contrato") End Sub + Protected Sub AgregarABitacora(Descripcion As String) + Dim ObjEventoBitacora As New ClsOIEventos + + Dim FileExtension As String = "-1" + + If ObjEventoBitacora.AddEventoBitacora(Descripcion, FileExtension, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveContrato:=CveContrato) Then + Alert("Evento agregado a bitácora correctamente", TipoMensaje.MsgInformacion) + + End If + ObjEventoBitacora.Dispose() + + End Sub #End Region #Region "Boletos" @@ -324,6 +350,8 @@ Partial Class RepContratoDetalle RegistraScript(String.Format("$('#{0}').modal('show');", "ModalEditar")) End Sub Protected Sub UpdateBoleto(sender As Object, e As EventArgs) + + If PnEditarViaje.Visible = True Then For Each boleto As DataRow In ViajeActual.Rows If (boleto.Item("Asiento").ToString = TxtAsiento.Text) Then @@ -346,6 +374,8 @@ Partial Class RepContratoDetalle ObjTransportes.RollBack() Finally Alert("Su asiento fue actualizado correctamente") + AgregarABitacora($"Cambio de asiento del pasajero {CveViajePasajero} del asiento al {TxtAsiento.Text} del contrato {CveContrato}") + ObjTransportes.Dispose() End Try @@ -513,6 +543,15 @@ Partial Class RepContratoDetalle Alert($"No se pudo cambiar el estatus del boleto", TipoMensaje.MsgError) Finally ObjTransportes.Dispose() + Dim toggleEstatus As String + If CBool(RblSexo.SelectedValue) Then + toggleEstatus = "Cancelación" + Else + toggleEstatus = "Reactivación" + + End If + AgregarABitacora($"{toggleEstatus} del asiento {TxtAsiento.Text} del viaje {CveContrato} con clave de pasajero {CveViajePasajero}") + CargaDatos() End Try UpPasajeros.Update() diff --git a/Transportes/RepContratos.aspx b/Transportes/RepContratos.aspx index 1e626144c..c60a2f43b 100644 --- a/Transportes/RepContratos.aspx +++ b/Transportes/RepContratos.aspx @@ -227,7 +227,7 @@ + @@ -445,44 +497,7 @@
    - <%-- Modal Archivo--%> - - - - - diff --git a/Transportes/RepContratos.aspx.vb b/Transportes/RepContratos.aspx.vb index a56d3dd91..135ddb22d 100644 --- a/Transportes/RepContratos.aspx.vb +++ b/Transportes/RepContratos.aspx.vb @@ -19,7 +19,6 @@ Partial Class ListadoContratos End Set End Property #End Region - #Region "Carga Página" Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load txtFechaI.Text = DateTime.Now.AddMonths(-1).ToShortDateString @@ -34,7 +33,8 @@ Partial Class ListadoContratos 'Lista Tipo AF DdlTipoAF.DataSource = GlobalDTTipoActivoFijo(UsuarioActual.CveEmpresa).FiltraParametros("MedidaVehicularClave IN (2,3)") DdlTipoAF.DataBind() - DdlTipoAF.Items.Insert(0, New ListItem("-", "")) + DdlTipoAF.Items.Insert(0, New ListItem("Seleccione", "-1")) + DdlTipoAF.SelectedValue = "-1" DdlTipoUnidad.DataSource = GlobalDTTipoActivoFijo(UsuarioActual.CveEmpresa).FiltraParametros("MedidaVehicularClave IN (2,3)") DdlTipoUnidad.DataBind() @@ -74,6 +74,21 @@ Partial Class ListadoContratos UpTitulos.Update() End Sub #End Region +#Region "Contrato" + Protected Sub OnChangePasajeros(sender As Object, e As EventArgs) + If TxtCantidadPasajeros.Text.ToDecimal > 19 Then + Dim sprintersItem As ListItem = DdlTipoAF.Items.FindByText("Sprinter") + If sprintersItem IsNot Nothing Then + DdlTipoAF.Items.Remove(sprintersItem) + End If + Else + Dim sprintersItem As ListItem = DdlTipoAF.Items.FindByText("Sprinter") + If sprintersItem Is Nothing Then + DdlTipoAF.Items.Add(New ListItem("Sprinter", "183")) + End If + + End If + End Sub Protected Sub AddContrato(sender As Object, e As EventArgs) If DdlClientes.SelectedValue = "" Then @@ -85,7 +100,7 @@ Partial Class ListadoContratos 'Agregamos Contrato Dim ObjContratos As New ClsContratos ObjContratos.IniciaTransacSQL() - If ObjContratos.AddContratos(LbFolio.Text, TxtDescripcion.Text, "", UsuarioActual.CveProveedor, DdlClientes.SelectedValue.ToEntero, -1, TxtFechaSalida.Text.ToDateTime, TxtFechaRegreso.Text.ToDateTime, TxtUbicacion.Text, "", CveSubProyecto, -1, -1, -1, -1, LbArchivo.Text, "", -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, False, TxtAnticipo.Text.ToDecimal, TxtPesos.Text.ToDecimal, TxtDolares.Text.ToDecimal, DdlMoneda.SelectedValue.ToEntero, 0, CveContratoTipo:=34, CveContratosEstatus:=50, CveTipoAF:=DdlTipoAF.SelectedValue.ToEntero, CantidadPasajeros:=TxtCantidadPasajeros.Text.ToEntero, Observaciones:=TxtObservaciones.Text) > 0 Then + If ObjContratos.AddContratos(LbFolio.Text, TxtDescripcion.Text, "", UsuarioActual.CveProveedor, DdlClientes.SelectedValue.ToEntero, -1, TxtFechaSalida.Text.ToDateTime, TxtFechaRegreso.Text.ToDateTime, TxtUbicacion.Text, "", CveSubProyecto, -1, -1, -1, -1, LbArchivo.Text, "", -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, False, TxtAnticipo.Text.ToDecimal, -1, TxtImporte.Text.ToDecimal, DdlMoneda.SelectedValue.ToEntero, 0, CveContratoTipo:=34, CveContratosEstatus:=50, CveTipoAF:=DdlTipoAF.SelectedValue.ToEntero, CantidadPasajeros:=TxtCantidadPasajeros.Text.ToEntero, Observaciones:=TxtObservaciones.Text) > 0 Then ObjContratos.Commit() Alert("Agregado Correctamente.") End If @@ -105,8 +120,7 @@ Partial Class ListadoContratos TxtUbicacion.Text = "" DdlClientes.SelectedText = "" DdlTipoAF.SelectedValue = "" - TxtDolares.Text = "" - TxtPesos.Text = "" + TxtImporte.Text = "" TxtAnticipo.Text = "" TxtCantidadPasajeros.Text = "" LbArchivo.Text = "" @@ -188,10 +202,10 @@ Partial Class ListadoContratos Next - UpArchivo.Update() UpModal.Update() - RegistraScript("$('#ModalUpload').modal('hide')", "hidemodal1") End Sub +#End Region + End Class From 7cb38d310b203a501c03497bb1584bf9bcdfd787 Mon Sep 17 00:00:00 2001 From: AbrahamCastilloV Date: Sat, 23 Mar 2024 17:00:03 -0700 Subject: [PATCH 116/197] =?UTF-8?q?--Se=20agregar=20c=C3=B3digo=20QR=20a?= =?UTF-8?q?=20boleto.mrt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Empresas/188/Formatos/Boleto.mrt | 125 +++++++++++++++---------- Transportes/RepContratoDetalle.aspx | 5 +- Transportes/RepContratoDetalle.aspx.vb | 3 - 3 files changed, 75 insertions(+), 58 deletions(-) diff --git a/Empresas/188/Formatos/Boleto.mrt b/Empresas/188/Formatos/Boleto.mrt index 1265190a2..8be7875f0 100644 --- a/Empresas/188/Formatos/Boleto.mrt +++ b/Empresas/188/Formatos/Boleto.mrt @@ -9,19 +9,19 @@ ReportParameters - ReportParameters,Ruta,Ruta,,System.String,,False,False,True,False,_x003C__x003F_xml_x0020_version_x003D__x0022_1.0_x0022__x0020_encoding_x003D__x0022_utf-16_x0022__x0020_standalone_x003D__x0022_yes_x0022__x003F__x003E__x003C_StiSerializer_x0020_version_x003D__x0022_1.02_x0022__x0020_type_x003D__x0022_Net_x0022__x0020_application_x003D__x0022_State_x0022__x003E__x003C_SortDirection_x003E_None_x003C__x002F_SortDirection_x003E__x003C_BindingVariable_x0020_isNull_x003D__x0022_true_x0022__x0020__x002F__x003E__x003C__x002F_StiSerializer_x003E_,e3ad7f90080f41f8a2c073fd14df0463 - ReportParameters,Origen,Origen,,System.String,,False,False,True,False,_x003C__x003F_xml_x0020_version_x003D__x0022_1.0_x0022__x0020_encoding_x003D__x0022_utf-16_x0022__x0020_standalone_x003D__x0022_yes_x0022__x003F__x003E__x003C_StiSerializer_x0020_version_x003D__x0022_1.02_x0022__x0020_type_x003D__x0022_Net_x0022__x0020_application_x003D__x0022_State_x0022__x003E__x003C_SortDirection_x003E_None_x003C__x002F_SortDirection_x003E__x003C_BindingVariable_x0020_isNull_x003D__x0022_true_x0022__x0020__x002F__x003E__x003C__x002F_StiSerializer_x003E_,_x0030_9648a002402486dbe61fe25e563c8ba - ReportParameters,Destino,Destino,,System.String,,False,False,True,False,_x003C__x003F_xml_x0020_version_x003D__x0022_1.0_x0022__x0020_encoding_x003D__x0022_utf-16_x0022__x0020_standalone_x003D__x0022_yes_x0022__x003F__x003E__x003C_StiSerializer_x0020_version_x003D__x0022_1.02_x0022__x0020_type_x003D__x0022_Net_x0022__x0020_application_x003D__x0022_State_x0022__x003E__x003C_SortDirection_x003E_None_x003C__x002F_SortDirection_x003E__x003C_BindingVariable_x0020_isNull_x003D__x0022_true_x0022__x0020__x002F__x003E__x003C__x002F_StiSerializer_x003E_,dd4a9d7c23ba478ea75fd9fabef3608c - ReportParameters,FechaSalida,FechaSalida,,System.String,,False,False,True,False,_x003C__x003F_xml_x0020_version_x003D__x0022_1.0_x0022__x0020_encoding_x003D__x0022_utf-16_x0022__x0020_standalone_x003D__x0022_yes_x0022__x003F__x003E__x003C_StiSerializer_x0020_version_x003D__x0022_1.02_x0022__x0020_type_x003D__x0022_Net_x0022__x0020_application_x003D__x0022_State_x0022__x003E__x003C_SortDirection_x003E_None_x003C__x002F_SortDirection_x003E__x003C_BindingVariable_x0020_isNull_x003D__x0022_true_x0022__x0020__x002F__x003E__x003C__x002F_StiSerializer_x003E_,_x0036_2a907a96a20433382c8c396c3622af0 - ReportParameters,HoraSalida,HoraSalida,,System.String,,False,False,True,False,_x003C__x003F_xml_x0020_version_x003D__x0022_1.0_x0022__x0020_encoding_x003D__x0022_utf-16_x0022__x0020_standalone_x003D__x0022_yes_x0022__x003F__x003E__x003C_StiSerializer_x0020_version_x003D__x0022_1.02_x0022__x0020_type_x003D__x0022_Net_x0022__x0020_application_x003D__x0022_State_x0022__x003E__x003C_SortDirection_x003E_None_x003C__x002F_SortDirection_x003E__x003C_BindingVariable_x0020_isNull_x003D__x0022_true_x0022__x0020__x002F__x003E__x003C__x002F_StiSerializer_x003E_,_x0035_0ca3ec706064509b2e3654759256f7d - ReportParameters,Asiento,Asiento,,System.String,,False,False,True,False,_x003C__x003F_xml_x0020_version_x003D__x0022_1.0_x0022__x0020_encoding_x003D__x0022_utf-16_x0022__x0020_standalone_x003D__x0022_yes_x0022__x003F__x003E__x003C_StiSerializer_x0020_version_x003D__x0022_1.02_x0022__x0020_type_x003D__x0022_Net_x0022__x0020_application_x003D__x0022_State_x0022__x003E__x003C_SortDirection_x003E_None_x003C__x002F_SortDirection_x003E__x003C_BindingVariable_x0020_isNull_x003D__x0022_true_x0022__x0020__x002F__x003E__x003C__x002F_StiSerializer_x003E_,_x0036_2e2bab5ae234ba2a5ea86ab909cbdde - ReportParameters,Nombre,Nombre,,System.String,,False,False,True,False,_x003C__x003F_xml_x0020_version_x003D__x0022_1.0_x0022__x0020_encoding_x003D__x0022_utf-16_x0022__x0020_standalone_x003D__x0022_yes_x0022__x003F__x003E__x003C_StiSerializer_x0020_version_x003D__x0022_1.02_x0022__x0020_type_x003D__x0022_Net_x0022__x0020_application_x003D__x0022_State_x0022__x003E__x003C_SortDirection_x003E_None_x003C__x002F_SortDirection_x003E__x003C_BindingVariable_x0020_isNull_x003D__x0022_true_x0022__x0020__x002F__x003E__x003C__x002F_StiSerializer_x003E_,f28ce5db5d71413dbb5fec2c9dfb4731 - ReportParameters,Visa,Visa,,System.String,,False,False,True,False,_x003C__x003F_xml_x0020_version_x003D__x0022_1.0_x0022__x0020_encoding_x003D__x0022_utf-16_x0022__x0020_standalone_x003D__x0022_yes_x0022__x003F__x003E__x003C_StiSerializer_x0020_version_x003D__x0022_1.02_x0022__x0020_type_x003D__x0022_Net_x0022__x0020_application_x003D__x0022_State_x0022__x003E__x003C_SortDirection_x003E_None_x003C__x002F_SortDirection_x003E__x003C_BindingVariable_x0020_isNull_x003D__x0022_true_x0022__x0020__x002F__x003E__x003C__x002F_StiSerializer_x003E_,a978633ea289450996a27415dcd796a9 - ReportParameters,Agencia,Agencia,,System.String,,False,False,True,False,_x003C__x003F_xml_x0020_version_x003D__x0022_1.0_x0022__x0020_encoding_x003D__x0022_utf-16_x0022__x0020_standalone_x003D__x0022_yes_x0022__x003F__x003E__x003C_StiSerializer_x0020_version_x003D__x0022_1.02_x0022__x0020_type_x003D__x0022_Net_x0022__x0020_application_x003D__x0022_State_x0022__x003E__x003C_SortDirection_x003E_None_x003C__x002F_SortDirection_x003E__x003C_BindingVariable_x0020_isNull_x003D__x0022_true_x0022__x0020__x002F__x003E__x003C__x002F_StiSerializer_x003E_,_x0038_61ffb7923b84ab2aa4a3ab8eeb13fd2 - ReportParameters,TelefonoAgencia,TelefonoAgencia,,System.String,,False,False,True,False,_x003C__x003F_xml_x0020_version_x003D__x0022_1.0_x0022__x0020_encoding_x003D__x0022_utf-16_x0022__x0020_standalone_x003D__x0022_yes_x0022__x003F__x003E__x003C_StiSerializer_x0020_version_x003D__x0022_1.02_x0022__x0020_type_x003D__x0022_Net_x0022__x0020_application_x003D__x0022_State_x0022__x003E__x003C_SortDirection_x003E_None_x003C__x002F_SortDirection_x003E__x003C_BindingVariable_x0020_isNull_x003D__x0022_true_x0022__x0020__x002F__x003E__x003C__x002F_StiSerializer_x003E_,a6a53af4654d453fb684117b6e9dc56e - ReportParameters,Celular,Celular,,System.String,,False,False,True,False,_x003C__x003F_xml_x0020_version_x003D__x0022_1.0_x0022__x0020_encoding_x003D__x0022_utf-16_x0022__x0020_standalone_x003D__x0022_yes_x0022__x003F__x003E__x003C_StiSerializer_x0020_version_x003D__x0022_1.02_x0022__x0020_type_x003D__x0022_Net_x0022__x0020_application_x003D__x0022_State_x0022__x003E__x003C_SortDirection_x003E_None_x003C__x002F_SortDirection_x003E__x003C_BindingVariable_x0020_isNull_x003D__x0022_true_x0022__x0020__x002F__x003E__x003C__x002F_StiSerializer_x003E_,_x0032_bf77bebb0464d29b65adac7733f0a34 - ReportParameters,Importe,Importe,,System.String,,False,False,True,False,_x003C__x003F_xml_x0020_version_x003D__x0022_1.0_x0022__x0020_encoding_x003D__x0022_utf-16_x0022__x0020_standalone_x003D__x0022_yes_x0022__x003F__x003E__x003C_StiSerializer_x0020_version_x003D__x0022_1.02_x0022__x0020_type_x003D__x0022_Net_x0022__x0020_application_x003D__x0022_State_x0022__x003E__x003C_SortDirection_x003E_None_x003C__x002F_SortDirection_x003E__x003C_BindingVariable_x0020_isNull_x003D__x0022_true_x0022__x0020__x002F__x003E__x003C__x002F_StiSerializer_x003E_,_x0036_a9d4b8f5dba4fa698ca433c967057f1 - ReportParameters,TipoBoleto,TipoBoleto,,System.String,,False,False,True,False,_x003C__x003F_xml_x0020_version_x003D__x0022_1.0_x0022__x0020_encoding_x003D__x0022_utf-16_x0022__x0020_standalone_x003D__x0022_yes_x0022__x003F__x003E__x003C_StiSerializer_x0020_version_x003D__x0022_1.02_x0022__x0020_type_x003D__x0022_Net_x0022__x0020_application_x003D__x0022_State_x0022__x003E__x003C_SortDirection_x003E_None_x003C__x002F_SortDirection_x003E__x003C_BindingVariable_x0020_isNull_x003D__x0022_true_x0022__x0020__x002F__x003E__x003C__x002F_StiSerializer_x003E_ + ReportParameters,Ruta,Ruta,,System.String,,False,False,True,False,_x003C__x003F_xml_x0020_version_x003D__x0022_1.0_x0022__x0020_encoding_x003D__x0022_utf-16_x0022__x0020_standalone_x003D__x0022_yes_x0022__x003F__x003E__x003C_StiSerializer_x0020_version_x003D__x0022_1.02_x0022__x0020_type_x003D__x0022_Net_x0022__x0020_application_x003D__x0022_State_x0022__x003E__x003C_SortDirection_x003E_None_x003C__x002F_SortDirection_x003E__x003C_BindingVariable_x0020_isNull_x003D__x0022_true_x0022__x0020__x002F__x003E__x003C_Keys_x0020_isList_x003D__x0022_true_x0022__x0020_count_x003D__x0022_0_x0022__x0020__x002F__x003E__x003C_Values_x0020_isList_x003D__x0022_true_x0022__x0020_count_x003D__x0022_0_x0022__x0020__x002F__x003E__x003C_CheckedStates_x0020_isList_x003D__x0022_true_x0022__x0020_count_x003D__x0022_0_x0022__x0020__x002F__x003E__x003C__x002F_StiSerializer_x003E_,e3ad7f90080f41f8a2c073fd14df0463 + ReportParameters,Origen,Origen,,System.String,,False,False,True,False,_x003C__x003F_xml_x0020_version_x003D__x0022_1.0_x0022__x0020_encoding_x003D__x0022_utf-16_x0022__x0020_standalone_x003D__x0022_yes_x0022__x003F__x003E__x003C_StiSerializer_x0020_version_x003D__x0022_1.02_x0022__x0020_type_x003D__x0022_Net_x0022__x0020_application_x003D__x0022_State_x0022__x003E__x003C_SortDirection_x003E_None_x003C__x002F_SortDirection_x003E__x003C_BindingVariable_x0020_isNull_x003D__x0022_true_x0022__x0020__x002F__x003E__x003C_Keys_x0020_isList_x003D__x0022_true_x0022__x0020_count_x003D__x0022_0_x0022__x0020__x002F__x003E__x003C_Values_x0020_isList_x003D__x0022_true_x0022__x0020_count_x003D__x0022_0_x0022__x0020__x002F__x003E__x003C_CheckedStates_x0020_isList_x003D__x0022_true_x0022__x0020_count_x003D__x0022_0_x0022__x0020__x002F__x003E__x003C__x002F_StiSerializer_x003E_,_x0030_9648a002402486dbe61fe25e563c8ba + ReportParameters,Destino,Destino,,System.String,,False,False,True,False,_x003C__x003F_xml_x0020_version_x003D__x0022_1.0_x0022__x0020_encoding_x003D__x0022_utf-16_x0022__x0020_standalone_x003D__x0022_yes_x0022__x003F__x003E__x003C_StiSerializer_x0020_version_x003D__x0022_1.02_x0022__x0020_type_x003D__x0022_Net_x0022__x0020_application_x003D__x0022_State_x0022__x003E__x003C_SortDirection_x003E_None_x003C__x002F_SortDirection_x003E__x003C_BindingVariable_x0020_isNull_x003D__x0022_true_x0022__x0020__x002F__x003E__x003C_Keys_x0020_isList_x003D__x0022_true_x0022__x0020_count_x003D__x0022_0_x0022__x0020__x002F__x003E__x003C_Values_x0020_isList_x003D__x0022_true_x0022__x0020_count_x003D__x0022_0_x0022__x0020__x002F__x003E__x003C_CheckedStates_x0020_isList_x003D__x0022_true_x0022__x0020_count_x003D__x0022_0_x0022__x0020__x002F__x003E__x003C__x002F_StiSerializer_x003E_,dd4a9d7c23ba478ea75fd9fabef3608c + ReportParameters,FechaSalida,FechaSalida,,System.String,,False,False,True,False,_x003C__x003F_xml_x0020_version_x003D__x0022_1.0_x0022__x0020_encoding_x003D__x0022_utf-16_x0022__x0020_standalone_x003D__x0022_yes_x0022__x003F__x003E__x003C_StiSerializer_x0020_version_x003D__x0022_1.02_x0022__x0020_type_x003D__x0022_Net_x0022__x0020_application_x003D__x0022_State_x0022__x003E__x003C_SortDirection_x003E_None_x003C__x002F_SortDirection_x003E__x003C_BindingVariable_x0020_isNull_x003D__x0022_true_x0022__x0020__x002F__x003E__x003C_Keys_x0020_isList_x003D__x0022_true_x0022__x0020_count_x003D__x0022_0_x0022__x0020__x002F__x003E__x003C_Values_x0020_isList_x003D__x0022_true_x0022__x0020_count_x003D__x0022_0_x0022__x0020__x002F__x003E__x003C_CheckedStates_x0020_isList_x003D__x0022_true_x0022__x0020_count_x003D__x0022_0_x0022__x0020__x002F__x003E__x003C__x002F_StiSerializer_x003E_,_x0036_2a907a96a20433382c8c396c3622af0 + ReportParameters,HoraSalida,HoraSalida,,System.String,,False,False,True,False,_x003C__x003F_xml_x0020_version_x003D__x0022_1.0_x0022__x0020_encoding_x003D__x0022_utf-16_x0022__x0020_standalone_x003D__x0022_yes_x0022__x003F__x003E__x003C_StiSerializer_x0020_version_x003D__x0022_1.02_x0022__x0020_type_x003D__x0022_Net_x0022__x0020_application_x003D__x0022_State_x0022__x003E__x003C_SortDirection_x003E_None_x003C__x002F_SortDirection_x003E__x003C_BindingVariable_x0020_isNull_x003D__x0022_true_x0022__x0020__x002F__x003E__x003C_Keys_x0020_isList_x003D__x0022_true_x0022__x0020_count_x003D__x0022_0_x0022__x0020__x002F__x003E__x003C_Values_x0020_isList_x003D__x0022_true_x0022__x0020_count_x003D__x0022_0_x0022__x0020__x002F__x003E__x003C_CheckedStates_x0020_isList_x003D__x0022_true_x0022__x0020_count_x003D__x0022_0_x0022__x0020__x002F__x003E__x003C__x002F_StiSerializer_x003E_,_x0035_0ca3ec706064509b2e3654759256f7d + ReportParameters,Asiento,Asiento,,System.String,,False,False,True,False,_x003C__x003F_xml_x0020_version_x003D__x0022_1.0_x0022__x0020_encoding_x003D__x0022_utf-16_x0022__x0020_standalone_x003D__x0022_yes_x0022__x003F__x003E__x003C_StiSerializer_x0020_version_x003D__x0022_1.02_x0022__x0020_type_x003D__x0022_Net_x0022__x0020_application_x003D__x0022_State_x0022__x003E__x003C_SortDirection_x003E_None_x003C__x002F_SortDirection_x003E__x003C_BindingVariable_x0020_isNull_x003D__x0022_true_x0022__x0020__x002F__x003E__x003C_Keys_x0020_isList_x003D__x0022_true_x0022__x0020_count_x003D__x0022_0_x0022__x0020__x002F__x003E__x003C_Values_x0020_isList_x003D__x0022_true_x0022__x0020_count_x003D__x0022_0_x0022__x0020__x002F__x003E__x003C_CheckedStates_x0020_isList_x003D__x0022_true_x0022__x0020_count_x003D__x0022_0_x0022__x0020__x002F__x003E__x003C__x002F_StiSerializer_x003E_,_x0036_2e2bab5ae234ba2a5ea86ab909cbdde + ReportParameters,Nombre,Nombre,,System.String,,False,False,True,False,_x003C__x003F_xml_x0020_version_x003D__x0022_1.0_x0022__x0020_encoding_x003D__x0022_utf-16_x0022__x0020_standalone_x003D__x0022_yes_x0022__x003F__x003E__x003C_StiSerializer_x0020_version_x003D__x0022_1.02_x0022__x0020_type_x003D__x0022_Net_x0022__x0020_application_x003D__x0022_State_x0022__x003E__x003C_SortDirection_x003E_None_x003C__x002F_SortDirection_x003E__x003C_BindingVariable_x0020_isNull_x003D__x0022_true_x0022__x0020__x002F__x003E__x003C_Keys_x0020_isList_x003D__x0022_true_x0022__x0020_count_x003D__x0022_0_x0022__x0020__x002F__x003E__x003C_Values_x0020_isList_x003D__x0022_true_x0022__x0020_count_x003D__x0022_0_x0022__x0020__x002F__x003E__x003C_CheckedStates_x0020_isList_x003D__x0022_true_x0022__x0020_count_x003D__x0022_0_x0022__x0020__x002F__x003E__x003C__x002F_StiSerializer_x003E_,f28ce5db5d71413dbb5fec2c9dfb4731 + ReportParameters,Visa,Visa,,System.String,,False,False,True,False,_x003C__x003F_xml_x0020_version_x003D__x0022_1.0_x0022__x0020_encoding_x003D__x0022_utf-16_x0022__x0020_standalone_x003D__x0022_yes_x0022__x003F__x003E__x003C_StiSerializer_x0020_version_x003D__x0022_1.02_x0022__x0020_type_x003D__x0022_Net_x0022__x0020_application_x003D__x0022_State_x0022__x003E__x003C_SortDirection_x003E_None_x003C__x002F_SortDirection_x003E__x003C_BindingVariable_x0020_isNull_x003D__x0022_true_x0022__x0020__x002F__x003E__x003C_Keys_x0020_isList_x003D__x0022_true_x0022__x0020_count_x003D__x0022_0_x0022__x0020__x002F__x003E__x003C_Values_x0020_isList_x003D__x0022_true_x0022__x0020_count_x003D__x0022_0_x0022__x0020__x002F__x003E__x003C_CheckedStates_x0020_isList_x003D__x0022_true_x0022__x0020_count_x003D__x0022_0_x0022__x0020__x002F__x003E__x003C__x002F_StiSerializer_x003E_,a978633ea289450996a27415dcd796a9 + ReportParameters,Agencia,Agencia,,System.String,,False,False,True,False,_x003C__x003F_xml_x0020_version_x003D__x0022_1.0_x0022__x0020_encoding_x003D__x0022_utf-16_x0022__x0020_standalone_x003D__x0022_yes_x0022__x003F__x003E__x003C_StiSerializer_x0020_version_x003D__x0022_1.02_x0022__x0020_type_x003D__x0022_Net_x0022__x0020_application_x003D__x0022_State_x0022__x003E__x003C_SortDirection_x003E_None_x003C__x002F_SortDirection_x003E__x003C_BindingVariable_x0020_isNull_x003D__x0022_true_x0022__x0020__x002F__x003E__x003C_Keys_x0020_isList_x003D__x0022_true_x0022__x0020_count_x003D__x0022_0_x0022__x0020__x002F__x003E__x003C_Values_x0020_isList_x003D__x0022_true_x0022__x0020_count_x003D__x0022_0_x0022__x0020__x002F__x003E__x003C_CheckedStates_x0020_isList_x003D__x0022_true_x0022__x0020_count_x003D__x0022_0_x0022__x0020__x002F__x003E__x003C__x002F_StiSerializer_x003E_,_x0038_61ffb7923b84ab2aa4a3ab8eeb13fd2 + ReportParameters,TelefonoAgencia,TelefonoAgencia,,System.String,,False,False,True,False,_x003C__x003F_xml_x0020_version_x003D__x0022_1.0_x0022__x0020_encoding_x003D__x0022_utf-16_x0022__x0020_standalone_x003D__x0022_yes_x0022__x003F__x003E__x003C_StiSerializer_x0020_version_x003D__x0022_1.02_x0022__x0020_type_x003D__x0022_Net_x0022__x0020_application_x003D__x0022_State_x0022__x003E__x003C_SortDirection_x003E_None_x003C__x002F_SortDirection_x003E__x003C_BindingVariable_x0020_isNull_x003D__x0022_true_x0022__x0020__x002F__x003E__x003C_Keys_x0020_isList_x003D__x0022_true_x0022__x0020_count_x003D__x0022_0_x0022__x0020__x002F__x003E__x003C_Values_x0020_isList_x003D__x0022_true_x0022__x0020_count_x003D__x0022_0_x0022__x0020__x002F__x003E__x003C_CheckedStates_x0020_isList_x003D__x0022_true_x0022__x0020_count_x003D__x0022_0_x0022__x0020__x002F__x003E__x003C__x002F_StiSerializer_x003E_,a6a53af4654d453fb684117b6e9dc56e + ReportParameters,Celular,Celular,,System.String,,False,False,True,False,_x003C__x003F_xml_x0020_version_x003D__x0022_1.0_x0022__x0020_encoding_x003D__x0022_utf-16_x0022__x0020_standalone_x003D__x0022_yes_x0022__x003F__x003E__x003C_StiSerializer_x0020_version_x003D__x0022_1.02_x0022__x0020_type_x003D__x0022_Net_x0022__x0020_application_x003D__x0022_State_x0022__x003E__x003C_SortDirection_x003E_None_x003C__x002F_SortDirection_x003E__x003C_BindingVariable_x0020_isNull_x003D__x0022_true_x0022__x0020__x002F__x003E__x003C_Keys_x0020_isList_x003D__x0022_true_x0022__x0020_count_x003D__x0022_0_x0022__x0020__x002F__x003E__x003C_Values_x0020_isList_x003D__x0022_true_x0022__x0020_count_x003D__x0022_0_x0022__x0020__x002F__x003E__x003C_CheckedStates_x0020_isList_x003D__x0022_true_x0022__x0020_count_x003D__x0022_0_x0022__x0020__x002F__x003E__x003C__x002F_StiSerializer_x003E_,_x0032_bf77bebb0464d29b65adac7733f0a34 + ReportParameters,Importe,Importe,,System.String,,False,False,True,False,_x003C__x003F_xml_x0020_version_x003D__x0022_1.0_x0022__x0020_encoding_x003D__x0022_utf-16_x0022__x0020_standalone_x003D__x0022_yes_x0022__x003F__x003E__x003C_StiSerializer_x0020_version_x003D__x0022_1.02_x0022__x0020_type_x003D__x0022_Net_x0022__x0020_application_x003D__x0022_State_x0022__x003E__x003C_SortDirection_x003E_None_x003C__x002F_SortDirection_x003E__x003C_BindingVariable_x0020_isNull_x003D__x0022_true_x0022__x0020__x002F__x003E__x003C_Keys_x0020_isList_x003D__x0022_true_x0022__x0020_count_x003D__x0022_0_x0022__x0020__x002F__x003E__x003C_Values_x0020_isList_x003D__x0022_true_x0022__x0020_count_x003D__x0022_0_x0022__x0020__x002F__x003E__x003C_CheckedStates_x0020_isList_x003D__x0022_true_x0022__x0020_count_x003D__x0022_0_x0022__x0020__x002F__x003E__x003C__x002F_StiSerializer_x003E_,_x0036_a9d4b8f5dba4fa698ca433c967057f1 + ReportParameters,TipoBoleto,TipoBoleto,,System.String,,False,False,True,False,_x003C__x003F_xml_x0020_version_x003D__x0022_1.0_x0022__x0020_encoding_x003D__x0022_utf-16_x0022__x0020_standalone_x003D__x0022_yes_x0022__x003F__x003E__x003C_StiSerializer_x0020_version_x003D__x0022_1.02_x0022__x0020_type_x003D__x0022_Net_x0022__x0020_application_x003D__x0022_State_x0022__x003E__x003C_SortDirection_x003E_None_x003C__x002F_SortDirection_x003E__x003C_BindingVariable_x0020_isNull_x003D__x0022_true_x0022__x0020__x002F__x003E__x003C_Keys_x0020_isList_x003D__x0022_true_x0022__x0020_count_x003D__x0022_0_x0022__x0020__x002F__x003E__x003C_Values_x0020_isList_x003D__x0022_true_x0022__x0020_count_x003D__x0022_0_x0022__x0020__x002F__x003E__x003C_CheckedStates_x0020_isList_x003D__x0022_true_x0022__x0020_count_x003D__x0022_0_x0022__x0020__x002F__x003E__x003C__x002F_StiSerializer_x003E_ EngineV2 @@ -32,10 +32,10 @@ None;Black;2;Solid;False;4;Black Transparent - + Transparent - 0.01,1.81,5.38,2.59 + 0.01,2.81,5.38,2.6 Right @@ -560,10 +560,11 @@ MdwarMEnCGsMtwZr8IkB8P8Dxed6+p2t88EAAAAASUVORK5CYII= Bottom;[191:191:191];1;Solid;False;4;Black Transparent - 0,0,19,1.8 + 0,0,16.8,1.8 Arial,20 + Center 0,0,0,0 Text2 @@ -571,10 +572,11 @@ MdwarMEnCGsMtwZr8IkB8P8Dxed6+p2t88EAAAAASUVORK5CYII= Reimpresión del Boleto [63:63:63] Expression + Center Transparent - 5.8,2.2,1.2,0.6 + 5.8,3.2,1.2,0.6 Arial,7,Bold @@ -590,7 +592,7 @@ MdwarMEnCGsMtwZr8IkB8P8Dxed6+p2t88EAAAAASUVORK5CYII= Transparent - 5.8,3.8,1.2,0.6 + 5.8,4.8,1.2,0.6 Arial,7,Bold @@ -606,7 +608,7 @@ MdwarMEnCGsMtwZr8IkB8P8Dxed6+p2t88EAAAAASUVORK5CYII= Transparent - 5.8,3,1.2,0.6 + 5.8,4,1.2,0.6 Arial,7,Bold @@ -622,7 +624,7 @@ MdwarMEnCGsMtwZr8IkB8P8Dxed6+p2t88EAAAAASUVORK5CYII= Transparent - 10.8,2,1.8,0.6 + 10.8,3,1.8,0.6 Arial,7,Bold @@ -638,7 +640,7 @@ MdwarMEnCGsMtwZr8IkB8P8Dxed6+p2t88EAAAAASUVORK5CYII= Transparent - 10.8,3,1.8,0.6 + 10.8,4,1.8,0.6 Arial,7,Bold @@ -656,7 +658,7 @@ MdwarMEnCGsMtwZr8IkB8P8Dxed6+p2t88EAAAAASUVORK5CYII= 216, 216, 216 191, 191, 191 [216:216:216] - 7,3,3.6,0.6 + 7,4,3.6,0.6 Arial,6 @@ -675,7 +677,7 @@ MdwarMEnCGsMtwZr8IkB8P8Dxed6+p2t88EAAAAASUVORK5CYII= 216, 216, 216 191, 191, 191 [216:216:216] - 7,3.8,3.6,0.6 + 7,4.8,3.6,0.6 Arial,6 @@ -694,7 +696,7 @@ MdwarMEnCGsMtwZr8IkB8P8Dxed6+p2t88EAAAAASUVORK5CYII= 216, 216, 216 191, 191, 191 [216:216:216] - 12.6,2,2.8,0.6 + 12.6,3,2.8,0.6 Arial,6 @@ -713,7 +715,7 @@ MdwarMEnCGsMtwZr8IkB8P8Dxed6+p2t88EAAAAASUVORK5CYII= 216, 216, 216 191, 191, 191 [216:216:216] - 12.6,3,2.8,0.6 + 12.6,4,2.8,0.6 Arial,6 @@ -732,7 +734,7 @@ MdwarMEnCGsMtwZr8IkB8P8Dxed6+p2t88EAAAAASUVORK5CYII= 216, 216, 216 191, 191, 191 [216:216:216] - 7,2.2,3.6,0.6 + 7,3.2,3.6,0.6 Arial,6 @@ -749,7 +751,7 @@ MdwarMEnCGsMtwZr8IkB8P8Dxed6+p2t88EAAAAASUVORK5CYII= Transparent - 16.8,2,2.8,0.8 + 16.8,0,2.8,0.8 Arial,7,Bold @@ -765,7 +767,7 @@ MdwarMEnCGsMtwZr8IkB8P8Dxed6+p2t88EAAAAASUVORK5CYII= Transparent - 16.8,4.8,2.8,0.8 + 16.2,3.4,2.8,0.8 Arial,7,Bold @@ -781,7 +783,7 @@ MdwarMEnCGsMtwZr8IkB8P8Dxed6+p2t88EAAAAASUVORK5CYII= Transparent - 16.8,2.6,2.8,2.4 + 16.8,0.8,2.8,2.4 Arial,26,Bold @@ -797,7 +799,7 @@ MdwarMEnCGsMtwZr8IkB8P8Dxed6+p2t88EAAAAASUVORK5CYII= Transparent - 15.4,5.4,4.2,2.4 + 15.4,3.8,4.2,2.4 Arial,26,Bold @@ -813,7 +815,7 @@ MdwarMEnCGsMtwZr8IkB8P8Dxed6+p2t88EAAAAASUVORK5CYII= Transparent - 1,5.4,2.4,0.6 + 1,6.2,2.4,0.6 Arial,7,Bold @@ -829,7 +831,7 @@ MdwarMEnCGsMtwZr8IkB8P8Dxed6+p2t88EAAAAASUVORK5CYII= Transparent - 1,7.4,2.4,0.6 + 1,8.2,2.4,0.6 Arial,7,Bold @@ -845,7 +847,7 @@ MdwarMEnCGsMtwZr8IkB8P8Dxed6+p2t88EAAAAASUVORK5CYII= Transparent - 1,6.4,2.4,0.6 + 1,7.2,2.4,0.6 Arial,7,Bold @@ -861,7 +863,7 @@ MdwarMEnCGsMtwZr8IkB8P8Dxed6+p2t88EAAAAASUVORK5CYII= Transparent - 10.6,6.4,1.8,0.6 + 10.6,7.2,1.8,0.6 Arial,7,Bold @@ -877,7 +879,7 @@ MdwarMEnCGsMtwZr8IkB8P8Dxed6+p2t88EAAAAASUVORK5CYII= Transparent - 1,8.4,2.4,0.8 + 1,9.2,2.4,0.8 Arial,7,Bold @@ -893,7 +895,7 @@ MdwarMEnCGsMtwZr8IkB8P8Dxed6+p2t88EAAAAASUVORK5CYII= Transparent - 10.6,7.4,1.8,0.8 + 10.6,8.2,1.8,0.8 Arial,7,Bold @@ -909,7 +911,7 @@ MdwarMEnCGsMtwZr8IkB8P8Dxed6+p2t88EAAAAASUVORK5CYII= Transparent - 0,9.6,2.8,0.8 + 0,10.2,2.8,0.8 Arial,8,Bold @@ -924,7 +926,7 @@ MdwarMEnCGsMtwZr8IkB8P8Dxed6+p2t88EAAAAASUVORK5CYII= Transparent - 0,10.2,9.2,0.8 + 0,10.6,9.2,0.8 Arial,7 @@ -939,7 +941,7 @@ MdwarMEnCGsMtwZr8IkB8P8Dxed6+p2t88EAAAAASUVORK5CYII= Transparent - 0,10.6,9.2,0.8 + 0,11,9,0.8 Arial,7 @@ -954,7 +956,7 @@ MdwarMEnCGsMtwZr8IkB8P8Dxed6+p2t88EAAAAASUVORK5CYII= Transparent - 0,11,9.2,0.8 + 0,11.4,9.2,0.8 Arial,7 @@ -969,7 +971,7 @@ MdwarMEnCGsMtwZr8IkB8P8Dxed6+p2t88EAAAAASUVORK5CYII= Transparent - 0,11.4,2.8,0.8 + 0,11.8,2.8,0.8 Arial,7 @@ -986,7 +988,7 @@ MdwarMEnCGsMtwZr8IkB8P8Dxed6+p2t88EAAAAASUVORK5CYII= 216, 216, 216 191, 191, 191 [216:216:216] - 3.4,5.4,11.8,0.6 + 3.4,6.2,11.8,0.6 Arial,6 @@ -1005,7 +1007,7 @@ MdwarMEnCGsMtwZr8IkB8P8Dxed6+p2t88EAAAAASUVORK5CYII= 216, 216, 216 191, 191, 191 [216:216:216] - 3.4,6.4,7,0.6 + 3.4,7.2,7,0.6 Arial,6 @@ -1024,7 +1026,7 @@ MdwarMEnCGsMtwZr8IkB8P8Dxed6+p2t88EAAAAASUVORK5CYII= 216, 216, 216 191, 191, 191 [216:216:216] - 3.4,7.4,7,0.6 + 3.4,8.2,7,0.6 Arial,6 @@ -1043,7 +1045,7 @@ MdwarMEnCGsMtwZr8IkB8P8Dxed6+p2t88EAAAAASUVORK5CYII= 216, 216, 216 191, 191, 191 [216:216:216] - 3.4,8.4,7,0.6 + 3.4,9.2,7,0.6 Arial,6 @@ -1062,7 +1064,7 @@ MdwarMEnCGsMtwZr8IkB8P8Dxed6+p2t88EAAAAASUVORK5CYII= 216, 216, 216 191, 191, 191 [216:216:216] - 12.4,6.4,2.8,0.6 + 12.4,7.2,2.8,0.6 Arial,6 @@ -1081,7 +1083,7 @@ MdwarMEnCGsMtwZr8IkB8P8Dxed6+p2t88EAAAAASUVORK5CYII= 216, 216, 216 191, 191, 191 [216:216:216] - 12.4,7.4,2.8,0.6 + 12.4,8.2,2.8,0.6 Arial,6 @@ -1096,6 +1098,27 @@ MdwarMEnCGsMtwZr8IkB8P8Dxed6+p2t88EAAAAASUVORK5CYII= {TipoBoleto} + + Transparent + + EmptyBrush + EmptyBrush + EmptyBrush + + 14.6,5.6,5.8,4 + ruta:{Ruta} +nombre:{Nombre} +asiento:{Asiento} + + + Arial,8 + Black + Center + BarCode1 + + + Center + @@ -1118,13 +1141,13 @@ MdwarMEnCGsMtwZr8IkB8P8Dxed6+p2t88EAAAAASUVORK5CYII= Stimulsoft.Report.Dll Acuse - 2/24/2024 11:52:49 AM + 3/23/2024 4:56:39 PM 4/17/2023 10:42:46 PM - C:\inetpub\wwwSIGGIT\Empresas\188\Formatos\Boleto2.mrt - 3b1b67f4cc294f4aa946424755834435 + C:\inetpub\WWWSIGIT\Empresas\188\Formatos\Boleto.mrt + 2c6b752a6dbd4147972de3c0d7baa7cb Acuse Centimeters - 2022.4.5.0 + 2023.3.2.0 - - - - + + + + + diff --git a/Bancos/DepositosCaja.aspx.vb b/Bancos/DepositosCaja.aspx.vb index b3150609e..4f69cf666 100644 --- a/Bancos/DepositosCaja.aspx.vb +++ b/Bancos/DepositosCaja.aspx.vb @@ -2,6 +2,8 @@ Option Strict On Imports System.Data +Imports System.IO +Imports System.Net.Http Imports Extensiones Partial Class Bancos_DepositosCaja Inherits ClsPaginas @@ -148,8 +150,9 @@ Partial Class Bancos_DepositosCaja Dim Comision As Decimal = TxtComision.Text.ToDecimal Dim Descuento As Decimal = TxtDescuento.Text.ToDecimal Dim IVA As Decimal = TxtIVA.Text.ToDecimal - Dim ImporteInter As Decimal = TxtComisionIntermediario.Text.ToDecimal - + Dim ImporteInter As Decimal = TxtComisionIntermediario.Text.ToDecimal + + Dim MsgError As String = "Ocurrió un error al realizar los depositos" For Each Gvr As GridViewRow In GvFacturas.Rows If Gvr.FCCheckBox("ChkFactura").Checked Then TotalImporte += Gvr.DataKey("Importe").ToDecimal @@ -184,197 +187,226 @@ Partial Class Bancos_DepositosCaja TotalImporte = TotalImporte - TxtComisionIntermediario.Text.ToDecimal - IVA End If - Dim OcurrioError As Boolean = False - Dim ObjConta As New ClsContabilidad() + Dim OcurrioError As Boolean = False + Dim NuevaCvePrePoliza As Integer + + Dim pdf64 As String = "" + Dim documentos As String = "Los Depósitos se realizaron exitosamente

    " + + Dim CveIEOrigen As Integer = -1 'CajaChica + Dim CveIEDestino As Integer = -1 'Banco + + Dim ObjConta As New ClsContabilidad() Dim ObjBancos As New ClsBancos(ObjConta.IniciaTransacSQL()) - Dim CveIEOrigen As Integer 'CajaChica - Dim CveIEDestino As Integer 'Banco - Dim NuevaCvePrePoliza As Integer - Dim FolioIE As Long = -1 - Dim CveMoneda As Integer = 1 - Dim TipoCambio As Decimal = 1 - Dim Fecha As Date = TxtFecha.Text.ToDate - Dim drOrigen As DataRow = GlobalDTBancosCuentas(UsuarioActual.CveUsuario, CveCuenta:=DdlCajaChica.SelectedValue.ToEntero, CveEmpresa:=UsuarioActual.CveEmpresa).FiltroPrimero("") - Dim drDestino As DataRow = GlobalDTBancosCuentas(UsuarioActual.CveUsuario, CveCuenta:=DdlCuentaDeposito.SelectedValue.ToEntero, CveEmpresa:=UsuarioActual.CveEmpresa).FiltroPrimero("") - Dim CveSubProyecto As Integer = DdlSubProyectos.SelectedValue.ToEntero - Dim CveClasificacion As Integer = -1 - - Dim CveSubProyectoComision As Integer - Dim CveClasificacionComision As Integer - - Dim CveSubProyectoDescuento As Integer - Dim CveClasificacionDescuento As Integer - - Dim documentos As String = "Los Depósitos se realizaron exitosamente

    " - Dim imprimirFolios As String = "" - Dim CveSubProyectoIntermediario As Integer - Dim CveClasificacionIntermediario As Integer - Dim CveProveedorIntermediario As Integer = -1 - - If drOrigen IsNot Nothing Then - CveMoneda = drOrigen("CveMoneda").ToString.ToEntero - End If - - If drDestino IsNot Nothing Then - CveMoneda = drDestino("CveMoneda").ToString.ToEntero - End If - - NuevaCvePrePoliza = ObjConta.AddPrePolizas("DepCaja", 13, TotalImportePrePoliza, TotalImportePrePoliza, CveMoneda, Fecha, "Depósito Bancario", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveTipoPoliza:=1) - - Dim IntermediarioFactura As Boolean = False - If UsuarioActual.CveEmpresa = 145 Then IntermediarioFactura = True - If ChkIntermediario.Checked Then - - CveSubProyectoIntermediario = DdlSubProyectoIntermediario.SelectedValue.ToEntero - CveClasificacionIntermediario = DdlClasificacionIntermediario.SelectedValue.ToEntero - CveProveedorIntermediario = DdlProveedorIntermediario.SelectedValue.ToEntero - - If UsuarioActual.Empresa.Funcionalidad(558) = "1" Then ' empresa llantera - If Not ObjConta.AddPrePolizasDetalle(NuevaCvePrePoliza, False, TotalImporte, TotalImporte, 95, DdlClasificacionIntermediario.SelectedItem.Text, DdlClasificacionIntermediario.SelectedItem.Text, CveClasificacion:=CveClasificacionIntermediario, CveSubProyecto:=CveSubProyectoIntermediario, CveProveedor:=CveProveedorIntermediario, CveCuenta:=57619) Then - OcurrioError = True - End If - If Not ObjConta.AddPrePolizasDetalle(NuevaCvePrePoliza, True, TotalImporte, TotalImporte, 95, DdlClasificacionIntermediario.SelectedItem.Text, DdlClasificacionIntermediario.SelectedItem.Text, CveClasificacion:=CveClasificacionIntermediario, CveSubProyecto:=CveSubProyectoIntermediario, CveProveedor:=CveProveedorIntermediario, CveCuenta:=57619) Then - OcurrioError = True - End If + Try + Dim FolioIE As Long = -1 + Dim CveMoneda As Integer = 1 + Dim TipoCambio As Decimal = 1 + Dim Fecha As Date = TxtFecha.Text.ToDate + Dim drOrigen As DataRow = GlobalDTBancosCuentas(UsuarioActual.CveUsuario, CveCuenta:=DdlCajaChica.SelectedValue.ToEntero, CveEmpresa:=UsuarioActual.CveEmpresa).FiltroPrimero("") + Dim drDestino As DataRow = GlobalDTBancosCuentas(UsuarioActual.CveUsuario, CveCuenta:=DdlCuentaDeposito.SelectedValue.ToEntero, CveEmpresa:=UsuarioActual.CveEmpresa).FiltroPrimero("") + Dim CveSubProyecto As Integer = DdlSubProyectos.SelectedValue.ToEntero + Dim CveClasificacion As Integer = -1 + + Dim CveSubProyectoComision As Integer + Dim CveClasificacionComision As Integer + + Dim CveSubProyectoDescuento As Integer + Dim CveClasificacionDescuento As Integer + + + Dim imprimirFolios As String = "" + Dim CveSubProyectoIntermediario As Integer + Dim CveClasificacionIntermediario As Integer + Dim CveProveedorIntermediario As Integer = -1 + + If drOrigen IsNot Nothing Then + CveMoneda = drOrigen("CveMoneda").ToString.ToEntero End If - If Not IntermediarioFactura Then ' si factura no se manda al gasto sino se disminuye solo lo depositado - If Not ObjConta.AddPrePolizasDetalle(NuevaCvePrePoliza, False, ImporteInter, ImporteInter, 51, DdlClasificacionIntermediario.SelectedItem.Text, DdlClasificacionIntermediario.SelectedItem.Text, CveClasificacion:=CveClasificacionIntermediario, CveSubProyecto:=CveSubProyectoIntermediario) Then - OcurrioError = True - End If + If drDestino IsNot Nothing Then + CveMoneda = drDestino("CveMoneda").ToString.ToEntero End If - If IVA <> 0 Then - If Not OcurrioError AndAlso Not ObjConta.AddPrePolizasDetalle(NuevaCvePrePoliza, False, IVA, IVA, 14, DdlClasificacionIntermediario.SelectedItem.Text, DdlClasificacionIntermediario.SelectedItem.Text, CveClasificacion:=CveClasificacionIntermediario, CveSubProyecto:=CveSubProyectoIntermediario, PorcentajeImpuesto:=0.16D) Then - OcurrioError = True - End If - End If - - End If - Dim CveTransaccionBanco As Integer = 13 - - If TotalImporte < 0 Then 'que es una devolución, entonces como es negativo, se cambia el concetpo de bancos, por condición de trigger - CveTransaccionBanco = 6 - End If + NuevaCvePrePoliza = ObjConta.AddPrePolizas("DepCaja", 13, TotalImportePrePoliza, TotalImportePrePoliza, CveMoneda, Fecha, "Depósito Bancario", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveTipoPoliza:=1) - 'código temporal, para claudia y toñita, monge, anadelia, alba,patricia - If UsuarioActual.CveUsuario.Contiene(1937, 2452, 3358, 3033, 2897, 2560) Then - FolioIE = TxtFolio.Text.ToEntero - End If - - If FolioIE <= 0 Then - 'Entrada a bancos - FolioIE = ObjBancos.GetNextFolio(DdlCuentaDeposito.SelectedValue.ToEntero, CveTransaccionBanco) - End If + Dim IntermediarioFactura As Boolean = False + If UsuarioActual.CveEmpresa = 145 Then IntermediarioFactura = True + If ChkIntermediario.Checked Then - If CveSubProyecto <= 0 Then 'sino se seleccionó del combo, busca en el listado el primero + CveSubProyectoIntermediario = DdlSubProyectoIntermediario.SelectedValue.ToEntero + CveClasificacionIntermediario = DdlClasificacionIntermediario.SelectedValue.ToEntero + CveProveedorIntermediario = DdlProveedorIntermediario.SelectedValue.ToEntero - For Each Gvr As GridViewRow In GvFacturas.Rows - If Gvr.FCCheckBox("ChkFactura").Checked Then - CveSubProyecto = Gvr.DataKey("CveSubProyecto").ToEntero - Exit For + If UsuarioActual.Empresa.Funcionalidad(558) = "1" Then ' empresa llantera + If Not ObjConta.AddPrePolizasDetalle(NuevaCvePrePoliza, False, TotalImporte, TotalImporte, 95, DdlClasificacionIntermediario.SelectedItem.Text, DdlClasificacionIntermediario.SelectedItem.Text, CveClasificacion:=CveClasificacionIntermediario, CveSubProyecto:=CveSubProyectoIntermediario, CveProveedor:=CveProveedorIntermediario, CveCuenta:=57619) Then + OcurrioError = True + End If + If Not ObjConta.AddPrePolizasDetalle(NuevaCvePrePoliza, True, TotalImporte, TotalImporte, 95, DdlClasificacionIntermediario.SelectedItem.Text, DdlClasificacionIntermediario.SelectedItem.Text, CveClasificacion:=CveClasificacionIntermediario, CveSubProyecto:=CveSubProyectoIntermediario, CveProveedor:=CveProveedorIntermediario, CveCuenta:=57619) Then + OcurrioError = True + End If End If - Next - End If - If FolioIE <= 0 Then - OcurrioError = True - End If - CveIEOrigen = ObjBancos.AddBancos_IE(DdlCuentaDeposito.SelectedValue.ToEntero, CveTransaccionBanco, Fecha, FolioIE.ToString, "Depósito Bancario", TotalImporte, CveMoneda, 1, TxtObservaciones.Text, "", False, False, -1, NuevaCvePrePoliza, "-1", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveProveedorIntermediario:=CveProveedorIntermediario) - - documentos += String.Format("Depósito: {1}    
    ", CveIEOrigen, FolioIE) - - If Not OcurrioError AndAlso ObjConta.AddPrePolizasDetalle(NuevaCvePrePoliza, False, TotalImporte, TotalImporte * TipoCambio, 30, "Depósito Bancario", "Depósito Bancario", CveClasificacion:=CveClasificacion, CveSubProyecto:=CveSubProyecto, CveIE:=CveIEOrigen) Then - - If ChkFaltante.Checked Then - CveSubProyectoComision = DdlSubProyectoDeposito.SelectedValue.ToEntero - CveClasificacionComision = DdlClasificacion.SelectedValue.ToEntero - If Comision <> 0 Then - If Not ObjConta.AddPrePolizasDetalle(NuevaCvePrePoliza, True, Comision, Comision * TipoCambio, 78, DdlClasificacion.SelectedItem.Text, DdlClasificacion.SelectedItem.Text, CveClasificacion:=CveClasificacionComision, CveSubProyecto:=CveSubProyectoComision) Then - OcurrioError = True - End If + If Not IntermediarioFactura Then ' si factura no se manda al gasto sino se disminuye solo lo depositado + If Not ObjConta.AddPrePolizasDetalle(NuevaCvePrePoliza, False, ImporteInter, ImporteInter, 51, DdlClasificacionIntermediario.SelectedItem.Text, DdlClasificacionIntermediario.SelectedItem.Text, CveClasificacion:=CveClasificacionIntermediario, CveSubProyecto:=CveSubProyectoIntermediario) Then + OcurrioError = True + End If End If - End If - - If Not OcurrioError AndAlso ChkDescuento.Checked Then - CveSubProyectoDescuento = DdlSubProyectoDescuento.SelectedValue.ToEntero - CveClasificacionDescuento = DdlClasificacionDescuento.SelectedValue.ToEntero - - If Not ObjConta.AddPrePolizasDetalle(NuevaCvePrePoliza, False, Descuento, Descuento * TipoCambio, 51, DdlClasificacionDescuento.SelectedItem.Text, DdlClasificacionDescuento.SelectedItem.Text & " " & DdlPersonal.SelectedItem.Text, CveClasificacion:=CveClasificacionDescuento, CveSubProyecto:=CveSubProyectoDescuento, CvePersonal:=DdlPersonal.SelectedValue.ToEntero) Then - OcurrioError = True - End If + + If IVA <> 0 Then + If Not OcurrioError AndAlso Not ObjConta.AddPrePolizasDetalle(NuevaCvePrePoliza, False, IVA, IVA, 14, DdlClasificacionIntermediario.SelectedItem.Text, DdlClasificacionIntermediario.SelectedItem.Text, CveClasificacion:=CveClasificacionIntermediario, CveSubProyecto:=CveSubProyectoIntermediario, PorcentajeImpuesto:=0.16D) Then + OcurrioError = True + End If + End If + End If - Else - OcurrioError = True - End If - If Not OcurrioError Then - Dim i As Integer = 0 - For Each Gvr As GridViewRow In GvFacturas.Rows + Dim CveTransaccionBanco As Integer = 13 - If Gvr.FCCheckBox("ChkFactura").Checked Then - 'Datos de las Nuevas PrePolizas - 'Entrada a Bancos + If TotalImporte < 0 Then 'que es una devolución, entonces como es negativo, se cambia el concetpo de bancos, por condición de trigger + CveTransaccionBanco = 6 + End If - Dim Importe As Decimal = Gvr.DataKey("Importe").ToDecimal - Dim SerieFolio As String = Gvr.DataKey("SerieFolio").ToString + 'código temporal, para claudia y toñita, monge, anadelia, alba,patricia + If UsuarioActual.CveUsuario.Contiene(1937, 2452, 3358, 3033, 2897, 2560) Then + FolioIE = TxtFolio.Text.ToEntero + End If - 'si es el primero, se descuenta la "comisión" - If i = 0 AndAlso IntermediarioFactura Then - Importe = Importe - ImporteInter - i += 1 - End If + If FolioIE <= 0 Then + 'Entrada a bancos + FolioIE = ObjBancos.GetNextFolio(DdlCuentaDeposito.SelectedValue.ToEntero, CveTransaccionBanco) + End If - 'Datos de las Prepolizas A Cancelar - Dim CveIE As Integer = Gvr.DataKey("CveIE").ToEntero - Dim CveVenta As Integer = Gvr.DataKey("CveVenta").ToEntero - Dim CveCuentaBancaria As Integer = Gvr.DataKey("CveCuenta").ToEntero - Dim tCveSubProyecto As Integer = Gvr.DataKey("CveSubProyecto").ToEntero + If CveSubProyecto <= 0 Then 'sino se seleccionó del combo, busca en el listado el primero - FolioIE = ObjBancos.GetNextFolio(CveCuentaBancaria, 2) - If Not FolioIE > 0 Then - OcurrioError = True + For Each Gvr As GridViewRow In GvFacturas.Rows + If Gvr.FCCheckBox("ChkFactura").Checked Then + CveSubProyecto = Gvr.DataKey("CveSubProyecto").ToEntero Exit For End If - CveIEDestino = ObjBancos.AddBancos_IE(CveCuentaBancaria, 2, Fecha, FolioIE.ToString, String.Format("Depósito Bancario: {0}", SerieFolio), Importe, CveMoneda, 1, TxtObservaciones.Text, "", False, False, -1, NuevaCvePrePoliza, "-1", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa) + Next + End If - If Not OcurrioError AndAlso Not ObjConta.AddPrePolizasDetalle(NuevaCvePrePoliza, True, Importe, Importe * TipoCambio, 30, SerieFolio, String.Format("Depósito Bancario: {0}", SerieFolio), CveClasificacion:=CveClasificacion, CveSubProyecto:=tCveSubProyecto, CveVenta:=CveVenta, CveIE:=CveIEDestino) Then - OcurrioError = True - Exit For - End If - - 'Asignamos la cuenta Deposito - If Not OcurrioError AndAlso Not ObjBancos.UpdateBancos_IECuentaDeposito(CveIEOrigen, CveIE) Then - OcurrioError = True - Exit For - End If - End If - Next - Dim StrEncript As String = Encripta($"OP=DC&CveIE={CveIEOrigen}&CuentaCaja={DdlCajaChica.SelectedItem.Text}&CuentaDepo={DdlCuentaDeposito.SelectedItem.Text}") - - documentos += String.Format("
    Imprimir {1}

    ", StrEncript, "Depósito Bancario") - - End If - - If Not OcurrioError AndAlso ObjConta.ValidacionesPrePoliza(NuevaCvePrePoliza, UsuarioActual, Opcion:=1) Then - If ObjConta.ValorPolizaDescuadre > 0 Then - GuardaLogAD($"Bancos/DepositoCaja | Error{ObjConta.MensajePolizaDescuadre} Diferencia{ObjConta.ValorDiferencia} | CvePrePoliza:{NuevaCvePrePoliza}", "LogPrePolizas") + If FolioIE <= 0 Then OcurrioError = True End If - End If + CveIEOrigen = ObjBancos.AddBancos_IE(DdlCuentaDeposito.SelectedValue.ToEntero, CveTransaccionBanco, Fecha, FolioIE.ToString, "Depósito Bancario", TotalImporte, CveMoneda, 1, TxtObservaciones.Text, "", False, False, -1, NuevaCvePrePoliza, "-1", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveProveedorIntermediario:=CveProveedorIntermediario) + + documentos += String.Format("Depósito: {1}    
    ", CveIEOrigen, FolioIE) + + If Not OcurrioError AndAlso ObjConta.AddPrePolizasDetalle(NuevaCvePrePoliza, False, TotalImporte, TotalImporte * TipoCambio, 30, "Depósito Bancario", "Depósito Bancario", CveClasificacion:=CveClasificacion, CveSubProyecto:=CveSubProyecto, CveIE:=CveIEOrigen) Then + + If ChkFaltante.Checked Then + CveSubProyectoComision = DdlSubProyectoDeposito.SelectedValue.ToEntero + CveClasificacionComision = DdlClasificacion.SelectedValue.ToEntero + If Comision <> 0 Then + If Not ObjConta.AddPrePolizasDetalle(NuevaCvePrePoliza, True, Comision, Comision * TipoCambio, 78, DdlClasificacion.SelectedItem.Text, DdlClasificacion.SelectedItem.Text, CveClasificacion:=CveClasificacionComision, CveSubProyecto:=CveSubProyectoComision) Then + OcurrioError = True + End If + End If + End If + + If Not OcurrioError AndAlso ChkDescuento.Checked Then + CveSubProyectoDescuento = DdlSubProyectoDescuento.SelectedValue.ToEntero + CveClasificacionDescuento = DdlClasificacionDescuento.SelectedValue.ToEntero + + If Not ObjConta.AddPrePolizasDetalle(NuevaCvePrePoliza, False, Descuento, Descuento * TipoCambio, 51, DdlClasificacionDescuento.SelectedItem.Text, DdlClasificacionDescuento.SelectedItem.Text & " " & DdlPersonal.SelectedItem.Text, CveClasificacion:=CveClasificacionDescuento, CveSubProyecto:=CveSubProyectoDescuento, CvePersonal:=DdlPersonal.SelectedValue.ToEntero) Then + OcurrioError = True + End If + End If + Else + OcurrioError = True + End If + If Not OcurrioError Then + Dim i As Integer = 0 + For Each Gvr As GridViewRow In GvFacturas.Rows + + If Gvr.FCCheckBox("ChkFactura").Checked Then + 'Datos de las Nuevas PrePolizas + 'Entrada a Bancos + + Dim Importe As Decimal = Gvr.DataKey("Importe").ToDecimal + Dim SerieFolio As String = Gvr.DataKey("SerieFolio").ToString + + 'si es el primero, se descuenta la "comisión" + If i = 0 AndAlso IntermediarioFactura Then + Importe = Importe - ImporteInter + i += 1 + End If + + 'Datos de las Prepolizas A Cancelar + Dim CveIE As Integer = Gvr.DataKey("CveIE").ToEntero + Dim CveVenta As Integer = Gvr.DataKey("CveVenta").ToEntero + Dim CveCuentaBancaria As Integer = Gvr.DataKey("CveCuenta").ToEntero + Dim tCveSubProyecto As Integer = Gvr.DataKey("CveSubProyecto").ToEntero + + FolioIE = ObjBancos.GetNextFolio(CveCuentaBancaria, 2) + If Not FolioIE > 0 Then + OcurrioError = True + Exit For + End If + CveIEDestino = ObjBancos.AddBancos_IE(CveCuentaBancaria, 2, Fecha, FolioIE.ToString, String.Format("Depósito Bancario: {0}", SerieFolio), Importe, CveMoneda, 1, TxtObservaciones.Text, "", False, False, -1, NuevaCvePrePoliza, "-1", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa) + + If Not OcurrioError AndAlso Not ObjConta.AddPrePolizasDetalle(NuevaCvePrePoliza, True, Importe, Importe * TipoCambio, 30, SerieFolio, String.Format("Depósito Bancario: {0}", SerieFolio), CveClasificacion:=CveClasificacion, CveSubProyecto:=tCveSubProyecto, CveVenta:=CveVenta, CveIE:=CveIEDestino) Then + OcurrioError = True + Exit For + End If + + 'Asignamos la cuenta Deposito + If Not OcurrioError AndAlso Not ObjBancos.UpdateBancos_IECuentaDeposito(CveIEOrigen, CveIE) Then + OcurrioError = True + Exit For + End If + End If + Next + Dim StrEncript As String = Encripta($"OP=DC&CveIE={CveIEOrigen}&CuentaCaja={DdlCajaChica.SelectedItem.Text}&CuentaDepo={DdlCuentaDeposito.SelectedItem.Text}") + + documentos += String.Format("
    Imprimir {1}

    ", StrEncript, "Depósito Bancario") + + End If + + If Not OcurrioError AndAlso ObjConta.ValidacionesPrePoliza(NuevaCvePrePoliza, UsuarioActual, Opcion:=1) Then + If ObjConta.ValorPolizaDescuadre > 0 Then + GuardaLogAD($"Bancos/DepositoCaja | Error{ObjConta.MensajePolizaDescuadre} Diferencia{ObjConta.ValorDiferencia} | CvePrePoliza:{NuevaCvePrePoliza}", "LogPrePolizas") + OcurrioError = True + End If + End If + + If Not OcurrioError Then + documentos += String.Format("Prepóliza

    ", NuevaCvePrePoliza) + End If + + Catch ex As Exception + OcurrioError = True + OnError("Ocurrió un error al procesar los datos", ex) + End Try If OcurrioError Then ObjConta.RollBack() - Alert("Ocurrio un error al realizar los depositos", TipoMensaje.MsgError) + Alert(MsgError, TipoMensaje.MsgError) Else - ObjConta.Commit() - documentos += String.Format("Prepóliza

    ", NuevaCvePrePoliza) - + + If UsuarioActual.Empresa.Funcionalidad(109) = "1" Then + Try + pdf64 = ImpresionDirectaPDF(CveIEOrigen, NuevaCvePrePoliza) + Catch ex As Exception + pdf64 = "" + GuardaLog(ex.ToString()) + End Try + + If Not String.IsNullOrEmpty(pdf64) Then + RegistraScript($"impresionBase64('{pdf64}');", "Imprimir") + Else + Alert("No se pudo imprimir el pdf", TipoMensaje.MsgAdvertencia) + End If + End If + Alert(documentos.ToString) CargaDatos() End If + TxtComision.Text = "" TxtDescuento.Text = "" TxtIVA.Text = "" @@ -462,5 +494,80 @@ Partial Class Bancos_DepositosCaja DDlMesesSinIntereses.Visible = False End If DDlMesesSinIntereses.SelectedValue = "-1" - End Sub + End Sub + + Private Function ImpresionDirectaPDF(CveIEOrigen As Integer, CvePrePoliza As Integer) As String + + Dim PDFPago As Byte() = Nothing + Dim PDFPrePoliza As Byte() = Nothing + + Dim ParametrosPago As String = Encripta($"OP=DC&CveIE={CveIEOrigen}&CuentaCaja={DdlCajaChica.SelectedItem.Text}&CuentaDepo={DdlCuentaDeposito.SelectedItem.Text}&TipoPago={DdlTipoPago.SelectedItem.Text}") + Dim ParametrosPrePoliza As String = Encripta($"OP=PREPO&CvePrePoliza={CvePrePoliza}") + + Try + PDFPago = DescargarPDF(ParametrosPago, UsuarioActual.CveEmpresa, UsuarioActual.CveUsuario) + If PDFPago IsNot Nothing Then + PDFPrePoliza = DescargarPDF(ParametrosPrePoliza, UsuarioActual.CveEmpresa, UsuarioActual.CveUsuario) + End If + + Catch ex As Exception + GuardaLog(ex.ToString()) + + PDFPago = Nothing + PDFPrePoliza = Nothing + End Try + + If PDFPago IsNot Nothing AndAlso PDFPrePoliza IsNot Nothing Then + Dim pdf64 As String = "" + 'UNIFICAR LOS 2 PDF + Using ms As New MemoryStream + Using pdfdoc As New iText.Kernel.Pdf.PdfDocument(New iText.Kernel.Pdf.PdfWriter(ms)) + pdfdoc.InitializeOutlines() + + Dim docPago As New iText.Kernel.Pdf.PdfDocument(New iText.Kernel.Pdf.PdfReader(New MemoryStream(PDFPago))) + docPago.CopyPagesTo(1, docPago.GetNumberOfPages(), pdfdoc) + docPago.Close() + + Dim docPrePoliza As New iText.Kernel.Pdf.PdfDocument(New iText.Kernel.Pdf.PdfReader(New MemoryStream(PDFPrePoliza))) + docPrePoliza.CopyPagesTo(1, docPrePoliza.GetNumberOfPages(), pdfdoc) + docPrePoliza.Close() + + pdfdoc.Close() + End Using + pdf64 = Convert.ToBase64String(ms.ToArray()) + End Using + + Return pdf64 + Else + Return "" + End If + + End Function + Private Function DescargarPDF(Parametros As String, CveEmpresa As Integer, CveUsuarioCreo As Integer, Optional GetBytes As Boolean = True, Optional strURLHOST As String = "") As Byte() + + If String.IsNullOrEmpty(strURLHOST) Then + strURLHOST = String.Format("{0}://{1}:{2}", HttpContext.Current.Request.Url.Scheme, HttpContext.Current.Request.Url.Host, HttpContext.Current.Request.Url.Port) + End If + + Dim Url As New Uri(String.Format("{0}/Compras/PopUpVerFactura.aspx?P={1}", strURLHOST, Parametros)) + Dim File As Byte() = Nothing + Try + Using httpClient As New HttpClient() + httpClient.Timeout = New TimeSpan(0, 0, 40) + Using request As New HttpRequestMessage(HttpMethod.Get, Url) + request.Headers.Add("ADSToken", Encripta(String.Format("CVEEMPRESA={0}&TICKS={1}&CveUsuario={2}", CveEmpresa, DateTime.UtcNow.Ticks, CveUsuarioCreo))) + Dim response = httpClient.SendAsync(request).Result + If GetBytes AndAlso response.StatusCode = Net.HttpStatusCode.OK Then + File = response.Content.ReadAsByteArrayAsync().Result + End If + End Using + End Using + Catch ex As Exception + File = Nothing + OnError("Ocurrió un error al descargar la factura", ex) + End Try + + Return File + End Function + End Class \ No newline at end of file diff --git a/Compras/PopUpVerFactura.aspx.vb b/Compras/PopUpVerFactura.aspx.vb index e06c25bd5..2eadec52f 100644 --- a/Compras/PopUpVerFactura.aspx.vb +++ b/Compras/PopUpVerFactura.aspx.vb @@ -1418,7 +1418,11 @@ Partial Class PopUpVerFactura 'IMPRIME DEPOSITOS CAJA If UrlParametros("OP").ToString = "DC" Then If UrlParametros("CVEIE") IsNot Nothing AndAlso UrlParametros("CVEIE").ToString.ToEntero > 0 Then - CargaDepositosCaja(UrlParametros("CVEIE").ToString.ToEntero, UrlParametros("CUENTACAJA").ToString, UrlParametros("CUENTADEPO").ToString) + Dim TipoPago As String = "" + If UrlParametros("TIPOPAGO") IsNot Nothing Then + TipoPago = UrlParametros("TIPOPAGO").ToString() + End If + CargaDepositosCaja(UrlParametros("CVEIE").ToString.ToEntero, UrlParametros("CUENTACAJA").ToString, UrlParametros("CUENTADEPO").ToString, TipoPago) End If End If @@ -5261,22 +5265,25 @@ Partial Class PopUpVerFactura #End Region #Region "OP = 'DC' - DEPOSITOS CAJA" - Private Sub CargaDepositosCaja(CveIE As Integer, CuentaCaja As String, CuentaDeposito As String) + Private Sub CargaDepositosCaja(CveIE As Integer, CuentaCaja As String, CuentaDeposito As String, TipoPago As String) Dim Archivo As New System.IO.FileInfo(String.Format("{0}Formatos/DepositoCaja.rdlc", UsuarioActual.Empresa.Ruta)) + Dim Tabla As DataTable = Nothing + Dim ObjIE As New ClsBancos() - Dim Tabla As DataTable - ObjIE.GetBancosIEMovimientosDepositos(CveIE, UsuarioActual.CveEmpresa) + If ObjIE.GetBancosIEMovimientosDepositos(CveIE, UsuarioActual.CveEmpresa) Then + Tabla = ObjIE.DtResultados.Copy() + End If + ObjIE.Dispose() - - If ObjIE.DtResultados IsNot Nothing AndAlso ObjIE.DtResultados.Rows.Count > 0 Then - Tabla = ObjIE.DtResultados + If Tabla IsNot Nothing AndAlso Tabla.Rows.Count > 0 Then Dim params As New List(Of ReportParameter) params.Add(New ReportParameter("Fecha", NowADS().ToDateTime.ToString)) - params.Add(New ReportParameter("FechaIE", ObjIE.DtResultados(0)("FechaDocumento").ToString.ToDate.ToShortDateString)) + params.Add(New ReportParameter("FechaIE", Tabla(0)("FechaDocumento").ToString.ToDate.ToShortDateString)) params.Add(New ReportParameter("CuentaCaja", CuentaCaja)) params.Add(New ReportParameter("CuentaDeposito", CuentaDeposito)) + params.Add(New ReportParameter("TipoPago", TipoPago)) If Archivo.Exists Then params.Add(New ReportParameter("UsuarioImprimio", UsuarioActual.Nombre)) @@ -5287,11 +5294,6 @@ Partial Class PopUpVerFactura End If End If - - - - ObjIE.Dispose() - End Sub #End Region diff --git a/Empresas/Grales/Formatos/DepositoCaja.rdlc b/Empresas/Grales/Formatos/DepositoCaja.rdlc index e86dcb813..1295c3fbc 100644 --- a/Empresas/Grales/Formatos/DepositoCaja.rdlc +++ b/Empresas/Grales/Formatos/DepositoCaja.rdlc @@ -12,7 +12,10 @@ 0.96697in - 4.66607in + 3.81815in + + + 0.98425in 0.84873in @@ -158,6 +161,50 @@ + + + + true + true + + + + + Tipo Pago + + + + + + + Textbox9 + + + + DimGray + + 1pt + + + DimGray + + 1pt + + 2pt + 2pt + 2pt + 2pt + + + + @@ -346,6 +393,49 @@ + + + + true + true + + + + + =Fields!TipoPago.Value + + + + + + + TipoPago + + + + DimGray + + 1pt + + + DimGray + + 1pt + + 2pt + 2pt + 2pt + 2pt + + + + @@ -401,6 +491,7 @@ + @@ -417,7 +508,7 @@ DataSet1 1.43975in 0.43in - 7.75822in + 7.89456in @@ -876,11 +967,99 @@ 2pt + + true + true + + + + + Tipo Pago: + + + + + + + + + + + + + + + + Textbox12 + 2.96905cm + 12.49038cm + 0.53299cm + 2.14725cm + 13 + + =(Parameters!TipoPago.Value = "") + + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + =Parameters!TipoPago.Value + + + + + + + Textbox12 + 2.96905cm + 15.61669cm + 0.53299cm + 3.76632cm + 14 + + + 2pt + 2pt + 2pt + 2pt + + 5.34917cm + + + + + + Textbox3 + + + DimGray + 2pt + 2pt + 2pt + 2pt + + + 3 + + + + + + + + 0.52063cm + + + + + true + true + + + + + Clave + + + + + + + Textbox175 + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + + + + + Concepto + + + + + + + Textbox34 + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + + + + + Importe + + + + + + + + + + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + 0.4148cm + + + + + true + true + + + + + =Fields!Codigo.Value + + + + + + + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Fields!Concepto.Value + + + + + + + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Fields!Importe.Value + + + + + + + Importe + + + + + + + + + 2pt + 2pt + 2pt + 2pt + es-MX + + + + + + + + 0.43657cm + + + + + true + true + + + + + + + + + + + + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + TOTAL PERCEPCIONES + + + + + + + Textbox226 + + + + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =SUM(Fields!Importe.Value) + + + + + + + Textbox227 + + + + + + 2pt + 2pt + 2pt + 2pt + es-MX + + + + + + + + 0.07938cm + + + + + true + true + + + + + + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + + + + + + + + + + + + After + + + After + + + + + + Before + + + Before + + + + DsOC + 7.70215cm + 0.15979cm + 2.05138cm + 10.0953cm + + + + + + + + + 1.69328cm + + + 6.23048cm + + + 1.87118cm + + + + + 0.6cm + + + + + true + true + + + + + DEDUCCIONES + + + + + + + Textbox6 + + + DimGray + 2pt + 2pt + 2pt + 2pt + + + 3 + + + + + + + + 0.52063cm + + + + + true + true + + + + + Clave + + + + + + + Textbox175 + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + + + + + Concepto + + + + + + + Textbox34 + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + + + + + Importe + + + + + + + + + + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + 0.4148cm + + + + + true + true + + + + + =Fields!Codigo.Value + + + + + + + + + + + + + Black + + + Black + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Fields!Concepto.Value + + + + + + + + + + + + + Black + + + Black + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Fields!Importe.Value + + + + + + + Textbox214 + + + + + + + + + + Black + + + Black + + 2pt + 2pt + 2pt + 2pt + es-MX + + + + + + + + 0.44125cm + + + + + true + true + + + + + + + + + + + + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + TOTAL DEDUCCIONES + + + + + + + Textbox229 + + + + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Parameters!ImporteDeducciones.Value + + + + + + + Textbox4 + + + + + + 2pt + 2pt + 2pt + 2pt + es-MX + + + + + + + + 0.07938cm + + + + + true + true + + + + + + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + + + + + + + + + + + + After + + + After + + + + + + Before + + + Before + + + + DataSet1 + 7.70435cm + 10.2551cm + 2.05606cm + 9.79494cm + 1 + + + + + + true + true + + + + + HECTOR ADRIAN DIAZ CASTILLO + + + + + + + + + DICH7409082KA + + + + + + + + + Registro Patronal + + + + + + + + + =Parameters!RegistroPatronal.Value + + + + + + + + + 601 Régimen General de Ley Personas Morales +Lugar de expedición: 83190 Hermosillo + + + + + + + Textbox2 + 0.12976cm + 4.80311cm + 2.24428cm + 8.10317cm + 2 + + + 2pt + 2pt + 2pt + 2pt + + + + + + + 3.71238cm + + + 7.38712cm + + + 4.59571cm + + + 4.19504cm + + + + + 0.38834cm + + + + + true + true + + + + + + + + + + + + Textbox232 + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + SubTotal + + + + + + + Textbox124 + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Parameters!SubTotal.Value + + + + + + + Textbox126 + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + 0.44125cm + + + + + true + true + + + + + Folio Fiscal + + + + + + + Textbox120 + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Parameters!FolioFiscal.Value + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + Descuentos + + + + + + + Textbox130 + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Parameters!Descuentos.Value + + + + + + + Textbox131 + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + 0.44125cm + + + + + true + true + + + + + No. Certificado del SAT + + + + + + + Textbox128 + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Parameters!CertificadoSAT.Value + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + Retenciones + + + + + + + Textbox134 + + + + Black + + 1pt + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Parameters!ISR.Value + + + + + + + Textbox135 + + + + + + 2pt + 2pt + 2pt + 2pt + es-MX + + + + + + + + 0.44125cm + + + + + true + true + + + + + Fecha de certificación + + + + + + + Textbox132 + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Parameters!FechaCertificacion.Value + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + TOTAL + + + + + + + Textbox138 + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Parameters!Total.Value + + + + + + + Textbox139 + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + + + + + + + + + + + + + + + + + + DsOC + 9.86624cm + 0.15979cm + 1.71209cm + 19.89025cm + 3 + + + + + + Embedded + Logo + FitProportional + 0.19855cm + 0.33984cm + 2.01901cm + 3.94122cm + 4 + + + + + + + + + 3.31842cm + + + 3.75478cm + + + + + 0.51659cm + + + + + true + true + + + + + Recibo Nómina + + + + + + + Textbox218 + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Parameters!ReciboNomina.Value + + + + + + + Textbox216 + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + 0.50702cm + + + + + true + true + + + + + Serie + + + + + + + Textbox220 + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Parameters!Serie.Value + + + + + + + Textbox221 + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + 0.6cm + + + + + true + true + + + + + Fecha + + + + + + + Textbox223 + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Parameters!Fecha.Value + + + + + + + Textbox224 + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + 0.6cm + + + + + true + true + + + + + Tipo de comprobante + + + + + + + Textbox219 + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + N + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + + + + + + + + + + + + + + + + DsOC + 0.05745cm + 12.97684cm + 2.22361cm + 7.0732cm + 5 + + + + + + + + + 11.53918cm + + + 2.5cm + + + 5.85106cm + + + + + 0.6cm + + + + + true + true + + + + + Recibí de la empresa arriba mencionada, la cantidad neta a que este documento, se refiere, estando conforme con las Percepciones y deducciones que en el aparecen especificados. + + + + + + 2pt + 2pt + 2pt + 2pt + + + 2 + + + + + + + true + true + + + + + + + + + Black + + 1pt + + 2pt + 2pt + 2pt + 2pt + + + + + + + + 0.52062cm + + + + + true + true + + + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Parameters!NombreCompleto.Value + + + + + + + Textbox17 + + + + Black + + 1pt + + 2pt + 2pt + 2pt + 2pt + + + + + + + + + + + + + + + + + + + + + + DsOC + 17.07534cm + 0.15979cm + 1.12062cm + 19.89024cm + 6 + + + + + + Database + =First(Fields!ImagenByte.Value, "dsImagenes") + image/png + FitProportional + 4.64173in + 0.068in + 1.30194in + 1.48366in + 7 + + + + + + + + + 7.90238cm + + + 8.04297cm + + + + + 0.6cm + + + + + true + true + + + + + Éste documento es una representación impresa de un CFDi + + + + + + + Textbox258 + + + DimGray + 2pt + 2pt + 2pt + 2pt + + + 2 + + + + + + + 0.6cm + + + + + true + true + + + + + Sello digital del emisor + + + + + + 2pt + 2pt + 2pt + 2pt + + + 2 + + + + + + + 0.6cm + + + + + true + true + + + + + =Parameters!SelloDigitalEmisor.Value + + + + + + 2pt + 2pt + 2pt + 2pt + + + 2 + + + + + + + 0.6cm + + + + + true + true + + + + + Sello dígital del SAT: + + + + + + 2pt + 2pt + 2pt + 2pt + + + 2 + + + + + + + 0.6cm + + + + + true + true + + + + + =Parameters!SelloDigitalSAT.Value + + + + + + 2pt + 2pt + 2pt + 2pt + + + 2 + + + + + + + 0.6cm + + + + + true + true + + + + + Cadena Original del timbre + + + + + + 2pt + 2pt + 2pt + 2pt + + + 2 + + + + + + + 0.57354cm + + + + + true + true + + + + + =Parameters!CadenaOriginal.Value + + + + + + 2pt + 2pt + 2pt + 2pt + + + 2 + + + + + + + 0.44125cm + + + + + true + true + + + + + Versión del comprobante: + + + + =Parameters!CFDIVersion.Value + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + Versión del complemento: 1.2 + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + 0.6cm + + + + + true + true + + + + + Usos del CFDI: + + + + =Parameters!UsoCFDI.Value + + + + + + 2pt + 2pt + 2pt + 2pt + + + 2 + + + + + + + + + + + + + + + + + + + + + + + + + + + dsImagenes + 11.78999cm + 4.13053cm + 5.21479cm + 15.94535cm + 8 + + + + + + + + + 2.2642cm + + + 2.11107cm + + + 2.2102cm + + + 2.57342cm + + + 2.70756cm + + + 2.08963cm + + + 2.633cm + + + 3.2606cm + + + + + 0.49417cm + + + + + true + true + + + + + DATOS DEL EMPLEADO + + + + + + + Black + + 1pt + + 2pt + 2pt + 2pt + 2pt + + + 8 + + + + + + + + + + + + + 0.41479cm + + + + + true + true + + + + + No Empleado + + + + + + + Black + + 1pt + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Parameters!NoEmpleado.Value + + + + + + + Black + + 1pt + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + + + + + + + + Black + + 1pt + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + Nombre + + + + + + + Black + + 1pt + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Parameters!NombreCompleto.Value + + + + + + + Black + + 1pt + + 2pt + 2pt + 2pt + 2pt + + + 2 + + + + + + + true + true + + + + + NSS + + + + + + + Black + + 1pt + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Parameters!NSS.Value + + + + + + + Black + + 1pt + + 2pt + 2pt + 2pt + 2pt + + + + + + + + 0.38834cm + + + + + true + true + + + + + RFC + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Parameters!RFC.Value + + + + + + 2pt + 2pt + 2pt + 2pt + + + 2 + + + + + + + true + true + + + + + Régimen + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Parameters!Regimen.Value + + + + + + 2pt + 2pt + 2pt + 2pt + + + 2 + + + + + + + true + true + + + + + Departamento + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Parameters!Departamento.Value + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + 0.38834cm + + + + + true + true + + + + + CURP + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Parameters!CURP.Value + + + + + + 2pt + 2pt + 2pt + 2pt + + + 2 + + + + + + + true + true + + + + + Riesgo Puesto + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Parameters!RiesgoPuesto.Value + + + + + + 2pt + 2pt + 2pt + 2pt + + + 2 + + + + + + + true + true + + + + + Puesto + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Parameters!Puesto.Value + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + 0.49417cm + + + + + true + true + + + + + INFORMACION LABORAL + + + + + + + Black + + 1pt + + 2pt + 2pt + 2pt + 2pt + + + 8 + + + + + + + + + + + + + 0.38832cm + + + + + true + true + + + + + Jornada + + + + + + + Black + + 1pt + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Parameters!Jornada.Value + + + + + + + Black + + 1pt + + 2pt + 2pt + 2pt + 2pt + + + 2 + + + + + + + true + true + + + + + Contrato + + + + + + + Black + + 1pt + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Parameters!Contrato.Value + + + + + + + Black + + 1pt + + 2pt + 2pt + 2pt + 2pt + + + 2 + + + + + + + true + true + + + + + Periodo + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Parameters!Periodo.Value + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + 0.38833cm + + + + + true + true + + + + + Dias Pagados + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Parameters!DiasPagados.Value + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + Fecha ingreso + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Parameters!FechaIngreso.Value + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + Salario Base + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Parameters!SalarioBase.Value + + + + + + + Textbox166 + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + Salario Diario Int + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Parameters!SalarioDiarioInt.Value + + + + + + + Textbox159 + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + 0.44124cm + + + + + true + true + + + + + PAGO + + + + + + + Black + + 1pt + + 2pt + 2pt + 2pt + 2pt + + + 8 + + + + + + + + + + + + + 0.36187cm + + + + + true + true + + + + + Banco + + + + + + + Black + + 1pt + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Parameters!Banco.Value + + + + + + + Black + + 1pt + + 2pt + 2pt + 2pt + 2pt + + + 2 + + + + + + + true + true + + + + + Método de Pago + + + + + + + Black + + 1pt + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + PUE + + + + + + + Black + + 1pt + + 2pt + 2pt + 2pt + 2pt + + + 2 + + + + + + + true + true + + + + + Fecha Inicio + + + + + + + Black + + 1pt + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Parameters!FechaInicio.Value + + + + + + + Black + + 1pt + + 2pt + 2pt + 2pt + 2pt + + + + + + + + 0.38834cm + + + + + true + true + + + + + CLABE + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Parameters!CLABE.Value + + + + + + 2pt + 2pt + 2pt + 2pt + + + 2 + + + + + + + true + true + + + + + + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + + + + + + + 2pt + 2pt + 2pt + 2pt + + + 2 + + + + + + + true + true + + + + + Fecha Fin + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Parameters!FechaFin.Value + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + 0.38833cm + + + + + true + true + + + + + Clave + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + Cantidad + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + Unidad + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + Moneda + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + Descripción + + + + + + 2pt + 2pt + 2pt + 2pt + + + 2 + + + + + + + true + true + + + + + Precio Unit. + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + Importe + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + 0.49416cm + + + + + true + true + + + + + =Parameters!Clave.Value + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Parameters!Cantidad.Value + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Parameters!Unidad.Value + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + MXN + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Parameters!Descripcion.Value + + + + + + 2pt + 2pt + 2pt + 2pt + + + 2 + + + + + + + true + true + + + + + =Parameters!PU.Value + + + + + + + Textbox103 + + + 2pt + 2pt + 2pt + 2pt + es-MX + + + + + + + + true + true + + + + + =Parameters!Importe.Value + + + + + + + Textbox110 + + + 2pt + 2pt + 2pt + 2pt + es-MX + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + DsOC + 2.51578cm + 0.15979cm + 5.0304cm + 19.84968cm + 9 + + + + + + 18.41425cm + + + + + + + + =Today + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + 27.94cm + 21.59cm + 0.5cm + 0.5cm + 1cm + 0.5cm + 1.27cm + + + + + + + Textbox3 + + + + LightGrey + + 1pt + + + LightGrey + + 1pt + + + LightGrey + + 1pt + + + LightGrey + + 1pt + + #e36c09 + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + U. M. + + + + + + + Textbox7 + + + + LightGrey + + 1pt + + + LightGrey + + 1pt + + + LightGrey + + 1pt + + + LightGrey + + 1pt + + #e36c09 + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + Producto o Servicio + + + + + + + Textbox9 + + + + LightGrey + + 1pt + + + LightGrey + + 1pt + + + LightGrey + + 1pt + + + LightGrey + + 1pt + + #e36c09 + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + Observaciones + + + + + + + Textbox68 + + + + LightGrey + + 1pt + + + LightGrey + + 1pt + + + LightGrey + + 1pt + + + LightGrey + + 1pt + + #e36c09 + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + P. U. + + + + + + + Textbox2 + + + + LightGrey + + 1pt + + + LightGrey + + 1pt + + + LightGrey + + 1pt + + + LightGrey + + 1pt + + #e36c09 + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + Total + + + + + + + Textbox1 + + + + LightGrey + + 1pt + + + LightGrey + + 1pt + + + LightGrey + + 1pt + + + LightGrey + + 1pt + + #e36c09 + 2pt + 2pt + 2pt + 2pt + + + + + + + + 0.473cm + + + + + true + true + + + + + =Fields!Cantidad.Value + + + + + + + Cantidad + + + 2pt + 2pt + 1pt + + + + + + + + true + true + + + + + =Fields!UM.Value + + + + + + + UM + + + + LightGrey + + 1pt + + + LightGrey + + 1pt + + + LightGrey + + 1pt + + + LightGrey + + 1pt + + 2pt + 2pt + 1pt + + + + + + + + true + true + + + + + =Fields!PS.Value + + + + + + + PS + + + + LightGrey + + 1pt + + + LightGrey + + 1pt + + + LightGrey + + 1pt + + + LightGrey + + 1pt + + 2pt + 2pt + 1pt + + + + + + + + true + true + + + + + =Fields!Observacion.Value + + + + + + + Observacion + + + + LightGrey + + 1pt + + + LightGrey + + 1pt + + + LightGrey + + 1pt + + + LightGrey + + 1pt + + 2pt + 2pt + 1pt + + + + + + + + true + true + + + + + =Fields!Importe.Value + + + + + + + Importe + + + 2pt + 2pt + 1pt + + + + + + + + true + true + + + + + =Fields!Total.Value + + + + + + + Total + + + 2pt + 2pt + 1pt + + + + + + + + + + + + + + + + + =IIF(Parameters!TipoProveedor.Value = "1",true,false) + + + + + =IIF(Parameters!TipoProveedor.Value = "1",true,false) + + + + + + + + After + + + + + + + DsOC + 4.58198cm + 0.20457cm + 0.96717cm + 20.25842cm + + + + LightGrey + + 1pt + + + LightGrey + + 1pt + + + LightGrey + + 1pt + + + LightGrey + + 1pt + + + + + true + true + + + + + ORDEN DE COMPRA DE MATERIALES Y SERVICIOS + + + + + + + Textbox8 + 0.12484cm + 4.03472cm + 0.5365cm + 11.69962cm + 1 + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + =Parameters!TipoOC.Value + + + + + + + Textbox12 + 0.12484cm + 16.1331cm + 0.44478cm + 4.32987cm + 2 + + + + LightGrey + + 1pt + + + LightGrey + + 1pt + + + LightGrey + + 1pt + + + LightGrey + + 1pt + + #e36c09 + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + =Parameters!Folio.Value + + + + + + + Textbox12 + 0.56962cm + 16.1331cm + 0.44478cm + 4.32987cm + 3 + + + + LightGrey + + 1pt + + + LightGrey + + 1pt + + + LightGrey + + 1pt + + + LightGrey + + 1pt + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + Fecha + + + + + + + Textbox12 + 1.0144cm + 16.13311cm + 0.44478cm + 4.32987cm + 4 + + + + LightGrey + + 1pt + + + LightGrey + + 1pt + + + LightGrey + + 1pt + + + LightGrey + + 1pt + + #e36c09 + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + =CDate(replace(Parameters!FechaSolicitud.Value, "T" ," ")).ToString("dd/MM/yyyy") + + + + + + + Textbox12 + 1.45918cm + 16.13312cm + 0.44478cm + 4.32987cm + 5 + + + + LightGrey + + 1pt + + + LightGrey + + 1pt + + + LightGrey + + 1pt + + + LightGrey + + 1pt + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + Proveedor + + + + + + + Textbox12 + 2.53982cm + 0.20457cm + 0.44478cm + 2.34596cm + 6 + + + + LightGrey + + 1pt + + + LightGrey + + 1pt + + + LightGrey + + 1pt + + + LightGrey + + 1pt + + #e36c09 + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + Descripción + + + + + + + Textbox12 + 2.9846cm + 0.20457cm + 0.44478cm + 2.34596cm + 7 + + + + LightGrey + + 1pt + + + LightGrey + + 1pt + + + LightGrey + + 1pt + + + LightGrey + + 1pt + + #e36c09 + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + Justificación + + + + + + + Textbox12 + 3.42938cm + 0.20457cm + 0.44478cm + 2.34596cm + 8 + + + + LightGrey + + 1pt + + + LightGrey + + 1pt + + + LightGrey + + 1pt + + + LightGrey + + 1pt + + #e36c09 + Middle + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + Fecha Entrega + + + + + + + Textbox12 + 2.9846cm + 13.61054cm + 0.44478cm + 2.52258cm + 9 + + + + LightGrey + + 1pt + + + LightGrey + + 1pt + + + LightGrey + + 1pt + + + LightGrey + + 1pt + + #e36c09 + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + Lugar de Entrega + + + + + + + Textbox12 + 3.42938cm + 13.61054cm + 0.44478cm + 2.52258cm + 10 + + + + LightGrey + + 1pt + + + LightGrey + + 1pt + + + LightGrey + + 1pt + + + LightGrey + + 1pt + + #e36c09 + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + Estatus + + + + + + + Textbox12 + 2.53982cm + 13.61054cm + 0.44478cm + 2.52258cm + 11 + + + + LightGrey + + 1pt + + + LightGrey + + 1pt + + + LightGrey + + 1pt + + + LightGrey + + 1pt + + #e36c09 + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + =iif(Parameters!FechaEntrega.Value="01/01/0001","",Parameters!FechaEntrega.Value) + + + + + + + Textbox12 + 2.9846cm + 16.1331cm + 0.44478cm + 4.32987cm + 12 + + + White + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + =Parameters!ProveedorLugar.Value + + + + + + + Textbox12 + 3.42938cm + 16.1331cm + 0.44478cm + 4.32987cm + 13 + + + + LightGrey + + 1pt + + + LightGrey + + 1pt + + + LightGrey + + 1pt + + + LightGrey + + 1pt + + White + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + =Parameters!Estatus.Value + + + + + + + Textbox12 + 2.53982cm + 16.1331cm + 0.44478cm + 4.32987cm + 14 + + + + LightGrey + + 1pt + + + LightGrey + + 1pt + + + LightGrey + + 1pt + + + LightGrey + + 1pt + + White + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + =Parameters!Descripcion.Value + + + + + + + Textbox12 + 2.9846cm + 2.55053cm + 0.44478cm + 11.06001cm + 15 + + + + LightGrey + + 1pt + + + LightGrey + + 1pt + + + LightGrey + + 1pt + + + LightGrey + + 1pt + + White + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + =Parameters!Asunto.Value + + + + + + + Textbox12 + 3.42938cm + 2.55053cm + 0.44478cm + 11.06001cm + 16 + + + + LightGrey + + 1pt + + + LightGrey + + 1pt + + + LightGrey + + 1pt + + + LightGrey + + 1pt + + White + Middle + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + =Parameters!ProveedorNombre.Value + + + + + + + Textbox12 + 2.53982cm + 2.55053cm + 0.44478cm + 11.06001cm + 17 + + + + LightGrey + + 1pt + + + LightGrey + + 1pt + + + LightGrey + + 1pt + + + LightGrey + + 1pt + + White + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + HECTOR ADRIAN DIAZ CASTILLO + + + + + + + Textbox8 + 0.92326cm + 4.03472cm + 0.76228cm + 11.69962cm + 18 + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + Autorizó + + + + + + + Textbox12 + 8.30549cm + 7.33306cm + 0.44478cm + 5.83844cm + 19 + + + #e36c09 + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + + + + + + + + Textbox12 + 8.75027cm + 7.33306cm + 0.4095cm + 5.83844cm + 20 + + + + Black + + 1pt + + Top + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + =Parameters!NombreAutorizo.Value + + + + + + + Textbox12 + 9.19505cm + 7.33306cm + 0.44478cm + 5.83844cm + 21 + + + White + 2pt + 2pt + 2pt + 2pt + + + + External + =Parameters!FirmaAutorizo.Value + Fit + 6.73531cm + 8.35229cm + 3.5cm + 3.5cm + 22 + + =iif(Parameters!FirmaAutorizo.Value <> "", False, True) + + + + + + + true + true + + + + + Uso CFDI 3.3: + + + + + + + Textbox12 + 3.87416cm + 0.20457cm + 0.44478cm + 2.34596cm + 23 + + + + LightGrey + + 1pt + + + LightGrey + + 1pt + + + LightGrey + + 1pt + + + LightGrey + + 1pt + + #e36c09 + Middle + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + =Parameters!UsoCFDI.Value + + + + + + + Textbox12 + 3.87416cm + 2.55053cm + 0.44478cm + 11.06001cm + 24 + + + + LightGrey + + 1pt + + + LightGrey + + 1pt + + + LightGrey + + 1pt + + + LightGrey + + 1pt + + White + Middle + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + Sucursal + + + + + + + Textbox12 + 3.87416cm + 13.61054cm + 0.44478cm + 2.55786cm + 25 + + + + LightGrey + + 1pt + + + LightGrey + + 1pt + + + LightGrey + + 1pt + + + LightGrey + + 1pt + + #e36c09 + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + =Parameters!Proyecto.Value + + + + + + + Textbox12 + 3.87416cm + 16.13312cm + 0.44478cm + 4.32987cm + 26 + + + + LightGrey + + 1pt + + + LightGrey + + 1pt + + + LightGrey + + 1pt + + + LightGrey + + 1pt + + White + 2pt + 2pt + 2pt + 2pt + + + + true + + + + + ="Total " & Parameters!Moneda.Value + + + + + + + Textbox20 + 7.3465cm + 16.7985cm + 0.45183cm + 1.8653cm + 27 + + =IIF(Parameters!TipoProveedor.Value = "1",true,false) + + + + 2pt + 2pt + 2pt + 2pt + + + + true + + + + + SubTotal + + + + + + + Textbox20 + 5.54915cm + 16.7985cm + 0.42361cm + 1.8653cm + 28 + + =IIF(Parameters!TipoProveedor.Value = "1",true,false) + + + + 2pt + 2pt + 2pt + 2pt + + + + true + + + + + =Parameters!Total.Value + + + + + + + Textbox20 + 7.3465cm + 18.6638cm + 0.45183cm + 1.80228cm + 29 + + =IIF(Parameters!TipoProveedor.Value = "1",true,false) + + + + 2pt + 2pt + 2pt + 2pt + + + + true + + + + + =Parameters!SubTotal.Value + + + + + + + Textbox20 + 5.54915cm + 18.6638cm + 0.42361cm + 1.7992cm + 30 + + =IIF(Parameters!TipoProveedor.Value = "1",true,false) + + + + 2pt + 2pt + 2pt + 2pt + + + + true + + + + + IVA + + + + + + + Textbox20 + 6.90659cm + 16.7985cm + 0.45183cm + 1.8653cm + 31 + + =IIF(Parameters!TipoProveedor.Value = "1",true,false) + + + + 2pt + 2pt + 2pt + 2pt + + + + true + + + + + =Parameters!IVA.Value + + + + + + + Textbox20 + 6.90659cm + 18.6638cm + 0.45183cm + 1.80228cm + 32 + + =IIF(Parameters!TipoProveedor.Value = "1",true,false) + + + + 2pt + 2pt + 2pt + 2pt + + + + true + + + + + Descuento + + + + + + + Textbox20 + 6.00293cm + 16.7985cm + 0.45183cm + 1.8653cm + 33 + + =IIF(Parameters!TipoProveedor.Value = "1",true,false) + + + + 2pt + 2pt + 2pt + 2pt + + + + true + + + + + =Parameters!Descuento.Value + + + + + + + Textbox20 + 6.00293cm + 18.6638cm + 0.45183cm + 1.80228cm + 34 + + =IIF(Parameters!TipoProveedor.Value = "1",true,false) + + + + 2pt + 2pt + 2pt + 2pt + + + + true + + + + + Sub Total 2 + + + + + + + Textbox20 + 6.45476cm + 16.7985cm + 0.45183cm + 1.8653cm + 35 + + =IIF(Parameters!TipoProveedor.Value = "1",true,false) + + + + 2pt + 2pt + 2pt + 2pt + + + + true + + + + + =Parameters!SubTotal2.Value + + + + + + + Textbox20 + 6.45476cm + 18.6638cm + 0.45183cm + 1.80228cm + 36 + + =IIF(Parameters!TipoProveedor.Value = "1",true,false) + + + + 2pt + 2pt + 2pt + 2pt + + + + Embedded + Logo + FitProportional + 0.12484cm + 0.05822cm + 2.01901cm + 3.94122cm + 37 + + + + + + 4.17138in + + + + + + + + =Today + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + 27.94cm + 21.59cm + 0.5cm + 0cm + 1cm + 1cm + 0.13cm + + + + + + + Textbox24 + + + #e36c09 + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + U.M. + + + + + + + Textbox27 + + + #e36c09 + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + DESCRIPCIÓN + + + + + + + Textbox26 + + + #e36c09 + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + P/U + + + + + + + Textbox36 + + + #e36c09 + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + IMPORTE + + + + + + + Textbox38 + + + #e36c09 + 2pt + 2pt + 2pt + 2pt + + + + + + + + 0.6cm + + + + + true + true + + + + + =Parameters!Cantidad.Value + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Parameters!UnidadMedida.Value + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Parameters!Descripcion.Value + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Parameters!PU.Value + + + + + + + Textbox37 + + + 2pt + 2pt + 2pt + 2pt + es-MX + + + + + + + + true + true + + + + + =Parameters!Importe.Value + + + + + + + Textbox39 + + + 2pt + 2pt + 2pt + 2pt + es-MX + + + + + + + + + + + + + + + + + + + + + + + + DataSet2 + 2.59417cm + 1.09cm + 20.53564cm + + + + + + + + + 2.13038cm + + + 1.64459cm + + + 1.80415cm + + + 1.76995cm + + + 1.8cm + + + 1.8cm + + + 1.8cm + + + 1.99576cm + + + 2.49576cm + + + 3.2908cm + + + + + 0.56938cm + + + + + true + true + + + + + UUID + + + + + + #e36c09 + 2pt + 2pt + 2pt + 2pt + + + 4 + + + + + + + + + true + true + + + + + SERIE + + + + + + #e36c09 + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + FOLIO + + + + + + #e36c09 + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + MONEDA + + + + + + #e36c09 + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + NO.PARC. + + + + + + #e36c09 + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + SALDO ANT. + + + + + + #e36c09 + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + MONTO PAGADO + + + + + + #e36c09 + 2pt + 2pt + 2pt + 2pt + + + + + + + + 0.43188cm + + + + + true + true + + + + + =Fields!IdDocumento.Value + + + + + + + + 4 + + + + + + + + + true + true + + + + + =Fields!Serie.Value + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Fields!Folio.Value + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Fields!MonedaDR.Value + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Fields!NumParcialidad.Value + + + + + + + NumParcialidad + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Fields!ImpSaldoAnt.Value + + + + + + + ImpSaldoAnt + + + 2pt + 2pt + 2pt + 2pt + es-MX + + + + + + + + true + true + + + + + =Fields!ImpPagado.Value + + + + + + + ImpPagado + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + 0.07938cm + + + + + true + true + + + + + Impuesto + + + + + + + Textbox108 + + = IIF( + Fields!Tra001BaseDR.Value > 0 + OR Fields!Tra002BaseDR.Value > 0 + OR Fields!Tra003BaseDR.Value > 0 + OR Fields!Ret001BaseDR.Value > 0 + OR Fields!Ret002BaseDR.Value > 0 + OR Fields!Ret003BaseDR.Value > 0 + ,False,true) + + + + Top + + + + + + + + true + true + + + + + Tipo + + + + + + + Textbox109 + + = IIF( + Fields!Tra001BaseDR.Value > 0 + OR Fields!Tra002BaseDR.Value > 0 + OR Fields!Tra003BaseDR.Value > 0 + OR Fields!Ret001BaseDR.Value > 0 + OR Fields!Ret002BaseDR.Value > 0 + OR Fields!Ret003BaseDR.Value > 0 + ,False,true) + + + + Top + + + + + + + + true + true + + + + + Base + + + + + + + Textbox110 + + = IIF( + Fields!Tra001BaseDR.Value > 0 + OR Fields!Tra002BaseDR.Value > 0 + OR Fields!Tra003BaseDR.Value > 0 + OR Fields!Ret001BaseDR.Value > 0 + OR Fields!Ret002BaseDR.Value > 0 + OR Fields!Ret003BaseDR.Value > 0 + ,False,true) + + + + Top + + + + + + + + true + true + + + + + Tipo Factor + + + + + + + Textbox111 + + = IIF( + Fields!Tra001BaseDR.Value > 0 + OR Fields!Tra002BaseDR.Value > 0 + OR Fields!Tra003BaseDR.Value > 0 + OR Fields!Ret001BaseDR.Value > 0 + OR Fields!Ret002BaseDR.Value > 0 + OR Fields!Ret003BaseDR.Value > 0 + ,False,true) + + + + Top + + + + + + + + true + true + + + + + Tasa/Cuota + + + + + + + Textbox112 + + = IIF( + Fields!Tra001BaseDR.Value > 0 + OR Fields!Tra002BaseDR.Value > 0 + OR Fields!Tra003BaseDR.Value > 0 + OR Fields!Ret001BaseDR.Value > 0 + OR Fields!Ret002BaseDR.Value > 0 + OR Fields!Ret003BaseDR.Value > 0 + ,False,true) + + + + Top + + + + + + + + true + true + + + + + Importe + + + + + + + Textbox113 + + = IIF( + Fields!Tra001BaseDR.Value > 0 + OR Fields!Tra002BaseDR.Value > 0 + OR Fields!Tra003BaseDR.Value > 0 + OR Fields!Ret001BaseDR.Value > 0 + OR Fields!Ret002BaseDR.Value > 0 + OR Fields!Ret003BaseDR.Value > 0 + ,False,true) + + + + Top + + + + + + + + true + true + + + + + + + + + + + + Textbox114 + + = IIF( + Fields!Tra001BaseDR.Value > 0 + OR Fields!Tra002BaseDR.Value > 0 + OR Fields!Tra003BaseDR.Value > 0 + OR Fields!Ret001BaseDR.Value > 0 + OR Fields!Ret002BaseDR.Value > 0 + OR Fields!Ret003BaseDR.Value > 0 + ,False,true) + + + + Top + + + + + + + + true + true + + + + + + + + + + + + Textbox115 + + = IIF( + Fields!Tra001BaseDR.Value > 0 + OR Fields!Tra002BaseDR.Value > 0 + OR Fields!Tra003BaseDR.Value > 0 + OR Fields!Ret001BaseDR.Value > 0 + OR Fields!Ret002BaseDR.Value > 0 + OR Fields!Ret003BaseDR.Value > 0 + ,False,true) + + + + Top + + + + + + + + true + true + + + + + + + + + + + Top + + + + + + + + true + true + + + + + + + + + + + Top + + + + + + + + 0.07938cm + + + + + true + true + + + + + ISR + + + + + + + Textbox61 + + = IIF( + Fields!Tra001BaseDR.Value > 0 + ,False,True) + + + + + + + + + + + true + true + + + + + Traslado + + + + + + + Textbox204 + + = IIF( + Fields!Tra001BaseDR.Value > 0 + ,False,True) + + + + + + + + + + + true + true + + + + + =Fields!ImpPagado.Value + + + + + + + ImpPagado + + = IIF( + Fields!Tra001BaseDR.Value > 0 + ,False,True) + + + + + + + + + + + true + true + + + + + =Fields!Tra001TipoFactorDR.Value + + + + + + + ImpPagado + + = IIF( + Fields!Tra001BaseDR.Value > 0 + ,False,True) + + + + + + + + + + + true + true + + + + + =Fields!Tra001TasaOCuotaDR.Value + + + + + + + ImpPagado + + = IIF( + Fields!Tra001BaseDR.Value > 0 + ,False,True) + + + + + + + + + + + true + true + + + + + =Fields!Tra001ImporteDR.Value + + + + + + + ImpPagado + + = IIF( + Fields!Tra001BaseDR.Value > 0 + ,False,True) + + + + + + + + + + + true + true + + + + + + + + + + + + Textbox4 + + = IIF( + Fields!Tra001BaseDR.Value > 0 + ,False,True) + + + + + + + + + + + true + true + + + + + + + + + + + + Textbox13 + + = IIF( + Fields!Tra001BaseDR.Value > 0 + ,False,True) + + + + + + + + + + + true + true + + + + + + + + + + + + + + + + + + true + true + + + + + + + + + + + + + + + + + + 0.07938cm + + + + + true + true + + + + + IVA + + + + + + + Textbox61 + + = IIF( + Fields!Tra002BaseDR.Value > 0 + ,False,True) + + + + + + + + + + + true + true + + + + + Traslado + + + + + + + Textbox204 + + = IIF( + Fields!Tra002BaseDR.Value > 0 + ,False,True) + + + + + + + + + + + true + true + + + + + =Fields!ImpPagado.Value + + + + + + + ImpPagado + + = IIF( + Fields!Tra002BaseDR.Value > 0 + ,False,True) + + + + + + + + + + + true + true + + + + + =Fields!Tra002TipoFactorDR.Value + + + + + + + ImpPagado + + = IIF( + Fields!Tra002BaseDR.Value > 0 + ,False,True) + + + + + + + + + + + true + true + + + + + =Fields!Tra002TasaOCuotaDR.Value + + + + + + + ImpPagado + + = IIF( + Fields!Tra002BaseDR.Value > 0 + ,False,True) + + + + + + + + + + + true + true + + + + + =Fields!Tra002ImporteDR.Value + + + + + + + ImpPagado + + = IIF( + Fields!Tra002BaseDR.Value > 0 + ,False,True) + + + + + + + + + + + true + true + + + + + + + + + + + + Textbox67 + + = IIF( + Fields!Tra002BaseDR.Value > 0 + ,False,True) + + + + + + + + + + + true + true + + + + + + + + + + + + Textbox68 + + = IIF( + Fields!Tra002BaseDR.Value > 0 + ,False,True) + + + + + + + + + + + true + true + + + + + + + + + + + + + + + + + + true + true + + + + + + + + + + + + + + + + + + 0.07938cm + + + + + true + true + + + + + IEPS + + + + + + + Textbox61 + + = IIF( + Fields!Tra003BaseDR.Value > 0 + ,False,True) + + + + + + + + + + + true + true + + + + + Traslado + + + + + + + Textbox204 + + = IIF( + Fields!Tra003BaseDR.Value > 0 + ,False,True) + + + + + + + + + + + true + true + + + + + =Fields!ImpPagado.Value + + + + + + + ImpPagado + + = IIF( + Fields!Tra003BaseDR.Value > 0 + ,False,True) + + + + + + + + + + + true + true + + + + + =Fields!Tra003TipoFactorDR.Value + + + + + + + ImpPagado + + = IIF( + Fields!Tra003BaseDR.Value > 0 + ,False,True) + + + + + + + + + + + true + true + + + + + =Fields!Tra003TasaOCuotaDR.Value + + + + + + + ImpPagado + + = IIF( + Fields!Tra003BaseDR.Value > 0 + ,False,True) + + + + + + + + + + + true + true + + + + + =Fields!Tra003ImporteDR.Value + + + + + + + ImpPagado + + = IIF( + Fields!Tra003BaseDR.Value > 0 + ,False,True) + + + + + + + + + + + true + true + + + + + + + + + + + + Textbox51 + + = IIF( + Fields!Tra003BaseDR.Value > 0 + ,False,True) + + + + + + + + + + + true + true + + + + + + + + + + + + Textbox55 + + = IIF( + Fields!Tra003BaseDR.Value > 0 + ,False,True) + + + + + + + + + + + true + true + + + + + + + + + + + + + + + + + + true + true + + + + + + + + + + + + + + + + + + 0.07938cm + + + + + true + true + + + + + ISR + + + + + + + Textbox61 + + = IIF( + Fields!Ret001BaseDR.Value > 0 + ,False,True) + + + + + + + + + + + true + true + + + + + Retención + + + + + + + Textbox207 + + = IIF( + Fields!Ret001BaseDR.Value > 0 + ,False,True) + + + + + + + + + + + true + true + + + + + =Fields!ImpPagado.Value + + + + + + + ImpPagado + + = IIF( + Fields!Ret001BaseDR.Value > 0 + ,False,True) + + + + + + + + + + + true + true + + + + + =Fields!Ret001TipoFactorDR.Value + + + + + + + ImpPagado + + = IIF( + Fields!Ret001BaseDR.Value > 0 + ,False,True) + + + + + + + + + + + true + true + + + + + =Fields!Ret001TasaOCuotaDR.Value + + + + + + + ImpPagado + + = IIF( + Fields!Ret001BaseDR.Value > 0 + ,False,True) + + + + + + + + + + + true + true + + + + + =Fields!Ret001ImporteDR.Value + + + + + + + ImpPagado + + = IIF( + Fields!Ret001BaseDR.Value > 0 + ,False,True) + + + + + + + + + + + true + true + + + + + + + + + + + + Textbox75 + + = IIF( + Fields!Ret001BaseDR.Value > 0 + ,False,True) + + + + + + + + + + + true + true + + + + + + + + + + + + Textbox76 + + = IIF( + Fields!Ret001BaseDR.Value > 0 + ,False,True) + + + + + + + + + + + true + true + + + + + + + + + + + + + + + + + + true + true + + + + + + + + + + + + + + + + + + 0.07939cm + + + + + true + true + + + + + IVA + + + + + + + Textbox61 + + = IIF( + Fields!Ret002BaseDR.Value > 0 + ,False,True) + + + + + + + + + + + true + true + + + + + Retención + + + + + + + Textbox207 + + = IIF( + Fields!Ret002BaseDR.Value > 0 + ,False,True) + + + + + + + + + + + true + true + + + + + =Fields!ImpPagado.Value + + + + + + + ImpPagado + + = IIF( + Fields!Ret002BaseDR.Value > 0 + ,False,True) + + + + + + + + + + + true + true + + + + + =Fields!Ret002TipoFactorDR.Value + + + + + + + ImpPagado + + = IIF( + Fields!Ret002BaseDR.Value > 0 + ,False,True) + + + + + + + + + + + true + true + + + + + =Fields!Ret002TasaOCuotaDR.Value + + + + + + + ImpPagado + + = IIF( + Fields!Ret002BaseDR.Value > 0 + ,False,True) + + + + + + + + + + + true + true + + + + + =Fields!Ret002ImporteDR.Value + + + + + + + ImpPagado + + = IIF( + Fields!Ret002BaseDR.Value > 0 + ,False,True) + + + + + + + + + + + true + true + + + + + + + + + + + + Textbox85 + + = IIF( + Fields!Ret002BaseDR.Value > 0 + ,False,True) + + + + + + + + + + + true + true + + + + + + + + + + + + Textbox86 + + = IIF( + Fields!Ret002BaseDR.Value > 0 + ,False,True) + + + + + + + + + + + true + true + + + + + + + + + + + + + + + + + + true + true + + + + + + + + + + + + + + + + + + 0.07938cm + + + + + true + true + + + + + IEPS + + + + + + + Textbox59 + + = IIF( + Fields!Ret003BaseDR.Value > 0 + ,False,True) + + + + + + + + + + + true + true + + + + + Retención + + + + + + + Textbox207 + + = IIF( + Fields!Ret003BaseDR.Value > 0 + ,False,True) + + + + + + + + + + + true + true + + + + + =Fields!ImpPagado.Value + + + + + + + ImpPagado + + = IIF( + Fields!Ret003BaseDR.Value > 0 + ,False,True) + + + + + + + + + + + true + true + + + + + =Fields!Ret003TipoFactorDR.Value + + + + + + + ImpPagado + + = IIF( + Fields!Ret003BaseDR.Value > 0 + ,False,True) + + + + + + + + + + + true + true + + + + + =Fields!Ret003TasaOCuotaDR.Value + + + + + + + ImpPagado + + = IIF( + Fields!Ret003BaseDR.Value > 0 + ,False,True) + + + + + + + + + + + true + true + + + + + =Fields!Ret003ImporteDR.Value + + + + + + + ImpPagado + + = IIF( + Fields!Ret003BaseDR.Value > 0 + ,False,True) + + + + es-MX + + + + + + + + true + true + + + + + + + + + + + + Textbox95 + + = IIF( + Fields!Ret003BaseDR.Value > 0 + ,False,True) + + + + + + + + + + + true + true + + + + + + + + + + + + Textbox96 + + = IIF( + Fields!Ret003BaseDR.Value > 0 + ,False,True) + + + + + + + + + + + true + true + + + + + + + + + + + + + + + + + + true + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + After + + + + + + + + + + + + + + + + + DataSet2 + 4.62704cm + 1.55693cm + 20.53139cm + 1 + + + + + + + + + 4.5cm + + + 1.74905cm + + + 1.5cm + + + 2.96606cm + + + 6.82934cm + + + 2.98695cm + + + + + 0.49cm + + + + + true + true + + + + + FECHA Y HORA DE PAGO + + + + + + #e36c09 + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + MONEDA + + + + + + #e36c09 + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + TC + + + + + + #e36c09 + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + CTA ORDENANTE + + + + + + #e36c09 + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + FORMA DE PAGO + + + + + + #e36c09 + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + TOTAL DE PAGO + + + + + + #e36c09 + 2pt + 2pt + 2pt + 2pt + + + + + + + + 0.6cm + + + + + true + true + + + + + =Fields!FechaPago.Value + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Fields!MonedaP.Value + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Fields!TipoCambioP.Value + + + + + + 2pt + 2pt + 2pt + 2pt + es-MX + + + + + + + + true + true + + + + + =Fields!CtaOrdenante.Value + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Fields!FormaDePagoP.Value + + + + + + + + + + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Fields!Monto.Value + + + + + + + Monto + + + + + + + + + + + + 2pt + 2pt + 2pt + 2pt + es-MX + + + + + + + + 0.6cm + + + + + true + true + + + + + + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Parameters!CantidadLetra.Value + + + + + + + Textbox53 + + + + #e36c09 + 3pt + + + + + + + + + + + 2pt + 2pt + 2pt + 2pt + + + 2 + + + + + + + + + + + + + + + + + + + + + After + + + + + + Before + + + + DataSet1 + 6.51414cm + 1.69cm + 20.5314cm + 2 + + + + + + true + true + + + + + CFDI Relacionados + + + + + + + Textbox5 + 4.01644cm + 0.49cm + 20.5314cm + 3 + + + #e36c09 + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + Datos del Cliente: + + + + + + + + + Cliente + + + + : + + + + =Parameters!Cliente.Value + + + + + + + + + Dirección: + + + + =Parameters!ClienteDireccion.Value + + + + , + + + + =Parameters!ClienteColonia.Value + + + + + + + + + Ciudad: + + + + =Parameters!ClienteCiudad.Value + + + + + + + + + CP: + + + + =Parameters!ClienteCP.Value + + + + + + + + + RFC Ordenante: + + + + + + + + =Parameters!RFCOrdenante.Value + + + + + + + + + = IIF( Parameters!RegimenFiscalCodigo.Value <> "ND-", "<b>Reg. Fiscal:</b> " & Parameters!RegimenFiscalCodigo.Value,"") + HTML + + + + + + + Textbox2 + 0.03528cm + 0.99355in + 5.01932in + 4 + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + "Este documento es una representación impresa de un CFDI" + + + + + + + + + Cadena original del complemento de certificación digital del SAT: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + =Parameters!UUIDPago.Value + + + + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + + + + #e36c09 + 2pt + 2pt + 2pt + 2pt + + + + External + =Parameters!QR.Value + FitProportional + 3.3896in + 6.51771in + 1.3in + 1.5in + 7 + + + + + + true + true + + + + + + + + #e36c09 + 2pt + 2pt + 2pt + 2pt + + + + 12.1432cm + + + + + + + + + Folio: + + + + =Parameters!SerieFolio.Value + + + + + + + + + Fecha Timbre: + + + + =Parameters!FechaTimbre.Value + + + + + + + + + + + + + + + + + + Régimen Fiscal: + + + + + + + + + + + + + Regimen General de Ley Personas Morales + + + + + + + Textbox1 + 12.95686cm + 2.84197cm + 7.57454cm + + + White + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + Domicilio Fiscal: + + + + + + + + + + + + + + + + + + + + + 2pt + 2pt + 2pt + 2pt + + + + Embedded + Logo + FitProportional + 2.53cm + 4.13cm + 2 + + + + + + + + + + + 0.45509cm + true + true + + + true + true + + + + + ="Página " & Globals.PageNumber & " de " & Globals.TotalPages + + + + + + + Textbox35 + 17.09769cm + 0.41981cm + 2.94979cm + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + Usuario: + + + + + + + + =Parameters!UsuarioImprimio.Value + + + + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + Fecha Impresión: + + + + + + + + =Parameters!FechaImpresion.Value + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + 27.94cm + 21.59cm + 0.5cm + 0.5cm + 0.5cm + 0.5cm + 1.27cm + @@ -761,8 +761,8 @@ Textbox2 - 4.74917cm - 15.02042cm + 5.31361cm + 15.35404cm 0.6cm 2.53175cm 7 @@ -795,8 +795,8 @@ Textbox4 - 4.74917cm - 17.56276cm + 5.31361cm + 17.89638cm 0.6cm 2.14313cm 8 @@ -999,10 +999,10 @@ Textbox12 - 2.96905cm - 12.49038cm + 3.44148cm + 0.12912cm 0.53299cm - 2.14725cm + 3.12013cm 13 =(Parameters!TipoPago.Value = "") @@ -1039,8 +1039,8 @@ Textbox12 - 2.96905cm - 15.61669cm + 3.44148cm + 3.28453cm 0.53299cm 3.76632cm 14 @@ -1056,10 +1056,10 @@ - 5.34917cm + 6.09cm - - - - -
  • - Generar EXCEL -
  • -
  • - Generar PDF -
  • -
    -
    - Personalizar -
    - - - - - - - - - - -
    -
    -
    - - "> - -<%-- --%> -
    -
    -
    -
    - - <%--SubProyecto--%> -
    -
    - - -
    -
    - F.I.: -
    -
    -
    - - - - - - - - - - -
    -
    -
    - F.F.: -
    -
    -
    - - - - - - - - - - -
    -
    -
    -
    -
    -
    -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    -
    -
    - Detalles del Corte - - - - - - +<%@ Page Title="" Language="VB" MasterPageFile="~/Site.master" AutoEventWireup="false" CodeFile="RepCortes.aspx.vb" Inherits="Bancos_RepCortes" %> + + + + + + + + + +
  • + Generar EXCEL +
  • +
  • + Generar PDF +
  • +
    +
    + Personalizar +
    + + + + + + + + + + +
    +
    +
    + + "> + + <%-- --%>
    -
    - - - - - - - -
    -
    - - - - +
    +
    +
    + + <%--SubProyecto--%> +
    +
    + + +
    +
    + F.I.: + +
    +
    +
    + + + + + + + + + + +
    +
    +
    + F.F.: + +
    +
    +
    + + + + + + + + + + +
    +
    +
    +
    +
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <%----%> + + + + + + + + + + + + + + +
    +
    +
    +
    + Detalles del Corte + + + + + + +
    +
    + + + + + + + +
    +
    + + + + Serie - Folio - - - - - - + + + + + + + + + + + + - + - - <%----%> - - - - - - -
    -
    -
    - - - + + <%----%> + + + + + + +
    + + + + + - + + - + + - - + + + - + + diff --git a/Bancos/RepCortes.aspx.vb b/Bancos/RepCortes.aspx.vb index 41d2ada37..8ea467c4e 100644 --- a/Bancos/RepCortes.aspx.vb +++ b/Bancos/RepCortes.aspx.vb @@ -87,7 +87,7 @@ Partial Class Bancos_RepCortes If UsuarioActual.Empresa.Funcionalidad(109) = "1" Then GvDatos.Columns(3).Visible = True GvDatos.Columns(4).Visible = True - GvDatos.Columns(12).Visible = True + GvDatos.Columns(13).Visible = True End If GvDatos.DataSource = DtCortes diff --git a/Compras/PopUpVerFactura.aspx.vb b/Compras/PopUpVerFactura.aspx.vb index f97eb6abc..a3fde73da 100644 --- a/Compras/PopUpVerFactura.aspx.vb +++ b/Compras/PopUpVerFactura.aspx.vb @@ -1602,7 +1602,14 @@ Partial Class PopUpVerFactura If DtCortesVentas.Rows.Count > 0 Or DtCortesVentasResumen.Rows.Count > 0 Then Dim lrds As New List(Of ReportDataSource) - Dim rds As New ReportDataSource With {.Name = "DataSet1", .Value = DtCortesVentasResumen} + Dim DtMetodosPago = DtCortesVentasResumen.Copy() + + 'MOVER EL VENTAS CREDITO DE LA DERECHA A LA IZQUIERDA EN EL PDF + If UsuarioActual.Empresa.Funcionalidad(109) = "1" Then + DtMetodosPago = DtCortesVentasResumen.FiltraParametros("MetodoPago <> 'Crédito'") + End If + + Dim rds As New ReportDataSource With {.Name = "DataSet1", .Value = DtMetodosPago} lrds.Add(rds) Dim rds2 As New ReportDataSource With {.Name = "DataSet2", .Value = DtCortesVentas} lrds.Add(rds2) @@ -1689,6 +1696,14 @@ Partial Class PopUpVerFactura End If Next + Dim TotalCredito As Decimal = DtCortesVentasResumen.SUMD("Importe", "MetodoPago = 'Crédito'") + + Dim rowCredito = DtDatosResumen.NewRow() + rowCredito("Columna") = "Crédito" + rowCredito("Importe") = TotalCredito + rowCredito("Orden") = 4 + DtDatosResumen.Rows.Add(rowCredito) + Dim rds3 As New ReportDataSource With {.Name = "DataSet3", .Value = DtDatosResumen.FiltraParametros("Orden > 0", "Orden")} lrds.Add(rds3) diff --git a/Ventas/PVCobranza.aspx b/Ventas/PVCobranza.aspx index 6007e8cf2..cbf9cb318 100644 --- a/Ventas/PVCobranza.aspx +++ b/Ventas/PVCobranza.aspx @@ -11,7 +11,7 @@ width: 200px; } - .btn-xs { + .btn-xs { padding: 0px 5px; } @@ -294,15 +294,15 @@ CssClass="ScrollAD table table-striped table-hover Widthall" data-heighterror="320" data-freezecols="0" data-freezerows="0" GridLines="None" DataKeyNames="CveVenta,TipoDocto,Saldo,AtencionA,CveFormaPago33,SerieFolio"> - + - +   @@ -317,13 +317,17 @@
    Nombre:
             
    - -
    Folio:
    -
      
    - -
    -
    -
    + +
    Folio:
    +
      
    + +
    +
    +
    + +
    +
    +
    @@ -521,7 +525,7 @@ - +     @@ -664,15 +668,25 @@