diff --git a/App_Code/ClsGenerales.vb b/App_Code/ClsGenerales.vb index e12f623c4..a3a8adcff 100644 --- a/App_Code/ClsGenerales.vb +++ b/App_Code/ClsGenerales.vb @@ -2819,11 +2819,12 @@ Public Class ClsGenerales Return Retorno End Function - Public Function GetEntregasPorRealizar(CveEmpresa As Integer) As Boolean + Public Function GetEntregasPorRealizar(CveEmpresa As Integer, Optional CveTick As Long = -1) As Boolean Dim Retorno As Boolean = False DataAdapter("PA_Gral_EntregasPorRealizarGet") With SqlAdapter.SelectCommand.Parameters .Add("@CveEmpresa", SqlDbType.Int).Value = CveEmpresa + .Add("@CveTick", SqlDbType.BigInt).Value = CveTick End With Try SqlAdapter.Fill(Data) @@ -2835,12 +2836,13 @@ Public Class ClsGenerales Return Retorno End Function - Public Function AsignarEntregasPorRealizar(CvePaqueteriaGuia As Integer, CvePersonal As Integer) As Boolean + Public Function AsignarEntregasPorRealizar(CvePaqueteriaGuia As Integer, CvePersonal As Integer, Optional CveTick As Long = -1) As Boolean Dim Retorno As Boolean = False DataAdapter("PA_Gral_AsignarEntregasPorRealizar") With SqlAdapter.SelectCommand.Parameters .Add("@CvePaqueteriaGuia", SqlDbType.Int).Value = CvePaqueteriaGuia .Add("@CveUsuarioAsignado", SqlDbType.Int).Value = CvePersonal + .Add("@CveTick", SqlDbType.BigInt).Value = CveTick End With Try SqlAdapter.Fill(Data) diff --git a/App_Code/Modelos.vb b/App_Code/Modelos.vb index 08b59bea8..a09a7d7e1 100644 --- a/App_Code/Modelos.vb +++ b/App_Code/Modelos.vb @@ -2866,6 +2866,14 @@ Namespace Modelos '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) + + If ObjFactura.TipoDocto = "Egs" Then + importeMovimiento += (TmpDTDetalle.SUM("ImporteIVA", String.Format("CveClasificacion = {0} And CveSubProyecto = {1}", Row2("CveClasificacion"), Row2("CveSubProyecto"))).ToString().ToDecimal) * ValorMultiplicador + importeMovimiento += (TmpDTDetalle.SUM("ImporteIEPS", String.Format("CveClasificacion = {0} And CveSubProyecto = {1}", Row2("CveClasificacion"), Row2("CveSubProyecto"))).ToString().ToDecimal) * ValorMultiplicador + importeMovimiento -= (TmpDTDetalle.SUM("ImporteRetIVA", String.Format("CveClasificacion = {0} And CveSubProyecto = {1}", Row2("CveClasificacion"), Row2("CveSubProyecto"))).ToString().ToDecimal) * ValorMultiplicador + importeMovimiento -= (TmpDTDetalle.SUM("ImporteRetISR", String.Format("CveClasificacion = {0} And CveSubProyecto = {1}", Row2("CveClasificacion"), Row2("CveSubProyecto"))).ToString().ToDecimal) * ValorMultiplicador + End If + 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")}" @@ -2954,6 +2962,13 @@ Namespace Modelos CveSubProyectoContabilizar = CveSubProyectoVenta If tipoCambio > 1 Then Concepto += $" TC:{tipoCambio} ${importeMovimiento.FormatoNumero(2)}" + If ObjFactura.TipoDocto = "Dev" Then + TipoMovimiento = True + ConceptoContable = 62 + importeMovimiento = importeMovimiento * -1 + importeMX = importeMX * -1 + End If + 'Contabilidad ContPAQ If ObjFactura.Cliente.IdCtaContRetIVA > 0 Then IdCtaContable = ObjFactura.Cliente.IdCtaContRetIVA @@ -2985,6 +3000,13 @@ Namespace Modelos CveSubProyectoContabilizar = CveSubProyectoVenta If tipoCambio > 1 Then Concepto += $" TC:{tipoCambio} ${importeMovimiento.FormatoNumero(2)}" + If ObjFactura.TipoDocto = "Dev" Then + TipoMovimiento = True + ConceptoContable = 314 + importeMovimiento = importeMovimiento * -1 + importeMX = importeMX * -1 + End If + 'OBTENER CUENTAS If ObjConta.GetRetCuenta(ConceptoContable, UsuarioActual.CveEmpresa) Then If ObjConta.DtResultados.Rows.Count > 0 Then @@ -3003,6 +3025,13 @@ Namespace Modelos CveSubProyectoContabilizar = CveSubProyectoVenta If tipoCambio > 1 Then Concepto += $" TC:{tipoCambio} ${importeMovimiento.FormatoNumero(2)}" + If ObjFactura.TipoDocto = "Dev" Then + TipoMovimiento = True + ConceptoContable = 63 + importeMovimiento = importeMovimiento * -1 + importeMX = importeMX * -1 + End If + 'Contabilidad ContPAQ If ObjFactura.Cliente.IdCtaContRetISR > 0 Then IdCtaContable = ObjFactura.Cliente.IdCtaContRetISR @@ -3031,12 +3060,58 @@ Namespace Modelos importeMX = Math.Round(importeMovimiento * tipoCambio * Multiplicador, 2) FechaMovimiento = ObjFactura.FechaPago PorcentajeImpuesto = TmpDTDetalle.MAX("PorcentajeIVA").ToDecimal - IdCtaContable = If(IdCtaIVAXTrasladar > 0, IdCtaIVAXTrasladar, UsuarioActual.Empresa.IdCuentaIVAxTrasladar) - CveCuenta = UsuarioActual.Empresa.CveCuentaIVAxTrasladar + + If ObjFactura.TipoDocto = "Dev" Then + TipoMovimiento = True + ConceptoContable = 61 + importeMovimiento = importeMovimiento * -1 + importeMX = importeMX * -1 + + IdCtaContable = If(IdCtaIVATrasladado > 0, IdCtaIVATrasladado, UsuarioActual.Empresa.IdCuentaIVATrasladado) + CveCuenta = If(CveCuentaIVATrasladado > 0, CveCuentaIVATrasladado, UsuarioActual.Empresa.CveCuentaIVATrasladado) + Else + IdCtaContable = If(IdCtaIVAXTrasladar > 0, IdCtaIVAXTrasladar, UsuarioActual.Empresa.IdCuentaIVAxTrasladar) + CveCuenta = If(CveCuentaIVAxTrasladar > 0, CveCuentaIVAxTrasladar, UsuarioActual.Empresa.CveCuentaIVAxTrasladar) + End If + CveSubProyectoContabilizar = CveSubProyectoVenta If tipoCambio > 1 Then Concepto += $" TC:{tipoCambio} ${importeMovimiento.FormatoNumero(2)}" End If + If ObjFactura.TipoDocto = "Egs" Then + + importeMovimiento = ObjFactura.IVA * ValorMultiplicador + importeMX = Math.Round(importeMovimiento * tipoCambio * Multiplicador, 2) + FechaMovimiento = ObjFactura.FechaPago + PorcentajeImpuesto = TmpDTDetalle.MAX("PorcentajeIVA").ToDecimal + + If importeMovimiento <> 0 Then + 'IVA X TRASLADAR + IdCtaIVAXTrasladar = If(IdCtaIVAXTrasladar > 0, IdCtaIVAXTrasladar, UsuarioActual.Empresa.IdCuentaIVAxTrasladar) + CveCuentaIVAxTrasladar = If(CveCuentaIVAxTrasladar > 0, CveCuentaIVAxTrasladar, UsuarioActual.Empresa.CveCuentaIVAxTrasladar) + Concepto = ObjConta.ObtenerConceptoEmpresa(UsuarioActual.CveEmpresa, 13, ObjFactura.Cliente.Nombre, $"{ObjFactura.Serie}-{ObjFactura.Folio}", FolioIE.ToString()) + + If Not ObjConta.AddPrePolizasDetalle(ObjFactura.CvePrePoliza, TipoMovimiento, importeMovimiento, Referencia, 13, Concepto, Fecha, IdCtaIVAXTrasladar, -1, CveVenta:=ObjFactura.CveVenta, CveCliente:=CveCliente, CveIE:=-1, ImporteMX:=importeMX * Multiplicador, ImporteME:=If(tipoCambio = 1, 0, importeMovimiento), CveCuenta:=CveCuentaIVAxTrasladar, CveSubProyecto:=CveSubProyectoContabilizar, PorcentajeImpuesto:=PorcentajeImpuesto) Then + ErrorPrepoliza = True + Exit For + End If + + 'IVA PAGADO + IdCtaIVATrasladado = If(IdCtaIVATrasladado > 0, IdCtaIVATrasladado, UsuarioActual.Empresa.IdCuentaIVATrasladado) + CveCuentaIVATrasladado = If(CveCuentaIVATrasladado > 0, CveCuentaIVATrasladado, UsuarioActual.Empresa.CveCuentaIVATrasladado) + Concepto = ObjConta.ObtenerConceptoEmpresa(UsuarioActual.CveEmpresa, 61, ObjFactura.Cliente.Nombre, $"{ObjFactura.Serie}-{ObjFactura.Folio}", FolioIE.ToString()) + + If Not ObjConta.AddPrePolizasDetalle(ObjFactura.CvePrePoliza, Not TipoMovimiento, importeMovimiento, Referencia, 61, Concepto, Fecha, IdCtaIVATrasladado, -1, CveVenta:=ObjFactura.CveVenta, CveCliente:=CveCliente, CveIE:=-1, ImporteMX:=importeMX * Multiplicador, ImporteME:=If(tipoCambio = 1, 0, importeMovimiento), CveCuenta:=CveCuentaIVATrasladado, CveSubProyecto:=CveSubProyectoContabilizar, PorcentajeImpuesto:=PorcentajeImpuesto) Then + ErrorPrepoliza = True + Exit For + End If + End If + + + importeMovimiento = 0 + importeMX = 0 + End If + Case 38 'IEPS por Trasladar If Not ObjFactura.TipoDocto.Contiene("Rem", "RNC") Then @@ -3044,13 +3119,51 @@ Namespace Modelos importeMX = Math.Round(importeMovimiento * tipoCambio * Multiplicador, 2) FechaMovimiento = ObjFactura.Fecha CveSubProyectoContabilizar = CveSubProyectoVenta - If tipoCambio > 1 Then Concepto += $" TC:{tipoCambio} ${importeMovimiento.FormatoNumero(2)}" - If importeMovimiento <> 0 AndAlso ObjConta.GetRetCuenta(ConceptoContable, ObjFactura.CveEmpresa) Then - If ObjConta.DtResultados.Rows.Count > 0 Then - IdCtaContable = ObjConta.DtResultados.Rows(0)("IdCuentaIEPSxTrasladar").ToString.ToEntero - CveCuenta = ObjConta.DtResultados.Rows(0)("IdCuentaIEPSxTrasladarSIG").ToString.ToEntero + + If ObjFactura.TipoDocto = "Dev" Then + TipoMovimiento = True + ConceptoContable = 39 + importeMovimiento = importeMovimiento * -1 + importeMX = importeMX * -1 + + If importeMovimiento <> 0 AndAlso ObjConta.GetRetCuenta(ConceptoContable, ObjFactura.CveEmpresa) Then + If ObjConta.DtResultados.Rows.Count > 0 Then + IdCtaContable = ObjConta.DtResultados.Rows(0)("IdCuentaIEPSTrasladado").ToString().ToEntero() + CveCuenta = ObjConta.DtResultados.Rows(0)("IdCuentaIEPSTrasladadoSIG").ToString().ToEntero() + End If + End If + Else + If importeMovimiento <> 0 AndAlso ObjConta.GetRetCuenta(ConceptoContable, ObjFactura.CveEmpresa) Then + If ObjConta.DtResultados.Rows.Count > 0 Then + IdCtaContable = ObjConta.DtResultados.Rows(0)("IdCuentaIEPSxTrasladar").ToString().ToEntero() + CveCuenta = ObjConta.DtResultados.Rows(0)("IdCuentaIEPSxTrasladarSIG").ToString().ToEntero() + End If End If End If + + If tipoCambio > 1 Then Concepto += $" TC:{tipoCambio} ${importeMovimiento.FormatoNumero(2)}" + + If importeMovimiento <> 0 AndAlso ObjFactura.TipoDocto = "Egs" Then + 'IEPS X TRASLADAR + Concepto = ObjConta.ObtenerConceptoEmpresa(UsuarioActual.CveEmpresa, 38, ObjFactura.Cliente.Nombre, $"{ObjFactura.Serie}-{ObjFactura.Folio}", FolioIE.ToString()) + If Not ObjConta.AddPrePolizasDetalle(ObjFactura.CvePrePoliza, TipoMovimiento, importeMovimiento, Referencia, 38, Concepto, Fecha, UsuarioActual.Empresa.IdCuentaIEPSxTrasladar, -1, CveVenta:=ObjFactura.CveVenta, CveCliente:=CveCliente, CveIE:=-1, ImporteMX:=importeMX * Multiplicador, ImporteME:=If(tipoCambio = 1, 0, importeMovimiento), CveSubProyecto:=CveSubProyectoContabilizar) Then + ErrorPrepoliza = True + Exit For + End If + + 'IEPS PAGADO + Concepto = ObjConta.ObtenerConceptoEmpresa(UsuarioActual.CveEmpresa, 39, ObjFactura.Cliente.Nombre, $"{ObjFactura.Serie}-{ObjFactura.Folio}", FolioIE.ToString()) + If Not ObjConta.AddPrePolizasDetalle(ObjFactura.CvePrePoliza, Not TipoMovimiento, importeMovimiento, Referencia, 39, Concepto, Fecha, UsuarioActual.Empresa.IdCuentaIEPSTrasladado, -1, CveVenta:=ObjFactura.CveVenta, CveCliente:=CveCliente, CveIE:=-1, ImporteMX:=importeMX * Multiplicador, ImporteME:=If(tipoCambio = 1, 0, importeMovimiento), CveSubProyecto:=CveSubProyectoContabilizar) Then + ErrorPrepoliza = True + Exit For + End If + + importeMovimiento = 0 + importeMX = 0 + End If + + If tipoCambio > 1 Then Concepto += $" TC:{tipoCambio} ${importeMovimiento.FormatoNumero(2)}" + End If diff --git a/Compras/PopUpVerFactura.aspx.vb b/Compras/PopUpVerFactura.aspx.vb index bc92c054a..2a74c593d 100644 --- a/Compras/PopUpVerFactura.aspx.vb +++ b/Compras/PopUpVerFactura.aspx.vb @@ -472,6 +472,13 @@ Partial Class PopUpVerFactura End If End If + 'IMPRIME ENTREGAS POR REALIZAR + If UrlParametros("OP").ToString = "ENTREGAS" Then + If UrlParametros("CVETICK") IsNot Nothing And UrlParametros("USUARIOENTREGA") IsNot Nothing Then + ImprimeEntregasPorRealziar(UrlParametros("CVETICK").ToString, UrlParametros("USUARIOENTREGA").ToString) + End If + End If + End Sub Private Function Parametros(Cadena As String) As Hashtable @@ -502,9 +509,11 @@ Partial Class PopUpVerFactura End If If ObjPuntoVenta.GetCortesDetalleVentas(CveCorte, UsuarioActual.CveEmpresa) Then DtCortesVentas = ObjPuntoVenta.DtResultados - If ObjPuntoVenta.DtResultados.Rows.Count > 0 Then - Fecha = ObjPuntoVenta.DtResultados.Rows(0)("FechaInicial").ToString - Nombre = ObjPuntoVenta.DtResultados.Rows(0)("Nombre").ToString + If DtCortesVentas.Rows.Count > 0 Then + Dim RowInfo As DataRow = DtCortesVentas.FiltroPrimero("CveVenta > 0") + + Fecha = RowInfo("FechaInicial").ToString + Nombre = RowInfo("Nombre").ToString End If End If ObjVenta.Dispose() @@ -4160,7 +4169,23 @@ Partial Class PopUpVerFactura Else RegistraScript("alert('No hay un formato de factura predefinido,favor de comunicar a soporte tecnico')") End If - End Sub + End Sub #End Region - + +#Region "OP = ENTREGAS - Entregas por realizar" + Public Sub ImprimeEntregasPorRealziar(pCveTick As String, pUsuarioEntregar As String) + Dim CveTick As Long = pCveTick.ToLong() + Dim ObjGeneral As New ClsGenerales + If ObjGeneral.GetEntregasPorRealizar(UsuarioActual.CveEmpresa, CveTick) Then + Dim DtPaqueteriasGuias As DataTable = ObjGeneral.DtResultados + Dim RepParams As New List(Of ReportParameter) + RepParams.Add(New ReportParameter("Fecha", DateTime.Today.ToString())) + RepParams.Add(New ReportParameter("AsignadoA", pUsuarioEntregar)) + RepParams.Add(New ReportParameter("UsuarioImprimio", UsuarioActual.Nombre)) + + ImprimirPDF($"Empresas/{UsuarioActual.CveEmpresa}/Formatos/EntregasPorRealizar.rdlc", DtPaqueteriasGuias, RepParams, "Entregas por realizar", "PDF", RDSName:="DsInventarios") + End If + End Sub +#End Region + End Class diff --git a/General/RepPaqueteriasGuias.aspx.cs b/General/RepPaqueteriasGuias.aspx.cs index 94b87e29b..c4a71b507 100644 --- a/General/RepPaqueteriasGuias.aspx.cs +++ b/General/RepPaqueteriasGuias.aspx.cs @@ -194,7 +194,13 @@ public partial class General_RepPaqueteriasGuias : ClsPaginas protected void CargaPaqueterias() { - DdlPaqueterias.DataSource = GlobalDTPaqueterias; + if (UsuarioActual.CveRol == 1339) + { + DdlPaqueterias.DataSource = GlobalDTPaqueterias.FiltraParametros("TipoPaqueteria = 0"); + }else + { + DdlPaqueterias.DataSource = GlobalDTPaqueterias; + } DdlPaqueterias.DataBind(); DdlPaqueterias.Items.Insert(0, new ListItem("Todos ", "-1")); @@ -216,12 +222,19 @@ public partial class General_RepPaqueteriasGuias : ClsPaginas protected void CargaEstatus() { - DdlEstatus.Items.Insert(0, new ListItem("Todos ", "-1")); - DdlEstatus.Items.Insert(1, new ListItem("En Proceso ", "1")); - DdlEstatus.Items.Insert(2, new ListItem("Confirmado por Proveedor ", "2")); - DdlEstatus.Items.Insert(3, new ListItem("Entregado ", "3")); - DdlEstatus.Items.Insert(4, new ListItem("Confirmado por Cliente", "4")); - DdlEstatus.SelectedValue = "1"; + if (UsuarioActual.CveRol == 1339) + { + DdlEstatus.Items.Insert(0, new ListItem("En Proceso ", "2")); + }else + { + DdlEstatus.Items.Insert(0, new ListItem("Todos ", "-1")); + DdlEstatus.Items.Insert(1, new ListItem("Pendiente ", "1")); + DdlEstatus.Items.Insert(2, new ListItem("En Proceso ", "2")); + DdlEstatus.Items.Insert(3, new ListItem("Entregado ", "3")); + DdlEstatus.Items.Insert(4, new ListItem("Reasignar Nueva Entrega ", "4")); + DdlEstatus.Items.Insert(5, new ListItem("Directo a Clientes ", "5")); + DdlEstatus.SelectedValue = "-1"; + } DdlEstatusEditar.Items.Insert(0, new ListItem("Seleccione ", "-1")); DdlEstatusEditar.Items.Insert(1, new ListItem("En Proceso ", "1")); @@ -238,9 +251,17 @@ public partial class General_RepPaqueteriasGuias : ClsPaginas private void CargaUsuarios() { - DdlUsuarios.DataSource = get_GlobalDTUsuarios(CveEmpresa:UsuarioActual.CveEmpresa); - DdlUsuarios.DataBind(); - DdlUsuarios.Items.Insert(0, new ListItem("Todos ", "-1")); + if (UsuarioActual.CveRol == 1339) + { + DdlUsuarios.DataSource = get_GlobalDTUsuarios(CveEmpresa:UsuarioActual.CveEmpresa).FiltraParametros(String.Format("CveRol = {0}",UsuarioActual.CveRol)); + DdlUsuarios.DataBind(); + } + else + { + DdlUsuarios.DataSource = get_GlobalDTUsuarios(CveEmpresa: UsuarioActual.CveEmpresa); + DdlUsuarios.DataBind(); + DdlUsuarios.Items.Insert(0, new ListItem("Todos ", "-1")); + } } protected void InicializaFechas() diff --git a/Inventarios/EntregasPorRealizar.aspx b/Inventarios/EntregasPorRealizar.aspx index c15583329..2ba548486 100644 --- a/Inventarios/EntregasPorRealizar.aspx +++ b/Inventarios/EntregasPorRealizar.aspx @@ -22,7 +22,7 @@ - + <%--
  • @@ -31,7 +31,7 @@ - + --%> diff --git a/Inventarios/EntregasPorRealizar.aspx.cs b/Inventarios/EntregasPorRealizar.aspx.cs index 60fbe7d17..9b590c741 100644 --- a/Inventarios/EntregasPorRealizar.aspx.cs +++ b/Inventarios/EntregasPorRealizar.aspx.cs @@ -41,13 +41,17 @@ public partial class Inventarios_EntregasPorRealizar : ClsPaginas GridViewRowCollection Grid = GvPaqueteriasGuias.Rows; int CvePersonal = DdlUsuario.SelectedValue.ToEntero(); + long CveTick = DateTime.Now.Ticks; + string Usuario = DdlUsuario.SelectedValue.ToEntero() > 0 ? DdlUsuario.SelectedItem.Text : "Todos"; + + string LigaPopUpVerFactura = String.Format("/Compras/PopUpVerFactura.aspx?P={0}", ModExtensiones.Encripta(String.Format("OP=ENTREGAS&CVETICK={0}&USUARIOENTREGA={1}", CveTick, Usuario))); foreach (GridViewRow row in Grid) { if (row.FCCheckBox("ChkAsigna").Checked) { int CvePaqueteriasGuias = row.DataKey("CvePaqueteriaGuia").ToEntero(); - if(!ObjGeneral.AsignarEntregasPorRealizar(CvePaqueteriasGuias, CvePersonal)){ + if(!ObjGeneral.AsignarEntregasPorRealizar(CvePaqueteriasGuias, CvePersonal, CveTick)){ TieneError = true; }else { @@ -67,11 +71,11 @@ public partial class Inventarios_EntregasPorRealizar : ClsPaginas } } } - + if (!TieneError) { ObjGeneral.Commit(); - Alert("Entregas asignadas correctamente"); + Alert(String.Format("Entregas asignadas correctamente

    Imprimir Reporte de Entregas Asignadas", LigaPopUpVerFactura)); CargarEntregas(); UpDatos.Update(); } diff --git a/OC/RepOC.aspx.vb b/OC/RepOC.aspx.vb index f945d7c81..290f20027 100644 --- a/OC/RepOC.aspx.vb +++ b/OC/RepOC.aspx.vb @@ -150,7 +150,7 @@ Partial Class RepOC If Not UsuarioActual.Empresa.Funcionalidad(105).ToString = "1" Then DDlPS.ddl.Items.Clear() - DDlPS.ddl.DataSource = GlobalDTPSSimplificado(UsuarioActual.CveEmpresa, CveClasificacion:=CveClasificacion, Estatus:=1, AplicaParaVenta:=1) + DDlPS.ddl.DataSource = GlobalDTPSSimplificado(UsuarioActual.CveEmpresa, CveClasificacion:=CveClasificacion, Estatus:=1) DDlPS.ddl.DataBind() DDlPS.ddl.Items.Insert(0, New ListItem("*** Actualizar listado de Productos o Servicios ***", "-2")) DDlPS.ddl.Items.Insert(0, New ListItem("Seleccione el Producto", "-1")) diff --git a/Ventas/RepCancelacionesPorRespuesta.aspx.cs b/Ventas/RepCancelacionesPorRespuesta.aspx.cs index 48fb356ac..96c2c35c3 100644 --- a/Ventas/RepCancelacionesPorRespuesta.aspx.cs +++ b/Ventas/RepCancelacionesPorRespuesta.aspx.cs @@ -34,39 +34,48 @@ public partial class Ventas_RepCancelacionesPorRespuesta : ClsPaginas private void CargaDatos() { HdnLigaRefacturar.Value = ""; + if (Request["CveVenta"] != null) { this.CveVenta = Request["CveVenta"].ToString().ToEntero(); } + var ObjVentas = new ClsVentas(); if (ObjVentas.GetVentas(UsuarioActual.CveEmpresa, "-1", "-1", -1, "-1", -1, -1, -2, -1, "-1", "-1", "-1", CveUsuarioConsulta: UsuarioActual.CveUsuario)) - { - if (CveVenta > 0) - { - DtVentas = ObjVentas.DtResultados.FiltraParametros($"CveVenta={CveVenta}"); - } - else - { - DtVentas = ObjVentas.DtResultados.Copy(); + { + + if (Request["CveVenta"] != null && Request["CveVenta"].ToString().ToEntero() > 0) + { + DtVentas = ObjVentas.DtResultados.FiltraParametros($"CveVenta={Request["CveVenta"].ToString().ToEntero()}"); + } + else + { + DtVentas = ObjVentas.DtResultados.Copy(); } } + ObjVentas.Dispose(); GvDatos.DataSource = DtVentas.FiltraParametros("CveEstatusFactura = 20 AND CveEstatusRefacturacion = 0"); + var DtRefacturar = DtVentas.FiltraParametros("CveEstatusRefacturacion IN (1,3)"); - if (DtRefacturar.Rows.Count > 0) + if (DtRefacturar != null && DtRefacturar.Rows.Count > 0) { DivRefacturar.Visible = true; GvRefacturaciones.DataSource = DtRefacturar; GvRefacturaciones.DataBind(); } + GvDatos.DataBind(); UPDatos.Update(); } protected void BtnValidar_Click(object sender, EventArgs e) { - HdnLigaRefacturar.Value = ""; + this.HdnLigaRefacturar.Value = ""; + this.CveVenta = -1; + GridViewRow GvRow = (GridViewRow)(((LinkButton)sender).NamingContainer); - int CveVenta = GvRow.DataKey("CveVenta").ToEntero(); + this.CveVenta = GvRow.DataKey("CveVenta").ToEntero(); + int CveCliente = GvRow.DataKey("CveCliente").ToEntero(); string Total = GvRow.DataKey("Total"); string SubTotal = GvRow.DataKey("SubTotal"); @@ -92,9 +101,12 @@ public partial class Ventas_RepCancelacionesPorRespuesta : ClsPaginas } protected void BtnValidarRefacturacion_Click(object sender, EventArgs e) { - HdnLigaRefacturar.Value = ""; + this.HdnLigaRefacturar.Value = ""; + this.CveVenta = -1; + GridViewRow GvRow = (GridViewRow)(((LinkButton)sender).NamingContainer); - int CveVenta = GvRow.DataKey("CveVenta").ToEntero(); + this.CveVenta = GvRow.DataKey("CveVenta").ToEntero(); + int CveCliente = GvRow.DataKey("CveCliente").ToEntero(); string Total = GvRow.DataKey("Total"); string SubTotal = GvRow.DataKey("SubTotal"); @@ -134,6 +146,7 @@ public partial class Ventas_RepCancelacionesPorRespuesta : ClsPaginas private MRespuestaSAT VerificarVigenciaSAT(int CveVenta, int CveCliente, string Folio, string TipoDocto, string uuid, string emisor, string receptor, string total, bool EsRefacturacion = false) { HdnLigaRefacturar.Value = ""; + var retorno = new MRespuestaSAT() { Mensaje = "", @@ -291,7 +304,10 @@ public partial class Ventas_RepCancelacionesPorRespuesta : ClsPaginas } protected void LnkValidar_Click(object sender, EventArgs e) - { + { + this.HdnLigaRefacturar.Value = ""; + this.CveVenta = -1; + if (DtVentas != null) { var sb = new StringBuilder(); @@ -328,7 +344,14 @@ public partial class Ventas_RepCancelacionesPorRespuesta : ClsPaginas } public void BtnEnviarMailCancelacion_Click(object sender, EventArgs e) { - ImprimeCancelacion(CveVenta); + if (this.CveVenta > 0) + { + ImprimeCancelacion(this.CveVenta); + } + else + { + Alert("No se encontro la factura para enviar el acuse", TipoMensaje.MsgAdvertencia); + } } public void ImprimeCancelacion(int CveVenta) diff --git a/Ventas/Ventas.aspx.vb b/Ventas/Ventas.aspx.vb index 27898d0ca..9c7b4ca15 100644 --- a/Ventas/Ventas.aspx.vb +++ b/Ventas/Ventas.aspx.vb @@ -10820,6 +10820,14 @@ Partial Class Ventas '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 + + If ObjFactura.TipoDocto = "Egs" Then + importeMovimiento += (TmpDTDetalle.SUM("ImporteIVA", String.Format("CveClasificacion = {0} And CveSubProyecto = {1}", Row2("CveClasificacion"), Row2("CveSubProyecto"))).ToString().ToDecimal) * ValorMultiplicador + importeMovimiento += (TmpDTDetalle.SUM("ImporteIEPS", String.Format("CveClasificacion = {0} And CveSubProyecto = {1}", Row2("CveClasificacion"), Row2("CveSubProyecto"))).ToString().ToDecimal) * ValorMultiplicador + importeMovimiento -= (TmpDTDetalle.SUM("ImporteRetIVA", String.Format("CveClasificacion = {0} And CveSubProyecto = {1}", Row2("CveClasificacion"), Row2("CveSubProyecto"))).ToString().ToDecimal) * ValorMultiplicador + importeMovimiento -= (TmpDTDetalle.SUM("ImporteRetISR", String.Format("CveClasificacion = {0} And CveSubProyecto = {1}", Row2("CveClasificacion"), Row2("CveSubProyecto"))).ToString().ToDecimal) * ValorMultiplicador + End If + 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")}" @@ -10919,6 +10927,13 @@ Partial Class Ventas CveSubProyectoContabilizar = CveSubProyectoVenta If tipoCambio > 1 Then Concepto += $" TC:{tipoCambio} ${importeMovimiento.FormatoNumero(2)}" + If ObjFactura.TipoDocto = "Dev" Then + TipoMovimiento = True + ConceptoContable = 62 + importeMovimiento = importeMovimiento * -1 + importeMX = importeMX * -1 + End If + 'CONTABILIDAD CONTPAQ If IdCtaContRetIVA > 0 Then IdCtaContable = IdCtaContRetIVA @@ -10941,7 +10956,6 @@ Partial Class Ventas End If End If - End If Case 313 'Ret Iva Servicios If Not ObjFactura.TipoDocto.Contiene("Rem", "RNC") AndAlso ObjFactura.CveTipoRetencion = 4 Then 'SI TIENE RETENCION DE IVA DE SERVICIOS @@ -10951,6 +10965,13 @@ Partial Class Ventas CveSubProyectoContabilizar = CveSubProyectoVenta If tipoCambio > 1 Then Concepto += $" TC:{tipoCambio} ${importeMovimiento.FormatoNumero(2)}" + If ObjFactura.TipoDocto = "Dev" Then + TipoMovimiento = True + ConceptoContable = 314 + importeMovimiento = importeMovimiento * -1 + importeMX = importeMX * -1 + End If + 'OBTENER CUENTAS If ObjConta.GetRetCuenta(ConceptoContable, UsuarioActual.CveEmpresa) Then If ObjConta.DtResultados.Rows.Count > 0 Then @@ -10967,6 +10988,14 @@ Partial Class Ventas importeMX = Math.Round(importeMovimiento, 2) * tipoCambio * Multiplicador FechaMovimiento = ObjFactura.FechaPago CveSubProyectoContabilizar = CveSubProyectoVenta + + If ObjFactura.TipoDocto = "Dev" Then + TipoMovimiento = True + ConceptoContable = 63 + importeMovimiento = importeMovimiento * -1 + importeMX = importeMX * -1 + End If + If tipoCambio > 1 Then Concepto += $" TC:{tipoCambio} ${importeMovimiento.FormatoNumero(2)}" 'Contabilidad ContPAQ @@ -10997,26 +11026,110 @@ Partial Class Ventas importeMX = Math.Round(importeMovimiento * tipoCambio * Multiplicador, 2) FechaMovimiento = ObjFactura.FechaPago PorcentajeImpuesto = TmpDT.MAX("PorcentajeIVA").ToDecimal - IdCtaContable = If(IdCtaIVAXTrasladar > 0, IdCtaIVAXTrasladar, UsuarioActual.Empresa.IdCuentaIVAxTrasladar) - CveCuenta = If(CveCuentaIVAxTrasladar > 0, CveCuentaIVAxTrasladar, UsuarioActual.Empresa.CveCuentaIVAxTrasladar) + + If ObjFactura.TipoDocto = "Dev" Then + TipoMovimiento = True + ConceptoContable = 61 + importeMovimiento = importeMovimiento * -1 + importeMX = importeMX * -1 + + IdCtaContable = If(IdCtaIVATrasladado > 0, IdCtaIVATrasladado, UsuarioActual.Empresa.IdCuentaIVATrasladado) + CveCuenta = If(CveCuentaIVATrasladado > 0, CveCuentaIVATrasladado, UsuarioActual.Empresa.CveCuentaIVATrasladado) + Else + IdCtaContable = If(IdCtaIVAXTrasladar > 0, IdCtaIVAXTrasladar, UsuarioActual.Empresa.IdCuentaIVAxTrasladar) + CveCuenta = If(CveCuentaIVAxTrasladar > 0, CveCuentaIVAxTrasladar, UsuarioActual.Empresa.CveCuentaIVAxTrasladar) + End If + + CveSubProyectoContabilizar = CveSubProyectoVenta If tipoCambio > 1 Then Concepto += $" TC:{tipoCambio} ${importeMovimiento.FormatoNumero(2)}" End If + If ObjFactura.TipoDocto = "Egs" Then + + importeMovimiento = ObjFactura.IVA * ValorMultiplicador + importeMX = Math.Round(importeMovimiento * tipoCambio * Multiplicador, 2) + FechaMovimiento = ObjFactura.FechaPago + PorcentajeImpuesto = TmpDT.MAX("PorcentajeIVA").ToDecimal + + If importeMovimiento <> 0 Then + 'IVA X TRASLADAR + IdCtaIVAXTrasladar = If(IdCtaIVAXTrasladar > 0, IdCtaIVAXTrasladar, UsuarioActual.Empresa.IdCuentaIVAxTrasladar) + CveCuentaIVAxTrasladar = If(CveCuentaIVAxTrasladar > 0, CveCuentaIVAxTrasladar, UsuarioActual.Empresa.CveCuentaIVAxTrasladar) + Concepto = ObjConta.ObtenerConceptoEmpresa(UsuarioActual.CveEmpresa, 13, ObjFactura.Cliente.Nombre, $"{ObjFactura.Serie}-{ObjFactura.Folio}", FolioIE.ToString()) + + If Not ObjConta.AddPrePolizasDetalle(ObjFactura.CvePrePoliza, TipoMovimiento, importeMovimiento, Referencia, 13, Concepto, Fecha, IdCtaIVAXTrasladar, -1, CveVenta:=ObjFactura.CveVenta, CveCliente:=CveCliente, CveIE:=-1, ImporteMX:=importeMX * Multiplicador, ImporteME:=If(tipoCambio = 1, 0, importeMovimiento), CveCuenta:=CveCuentaIVAxTrasladar, CveSubProyecto:=CveSubProyectoContabilizar, PorcentajeImpuesto:=PorcentajeImpuesto) Then + ErrorPrepoliza = True + Exit For + End If + + 'IVA PAGADO + IdCtaIVATrasladado = If(IdCtaIVATrasladado > 0, IdCtaIVATrasladado, UsuarioActual.Empresa.IdCuentaIVATrasladado) + CveCuentaIVATrasladado = If(CveCuentaIVATrasladado > 0, CveCuentaIVATrasladado, UsuarioActual.Empresa.CveCuentaIVATrasladado) + Concepto = ObjConta.ObtenerConceptoEmpresa(UsuarioActual.CveEmpresa, 61, ObjFactura.Cliente.Nombre, $"{ObjFactura.Serie}-{ObjFactura.Folio}", FolioIE.ToString()) + + If Not ObjConta.AddPrePolizasDetalle(ObjFactura.CvePrePoliza, Not TipoMovimiento, importeMovimiento, Referencia, 61, Concepto, Fecha, IdCtaIVATrasladado, -1, CveVenta:=ObjFactura.CveVenta, CveCliente:=CveCliente, CveIE:=-1, ImporteMX:=importeMX * Multiplicador, ImporteME:=If(tipoCambio = 1, 0, importeMovimiento), CveCuenta:=CveCuentaIVATrasladado, CveSubProyecto:=CveSubProyectoContabilizar, PorcentajeImpuesto:=PorcentajeImpuesto) Then + ErrorPrepoliza = True + Exit For + End If + End If + + + importeMovimiento = 0 + importeMX = 0 + End If + + Case 38 'IEPS por Trasladar If Not ObjFactura.TipoDocto.Contiene("Rem") Then importeMovimiento = ObjFactura.IEPS * ValorMultiplicador importeMX = Math.Round(importeMovimiento * tipoCambio * Multiplicador, 2) FechaMovimiento = ObjFactura.Fecha CveSubProyectoContabilizar = CveSubProyectoVenta - If tipoCambio > 1 Then Concepto += $" TC:{tipoCambio} ${importeMovimiento.FormatoNumero(2)}" - If importeMovimiento <> 0 AndAlso ObjConta.GetRetCuenta(ConceptoContable, ObjFactura.CveEmpresa) Then - If ObjConta.DtResultados.Rows.Count > 0 Then - IdCtaContable = ObjConta.DtResultados.Rows(0)("IdCuentaIEPSxTrasladar").ToString().ToEntero() - CveCuenta = ObjConta.DtResultados.Rows(0)("IdCuentaIEPSxTrasladarSIG").ToString().ToEntero() + + If ObjFactura.TipoDocto = "Dev" Then + TipoMovimiento = True + ConceptoContable = 39 + importeMovimiento = importeMovimiento * -1 + importeMX = importeMX * -1 + + If importeMovimiento <> 0 AndAlso ObjConta.GetRetCuenta(ConceptoContable, ObjFactura.CveEmpresa) Then + If ObjConta.DtResultados.Rows.Count > 0 Then + IdCtaContable = ObjConta.DtResultados.Rows(0)("IdCuentaIEPSTrasladado").ToString().ToEntero() + CveCuenta = ObjConta.DtResultados.Rows(0)("IdCuentaIEPSTrasladadoSIG").ToString().ToEntero() + End If + End If + Else + If importeMovimiento <> 0 AndAlso ObjConta.GetRetCuenta(ConceptoContable, ObjFactura.CveEmpresa) Then + If ObjConta.DtResultados.Rows.Count > 0 Then + IdCtaContable = ObjConta.DtResultados.Rows(0)("IdCuentaIEPSxTrasladar").ToString().ToEntero() + CveCuenta = ObjConta.DtResultados.Rows(0)("IdCuentaIEPSxTrasladarSIG").ToString().ToEntero() + End If End If End If + + If tipoCambio > 1 Then Concepto += $" TC:{tipoCambio} ${importeMovimiento.FormatoNumero(2)}" + + If importeMovimiento <> 0 AndAlso ObjFactura.TipoDocto = "Egs" Then + 'IEPS X TRASLADAR + Concepto = ObjConta.ObtenerConceptoEmpresa(UsuarioActual.CveEmpresa, 38, ObjFactura.Cliente.Nombre, $"{ObjFactura.Serie}-{ObjFactura.Folio}", FolioIE.ToString()) + If Not ObjConta.AddPrePolizasDetalle(ObjFactura.CvePrePoliza, TipoMovimiento, importeMovimiento, Referencia, 38, Concepto, Fecha, UsuarioActual.Empresa.IdCuentaIEPSxTrasladar, -1, CveVenta:=ObjFactura.CveVenta, CveCliente:=CveCliente, CveIE:=-1, ImporteMX:=importeMX * Multiplicador, ImporteME:=If(tipoCambio = 1, 0, importeMovimiento), CveSubProyecto:=CveSubProyectoContabilizar) Then + ErrorPrepoliza = True + Exit For + End If + + 'IEPS PAGADO + Concepto = ObjConta.ObtenerConceptoEmpresa(UsuarioActual.CveEmpresa, 39, ObjFactura.Cliente.Nombre, $"{ObjFactura.Serie}-{ObjFactura.Folio}", FolioIE.ToString()) + If Not ObjConta.AddPrePolizasDetalle(ObjFactura.CvePrePoliza, Not TipoMovimiento, importeMovimiento, Referencia, 39, Concepto, Fecha, UsuarioActual.Empresa.IdCuentaIEPSTrasladado, -1, CveVenta:=ObjFactura.CveVenta, CveCliente:=CveCliente, CveIE:=-1, ImporteMX:=importeMX * Multiplicador, ImporteME:=If(tipoCambio = 1, 0, importeMovimiento), CveSubProyecto:=CveSubProyectoContabilizar) Then + ErrorPrepoliza = True + Exit For + End If + + importeMovimiento = 0 + importeMX = 0 + End If + End If @@ -11387,11 +11500,6 @@ Partial Class Ventas i = i + 1 Next - 'VERIFICA QUE SE REALIZO EL MOVIMIENTO DE ALMACEN - If Not (ObjInventario.GetInv_Mov(factura.CveVenta, UsuarioActual.CveEmpresa) AndAlso ObjInventario.DtResultados.Rows.Count > 0) Then - OcurrioError = True - End If - 'REGISTRO LA PREPOLIZA DE COSTO VS ALMACEN If Not OcurrioError Then Dim DtCostos As DataTable = Nothing @@ -11456,6 +11564,14 @@ Partial Class Ventas End If + Dim DebeGenerarMovimiento As Boolean = TmpDT.COUNT("CvePS", "CveTipoPS = 2") > 0 + 'VERIFICA QUE SE REALIZO EL MOVIMIENTO DE ALMACEN + If DebeGenerarMovimiento AndAlso UsuarioActual.CveEmpresa = 141 AndAlso UsuarioActual.Empresa.Funcionalidad(567) = "1" AndAlso factura.TipoDocto.Contiene("Ing", "Egs", "Rem") Then + If Not (ObjInventario.GetInv_Mov(factura.CveVenta, UsuarioActual.CveEmpresa) AndAlso ObjInventario.DtResultados.Rows.Count > 0) Then + OcurrioError = True + End If + End If + End If Catch ex As Exception @@ -14355,6 +14471,8 @@ Partial Class Ventas If Not DdlVendedor.SelectedValue.ToEntero() > 0 Then DdlVendedor.SelectedValueExist(UsuarioActual.CveVendedor.ToString()) End If + + TxtCorreoNotificaciones.Text = GlobalDTUsuarios(UsuarioActual.CveUsuario).FiltroPrimeroValor("Correo") End Sub #End Region @@ -16143,6 +16261,9 @@ Partial Class Ventas GuardaLog($"LOG IPP: Ventas LN: 10033. - DtRemisionesTmpDT.Rows.Count: {DtRemisionesTmpDT.Rows.Count} - ObjInventario.DtResultados.FiltraParametros('CvePS > 0').Rows.Count: {ObjInventario.DtResultados.FiltraParametros("CvePS > 0").Rows.Count} Ex:{ex.Message}") DtMovimientosDetalles = New DataTable End Try + + 'SE FILTRAN LOS MOVIMIENTOS DE LA PARTE QUE SE FACTURA DE LA REMISION + DtMovimientos = DtMovimientosDetalles.FiltraParametros("", DistinctColumns:={"CveMovimiento"}) Else DtMovimientosDetalles = ObjInventario.DtResultados.FiltraParametros("CvePS > 0") End If