From 99a538686fcc0e3198edf6431947c0494701562c Mon Sep 17 00:00:00 2001 From: rrene Date: Tue, 4 Feb 2025 13:05:00 -0700 Subject: [PATCH 01/10] -- que permita registrar cantidades con decimales. --- Inventarios/TrasladoSolicitud.aspx | 2 +- Inventarios/TrasladoSolicitud.aspx.vb | 16 ++-------------- 2 files changed, 3 insertions(+), 15 deletions(-) diff --git a/Inventarios/TrasladoSolicitud.aspx b/Inventarios/TrasladoSolicitud.aspx index a12e04e17..6cf9690ed 100644 --- a/Inventarios/TrasladoSolicitud.aspx +++ b/Inventarios/TrasladoSolicitud.aspx @@ -213,7 +213,7 @@ - +
diff --git a/Inventarios/TrasladoSolicitud.aspx.vb b/Inventarios/TrasladoSolicitud.aspx.vb index 8a0e4ee57..53d05aefa 100644 --- a/Inventarios/TrasladoSolicitud.aspx.vb +++ b/Inventarios/TrasladoSolicitud.aspx.vb @@ -334,14 +334,10 @@ Partial Class Inventarios_TrasladoSolicitud MensajeExistencia.Append("No hay la existencia suficiente de los siguientes productos:
") Dim CodigoPS As String = "" - - - - For Each row As GridViewRow In GvDatos.Rows - CodigoPS = GlobalDTPS(UsuarioActual.CveEmpresa, CvePS:=row.DataKey("CvePS").ToEntero).FiltroPrimeroValor("PSCodigo", "") Existencia = ObjInventarios.GetExistenciasPS(row.DataKey("CvePS").ToEntero, row.DataKey("CveUM").ToEntero, UsuarioActual.CveEmpresa, DdlAlmacenOrigen.SelectedValue.ToEntero, FechaMovto:=NowADS.ToString("yyyy/MM/dd 23:59"), Lote:=row.DataKey("Lote").ToString, FechaCaducidad:=row.DataKey("FechaCaducidad").ToString.ToDate) If Existencia - TempDT.SUM("Cantidad", $"CvePS = {row.DataKey("CvePS").ToEntero} AND CveUM = {row.DataKey("CveUM").ToEntero}") < 0 Then + CodigoPS = GlobalDTPSSimplificado(UsuarioActual.CveEmpresa, CvePS:=row.DataKey("CvePS").ToEntero).FiltroPrimeroValor("PSCodigo", "") MensajeExistencia.AppendFormat("
- {0}. Existencia: {1}", CodigoPS, Existencia) TieneErrorExistencia = True End If @@ -381,14 +377,7 @@ Partial Class Inventarios_TrasladoSolicitud For Each Row As GridViewRow In GvDatos.Rows 'Dim CveUM As Integer = Row.DataKey("CveUM").ToEntero Dim CvePS As Integer = Row.DataKey("CvePS").ToEntero - Dim Cantidad As Integer = Row.DataKey("Cantidad").ToEntero - 'Dim Precio As Decimal = Row.DataKey("Precio").ToDecimal - 'Dim Observaciones As String = Row.DataKey("Observaciones") - 'Dim CveContratoDetalle As Integer = Row.DataKey("CveContratoDetalle").ToEntero - 'Dim Serie As String = Row.DataKey("Serie") - 'Dim Lote As String = Row.DataKey("Lote") - 'Dim FechaCaducidad As Date = Row.DataKey("FechaCaducidad").ToDate - + Dim Cantidad As Decimal = Row.DataKey("Cantidad").ToDecimal If Not ObjInventarios.AddTrasladoSolicitudDetalle(CveTraspasoSolicitud, Cantidad, -1, CvePS, 0, "", -1, "-1", "-1", MinFecha) Then TieneError = True Exit For @@ -396,7 +385,6 @@ Partial Class Inventarios_TrasladoSolicitud Next End If - If TieneError = False Then ObjInventarios.Commit() Alert($"La Solicitud de Traspaso se guardó correctamente con folio #: {Folio}.", TipoMensaje.MsgInformacion) From 0bac90a3b1a3d14ba7c2c46a39641fc7b8295dbb Mon Sep 17 00:00:00 2001 From: rrene Date: Tue, 4 Feb 2025 13:06:02 -0700 Subject: [PATCH 02/10] =?UTF-8?q?--=20E!89,=20que=20si=20tiene=20que=20rel?= =?UTF-8?q?acionar=20las=20notas=20de=20cr=C3=A9dito,=20que=20no=20sea=20e?= =?UTF-8?q?n=20autom=C3=A1tico=20para=20generar=20RNC,=20sino=20que=20perm?= =?UTF-8?q?ita=20registrar=20otro=20tipo=20de=20notas=20para=20aplicar=20s?= =?UTF-8?q?aldo=20directo=20a=20facturas?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Compras/Compras.aspx.vb | 27 ++++++++++++++++++--------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/Compras/Compras.aspx.vb b/Compras/Compras.aspx.vb index 6ca7dc467..20b97bf66 100644 --- a/Compras/Compras.aspx.vb +++ b/Compras/Compras.aspx.vb @@ -20695,18 +20695,27 @@ Partial Class Compras_Compras End If End If - If DdlTipoCompra.SelectedValue = "15" Then 'Remisión de nota de crédito + If UsuarioActual.Empresa.Funcionalidad(574) = "1" Then 'cuando es emp DIAZ - If DdlTipoComprobante.SelectedValue = "NC" Then - CargaGVRemisionNotaCredito() - HLAplicaNCFact.Visible = False + If DdlTipoCompra.SelectedValue = "15" Then 'Remisión de nota de crédito + + If DdlTipoComprobante.SelectedValue = "NC" Then + CargaGVRemisionNotaCredito() + HLAplicaNCFact.Visible = False + Else + Alert("Para elegir Remisión de Nota de Crédito el tipo de documento debe de ser Nota de Crédito.", TipoMensaje.MsgAdvertencia) + 'DdlRemisionNotaCredito.SelectedValueExist(-1) + DdlTipoCompra.SelectedValueExist(-1) + End If Else - Alert("Para elegir Remisión de Nota de Crédito el tipo de documento debe de ser Nota de Crédito.", TipoMensaje.MsgAdvertencia) - 'DdlRemisionNotaCredito.SelectedValueExist(-1) - DdlTipoCompra.SelectedValueExist(-1) + 'SE ACTIVA DE NUEVO PARA LA SELECCIÓN + HLAplicaNCFact.Visible = True + InicializaAplicaNCFact() + If CveFactura > 0 Then NCSeleccionFacturasRelacionadas(UUIDSList) End If End If + End Sub @@ -22796,7 +22805,7 @@ Public Class ClsCompraManagerCompras Public Property CveMetodoPago As Integer Public Property MetodoPago As String - Public Property DocumentosRelacionadosUUIDSList As List(Of String) = New List(Of String) + Public Property DocumentosRelacionadosUUIDSList As HashSet(Of String) = New HashSet(Of String) Public ReadOnly Property DocumentosRelacionadosUUIDSString As String Get Return GeneraStringDoctosRelacionados() @@ -23015,7 +23024,7 @@ Public Class ClsCompraManagerCompras 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 UUIDSLista As New HashSet(Of String) Dim nodeCFDIRelacionados As XmlNode nodeCFDIRelacionados = XMLDoc.SelectSingleNode(String.Format("//{0}:CfdiRelacionados", Prefijo), namespaces) From 373b6481d766481c1eb4316fd009e20e75bbdb2d Mon Sep 17 00:00:00 2001 From: rrene Date: Tue, 4 Feb 2025 13:06:19 -0700 Subject: [PATCH 03/10] - solo mostrar unidades activas --- Transportes/RepContratosCalendario.aspx.vb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Transportes/RepContratosCalendario.aspx.vb b/Transportes/RepContratosCalendario.aspx.vb index 3fa4603f2..ba4c43fb8 100644 --- a/Transportes/RepContratosCalendario.aspx.vb +++ b/Transportes/RepContratosCalendario.aspx.vb @@ -192,9 +192,9 @@ Partial Class RepContratosCalendario Dim strData As New StringBuilder Dim strAFData As New StringBuilder - Dim StrFiltro As String = "" + Dim StrFiltro As String = "" 'solo unidades activas If DdlTipoUnidad.SelectedValue.ToEntero > 0 Then StrFiltro = " AND CveTipoActivoFijo = " & DdlTipoUnidad.SelectedValue - Dim DtUnidades As DataTable = GlobalDTActivoFijos(UsuarioActual.CveEmpresa).FiltraParametros("Codigo <> '' AND MedidaVehicular IN (2,3) " & StrFiltro, Orderby:=" TipoActivoFijo ASC, CodigoNumeroOrden ASC", DistinctColumns:={"Codigo", "CveActivoFijo"}) + Dim DtUnidades As DataTable = GlobalDTActivoFijos(UsuarioActual.CveEmpresa).FiltraParametros("Codigo <> '' AND CveEstadoActivoFijo = 1 AND MedidaVehicular IN (2,3) " & StrFiltro, Orderby:=" TipoActivoFijo ASC, CodigoNumeroOrden ASC", DistinctColumns:={"Codigo", "CveActivoFijo"}) Dim jsonData As New JArray() Dim jsonCategorias As New JArray() Dim random = New Random() From 8b44f91b6990903c721404b0682f0fbd0a163ed7 Mon Sep 17 00:00:00 2001 From: rrene Date: Wed, 5 Feb 2025 09:24:10 -0700 Subject: [PATCH 04/10] -- llamado a sabana de datos de GDiaz --- App_Code/ClsVentas.vb | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/App_Code/ClsVentas.vb b/App_Code/ClsVentas.vb index a1502f8a6..f9331895a 100644 --- a/App_Code/ClsVentas.vb +++ b/App_Code/ClsVentas.vb @@ -7615,6 +7615,29 @@ Public Class ClsVentas End Function + Public Function GetSabanaE189(CveEmpresa As Integer, FechaInicio As Date, FechaFin As Date, CveProveedor As Integer, CodigoPSInicio As String, CodigoPSFin As String) As Boolean + Dim Retorno As Boolean = False + DataAdapter("PA_Vta_VentasSabanaDatos") + + With SqlAdapter.SelectCommand.Parameters + .Add("@CveEmpresa", SqlDbType.Int).Value = CveEmpresa + .Add("@FechaInicio", SqlDbType.Date).Value = FechaInicio + .Add("@FechaFin", SqlDbType.Date).Value = FechaFin + .Add("@CveProveedor", SqlDbType.Int).Value = CveProveedor + .Add("@CodigoProductoI", SqlDbType.VarChar).Value = CodigoPSInicio + .Add("@CodigoProductoF", SqlDbType.VarChar).Value = CodigoPSFin + End With + + Try + SqlAdapter.Fill(Data) + Retorno = True + Catch ex As Exception + OnError("Ocurrió un error al obtener los datos de la Venta.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo) + End Try + + Return Retorno + End Function + #Region "IDisposable Support" From 861d1dee375a4d831d03cc904a3465c0aefe5bdb Mon Sep 17 00:00:00 2001 From: rrene Date: Mon, 10 Feb 2025 11:03:51 -0700 Subject: [PATCH 05/10] -- APLICA DEVOLUCIONES DESDE COMRPAS -- AGREGADO DE APLICASERIE --- Compras/Compras.aspx | 44 +-- Compras/Compras.aspx.vb | 665 ++++++++++++++++++++-------------------- 2 files changed, 347 insertions(+), 362 deletions(-) diff --git a/Compras/Compras.aspx b/Compras/Compras.aspx index 8a318b45f..3258098dc 100644 --- a/Compras/Compras.aspx +++ b/Compras/Compras.aspx @@ -1496,8 +1496,22 @@
- +
+
+
+
+ + + + + +
Almacen: + +
+
+
+
Compra: @@ -1509,31 +1523,17 @@
-
-
-
- - - - - -
Almacen: - -
-
-
- -
- +
+ - - - + + + @@ -1541,7 +1541,7 @@ - + @@ -1549,7 +1549,7 @@ - + diff --git a/Compras/Compras.aspx.vb b/Compras/Compras.aspx.vb index 20b97bf66..244905f30 100644 --- a/Compras/Compras.aspx.vb +++ b/Compras/Compras.aspx.vb @@ -1688,10 +1688,8 @@ Partial Class Compras_Compras 'End If End If - 'SE OCUPAN AFUERA DEL POSTBACK ?? - cargaddlVinculacionServcios() + 'SE OCUPAN AFUERA DEL POSTBACK ?? If UsuarioActual.TienePermisoProceso(117) Then - HplAddClasificacion.Visible = False ImgClasificacion.Visible = False End If @@ -2011,6 +2009,8 @@ Partial Class Compras_Compras SubTotalConceptos = TmpDT.SUMD("Total").RoundSQL If Not TmpDT.Columns.Contains("Amortizacion") Then TmpDT.Columns.Add("Amortizacion", GetType(Decimal)) + + If Not TmpDT.Columns.Contains("AplicaSerie") Then TmpDT.Columns.Add(New DataColumn("AplicaSerie", GetType(Boolean)) With {.DefaultValue = False}) If Not TmpDT.Columns.Contains("AplicaLote") Then TmpDT.Columns.Add(New DataColumn("AplicaLote", GetType(Boolean)) With {.DefaultValue = False}) If Not TmpDT.Columns.Contains("AplicaCaducidad") Then TmpDT.Columns.Add(New DataColumn("AplicaCaducidad", GetType(Boolean)) With {.DefaultValue = False}) If Not TmpDT.Columns.Contains("Lote") Then TmpDT.Columns.Add("Lote", GetType(String)) @@ -3081,19 +3081,15 @@ Partial Class Compras_Compras If Not TmpDT.Columns.Contains("ImporteSinImpuestos") Then TmpDT.Columns.Add("ImporteSinImpuestos", GetType(Decimal)) End If - If Not TmpDT.Columns.Contains("AplicaLote") Then - TmpDT.Columns.Add("AplicaLote", GetType(Boolean)) - End If - If Not TmpDT.Columns.Contains("AplicaCaducidad") Then - TmpDT.Columns.Add("AplicaCaducidad", GetType(Boolean)) - End If + If Not TmpDT.Columns.Contains("AplicaSerie") Then TmpDT.Columns.Add("AplicaSerie", GetType(Boolean)) - If Not TmpDT.Columns.Contains("Lote") Then - TmpDT.Columns.Add("Lote", GetType(String)) - End If - If Not TmpDT.Columns.Contains("FechaCaducidad") Then - TmpDT.Columns.Add("FechaCaducidad", GetType(Date)) - End If + If Not TmpDT.Columns.Contains("AplicaLote") Then TmpDT.Columns.Add("AplicaLote", GetType(Boolean)) + + If Not TmpDT.Columns.Contains("AplicaCaducidad") Then TmpDT.Columns.Add("AplicaCaducidad", GetType(Boolean)) + + If Not TmpDT.Columns.Contains("Lote") Then TmpDT.Columns.Add("Lote", GetType(String)) + + If Not TmpDT.Columns.Contains("FechaCaducidad") Then TmpDT.Columns.Add("FechaCaducidad", GetType(Date)) GvPS.DataSource = TmpDT GvPS.DataBind() @@ -4272,22 +4268,8 @@ Partial Class Compras_Compras #End Region -#Region "Vinculacion De Servcios" - Private Function isAdminObraGluyas() As Boolean - Return (UsuarioActual.CveRol = 1047 And UsuarioActual.CveEmpresa = 66) - End Function - Private Sub cargaddlVinculacionServcios() - If isAdminObraGluyas() Then - TabVinculacionServicios.Visible = True - 'Dim productos As New ClsProductosServicios - 'If productos.GetPS(-1, -1, UsuarioActual.CveEmpresa) Then - ' PSDTRemplazo = productos.DtResultados.FiltraParametros("CveTipoPS=2", "PS") - 'End If - 'productos.Dispose() - GVVinculacionServicios.DataSource = TmpDT - GVVinculacionServicios.DataBind() - End If - End Sub +#Region "Vinculacion De Servicios" + Protected Sub GVVinculacionServicios_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles GVVinculacionServicios.RowDataBound If e.Row.RowType = DataControlRowType.DataRow Then Dim dt As DataTable = Nothing @@ -4447,7 +4429,7 @@ Partial Class Compras_Compras Dim CapitalMiltiple As Decimal = GvRow.FCTextBox("TxtCapital").Text.ToDecimal Dim InteresMiltiple As Decimal = GvRow.FCTextBox("TxtInteres").Text.ToDecimal - Dim AmbosMiltiple As Decimal = GvRow.FCTextBox("TxtAmbos").Text.ToDecimal + Dim AmbosMultiple As Decimal = GvRow.FCTextBox("TxtAmbos").Text.ToDecimal Dim MensualidadMultiple As Decimal = GvRow.DataKey("Mensualidad").ToDecimal If CapitalMiltiple > 0 Or InteresMiltiple > 0 Then @@ -4456,9 +4438,9 @@ Partial Class Compras_Compras MensualidadMultipleTotal = MensualidadMultipleTotal + MensualidadMultiple 'CveUltimoCreditoDetalleInterno = GvRow.DataKey("CveCreditoDetalle").ToEntero - ElseIf AmbosMiltiple > 0 Then + ElseIf AmbosMultiple > 0 Then - TotalCreditos = TotalCreditos + AmbosMiltiple + TotalCreditos = TotalCreditos + AmbosMultiple MensualidadMultipleTotal = MensualidadMultipleTotal + MensualidadMultiple 'CveUltimoCreditoDetalleInterno = GvRow.DataKey("CveCreditoDetalle").ToEntero EstatusCredito = GvRow.DataKey("Estatus").ToEntero @@ -5623,275 +5605,278 @@ Partial Class Compras_Compras ' If DdlMoneda.SelectedValue.ToEntero = 1 Or (DdlMoneda.SelectedValue.ToEntero > 1 AndAlso GlobalTipoCambio(TxtFecha.Text.ToDate) > 0) Then ''ALMACEN CONSIGNACION - If CveConsignacion > 0 AndAlso CveCompraRefacturacion <= 0 Then + If DdlTipoComprobante.SelectedValue = "Fac" Then - 'actualizamos cvecompraconsignacion - For Each gvr As GridViewRow In GvInv.Rows - If gvr.FCCheckBox("cbinv").Checked AndAlso gvr.FCHiddenField("HdnCveConsignacion").Value.ToEntero > 0 Then - If Not ObjInventario.UpdateConsignacionesCompra(CveCompra, gvr.FCHiddenField("HdnCveConsignacion").Value.ToEntero, gvr.FCHiddenField("HdnCveAlmacen").Value.ToEntero, gvr.FCHiddenField("HdnCvePS").Value.ToEntero, gvr.DataKey("Cantidad").ToDecimal, UsuarioActual.CveEmpresa) Then - ErrorMovInv = True - Exit For + If CveConsignacion > 0 AndAlso CveCompraRefacturacion <= 0 Then + + 'actualizamos cvecompraconsignacion + For Each gvr As GridViewRow In GvInv.Rows + If gvr.FCCheckBox("cbinv").Checked AndAlso gvr.FCHiddenField("HdnCveConsignacion").Value.ToEntero > 0 Then + If Not ObjInventario.UpdateConsignacionesCompra(CveCompra, gvr.FCHiddenField("HdnCveConsignacion").Value.ToEntero, gvr.FCHiddenField("HdnCveAlmacen").Value.ToEntero, gvr.FCHiddenField("HdnCvePS").Value.ToEntero, gvr.DataKey("Cantidad").ToDecimal, UsuarioActual.CveEmpresa) Then + ErrorMovInv = True + Exit For + End If End If + Next + + If Not ErrorMovInv Then + + Dim x As Integer = 0 + For Each dr As DataRow In DtInv.Rows + If GvInv.Rows(x).FCCheckBox("cbInv").Checked And GvInv.Rows(x).FCTextBox("TbCantidad").Text.ToDouble > 0 Then + + Dim TmpDr As DataRow = TmpDT.Select($"Consec = {dr("Consec").ToString.ToEntero}")(0) 'Charlie + TmpDr("CveAlmacen") = GvInv.Rows(x).FCDropDownList("ddlEAlmacen").SelectedValue.ToEntero 'Charlie + + dr("CveAlmacen") = GvInv.Rows(x).FCDropDownList("ddlealmacen").SelectedValue.ToEntero + dr("Cantidad") = GvInv.Rows(x).FCTextBox("TbCantidad").Text.ToDouble + Else + Dim TmpDr As DataRow = TmpDT.Select($"Consec = {dr("Consec").ToString.ToEntero}")(0) 'Charlie + TmpDr("CveAlmacen") = 0 'Charlie + + dr("CveAlmacen") = 0 + End If + x = x + 1 + Next + + Dim cvemovimientosalida As Integer = 0 + Dim cvemovimientoentrada As Integer = 0 + Dim cvemovimientosalidagasto As Integer = 0 + Dim folio As Integer = 0 + Dim fecha As Date = TxtFecha.Text.ToDate + Dim indice As Integer = 0 + Dim importeconcepto As Decimal = 0 + + Dim listalmacenes As List(Of Integer) = (From cvealmacen In DtInv.AsEnumerable() Where cvealmacen.Field(Of Integer)("cvealmacen") > 0 Select cvealmacen.Field(Of Integer)("cvealmacen")).Distinct().ToList + + For Each tcvealmacen As Integer In listalmacenes + + Dim ObsGDiaz As String = If(EsGrupoDiaz, TxtObsFact.Text, "") + + If GvInv.Rows(indice).FCDropDownList("ddlrecibirinv").SelectedValue = "1" Then + Continue For + End If + indice += 1 + + 'agregamos la entrada + If Not UsuarioActual.Empresa.UsaAC Then fecha = NowADS() + + folio = ObjInventario.GetFolioSiguiente(2, UsuarioActual.CveEmpresa) + cvemovimientoentrada = ObjInventario.AddMovimiento(tcvealmacen, 2, 1, fecha, folio, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveCompra, -1, -1, -1, TipoCambio:=If(DdlMoneda.SelectedValue.ToEntero = 1, -1, TipoCambioGuardar), Modulo:="Comp/G4", Observaciones:=ObsGDiaz) + If cvemovimientoentrada <= 0 Then + ErrorMovInv = True + Exit For + Else + CveMovimientoInventario = cvemovimientoentrada + ListaMovimientosAlmacen.Add(CveMovimientoInventario) + + For Each dr As DataRow In DtInv.Rows + If dr("cvealmacen").ToString.ToEntero = tcvealmacen Then + 'hay que restarle descuento + Dim Lote As String = dr("Lote").ToString + Dim FechaCaducidad As Date = If(dr("FechaCaducidad").ToString.ToDate <= MinFecha, MinFecha, dr("FechaCaducidad").ToString.ToDate) + importeconcepto = If(DdlMoneda.SelectedValue.ToEntero = 1, dr("pu").ToString.ToDecimal, dr("pu").ToString.ToDecimal * TipoCambioGuardar) - (If(DdlMoneda.SelectedValue.ToEntero = 1, dr("descuento").ToString.ToDecimal, dr("descuento").ToString.ToDecimal * TipoCambioGuardar) / dr("cantidad").ToString.ToDecimal) + If Not ObjInventario.AddMovimientoDetalle(cvemovimientoentrada, dr("cantidad").ToString.ToDecimal, dr("cveum").ToString.ToEntero, dr("cveps").ToString.ToEntero, importeconcepto, -1, PUTC:=If(DdlMoneda.SelectedValue.ToEntero = 1, -1, dr("pu").ToString.ToDecimal), CveCompraDetalle:=dr("CveCompraDetalle").ToString.ToEntero, Lote:=Lote, FechaCaducidad:=FechaCaducidad) Then + ErrorMovInv = True + Exit For + End If + End If + Next + End If + + 'agregamos la salida + folio = ObjInventario.GetFolioSiguiente(3, UsuarioActual.CveEmpresa) + cvemovimientosalidagasto = ObjInventario.AddMovimiento(tcvealmacen, 3, DdlMoneda.SelectedValue.ToEntero, fecha.AddSeconds(1), folio, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveCompra, -1, -1, -1, Modulo:="Comp/G3", Observaciones:=ObsGDiaz) + If cvemovimientosalidagasto <= 0 Then + ErrorMovInv = True + Exit For + Else + If ObjInventario.GetMovimientosDetalle(cvemovimientoentrada, UsuarioActual.CveEmpresa) Then + For Each dr As DataRow In ObjInventario.DtResultados.Rows + Dim Lote As String = dr("Lote").ToString + Dim FechaCaducidad As Date = If(dr("FechaCaducidad").ToString.ToDate <= MinFecha, MinFecha, dr("FechaCaducidad").ToString.ToDate) + If Not ObjInventario.AddMovimientoDetalle(cvemovimientosalidagasto, dr("cantidad").ToString.ToDecimal, dr("cveum").ToString.ToEntero, dr("cveps").ToString.ToEntero, 0, dr("cveaf").ToString.ToEntero, CveCompraDetalle:=dr("CveCompraDetalle").ToString.ToEntero, Lote:=Lote, FechaCaducidad:=FechaCaducidad) Then + ErrorMovInv = True + Exit For + End If + Next + End If + End If + Next + End If - Next - If Not ErrorMovInv Then + ''ALMACEN NORMAL + Else + 'OBTIENE ALMACENES Dim x As Integer = 0 - For Each dr As DataRow In DtInv.Rows - If GvInv.Rows(x).FCCheckBox("cbInv").Checked And GvInv.Rows(x).FCTextBox("TbCantidad").Text.ToDouble > 0 Then + For Each Dr As DataRow In DtInv.Rows + If GvInv.Rows(x).FCCheckBox("cbInv").Checked And GvInv.Rows(x).FCTextBox("TbCantidad").Text.ToDecimal > 0 Then - Dim TmpDr As DataRow = TmpDT.Select($"Consec = {dr("Consec").ToString.ToEntero}")(0) 'Charlie - TmpDr("CveAlmacen") = GvInv.Rows(x).FCDropDownList("ddlEAlmacen").SelectedValue.ToEntero 'Charlie + Dim TmpDr As DataRow = TmpDT.Select($"Consec = {Dr("Consec").ToString.ToEntero}")(0) + TmpDr("CveAlmacen") = GvInv.Rows(x).FCDropDownList("ddlEAlmacen").SelectedValue.ToEntero - dr("CveAlmacen") = GvInv.Rows(x).FCDropDownList("ddlealmacen").SelectedValue.ToEntero - dr("Cantidad") = GvInv.Rows(x).FCTextBox("TbCantidad").Text.ToDouble - Else - Dim TmpDr As DataRow = TmpDT.Select($"Consec = {dr("Consec").ToString.ToEntero}")(0) 'Charlie - TmpDr("CveAlmacen") = 0 'Charlie + Dr("CveAlmacen") = GvInv.Rows(x).FCDropDownList("ddlEAlmacen").SelectedValue.ToEntero + Dr("Cantidad") = GvInv.Rows(x).FCTextBox("TbCantidad").Text.ToDouble - dr("CveAlmacen") = 0 + Else 'limpio el valor para que no truene en linq mas abajo + + Dim TmpDr As DataRow = TmpDT.Select($"Consec = {Dr("Consec").ToString.ToEntero}")(0) + TmpDr("CveAlmacen") = 0 + + Dr("CveAlmacen") = 0 End If x = x + 1 Next - Dim cvemovimientosalida As Integer = 0 - Dim cvemovimientoentrada As Integer = 0 - Dim cvemovimientosalidagasto As Integer = 0 - Dim folio As Integer = 0 - Dim fecha As Date = TxtFecha.Text.ToDate + Dim i As Integer = 0 + Dim ListAlmacenes As List(Of Integer) = (From CveAlmacen In DtInv.AsEnumerable() Where CveAlmacen.Field(Of Integer)("CveAlmacen") > 0 Select CveAlmacen.Field(Of Integer)("CveAlmacen")).Distinct().ToList Dim indice As Integer = 0 - Dim importeconcepto As Decimal = 0 + Dim ImporteConcepto As Decimal = 0 + Dim tCveFolioGarantia As Integer = -1 + Dim tCveEntregaAlmacen As Integer = -1 + Dim CveConceptoMovimiento As Integer = 2 + If UsuarioActual.Empresa.Funcionalidad(531) = "1" AndAlso DdlTipoComprobante.SelectedValue.Contiene("NC", "DEV") Then 'cuando es empresa acumuladora + 'apoyo logistico/garantia + If DdlTipoCompra.SelectedValue = "12" Then 'garantía + CveConceptoMovimiento = 13 + tCveFolioGarantia = DdlFolioGarantia.SelectedValue.ToEntero + End If + ''recolección + 'If DdlTipoCompra.SelectedValue = "14" Then 'recolección + ' CveConceptoMovimiento = 42 + ' tCveEntregaAlmacen = DdlRecoleccion.SelectedValue.ToEntero + 'End If + End If - Dim listalmacenes As List(Of Integer) = (From cvealmacen In DtInv.AsEnumerable() Where cvealmacen.Field(Of Integer)("cvealmacen") > 0 Select cvealmacen.Field(Of Integer)("cvealmacen")).Distinct().ToList - - For Each tcvealmacen As Integer In listalmacenes + If (DdlTipoComprobante.SelectedValue = "Fac" AndAlso CveCompraRefacturacion <= 0) OrElse CveConceptoMovimiento = 13 Then Dim ObsGDiaz As String = If(EsGrupoDiaz, TxtObsFact.Text, "") - If GvInv.Rows(indice).FCDropDownList("ddlrecibirinv").SelectedValue = "1" Then - Continue For - End If - indice += 1 + For Each tCveAlmacen As Integer In ListAlmacenes + If GvInv.Rows(indice).FCDropDownList("DdlRecibirInv").SelectedValue = "1" Then + Continue For + End If + indice += 1 - 'agregamos la entrada - If Not UsuarioActual.Empresa.UsaAC Then fecha = NowADS() + Dim fecha As Date = TxtFecha.Text.ToDate + If Not UsuarioActual.Empresa.UsaAC Then fecha = NowADS() - folio = ObjInventario.GetFolioSiguiente(2, UsuarioActual.CveEmpresa) - cvemovimientoentrada = ObjInventario.AddMovimiento(tcvealmacen, 2, 1, fecha, folio, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveCompra, -1, -1, -1, TipoCambio:=If(DdlMoneda.SelectedValue.ToEntero = 1, -1, TipoCambioGuardar), Modulo:="Comp/G4", Observaciones:=ObsGDiaz) - If cvemovimientoentrada <= 0 Then - ErrorMovInv = True - Exit For - Else - CveMovimientoInventario = cvemovimientoentrada - ListaMovimientosAlmacen.Add(CveMovimientoInventario) + CveMovimientoInventario = ObjInventario.AddMovimiento(tCveAlmacen, CveConceptoMovimiento, 1, fecha, 0, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveCompra, -1, -1, -1, TipoCambio:=If(DdlMoneda.SelectedValue.ToEntero = 1, -1, TipoCambioGuardar), CveFolioGarantia:=tCveFolioGarantia, Modulo:="Comp/G2", CveEntregaAlmacen:=tCveEntregaAlmacen, Observaciones:=ObsGDiaz) - For Each dr As DataRow In DtInv.Rows - If dr("cvealmacen").ToString.ToEntero = tcvealmacen Then - 'hay que restarle descuento - Dim Lote As String = dr("Lote").ToString - Dim FechaCaducidad As Date = If(dr("FechaCaducidad").ToString.ToDate <= MinFecha, MinFecha, dr("FechaCaducidad").ToString.ToDate) - importeconcepto = If(DdlMoneda.SelectedValue.ToEntero = 1, dr("pu").ToString.ToDecimal, dr("pu").ToString.ToDecimal * TipoCambioGuardar) - (If(DdlMoneda.SelectedValue.ToEntero = 1, dr("descuento").ToString.ToDecimal, dr("descuento").ToString.ToDecimal * TipoCambioGuardar) / dr("cantidad").ToString.ToDecimal) - If Not ObjInventario.AddMovimientoDetalle(cvemovimientoentrada, dr("cantidad").ToString.ToDecimal, dr("cveum").ToString.ToEntero, dr("cveps").ToString.ToEntero, importeconcepto, -1, PUTC:=If(DdlMoneda.SelectedValue.ToEntero = 1, -1, dr("pu").ToString.ToDecimal), CveCompraDetalle:=dr("CveCompraDetalle").ToString.ToEntero, Lote:=Lote, FechaCaducidad:=FechaCaducidad) Then - ErrorMovInv = True - Exit For - End If - End If - Next - End If - - 'agregamos la salida - folio = ObjInventario.GetFolioSiguiente(3, UsuarioActual.CveEmpresa) - cvemovimientosalidagasto = ObjInventario.AddMovimiento(tcvealmacen, 3, DdlMoneda.SelectedValue.ToEntero, fecha.AddSeconds(1), folio, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveCompra, -1, -1, -1, Modulo:="Comp/G3", Observaciones:=ObsGDiaz) - If cvemovimientosalidagasto <= 0 Then - ErrorMovInv = True - Exit For - Else - If ObjInventario.GetMovimientosDetalle(cvemovimientoentrada, UsuarioActual.CveEmpresa) Then - For Each dr As DataRow In ObjInventario.DtResultados.Rows - Dim Lote As String = dr("Lote").ToString - Dim FechaCaducidad As Date = If(dr("FechaCaducidad").ToString.ToDate <= MinFecha, MinFecha, dr("FechaCaducidad").ToString.ToDate) - If Not ObjInventario.AddMovimientoDetalle(cvemovimientosalidagasto, dr("cantidad").ToString.ToDecimal, dr("cveum").ToString.ToEntero, dr("cveps").ToString.ToEntero, 0, dr("cveaf").ToString.ToEntero, CveCompraDetalle:=dr("CveCompraDetalle").ToString.ToEntero, Lote:=Lote, FechaCaducidad:=FechaCaducidad) Then - ErrorMovInv = True - Exit For + If CveMovimientoInventario <= 0 Then + ErrorMovInv = True + Else + + Dim DtDetalle As New DataTable + Dim DtEquivalencias As DataTable + Dim CveProducto As Integer + Dim CantidadInv As Decimal + Dim PUInv As Decimal + Dim CveUnidad As Integer + Dim CostoIndirecto As Decimal + Dim tDescuento As Decimal = 0 + + ListaMovimientosAlmacen.Add(CveMovimientoInventario) + + Dim contadorAlamcen As Integer = 0 + For Each Dr As DataRow In DtInv.Rows + + CveProducto = Dr("CvePS").ToString.ToEntero + CveUnidad = Dr("CveUM").ToString.ToEntero + CantidadInv = Dr("Cantidad").ToString.ToDecimal + PUInv = Dr("PU").ToString.ToDecimal + tDescuento = Dr("Descuento").ToString.ToDecimal / CantidadInv + CostoIndirecto = Dr("CostoIndirectoAlmacen").ToString.ToDecimal + + Dim Lote As String = Dr("Lote").ToString + Dim FechaCaducidad As Date = If(Dr("FechaCaducidad").ToString.ToDate <= MinFecha, MinFecha, Dr("FechaCaducidad").ToString.ToDate) + + Dim AplicaLote As Boolean = If(Dr("AplicaLote").ToString.Trim = "", False, Boolean.Parse(Dr("AplicaLote").ToString)) + Dim AplicaCaducidad As Boolean = If(Dr("AplicaCaducidad").ToString.Trim = "", False, Boolean.Parse(Dr("AplicaCaducidad").ToString)) + Dim CodigoPS As String = Dr("CodigoPS").ToString + + If Dr("CveMetodoInventario").ToString.ToEntero = 5 Then + 'SI FUE POR SERIE LOTE + DtDetalle = DtDatosDetalle.FiltraParametros(String.Format("CvePS = {0}", Dr("CvePS"))) + If DtDetalle.Rows.Count > 0 Then + For Each drr As DataRow In DtDetalle.Rows + + Dim fechaDetalle As Date = drr("FechaCaducidad").ToString.ToDate + + If Not ObjInventario.AddMovimientoDetalle(CveMovimientoInventario, 1, Dr("CveUM").ToString.ToEntero, Dr("CvePS").ToString.ToEntero, Dr("PU").ToString.ToDecimal, -1, Serie:=drr("Serie").ToString, FechaCaducidad:=drr("FechaCaducidad").ToString.ToDate, CostoIndirecto:=Dr("CostoIndirectoAlmacen").ToString.ToDecimal, CveCompraDetalle:=Dr("CveCompraDetalle").ToString.ToEntero, CveOrdenCompraDetalle:=Dr("CveOrdenCompraDetalle").ToString.ToEntero) Then + ErrorMovInv = True + Exit For + End If + Next + End If + Else + 'UNIDAD BASE - EQUIVALENCIAS - INVENTARIO + If UsuarioActual.CveEmpresa = 1 Then + DtEquivalencias = New DataTable + DtEquivalencias = GlobalDTProductosServiciosEquivalencias(CveProducto, -1, UsuarioActual.CveEmpresa) + Dim CveUnidadBase As Integer = DtEquivalencias.FiltroPrimeroValor("CveUM", "UnidadBase = 'True'").ToEntero + Dim drUMBase As DataRow = DtEquivalencias.FiltroPrimero("UnidadBase = 'True'") + + 'SI LA UNIDAD ACTUAL NO ES LA BASE SACA PROPORCION (EQUIVALENTE) + If CveUnidadBase <> CveUnidad Then + ' LO QUE PUSE LO QUE VALE UNIDAD BASE LO QUE VALE UNIDAD SELECCIONADA + CantidadInv = Dr("Cantidad").ToString.ToDecimal * drUMBase("Cantidad").ToString.ToDecimal / DtEquivalencias.FiltraParametros(String.Format("CveUM = {0}", CveUnidad)).Rows(0)("Cantidad").ToString.ToDecimal + PUInv = PUInv * Dr("Cantidad").ToString.ToDecimal / CantidadInv + CostoIndirecto = CostoIndirecto * Dr("Cantidad").ToString.ToDecimal / CantidadInv + CveUnidad = CveUnidadBase + End If + End If + ImporteConcepto = If(DdlMoneda.SelectedValue.ToEntero = 1, PUInv, PUInv * TipoCambioGuardar) - If(DdlMoneda.SelectedValue.ToEntero = 1, tDescuento, tDescuento * TipoCambioGuardar) + 'si no es por serie lote + ImporteConcepto = If(UsuarioActual.Empresa.UsaAC, ImporteConcepto * IVA, ImporteConcepto) + If Dr("CveAlmacen").ToString.ToEntero = tCveAlmacen Then + + If AplicaLote And Lote.Trim = "" Then + ErrorMovInv = True + Alert($"Porducto {CodigoPS} requiere Lote.", TipoMensaje.MsgAdvertencia) + Exit For + End If + If AplicaCaducidad And FechaCaducidad <= MinFecha Then + ErrorMovInv = True + Alert($"Porducto {CodigoPS} requiere fecha de caducidad.", TipoMensaje.MsgAdvertencia) + Exit For + End If + + If Not ErrorMovInv Then + If Not ObjInventario.AddMovimientoDetalle(CveMovimientoInventario, CantidadInv, CveUnidad, Dr("CvePS").ToString.ToEntero, ImporteConcepto, -1, PUTC:=If(DdlMoneda.SelectedValue.ToEntero = 1, -1, Dr("PU").ToString.ToDecimal), CostoIndirecto:=CostoIndirecto, CveCompraDetalle:=Dr("CveCompraDetalle").ToString.ToEntero, CveOrdenCompraDetalle:=Dr("CveOrdenCompraDetalle").ToString.ToEntero, Lote:=Lote, FechaCaducidad:=FechaCaducidad) Then + ErrorMovInv = True + Exit For + End If + End If + + + End If End If + i = i + 1 + contadorAlamcen = contadorAlamcen + 1 Next - End If - End If - Next - - End If - - ''ALMACEN NORMAL - Else - - 'OBTIENE ALMACENES - Dim x As Integer = 0 - For Each Dr As DataRow In DtInv.Rows - If GvInv.Rows(x).FCCheckBox("cbInv").Checked And GvInv.Rows(x).FCTextBox("TbCantidad").Text.ToDecimal > 0 Then - - Dim TmpDr As DataRow = TmpDT.Select($"Consec = {Dr("Consec").ToString.ToEntero}")(0) - TmpDr("CveAlmacen") = GvInv.Rows(x).FCDropDownList("ddlEAlmacen").SelectedValue.ToEntero - - Dr("CveAlmacen") = GvInv.Rows(x).FCDropDownList("ddlEAlmacen").SelectedValue.ToEntero - Dr("Cantidad") = GvInv.Rows(x).FCTextBox("TbCantidad").Text.ToDouble - - Else 'limpio el valor para que no truene en linq mas abajo - - Dim TmpDr As DataRow = TmpDT.Select($"Consec = {Dr("Consec").ToString.ToEntero}")(0) - TmpDr("CveAlmacen") = 0 - - Dr("CveAlmacen") = 0 - End If - x = x + 1 - Next - - Dim i As Integer = 0 - Dim ListAlmacenes As List(Of Integer) = (From CveAlmacen In DtInv.AsEnumerable() Where CveAlmacen.Field(Of Integer)("CveAlmacen") > 0 Select CveAlmacen.Field(Of Integer)("CveAlmacen")).Distinct().ToList - Dim indice As Integer = 0 - Dim ImporteConcepto As Decimal = 0 - Dim tCveFolioGarantia As Integer = -1 - Dim tCveEntregaAlmacen As Integer = -1 - Dim CveConceptoMovimiento As Integer = 2 - If UsuarioActual.Empresa.Funcionalidad(531) = "1" AndAlso DdlTipoComprobante.SelectedValue.Contiene("NC", "DEV") Then 'cuando es empresa acumuladora - 'apoyo logistico/garantia - If DdlTipoCompra.SelectedValue = "12" Then 'garantía - CveConceptoMovimiento = 13 - tCveFolioGarantia = DdlFolioGarantia.SelectedValue.ToEntero - End If - ''recolección - 'If DdlTipoCompra.SelectedValue = "14" Then 'recolección - ' CveConceptoMovimiento = 42 - ' tCveEntregaAlmacen = DdlRecoleccion.SelectedValue.ToEntero - 'End If - End If - - If (DdlTipoComprobante.SelectedValue = "Fac" AndAlso CveCompraRefacturacion <= 0) OrElse CveConceptoMovimiento = 13 Then - - Dim ObsGDiaz As String = If(EsGrupoDiaz, TxtObsFact.Text, "") - - For Each tCveAlmacen As Integer In ListAlmacenes - If GvInv.Rows(indice).FCDropDownList("DdlRecibirInv").SelectedValue = "1" Then - Continue For - End If - indice += 1 - - Dim fecha As Date = TxtFecha.Text.ToDate - If Not UsuarioActual.Empresa.UsaAC Then fecha = NowADS() - - CveMovimientoInventario = ObjInventario.AddMovimiento(tCveAlmacen, CveConceptoMovimiento, 1, fecha, 0, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveCompra, -1, -1, -1, TipoCambio:=If(DdlMoneda.SelectedValue.ToEntero = 1, -1, TipoCambioGuardar), CveFolioGarantia:=tCveFolioGarantia, Modulo:="Comp/G2", CveEntregaAlmacen:=tCveEntregaAlmacen, Observaciones:=ObsGDiaz) - - If CveMovimientoInventario <= 0 Then - ErrorMovInv = True - Else - - Dim DtDetalle As New DataTable - Dim DtEquivalencias As DataTable - Dim CveProducto As Integer - Dim CantidadInv As Decimal - Dim PUInv As Decimal - Dim CveUnidad As Integer - Dim CostoIndirecto As Decimal - Dim tDescuento As Decimal = 0 - - ListaMovimientosAlmacen.Add(CveMovimientoInventario) - - Dim contadorAlamcen As Integer = 0 - For Each Dr As DataRow In DtInv.Rows - - CveProducto = Dr("CvePS").ToString.ToEntero - CveUnidad = Dr("CveUM").ToString.ToEntero - CantidadInv = Dr("Cantidad").ToString.ToDecimal - PUInv = Dr("PU").ToString.ToDecimal - tDescuento = Dr("Descuento").ToString.ToDecimal / CantidadInv - CostoIndirecto = Dr("CostoIndirectoAlmacen").ToString.ToDecimal - - Dim Lote As String = Dr("Lote").ToString - Dim FechaCaducidad As Date = If(Dr("FechaCaducidad").ToString.ToDate <= MinFecha, MinFecha, Dr("FechaCaducidad").ToString.ToDate) - - Dim AplicaLote As Boolean = If(Dr("AplicaLote").ToString.Trim = "", False, Boolean.Parse(Dr("AplicaLote").ToString)) - Dim AplicaCaducidad As Boolean = If(Dr("AplicaCaducidad").ToString.Trim = "", False, Boolean.Parse(Dr("AplicaCaducidad").ToString)) - Dim CodigoPS As String = Dr("CodigoPS").ToString - - If Dr("CveMetodoInventario").ToString.ToEntero = 5 Then - 'SI FUE POR SERIE LOTE - DtDetalle = DtDatosDetalle.FiltraParametros(String.Format("CvePS = {0}", Dr("CvePS"))) - If DtDetalle.Rows.Count > 0 Then - For Each drr As DataRow In DtDetalle.Rows - - Dim fechaDetalle As Date = drr("FechaCaducidad").ToString.ToDate - - If Not ObjInventario.AddMovimientoDetalle(CveMovimientoInventario, 1, Dr("CveUM").ToString.ToEntero, Dr("CvePS").ToString.ToEntero, Dr("PU").ToString.ToDecimal, -1, Serie:=drr("Serie").ToString, FechaCaducidad:=drr("FechaCaducidad").ToString.ToDate, CostoIndirecto:=Dr("CostoIndirectoAlmacen").ToString.ToDecimal, CveCompraDetalle:=Dr("CveCompraDetalle").ToString.ToEntero, CveOrdenCompraDetalle:=Dr("CveOrdenCompraDetalle").ToString.ToEntero) Then - ErrorMovInv = True - Exit For - End If - Next - End If - Else - 'UNIDAD BASE - EQUIVALENCIAS - INVENTARIO - If UsuarioActual.CveEmpresa = 1 Then - DtEquivalencias = New DataTable - DtEquivalencias = GlobalDTProductosServiciosEquivalencias(CveProducto, -1, UsuarioActual.CveEmpresa) - Dim CveUnidadBase As Integer = DtEquivalencias.FiltroPrimeroValor("CveUM", "UnidadBase = 'True'").ToEntero - Dim drUMBase As DataRow = DtEquivalencias.FiltroPrimero("UnidadBase = 'True'") - - 'SI LA UNIDAD ACTUAL NO ES LA BASE SACA PROPORCION (EQUIVALENTE) - If CveUnidadBase <> CveUnidad Then - ' LO QUE PUSE LO QUE VALE UNIDAD BASE LO QUE VALE UNIDAD SELECCIONADA - CantidadInv = Dr("Cantidad").ToString.ToDecimal * drUMBase("Cantidad").ToString.ToDecimal / DtEquivalencias.FiltraParametros(String.Format("CveUM = {0}", CveUnidad)).Rows(0)("Cantidad").ToString.ToDecimal - PUInv = PUInv * Dr("Cantidad").ToString.ToDecimal / CantidadInv - CostoIndirecto = CostoIndirecto * Dr("Cantidad").ToString.ToDecimal / CantidadInv - CveUnidad = CveUnidadBase - End If - End If - ImporteConcepto = If(DdlMoneda.SelectedValue.ToEntero = 1, PUInv, PUInv * TipoCambioGuardar) - If(DdlMoneda.SelectedValue.ToEntero = 1, tDescuento, tDescuento * TipoCambioGuardar) - 'si no es por serie lote - ImporteConcepto = If(UsuarioActual.Empresa.UsaAC, ImporteConcepto * IVA, ImporteConcepto) - If Dr("CveAlmacen").ToString.ToEntero = tCveAlmacen Then - - If AplicaLote And Lote.Trim = "" Then - ErrorMovInv = True - Alert($"Porducto {CodigoPS} requiere Lote.", TipoMensaje.MsgAdvertencia) - Exit For - End If - If AplicaCaducidad And FechaCaducidad <= MinFecha Then - ErrorMovInv = True - Alert($"Porducto {CodigoPS} requiere fecha de caducidad.", TipoMensaje.MsgAdvertencia) - Exit For - End If - - If Not ErrorMovInv Then - If Not ObjInventario.AddMovimientoDetalle(CveMovimientoInventario, CantidadInv, CveUnidad, Dr("CvePS").ToString.ToEntero, ImporteConcepto, -1, PUTC:=If(DdlMoneda.SelectedValue.ToEntero = 1, -1, Dr("PU").ToString.ToDecimal), CostoIndirecto:=CostoIndirecto, CveCompraDetalle:=Dr("CveCompraDetalle").ToString.ToEntero, CveOrdenCompraDetalle:=Dr("CveOrdenCompraDetalle").ToString.ToEntero, Lote:=Lote, FechaCaducidad:=FechaCaducidad) Then - ErrorMovInv = True - Exit For - End If - End If - + ''insertar en prepólizas + If CveMovimientoAlmacen > 0 Then + Dim tImporte As Decimal + If ObjInventario.GetMovimientosDetalle(CveMovimientoAlmacen, UsuarioActual.CveEmpresa) Then + tImporte = ObjInventario.DtResultados.SUM("Total") End If + ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, tImporte, tImporte, 68, ObjInventario.Folio.ToString, ObjInventario.Folio.ToString, CveMovimientoAlmacen:=CveMovimientoInventario) End If - i = i + 1 - contadorAlamcen = contadorAlamcen + 1 - Next - ''insertar en prepólizas - If CveMovimientoAlmacen > 0 Then - Dim tImporte As Decimal - If ObjInventario.GetMovimientosDetalle(CveMovimientoAlmacen, UsuarioActual.CveEmpresa) Then - tImporte = ObjInventario.DtResultados.SUM("Total") - End If - ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, tImporte, tImporte, 68, ObjInventario.Folio.ToString, ObjInventario.Folio.ToString, CveMovimientoAlmacen:=CveMovimientoInventario) End If - - End If - Next + Next + End If End If - End If - If AplicarCostoIndirecto(ObjInventario, ObjCompras) Then - ErrorMovInv = True - End If + If AplicarCostoIndirecto(ObjInventario, ObjCompras) Then + ErrorMovInv = True + End If + End If End If '*************************************************** P R I M E R A P A R T E C O M P R A S ************************************************************************************************************************************************************************************************************************************************************************************************** @@ -6816,7 +6801,7 @@ Partial Class Compras_Compras Dim RegistroCuentaPuente As Boolean = False 'NC CON PRODUCTOS - CUENTA PUENTE - If DdlTipoComprobante.SelectedValue = "NC" And DdlTipoCompra.SelectedValue.Contiene("9", "12") Then + If DdlTipoComprobante.SelectedValue = "NC" AndAlso DdlTipoCompra.SelectedValue.Contiene("9", "12") Then RegistraConcepto225 = True End If @@ -6835,15 +6820,14 @@ Partial Class Compras_Compras If Devolucion IsNot Nothing AndAlso Devolucion.DebeRealizarDevolucion AndAlso Devolucion.CveMovimiento > 0 Then ConceptoContabilizacionNC = 68 CveMovimientoDevolucion = Devolucion.CveMovimiento + importeMovimiento = TmpDT.SUM("Total") + importeMN = importeMovimiento * tipoCambioActual * Multiplicador End If 'cuando es garantía. - If DdlTipoCompra.SelectedValue.Contiene("12", "14") Then - ConceptoContabilizacionNC = 259 - End If + If DdlTipoCompra.SelectedValue.Contiene("12", "14") Then ConceptoContabilizacionNC = 259 Concepto = $"{NombreProveedor} {TxtSerie.Text} - {TxtFolio.Text}" - If importeMovimiento > 0 Or TxtTotal.Text.ToDecimal = 0 Then RegistroCuentaPuente = True Dim ImporteTransito As Decimal = 0 @@ -6861,8 +6845,6 @@ Partial Class Compras_Compras End If End If Next - - Dim importeMNTemp As Decimal = 0 Dim CveCompraAmortizacion As Integer = -1 @@ -6881,19 +6863,15 @@ Partial Class Compras_Compras ImporteTransito += importeMNTemp CveCompraAmortizacion = Gvr.DataKey("CveCompra").ToEntero 'se registra por cada compra relacionada - End If Next If importeMNTemp > 0 Then - 'importeMNTemp = importeMNTemp - TxtDescuento.Text.ToDecimal - If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, TipoMovimiento, importeMNTemp, importeMNTemp, ConceptoContabilizacionNC, Referencia, Concepto, CveCompra:=CveCompra, CveCompraAmortizacion:=CveCompraAmortizacion, CveProveedor:=CveProveedorConcepto, ImporteME:=If(tipoCambioActual = 1, 0, importeMovimiento), TipoCambio:=tipoCambioActual, CveMovimientoAlmacen:=CveMovimientoDevolucion, Contabilizable:=SeContabiliza) Then ErrorPrepoliza = True End If End If - 'si se marca que no se va a recibir, falta validación If Not ErrorMovInv AndAlso Not ObjCompras.UpdateEstatusAlmacen(CveCompra, 1, UsuarioActual.CveUsuario) Then ErrorMovInv = True @@ -6914,8 +6892,6 @@ Partial Class Compras_Compras End If End If Else - - Dim DiferenciaDevolucion As Decimal = If(DdlMoneda.SelectedValue.ToEntero <> 1, (importeMovimiento * TxtTC.Text.ToDecimal), importeMovimiento) - TotalRealDevolucion If TotalRealDevolucion <> 0 Then @@ -10896,12 +10872,13 @@ Partial Class Compras_Compras TmpDT.Columns.Add("CveCultivoCuadroDetalle", GetType(Integer)) TmpDT.Columns.Add("TemporadaCuadro", GetType(String)) + TmpDT.Columns.Add("AplicaSerie", GetType(Boolean)) TmpDT.Columns.Add("AplicaLote", GetType(Boolean)) TmpDT.Columns.Add("AplicaCaducidad", GetType(Boolean)) + TmpDT.Columns.Add("Serie", GetType(String)) TmpDT.Columns.Add("Lote", GetType(String)) TmpDT.Columns.Add("FechaCaducidad", GetType(Date)) - TmpDTOriginal = New DataTable TmpDTOriginal.Columns.Add("Consec", GetType(Integer)) TmpDTOriginal.Columns.Add("Cantidad", GetType(Decimal)) @@ -11011,8 +10988,10 @@ Partial Class Compras_Compras TmpDTOriginal.Columns.Add("CveCultivoCuadroDetalle", GetType(Double)) TmpDTOriginal.Columns.Add("TemporadaCuadro", GetType(String)) + TmpDTOriginal.Columns.Add("AplicaSerie", GetType(Boolean)) TmpDTOriginal.Columns.Add("AplicaLote", GetType(Boolean)) TmpDTOriginal.Columns.Add("AplicaCaducidad", GetType(Boolean)) + TmpDTOriginal.Columns.Add("Serie", GetType(String)) TmpDTOriginal.Columns.Add("Lote", GetType(String)) TmpDTOriginal.Columns.Add("FechaCaducidad", GetType(Date)) @@ -12164,8 +12143,6 @@ Partial Class Compras_Compras #Region " AJUSTA IMPORTES " Private Sub AjustaImporteUltimoConcepto(ImporteAjuste As Decimal, Optional EsCarga As Boolean = False) - - If ImporteAjuste = 0 Then Exit Sub Dim Amortizacion As Decimal = 0 @@ -13849,8 +13826,14 @@ Partial Class Compras_Compras 'si no esta vinculado a nc simplemente me lo brinco If realizadevolucion Then - 'si el subtotal es iwal a la nc lo guardo si no marco error - If subtotal > subtotaldevolucion - 1 AndAlso subtotal < subtotaldevolucion + 1 Then + 'si el subtotal es igual a la nc lo guardo si no marco error + Dim tTolerancia As Decimal = 0 + Dim tAjustaUltimo As Boolean = True + If UsuarioActual.Empresa.Funcionalidad(574) = "1" Then + tTolerancia = Math.Abs(TxtSubTotal2.Text.ToDecimal - subtotaldevolucion) + tAjustaUltimo = False + End If + If Math.Abs(subtotal - subtotaldevolucion) <= tTolerancia Then CveMovimientoEntrada = ObjInventario.AddMovimiento(CveAlmacen, 13, 1, Fecha, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveCompra, -1, -1, -1, Modulo:="Comp/G1") If CveMovimientoEntrada <= 0 Then @@ -13867,17 +13850,17 @@ Partial Class Compras_Compras PU = Dr.DataKey("PU").ToString.ToDecimal PUExtranjero = Dr.DataKey("PUExtranjero").ToString.ToDecimal ii += 1 - If CantidadRenglones = ii Then + If CantidadRenglones = ii AndAlso tAjustaUltimo Then Dim dif As Decimal = subtotal - Acumulado - PU = (((Dr.FCTextBox("TxtCantidad").Text.ToDecimal * Dr.DataKey("PU").ToString.ToDecimal)) + dif) / Dr.FCTextBox("TxtCantidad").Text.ToDecimal + PU = (((Dr.FCTextBox("TxtCantidad").Text.ToDecimal * Dr.DataKey("PU").ToDecimal)) + dif) / Dr.FCTextBox("TxtCantidad").Text.ToDecimal End If - If ObjInventario.GetExistenciasProducto(Dr.DataKey("CvePS").ToString.ToEntero, Dr.DataKey("CveUM").ToString.ToEntero, UsuarioActual.CveEmpresa, CveAlmacen, - FechaMovto:=TxtFecha.Text.ToDateTime.AddHours(NowADS().Hour).AddMinutes(NowADS().Minute).AddSeconds(NowADS().Second).ToString("yyyy/MM/dd HH:mm")) Then + Dim tFechaExistencia As DateTime = TxtFecha.Text.ToDateTime.AddHours(NowADS().Hour).AddMinutes(NowADS().Minute).AddSeconds(NowADS().Second) + If ObjInventario.GetExistenciasProducto(Dr.DataKey("CvePS").ToEntero, Dr.DataKey("CveUM").ToEntero, UsuarioActual.CveEmpresa, CveAlmacen, + FechaMovto:=tFechaExistencia.ToString("yyyy/MM/dd HH:mm")) Then Dim Existencia As Decimal = ObjInventario.DtResultados.FiltroPrimeroValor("ExistenciaFinal", String.Format("CveAlmacen = {0}", CveAlmacen)).ToDecimal - If Dr.FCTextBox("TxtCantidad").Text.ToDouble > Existencia Then - Alert($"No hay existencia suficiente del producto {Dr.DataKey("PS").ToString} en la fecha:{TxtFecha.Text}", TipoMensaje.MsgAdvertencia) + Alert($"No hay existencia suficiente del producto:
- {Dr.DataKey("CodigoPS")} en la fecha: {tFechaExistencia.ToString("yyyy/MM/dd HH:mm")}", TipoMensaje.MsgAdvertencia) ErrorMovInv = True Exit For End If @@ -13966,8 +13949,6 @@ Partial Class Compras_Compras Try Dim subtotaldevolucion As Decimal = 0 Dim realizadevolucion As Boolean = False - - 'Calculo los subtotales para comparar con la NC Dim cantidad As Decimal = 0D @@ -13982,11 +13963,13 @@ Partial Class Compras_Compras 'si no esta vinculado a nc simplemente me lo brinco If realizadevolucion Then - 'si el subtotal es iwal a la nc lo guardo si no marco error - If TxtSubTotal2.Text.ToDouble > subtotaldevolucion - 1 AndAlso TxtSubTotal2.Text.ToDouble < subtotaldevolucion + 1 Then - + 'si el subtotal es igual a la nc lo guardo si no marco error + 'si tiene FNC574, se ajustará la diferencia a un concepto como RNC + Dim tTolerancia As Decimal = 1 + 'si tiene la funcionalidad ajustará en un producto la diferencia + If UsuarioActual.Empresa.Funcionalidad(574) = "1" Then tTolerancia = Math.Abs(TxtSubTotal2.Text.ToDecimal - subtotaldevolucion) + If Math.Abs(TxtSubTotal2.Text.ToDecimal - subtotaldevolucion) <= tTolerancia Then VinculaDevolucion() - Else Alert("El Total de la NC debe ser igual al total de la devolucion", TipoMensaje.MsgAdvertencia) End If @@ -14011,48 +13994,42 @@ Partial Class Compras_Compras Dim RetIVACompra As Decimal = TxtRetIVA.Text.ToDecimal() Dim RetISRCompra As Decimal = TxtRetISR.Text.ToDecimal() Dim Acumulado As Decimal = 0 - - 'Dim TotalCalculable As Decimal = TotalCompra - IEPSCompra + RetIVACompra + RetISRCompra - Dim IVAPorcentajeCompra As Decimal = Math.Round((IVACompra / SubTotalCompra), 2) Dim Contador As Integer = 0 Dim Consec As Integer = 0 + Dim tAjusteUltimo As Boolean = True For Each gvr As GridViewRow In GVDevolucion.Rows If gvr.FCTextBox("TxtCantidad").Text.ToDecimal > 0 Then Contador += 1 End If Next - Dim CveSubProyectoContrato As String = GlobalDTAlmacen(UsuarioActual.CveEmpresa, CveAlmacen:=DdlAlmacenDevolucion.SelectedValue.ToEntero).FiltroPrimeroValor("CveSubProyecto") - Dim SubProyecto As String = GlobalDTSubProyectos(UsuarioActual.CveEmpresa, CveSubProyecto:=CveSubProyectoContrato.ToEntero).FiltroPrimeroValor("SubProyecto") + Dim Total As Decimal = 0 + Dim CveSubProyectoDev As String = GlobalDTAlmacen(UsuarioActual.CveEmpresa, CveAlmacen:=DdlAlmacenDevolucion.SelectedValue.ToEntero).FiltroPrimeroValor("CveSubProyecto") + Dim SubProyecto As String = GlobalDTSubProyectos(UsuarioActual.CveEmpresa, CveSubProyecto:=CveSubProyectoDev.ToEntero).FiltroPrimeroValor("SubProyecto") 'Iteramos el GridView de la OC + If UsuarioActual.Empresa.Funcionalidad(574) = "1" Then tAjusteUltimo = False For Each gvr As GridViewRow In GVDevolucion.Rows If gvr.FCTextBox("TxtCantidad").Text.ToDecimal > 0 Then - Dim CvePS As Integer = gvr.DataKey("CvePS").ToString.ToEntero - 'Dim DrPS As DataRow = GlobalDTPSSimplificado(UsuarioActual.CveEmpresa, CvePS:=CvePS).FiltroPrimero("") - Dim Cantidad As Decimal = gvr.FCTextBox("TxtCantidad").Text.ToDecimal Dim CveUM As Integer = gvr.DataKey("CveUM").ToString.ToEntero Dim UM As String = gvr.DataKey("UM").ToString Dim CveClasificacion As Integer = gvr.DataKey("CveClasificacion").ToString.ToEntero Dim Clasificacion As String = gvr.DataKey("Clasificacion").ToString - Dim PS As String = gvr.DataKey("PS").ToString + Dim PS As String = gvr.DataKey("CodigoPS").ToString Dim CveTipoPS As Integer = gvr.DataKey("CveTipoPS").ToString.ToEntero - Dim CveProyecto As String = "-1" - Dim Proyecto As String = "Seleccione" Dim Obs As String = "" Dim PU As Decimal = gvr.DataKey("PU").ToString.ToDecimal - Dim Total As Decimal = gvr.FCTextBox("TxtTotalDevolucion").Text.ToDecimal - Dim IVA As Decimal = IVAPorcentajeCompra 'Math.Round(Total * IVAPorcentajeCompra, 2) + Total = gvr.FCTextBox("TxtTotalDevolucion").Text.ToDecimal Dim Descuento As Decimal = 0 Acumulado += (PU * Cantidad) Consec += 1 - If Consec = Contador Then 'SubTotalCompra < Acumulado Then + If Consec = Contador AndAlso tAjusteUltimo Then 'SubTotalCompra < Acumulado Then 'ajusta el valor Dim dif As Decimal = SubTotalCompra - Acumulado If dif <> 0 Then @@ -14060,10 +14037,25 @@ Partial Class Compras_Compras Total = Cantidad * PU End If End If - AddPS(Cantidad, CveUM, UM, CveClasificacion, Clasificacion, CvePS, PS, CveTipoPS, CveSubProyectoContrato, SubProyecto, Proyecto, CveProyecto, Obs, PU, Total, IVA, 0, 0, 0, 0, Descuento, -1, False) + AddPS(Cantidad, CveUM, UM, CveClasificacion, Clasificacion, CvePS, PS, CveTipoPS, CveSubProyectoDev, SubProyecto, Proyecto, CveProyecto, Obs, PU, Total, IVAPorcentajeCompra, 0, 0, 0, 0, Descuento, -1, False, CveAlmacen:=DdlAlmacenDevolucion.SelectedValue.ToEntero) End If Next + If UsuarioActual.Empresa.Funcionalidad(574) = "1" Then + Dim CvePS_RNC As Integer = UsuarioActual.Empresa.Funcionalidad(580).ToEntero + If CvePS_RNC = 0 Then + Alert("producto utilizado para diferencia no definido.") + Exit Sub + End If + Dim PSRow As DataRow = GlobalDTPSSimplificado(UsuarioActual.CveEmpresa, CvePS:=CvePS_RNC).FiltroPrimero("") + Dim PS As String = PSRow("PSCodigo").ToString + Dim tDif As Decimal = TxtSubTotal2.Text.ToDecimal - Total + + AddPS(1, PSRow("CveUnidadMedida").ToString.ToEntero, PSRow("UnidadMedida").ToString, + PSRow("CveClasificacion").ToString.ToEntero, PSRow("Clasificacion").ToString, CvePS_RNC, PS, 1, CveSubProyectoDev.ToString, SubProyecto, "", "-1", "", tDif, tDif, IVAPorcentajeCompra, 0, 0, 0, 0, 0) + + End If + AddPS2() BtnGuardar.Enabled = True @@ -14079,7 +14071,7 @@ Partial Class Compras_Compras ImgClasificacion.Visible = False LbAgregar.Visible = False - UpPSS.Update() + 'CargaGvInv() @@ -14101,7 +14093,6 @@ Partial Class Compras_Compras End If GvOC1.DataBind() - ' TmpDT = OrdenarTablas("CvePS", DTOCTemp, TmpDT) GvOC2.DataSource = TmpDT GvOC2.DataBind() @@ -14455,19 +14446,13 @@ Partial Class Compras_Compras End If End If - If Not TmpDT.Columns.Contains("AplicaLote") Then - TmpDT.Columns.Add("AplicaLote", GetType(Boolean)) - End If - If Not TmpDT.Columns.Contains("AplicaCaducidad") Then - TmpDT.Columns.Add("AplicaCaducidad", GetType(Boolean)) - End If - If Not TmpDT.Columns.Contains("Lote") Then - TmpDT.Columns.Add("Lote", GetType(String)) - End If - If Not TmpDT.Columns.Contains("FechaCaducidad") Then - TmpDT.Columns.Add("FechaCaducidad", GetType(Date)) - End If + If Not TmpDT.Columns.Contains("AplicaLote") Then TmpDT.Columns.Add("AplicaLote", GetType(Boolean)) + If Not TmpDT.Columns.Contains("AplicaCaducidad") Then TmpDT.Columns.Add("AplicaCaducidad", GetType(Boolean)) + + If Not TmpDT.Columns.Contains("Lote") Then TmpDT.Columns.Add("Lote", GetType(String)) + + If Not TmpDT.Columns.Contains("FechaCaducidad") Then TmpDT.Columns.Add("FechaCaducidad", GetType(Date)) If ObjInventario.GetInv_ComprasMov(CveCompra, UsuarioActual.CveEmpresa) Then If ObjInventario.DtResultados.Rows.Count > 0 Then @@ -18124,7 +18109,7 @@ Partial Class Compras_Compras Case "A" 'ADD Dim SATClavePS As Integer = -1 - Dim PSRow As DataRow = GlobalDTPS(UsuarioActual.CveEmpresa, CvePS:=DdlPS.SelectedValue.ToEntero).FiltroPrimero("") + Dim PSRow As DataRow = GlobalDTPSSimplificado(UsuarioActual.CveEmpresa, CvePS:=DdlPS.SelectedValue.ToEntero).FiltroPrimero("") If PSRow IsNot Nothing Then SATClavePS = PSRow("SATClavePS").ToString.ToEntero End If @@ -18213,13 +18198,10 @@ Partial Class Compras_Compras 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 CodigoPS As String = "") As Integer + Optional CveSATPSActualizado As Boolean = False, Optional TemporadaCuadro As String = "", Optional CodigoPS As String = "", Optional CveAlmacen As Integer = -1) As Integer Dim Row As DataRow = Nothing - - If Not TmpDT.Columns.Contains("CodigoPS") Then - TmpDT.Columns.Add("CodigoPS") - End If + If Not TmpDT.Columns.Contains("CodigoPS") Then TmpDT.Columns.Add("CodigoPS") Row = TmpDT.NewRow() Dim Retorno As Integer = 0 @@ -18377,11 +18359,14 @@ Partial Class Compras_Compras Row("CveTipoGasto") = CveTipoGasto Row("TipoGasto") = If(CveTipoGasto > 0, TipoGasto, "") - Row("CveContratoDetalle") = CveContratoDetalle + Row("AplicaSerie") = DrPS("AplicaSerie") + Row("AplicaLote") = DrPS("AplicaLote") + Row("AplicaCaducidad") = DrPS("AplicaCaducidad") Row("CveCultivoCuadroDetalle") = CveCultivoCuadroDetalle Row("TemporadaCuadro") = TemporadaCuadro + If CveAlmacen > 0 Then Row("CveAlmacen") = CveAlmacen If UsuarioActual.Empresa.UsaAC Then Row("CveProgramaOperativo") = DdlACGeneral1.SelectedValue.ToEntero @@ -18391,7 +18376,6 @@ Partial Class Compras_Compras Row("CveClasificacionOG") = DdlACGeneral5.SelectedValue.ToEntero 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 TxtIEPS.Text.ToDecimal = 0 Then Row("IEPSPS") = 0 @@ -23176,6 +23160,7 @@ Public Class ClsCompraManagerCompras If Not TmpDT.Columns.Contains("AplicaLote") Then TmpDT.Columns.Add("AplicaLote", GetType(Boolean)) If Not TmpDT.Columns.Contains("AplicaCaducidad") Then TmpDT.Columns.Add("AplicaCaducidad", GetType(Boolean)) + If Not TmpDT.Columns.Contains("AplicaSerie") Then TmpDT.Columns.Add("AplicaSerie", GetType(Boolean)) If Not TmpDT.Columns.Contains("Lote") Then TmpDT.Columns.Add("Lote", GetType(String)) @@ -23426,7 +23411,7 @@ Public Class ClsCompraManagerCompras TmpDT.Columns.Add("TemporadaCuadro", GetType(String)) TmpDT.Columns.Add("NoIdentificacion", GetType(String)) - + TmpDT.Columns.Add("AplicaSerie", GetType(Boolean)) TmpDT.Columns.Add("AplicaLote", GetType(Boolean)) TmpDT.Columns.Add("AplicaCaducidad", GetType(Boolean)) From 44f2980173d83f7b1b6dd6ebaa95bbebb31372bd Mon Sep 17 00:00:00 2001 From: rrene Date: Mon, 10 Feb 2025 11:05:00 -0700 Subject: [PATCH 06/10] =?UTF-8?q?--=20COMENTAR=20C=C3=93DGIO=20DE=20E72=20?= =?UTF-8?q?Y=20E80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Ventas/Ventas.aspx.vb | 87 ++++++++++++++++--------------------------- 1 file changed, 32 insertions(+), 55 deletions(-) diff --git a/Ventas/Ventas.aspx.vb b/Ventas/Ventas.aspx.vb index 6412f6354..f0859deeb 100644 --- a/Ventas/Ventas.aspx.vb +++ b/Ventas/Ventas.aspx.vb @@ -5284,9 +5284,6 @@ Partial Class Ventas HlCuentaTerminal.Visible = True End If - If UsuarioActual.CveEmpresa = 80 Then - LtlImprimir.Text = String.Format("
  • Imprimir
  • ", Encripta(String.Format("OP=VTA&CVEVENTA={0}&PAG=0", CveVenta))) - End If DiasCredito = DbRowVenta("DiasCredito").ToString().ToEntero() EsDiasCreditoFijo = CBool(DbRowVenta("EsDiasCreditoFijo").ToString()) @@ -7078,12 +7075,6 @@ Partial Class Ventas PlazoCobranza = ObjCliente.PlazoCobranza PlazoCobranzaRemision = ObjCliente.PlazoCobranzaRemision - If UsuarioActual.CveEmpresa.Contiene(72, 80) Then - TxtFechaPago.ReadOnly = True - Calendario.Enabled = False - imgCalendario.Visible = False - End If - 'funcionalidad EnviarSMSTimbrado 'If CveVenta <= 0 And UsuarioActual.Empresa.Funcionalidad(152) <> "" And DdlTipoComprobante.SelectedValue = "Ing" Then ' If ObjCliente.CobranzaTelefono <> "" Then @@ -10045,16 +10036,16 @@ Partial Class Ventas 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 + '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 @@ -10730,14 +10721,14 @@ Partial Class Ventas ' End If '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 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 'cuando es contado debe de tener especificado la forma de pago 'If DdlTipoComprobante.SelectedValue.Contiene("Ing", "Rem", "Ant") AndAlso ObjFactura.Total > 0 AndAlso RBLPago.SelectedValue = "2" AndAlso ObjFactura.Total - If(DtPagos Is Nothing, 0, DtPagos.SUM("Importe")) > 0 Then ' AndAlso ObjFactura.CveCorte > 0 @@ -11280,12 +11271,12 @@ Partial Class Ventas If (TipoDoctoDevolucion = "" OrElse Not TipoDoctoDevolucion.Contiene("Rem", "RNC", "Cot", "Ped", "DPe", "PA", "Ped")) 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.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 'Si es AMORTIZACIÓN ANTICIPO SOBRE FACTURA EN CERO no debe timbrar If DdlTipoAmortizacionAnticipo.SelectedValue = "3" Then @@ -17319,9 +17310,9 @@ Partial Class Ventas If Me.TmpDTAnticiposNCIxCCliente IsNot Nothing Then Dim DtMovtos As DataTable = Me.TmpDTAnticiposNCIxCCliente.FiltraParametros($"Saldo > 0 AND SaldoSubtotal > 0 {If(CveVenta < 0, $"AND Tipo = 'Ant' ", "")} {If(DdlTipoComprobante.SelectedValue = "Ant", "AND Tipo = 'NC'", "")}") - If UsuarioActual.CveEmpresa.Contiene(72, 80, 146) Then - DtMovtos = DtMovtos.FiltraParametros($"{If(CveVenta < 0, $"Tipo = 'Ant'{If(DdlTipoComprobante.SelectedValue = "Ing", $" AND CveMoneda ={DdlMoneda.SelectedValue.ToEntero()}", "")} ", "")}") - End If + 'If UsuarioActual.CveEmpresa.Contiene(72, 80, 146) Then + ' DtMovtos = DtMovtos.FiltraParametros($"{If(CveVenta < 0, $"Tipo = 'Ant'{If(DdlTipoComprobante.SelectedValue = "Ing", $" AND CveMoneda ={DdlMoneda.SelectedValue.ToEntero()}", "")} ", "")}") + 'End If If UsuarioActual.Empresa.Funcionalidad(382) = "1" Then DtMovtos = Me.TmpDTAnticiposNCIxCCliente.FiltraParametros($"Saldo > 0 And SaldoSubtotal > 0 {If(CveVenta < 0, $"AND Tipo IN('RNC','IxC','Ant') {If(DdlTipoComprobante.SelectedValue = "Ant", "AND Tipo = 'NC'", "")} ", "")}") @@ -17349,11 +17340,11 @@ Partial Class Ventas divAmortizacionTipoRelacion.Visible = True End If - If UsuarioActual.CveEmpresa.Contiene(1, 72, 80, 146) Then - If Not DdlTipoAmortizacionAnticipo.Items.Cast(Of ListItem).Any(Function(x) x.Value = "3") Then - DdlTipoAmortizacionAnticipo.Items.Add(New ListItem("Amortización anticipo sobre factura en cero", "3")) - End If - End If + 'If UsuarioActual.CveEmpresa.Contiene(1, 72, 80, 146) Then + ' If Not DdlTipoAmortizacionAnticipo.Items.Cast(Of ListItem).Any(Function(x) x.Value = "3") Then + ' DdlTipoAmortizacionAnticipo.Items.Add(New ListItem("Amortización anticipo sobre factura en cero", "3")) + ' End If + 'End If If UsuarioActual.Empresa.Funcionalidad(343) = "1" Then DdlTipoAmortizacionAnticipo.Items.Remove(DdlTipoAmortizacionAnticipo.Items.FindByValue("1")) @@ -24920,13 +24911,6 @@ Partial Class Ventas If Me.CveVenta > 0 AndAlso (Not Me.EsCreaApartirDe) AndAlso Me.CveFormaPago33Venta > 0 Then DdlFormaPago33.SelectedValueExist(Me.CveFormaPago33Venta) End If - - - If UsuarioActual.CveEmpresa.Contiene(72, 80, 146) Then - DdlFormaPago33.Enabled = False - DdlFormaPago33.SelectedValueExist("20") - End If - End If Case 2 'CONTADO @@ -24947,9 +24931,6 @@ Partial Class Ventas DdlMetodoPago33.SelectedValueExist("1") DdlMetodoPago33.Enabled = False - If UsuarioActual.CveEmpresa.Contiene(72, 80, 146) Then - DdlFormaPago33.Enabled = True - End If CargaFormaPago(DdlMetodoPago33.SelectedValue.ToEntero()) 'SI ES VENTA NUEVA, ASIGNA LA DEL CLIENTE @@ -33401,10 +33382,6 @@ Partial Class Ventas Else Dim DtMovtos As DataTable = Me.TmpDTAnticiposNCIxCCliente.FiltraParametros($"Saldo > 0 AND SaldoSubtotal > 0 {If(CveVenta < 0, $"AND Tipo = 'Ant' ", "")} {If(DdlTipoComprobante.SelectedValue = "Ant", "AND Tipo = 'NC'", "")}") divAmortizacionTipoRelacion.Visible = True - If UsuarioActual.CveEmpresa.Contiene(72, 80, 146) Then - DtMovtos = DtMovtos.FiltraParametros($"{If(CveVenta < 0, $"Tipo = 'Ant'{If(DdlTipoComprobante.SelectedValue = "Ing", $" AND CveMoneda ={DdlMoneda.SelectedValue.ToEntero()}", "")} ", "")}") - If DtMovtos.Rows.Count > 0 Then ImgAntiPend.Visible = True - End If End If End If From 33975087a1ece45a4e76e01be4d134113301dce0 Mon Sep 17 00:00:00 2001 From: rakcsle Date: Tue, 11 Feb 2025 10:04:38 -0700 Subject: [PATCH 07/10] Actualizar --- Compras/PopUpVerFactura.aspx.vb | 11 +- Compras/eFacturas.aspx | 213 ++++- Compras/eFacturas.aspx.vb | 421 +++++++++- .../189/Formatos/DevolucionProveedor.rdlc | 735 +++++++++++++++++- 4 files changed, 1365 insertions(+), 15 deletions(-) diff --git a/Compras/PopUpVerFactura.aspx.vb b/Compras/PopUpVerFactura.aspx.vb index cc779f1fa..eeed354fd 100644 --- a/Compras/PopUpVerFactura.aspx.vb +++ b/Compras/PopUpVerFactura.aspx.vb @@ -4224,7 +4224,7 @@ Partial Class PopUpVerFactura params.Add(New ReportParameter("Capturo", dr("NombreCapturo").ToString)) - If UsuarioActual.CveEmpresa.Contiene(189) Then + If UsuarioActual.CveEmpresa.Contiene(189, 193, 197) Then params.Add(New ReportParameter("Concepto", "DEVOLUCIÓN A PROVEEDOR")) @@ -4256,12 +4256,17 @@ Partial Class PopUpVerFactura ObjCompra.Dispose() If Not Archivo.Exists Then - params.Add(New ReportParameter("LogoPath", RutaImagenLogo)) ImprimirPDF(String.Format("Empresas/Grales/Formatos/DevolucionProveedor.rdlc", UsuarioActual.Empresa.Ruta), DtMovimientos, params, String.Format("Devolucion Proveedor - {0}", Folio), RDSName:="DsInventarios") + Else - ImprimirPDF(String.Format("{0}Formatos\DevolucionProveedor.rdlc", UsuarioActual.Empresa.Ruta), DtMovimientos, params, String.Format("Devolucion Proveedor - {0}", Folio), RDSName:="DsInventarios") + If UsuarioActual.CveEmpresa.Contiene(189, 193, 197) Then + ImprimirPDF(String.Format("{0}Formatos\DevolucionProveedor.rdlc", UsuarioActual.Empresa.Ruta), DtMovimientos, params, String.Format("Devolucion Proveedor - {0}", Folio), RDSName:="DsInventarios", DtDatos2:=DTPrePoliza, RDSName2:="DsPrePoliza") + Else + ImprimirPDF(String.Format("{0}Formatos\DevolucionProveedor.rdlc", UsuarioActual.Empresa.Ruta), DtMovimientos, params, String.Format("Devolucion Proveedor - {0}", Folio), RDSName:="DsInventarios") + End If + End If 'ImprimirPDF(UsuarioActual.Empresa.Ruta & "Formatos/DevolucionProveedor.rdlc", DtMovimientos, params, String.Format("Devolucion Proveedor - {0}", Folio), RDSName:="DsInventarios") diff --git a/Compras/eFacturas.aspx b/Compras/eFacturas.aspx index 0e84a3b80..05f75f787 100644 --- a/Compras/eFacturas.aspx +++ b/Compras/eFacturas.aspx @@ -265,10 +265,10 @@
    - Caja Chica - Viáticos + Viáticos + Deudores
    @@ -334,6 +334,7 @@
    +
    @@ -352,7 +353,7 @@ -
    +
    @@ -362,7 +363,80 @@
    - +
    +
    + +
    + + + + + +
    + + + + + + + + + + + + Fecha + + + + + + Folio + + + + + + Saldo + +   + + + + + Saldo Abonar + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    @@ -827,6 +901,134 @@ + + <%--PRORRATE INICIO--%> + + + + <%--PRORRATEO FIN--%> + + - - + diff --git a/Compras/eFacturas.aspx.vb b/Compras/eFacturas.aspx.vb index 91cba7038..609c6a24b 100644 --- a/Compras/eFacturas.aspx.vb +++ b/Compras/eFacturas.aspx.vb @@ -756,13 +756,24 @@ Partial Class Compras_eFacturas End Set End Property + Private Property CveMonedaFiltros As Integer + Get + If ViewState("CveMonedaFiltros") Is Nothing Then + ViewState("CveMonedaFiltros") = -1 + End If + Return ViewState("CveMonedaFiltros").ToString.ToEntero + End Get + Set(value As Integer) + ViewState("CveMonedaFiltros") = value + End Set + End Property #End Region Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load If Not Page.IsPostBack Then - 'EsGrupoDiaz = False ' If(UsuarioActual.Empresa.Funcionalidad(382) = "1", True, False) + EsGrupoDiaz = If(UsuarioActual.Empresa.Funcionalidad(382) = "1", True, False) ChecandoCorreo = False @@ -816,12 +827,16 @@ Partial Class Compras_eFacturas CargaPersonalViaticos() CargaDdlRetIVA() CargaDdlRetISR() + CargaDeudores() End If Dim LblSubProyectoTemp As New Label CargarCentrosDeCosto(Nothing, DdlSubProyecto, Nothing, LblSubProyectoTemp, "Seleccione") LblSubProyecto.InnerText = $"{LblSubProyectoTemp.Text}:" + + InicializaDTProrrateoGasolina() + End If removeasincevent() End Sub @@ -5176,6 +5191,23 @@ Partial Class Compras_eFacturas End Property + Private Property DtDeudoresDetalle As DataTable + Get + Return CType(ViewState("DtDeudoresDetalle"), DataTable) + End Get + Set(value As DataTable) + ViewState("DtDeudoresDetalle") = value + End Set + End Property + + Private Property DtDeudores As DataTable + Get + Return CType(ViewState("DtDeudores"), DataTable) + End Get + Set(value As DataTable) + ViewState("DtDeudores") = value + End Set + End Property Private Sub CargaClasificacionesComprobaciones() @@ -5268,7 +5300,7 @@ Partial Class Compras_eFacturas DivPersonalReembolso.Visible = False DivCuentaCajaChicaReembolso.Visible = False - + DivDeudores.Visible = False Select Case RBLContado.SelectedValue @@ -5280,6 +5312,10 @@ Partial Class Compras_eFacturas DivCuentaCajaChicaReembolso.Visible = True RfvTxtNumeroReembolso.Enabled = True + Case "4" ' Deudores + DivDeudores.Visible = True + RfvTxtNumeroReembolso.Enabled = True + End Select UpRegistroFacturas.Update() @@ -5314,6 +5350,47 @@ Partial Class Compras_eFacturas DdlRetISRConcepto.Items.Insert(1, New ListItem("Resico", "3")) End Sub + Protected Sub CargaDeudores(Optional CveMoneda As Integer = 1) + Dim Deudores As New ClsMovimientos + DdlDeudor.Items.Clear() + + + If Deudores.GetDeudoresSaldos2(-1, UsuarioActual.CveEmpresa) Then + DtDeudores = Deudores.DtResultados.FiltraParametros($"CveProveedor > 0 AND Saldo > 0 AND CveMoneda = {CveMoneda}") + DdlDeudor.DataSource = DtDeudores + DdlDeudor.DataBind() + DdlDeudor.Items.Insert(0, New ListItem("Seleccione Deudor", "-1")) + UpDatos.Update() + CambieDeudor() + End If + + + Deudores.Dispose() + End Sub + Private Sub DdlDeudor_SelectedIndexChanged(sender As Object, e As EventArgs) Handles DdlDeudor.SelectedIndexChanged + CambieDeudor() + End Sub + Private Sub CambieDeudor() + Dim stringDeudor As String = DdlDeudor.SelectedItem.ToString + Dim SaldoD As Decimal = stringDeudor.Substring(stringDeudor.IndexOf("$") + 1, stringDeudor.Length - (stringDeudor.IndexOf("$") + 1)).ToDecimal + + If DdlDeudor.SelectedValue.ToEntero > 0 Then + Dim Deudores As New ClsMovimientos + Dim OpcionSaldo As Integer = 1 + + If Deudores.GetDeudoresSaldosDetalle(DdlDeudor.SelectedValue.ToEntero, CveMonedaFiltros, UsuarioActual.CveEmpresa) Then + DtDeudoresDetalle = Deudores.DtResultados.FiltraParametros("CveProveedor > 0 AND Saldo > 0") + GvDeudores.DataSource = DtDeudoresDetalle + GvDeudores.DataBind() + End If + Deudores.Dispose() + Else + GvDeudores.DataSource = Nothing + GvDeudores.DataBind() + End If + + UpDeudores.Update() + End Sub Protected Sub DdlPersonal2_SelectedIndexChanged(sender As Object, e As EventArgs) Handles DdlPersonalReembolso.SelectedIndexChanged @@ -5332,6 +5409,344 @@ Partial Class Compras_eFacturas ViewState("CveCajaChica") = DdlCuentaCajaChicaReembolso.SelectedValue End Sub +#End Region + + + +#Region "PRORATEO" + + + +#Region "PRORRATEO GASOLINA" + + Protected Sub LnlMostarProrateo_Click(sender As Object, e As EventArgs) + + 'InicializaDTProrrateoGasolina() + CargarCentrosDeCosto(Nothing, Nothing, Nothing, LblSubProyectoProrrateoGasolina,) + GvProrrateoGasolina.Columns(0).HeaderText = LblSubProyectoProrrateoGasolina.Text + LblRiruloProrrareo.Text = $"Prorratear por { LblSubProyectoProrrateoGasolina.Text}" + + DdlSubProyectoProrrateoGasolina.Items.Clear() + DdlSubProyectoProrrateoGasolina.DataSource = If(Not UsuarioActual.TienePermisoProceso(110), GlobalDTSubProyectosUsuarios(UsuarioActual.CveUsuario, -1, UsuarioActual.CveEmpresa, -1, 1), GlobalDTSubProyectos(UsuarioActual.CveEmpresa, CveProyecto:=-1)) + DdlSubProyectoProrrateoGasolina.DataBind() + DdlSubProyectoProrrateoGasolina.Items.Insert(0, New ListItem("Todos", "-1")) + + 'LblTotalProrrateoGasolina.Text = TxtTotal.Text + + CargaProrratePS(-1) + + RegistraScript("$('#DVModalProrrateoGasolina').modal();") + UpModalProrrateoGasolina.Update() + UpProrratearTitulo.Update() + + End Sub + Property DTProrrateoTmp As DataTable + Get + If ViewState("DTProrrateoTmp") Is Nothing Then + ViewState("DTProrrateoTmp") = New DataTable + End If + Return DirectCast(ViewState("DTProrrateoTmp"), DataTable) + End Get + Set(value As DataTable) + ViewState("DTProrrateoTmp") = value + End Set + End Property + + Property DTProrrateo As DataTable + Get + If ViewState("DTProrrateo") Is Nothing Then + ViewState("DTProrrateo") = New DataTable + End If + Return DirectCast(ViewState("DTProrrateo"), DataTable) + End Get + Set(value As DataTable) + ViewState("DTProrrateo") = value + End Set + End Property + + Property ProrratearFacturas As Boolean + Get + If ViewState("ProrratearFacturas") Is Nothing Then + ViewState("ProrratearFacturas") = False + End If + Return Boolean.Parse(ViewState("ProrratearFacturas").ToString) + End Get + Set(value As Boolean) + ViewState("ProrratearFacturas") = value + End Set + End Property + + Private Sub InicializaDTProrrateoGasolina() + Dim TmpDTProrrateoGasolina As New DataTable + TmpDTProrrateoGasolina.Columns.Add("CvePS", GetType(Integer)) + TmpDTProrrateoGasolina.Columns.Add("CveSubProyecto", GetType(Integer)) + TmpDTProrrateoGasolina.Columns.Add("SubProyecto", GetType(String)) + TmpDTProrrateoGasolina.Columns.Add("SubTotal", GetType(Decimal)) + TmpDTProrrateoGasolina.Columns.Add("IVA", GetType(Decimal)) + TmpDTProrrateoGasolina.Columns.Add("RetIVA", GetType(Decimal)) + TmpDTProrrateoGasolina.Columns.Add("RetISR", GetType(Decimal)) + TmpDTProrrateoGasolina.Columns.Add("Total", GetType(Decimal)) + TmpDTProrrateoGasolina.Columns.Add("PorcentajeIVA", GetType(Decimal)) + TmpDTProrrateoGasolina.Columns.Add("RetISRPorcentaje", GetType(Decimal)) + TmpDTProrrateoGasolina.Columns.Add("RetIVAPorcentaje", GetType(Decimal)) + + TmpDTProrrateoGasolina.Columns.Add("CveUM", GetType(Integer)) + TmpDTProrrateoGasolina.Columns.Add("CveClasificacion", GetType(Integer)) + TmpDTProrrateoGasolina.Columns.Add("UM", GetType(String)) + TmpDTProrrateoGasolina.Columns.Add("Clasificacion", GetType(String)) + TmpDTProrrateoGasolina.Columns.Add("PS", GetType(String)) + TmpDTProrrateoGasolina.Columns.Add("Porcentaje", GetType(Decimal)) + + + DTProrrateoTmp = TmpDTProrrateoGasolina + + + End Sub + + Protected Sub LnkProrrateoGasolina_Click(sender As Object, e As EventArgs) + + 'InicializaDTProrrateoGasolina() + CargarCentrosDeCosto(Nothing, Nothing, Nothing, LblSubProyectoProrrateoGasolina,) + GvProrrateoGasolina.Columns(0).HeaderText = LblSubProyectoProrrateoGasolina.Text + LblRiruloProrrareo.Text = $"Prorratear por { LblSubProyectoProrrateoGasolina.Text}" + + DdlSubProyectoProrrateoGasolina.Items.Clear() + DdlSubProyectoProrrateoGasolina.DataSource = If(Not UsuarioActual.TienePermisoProceso(110), GlobalDTSubProyectosUsuarios(UsuarioActual.CveUsuario, -1, UsuarioActual.CveEmpresa, -1, 1), GlobalDTSubProyectos(UsuarioActual.CveEmpresa, CveProyecto:=-1)) + DdlSubProyectoProrrateoGasolina.DataBind() + DdlSubProyectoProrrateoGasolina.Items.Insert(0, New ListItem("Todos", "-1")) + + 'LblTotalProrrateoGasolina.Text = TxtTotal.Text + + CargaProrratePS(-1) + + RegistraScript("$('#DVModalProrrateoGasolina').modal();") + UpModalProrrateoGasolina.Update() + UpProrratearTitulo.Update() + + End Sub + + + Private Sub CargaProrratePS(CveClasificacion As Integer) + + DdlPSProrrateoGasolina.setEsWebService(UsuarioActual.Empresa.Funcionalidad(105) = "1") + + If UsuarioActual.Empresa.Funcionalidad(105) = "1" Then + 'DdlPSProrrateoGasolina.ddlWS.Attributes.Add("data-cveclasificacion", ""-1) + DdlPSProrrateoGasolina.SelectedText = "" + DdlPSProrrateoGasolina.SelectedValue = "-1" + Else + DdlPSProrrateoGasolina.ddl.Items.Clear() + + 'DdlPS.ddl.DataSource = GlobalDTPSSimplificado(UsuarioActual.CveEmpresa, CveClasificacion:=CveClasificacion) + + If UsuarioActual.TienePermisoProceso(300) Or UsuarioActual.TienePermisoProceso(301) Then + + Dim DTTemp As New DataTable + DTTemp.Columns.Add("CvePS", GetType(Integer)) + DTTemp.Columns.Add("PSCodigo", GetType(String)) + DTTemp.Columns.Add("CveClasificacion", GetType(Integer)) + + For Each dRow As DataRow In GlobalDTPSSimplificado(UsuarioActual.CveEmpresa).Rows + For Each drowCla As DataRow In DTClasificacionesComprobaciones.Rows + + If drowCla("CveClasificacion").ToString.ToEntero = dRow("CveClasificacion").ToString.ToEntero Then + + Dim InRow As DataRow = DTTemp.NewRow + InRow("CvePS") = dRow("CvePS").ToString.ToEntero + InRow("PSCodigo") = dRow("PSCodigo").ToString + InRow("CveClasificacion") = dRow("CveClasificacion").ToString.ToEntero + DTTemp.Rows.Add(InRow) + + End If + Next + Next + DdlPSProrrateoGasolina.DataSource = If(CveClasificacion > 0, DTTemp.FiltraParametros($"CveClasificacion = {CveClasificacion}"), DTTemp) + Else + DdlPSProrrateoGasolina.DataSource = If(CveClasificacion > 0, GlobalDTPSSimplificado(UsuarioActual.CveEmpresa).FiltraParametros($"CveClasificacion = {CveClasificacion}"), GlobalDTPSSimplificado(UsuarioActual.CveEmpresa)) + End If + + DdlPSProrrateoGasolina.ddl.DataBind() + DdlPSProrrateoGasolina.ddl.Items.Insert(0, New ListItem("Seleccione el Producto", "-1")) + End If + + End Sub + + Private Sub GvProrrateoGasolinaBind() + GvProrrateoGasolina.DataSource = DTProrrateoTmp + GvProrrateoGasolina.DataBind() + UpModalProrrateoGasolina.Update() + End Sub + + Protected Sub LnkEliminarProrrateoGasolina_Click(sender As Object, e As EventArgs) + + Dim GvRow As GridViewRow = DirectCast(DirectCast(sender, LinkButton).NamingContainer, GridViewRow) + DTProrrateoTmp.Rows.RemoveAt(GvRow.RowIndex) + DTProrrateoTmp.AcceptChanges() + ProrateoCalculaRestante() + GvProrrateoGasolinaBind() + + End Sub + + + + Protected Sub LnkAgregarProrrateoGasolina_Click(sender As Object, e As EventArgs) + + Dim CvePs As Integer = DdlPSProrrateoGasolina.SelectedValue.ToEntero + + If Not CvePs > 0 Then + Alert("Debe seleccionar un producto", TipoMensaje.MsgAdvertencia) + Exit Sub + End If + + Dim PsRow As DataRow = GlobalDTPS(UsuarioActual.CveEmpresa, CvePs).FiltroPrimero("") + + If PsRow Is Nothing Then + Alert("No se encontro el producto", TipoMensaje.MsgAdvertencia) + Exit Sub + End If + + Dim CveUM As Integer = PsRow("CveUM").ToString.ToEntero + Dim UM As String = GlobalDTUnidadesMedida(UsuarioActual.CveEmpresa).FiltroPrimeroValor("UnidadMedida", $" CveUnidadMedida = {CveUM} ") + + Dim CveClasificacion As Integer = PsRow("CveClasificacion").ToString.ToEntero + Dim Clasificacion As String = GlobalDTClasificaciones(UsuarioActual.CveEmpresa).FiltroPrimeroValor("Clasificacion", $" CveClasificacion = {CveClasificacion} ") + + + If DdlSubProyectoProrrateoGasolina.SelectedValue.ToEntero > 0 Then + AgregarProrrateoGasolina(DdlSubProyectoProrrateoGasolina.SelectedValue.ToEntero, DdlSubProyectoProrrateoGasolina.SelectedItem.Text, CvePs, CveUM, UM, CveClasificacion, Clasificacion) + Else + DTProrrateoTmp.Rows.Clear() + + For Each item As ListItem In DdlSubProyectoProrrateoGasolina.Items + If item.Value.ToEntero > 0 Then + AgregarProrrateoGasolina(item.Value.ToEntero, item.Text, CvePs, CveUM, UM, CveClasificacion, Clasificacion) + End If + Next + End If + + TxtPrecioProrrateoGasolina.Text = "" + DdlSubProyectoProrrateoGasolina.SelectedValueExist(-1) + UpModalProrrateoGasolina.Update() + + End Sub + + + Private Sub AgregarProrrateoGasolina(CveSubProyecto As Integer, SubProyecto As String, CvePS As Integer, CveUM As Integer, UM As String, CveClasificacion As Integer, Clasificacion As String) + + ''' este prco3eso compratira todo esto se debe de llevar a la genracion de la factura por porcentaje + + Dim SubTotalOriginal As Decimal = 1 + Dim IVAOriginal As Decimal = 0D 'TxtIVA.Text.ToDecimal + Dim RetISROriginal As Decimal = 0D 'TxtRetISR.Text.ToDecimal + Dim RetIVAOriginal As Decimal = 0D 'TxtRetIVA.Text.ToDecimal + Dim TotalOriginal As Decimal = 1 + + Dim totalParcialDeseado As Decimal = TxtPrecioProrrateoGasolina.Text.ToDecimal + Dim PorcentajeCalculado As Decimal = totalParcialDeseado / TotalOriginal + + Dim subtotalParcial As Decimal = SubTotalOriginal * PorcentajeCalculado + Dim ivaParcial As Decimal = IVAOriginal * PorcentajeCalculado + Dim retIsrParcial As Decimal = RetISROriginal * PorcentajeCalculado + Dim retIvaParcial As Decimal = RetIVAOriginal * PorcentajeCalculado + + Dim nRow As DataRow = DTProrrateoTmp.NewRow + + nRow("CvePS") = DdlPSProrrateoGasolina.SelectedValue.ToEntero + nRow("CveSubProyecto") = CveSubProyecto + nRow("SubProyecto") = SubProyecto + + 'If CveFactura > 0 Then + nRow("IVA") = ivaParcial.RoundSQL(4) + nRow("RetIVA") = retIvaParcial.RoundSQL(4) + nRow("RetISR") = retIsrParcial.RoundSQL(4) + 'Else + 'nRow("IVA") = (ivaParcial / subtotalParcial).RoundSQL(4) + 'nRow("RetIVA") = (retIvaParcial / subtotalParcial).RoundSQL(4) + 'nRow("RetISR") = (retIsrParcial / subtotalParcial).RoundSQL(4) + 'End If + + nRow("SubTotal") = subtotalParcial.RoundSQL(4) + + nRow("Total") = totalParcialDeseado.RoundSQL(4) + nRow("PorcentajeIVA") = (ivaParcial / subtotalParcial).RoundSQL(4) + nRow("Porcentaje") = TxtPrecioProrrateoGasolina.Text.ToDecimal '((totalParcialDeseado.RoundSQL(4) * 100) / TotalOriginal).RoundSQL(2) + + 'nRow("RetIVAPorcentaje") = (retIvaParcial / subtotalParcial).RoundSQL(4) + 'nRow("RetISRPorcentaje") = (retIsrParcial / subtotalParcial).RoundSQL(4) + + nRow("CveUM") = CveUM + nRow("UM") = UM + nRow("CveClasificacion") = CveClasificacion + nRow("Clasificacion") = Clasificacion + nRow("PS") = DdlPSProrrateoGasolina.txtText.Value + + DTProrrateoTmp.Rows.Add(nRow) + + ProrateoCalculaRestante() + GvProrrateoGasolinaBind() + End Sub + + + Function ProrateoCalculaRestante(Optional MostrarMensaje As Boolean = False) As Boolean + '''Esto no aplica por que es por factura + + Dim Acumulado As Decimal = DTProrrateoTmp.SUM("Porcentaje").RoundSQL(2) + Dim Total As Decimal = 100 'TxtTotal.Text.ToDecimal.RoundSQL(2) + Dim Respuesta As Boolean = False + + LblRestoProrrateoGasolina.Text = (Total - Acumulado).ToString("###,###,###.00") + + If Acumulado = Total Then + Respuesta = True + Else + Respuesta = False + If MostrarMensaje Then + + If Acumulado <> Total Then + Alert($"El porcentaje prorrateado es diferente de 100%, Diferencia: {(Acumulado - Total).Abs()}, Prorrateado:{Acumulado.ToString("###,###,###.00")}", TipoMensaje.MsgAdvertencia) + End If + + End If + End If + + Return Respuesta + + End Function + + + + Protected Sub BtnGuardarProrrateoGasolina_Click(sender As Object, e As EventArgs) + + 'esto se debe ejecutar en cada factura seleccionada + + If Not ProrateoCalculaRestante(True) Then + Exit Sub + End If + + DTProrrateo = DTProrrateoTmp + RegistraScript("$('#DVModalProrrateoGasolina').modal('hide');") + + 'If DTProrrateoGasolina.Rows.Count > 0 Then + ' TmpDT.Rows.Clear() + ' For Each dRow As DataRow In DTProrrateoGasolina.Rows + ' AddPS(1, dRow("CveUM").ToString.ToEntero, dRow("UM").ToString, dRow("CveClasificacion").ToString.ToEntero, dRow("Clasificacion").ToString, dRow("CvePS").ToString.ToEntero, dRow("PS").ToString, 1, dRow("CveSubProyecto").ToString, dRow("SubProyecto").ToString, "", + ' "-1", "", dRow("SubTotal").ToString.ToDecimal, dRow("Total").ToString.ToDecimal, dRow("IVA").ToString.ToDecimal, dRow("RetIVA").ToString.ToDecimal, dRow("RetISR").ToString.ToDecimal, 0, 0, 0, PorcentajeIVA:=dRow("PorcentajeIVA").ToString.ToDecimal, + ' CargaXml:=True, PorcentajeRetIVA:=dRow("RetIVAPorcentaje").ToString.ToDecimal, PorcentajeRetISR:=dRow("RetISRPorcentaje").ToString.ToDecimal) + ' Next + + ' AddPS2() + ' RegistraScript("$('#DVModalProrrateoGasolina').modal('hide');") + + 'End If + + + + + End Sub + + +#End Region + #End Region Protected Sub LnkRegistarFactura_Click(sender As Object, e As EventArgs) @@ -5405,6 +5820,8 @@ Partial Class Compras_eFacturas End Sub + + End Class diff --git a/Empresas/189/Formatos/DevolucionProveedor.rdlc b/Empresas/189/Formatos/DevolucionProveedor.rdlc index 52b504801..4de2e83a8 100644 --- a/Empresas/189/Formatos/DevolucionProveedor.rdlc +++ b/Empresas/189/Formatos/DevolucionProveedor.rdlc @@ -81,7 +81,95 @@ - + + + + DsPrePoliza + /* Local Query */ + + + + Id + System.Int32 + + + Fecha + System.DateTime + + + TipoPoliza + System.String + + + NombreCuenta + System.String + + + CodigoCuenta + System.String + + + Numero + System.Int32 + + + Folio + System.Int32 + + + Referencia + System.String + + + Concepto + System.String + + + ConceptoPoliza + System.String + + + TipoMovto + System.Int32 + + + Cargos + System.String + + + Abonos + System.String + + + SegNeg + System.String + + + Cargo + System.Decimal + + + Abono + System.Decimal + + + Codigo + System.String + + + NombreUsuario + System.String + + + + DataSet1 + C:\inetpub\wwwroot\ADSistemas\Ventas.root\Reportes\DataSet1.xsd + DataTable1 + + + + + @@ -909,7 +997,7 @@ Textbox8 - 2.92184cm + 4.47759cm 0.13338cm 0.97952cm 21.08648cm @@ -943,7 +1031,7 @@ Textbox5 - 2.20719cm + 3.76294cm 0.13338cm 0.60882cm 3.98167cm @@ -958,8 +1046,647 @@ 2pt + + + + + 1.87234cm + + + 5.22297cm + + + 9.86336cm + + + 2.16521cm + + + 2.07009cm + + + + + 0.44125cm + + + + + true + true + + + + + Cuenta + + + + + + + Textbox3 + + + + LightGrey + + 1pt + + + LightGrey + + 1pt + + + LightGrey + + + LightGrey + + #e36c09 + + + + + + + + true + true + + + + + Descripción + + + + + + + Textbox6 + + + + LightGrey + + 1pt + + + LightGrey + + 1pt + + + LightGrey + + + LightGrey + + #e36c09 + + + + + + + + true + true + + + + + Concepto + + + + + + + Textbox13 + + + + LightGrey + + 1pt + + + LightGrey + + 1pt + + + LightGrey + + + LightGrey + + #e36c09 + + + + + + + + true + true + + + + + Cargos + + + + + + + Textbox16 + + + + LightGrey + + 1pt + + + LightGrey + + 1pt + + + LightGrey + + + LightGrey + + #e36c09 + + + + + + + + true + true + + + + + Abonos + + + + + + + Textbox23 + + + + LightGrey + + 1pt + + + LightGrey + + 1pt + + + LightGrey + + + LightGrey + + #e36c09 + + + + + + + + 0.3cm + + + + + true + true + + + + + =Fields!CodigoCuenta.Value + + + + + + + + + + + + + true + true + + + + + =Fields!NombreCuenta.Value + + + + + + + + + + + + + true + true + + + + + =Fields!Concepto.Value + + + + + + + + + + + + + true + true + + + + + =IIf( + Fields!Cargo.Value = 0, + "", + Format(Fields!Cargo.Value, "###,###,###.00") +) + + + + + + + Cargos + + + + + + + + + + true + true + + + + + =IIf( + Fields!Abono.Value = 0, + "", + Format(Fields!Abono.Value, "###,###,###.00") +) + + + + + + + Abonos + + + + + + + + + + 0.43773cm + + + + + true + true + + + + + + + + + + + + + + + + + + true + true + + + + + + + + + + + + + + + + + + true + true + + + + + Total + + + + + + + Textbox30 + + + + + + + + + + true + true + + + + + =IIf( + Sum(Fields!Cargo.Value) = 0, + "", + Format(Sum(Fields!Cargo.Value), "###,###,###.00") +) + + + + + + + Textbox32 + + + + + + + + + + true + true + + + + + =IIf( + Sum(Fields!Abono.Value) = 0, + "", + Format(Sum(Fields!Abono.Value), "###,###,###.00") +) + + + + + + + Textbox37 + + + + + + + + + + + + + + + + + + + + + + + After + + + + + + Before + + + + DsPrePoliza + 2.40894cm + 0.07495cm + 1.17898cm + 21.19397cm + 5 + + + + - 1.53597in + 2.14847in