diff --git a/App_Code/Modelos.vb b/App_Code/Modelos.vb index a01edf317..68dbd2bec 100644 --- a/App_Code/Modelos.vb +++ b/App_Code/Modelos.vb @@ -520,6 +520,11 @@ Namespace Modelos Me.DtOtrosConceptos = ObjVentas.DtResultados.Copy() End If + 'CARGA REMISIONES RELACIONADAS + If ObjVentas.GetRemisionesRelacionadas(CveVenta, TipoDocto) Then + Me.DtRemisionesDocumentosRelacionados = ObjVentas.DtResultados.Copy() + End If + ObjVentas.Dispose() If Me.RealizarDevolucionAlmacen Then @@ -5806,6 +5811,8 @@ Namespace Modelos Public Property DtDocumentacionCliente As Data.DataTable Public Property DtContratosSerieDetalle As Data.DataTable Public Property DtOtrosConceptos As Data.DataTable + + Public Property DtRemisionesDocumentosRelacionados As Data.DataTable Public Property DtInventario As Data.DataTable 'Public Property DtAnticipoAmortizacion As Data.DataTable Public Property DtRemConceptosSurtidos As Data.DataTable diff --git a/Inventarios/RecepcionAlmacen.aspx.vb b/Inventarios/RecepcionAlmacen.aspx.vb index 097e61ba0..e45b5635f 100644 --- a/Inventarios/RecepcionAlmacen.aspx.vb +++ b/Inventarios/RecepcionAlmacen.aspx.vb @@ -2307,6 +2307,7 @@ Partial Class Inventarios_RecepcionAlmacen Dim ObjConta As New ClsContabilidad(ObjInventario.IniciaTransacSQL()) Dim ObjOC As New ClsOC(ObjInventario.IniciaTransacSQL()) Dim ObjAcum As New ClsAcumuladores(ObjInventario.IniciaTransacSQL()) + Dim ObjVentas As New ClsVentas(ObjInventario.IniciaTransacSQL()) Dim ObjContaAC As ClsContPAQi = Nothing Dim ObjContaContPAQ As ClsContPAQi = Nothing @@ -2629,6 +2630,36 @@ Partial Class Inventarios_RecepcionAlmacen If Not ErrorMovInv Then MovtosEntradaExA.Add(MovEntradaExA.CveMovimiento) FoliosEntradaExA.Add(MovEntradaExA.Folio) + + 'SI LA REMISION FUE FACTURADA GENERA EL MOVIMIENTO DE SALIDA DIRECTA + If ObjFactura.DtRemisionesDocumentosRelacionados.Rows.Count > 0 Then + If ObjVentas.VerificarRemisionFacturada(ObjFactura.CveVenta) Then + + Dim dttsalida As DataTable = dttexa.Copy + 'se limpia la seccion, para que lo tome automaticamente + For Each drr As DataRow In dttsalida.Rows + Dim RowFactura As DataRow = ObjVentas.DtResultados.FiltroPrimero($"CveVentaDetalleRemision={drr("CveVentaDetalle")}") + drr("CveVentaDetalle") = RowFactura("CveVentaDetalleFacturada") + drr("CveVenta") = RowFactura("CveVenta") + Next + + For Each DrFactura As DataRow In Dt.FiltraParametros("", DistinctColumns:={"CveVenta"}).Rows + Dim dtSalidaFactura As DataTable = dttsalida.FiltraParametros($"CveVenta={DrFactura("CveVenta")}") + Dim MovSalidaDirectaExA = GenerarMovimientoAlmacenVenta(ObjFactura.CveAlmacenTraspasoDestino, 40, DrFactura("CveVenta").ToString().ToEntero(), MovEntradaExA.CveMovimiento, dtSalidaFactura, ObjInventario, ObjConta, ObjContaContPAQ, False, "RA/G2R3") + + ErrorMovInv = MovSalidaDirectaExA.CveMovimiento <= 0 + + If ErrorMovInv Then + Exit For + Else + MovtosSalidaDirecta.Add(MovSalidaDirectaExA.CveMovimiento) + FoliosSalidaDirecta.Add(MovSalidaDirectaExA.Folio) + End If + + Next + + End If + End If End If End If @@ -3459,6 +3490,8 @@ Partial Class Inventarios_RecepcionAlmacen link = String.Format("{1}", MovtosSalidaDirecta(index), FoliosSalidaDirecta(index)) Msg.AppendFormat("
Movimiento de Salida Folio: {0}", link) Next + + End If 'APARTADO diff --git a/Ventas/Clientes.aspx b/Ventas/Clientes.aspx index e64276495..8cb66d465 100644 --- a/Ventas/Clientes.aspx +++ b/Ventas/Clientes.aspx @@ -4281,7 +4281,7 @@ - + diff --git a/Ventas/Clientes.aspx.vb b/Ventas/Clientes.aspx.vb index a01b7bf92..c45fbd652 100644 --- a/Ventas/Clientes.aspx.vb +++ b/Ventas/Clientes.aspx.vb @@ -9143,7 +9143,7 @@ Partial Class Clientes Dim ImporteBonificacion As Decimal = 0 If ObjAcum.GetMovimientosDistribuidorResumen(CveCliente, UsuarioActual.CveEmpresa) AndAlso ObjAcum.DtResultados.Rows.Count >= 4 Then GvUsadosResumen.DataSource = ObjAcum.DtResultados - ImporteBonificacion = ObjAcum.DtResultados.Rows(4)("Valor").ToString().ToDecimal() + ImporteBonificacion = ObjAcum.DtResultados.Rows(5)("Valor").ToString().ToDecimal() End If GvUsadosResumen.DataBind() diff --git a/Ventas/Ventas.aspx b/Ventas/Ventas.aspx index 13e2eaef7..3ea56173b 100644 --- a/Ventas/Ventas.aspx +++ b/Ventas/Ventas.aspx @@ -1371,16 +1371,16 @@ - Total NC: + Pronto Pago: - +   - Pronto Pago: + Total a Pagar: - +   @@ -6340,8 +6340,8 @@
- +
diff --git a/Ventas/Ventas.aspx.vb b/Ventas/Ventas.aspx.vb index ce8535aa8..1af853887 100644 --- a/Ventas/Ventas.aspx.vb +++ b/Ventas/Ventas.aspx.vb @@ -5897,7 +5897,7 @@ Partial Class Ventas LnkCotizaciones.Visible = False End If UPCondicionesPago.Update() - ElseIf UsuarioActual.CveEmpresa.Contiene(72, 80, 146, 119, 158, 140) AndAlso DdlTipoComprobante.SelectedValue.Contiene("Ing", "Ant", "Rem", "Cot", "PA") AndAlso CveVenta < 1 Then + ElseIf UsuarioActual.CveEmpresa.Contiene(72, 80, 119, 146, 158, 140) AndAlso DdlTipoComprobante.SelectedValue.Contiene("Ing", "Ant", "Rem", "Cot", "PA") AndAlso CveVenta < 1 Then RBLPago.SelectedValue = "1" RBLPago_SelectedIndexChanged(Nothing, Nothing) UPCondicionesPago.Update() @@ -5960,7 +5960,7 @@ Partial Class Ventas End If Else - If UsuarioActual.CveEmpresa.Contiene(119) AndAlso Not UsuarioActual.TienePermisoProceso(268) AndAlso DdlTipoComprobante.SelectedValue.Contiene("Rem", "Ing", "Ant", "PA") Then + If UsuarioActual.CveEmpresa = 119 AndAlso Not UsuarioActual.TienePermisoProceso(268) AndAlso DdlTipoComprobante.SelectedValue.Contiene("Rem", "Ing", "Ant", "PA") 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) @@ -5971,7 +5971,7 @@ Partial Class Ventas 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) + If Alertas AndAlso UsuarioActual.Empresa.Funcionalidad(518) = "1" Then Alert("El cliente tiene su límite de crédito agotado.", TipoMensaje.MsgAdvertencia) End If 'RBLPago.SelectedValue = "2" @@ -10800,19 +10800,30 @@ Partial Class Ventas End Try 'SI SE FACTURA UNA RNC SE MUESTRA - If UsuarioActual.CveEmpresa = 140 AndAlso factura.TipoDocto = "Egs" Then + 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 + EsCargo = (Not ListaNCDescuento.Any(Function(RNC) RNC.Num2 = 1)) + ListaRNC = ListaNCDescuento + Else + EsCargo = RblRNCTipo.SelectedValue = "1" + ListaRNC = ListaRemisionesNC + End If + 'SI SE FACTURAN RNC DE CARGO, SE AGREGA EL CONCEPTO DE ACREDITAMIENTO - If ClienteEsDistribuidor AndAlso RblRNCTipo.SelectedValue = "1" Then + If ListaRNC IsNot Nothing AndAlso ClienteEsDistribuidor AndAlso EsCargo Then Dim ObjAcum As New ClsAcumuladores(ObjVentas.IniciaTransacSQL()) Dim CvePSCargo As Integer = -1 - For Each RNC In ListaRemisionesNC + For Each RNC In ListaRNC CvePSCargo = RNC.DtDetalle.FiltroPrimeroValor("CvePS", $"CveVentaDetalle={Row("CveVentaDetalleRNC").ToString()}").ToEntero() If CvePSCargo > 0 Then Exit For @@ -12853,23 +12864,23 @@ Partial Class Ventas 'Concepto = String.Format("{0} - {1}", Row2("Clasificacion").ToString(), Row2("SubProyecto").ToString()) IdCtaContable = GlobalDTClasificaciones(factura.CveEmpresa).FiltroPrimeroValor("IdCuentaCostos", $"CveClasificacion = {RowInv("CveClasificacion")}").ToEntero() - ' CveCuenta = GlobalDTClasificaciones(factura.CveEmpresa).FiltroPrimeroValor("IdCuentaGastoSIG", $"CveClasificacion = {RowInv("CveClasificacion")}").ToEntero() - 'If ValorInventario <> 0 Then + CveCuenta = GlobalDTClasificaciones(factura.CveEmpresa).FiltroPrimeroValor("IdCuentaGastoSIG", $"CveClasificacion = {RowInv("CveClasificacion")}").ToEntero() + If ValorInventario <> 0 Then - If Not ObjConta.AddPrePolizasDetalle(factura.CvePrePoliza, TipoMovto69, ValorInventario, factura.SerieFolio, 69, factura.SerieFolio, factura.Fecha, IdCtaContable, -1, CveVenta:=factura.CveVenta, CveCliente:=factura.CveCliente, CveSubProyecto:=factura.CveSubProyecto, CveClasificacion:=RowInv("CveClasificacion").ToString().ToEntero(), CveMovimientoAlmacen:=CveMovimientoInventario, ImporteMX:=ValorInventario, CveCuenta:=CveCuenta) Then - OcurrioError = True + If Not ObjConta.AddPrePolizasDetalle(factura.CvePrePoliza, TipoMovto69, ValorInventario, factura.SerieFolio, 69, factura.SerieFolio, factura.Fecha, IdCtaContable, -1, CveVenta:=factura.CveVenta, CveCliente:=factura.CveCliente, CveSubProyecto:=factura.CveSubProyecto, CveClasificacion:=RowInv("CveClasificacion").ToString().ToEntero(), CveMovimientoAlmacen:=CveMovimientoInventario, ImporteMX:=ValorInventario, CveCuenta:=CveCuenta) Then + OcurrioError = True + End If End If - 'End If cont += 1 Next End If IdCtaContable = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCtaContable", String.Format("CveAlmacen = {0}", CveAlmacen)).ToEntero() - 'If TotalCosto <> 0 Then - If Not ObjConta.AddPrePolizasDetalle(factura.CvePrePoliza, TipoMovto68, TotalCosto, factura.SerieFolio, 68, factura.SerieFolio, factura.Fecha, IdCtaContable, -1, CveVenta:=factura.CveVenta, CveCliente:=factura.CveCliente, CveMovimientoAlmacen:=CveMovimientoInventario, ImporteMX:=TotalCosto, CveCuenta:=CveCuenta, CveSubProyecto:=factura.CveSubProyecto) Then + If TotalCosto <> 0 Then + If Not ObjConta.AddPrePolizasDetalle(factura.CvePrePoliza, TipoMovto68, TotalCosto, factura.SerieFolio, 68, factura.SerieFolio, factura.Fecha, IdCtaContable, -1, CveVenta:=factura.CveVenta, CveCliente:=factura.CveCliente, CveMovimientoAlmacen:=CveMovimientoInventario, ImporteMX:=TotalCosto, CveCuenta:=CveCuenta, CveSubProyecto:=factura.CveSubProyecto) Then OcurrioError = True End If - 'End If + End If Else OcurrioError = True @@ -15482,7 +15493,7 @@ Partial Class Ventas UpnTools.Update() tdTelefonoGen.Visible = False tdTxtTelefonoGen.Visible = False - If UsuarioActual.CveEmpresa.Contiene(4, 7, 11, 12, 122, 145, 140) Then + If UsuarioActual.CveEmpresa.Contiene(4, 7, 11, 12, 122, 145) Then ChkEnviarFactura.Checked = False End If @@ -16279,7 +16290,7 @@ Partial Class Ventas End If 'SI TIENE PRONTO PAGO CALCULA EL IMPORTE - If RowPorcentaje("ProntoPago").ToString().ToDecimal() > 0 Then + If DdlTipoComprobante.SelectedValue = "Ing" AndAlso RowPorcentaje("ProntoPago").ToString().ToDecimal() > 0 Then Dim TotalProntoPago As Decimal = (Cantidad * (PU)) - Descuento Dim PorcentajeProntoPago = RowPorcentaje("ProntoPago").ToString().ToDecimal() / 100D @@ -17381,6 +17392,11 @@ Partial Class Ventas TotalAmortizacion = 0 End If + Dim TotalRemNCAplicado As Decimal = 0 + + If TbDescuentosRNC.Visible AndAlso ListaNCDesc IsNot Nothing Then + TotalRemNCAplicado = ListaNCDesc.Sum(Function(RNC) RNC.TotalRemNCAplicado) + End If Total = (TotalSubTotal - TotalDescuentos - TotalAmortizacion + TotalIVA + TotalIEPS - TotalRetIVA - TotalRetISR - TotalImpuestosLocales) LblSubTotal1.Text = TotalSubTotal.FormatoNumero(2) @@ -17396,6 +17412,8 @@ Partial Class Ventas HdnProntoPago.Value = TotalProntoPago.ToString() LblProntoPago.Text = TotalProntoPago.FormatoNumero(2) + LblTotalAPagar.Text = (TxtTotal.Text.ToDecimal() - TotalRemNCAplicado - TotalProntoPago).FormatoNumero + LblAmort.Text = TxtSubTotal.Text If CveVenta <= 0 OrElse (CveDevolucion > 0 And NuevaFactura = 1) Then HdnVentaSaldo.Value = Total.ToString() @@ -20116,7 +20134,7 @@ Partial Class Ventas End If If UsuarioActual.Empresa.Funcionalidad(572) = "1" Then - Dim TotalNC As Decimal = If((ListaNCDesc IsNot Nothing AndAlso ListaNCDesc.Count > 0) OrElse (ListaNCBonificacion IsNot Nothing AndAlso ListaNCBonificacion.Count > 0), LblTotalNC.Text.Trim().ToDecimal(), 0) + Dim TotalNC As Decimal = If((ListaNCDesc IsNot Nothing AndAlso ListaNCDesc.Count > 0) OrElse (ListaNCBonificacion IsNot Nothing AndAlso ListaNCBonificacion.Count > 0), LblTotalAPagar.Text.Trim().ToDecimal(), 0) If TotalNC > 0 Then If (DtPagos.SUM("Importe").ToString().ToDecimal() + AmortizacionNC + Total - TxtCambio.Text.ToDecimal) > TotalNC Then Alert("El importe de los pagos no puede exceder el importe de la factura. Por favor verifique.", TipoMensaje.MsgAdvertencia) @@ -24209,7 +24227,8 @@ Partial Class Ventas Me.TmpDTRNCBonificacionesCliente.Columns.Add("CveVentaRNCCargo", GetType(Integer)) If CargarBonificaciones Then - Me.TmpDTRNCBonificacionesSeleccionadas = Me.TmpDTRNCBonificacionesCliente.Copy() + 'Me.TmpDTRNCBonificacionesSeleccionadas = Me.TmpDTRNCBonificacionesCliente.Copy() + CargaBonificaciones(-1, True) End If If CargarSoloGarantias Then @@ -24217,10 +24236,10 @@ Partial Class Ventas Else GvRemisionesNC.DataSource = DtNC.FiltraParametros("TipoRNC = 1 AND EsGarantia = False") End If - GvRemisionesNCBon.DataSource = Me.TmpDTRNCBonificacionesSeleccionadas - GvRemisionesNC.DataBind() - GvRemisionesNCBon.DataBind() + + 'GvRemisionesNCBon.DataSource = Me.TmpDTRNCBonificacionesSeleccionadas + 'GvRemisionesNCBon.DataBind() If CveVentaUsado > 0 Then DivSMU.Visible = True @@ -24349,6 +24368,11 @@ Partial Class Ventas Dim ChkAplicarRNC As CheckBox = DirectCast(sender, CheckBox) Dim GvRow As GridViewRow = DirectCast(ChkAplicarRNC.NamingContainer, GridViewRow) + CargaBonificacionesDesc(GvRow.DataKey("CveVenta").ToEntero(), ChkAplicarRNC.Checked) + + End Sub + + Private Sub CargaBonificacionesDesc(CveVentaRNCCargo As Integer, AplicarRNC As Boolean) If TmpDTRNCBonificacionesSeleccionadas Is Nothing Then TmpDTRNCBonificacionesSeleccionadas = Me.TmpDTRNCBonificacionesCliente.Clone() End If @@ -24358,7 +24382,7 @@ Partial Class Ventas Dim SbFiltro As New StringBuilder() SbFiltro.Append("CveVenta IN(") Using ObjAcum As New ClsAcumuladores - If ObjAcum.DistribuidorMovtosGet(CveCliente, UsuarioActual.CveEmpresa, CveVentaRNCCargo:=GvRow.DataKey("CveVenta").ToEntero()) Then + If ObjAcum.DistribuidorMovtosGet(CveCliente, UsuarioActual.CveEmpresa, CveVentaRNCCargo:=CveVentaRNCCargo) Then DtBon = ObjAcum.DtResultados.Copy() End If End Using @@ -24375,7 +24399,7 @@ Partial Class Ventas For Each bon In queryBonificacion SbFiltro.AppendFormat("'{0}',", bon.CveVentaBonificacion) - ListaBon.Add(New VentasBonificaciones() With {.CveVentaRNCCargo = GvRow.DataKey("CveVenta").ToEntero(), .CveVentaBonificacion = bon.CveVentaBonificacion, .ImporteBonificacion = bon.ImporteBonificacion, .IVABonificacion = bon.IVABonificacion}) + ListaBon.Add(New VentasBonificaciones() With {.CveVentaRNCCargo = CveVentaRNCCargo, .CveVentaBonificacion = bon.CveVentaBonificacion, .ImporteBonificacion = bon.ImporteBonificacion, .IVABonificacion = bon.IVABonificacion}) Next SbFiltro.Remove(SbFiltro.Length - 1, 1) SbFiltro.Append(")") @@ -24389,9 +24413,9 @@ Partial Class Ventas RowBonificacion("ImporteBonificacion") = RNCBonificacion.Sum(Function(x) x.ImporteBonificacion) RowBonificacion("IVABonificacion") = RNCBonificacion.Sum(Function(x) x.IVABonificacion) - RowBonificacion("CveVentaRNCCargo") = GvRow.DataKey("CveVenta").ToEntero() + RowBonificacion("CveVentaRNCCargo") = CveVentaRNCCargo - If ChkAplicarRNC.Checked Then + If AplicarRNC Then TmpDTRNCBonificacionesSeleccionadas.Rows.Add(RowBonificacion.ItemArray) Else For Each RowEliminar In Me.TmpDTRNCBonificacionesSeleccionadas.Select(SbFiltro.ToString()) @@ -24415,12 +24439,16 @@ Partial Class Ventas LblSaldoMaximoBonificacion.Text = String.Format("{0:N2}", Me.TmpDTRNCBonificacionesSeleccionadas.SUM("ImporteBonificacion").ToDecimal() + Me.TmpDTRNCBonificacionesSeleccionadas.SUM("IVABonificacion").ToDecimal()) UpDescNC.Update() - End Sub Protected Sub ChkAplicarNCBon_CheckedChanged(sender As Object, e As EventArgs) Dim ChkAplicarRNC As CheckBox = DirectCast(sender, CheckBox) Dim GvRow As GridViewRow = DirectCast(ChkAplicarRNC.NamingContainer, GridViewRow) + CargaBonificaciones(GvRow.DataKey("CveVenta").ToEntero(), ChkAplicarRNC.Checked) + + End Sub + + Private Sub CargaBonificaciones(CveVentaRNCCargo As Integer, AplicarRNC As Boolean) If TmpDTRNCBonificacionesSeleccionadas Is Nothing Then TmpDTRNCBonificacionesSeleccionadas = Me.TmpDTRNCBonificacionesCliente.Clone() End If @@ -24430,16 +24458,18 @@ Partial Class Ventas Dim SbFiltro As New StringBuilder() SbFiltro.Append("CveVenta IN(") Using ObjAcum As New ClsAcumuladores - If ObjAcum.DistribuidorMovtosGet(CveCliente, UsuarioActual.CveEmpresa, CveVentaRNCCargo:=GvRow.DataKey("CveVenta").ToEntero()) Then + If ObjAcum.DistribuidorMovtosGet(CveCliente, UsuarioActual.CveEmpresa, CveVentaRNCCargo:=CveVentaRNCCargo) Then DtBon = ObjAcum.DtResultados.Copy() End If End Using If DtBon IsNot Nothing Then Dim queryBonificacion = From dr In DtBon - Group By CveVentaBonificacion = dr("CveVentaBonificacion").ToString().ToEntero + Where dr("CveVentaBonificacion").ToString().ToEntero > 0 + Group By CveVentaBonificacion = dr("CveVentaBonificacion").ToString().ToEntero, CveVenta = dr("CveVenta").ToString().ToEntero Into x = Group Select New With { + .CveVentaRNCCargo = CveVenta, .CveVentaBonificacion = CveVentaBonificacion, .ImporteBonificacion = x.Sum(Function(s) s("ImporteBonificacion").ToString().ToDecimal), .IVABonificacion = x.Sum(Function(s) s("IVABonificacion").ToString().ToDecimal) @@ -24447,7 +24477,7 @@ Partial Class Ventas For Each bon In queryBonificacion SbFiltro.AppendFormat("'{0}',", bon.CveVentaBonificacion) - ListaBon.Add(New VentasBonificaciones() With {.CveVentaRNCCargo = GvRow.DataKey("CveVenta").ToEntero(), .CveVentaBonificacion = bon.CveVentaBonificacion, .ImporteBonificacion = bon.ImporteBonificacion, .IVABonificacion = bon.IVABonificacion}) + ListaBon.Add(New VentasBonificaciones() With {.CveVentaRNCCargo = bon.CveVentaRNCCargo, .CveVentaBonificacion = bon.CveVentaBonificacion, .ImporteBonificacion = bon.ImporteBonificacion, .IVABonificacion = bon.IVABonificacion}) Next SbFiltro.Remove(SbFiltro.Length - 1, 1) SbFiltro.Append(")") @@ -24461,9 +24491,9 @@ Partial Class Ventas RowBonificacion("ImporteBonificacion") = RNCBonificacion.Sum(Function(x) x.ImporteBonificacion) RowBonificacion("IVABonificacion") = RNCBonificacion.Sum(Function(x) x.IVABonificacion) - RowBonificacion("CveVentaRNCCargo") = GvRow.DataKey("CveVenta").ToEntero() + RowBonificacion("CveVentaRNCCargo") = CveVentaRNCCargo - If ChkAplicarRNC.Checked Then + If AplicarRNC Then TmpDTRNCBonificacionesSeleccionadas.Rows.Add(RowBonificacion.ItemArray) Else For Each RowEliminar In Me.TmpDTRNCBonificacionesSeleccionadas.Select(SbFiltro.ToString()) @@ -24487,7 +24517,6 @@ Partial Class Ventas LtlSMUBon.Text = String.Format("{0:N2}", Me.TmpDTRNCBonificacionesSeleccionadas.SUM("ImporteBonificacion").ToDecimal() + Me.TmpDTRNCBonificacionesSeleccionadas.SUM("IVABonificacion").ToDecimal()) UpModalRemisionesNC.Update() - End Sub Protected Sub GvDescNCCargos_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles GvDescNCCargos.RowDataBound If e.Row.RowType = DataControlRowType.DataRow Then @@ -24523,6 +24552,12 @@ Partial Class Ventas End If End If End Sub + Protected Sub GvRemisionesNCBon_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles GvRemisionesNCBon.RowDataBound + If e.Row.RowType = DataControlRowType.DataRow Then + e.Row.FCCheckBox("ChkAplicar").Attributes.Add("onclick", $"CalculaSaldoRNCBonChk({e.Row.FCTextBox("TxtImporte").ClientID},{e.Row.DBCampo("Saldo").ToDouble}, this);") + e.Row.FCTextBox("TxtImporte").Attributes.Add("onkeyup", $"LimitaSaldoRNCBonChk({e.Row.FCTextBox("TxtImporte").ClientID},{e.Row.DBCampo("Saldo").ToDouble});") + End If + End Sub Protected Sub DdlNCNivelImporte_SelectedIndexChanged(sender As Object, e As EventArgs) Dim ImporteReferencia As Double = 0, PorcentajeMaximo As Double = 0 @@ -24910,7 +24945,7 @@ Partial Class Ventas Dim TotalAcumuladoRNC As Decimal = 0 Dim Terminar As Boolean = False - For Each RowUsado As DataRow In RNC.DtDetalle.Rows + For Each RowUsado As DataRow In RNC.DtDetalle.FiltraParametros("", Orderby:="PU").Rows Dim Cantidad As Decimal = RowUsado("Cantidad").ToString().ToDecimal() @@ -24994,7 +25029,7 @@ Partial Class Ventas Dim TotalAcumuladoRNC As Decimal = 0 Dim Terminar As Boolean = False - For Each RowUsado As DataRow In Me.TmpDTRNCDetalleSelecciondas.FiltraParametros($"CveVenta={RNC.CveVenta}").Rows + For Each RowUsado As DataRow In Me.TmpDTRNCDetalleSelecciondas.FiltraParametros($"CveVenta={RNC.CveVenta}", Orderby:="PU").Rows Dim Cantidad As Decimal = RowUsado("Cantidad").ToString().ToDecimal() @@ -25087,7 +25122,7 @@ Partial Class Ventas Dim RNCCargo = ListaNC.Where(Function(f) f.CveVenta = RNCBonificacion.CveVentaRNCCargo).FirstOrDefault() - For Each RowCargo As DataRow In RNCCargo.DtDetalle.Rows + For Each RowCargo As DataRow In RNCCargo.DtDetalle.FiltraParametros("", Orderby:="PU").Rows Dim PorcentajeAplicado = (RNCBonificacion.TotalRemNCAplicado / RNCBonificacion.Total) @@ -26499,8 +26534,12 @@ Partial Class Ventas If Not DtCotizaciones.Columns.Contains("Aplicado") Then DtCotizaciones.Columns.Add("Aplicado", Type.GetType("System.Boolean")) End If + If UsuarioActual.Empresa.Funcionalidad(531) = "1" Then + GvCotPS.DataSource = DtCotizaciones.FiltraParametros("Cantidad > 0 AND EsAcumulador = False") + Else + GvCotPS.DataSource = DtCotizaciones.FiltraParametros("Cantidad > 0") + End If - GvCotPS.DataSource = DtCotizaciones.FiltraParametros("Cantidad > 0") End If ObjVentas.Dispose() GvCotPS.DataBind() @@ -26568,6 +26607,11 @@ Partial Class Ventas For Each row As DataRow In DTSeleccionadas.FiltraParametros("", DistinctColumns:={"CveVenta"}).Rows CotizacionesLista.Add(row("CveVenta").ToString().ToEntero()) Next + + If UsuarioActual.Empresa.Funcionalidad(531) = "1" Then + CalculaUsadosCotizacion(Cves, DTSeleccionadas, DtCotizaciones) + End If + Else For Each row As DataRow In DTSeleccionadas.Rows If CveMetodoPago <> -1 And row("CveMetodoPago33").ToString().ToEntero() <> CveMetodoPago Then @@ -26612,6 +26656,74 @@ Partial Class Ventas UpPS.Update() UpParametros.Update() End Sub + + Private Sub CalculaUsadosCotizacion(ByRef SbVentasDetalle As StringBuilder, ByVal DTSeleccionadas As DataTable, ByVal DtCotizaciones As DataTable) + If DdlTipoComprobante.SelectedValue.Contiene("Ing", "Rem", "Cot", "Dev") Then + + Dim DTTamanios As DataTable = GlobalDTAcumTamaños() + + Dim DTCvePSCostos As DataTable = DTTamanios.FiltraParametros("", "", {"CvePSCargo"}) + + Dim TmpDTCalculo As DataRow() = DTSeleccionadas.Rows.Cast(Of DataRow).ToArray() + + Dim DTPSTemp As New DataTable '= TmpDT.Clone + + DTPSTemp.Columns.Add("CveVenta", GetType(Integer)) + DTPSTemp.Columns.Add("Cantidad", GetType(Integer)) + DTPSTemp.Columns.Add("CvePS", GetType(Integer)) + DTPSTemp.Columns.Add("PU", GetType(Decimal)) + + For Each DrowPartidas As DataRow In TmpDTCalculo + Dim CveTamanioTemp As Integer = DrowPartidas("CveTamaño").ToString().ToEntero() + Dim CveVenta As Integer = DrowPartidas("CveVenta").ToString().ToEntero() + + If CveTamanioTemp > 0 Then + + Dim DTTamanioTemp As New DataTable + Dim CvePsTemp As Integer = DTTamanios.FiltraParametros($"CveTamaño = { CveTamanioTemp } ").Rows(0)("CvePSCargo").ToString().ToEntero() + + Dim Cargo As Decimal = DTTamanios.FiltroPrimeroValor("Cargo", $" CveTamaño = { CveTamanioTemp }").ToDecimal + + If DTPSTemp.FiltraParametros($"CvePs = { CvePsTemp }").Rows.Count > 0 Then + + For Each dRowUpdate As DataRow In DTPSTemp.Rows + + If (dRowUpdate("CvePS").ToString().ToEntero() = CvePsTemp) Then + dRowUpdate("Cantidad") = dRowUpdate("Cantidad").ToString().ToDecimal + DrowPartidas("Cantidad").ToString().ToDecimal + dRowUpdate("PU") = Cargo ' dRowUpdate("Total").ToString().ToDecimal + ImporteCargo + dRowUpdate("CveVenta") = CveVenta + End If + Next + + DTPSTemp.AcceptChanges() + + Else + Dim dRowNuevo As DataRow = DTPSTemp.NewRow + + dRowNuevo("CvePS") = CvePsTemp + dRowNuevo("Cantidad") = DrowPartidas("Cantidad").ToString().ToDecimal + dRowNuevo("PU") = Cargo + dRowNuevo("CveVenta") = CveVenta + + DTPSTemp.Rows.Add(dRowNuevo) + DTPSTemp.AcceptChanges() + End If + + End If + Next + + For Each drowPsTamaños As DataRow In DTPSTemp.Rows + + If drowPsTamaños("PU").ToString().ToDecimal > 0 Then + + Dim CveVentaDetalleUsado = DtCotizaciones.FiltroPrimeroValor("CveVentaDetalle", $"CveVenta = {drowPsTamaños("CveVenta")} AND CvePS = {drowPsTamaños("CvePS")}").ToEntero() + SbVentasDetalle.AppendFormat("{0},", CveVentaDetalleUsado) + + End If + Next + + End If + End Sub Private Sub VerificaCotizaciones(ByRef dt As DataTable) If ChkCotProductos.Checked Then For Each Gvr As GridViewRow In GvCotPS.Rows @@ -28382,13 +28494,15 @@ Partial Class Ventas End Sub Protected Sub BtnAplicarDesc_Click(sender As Object, e As EventArgs) Try - Dim CveSATNC = "84111506" - Dim DrPS = GlobalDTPS(UsuarioActual.CveEmpresa, SATClavePS:=CveSATNC, AplicaParaVenta:=1).Rows(0) + Dim DrPS As DataRow = Nothing Dim ArrayNC As String() = UsuarioActual.Empresa.Funcionalidad(591).Split(",".ToCharArray()) - If ArrayNC.Length > 0 Then - Dim CvePSNC As Integer = ArrayNC(0).ToEntero() + If ArrayNC.Length >= 4 Then + Dim CvePSNC As Integer = ArrayNC(3).ToEntero() DrPS = GlobalDTPS(UsuarioActual.CveEmpresa, CvePS:=CvePSNC, AplicaParaVenta:=1).Rows(0) + Else + Dim CveSATNC = "84111506" + DrPS = GlobalDTPS(UsuarioActual.CveEmpresa, SATClavePS:=CveSATNC, AplicaParaVenta:=1).Rows(0) End If If DrPS Is Nothing Then @@ -28431,7 +28545,7 @@ Partial Class Ventas 'SI TIENE ALGUN AJUSTE O GARANTIA If ListaNCDesc.Any(Function(RNC) RNC.Num2 = 1) Then - For Each RNC In ListaRemisionesNC.Where(Function(x) x.Num2 = 1) + For Each RNC In ListaNCDesc.Where(Function(x) x.Num2 = 1) Dim Salir As Boolean = False Dim NCAjuste As Integer = -1 @@ -28496,9 +28610,12 @@ Partial Class Ventas ListaNCDesc.Clear() Exit Sub End If + + Dim TotalProntoPago As Decimal = TmpDT.SUM("ImporteProntoPago").ToDecimal + HdnTotalRNC.Value = TotalRemNCAplicado.ToString() LblDescuentosRNC.Text = TotalRemNCAplicado.FormatoNumero - LblTotalNC.Text = (TxtTotal.Text.ToDecimal() - TotalRemNCAplicado).FormatoNumero + LblTotalAPagar.Text = (TxtTotal.Text.ToDecimal() - TotalRemNCAplicado - TotalProntoPago).FormatoNumero Dim CvePS = DrPS("CvePS").ToString().ToEntero() @@ -29415,7 +29532,7 @@ Partial Class Ventas DtImpuestos.AcceptChanges() Dim AcumuladoNC As Decimal = 0 - DtImpuestos.Merge(CargaDtImpuestosNC(ObjFactura.CveVenta, ObjFactura.DescuentoProntoPago), True, MissingSchemaAction.Ignore) + DtImpuestos.Merge(CargaDtImpuestosNCProntoPago(ObjFactura.CveVenta, ObjFactura.DescuentoProntoPago), True, MissingSchemaAction.Ignore) DtImpuestos = CargaTotalesImpuestosProntoPago(DtImpuestos)