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 653f8f120..e90f21cf2 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/Empresas/141/Formatos/Cotizacion.rdlc b/Empresas/141/Formatos/Cotizacion.rdlc index 41f929b25..cfa5d036f 100644 --- a/Empresas/141/Formatos/Cotizacion.rdlc +++ b/Empresas/141/Formatos/Cotizacion.rdlc @@ -1214,7 +1214,7 @@ - ECONOLLANTAS SERVICIOS Y ACCESORIOS SA DE CV + ECONOLLANTAS SERVICIOS Y ACCESORIOS