diff --git a/App_Code/ClsAF.vb b/App_Code/ClsAF.vb index 2a68ffb0a..3f163880d 100644 --- a/App_Code/ClsAF.vb +++ b/App_Code/ClsAF.vb @@ -259,12 +259,17 @@ Public Class ClsAF Return Retorno End Function - Public Function GetRepActivosFijosDepreciacion(CveEmpresa As Integer, Fecha As Date) As Boolean + Public Function GetRepActivosFijosDepreciacion(CveEmpresa As Integer, Fecha As Date, Optional Depreciados As Integer = 1, Optional CveTipoAF As Integer = -1, Optional CveSubTipoAF As Integer = -1, Optional CveSubProyecto As Integer = -1, Optional CveEstadoActivoFijo As Integer = -1) As Boolean Dim Retorno As Boolean = False DataAdapter("PA_AF_DepreciacionesGetRep") With SqlAdapter.SelectCommand.Parameters .Add("@CveEmpresa", SqlDbType.Int).Value = CveEmpresa .Add("@Fecha", SqlDbType.Date).Value = Fecha + .Add("@Depreciados", SqlDbType.Int).Value = Depreciados + .Add("@CveTipoAF", SqlDbType.Int).Value = CveTipoAF + .Add("@CveSubTipoAF", SqlDbType.Int).Value = CveSubTipoAF + .Add("@CveSubProyecto", SqlDbType.Int).Value = CveSubProyecto + .Add("@CveEstadoActivoFijo", SqlDbType.Int).Value = CveEstadoActivoFijo End With Try SqlAdapter.Fill(Data) @@ -276,6 +281,23 @@ Public Class ClsAF Return Retorno End Function + Public Function GetActivosFijosVenta(CveVenta As Integer, CveEmpresa As Integer) As Boolean + Dim Retorno As Boolean = False + DataAdapter("PA_AF_ActivosFijosVentaGet") + With SqlAdapter.SelectCommand.Parameters + .Add("@CveVenta", SqlDbType.Int).Value = CveVenta + .Add("@CveEmpresa", SqlDbType.Int).Value = CveEmpresa + End With + Try + SqlAdapter.Fill(Data) + Retorno = True + Catch ex As Exception + OnError("Ocurrió un error al obtener el los activos fijos de la venta.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo()) + End Try + + Return Retorno + End Function + Public Function GetActivosFijos(CveActivoFijo As Integer, CveEmpresa As Integer, Codigo As String, Descripcion As String, CveTipoActivoFijo As Integer, CveSubTipoActivoFijo As Integer, NoSerie As String, Año As Integer, CvePersonaResponsable As Integer, CveProyecto As Integer, CveSubProyecto As Integer, CveEstadoActivoFijo As Integer, CaracteristicaValor As String, CveCliente As Integer, Optional BuscaGrupoEmpresa As Integer = -1, Optional BuscaPorAFPadre As Integer = -1, Optional CveGrupo As Integer = -1) As Boolean Dim Retorno As Boolean = False DataAdapter("PA_AF_ActivosFijosGet") diff --git a/App_Code/ClsContabilidad.vb b/App_Code/ClsContabilidad.vb index 994ef7716..32cda23f7 100644 --- a/App_Code/ClsContabilidad.vb +++ b/App_Code/ClsContabilidad.vb @@ -1196,13 +1196,14 @@ Public Class ClsContabilidad Return Concepto End Function - Public Function GetPrePolizasDetalle(CvePrePoliza As Integer, CveEmpresa As Integer, Optional CveIE As Integer = -1) As Boolean + Public Function GetPrePolizasDetalle(CvePrePoliza As Integer, CveEmpresa As Integer, Optional CveIE As Integer = -1, Optional CveVenta As Integer = -1) As Boolean Dim Retorno As Boolean = False DataAdapter("PA_Conta_PrePolizasDetalleGet") With SqlAdapter.SelectCommand.Parameters .Add("@CvePrePoliza", SqlDbType.Int).Value = CvePrePoliza .Add("@CveIE", SqlDbType.Int).Value = CveIE .Add("@CveEmpresa", SqlDbType.Int).Value = CveEmpresa + .Add("@CveVenta", SqlDbType.Int).Value = CveVenta End With Try diff --git a/App_Code/ClsVentas.vb b/App_Code/ClsVentas.vb index 2819ceb5a..7a4694fb5 100644 --- a/App_Code/ClsVentas.vb +++ b/App_Code/ClsVentas.vb @@ -1325,7 +1325,7 @@ Public Class ClsVentas CvePresupuestoIngreso As Integer, Optional TiempoEntrega As String = "", Optional CveVentaDetallePadre As Integer = -1, Optional CveContratoDetalle As Integer = -1, Optional PorcentajeIVA As Decimal = 0, Optional IEPS As Double = -1, Optional PorcentajeIEPS As Double = 0, Optional CvePromocionDetalle As Integer = -1, Optional CveMovimientoDetallePedido As Integer = -1, Optional ImporteRetIVA As Double = 0, Optional PorcentajeRetIVA As Double = 0, - Optional ImporteRetISR As Double = 0, Optional PorcentajeRetISR As Double = 0, Optional CuentaPredial As String = "", Optional CvePrecioLista As Integer = -1) As Boolean + Optional ImporteRetISR As Double = 0, Optional PorcentajeRetISR As Double = 0, Optional CuentaPredial As String = "", Optional CvePrecioLista As Integer = -1, Optional CveActivoFijo As Integer = -1) As Boolean Dim Retorno As Boolean = False DataAdapter("PA_VentasDetalleAdd") @@ -1356,6 +1356,7 @@ Public Class ClsVentas .Add("@CveMovimientoDetallePedido", SqlDbType.Int).Value = CveMovimientoDetallePedido .Add("@CuentaPredial", SqlDbType.VarChar).Value = CuentaPredial .Add("@CvePrecioLista", SqlDbType.Int).Value = CvePrecioLista + .Add("@CveActivoFijo", SqlDbType.Int).Value = CveActivoFijo End With Try @@ -5783,6 +5784,26 @@ Public Class ClsVentas End Function + Public Function UpdateEstatusAFVendido(CveActivoFijo As Integer, CveEmpresa As Integer, Optional CveEstadoActivoFijo As Integer = -1) As Boolean + Dim Retorno As Boolean = False + DataAdapter("PA_AF_EstatusAFUpdate") + + With SqlAdapter.SelectCommand.Parameters + .Add("@CveEmpresa", SqlDbType.Int).Value = CveEmpresa + .Add("@CveActivoFijo", SqlDbType.Int).Value = CveActivoFijo + .Add("@CveEstadoActivoFijo", SqlDbType.Int).Value = CveEstadoActivoFijo + End With + Try + SqlAdapter.Fill(Data) + Retorno = True + + Catch ex As Exception + OnError("Ocurrió un error al guardar los cambios del estatus de AF.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo) + End Try + + Return Retorno + End Function + #Region "IDisposable Support" diff --git a/App_Code/Modelos.vb b/App_Code/Modelos.vb index f9759cb99..fc71cd0ed 100644 --- a/App_Code/Modelos.vb +++ b/App_Code/Modelos.vb @@ -2421,6 +2421,13 @@ Namespace Modelos Dim IdCtaIVAXTrasladar As Integer = 0 Dim IdCtaIVATrasladado As Integer = 0 Dim SeContabiliza As Boolean = True + Dim DtPrePolizasAFCancelar As DataTable = Nothing + + If ValorMultiplicador = -1 AndAlso ObjFactura.DtDetalle IsNot Nothing AndAlso ObjFactura.DtDetalle.COUNT("CveActivoFijo", "CveActivoFijo > 0") > 0 Then + If ObjConta.GetPrePolizasDetalle(-1, UsuarioActual.CveEmpresa, CveVenta:=ObjFactura.CveVenta) Then + DtPrePolizasAFCancelar = ObjConta.DtResultados.FiltraParametros("CveConceptoContable IN (271,49,4)") + End If + End If If (UsuarioActual.Empresa.Funcionalidad(343) = "1" AndAlso ObjFactura.TipoDocto = "Ant") Then SeContabiliza = False @@ -2527,6 +2534,16 @@ Namespace Modelos importeMovimiento = 0 End If + + If ValorMultiplicador = -1 AndAlso DtPrePolizasAFCancelar IsNot Nothing Then + For Each RowAF As DataRow In DtPrePolizasAFCancelar.FiltraParametros("CveConceptoContable = 271").Rows + If Not ObjConta.AddPrePolizasDetalle(ObjFactura.CvePrePoliza, CBool(RowAF("TipoMovto")), RowAF("Importe").ToString().ToDecimal() * -1, RowAF("Referencia").ToString(), 271, RowAF("Concepto").ToString(), FechaMovimiento, -1, -1, CveVenta:=ObjFactura.CveVenta, CveCliente:=ObjFactura.CveCliente, CveIE:=-1, ImporteMX:=RowAF("ImporteMN").ToString().ToDecimal() * -1, ImporteME:=RowAF("ImporteME").ToString().ToDecimal() * -1, TipoCambio:=RowAF("TC").ToString().ToDecimal(), CveSubProyecto:=RowAF("CveSubProyecto").ToString().ToEntero(), Contabilizable:=CBool(RowAF("Contabilizable"))) Then + ErrorPrepoliza = True + End If + Next + End If + + End If Case 3 'Cliente @@ -3317,53 +3334,71 @@ Namespace Modelos importeMovimiento = 0 Case 4 'Venta Clasificacion - If Not ObjFactura.TipoDocto.Contiene("Rem", "Ant", "Egs", "Dev", "RNC") Then - Dim ConceptoContableAplicar = 4 - Dim CveVentaAplicar = ObjFactura.CveVenta - Dim CveVentaAmortizacionAplicar = -1 + If ValorMultiplicador = -1 AndAlso DtPrePolizasAFCancelar IsNot Nothing Then - If ObjFactura.TipoDocto.Contiene("Egs") And ObjFactura.TipoDocto = "Ant" And CveDevolucion > 0 And NuevaFactura = 1 Then - ConceptoContableAplicar = 11 - CveVentaAplicar = CveDevolucion - CveVentaAmortizacionAplicar = ObjFactura.CveVenta - End If - - DT = TmpDTDetalle.FiltraParametros($"CvePS <> {ObjFactura.CvePSAmortizacion}", "", {"CveClasificacion", "CveSubProyecto", "PorcentajeIVA"}) - - If DT.Rows.Count > 0 Then - 'Se agrega movimiento separado por la cuenta de ventas (ER) - For Each Row2 As DataRow In DT.Rows - importeMovimiento = ((TmpDTDetalle.SUM("TotalImporte", String.Format("CveClasificacion = {0} AND CveSubProyecto = {1} AND PorcentajeIVA = {2}", Row2("CveClasificacion"), Row2("CveSubProyecto"), Row2("PorcentajeIVA"))).ToString.ToDecimal) * ValorMultiplicador) - importeMX = importeMovimiento * tipoCambio * Multiplicador - FechaMovimiento = ObjFactura.FechaPago - Concepto = $"{ObjFactura.SerieFolio} {If(Row2("CveClasificacion").ToString.ToEntero > 0, ClsPaginas.GlobalDTClasificaciones(UsuarioActual.CveEmpresa).FiltroPrimeroValor("Clasificacion", $"CveClasificacion = {Row2("CveClasificacion").ToString}"), "")} - {If(Row2("CveSubProyecto").ToString.ToEntero > 0, ClsPaginas.GlobalDTSubProyectos(-1, -1, UsuarioActual.CveEmpresa).FiltroPrimeroValor("SubProyecto", $"CveSubProyecto = {Row2("CveSubProyecto").ToString}"), "Sin SubProyecto Asignado")}" - - If tipoCambio > 1 Then Concepto += $" TC:{tipoCambio} ${importeMovimiento.FormatoNumero(2)}" - 'Nota cuando es Nota de crédiot, debe de tomar el devoluciones y rebajas - If ObjFactura.TipoDocto.Contiene("Egs") Then - IdCtaContable = ClsPaginas.GlobalDTClasificaciones(ObjFactura.CveEmpresa).FiltroPrimeroValor("IdCuentaGasto", String.Format("CveClasificacion = {0}", Row2("CveClasificacion"))).ToEntero - Else - IdCtaContable = ClsPaginas.GlobalDTClasificaciones(ObjFactura.CveEmpresa).FiltroPrimeroValor("IdCuentaIngresos", String.Format("CveClasificacion = {0}", Row2("CveClasificacion"))).ToEntero + For Each RowAF As DataRow In DtPrePolizasAFCancelar.FiltraParametros("CveConceptoContable IN(4,49)").Rows + If Not ObjConta.AddPrePolizasDetalle(ObjFactura.CvePrePoliza, CBool(RowAF("TipoMovto")), RowAF("Importe").ToString().ToDecimal() * -1, RowAF("Referencia").ToString(), RowAF("CveConceptoContable").ToString().ToEntero(), RowAF("Concepto").ToString(), FechaMovimiento, -1, -1, CveVenta:=ObjFactura.CveVenta, CveVentaAmortizacion:=RowAF("CveVentaAmortizacion").ToString().ToEntero(), CveClasificacion:=RowAF("CveClasificacion").ToString().ToEntero(), PorcentajeImpuesto:=RowAF("PorcentajeImpuesto").ToString().ToDecimal(), CveCliente:=ObjFactura.CveCliente, CveIE:=RowAF("CveIE").ToString().ToEntero(), ImporteMX:=RowAF("ImporteMN").ToString().ToDecimal() * -1, ImporteME:=RowAF("ImporteME").ToString().ToDecimal() * -1, TipoCambio:=RowAF("TC").ToString().ToDecimal(), CveSubProyecto:=RowAF("CveSubProyecto").ToString().ToEntero(), CveActivoFijo:=RowAF("CveActivoFijo").ToString().ToEntero(), Contabilizable:=CBool(RowAF("Contabilizable"))) Then + ErrorPrepoliza = True + End If + 'REGRESAR EL ACTIVO FIJO A ACTIVO + If RowAF("CveActivoFijo").ToString().ToEntero() > 0 Then + If Not ObjVentas.UpdateEstatusAFVendido(RowAF("CveActivoFijo").ToString().ToEntero(), UsuarioActual.CveEmpresa, 1) Then + ErrorPrepoliza = True End If + End If + Next - If importeMovimiento <> 0 Then + Else + If Not ObjFactura.TipoDocto.Contiene("Rem", "Ant", "Egs", "Dev", "RNC") Then - If IdCtaContable <= 0 Then - CuentasContablesInvalidas.Append("
" & ClsPaginas.GlobalDTContaConceptosContables(-1).FiltroPrimero(String.Format("CveConceptoContable = {0}", ConceptoContable))("ConceptoContable").ToString + ClsPaginas.GlobalDTClasificaciones(UsuarioActual.CveEmpresa).FiltroPrimeroValor("Clasificacion", $"CveClasificacion = {Row2("CveClasificacion").ToString}")) - idCuentaContabilizacion = 0 - End If + Dim ConceptoContableAplicar = 4 + Dim CveVentaAplicar = ObjFactura.CveVenta + Dim CveVentaAmortizacionAplicar = -1 - If Not ObjConta.AddPrePolizasDetalle(ObjFactura.CvePrePoliza, TipoMovimiento, importeMovimiento, Referencia, ConceptoContableAplicar, Concepto, ObjFactura.Fecha, IdCtaContable, -1, CveVenta:=CveVentaAplicar, CveVentaAmortizacion:=CveVentaAmortizacionAplicar, CveCliente:=ObjFactura.CveCliente, CveIE:=CveIE, CveClasificacion:=Row2("CveClasificacion").ToString.ToEntero, CveSubProyecto:=Row2("CveSubProyecto").ToString.ToEntero, ImporteMX:=importeMX, ImporteME:=If(tipoCambio = 1, 0, importeMovimiento), TipoCambio:=tipoCambio, PorcentajeImpuesto:=Row2("PorcentajeIVA").ToString().ToDecimal) Then - ErrorPrepoliza = True + If ObjFactura.TipoDocto.Contiene("Egs") And ObjFactura.TipoDocto = "Ant" And CveDevolucion > 0 And NuevaFactura = 1 Then + ConceptoContableAplicar = 11 + CveVentaAplicar = CveDevolucion + CveVentaAmortizacionAplicar = ObjFactura.CveVenta + End If + + DT = TmpDTDetalle.FiltraParametros($"CvePS <> {ObjFactura.CvePSAmortizacion}", "", {"CveClasificacion", "CveSubProyecto", "PorcentajeIVA"}) + + If DT.Rows.Count > 0 Then + 'Se agrega movimiento separado por la cuenta de ventas (ER) + For Each Row2 As DataRow In DT.Rows + importeMovimiento = ((TmpDTDetalle.SUM("TotalImporte", String.Format("CveClasificacion = {0} AND CveSubProyecto = {1} AND PorcentajeIVA = {2}", Row2("CveClasificacion"), Row2("CveSubProyecto"), Row2("PorcentajeIVA"))).ToString.ToDecimal) * ValorMultiplicador) + importeMX = importeMovimiento * tipoCambio * Multiplicador + FechaMovimiento = ObjFactura.FechaPago + Concepto = $"{ObjFactura.SerieFolio} {If(Row2("CveClasificacion").ToString.ToEntero > 0, ClsPaginas.GlobalDTClasificaciones(UsuarioActual.CveEmpresa).FiltroPrimeroValor("Clasificacion", $"CveClasificacion = {Row2("CveClasificacion").ToString}"), "")} - {If(Row2("CveSubProyecto").ToString.ToEntero > 0, ClsPaginas.GlobalDTSubProyectos(-1, -1, UsuarioActual.CveEmpresa).FiltroPrimeroValor("SubProyecto", $"CveSubProyecto = {Row2("CveSubProyecto").ToString}"), "Sin SubProyecto Asignado")}" + + If tipoCambio > 1 Then Concepto += $" TC:{tipoCambio} ${importeMovimiento.FormatoNumero(2)}" + 'Nota cuando es Nota de crédiot, debe de tomar el devoluciones y rebajas + If ObjFactura.TipoDocto.Contiene("Egs") Then + IdCtaContable = ClsPaginas.GlobalDTClasificaciones(ObjFactura.CveEmpresa).FiltroPrimeroValor("IdCuentaGasto", String.Format("CveClasificacion = {0}", Row2("CveClasificacion"))).ToEntero Else - ObjFactura.SeGuardoPrePoliza = True + IdCtaContable = ClsPaginas.GlobalDTClasificaciones(ObjFactura.CveEmpresa).FiltroPrimeroValor("IdCuentaIngresos", String.Format("CveClasificacion = {0}", Row2("CveClasificacion"))).ToEntero End If - End If - Next + + If importeMovimiento <> 0 Then + + If IdCtaContable <= 0 Then + CuentasContablesInvalidas.Append("
" & ClsPaginas.GlobalDTContaConceptosContables(-1).FiltroPrimero(String.Format("CveConceptoContable = {0}", ConceptoContable))("ConceptoContable").ToString + ClsPaginas.GlobalDTClasificaciones(UsuarioActual.CveEmpresa).FiltroPrimeroValor("Clasificacion", $"CveClasificacion = {Row2("CveClasificacion").ToString}")) + idCuentaContabilizacion = 0 + End If + + If Not ObjConta.AddPrePolizasDetalle(ObjFactura.CvePrePoliza, TipoMovimiento, importeMovimiento, Referencia, ConceptoContableAplicar, Concepto, ObjFactura.Fecha, IdCtaContable, -1, CveVenta:=CveVentaAplicar, CveVentaAmortizacion:=CveVentaAmortizacionAplicar, CveCliente:=ObjFactura.CveCliente, CveIE:=CveIE, CveClasificacion:=Row2("CveClasificacion").ToString.ToEntero, CveSubProyecto:=Row2("CveSubProyecto").ToString.ToEntero, ImporteMX:=importeMX, ImporteME:=If(tipoCambio = 1, 0, importeMovimiento), TipoCambio:=tipoCambio, PorcentajeImpuesto:=Row2("PorcentajeIVA").ToString().ToDecimal) Then + ErrorPrepoliza = True + Else + ObjFactura.SeGuardoPrePoliza = True + End If + End If + Next + End If End If End If + importeMovimiento = 0 Case 150 'Descuento sobre ventas If ObjFactura.TipoDocto.Contiene("Egs", "Dev") AndAlso Not EsNCAmortizacion Then diff --git a/Ventas/ProductosServicios.aspx.vb b/Ventas/ProductosServicios.aspx.vb index 2d2ca60d4..2b5831fcf 100644 --- a/Ventas/ProductosServicios.aspx.vb +++ b/Ventas/ProductosServicios.aspx.vb @@ -122,7 +122,14 @@ Partial Class ProductosyServicios End Set End Property - + Private Property GeneraServicioAF As Integer + Get + Return ViewState("GeneraServicioAF").ToString.ToEntero + End Get + Set(value As Integer) + ViewState("GeneraServicioAF") = value + End Set + End Property #End Region Private ReadOnly Property PermiteClasificacion2 As Boolean @@ -308,6 +315,22 @@ Partial Class ProductosyServicios LtlScripts.Text = $"" If Not CvePS > 0 Then MuestraPanel(True) + + If Request("GeneraServicioAF") IsNot Nothing AndAlso IsNumeric(Request("GeneraServicioAF")) AndAlso Request("GeneraServicioAF").ToEntero() = 1 Then + GeneraServicioAF = 1 + TxtPS.Text = "Servicio de facturación de activos fijos" + + DdlTipoPS.SelectedValueExist("1") + DdlTipoPS.Enabled = False + + ChkAplicaParaVenta.Checked = True + + Dim DrSAT = GlobalDTPS(UsuarioActual.CveEmpresa, SATClavePS:="84111506", AplicaParaVenta:=1).FiltroPrimero("") ', SATClavePS:=CveSATNC + + DdlSATPS.SelectedValue = DrSAT("CveSATPS").ToString() + DdlSATPS.SelectedText = DrSAT("SATClaveProductoServicio").ToString() + End If + End If End Sub @@ -1403,6 +1426,7 @@ Partial Class ProductosyServicios Dim ObjProductosServicios As New ClsProductosServicios() Dim ObjInv As New ClsInventarios(ObjProductosServicios.IniciaTransacSQL()) + Dim ObjEmpresas As New ClsSisEmpresas(ObjProductosServicios.IniciaTransacSQL()) Dim TieneError = False Dim AccionJS = "" @@ -1435,6 +1459,7 @@ Partial Class ProductosyServicios TxtFechaVigenciaRSCO.Text = "01/01/1900" End If + If CvePS = -1 Then Dim PSS As String = TxtPS.Text.Trim.Replace("|", "") If UsuarioActual.CveEmpresa.Contiene(1, 72, 80) Then PSS = PSS.ToUpper @@ -1478,6 +1503,24 @@ Partial Class ProductosyServicios TieneError = GuardarProductoEnFranquicia(ObjProductosServicios, PSS, CveMetodoInv, EsPaquete, True) End If + If GeneraServicioAF = 1 Then + + Dim RowFuncionalidad380 As DataRow = Nothing + + If ObjEmpresas.GetEmpresasFuncionalidades(UsuarioActual.CveEmpresa) Then + RowFuncionalidad380 = ObjEmpresas.DtResultados.FiltroPrimero("CveFuncionalidad = 380") + Else + TieneError = True + End If + + 'SI NO TIENE LA FUNCIONALIDAD 380 GUARDAR LA FUNCIONALIDAD + If Not TieneError AndAlso RowFuncionalidad380 Is Nothing Then + If Not ObjEmpresas.AddUpdateEmpresaFuncionalidades(UsuarioActual.CveEmpresa, 380, $"{Me.CvePS}") Then + TieneError = True + End If + End If + End If + Else TieneError = True Alert("Ocurrió un Error al agregar el Producto o Servicio. Por favor vuelva a intentar.", TipoMensaje.MsgError) @@ -1595,7 +1638,7 @@ Partial Class ProductosyServicios If Not TieneError Then ObjProductosServicios.Commit() - Alert("El Producto/Servicio se guardo correctamente.", TipoMensaje.MsgInformacion, AccionJS) + Alert("El Producto/Servicio se guardo correctamente." + If(GeneraServicioAF = 1, " Recargue la pagina de ventas para poder utilizar el servicio", ""), TipoMensaje.MsgInformacion, AccionJS) Else ObjProductosServicios.RollBack() End If diff --git a/Ventas/Ventas.aspx b/Ventas/Ventas.aspx index 5541ff8c2..0d08fa083 100644 --- a/Ventas/Ventas.aspx +++ b/Ventas/Ventas.aspx @@ -1065,7 +1065,7 @@ - +
@@ -3114,26 +3114,129 @@ - + - + - - - - -
-
-
- Venta de Activos Fijos - - - - -
-
+
+
+
+
+
+ + Venta de Activos Fijos +
+
+
+
+
+
+ +
-
+
+
+
+
+ + + + + +
+
+
+
Tipo Activo Fijo:
+
+ +
+
SubTipo Activo Fijo:
+
+ +
+
Sub Proyecto:
+
+ +
+
+
+
+
+
+
+ Concepto: +
+
+ + + +
+
+ +
+
+
+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+
+
+
+
+ + Venta de Activos Fijos +
+
+
+
+
+
+ +
+
+
+
+ + + + + + + +
+
+
+
+
@@ -9515,6 +9618,8 @@ step: 30 }); + $('body').on('click', '.ChkAllClickAF input', function () { $(".ChkAllEvtAF input").not(this).prop('checked', $('.ChkAllClickAF input').is(':checked')); }); + if(HdnCargarInventario.value == 'True'){ $("#TabAlmacen_tab .ajax__tab_inner").click(function () { CargaMovimientosInventario(); diff --git a/Ventas/Ventas.aspx.vb b/Ventas/Ventas.aspx.vb index 9e04e1153..c278c0bdd 100644 --- a/Ventas/Ventas.aspx.vb +++ b/Ventas/Ventas.aspx.vb @@ -2736,6 +2736,9 @@ Partial Class Ventas TmpDT.Columns.Add("CveMarca", GetType(Integer)) TmpDT.Columns.Add("CvePrecioLista", GetType(Integer)) TmpDT.Columns.Add("PrecioLista", GetType(String)) + TmpDT.Columns.Add("CveActivoFijo", GetType(Integer)) + TmpDT.Columns.Add("AFDepreciacion", GetType(Decimal)) + TmpDT.Columns.Add("AFValorInicial", GetType(Decimal)) GvPS.DataSource = ObjVentas.DtResultados GvPS.DataBind() @@ -2763,6 +2766,9 @@ Partial Class Ventas TmpDT.Columns.Add("CveMarca", GetType(Integer)) TmpDT.Columns.Add("CvePrecioLista", GetType(Integer)) TmpDT.Columns.Add("PrecioLista", GetType(String)) + TmpDT.Columns.Add("CveActivoFijo", GetType(Integer)) + TmpDT.Columns.Add("AFDepreciacion", GetType(Decimal)) + TmpDT.Columns.Add("AFValorInicial", GetType(Decimal)) GvPS.DataSource = ObjVentas.DtResultados GvPS.DataBind() @@ -3291,7 +3297,12 @@ Partial Class Ventas DivAddUMPyME.Visible = False End If - TabVentaAF.Visible = False + TabVentaAF.Visible = (UsuarioActual.CveRol = 1) + DivAgregarAF.Visible = (CveVenta <= 0 AndAlso UsuarioActual.CveRol = 1) + + If DivAgregarAF.Visible Then + CargaDatosAF() + End If 'CARGA VALORES INICIALES PARA AGREGAR PS DESDE MODAL CargaMetodosPSModal() @@ -4637,6 +4648,8 @@ Partial Class Ventas TmpDT.Columns.Add("ImporteProntoPago", GetType(Decimal)) End If + CargaAFVenta() + 'CargaFirmas If ObjVentas.GetVentasFirmas(CveVenta) Then If ObjVentas.DtResultados.Rows.Count > 0 Then @@ -7658,12 +7671,20 @@ Partial Class Ventas dtt = GlobalDTSubProyectosUsuarios(UsuarioActual.CveUsuario, -1, UsuarioActual.CveEmpresa, -1, 1) DdlSubProyectoDatos.DataSource = dtt.FiltraParametros("EsSucursal = True ") DdlSubProyectoDatos.DataBind() + DdlSubProyectoCobranza.DataSource = dtt.FiltraParametros("EsSucursal = True ") DdlSubProyectoCobranza.DataBind() + DdlSubProyectoEjecucion.DataSource = dtt.FiltraParametros("EsSucursal = True ") DdlSubProyectoEjecucion.DataBind() + DdlSubProyectoPyME.DataSource = dtt DdlSubProyectoPyME.DataBind() + + DdlSubProyectoFiltroAF.DataSource = dtt + DdlSubProyectoFiltroAF.DataBind() + DdlSubProyectoFiltroAF.Items.Insert(0, New ListItem("Todos", "-1")) + dtt.Dispose() End Sub Private Sub CargaClasificaciones() @@ -13336,7 +13357,7 @@ Partial Class Ventas Row("PU").ToString().ToDouble(If(factura.ConvertirPesos, factura.TipoCambio, 1)), Row("ImporteIVA").ToString().ToDouble, Math.Round((Row("Total").ToString().ToDouble(If(factura.ConvertirPesos, factura.TipoCambio, 1)) * (1 + Row("PorcentajeIVA").ToString().ToDouble(If(factura.ConvertirPesos, factura.TipoCambio, 1)))), 6), Row("Obs").ToString(), Row("Descuento").ToString().ToDouble(If(factura.ConvertirPesos, factura.TipoCambio, 1)), Row("TipoDescuento").ToString().ToEntero(), Row("CveSubProyecto").ToString().ToEntero(), Row("CvePresupuestoIngreso").ToString().ToEntero(), TiempoEntrega:=Row("TiempoEntrega").ToString(), CveVentaDetallePadre:=Row("CveVentaDetalle").ToString().ToEntero(), CveContratoDetalle:=Row("CveContratoDetalle").ToString().ToEntero(), CvePromocionDetalle:=Row("CvePromocionDetalle").ToString().ToEntero(), IEPS:=Row("ImporteIEPS").ToString().ToDouble, CveMovimientoDetallePedido:=Row("CveMovimientoDetallePedido").ToString().ToEntero(), ImporteRetIVA:=Row("ImporteRetIVA").ToString().ToDouble, ImporteRetISR:=Row("ImporteRetISR").ToString().ToDouble, - PorcentajeIVA:=Row("PorcentajeIVA").ToString().ToDecimal, PorcentajeIEPS:=Row("PorcentajeIEPS").ToString().ToDouble, PorcentajeRetIVA:=Row("PorcentajeRetIVA").ToString().ToDouble, PorcentajeRetISR:=Row("PorcentajeRetISR").ToString().ToDouble, CuentaPredial:=Row("CuentaPredial").ToString(), CvePrecioLista:=Row("CvePrecioLista").ToString().ToEntero()) Then + PorcentajeIVA:=Row("PorcentajeIVA").ToString().ToDecimal, PorcentajeIEPS:=Row("PorcentajeIEPS").ToString().ToDouble, PorcentajeRetIVA:=Row("PorcentajeRetIVA").ToString().ToDouble, PorcentajeRetISR:=Row("PorcentajeRetISR").ToString().ToDouble, CuentaPredial:=Row("CuentaPredial").ToString(), CvePrecioLista:=Row("CvePrecioLista").ToString().ToEntero(), CveActivoFijo:=Row("CveActivoFijo").ToString().ToEntero()) Then ErrorList.Add("Ocurrió un error al agregar un Producto o Servicio a la Factura.
Revise su factura y cualquier detalle comuníquese a Soporte Técnico") Exit For Else @@ -13913,6 +13934,25 @@ Partial Class Ventas IdCtaContable = ObjFactura.Cliente.IdCtaContMonedaExtranjera End If IdCtaContableCliente = IdCtaContable + + Dim DtAF As DataTable = TmpDT.FiltraParametros("CveActivoFijo > 0") + + If DtAF.Rows.Count > 0 Then + For Each RowAF As DataRow In DtAF.FiltraParametros("", "", {"CveActivoFijo", "Obs"}).Rows + Dim ImporteDepreciado As Decimal = DtAF.SUMD("AFDepreciacion", $"CveActivoFijo = {RowAF("CveActivoFijo")}").RoundSQL(2) + + If Not ObjConta.AddPrePolizasDetalle(ObjFactura.CvePrePoliza, TipoMovimiento, ImporteDepreciado, Referencia, 271, $"Depreciación {RowAF("Obs")}", FechaMovimiento, IdCtaContable, -1, CveVenta:=ObjFactura.CveVenta, CveCliente:=ObjFactura.CveCliente, CveIE:=CveIE, ImporteMX:=(ImporteDepreciado).RoundSQL, ImporteME:=If(tipoCambio = 1, 0, importeMovimiento), TipoCambio:=tipoCambio, CveSubProyecto:=DdlSubProyectoDatos.SelectedValue.ToEntero(), Contabilizable:=SeContabiliza) Then + ErrorPrepoliza = True + End If + + 'MARCAR EL ACTIVO FIJO COMO VENDEDIDO + If Not ErrorPrepoliza AndAlso RowAF("CveActivoFijo").ToString().ToEntero() > 0 Then + If Not ObjVentas.UpdateEstatusAFVendido(RowAF("CveActivoFijo").ToString().ToEntero(), UsuarioActual.CveEmpresa, 5) Then + ErrorPrepoliza = True + End If + End If + Next + End If End If 'Case 7 'descuentos @@ -14774,12 +14814,12 @@ Partial Class Ventas CveVentaAmortizacionAplicar = ObjFactura.CveVenta End If - DT = TmpDTDetalle.FiltraParametros($"CvePS <> {CvePSAmortizacion}", "", {"CveClasificacion", "CveSubProyecto", "PorcentajeIVA"}) + DT = TmpDTDetalle.FiltraParametros($"CvePS <> {CvePSAmortizacion}", "", {"CveClasificacion", "CveSubProyecto", "PorcentajeIVA", "CveActivoFijo"}) If DT.Rows.Count > 0 Then 'Se agrega movimiento separado por la cuenta de ventas (ER) For Each Row2 As DataRow In DT.Rows - importeMovimiento = (TmpDTDetalle.SUM("TotalImporte", String.Format("CveClasificacion = {0} And CveSubProyecto = {1} AND PorcentajeIVA = {2}", Row2("CveClasificacion"), Row2("CveSubProyecto"), Row2("PorcentajeIVA"))).ToString().ToDecimal()) * ValorMultiplicador + importeMovimiento = (TmpDTDetalle.SUM("TotalImporte", String.Format("CveClasificacion = {0} And CveSubProyecto = {1} AND PorcentajeIVA = {2} AND CveActivoFijo = {3}", Row2("CveClasificacion"), Row2("CveSubProyecto"), Row2("PorcentajeIVA"), Row2("CveActivoFijo"))).ToString().ToDecimal()) * ValorMultiplicador importeMX = importeMovimiento * tipoCambio * Multiplicador FechaMovimiento = ObjFactura.FechaPago Concepto = $"{ObjFactura.SerieFolio} {If(Row2("CveClasificacion").ToString().ToEntero() > 0, GlobalDTClasificaciones(UsuarioActual.CveEmpresa).FiltroPrimeroValor("Clasificacion", $"CveClasificacion = {Row2("CveClasificacion").ToString()}"), "")} - {If(Row2("CveSubProyecto").ToString().ToEntero() > 0, GlobalDTSubProyectos(-1, -1, UsuarioActual.CveEmpresa).FiltroPrimeroValor("SubProyecto", $"CveSubProyecto = {Row2("CveSubProyecto").ToString()}"), "Sin SubProyecto Asignado")}" @@ -14795,6 +14835,26 @@ Partial Class Ventas If importeMovimiento <> 0 Then + If Row2("CveActivoFijo").ToString().ToEntero() > 0 Then + Dim DtAF As DataTable = TmpDT.FiltraParametros($"CveActivoFijo = {Row2("CveActivoFijo")}") + + If DtAF.Rows.Count > 0 Then + For Each RowAF As DataRow In DtAF.FiltraParametros("", "", {"CveActivoFijo", "Obs"}).Rows + Dim ImporteCosto As Decimal = DtAF.SUMD("AFValorInicial", $"CveActivoFijo = {RowAF("CveActivoFijo")}").RoundSQL(2) + Dim ImporteDepreciacion As Decimal = DtAF.SUMD("AFDepreciacion", $"CveActivoFijo = {RowAF("CveActivoFijo")}").RoundSQL(2) + Dim ImporteC4 As Decimal = importeMovimiento + Dim ImporteC4MX As Decimal = importeMX + + importeMovimiento = ImporteC4 - ImporteCosto + ImporteDepreciacion + importeMX = ImporteC4MX - ImporteCosto + ImporteDepreciacion + + If Not ObjConta.AddPrePolizasDetalle(ObjFactura.CvePrePoliza, TipoMovimiento, ImporteCosto, Referencia, 49, $"COSTO {RowAF("Obs")}", FechaMovimiento, IdCtaContable, -1, CveVenta:=ObjFactura.CveVenta, CveCliente:=ObjFactura.CveCliente, CveIE:=CveIE, ImporteMX:=(ImporteCosto).RoundSQL, ImporteME:=If(tipoCambio = 1, 0, importeMovimiento), TipoCambio:=tipoCambio, CveSubProyecto:=DdlSubProyectoDatos.SelectedValue.ToEntero(), CveActivoFijo:=Row2("CveActivoFijo").ToString().ToEntero(), Contabilizable:=SeContabiliza) Then + ErrorPrepoliza = True + End If + Next + End If + End If + If IdCtaContable <= 0 Then CuentasContablesInvalidas.Append("
" & GlobalDTContaConceptosContables(-1).FiltroPrimero(String.Format("CveConceptoContable = {0}", ConceptoContable))("ConceptoContable").ToString() + GlobalDTClasificaciones(UsuarioActual.CveEmpresa).FiltroPrimeroValor("Clasificacion", $"CveClasificacion = {Row2("CveClasificacion").ToString()}")) idCuentaContabilizacion = 0 @@ -19031,7 +19091,8 @@ Partial Class Ventas Optional EntregaDirecta As Integer = 0, Optional CveContratoDetalle As Integer = 0, Optional CveVentaDetalle As Integer = 0, Optional CveMovimientoDetallePedido As Integer = 0, Optional CveOrdenCompraDetalle As Integer = 0, Optional CveVentaDetalleRemision As Integer = 0, Optional CveVentaDetalleCotizacion As Integer = 0, Optional CuentaPredial As String = "", Optional RegeneraIEPS As Boolean = True, Optional CveVentaDetallePedido2 As Integer = 0, Optional SeActualiza As Boolean = False, Optional CvePromocionDetalle As Integer = -1, Optional EsCargo As Boolean = False, - Optional ImporteProntoPago As Decimal = 0, Optional ByRef ObjDescuento As Modelos.VentaDescuentos = Nothing, Optional CvePrecioLista As Integer = -1, Optional PrecioLista As String = "") As Boolean + Optional ImporteProntoPago As Decimal = 0, Optional ByRef ObjDescuento As Modelos.VentaDescuentos = Nothing, Optional CvePrecioLista As Integer = -1, Optional PrecioLista As String = "", + Optional CveActivoFijo As Integer = -1, Optional AFDepreciacion As Decimal = 0D, Optional AFValorInicial As Decimal = 0D) As Boolean Dim Retorno As Boolean = False Try @@ -19127,6 +19188,10 @@ Partial Class Ventas End If End If + If CveUM <= 0 Then + CveUM = DrPS("CveUnidadMedida").ToString().ToEntero() + End If + Row("Cantidad") = Cantidad Row("CveUM") = CveUM Row("UM") = DrPS("UnidadMedida") @@ -19290,6 +19355,11 @@ Partial Class Ventas Row("CvePrecioLista") = CvePrecioLista Row("PrecioLista") = PrecioLista + Row("CveActivoFijo") = CveActivoFijo + Row("AFDepreciacion") = AFDepreciacion + Row("AFValorInicial") = AFValorInicial + + If UsuarioActual.CveEmpresa.Contiene(119, 13, 83) Then If Not RemisionesLista.Count > 0 Then 'SI VIENE DE REMISION NO SE CONSIDERA @@ -19527,6 +19597,10 @@ Partial Class Ventas TmpDT.Columns.Add("CvePrecioLista", GetType(Integer)) TmpDT.Columns.Add("PrecioLista", GetType(String)) + TmpDT.Columns.Add("CveActivoFijo", GetType(Integer)) + TmpDT.Columns.Add("AFDepreciacion", GetType(Decimal)) + TmpDT.Columns.Add("AFValorInicial", GetType(Decimal)) + TmpDT.Columns("EsOutSourcing").DefaultValue = False TmpDT.Columns("EsCargo").DefaultValue = False @@ -22253,7 +22327,7 @@ Partial Class Ventas Row("PU").ToString().ToDouble(If(ChkConvertirDoctoPesos.Checked, TxtTipoCambio.Text.ToDecimal, 1)), Row("ImporteIVA").ToString().ToDouble, Math.Round((Row("Total").ToString().ToDouble(If(ChkConvertirDoctoPesos.Checked, TxtTipoCambio.Text.ToDecimal, 1)) * (1 + Row("PorcentajeIVA").ToString().ToDouble(If(ChkConvertirDoctoPesos.Checked, TxtTipoCambio.Text.ToDecimal, 1)))), 6), Row("Obs").ToString(), Row("Descuento").ToString().ToDouble(If(ChkConvertirDoctoPesos.Checked, TxtTipoCambio.Text.ToDecimal, 1)), Row("TipoDescuento").ToString().ToEntero(), Row("CveSubProyecto").ToString().ToEntero(), Row("CvePresupuestoIngreso").ToString().ToEntero(), PorcentajeIVA:=Row("PorcentajeIVA").ToString().ToDecimal, IEPS:=Row("ImporteIEPS").ToString().ToDouble(If(ChkConvertirDoctoPesos.Checked, TxtTipoCambio.Text.ToDecimal, 1)), PorcentajeIEPS:=Row("PorcentajeIEPS").ToString().ToDouble, TiempoEntrega:=Row("TiempoEntrega").ToString(), CveVentaDetallePadre:=Row("CveVentaDetalle").ToString().ToEntero(), CveContratoDetalle:=Row("CveContratoDetalle").ToString().ToEntero(), CvePromocionDetalle:=If(DtPromociones IsNot Nothing, DtPromociones.FiltroPrimeroValor("CvePromocionDetalle", $"CvePS={Row("CvePS").ToString()}").ToEntero(), -1), - ImporteRetIVA:=Row("ImporteRetIVA").ToString().ToDouble, ImporteRetISR:=Row("ImporteRetISR").ToString().ToDouble, PorcentajeRetIVA:=Row("PorcentajeRetIVA").ToString().ToDouble, PorcentajeRetISR:=Row("PorcentajeRetISR").ToString().ToDouble, CuentaPredial:=Row("CuentaPredial").ToString(), CvePrecioLista:=Row("CvePrecioLista").ToString().ToEntero()) Then + ImporteRetIVA:=Row("ImporteRetIVA").ToString().ToDouble, ImporteRetISR:=Row("ImporteRetISR").ToString().ToDouble, PorcentajeRetIVA:=Row("PorcentajeRetIVA").ToString().ToDouble, PorcentajeRetISR:=Row("PorcentajeRetISR").ToString().ToDouble, CuentaPredial:=Row("CuentaPredial").ToString(), CvePrecioLista:=Row("CvePrecioLista").ToString().ToEntero(), CveActivoFijo:=Row("CveActivoFijo").ToString().ToEntero()) Then OcurrioError = True Exit For Else @@ -29985,6 +30059,9 @@ Partial Class Ventas TmpDT.Columns.Add("CveVentaDetalleRNC", GetType(Integer)) TmpDT.Columns.Add("TieneProntoPago", GetType(String)) TmpDT.Columns.Add("ImporteProntoPago", GetType(Decimal)) + TmpDT.Columns.Add("CveActivoFijo", GetType(Integer)) + TmpDT.Columns.Add("AFDepreciacion", GetType(Decimal)) + TmpDT.Columns.Add("AFValorInicial", GetType(Decimal)) End If Dim FechaFactura As DateTime = Now @@ -35308,6 +35385,10 @@ Partial Class Ventas TmpDT.Columns.Add("CveMarca", GetType(Integer)) TmpDT.Columns.Add("CvePrecioLista", GetType(Integer)) TmpDT.Columns.Add("PrecioLista", GetType(String)) + TmpDT.Columns.Add("CveActivoFijo", GetType(Integer)) + TmpDT.Columns.Add("AFDepreciacion", GetType(Decimal)) + TmpDT.Columns.Add("AFValorInicial", GetType(Decimal)) + Return TmpDT End Function Private Function InicializaDTVentasNCProntoPago() As DataTable @@ -36772,5 +36853,160 @@ Partial Class Ventas End If End Sub + + +#Region " A C T I V O S - F I J O S" + + Protected Sub CargaDatosAF() + CargarTipoActivoFijo() + CargaDdlAF() + + DdlTipoActivo_SelectedIndexChanged(DdlTipoActivoFiltro, EventArgs.Empty) + End Sub + + Protected Sub CargarTipoActivoFijo() + DdlTipoActivoFiltro.DataSource = GlobalDTTipoActivoFijo(UsuarioActual.CveEmpresa).FiltraParametros("", "TipoActivoFijo") + DdlTipoActivoFiltro.DataBind() + DdlTipoActivoFiltro.Items.Insert(0, New ListItem("Todos", "-1")) + End Sub + + Protected Sub DdlTipoActivo_SelectedIndexChanged(sender As Object, e As EventArgs) + DdlSubTipoActivoFiltro.Items.Clear() + DdlSubTipoActivoFiltro.DataSource = GlobalDTSubTipoActivoFijo(UsuarioActual.CveEmpresa).FiltraParametros(String.Format("CveTipoActivoFijo = {0}", DdlTipoActivoFiltro.SelectedValue), "SubTipoActivoFijo") + DdlSubTipoActivoFiltro.DataBind() + DdlSubTipoActivoFiltro.Items.Insert(0, New ListItem("Todos", "-1")) + End Sub + +#End Region + Protected Sub BtnFiltrarAF_Click(sender As Object, e As EventArgs) + Using ObjAF As New ClsAF + If ObjAF.GetRepActivosFijosDepreciacion(UsuarioActual.CveEmpresa, Now, Depreciados:=1, CveTipoAF:=DdlTipoActivoFiltro.SelectedValue.ToEntero(), CveSubTipoAF:=DdlSubTipoActivoFiltro.SelectedValue.ToEntero(), CveSubProyecto:=DdlSubProyectoFiltroAF.SelectedValue.ToEntero()) Then + GvVentaAF.DataSource = ObjAF.DtResultados.FiltraParametros("CveActivoFijo > 0 AND CveEstadoActivoFijo <> 5") + End If + End Using + + GvVentaAF.DataBind() + UpActivosFijos.Update() + End Sub + + Private Sub CargaAFVenta() + If CveVenta > 0 AndAlso TmpDT IsNot Nothing AndAlso TmpDT.COUNT("CveActivoFijo", "CveActivoFijo > 0") > 0 Then + DivVentasAF.Visible = True + Using ObjAF As New ClsAF + If ObjAF.GetActivosFijosVenta(Me.CveVenta, UsuarioActual.CveEmpresa) Then + GvAF.DataSource = ObjAF.DtResultados + End If + End Using + GvAF.DataBind() + UpActivosFijos.Update() + End If + End Sub + + Public Sub CargaDdlAF() + Dim strAF = UsuarioActual.Empresa.Funcionalidad(380) + Dim CvePSAF As Integer = -1 + + If String.IsNullOrEmpty(strAF) Then + Dim RowFuncionalidad380 As DataRow = Nothing + + Using ObjEmpresas As New ClsSisEmpresas + If ObjEmpresas.GetEmpresasFuncionalidades(UsuarioActual.CveEmpresa) Then + RowFuncionalidad380 = ObjEmpresas.DtResultados.FiltroPrimero("CveFuncionalidad = 380") + End If + End Using + + If RowFuncionalidad380 IsNot Nothing Then + CvePSAF = RowFuncionalidad380("Valor").ToString().ToEntero() + End If + + Else + CvePSAF = strAF.ToEntero() + End If + + If CvePSAF > 0 Then + Dim dtt = GlobalDTPS(UsuarioActual.CveEmpresa, CvePS:=CvePSAF, AplicaParaVenta:=1) ', SATClavePS:=CveSATNC + + If dtt IsNot Nothing Then + DdlPSAF.DataSource = dtt + DdlPSAF.DataBind() + End If + Else + LnkGenerarPSAF.Visible = True + DdlPSAF.Items.Insert(0, New ListItem("Seleccione", "-1")) + End If + + End Sub + Protected Sub BtnGuardarAF_Click(sender As Object, e As EventArgs) + + Dim Cantidad As Decimal = 1 + Dim CvePS = DdlPSAF.SelectedValue.ToEntero() + Dim CveUnidadMedida As Integer = -1 + Dim UnidadMedida As String = "" + Dim CveClasificacion As Integer = -1 + Dim Clasificacion As String = "" + Dim Obs As String = "" + + Dim PrecioVenta As Decimal = 0.0D + + Dim CveProyecto As Integer = -1 + Dim Proyecto As String = "" + + Dim CveSubProyecto As Integer = DdlSubProyectoDatos.SelectedValue.ToEntero() + Dim SubProyecto As String = DdlSubProyectoDatos.SelectedItem.Text + + If CveSubProyecto > 0 Then + Dim RowSP = GlobalDTSubProyectos(-1, CveSubProyecto:=CveSubProyecto, CveEmpresa:=UsuarioActual.CveEmpresa).FiltroPrimero("") + If RowSP IsNot Nothing Then + CveProyecto = RowSP("CveProyecto").ToString().ToEntero() + Proyecto = RowSP("Proyecto").ToString() + End If + End If + + TmpDT.Rows.Clear() + + Dim CveAF As Integer = -1 + Dim AFDepreciacion As Decimal = 0 + Dim AFValorInicial As Decimal = 0 + + For Each GvRow As GridViewRow In GvVentaAF.Rows + If GvRow.RowType = DataControlRowType.DataRow Then + 'LIMPIA VARIABLES + Obs = "" + CveAF = -1 + AFDepreciacion = 0 + AFValorInicial = 0 + + PrecioVenta = 0D + + If GvRow.FCCheckBox("chkAF").Checked Then + Obs = GvRow.DataKey("Observaciones") + CveAF = GvRow.DataKey("CveActivoFijo").ToEntero() + AFDepreciacion = GvRow.DataKey("DepreciacionAcumulada").ToDecimal() + AFValorInicial = GvRow.DataKey("MOI").ToDecimal() + + PrecioVenta = GvRow.FCTextBox("TxtPrecioAF").Text.ToDecimal() + + If PrecioVenta < 1D Then + Alert($"El activo fijo '{GvRow.DataKey("Descripcion")}' debe tener un importe para venta.", TipoMensaje.MsgAdvertencia) + TmpDT.Rows.Clear() + Exit Sub + End If + + AgregarProductoServicio(Cantidad, CveUnidadMedida, UnidadMedida, CveClasificacion, Clasificacion, CvePS, "", Obs, PrecioVenta, 0, + CveProyecto, Proyecto, CveSubProyecto, SubProyecto, CveActivoFijo:=CveAF, AFDepreciacion:=AFDepreciacion, AFValorInicial:=AFValorInicial) + + End If + + End If + Next + + DdlMoneda.SelectedValue = "1" + DdlMoneda.Enabled = False + + CalculaTotalesVenta() + + Tab.ActiveTabIndex = 0 + Updatetabs.Update() + End Sub End Class