diff --git a/App_Code/Modelos.vb b/App_Code/Modelos.vb index baf59538a..1b3a113ff 100644 --- a/App_Code/Modelos.vb +++ b/App_Code/Modelos.vb @@ -2917,42 +2917,66 @@ Namespace Modelos importeMovimiento = 0 Case 103 'Descuento - If Not ObjFactura.TipoDocto.Contiene("Rem", "RNC") AndAlso ObjFactura.CveTipoAmortizacionAnticipo = -1 Then + If ObjFactura.Descuento <> 0 AndAlso Not ObjFactura.TipoDocto.Contiene("Rem", "RNC") AndAlso ObjFactura.CveTipoAmortizacionAnticipo = -1 Then - importeMovimiento = (ObjFactura.Descuento * ValorMultiplicador) + importeMovimiento = ObjFactura.Descuento * ValorMultiplicador importeMX = Math.Round(importeMovimiento, 2) * tipoCambio * Multiplicador FechaMovimiento = ObjFactura.FechaPago CveSubProyectoContabilizar = CveSubProyectoVenta If importeMovimiento <> 0 AndAlso ObjConta.GetRetCuenta(ConceptoContable, ObjFactura.CveEmpresa) Then If ObjConta.DtResultados.Rows.Count > 0 Then - IdCtaContable = ObjConta.DtResultados.Rows(0)("Conta_IdCuentaDescuentoVenta").ToString.ToEntero - 'CveCuenta = ObjConta.DtResultados.Rows(0)("Conta_IdCuentaDescuentoVenta").ToString.ToEntero + IdCtaContable = ObjConta.DtResultados.Rows(0)("Conta_IdCuentaDescuentoVenta").ToString().ToEntero() + 'CveCuenta = ObjConta.DtResultados.Rows(0)("Conta_IdCuentaDescuentoVenta").ToString().ToEntero() End If End If - If tipoCambio > 1 Then Concepto += $" TC:{tipoCambio} ${importeMovimiento.FormatoNumero(2)}" - If importeMovimiento > 0 AndAlso UsuarioActual.CveEmpresa = 119 Then - 'código fijo en base el porcentaje iva, que se afecten las clasificaciones - For i = 0 To TmpDTDetalle.Rows.Count - 1 - If GlobalDTClasificacionPorcentaje(UsuarioActual.CveEmpresa, PorcentajeIVA:=TmpDTDetalle.MAX("PorcentajeIVA").ToDouble).Rows.Count > 0 Then - TmpDTDetalle(i)("CveClasificacion") = GlobalDTClasificacionPorcentaje(UsuarioActual.CveEmpresa, PorcentajeIVA:=TmpDTDetalle.MAX("PorcentajeIVA").ToDouble).Rows(0)("CveClasificacion").ToString + DT = TmpDTDetalle.FiltraParametros("", "", {"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("Descuento", String.Format("CveClasificacion = {0} And CveSubProyecto = {1}", Row2("CveClasificacion"), Row2("CveSubProyecto"))).ToString().ToDecimal) * ValorMultiplicador + importeMX = importeMovimiento * tipoCambio * Multiplicador + FechaMovimiento = ObjFactura.FechaPago + Concepto = $"{ObjFactura.SerieFolio} {If(Row2("CveClasificacion").ToString().ToEntero() > 0, GlobalDTClasificaciones(UsuarioActual.CveEmpresa).FiltroPrimeroValor("Clasificacion", $"CveClasificacion = {Row2("CveClasificacion").ToString()}"), "")} - {If(Row2("CveSubProyecto").ToString().ToEntero() > 0, GlobalDTSubProyectos(-1, -1, UsuarioActual.CveEmpresa).FiltroPrimeroValor("SubProyecto", $"CveSubProyecto = {Row2("CveSubProyecto").ToString()}"), "Sin SubProyecto Asignado")}" + + If tipoCambio > 1 Then Concepto += $" TC:{tipoCambio} ${importeMovimiento.FormatoNumero(2)}" + 'Nota cuando es Nota de crédiot, debe de tomar el devoluciones y rebajas + If ObjFactura.TipoDocto.Contiene("Egs") Then + IdCtaContable = GlobalDTClasificaciones(ObjFactura.CveEmpresa).FiltroPrimeroValor("IdCuentaGasto", String.Format("CveClasificacion = {0}", Row2("CveClasificacion"))).ToEntero() + Else + IdCtaContable = GlobalDTClasificaciones(ObjFactura.CveEmpresa).FiltroPrimeroValor("IdCuentaIngresos", String.Format("CveClasificacion = {0}", Row2("CveClasificacion"))).ToEntero() + End If + + If importeMovimiento <> 0 Then + + 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 + End If + + If Not ObjConta.AddPrePolizasDetalle(ObjFactura.CvePrePoliza, TipoMovimiento, importeMovimiento, Referencia, 103, Concepto, ObjFactura.Fecha, IdCtaContable, -1, CveVenta:=ObjFactura.CveVenta, CveVentaAmortizacion:=-1, 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 + importeMovimiento = 0 - Case 103 'Descuento - 'si se amortiza anticipo por concepto de descuento, no debe de registrar esta partida. - If ObjFactura.CveTipoAmortizacionAnticipo <> 1 Then - importeMovimiento = (ObjFactura.Descuento * ValorMultiplicador) - importeMX = Math.Round(importeMovimiento, 2) * tipoCambio * Multiplicador - FechaMovimiento = ObjFactura.FechaPago - If tipoCambio > 1 Then Concepto += $" TC:{tipoCambio} ${importeMovimiento.FormatoNumero(2)}" - IdCtaContable = 0 - End If + 'Case 103 'Descuento + ' 'si se amortiza anticipo por concepto de descuento, no debe de registrar esta partida. + ' If ObjFactura.CveTipoAmortizacionAnticipo <> 1 Then + ' importeMovimiento = (ObjFactura.Descuento * ValorMultiplicador) + ' importeMX = Math.Round(importeMovimiento, 2) * tipoCambio * Multiplicador + ' FechaMovimiento = ObjFactura.FechaPago + ' If tipoCambio > 1 Then Concepto += $" TC:{tipoCambio} ${importeMovimiento.FormatoNumero(2)}" + ' IdCtaContable = 0 + ' End If Case 8 'Ret IVA por Trasladar If Not ObjFactura.TipoDocto.Contiene("Rem", "RNC") AndAlso ObjFactura.CveTipoRetencion <> 4 Then 'SI NO ES RETENCION DE IVA DE SERVICIOS diff --git a/Ventas/Ventas.aspx.vb b/Ventas/Ventas.aspx.vb index 8fcea4f04..fd5d050a7 100644 --- a/Ventas/Ventas.aspx.vb +++ b/Ventas/Ventas.aspx.vb @@ -1948,7 +1948,7 @@ Partial Class Ventas CreaDTmpF() CreaDTDocumentosRelacionados() CargaDdlSubProyectos() - 'CargaProyecto() + CargaProyecto() CargaSucursales() CargaClasificaciones() @@ -2452,13 +2452,13 @@ Partial Class Ventas CargaFletes() If UsuarioActual.Empresa.Tipo_CentroCosto = 1 Then - 'DdlProyecto.Visible = False + DdlProyecto.Visible = False BrSubProyecto.Visible = False DdlProyectoPyME.Visible = False - ' LblProyectoHeader.Text = "Sucursal" + LblProyectoHeader.Text = "Sucursal" LblSubProyecto.Text = "" divProyectoPyME.Visible = False - 'LblSubProyectoPyME.InnerText = "Sucursal" + LblSubProyectoPyME.Text = "Sucursal" Dim dttSub As New DataTable dttSub = GlobalDTSubProyectosUsuarios(UsuarioActual.CveUsuario, -1, UsuarioActual.CveEmpresa, -1, 1) @@ -2476,41 +2476,41 @@ Partial Class Ventas dttSub.Dispose() ElseIf UsuarioActual.Empresa.Tipo_CentroCosto = 2 Then - 'DdlProyecto.Visible = False + DdlProyecto.Visible = False BrSubProyecto.Visible = False DdlProyectoPyME.Visible = False - 'LblProyectoHeader.Text = "Proyecto" + LblProyectoHeader.Text = "Proyecto" LblSubProyecto.Text = "" divProyectoPyME.Visible = False - 'LblSubProyectoPyME.InnerText = "Proyecto" - 'Dim dttSub As New DataTable - 'dttSub = GlobalDTSubProyectosUsuarios(UsuarioActual.CveUsuario, -1, UsuarioActual.CveEmpresa, -1, 1) + LblSubProyectoPyME.Text = "Proyecto" + Dim dttSub As New DataTable + dttSub = GlobalDTSubProyectosUsuarios(UsuarioActual.CveUsuario, -1, UsuarioActual.CveEmpresa, -1, 1) - 'DdlSubProyecto.Items.Clear() - 'DdlSubProyecto.DataSource = dttSub - ''DdlSubProyecto.DataSource = GlobalDTSubProyectos(-1, CveEmpresa:=UsuarioActual.CveEmpresa).FiltraParametros("", "", {"CveSubProyecto", "SubProyecto"}) - 'DdlSubProyecto.DataBind() - 'DdlSubProyecto.Items.Insert(0, New ListItem("Seleccione", "-1")) + DdlSubProyecto.Items.Clear() + DdlSubProyecto.DataSource = dttSub + 'DdlSubProyecto.DataSource = GlobalDTSubProyectos(-1, CveEmpresa:=UsuarioActual.CveEmpresa).FiltraParametros("", "", {"CveSubProyecto", "SubProyecto"}) + DdlSubProyecto.DataBind() + DdlSubProyecto.Items.Insert(0, New ListItem("Seleccione", "-1")) - 'DdlSubProyectoPyME.Items.Clear() - 'DdlSubProyectoPyME.DataSource = dttSub - ''DdlSubProyectoPyME.DataSource = GlobalDTSubProyectos(-1, CveEmpresa:=UsuarioActual.CveEmpresa).FiltraParametros("", "", {"CveSubProyecto", "SubProyecto"}) - 'DdlSubProyectoPyME.DataBind() - 'DdlSubProyectoPyME.Items.Insert(0, New ListItem("Seleccione", "-1")) - 'dttSub.Dispose() + DdlSubProyectoPyME.Items.Clear() + DdlSubProyectoPyME.DataSource = dttSub + 'DdlSubProyectoPyME.DataSource = GlobalDTSubProyectos(-1, CveEmpresa:=UsuarioActual.CveEmpresa).FiltraParametros("", "", {"CveSubProyecto", "SubProyecto"}) + DdlSubProyectoPyME.DataBind() + DdlSubProyectoPyME.Items.Insert(0, New ListItem("Seleccione", "-1")) + dttSub.Dispose() - 'ElseIf UsuarioActual.Empresa.Tipo_CentroCosto = 4 Then - ' LblProyectoHeader.Text = "Sucursal" - ' LblSubProyecto.Text = "Proyecto" + ElseIf UsuarioActual.Empresa.Tipo_CentroCosto = 4 Then + LblProyectoHeader.Text = "Sucursal" + LblSubProyecto.Text = "Proyecto" - 'ElseIf UsuarioActual.Empresa.Tipo_CentroCosto = 5 Then - ' LblProyectoHeader.Text = "Proyecto" - ' LblSubProyecto.Text = "Sucursal" + ElseIf UsuarioActual.Empresa.Tipo_CentroCosto = 5 Then + LblProyectoHeader.Text = "Proyecto" + LblSubProyecto.Text = "Sucursal" End If - CargarCentrosDeCosto(DdlProyecto, DdlSubProyecto, LblProyectoHeader, LblSubProyecto) - CargarCentrosDeCosto(DdlProyectoPyME, DdlSubProyectoPyME, LblProyectoPyME, LblSubProyectoPyME) + 'CargarCentrosDeCosto(DdlProyecto, DdlSubProyecto, LblProyectoHeader, LblSubProyecto) + 'CargarCentrosDeCosto(DdlProyectoPyME, DdlSubProyectoPyME, LblProyectoPyME, LblSubProyectoPyME) 'MOSTRAR LA OPCION DE AGREGAR PS EN BDH If UsuarioActual.CveEmpresa = 140 AndAlso CveVenta <= 0 Then @@ -4472,25 +4472,25 @@ Partial Class Ventas End If If UsuarioActual.CveEmpresa = 48 Then - TxtFecha.AutoPostBack = True + TxtFecha.AutoPostBack = True + End If + + CargaCodigoUnico() + + 'SI ES COTIZACION PUEDE GENERAR UNA OC PARA MODIFICAR LOS IMPORTES + If DdlTipoComprobante.SelectedValue = "Cot" AndAlso UsuarioActual.Empresa.Funcionalidad(583) = "1" Then + Dim DtOCGeneradas As DataTable = Nothing + If ObjVentas.GetVentasCotizacionesOC(Me.CveVenta, -1, UsuarioActual.CveEmpresa) Then + DtOCGeneradas = ObjVentas.DtResultados.Copy() End If - - CargaCodigoUnico() - - 'SI ES COTIZACION PUEDE GENERAR UNA OC PARA MODIFICAR LOS IMPORTES - If DdlTipoComprobante.SelectedValue = "Cot" AndAlso UsuarioActual.Empresa.Funcionalidad(583) = "1" Then - Dim DtOCGeneradas As DataTable = Nothing - If ObjVentas.GetVentasCotizacionesOC(Me.CveVenta, -1, UsuarioActual.CveEmpresa) Then - DtOCGeneradas = ObjVentas.DtResultados.Copy() - End If - If DtOCGeneradas IsNot Nothing AndAlso DtOCGeneradas.Rows.Count > 0 Then - LtGenerarOC.Visible = False - Else - LtGenerarOC.Visible = True - End If + If DtOCGeneradas IsNot Nothing AndAlso DtOCGeneradas.Rows.Count > 0 Then + LtGenerarOC.Visible = False + Else + LtGenerarOC.Visible = True End If + End If - DdlTipoRetencion.SelectedValueExist(DbRowVenta("CveTipoRetencion").ToString()) + DdlTipoRetencion.SelectedValueExist(DbRowVenta("CveTipoRetencion").ToString()) CargaPS(-1, DdlPS) @@ -4509,8 +4509,8 @@ Partial Class Ventas UpEstatus.Update() Retorno = True - Else - ViewState("CveVenta") = -1 + Else + ViewState("CveVenta") = -1 Alert("El documento solicitado no existe, favor de revisar su búsqueda.", TipoMensaje.MsgAdvertencia) End If End If @@ -10047,17 +10047,17 @@ Partial Class Ventas CveCuentaCliente = CveCuenta End If - Case 7 'descuentos - If LblDescuentos.Text.ToDecimal > 0 Then + 'Case 7 'descuentos + ' If LblDescuentos.Text.ToDecimal > 0 Then - importeMovimiento = (ObjFactura.Descuento) * ValorMultiplicador - importeMX = importeMovimiento * tipoCambio * Multiplicador - FechaMovimiento = ObjFactura.FechaPago - CveSubProyectoContabilizar = CveSubProyectoVenta - IdCtaContable = 0 - If tipoCambio > 1 Then Concepto += $" TC:{tipoCambio} ${importeMovimiento.FormatoNumero(2)}" + ' importeMovimiento = (ObjFactura.Descuento) * ValorMultiplicador + ' importeMX = importeMovimiento * tipoCambio * Multiplicador + ' FechaMovimiento = ObjFactura.FechaPago + ' CveSubProyectoContabilizar = CveSubProyectoVenta + ' IdCtaContable = 0 + ' If tipoCambio > 1 Then Concepto += $" TC:{tipoCambio} ${importeMovimiento.FormatoNumero(2)}" - End If + ' End If Case 3 'Cliente If ObjFactura.TipoDocto = "Ant" Then @@ -10419,7 +10419,7 @@ Partial Class Ventas 'End If End If - If Not ErrorPrepoliza AndAlso ObjConta.ValidacionPrePolizaCuadre(ObjFactura.CvePrePoliza, 5) Then + If Not ErrorPrepoliza AndAlso ObjConta.ValidacionPrePolizaCuadre(ObjFactura.CvePrePoliza, 5) Then If ObjConta.ValorPolizaDescuadre > 0 Then 'ErrorPrepoliza = True GuardaLogAD($"Ventas/Ventas-ProcesoPrePolizas | Error:{ObjConta.MensajePolizaDescuadre} Diferencia:{ObjConta.ValorDiferencia} | CvePrePoliza:{ObjFactura.CvePrePoliza}", "LogPrePolizas") @@ -10956,7 +10956,7 @@ Partial Class Ventas importeMovimiento = 0 Case 103 'Descuento - If Not ObjFactura.TipoDocto.Contiene("Rem", "RNC") AndAlso DdlTipoAmortizacionAnticipo.SelectedValue = "-1" Then + If ObjFactura.Descuento <> 0 AndAlso Not ObjFactura.TipoDocto.Contiene("Rem", "RNC") AndAlso DdlTipoAmortizacionAnticipo.SelectedValue = "-1" Then importeMovimiento = ObjFactura.Descuento * ValorMultiplicador importeMX = Math.Round(importeMovimiento, 2) * tipoCambio * Multiplicador @@ -10975,7 +10975,7 @@ Partial Class Ventas 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}", Row2("CveClasificacion"), Row2("CveSubProyecto"))).ToString().ToDecimal) * ValorMultiplicador + importeMovimiento = (TmpDTDetalle.SUM("Descuento", String.Format("CveClasificacion = {0} And CveSubProyecto = {1}", Row2("CveClasificacion"), Row2("CveSubProyecto"))).ToString().ToDecimal) * ValorMultiplicador importeMX = importeMovimiento * tipoCambio * Multiplicador FechaMovimiento = ObjFactura.FechaPago Concepto = $"{ViewState("VentaFolio").ToString()} {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")}" @@ -11005,16 +11005,16 @@ Partial Class Ventas End If End If - - Case 103 'Descuento - 'si se amortiza anticipo por concepto de descuento, no debe de registrar esta partida. - If DdlTipoAmortizacionAnticipo.SelectedValue <> "1" Then - importeMovimiento = ObjFactura.Descuento * ValorMultiplicador - importeMX = Math.Round(importeMovimiento, 2) * tipoCambio * Multiplicador - FechaMovimiento = ObjFactura.FechaPago - If tipoCambio > 1 Then Concepto += $" TC:{tipoCambio} ${importeMovimiento.FormatoNumero(2)}" - IdCtaContable = 0 - End If + importeMovimiento = 0 + 'Case 103 'Descuento + ' 'si se amortiza anticipo por concepto de descuento, no debe de registrar esta partida. + ' If DdlTipoAmortizacionAnticipo.SelectedValue <> "1" Then + ' importeMovimiento = ObjFactura.Descuento * ValorMultiplicador + ' importeMX = Math.Round(importeMovimiento, 2) * tipoCambio * Multiplicador + ' FechaMovimiento = ObjFactura.FechaPago + ' If tipoCambio > 1 Then Concepto += $" TC:{tipoCambio} ${importeMovimiento.FormatoNumero(2)}" + ' IdCtaContable = 0 + ' End If Case 8 'Ret IVA por Trasladar If Not ObjFactura.TipoDocto.Contiene("Rem", "RNC") AndAlso ObjFactura.CveTipoRetencion <> 4 Then 'SI NO ES RETENCION DE IVA DE SERVICIOS