diff --git a/Acumuladores/RepEntradasUsadosClientes.aspx b/Acumuladores/RepEntradasUsadosClientes.aspx index 3a55af4e0..b11a035ad 100644 --- a/Acumuladores/RepEntradasUsadosClientes.aspx +++ b/Acumuladores/RepEntradasUsadosClientes.aspx @@ -1,32 +1,42 @@ <%@ Page Title="" Language="VB" MasterPageFile="~/Site.master" AutoEventWireup="false" CodeFile="RepEntradasUsadosClientes.aspx.vb" Inherits="Acumuladores_RepEntradasUsadosClientes" %> - + - + - + - + + + +
  • + +
  • +
    + + + +
    - + - + - +
    - + ">
    Almacen:
    -
    - -
    +
    + +
    Fecha Inicio:
    @@ -50,16 +60,27 @@
    - +
    - +
    + +
    +
    + + + + + + + + + -
    - + diff --git a/Acumuladores/RepEntradasUsadosClientes.aspx.vb b/Acumuladores/RepEntradasUsadosClientes.aspx.vb index 29d60c703..72659691c 100644 --- a/Acumuladores/RepEntradasUsadosClientes.aspx.vb +++ b/Acumuladores/RepEntradasUsadosClientes.aspx.vb @@ -1,9 +1,20 @@ Imports Extensiones +Imports System.Data Imports System +Imports Microsoft.Reporting.WebForms Partial Class Acumuladores_RepEntradasUsadosClientes Inherits ClsPaginas + Private Property DatosEntradasUsadosClientes() As DataTable + Get + Return CType(ViewState("DatosEntradasUsados"), DataTable) + End Get + Set(value As DataTable) + ViewState("DatosEntradasUsados") = value + End Set + End Property + Private Sub Acumuladores_EntradasUsados_Load(sender As Object, e As EventArgs) Handles Me.Load If Not Page.IsPostBack Then @@ -38,11 +49,44 @@ Partial Class Acumuladores_RepEntradasUsadosClientes Dim Acum As New ClsAcumuladores If Acum.EntradasUsadosClientesRep(CveAlmacen, FechaI, FechaF, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa) Then - GvDatos.datasource = Acum.DtResultados + GvDatos.DataSource = Acum.DtResultados + DatosEntradasUsadosClientes = Acum.DtResultados.FiltraParametros("Codigo_Clientes <> 'Total:'") End If Acum.Dispose() - GvDatos.databind + GvDatos.DataBind() + UpDatos.Update() + End Sub + + Protected Sub GvDatos_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles GvDatos.RowDataBound + If e.Row.RowType = DataControlRowType.DataRow Then + + If e.Row.DBCampo("EsHeader").ToString = "-1" Then + e.Row.CssClass = "SubTotales2" + End If + + End If + End Sub + + Protected Sub BtnImprimir_Click(sender As Object, e As EventArgs) + + + Dim Dia As String = {"lunes", "martes", "miércoles", "jueves", "viernes", "sábado", "domingo"}(If((Weekday(Today) - 2) = -1, 7, Weekday(Today) - 2)) + Dim Mes As String = {"enero", "febrero", "marzo", "abril", "mayo", "junio", "julio", "agosto", "septiembre", "octubre", "noviembre", "diciembre"}(Month(Today) - 1) + + Dim FechaConFormato As String = String.Format("{0}, {1} de {2} de {3}", Dia, Month(Today), Mes, Year(Today)) + + Dim params As New List(Of ReportParameter) + + params.Add(New ReportParameter("Direccion", "Tamaulipas Esq. con Guadalupe Victoria")) + params.Add(New ReportParameter("FechaConFormato", FechaConFormato)) + params.Add(New ReportParameter("FechaInicial", TxtFechaI.Text)) + params.Add(New ReportParameter("FechaFinal", TxtFechaF.Text)) + + Dim rds As New ReportDataSource With {.Name = "DataSet1", .Value = DatosEntradasUsadosClientes} + + ImprimirPDF(String.Format("Empresas/{0}/Formatos/RepEntradasUsadosClientes.rdlc", UsuarioActual.CveEmpresa), DatosEntradasUsadosClientes, params, "Entradas usados clientes", "PDF") End Sub + End Class diff --git a/Acumuladores/RepIndicadorDiario.aspx b/Acumuladores/RepIndicadorDiario.aspx new file mode 100644 index 000000000..d8060715c --- /dev/null +++ b/Acumuladores/RepIndicadorDiario.aspx @@ -0,0 +1,396 @@ +<%@ Page Title="Reporte de Compras Clasificación" Language="VB" MasterPageFile="~/Site.master" AutoEventWireup="false" CodeFile="RepIndicadorDiario.aspx.vb" Inherits="ACumuladores_RepIndicadorDiario" %> + +<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="asp" %> + + +
  • + Generar PDF +
  • +
  • + + Exportar Excel + +
  • + + +
    + + Reporte Indicador Diario + + + + + + + + + + +
    +
    +
    + + +
    +
    +
    + + + + + +
    + Fecha Inicio: +
    +
    +
    + + + + +
    + + + + + + +
    +
    + Fecha Fin: +
    +
    +
    + + + + +
    + + + + + + +
    + + SubProyecto: +
    + <%-- + + --%> + +
    + + +
    +
    +
    + + + +
    +
    +
    +
    + + + + + + + Concepto + + + + + + + + Acumulado + + + + + + + + Importe Acumulado + + + + + + + + Venta Diaria + + + + + + + + Importe Al Día + + + + + + + + + Cantidad Total + + + + + + + + + Total + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + diff --git a/Acumuladores/RepIndicadorDiario.aspx.vb b/Acumuladores/RepIndicadorDiario.aspx.vb new file mode 100644 index 000000000..362c272d4 --- /dev/null +++ b/Acumuladores/RepIndicadorDiario.aspx.vb @@ -0,0 +1,366 @@ +Option Explicit On +Option Strict On + +Imports Extensiones +Imports Microsoft.Reporting.WebForms +Imports System.Data + +Partial Class ACumuladores_RepIndicadorDiario + Inherits ClsPaginas + +#Region " PROPIEDADES " + Private Property DtDatos As DataTable + Get + DtDatos = DirectCast(ViewState("DtDatos"), DataTable) + End Get + + Set(ByVal value As DataTable) + ViewState("DtDatos") = value + End Set + End Property + + Private Property NumeroRemesa As String + Get + NumeroRemesa = ViewState("NumeroRemesa").ToString + End Get + Set(value As String) + ViewState("NumeroRemesa") = value + End Set + End Property + + Private Property TCEspecifico As Double + Get + If ViewState("TCEspecifico") Is Nothing Then + Return -1 + Else + Return DirectCast(ViewState("TCEspecifico"), Double) + End If + End Get + Set(value As Double) + ViewState("TCEspecifico") = value + End Set + End Property + Private Property DtColor As DataTable + Get + Return DirectCast(ViewState("DtColor"), DataTable) + End Get + Set(value As DataTable) + ViewState("DtColor") = value + End Set + End Property + Private Property Agrupador As String + Get + Return ViewState("Agrupador").ToString + End Get + + Set(value As String) + ViewState("Agrupador") = value + End Set + End Property + Private Property CveMoneda As Integer + Get + CveMoneda = ViewState("CveMoneda").ToString.ToEntero + End Get + Set(value As Integer) + ViewState("CveMoneda") = value + End Set + End Property + +#End Region + + Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load + If Not IsPostBack Then + + txtFechaI.Text = Now.FirstDayOfMonth().ToString("dd/MM/yyyy") + txtFechaF.Text = Now.ToString("dd/MM/yyyy") + + CargaCombos() + + CargaDatos() + End If + End Sub + +#Region "CARGAS" + + Private Sub CargaCombos() + + DdlSubProyecto.DataSource = GlobalDTSubProyectos(-1, -1, UsuarioActual.CveEmpresa) + DdlSubProyecto.DataBind() + DdlSubProyecto.Items.Insert(0, New ListItem("Todos", "-1")) + DdlSubProyecto.SelectedValuesIfExist("-1") + + End Sub + + + + Private Sub CargaDatos() + + Dim ObjAcum As New ClsAcumuladores() + + Dim FechaI, FechaF As Date + FechaI = txtFechaI.Text.ToDate + FechaF = txtFechaF.Text.ToDate + + If RblTipoCambio.SelectedValue.ToEntero = 3 And TxtEspecifico.Text <> "" Then + TCEspecifico = TxtEspecifico.Text.ToDouble + Else + TCEspecifico = -1 + End If + + If ObjAcum.GetRepIndicadorDiario(FechaI, FechaF, DdlSubProyecto.SelectedValue.ToEntero, UsuarioActual.CveEmpresa) Then + GvDatos.DataSource = ObjAcum.DtResultados + DtDatos = ObjAcum.DtResultados + Else + GvDatos.DataSource = Nothing + End If + + ObjAcum.Dispose() + GvDatos.DataBind() + + + End Sub + +#End Region + +#Region "SELECTED INDEX CHANGE" + + + + Private Sub RblTipoCambio_SelectedIndexChanged(sender As Object, e As EventArgs) Handles RblTipoCambio.SelectedIndexChanged + If RblTipoCambio.SelectedValue.ToEntero = 3 Then + Dim TipoCambio As Double + LiEspecifico.Visible = True + TipoCambio = GlobalTipoCambio(Now) + TxtEspecifico.Text = TipoCambio.ToString + Else + LiEspecifico.Visible = False + End If + UpBodyTipoCambio.Update() + End Sub + +#End Region + +#Region "CONSULTAR" + + Protected Sub BtnConsultar_Click(sender As Object, e As System.EventArgs) Handles BtnConsultar.Click + CargaDatos() + UPDatos.Update() + End Sub + +#End Region + +#Region "GRIDVIEW" + + Protected Sub GvDatos_RowDataBound(sender As Object, e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GvDatos.RowDataBound + + If e.Row.RowType = DataControlRowType.DataRow Then + + If e.Row.DataKey("Ordernador2").ToEntero = 100 Or e.Row.DataKey("Seccion").ToEntero = 3 And (e.Row.DataKey("TipoCategoria").ToEntero = 6 Or e.Row.DataKey("TipoCategoria").ToEntero = 7) Then + e.Row.Font.Bold = True + + End If + + + End If + End Sub + +#End Region + +#Region " IMPRIMIR " + + Protected Sub LnkExportar_Click(sender As Object, e As EventArgs) Handles LnkExportar.Click + 'GvDatos.ExportToExcel("ReporteComprasClasificacion" & Now.ToShortDateString) + GenerarPDF("EXCEL") + End Sub + + Protected Sub LnkPdf_Click(sender As Object, e As EventArgs) + GenerarPDF("PDF") + End Sub + Private Sub GenerarPDF(Opcion As String) + Dim FechaI = If(txtFechaI.Text = "" Or txtFechaI.Text = "__/__/____", "-1", txtFechaI.Text) + Dim FechaF = If(txtFechaF.Text = "" Or txtFechaF.Text = "__/__/____", "-1", txtFechaF.Text) + + + + Dim FechaIn As String = $" Fecha Inicio: {txtFechaI.Text}" + Dim FechaFn As String = $" Fecha Fin: {txtFechaF.Text}" + If txtFechaI.Text = "" Then FechaIn = "" + If txtFechaF.Text = "" Then FechaFn = "" + + + Dim SubProyecto = If(DdlSubProyecto.GetSelectedText = "", "", $" SubProyecto: {DdlSubProyecto.GetSelectedText}") + + + Dim FechaIF, FechaFF As String + FechaIF = If(IsDate(txtFechaI.Text.Trim()), txtFechaI.Text.Trim(), "-1") + FechaFF = If(IsDate(txtFechaF.Text.Trim()), txtFechaF.Text.Trim(), "-1") + + + + If DtDatos IsNot Nothing AndAlso DtDatos.Rows.Count > 0 Then + + + + Dim Imagen As New System.IO.FileInfo(String.Format("{0}/Logo.png", UsuarioActual.Empresa.Ruta)) + Dim logouri = String.Format("{0}://{1}:{2}/Empresas/{3}/Logo.png", Request.Url.Scheme, Request.Url.Host, Request.Url.Port, UsuarioActual.CveEmpresa) + + Dim params As New List(Of ReportParameter) + params.Add(New ReportParameter("NombreEmpresa", UsuarioActual.Empresa.Empresa)) + params.Add(New ReportParameter("FechaInicio", FechaI)) + params.Add(New ReportParameter("FechaFin", FechaF)) + params.Add(New ReportParameter("UsuarioImprimio", UsuarioActual.Nombre)) + params.Add(New ReportParameter("FechaImpresion", Now.ToString)) + params.Add(New ReportParameter("AgrupadoPor", $"Filtros Por: {FechaIn} {FechaFn} {SubProyecto} ")) + + If Imagen.Exists Then + params.Add(New ReportParameter("LogoPath", logouri)) + Else + params.Add(New ReportParameter("LogoPath", "")) + End If + ImprimirPDF("Empresas/Grales/Formatos/RepIndicadorDiario.rdlc", DtDatos, params, $"RepIndicadorDiario_{Now.ToString("yyyyMMddhhmmss")}", Opcion) + Else + Alert("No hay datos consultados", TipoMensaje.MsgAdvertencia) + End If + + End Sub +#End Region + +#Region "GRAFICA" + + Protected Sub LnkVerGrafica_Click(sender As Object, e As EventArgs) + If Not DtDatos IsNot Nothing AndAlso DtDatos.Rows.Count > 0 Then + Alert("No hay datos disponibles", TipoMensaje.MsgAdvertencia) + Exit Sub + End If + + LblTituloGrafica.Text = $"Agrupado por: {Agrupador}" + RegistraScript("$('#DivModalGrafica').modal('show')") + CambioGrafica() + End Sub + Private Sub CreaDataTableColor() + DtColor = New DataTable + DtColor.Columns.Add("Color") + Dim RowColor As DataRow = Nothing + RowColor = DtColor.NewRow() + RowColor("Color") = "#FF0F00" + DtColor.Rows.Add(RowColor) + RowColor = Nothing + RowColor = DtColor.NewRow() + RowColor("Color") = "#FF6600" + DtColor.Rows.Add(RowColor) + RowColor = Nothing + RowColor = DtColor.NewRow() + RowColor("Color") = "#FF9E01" + DtColor.Rows.Add(RowColor) + RowColor = Nothing + RowColor = DtColor.NewRow() + RowColor("Color") = "#FCD202" + DtColor.Rows.Add(RowColor) + RowColor = Nothing + RowColor = DtColor.NewRow() + RowColor("Color") = "#F8FF01" + DtColor.Rows.Add(RowColor) + RowColor = Nothing + RowColor = DtColor.NewRow() + RowColor("Color") = "#B0DE09" + DtColor.Rows.Add(RowColor) + RowColor = Nothing + RowColor = DtColor.NewRow() + RowColor("Color") = "#04D215" + DtColor.Rows.Add(RowColor) + RowColor = Nothing + RowColor = DtColor.NewRow() + RowColor("Color") = "#0D8ECF" + DtColor.Rows.Add(RowColor) + RowColor = Nothing + RowColor = DtColor.NewRow() + RowColor("Color") = "#0D52D1" + DtColor.Rows.Add(RowColor) + RowColor = Nothing + RowColor = DtColor.NewRow() + RowColor("Color") = "#2A0CD0" + DtColor.Rows.Add(RowColor) + RowColor = Nothing + RowColor = DtColor.NewRow() + RowColor("Color") = "#8A0CCF" + DtColor.Rows.Add(RowColor) + RowColor = Nothing + RowColor = DtColor.NewRow() + RowColor("Color") = "#CD0D74" + DtColor.Rows.Add(RowColor) + RowColor = Nothing + RowColor = DtColor.NewRow() + RowColor("Color") = "#754DEB" + DtColor.Rows.Add(RowColor) + RowColor = Nothing + RowColor = DtColor.NewRow() + RowColor("Color") = "#DDDDDD" + DtColor.Rows.Add(RowColor) + RowColor = Nothing + RowColor = DtColor.NewRow() + RowColor("Color") = "#999999" + DtColor.Rows.Add(RowColor) + RowColor = Nothing + RowColor = DtColor.NewRow() + RowColor("Color") = "#333333" + DtColor.Rows.Add(RowColor) + RowColor = Nothing + RowColor = DtColor.NewRow() + RowColor("Color") = "#000000" + DtColor.Rows.Add(RowColor) + End Sub + + Private Sub CambioGrafica() + Dim Dt As New DataTable() + Dt.Columns.Add("Texto") + Dt.Columns.Add("Valor") + Dt.Columns.Add("Color") + Dt.Columns.Add("Moneda") + Dim RowColorIndex As Integer = 0 + For Each Dr As DataRow In DtDatos.Rows + If Not Dr("CveCompra").ToString.ToEntero > 0 Then + Dim Row As DataRow = Nothing + Row = Dt.NewRow() + Row("Texto") = $"{Dr("GPO").ToString} {GlobalDTMonedas().FiltraParametros($"CveMoneda = {CveMoneda}").Rows(0)("Abreviatura").ToString}" + Select Case DdlVer.SelectedValue.ToEntero + Case 1 + Row("Valor") = Dr("Total").ToString.FormatoNumero + Case 2 + Row("Valor") = Dr("SubTotal").ToString.FormatoNumero + Case 3 + Row("Valor") = Dr("IVA").ToString.FormatoNumero + End Select + Row("Color") = DtColor.Rows(RowColorIndex)("Color").ToString + Row("Moneda") = GlobalDTMonedas().FiltraParametros($"CveMoneda = {CveMoneda}").Rows(0)("Moneda").ToString + Dt.Rows.Add(Row) + RowColorIndex += 1 + If RowColorIndex = 17 Then + RowColorIndex = 0 + End If + End If + Next + + Dim query = From s In Dt.AsEnumerable() Select New With {.Texto = s("Texto").ToString(), .Valor = s("Valor").ToString().ToDouble(), .Color = s("Color").ToString(), .Moneda = s("Moneda").ToString()} + Dim json As String = Newtonsoft.Json.JsonConvert.SerializeObject(query) + Select Case DdlGrafica.SelectedValue.ToEntero + Case 1 + RegistraScript($"CargaGraficaBarras({json})", "22") + Case 2 + RegistraScript($"CargaGraficaPastel({json})", "22") + End Select + UPModalProd.Update() + End Sub + Protected Sub DdlGrafica_SelectedIndexChanged(sender As Object, e As EventArgs) + CambioGrafica() + End Sub + + Protected Sub DdlVer_SelectedIndexChanged(sender As Object, e As EventArgs) + CambioGrafica() + End Sub + +#End Region + + + +End Class + diff --git a/App_Code/ClsAcumuladores.vb b/App_Code/ClsAcumuladores.vb index 1980df4a1..593569762 100644 --- a/App_Code/ClsAcumuladores.vb +++ b/App_Code/ClsAcumuladores.vb @@ -583,12 +583,27 @@ Public Class ClsAcumuladores End Try Return Retorno - End Function + End Function + + Public Function GetNuevoConsecutivoFolio(CveFolioGarantia As Integer) As Boolean + Dim Retorno As Boolean = False + SqlDataAdapter(String.Format("SELECT MAX(Consecutivo) + 1 AS NuevoConsecutivo FROM Acum_GarantiasDetalle d WHERE d.CveFolioGarantia = {0}", CveFolioGarantia), CommandType.Text) + + Try + SqlAdapter.Fill(Data) + Retorno = True + Catch ex As Exception + OnError(String.Format("Ocurrió un error al consultar un nuevo consecutivo para el folio {0}", CveFolioGarantia), ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo) + End Try + Return Retorno + End Function + + #End Region - + #Region " GARANTÍAS MESES " - + Public Function GarantiasMesesGet(CveGarantiaMes As Integer, CveEmpresa As Integer, Optional CveMarca As Integer = -1, Optional CveTipoUso As Integer = -1, Optional Mes As Integer = -1) As Boolean Dim Retorno As Boolean = False 'Data = New DataTable @@ -703,7 +718,7 @@ Public Class ClsAcumuladores Public Function AddGarantiasDetalle(CveVentaDetalle As Integer, CvePS As Integer, CveFolioGarantia As Integer, CveTipoUso As Integer, CodigoEnsamble As String, CodigoLinea As String, CodigoInspeccion As String, CveTipoDefecto As Integer, NumPoliza As String, Importe As Double, - Consecutivo As String) As Boolean + Consecutivo As String, FechaAjuste As DateTime) As Boolean Dim Retorno As Boolean = False SqlDataAdapter("PA_Acum_GarantiasDetalleAdd") With SqlAdapter.SelectCommand.Parameters @@ -717,7 +732,8 @@ Public Class ClsAcumuladores .Add("@CveTipoDefecto", SqlDbType.Int).Value = CveTipoDefecto .Add("@NumPoliza", SqlDbType.VarChar).Value = NumPoliza .Add("@Importe", SqlDbType.Float).Value = Importe - .Add("@Consecutivo", SqlDbType.VarChar).Value = Consecutivo + .Add("@Consecutivo", SqlDbType.VarChar).Value = Consecutivo + .Add("@FechaAjuste", SqlDbType.DateTime).Value = FechaAjuste End With Try SqlAdapter.Fill(Data) @@ -894,16 +910,16 @@ Public Class ClsAcumuladores End Function - Public Function GetRepInicadorDiario(FechaInicio As Date, FechaFin As Date, CveSubProeycto As Integer, CveEmpresa As Integer) As Boolean + Public Function GetRepIndicadorDiario(FechaInicio As Date, FechaFin As Date, CveSubProeycto As Integer, CveEmpresa As Integer) As Boolean Dim Retorno As Boolean = False - SqlDataAdapter("PA_Acum_RepInicadorDiarioGet") + SqlDataAdapter("PA_Acum_RepIndicadorDiarioGet") With SqlAdapter.SelectCommand.Parameters .Add("@FechaInicio", SqlDbType.Date).Value = FechaInicio .Add("@FechaFin", SqlDbType.Date).Value = FechaFin - .Add("@CveSubProeycto", SqlDbType.Int).Value = CveSubProeycto + .Add("@CveSubProyecto", SqlDbType.Int).Value = CveSubProeycto .Add("@CveEmpresa", SqlDbType.Int).Value = CveEmpresa End With diff --git a/App_Code/ClsPaginas.vb b/App_Code/ClsPaginas.vb index dfa03f9ac..4158cd285 100644 --- a/App_Code/ClsPaginas.vb +++ b/App_Code/ClsPaginas.vb @@ -4457,6 +4457,8 @@ Public Class ClsPaginas PaginaDict.Add("/Ventas/RepArqueosDetalle.aspx".ToUpper(), 680) PaginaDict.Add("/Ventas/RepCotizacionesxFacturar.aspx".ToUpper(), 686) PaginaDict.Add("/Ventas/RepRemisionesNC.aspx".ToUpper(), 687) + PaginaDict.Add("/Ventas/CatCobranzaEstatus.aspx".ToUpper(), 7003) + PaginaDict.Add("/Ventas/CatCobranzaEstatusTurno.aspx".ToUpper(), 7004) #End Region diff --git a/App_Code/ClsProductosServicios.vb b/App_Code/ClsProductosServicios.vb index 317ff984a..27d3474b3 100644 --- a/App_Code/ClsProductosServicios.vb +++ b/App_Code/ClsProductosServicios.vb @@ -27,6 +27,7 @@ Public Class ClsProductosServicios Public Property CvePS As Integer Public Property CveClasificacion As Integer + Public Property Clasificacion As String Public Property CveUnidadMedida As Integer Public Property CveSATPS As Integer Public Property SATClavePS As String @@ -226,6 +227,7 @@ Public Class ClsProductosServicios If Data.Rows.Count > 0 Then Me.CvePS = Data.Rows(0)("CvePS").ToString().ToEntero Me.CveClasificacion = Data.Rows(0)("CveClasificacion").ToString.ToEntero + Me.Clasificacion = Data.Rows(0)("Clasificacion").ToString CveUnidadMedida = Data.Rows(0)("CveUnidadMedida").ToString.ToEntero CveSATPS = Data.Rows(0)("CveSATPS").ToString.ToEntero Me.SATClavePS = Data.Rows(0)("SATClavePS").ToString diff --git a/App_Code/ClsVentas.vb b/App_Code/ClsVentas.vb index 55cd012c9..cc5535caf 100644 --- a/App_Code/ClsVentas.vb +++ b/App_Code/ClsVentas.vb @@ -3130,6 +3130,149 @@ Public Class ClsVentas End Try Return Retorno End Function + + Public Function GetCobranzaEstatus(CveEmpresa As Integer) As Boolean + Dim Retorno As Boolean = False + + DataAdapter("PA_Vta_CobranzaEstatusGet") + With SqlAdapter.SelectCommand.Parameters + .Add("@CveEmpresa", SqlDbType.Int).Value = CveEmpresa + End With + + Try + SqlAdapter.Fill(Data) + Retorno = True + Catch ex As SqlException + Me.OnError("Ocurrió un error al intentar obtener los estatus de cobranza", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo()) + End Try + + Return Retorno + + End Function + + Public Function AddCobranzaEstatus(CobranzaEstatus As String, CveEmpresa As Integer, Estatus As Boolean, CveUsuario As Integer) As Boolean + Dim Retorno As Boolean = False + + DataAdapter("PA_Vta_CobranzaEstatusAdd") + With SqlAdapter.SelectCommand.Parameters + .Add("@CobranzaEstatus", SqlDbType.VarChar).Value = CobranzaEstatus + .Add("@Estatus", SqlDbType.Int).Value = Estatus + .Add("@CveUsuario", SqlDbType.Int).Value = CveUsuario + .Add("@CveEmpresa", SqlDbType.Int).Value = CveEmpresa + End With + + Try + SqlAdapter.Fill(Data) + Retorno = True + Catch ex As SqlException + Me.OnError("Ocurrió un error al intentar agregar el estatus de cobranza", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo()) + End Try + + Return Retorno + + End Function + + Public Function RemoveCobranzaEstatus(CveCobranzaEstatus As Integer) As Boolean + Dim Retorno As Boolean = False + + DataAdapter("PA_Vta_CobranzaEstatusDelete") + With SqlAdapter.SelectCommand.Parameters + .Add("@CveCobranzaEstatus", SqlDbType.Int).Value = CveCobranzaEstatus + End With + + Try + SqlAdapter.Fill(Data) + Retorno = True + Catch ex As SqlException + Me.OnError("Ocurrió un error al intentar agregar el estatus de cobranza", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo()) + End Try + + Return Retorno + + End Function + + Public Function UpdateCobranzaEstatus(CveCobranzaEstatus As Integer, CobranzaEstatus As String, Estatus As Boolean) As Boolean + Dim Retorno As Boolean = False + + DataAdapter("PA_Vta_CobranzaEstatusUpdate") + With SqlAdapter.SelectCommand.Parameters + .Add("@CveCobranzaEstatus", SqlDbType.Int).Value = CveCobranzaEstatus + .Add("@CobranzaEstatus", SqlDbType.VarChar).Value = CobranzaEstatus + .Add("@Estatus", SqlDbType.Bit).Value = Estatus + End With + + Try + SqlAdapter.Fill(Data) + Retorno = True + Catch ex As SqlException + Me.OnError("Ocurrió un error al intentar agregar el estatus de cobranza", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo()) + End Try + + Return Retorno + + End Function + + Public Function AddCobranzaEstatusTurno(CobranzaEstatusTurno As String, CveEmpresa As Integer, Estatus As Boolean, CveUsuario As Integer) As Boolean + Dim Retorno As Boolean = False + + DataAdapter("PA_Vta_CobranzaEstatusTurnoAdd") + With SqlAdapter.SelectCommand.Parameters + .Add("@CobranzaEstatusTurno", SqlDbType.VarChar).Value = CobranzaEstatusTurno + .Add("@Estatus", SqlDbType.Int).Value = Estatus + .Add("@CveUsuario", SqlDbType.Int).Value = CveUsuario + .Add("@CveEmpresa", SqlDbType.Int).Value = CveEmpresa + End With + + Try + SqlAdapter.Fill(Data) + Retorno = True + Catch ex As SqlException + Me.OnError("Ocurrió un error al intentar agregar el estatus turno de cobranza", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo()) + End Try + + Return Retorno + + End Function + + Public Function RemoveCobranzaEstatusTurno(CveCobranzaEstatus As Integer) As Boolean + Dim Retorno As Boolean = False + + DataAdapter("PA_Vta_CobranzaEstatusTurnoDelete") + With SqlAdapter.SelectCommand.Parameters + .Add("@CveCobranzaEstatusTurno", SqlDbType.Int).Value = CveCobranzaEstatus + End With + + Try + SqlAdapter.Fill(Data) + Retorno = True + Catch ex As SqlException + Me.OnError("Ocurrió un error al intentar agregar el estatus de cobranza", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo()) + End Try + + Return Retorno + + End Function + + Public Function UpdateCobranzaEstatusTurno(CveCobranzaEstatus As Integer, CobranzaEstatus As String, Estatus As Boolean) As Boolean + Dim Retorno As Boolean = False + + DataAdapter("PA_Vta_CobranzaEstatusTurnoUpdate") + With SqlAdapter.SelectCommand.Parameters + .Add("@CveCobranzaEstatusTurno", SqlDbType.Int).Value = CveCobranzaEstatus + .Add("@CobranzaEstatusTurno", SqlDbType.VarChar).Value = CobranzaEstatus + .Add("@Estatus", SqlDbType.Bit).Value = Estatus + End With + + Try + SqlAdapter.Fill(Data) + Retorno = True + Catch ex As SqlException + Me.OnError("Ocurrió un error al intentar agregar el estatus de cobranza", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo()) + End Try + + Return Retorno + + End Function #End Region #Region "C O M P L E M E N T O S" diff --git a/App_Code/Modelos.vb b/App_Code/Modelos.vb index e4cdc187b..4e15fb81d 100644 --- a/App_Code/Modelos.vb +++ b/App_Code/Modelos.vb @@ -1349,7 +1349,7 @@ Namespace Modelos For Each Dr As DataRow In DtAjustes.Rows If Not ObjAcum.AddGarantiasDetalle(Dr("CveVentaDetalle").ToString.ToEntero, Dr("CvePS").ToString.ToEntero, Dr("CveFolioGarantia").ToString.ToEntero, Dr("CveTipoUso").ToString.ToEntero, Dr("CodigoEnsamble").ToString, Dr("CodigoLinea").ToString, Dr("CodigoInspeccion").ToString, Dr("CveTipoDefecto").ToString.ToEntero, - Dr("NumPoliza").ToString, Dr("Importe").ToString.ToDouble, Dr("Consecutivo").ToString) Then + Dr("NumPoliza").ToString, Dr("Importe").ToString.ToDouble, Dr("Consecutivo").ToString, Dr("FechaAjuste").ToString.ToDateTime()) Then ErrorList.Add("Ocurrió un error al agregar la garantia detalle.") End If Next diff --git a/Ashx/SIGPolizaVirtual.ashx b/Ashx/SIGPolizaVirtual.ashx index 6ba9db938..10eab84ae 100644 --- a/Ashx/SIGPolizaVirtual.ashx +++ b/Ashx/SIGPolizaVirtual.ashx @@ -93,7 +93,7 @@ Public Class SIGPolizaVirtual : Implements IHttpHandler, IRequiresSessionState obj.sale_type = "01" 'PISO obj.sale_type_service = "01" 'PARTICULAR obj.sale_total = ObjFactura.Total - obj.sale_discount = ObjFactura.SubTotal + obj.sale_discount = 0 'ObjFactura.SubTotal obj.sale_id = GuidGenerator.GenerateTimeBasedGuid().ToString() 'Dim PS = ObjFactura.DtDetalle.Rows(0) diff --git a/Ashx/TareasProgramadas.ashx b/Ashx/TareasProgramadas.ashx index d3fe1ed59..76932ef83 100644 --- a/Ashx/TareasProgramadas.ashx +++ b/Ashx/TareasProgramadas.ashx @@ -1,11 +1,14 @@ -<%@ WebHandler Language="VB" Class="TareasProgramadas" %> - +<%@ WebHandler Language="VB" Class="TareasProgramadas" %> + Imports System Imports System.Web Imports System.Data -Imports Newtonsoft.Json +Imports Newtonsoft.Json +Imports Newtonsoft.Json.Linq Imports Extensiones -Imports System.IO +Imports System.IO +Imports CrystalDecisions.CrystalReports.Engine +Imports CrystalDecisions.Shared Public Class TareasProgramadas : Implements IHttpHandler @@ -14,21 +17,38 @@ Public Class TareasProgramadas : Implements IHttpHandler Public Sub ProcessRequest(ByVal context As HttpContext) Implements IHttpHandler.ProcessRequest context.Response.ContentType = "text/plain" currentcontext = context - 'timbrarNominab() Dim retorno As String = "no se encontro la variable" - Try - URLParametros = Parametros(context.Request("var")) - Dim metodo As String = URLParametros("metodo") + Try + Dim metodo As String = "" + If context.Request("var") IsNot Nothing Then + URLParametros = Parametros(context.Request("var")) + metodo = URLParametros("metodo") + ElseIf context.Request.Headers("Content-Type") IsNot Nothing AndAlso context.Request.Headers("Content-Type").Contains("json") AndAlso context.Request.InputStream IsNot Nothing Then + context.Response.ContentType = "application/json" + Using reader As New StreamReader(context.Request.InputStream) + Dim json = reader.ReadToEnd() + Dim JsonRequest As JObject = JObject.Parse(json) + If JsonRequest IsNot Nothing Then + metodo = JsonRequest("Metodo").ToString + End If + End Using + End If + Select Case metodo Case "TimbrarNomina" retorno = "Error Timbrado Nomina" retorno = timbrarNomina() - retorno = "" + retorno = "" + context.Response.Write(retorno) + Case "EstadosCuenta" + 'CargaEstadosCuenta(context, 119, 227736) + CargaEstadosCuenta(context, -1, -1) End Select Catch ex As Exception - ex.GuardaLog(ex.ToString()) + ex.GuardaLog(ex.ToString()) + context.Response.Write(retorno) End Try - context.Response.Write(retorno) + End Sub @@ -127,18 +147,18 @@ Public Class TareasProgramadas : Implements IHttpHandler Private Function GetUsuario(CveEmpresa As Integer, Optional CveUsuario As Integer = -1, Optional username As String = "", Optional pass As String = "") As Usuario - Dim usuario As Usuario = Nothing + Dim usuario As Usuario = Nothing #Region "Valido que los campos usuario contraseña no sean nulos" - + If IsNothing(username) Then username = "" End If If IsNothing(pass) Then pass = "" - End If + End If #End Region #Region "Si el CveUsuario es mayor que cero asigno el username y pass la de la CveUsuario" - + If CveUsuario > 0 Then Using Dv As New DataView(DirectCast(currentcontext.Application("GlobalDTUsuarios"), DataTable), $"CveUsuario = 100 AND CveEmpresa ={CveEmpresa}", "", DataViewRowState.CurrentRows) Using GlobalDTUsuarios As DataTable = Dv.ToTable() @@ -149,13 +169,13 @@ Public Class TareasProgramadas : Implements IHttpHandler End If End Using End Using - End If + End If #End Region #Region "obtengo el usuario con el username y la pass" - + Using ObjUsuario As New ClsSisUsuarios() usuario = ObjUsuario.ValidaUsuario(username, pass, IMEI, CveEmpresa) - End Using + End Using #End Region #Region "Asigno la empresa al usuario" If Not IsNothing(usuario) Then @@ -179,7 +199,7 @@ Public Class TareasProgramadas : Implements IHttpHandler End If End Using - End If + End If #End Region Return usuario End Function @@ -224,8 +244,6 @@ Public Class TareasProgramadas : Implements IHttpHandler Return retorno End Function - - Private Function Parametros(Cadena As String) As Hashtable Cadena = Decripta(Cadena) Dim P1() As String = Cadena.Split("&"c) @@ -244,6 +262,436 @@ Public Class TareasProgramadas : Implements IHttpHandler Get Return False End Get - End Property + End Property + + +#Region "E S T A D O S D E C U E N T A" + Private Sub CargaEstadosCuenta(ByVal context As HttpContext, pCveEmpresa As Integer, pCveCliente As Integer) + Dim Retorno As New JArray() + Dim DtEmpresas As DataTable = Nothing + Using ObjEmpresas As New ClsSisEmpresas() + If ObjEmpresas.GetEmpresas(pCveEmpresa, "-1", "-1", "-1", "-1") Then + DtEmpresas = ObjEmpresas.DtResultados.FiltraParametros("", "", {"CveEmpresa"}) + End If + End Using + + If DtEmpresas IsNot Nothing Then + For Each Row As DataRow In DtEmpresas.Rows + Dim Usuario = ValidaUsuarioSistema(Row("CveEmpresa").ToString().ToEntero()) + Dim obj = EjecutarEnvioEstadoCuenta(Usuario, pCveCliente:=pCveCliente) + + Retorno.Add(obj) + Next + End If + + context.Response.Write(Retorno.ToString()) + End Sub + + + Private Function ValidaUsuarioSistema(CveEmpresa As Integer) As Usuario + Dim UsuarioActual As Usuario = Nothing + Dim ObjUsuarios As New ClsSisUsuarios + If ObjUsuarios.GetUsuarios(100) Then + If ObjUsuarios.DtResultados.Rows.Count > 0 Then + Dim Usuario = ObjUsuarios.DtResultados.Rows(0)("Usuario").ToString() + Dim Contrasenia = ObjUsuarios.DtResultados.Rows(0)("Contraseña").ToString() + UsuarioActual = ObjUsuarios.ValidaUsuario(Usuario, Contrasenia, IMEI, CveEmpresa) + UsuarioActual.CveEmpresa = CveEmpresa + CreaObjetoEmpresa(UsuarioActual) + End If + End If + ObjUsuarios.Dispose() + Return UsuarioActual + End Function + Private Sub CreaObjetoEmpresa(ByRef UsuarioActual As Usuario) + Dim ObjEmpresa As New ClsSisEmpresas() + If ObjEmpresa.GetEmpresas(UsuarioActual.CveEmpresa, "-1", "-1", "-1", "-1") Then + If ObjEmpresa.GetEmpresasFuncionalidades(UsuarioActual.CveEmpresa) Then + Dim dttmp As Data.DataTable = ObjEmpresa.DtResultados + + Dim EmpresasFuncionalidades As New HybridDictionary + For Each Row As Data.DataRow In dttmp.Rows + EmpresasFuncionalidades.Add(Convert.ToInt32(Row("CveFuncionalidad")), Row("Valor").ToString) + Next + ObjEmpresa.Empresa.SetFuncionalidades(EmpresasFuncionalidades) + End If + + UsuarioActual.Empresa = ObjEmpresa.Empresa + End If + ObjEmpresa.Dispose() + End Sub + + + Private Function EjecutarEnvioEstadoCuenta(UsuarioActual As Usuario, Optional pCveCliente As Integer = -1) As JObject + Dim ClientesSinEnviar As New JArray() + + Dim Json As New JObject( + New JProperty("Empresa", UsuarioActual.Empresa.Empresa), + New JProperty("Usuario", UsuarioActual.Usuario), + New JProperty("Fecha", DateTime.Now.ToString("dd/MM/yyy HH:mm:ss")) + ) + Dim DTClientes As DataTable = Nothing + + Using ObjCliente As New ClsClientes + If ObjCliente.GetClientes(pCveCliente, "-1", "-1", "-1", "-1", "-1", "-1", -1, UsuarioActual.CveEmpresa, TipoCliente:=-1, Estatus:=1) Then + If ObjCliente.DtResultados.Rows.Count > 0 Then + DTClientes = ObjCliente.DtResultados.Copy() + End If + End If + End Using + + If DTClientes IsNot Nothing Then + For Each RowCliente As DataRow In DTClientes.Rows + Dim CveCliente As Integer = RowCliente("CveCliente").ToString().ToEntero() + Dim Correo As String = RowCliente("CobranzaCorreo").ToString() + + Dim Cliente As New Modelos.ClienteModel(CveCliente, UsuarioActual.CveEmpresa) + + Dim Envio = EnviarEstadoCuenta(UsuarioActual, Correo, Cliente) + + If Envio Then + Using ObjBitacora As New ClsOIEventos + ObjBitacora.AddEventoBitacora("Se envió correo con el estado de cuenta del cliente", "", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveCliente:=Cliente.CveCliente) + End Using + Else + ClientesSinEnviar.Add(New JObject( + New JProperty("CveCliente", Cliente.CveCliente), + New JProperty("Cliente", Cliente.Nombre) + )) + End If + Next + DTClientes.Dispose() + End If + Json.Add(New JProperty("ClientesSinEnviar", ClientesSinEnviar)) + + Return Json + End Function + + Private Function EnviarEstadoCuenta(UsuarioActual As Usuario, Correo As String, Cliente As Modelos.ClienteModel) As Boolean + Dim Retorno As Boolean = True + + Dim ArchivoPDF As Byte() = Nothing + + Dim Formato As String = "PDF" + Dim Archivo As New System.IO.FileInfo(String.Format("{0}Formatos/RepClientesCxC.rpt", UsuarioActual.Empresa.Ruta)) + Dim Imagen As New System.IO.FileInfo(String.Format("{0}/Logo.png", UsuarioActual.Empresa.Ruta)) + Dim logouri = String.Format("{0}://{1}:{2}/Empresas/{3}/Logo.png", HttpContext.Current.Request.Url.Scheme, HttpContext.Current.Request.Url.Host, HttpContext.Current.Request.Url.Port, UsuarioActual.CveEmpresa) + 'OBTENEMOS LOS DATOS + Dim DtCxCFact As DataTable = Nothing + + Dim SaldoIngDolares As Double = 0 + Dim SaldoIngPesos As Double = 0 + Dim SaldoIngDolaresPesos As Double = 0 + Dim TotalIng As Double = 0 + Dim SaldoAntDolares As Double = 0 + Dim SaldoAntPesos As Double = 0 + Dim SaldoAntDolaresPesos As Double = 0 + Dim TotalAnt As Double = 0 + Dim ContaIng As Integer = 0 + Dim ContaAnt As Integer = 0 + Dim FechaCorte As Date = ("9999/01/01").ToDate + + Dim TipoDocto2 As String = "'Ing','NC','Dev'" + Dim FechaVencimientoI As String = "-1" + Dim FechaVencimientoF As String = "-1" + Dim FI As String = "-1" + Dim FF As String = "-1" + Dim dtt As DataTable = Nothing + + Try + Using ObjMovtos As New ClsMovimientos() + If ObjMovtos.GetCxCClienteDetalle(Cliente.CveCliente, "-1", "-1", -1, -1, UsuarioActual.CveEmpresa, CveClienteSucursal:=-1) Then + DtCxCFact = ObjMovtos.DtResultados.FiltraParametros("Tipo = 'Act'", "TipoDocto") + 'cargo los anticipos NC + DtCxCFact.Columns.Add("SaldoAnticipo", GetType(Decimal)) + If ObjMovtos.GetAnticiposNCIxCCliente(Cliente.CveCliente, -1, -1) Then + dtt = ObjMovtos.DtResultados.FiltraParametros("Saldo > 0 AND SaldoVentaAnticipo = 0 AND ((Tipo = 'IxC' AND CveIE > 0) OR (Tipo = 'Ant' AND CveVenta > 0) OR (Tipo = 'NC' AND CveVenta > 0) OR (Tipo = 'Egs' AND CveVenta > 0) )") + End If + End If + End Using + Catch ex As Exception + Retorno = False + dtt = Nothing + OnError("Ocurrió un erro al obtener el CxC", ex) + End Try + + If Not Retorno Then + Return Retorno + End If + + Try + If dtt IsNot Nothing AndAlso dtt.Rows.Count > 0 Then + For Each drt As DataRow In dtt.Rows + Dim drr As DataRow = DtCxCFact.NewRow + drr("TipoDocto") = drt("Tipo") + drr("SerieFolio") = drt("Folio") + drr("Original") = drt("Original") + drr("TipoCambio") = drt("TipoCambio") + drr("Saldo") = 0 + drr("SaldoAnticipo") = drt("Saldo") + drr("Fecha") = drt("Fecha") + drr("Moneda") = drt("Moneda") + drr("CveMoneda") = drt("CveMoneda") + DtCxCFact.Rows.Add(drr) + Next + Else + Retorno = False + Return Retorno + End If + + If DtCxCFact IsNot Nothing Then + For Each Row As DataRow In DtCxCFact.FiltraParametros($"TipoDocto IN ({TipoDocto2})").Rows + If Row("TipoDocto").ToString = "Ing" Or Row("TipoDocto").ToString = "Rem" Or (Row("TipoDocto").ToString = "Ant" And Row("Saldo").ToString.ToDouble > 0) Then 'Ingresos + ContaIng = ContaIng + 1 + If Row("CveMoneda").ToString.ToEntero = 1 Then + SaldoIngPesos = SaldoIngPesos + Row("Saldo").ToString.ToDouble + ElseIf Row("CveMoneda").ToString.ToEntero = 2 Then + SaldoIngDolares = SaldoIngDolares + Row("Saldo").ToString.ToDouble + SaldoIngDolaresPesos = SaldoIngDolaresPesos + (Row("Saldo").ToString.ToDouble * Row("TipoCambio").ToString.ToDouble) + End If + + ElseIf (Row("TipoDocto").ToString = "Ant" And Row("Saldo").ToString.ToDouble = 0) Or Row("TipoDocto").ToString = "IxC" Or Row("TipoDocto").ToString = "NC" Or Row("TipoDocto").ToString = "Dev" Then 'Anticipos, NC, IxC + ContaAnt = ContaAnt + 1 + If Row("CveMoneda").ToString.ToEntero = 1 Then + If Row("TipoDocto").ToString = "Dev" Then + SaldoAntPesos = SaldoAntPesos + Row("Saldo").ToString.ToDouble + Else + SaldoAntPesos = SaldoAntPesos + Row("SaldoAnticipo").ToString.ToDouble + End If + ElseIf Row("CveMoneda").ToString.ToEntero = 2 Then + SaldoAntDolares = SaldoAntDolares + Row("Saldo").ToString.ToDouble + SaldoAntDolaresPesos = SaldoAntDolaresPesos + (Row("SaldoAnticipo").ToString.ToDouble * Row("TipoCambio").ToString.ToDouble) + End If + End If + Next + End If + + TotalIng = SaldoIngPesos + SaldoIngDolaresPesos + TotalAnt = SaldoAntPesos + SaldoAntDolaresPesos + + Dim DtCxCFact2 As DataTable = DtCxCFact.FiltraParametros($"TipoDocto IN ({TipoDocto2})") + + 'INGRESOS + If SaldoIngPesos > 0 Then + Dim drr As DataRow = DtCxCFact2.NewRow + drr("SerieFolio") = "Total Ing Pesos" + drr("Original") = DtCxCFact2.FiltraParametros("CveMoneda = 1").SUM("Original", "TipoDocto IN ('Ing','Rem') OR (TipoDocto = 'Ant' AND Saldo > 0)") + drr("Abonado") = DtCxCFact2.FiltraParametros("CveMoneda = 1").SUM("Abonado", "TipoDocto IN ('Ing','Rem') OR (TipoDocto = 'Ant' AND Saldo > 0)") + drr("Saldo") = SaldoIngPesos + drr("CveMoneda") = 1 + DtCxCFact2.Rows.Add(drr) + End If + If SaldoIngDolares > 0 Then + Dim drr As DataRow = DtCxCFact2.NewRow + drr("SerieFolio") = "Total Ing Dólares" + drr("Original") = DtCxCFact2.FiltraParametros("CveMoneda = 2").SUM("Original", "TipoDocto IN ('Ing','Rem') OR (TipoDocto = 'Ant' AND Saldo > 0)") + drr("Abonado") = DtCxCFact2.FiltraParametros("CveMoneda = 2").SUM("Abonado", "TipoDocto IN ('Ing','Rem') OR (TipoDocto = 'Ant' AND Saldo > 0)") + drr("Saldo") = SaldoIngDolares + drr("CveMoneda") = 2 + DtCxCFact2.Rows.Add(drr) + End If + + 'ANTICIPOS + If SaldoAntPesos > 0 Then + Dim drr As DataRow = DtCxCFact2.NewRow + drr("SerieFolio") = "Total Pesos" + drr("SaldoAnticipo") = SaldoAntPesos + drr("CveMoneda") = 1 + DtCxCFact2.Rows.Add(drr) + End If + If SaldoAntDolares > 0 Then + Dim drr As DataRow = DtCxCFact2.NewRow + drr("SerieFolio") = "Total Dólares" + drr("SaldoAnticipo") = SaldoAntDolares + drr("CveMoneda") = 2 + DtCxCFact2.Rows.Add(drr) + End If + + If DtCxCFact2 IsNot Nothing AndAlso DtCxCFact2.Rows.Count > 0 Then + Dim dr As DataRow = DtCxCFact2.Rows(0) + Dim lista = New List(Of CrystalParametro) + lista.Add(New CrystalParametro("Empresa", UsuarioActual.Empresa.Empresa)) + lista.Add(New CrystalParametro("TipoCuentas", "Con Saldo")) + lista.Add(New CrystalParametro("NombreCliente", Cliente.Nombre)) + lista.Add(New CrystalParametro("FechaInicio", If(FI = "-1", "-", FI))) + lista.Add(New CrystalParametro("FechaFin", If(FF = "-1", DateTime.Now.ToShortDateString, FF))) + lista.Add(New CrystalParametro("UsuarioImprimio", UsuarioActual.Nombre)) + lista.Add(New CrystalParametro("DireccionCliente", String.Format("Calle {0} #{1} Colonia {2}", Cliente.Direccion, If(Cliente.NoExt = "", "S/N", Cliente.NoExt), Cliente.Colonia))) + lista.Add(New CrystalParametro("ClienteCP", Cliente.CP)) + lista.Add(New CrystalParametro("ClienteCiudad", Cliente.Ciudad)) + lista.Add(New CrystalParametro("ClienteRFC", Cliente.RFC)) + lista.Add(New CrystalParametro("ClienteTelefono", Cliente.Telefono)) + lista.Add(New CrystalParametro("DiasCredito", Cliente.PlazoCobranza)) + lista.Add(New CrystalParametro("LimiteCredito", Cliente.LimiteCredito)) + lista.Add(New CrystalParametro("SaldoDisponible", (Cliente.LimiteCredito - DtCxCFact2(0)("Saldo").ToString.ToDouble).FormatoNumero)) + lista.Add(New CrystalParametro("SaldoIngDolares", SaldoIngDolares.FormatoNumero)) + lista.Add(New CrystalParametro("SaldoIngPesos", SaldoIngPesos.FormatoNumero)) + lista.Add(New CrystalParametro("TotalIng", TotalIng.FormatoNumero)) + lista.Add(New CrystalParametro("SaldoAntDolares", SaldoAntDolares.FormatoNumero)) + lista.Add(New CrystalParametro("SaldoAntPesos", SaldoAntPesos.FormatoNumero)) + lista.Add(New CrystalParametro("TotalAnt", TotalAnt.FormatoNumero)) + lista.Add(New CrystalParametro("ContaIng", ContaIng)) + lista.Add(New CrystalParametro("ContaAnt", ContaAnt)) + + If Imagen.Exists Then + lista.Add(New CrystalParametro("LogoPath", logouri)) + Else + lista.Add(New CrystalParametro("LogoPath", "")) + End If + + Try + If Archivo.Exists Then + ArchivoPDF = ImprimirPDFCrystal($"{UsuarioActual.Empresa.Ruta}Formatos/RepClientesCxC.rpt", DtCxCFact2.FiltraParametros("", "CveMoneda,Fecha"), lista, "Estado de cuenta", Formato) + Else + ArchivoPDF = ImprimirPDFCrystal(HttpContext.Current.Server.MapPath("~/Empresas/Grales/Formatos/RepClientesCxC.rpt"), DtCxCFact2.FiltraParametros("", "CveMoneda,Fecha"), lista, "Estado de cuenta", Formato) + End If + + Catch ex As Exception + OnError("Ocurrió error al mandar MAIL de Orden de Compra", ex) + End Try + Else + Dim lista = New List(Of CrystalParametro) + lista.Add(New CrystalParametro("Empresa", UsuarioActual.Empresa.Empresa)) + lista.Add(New CrystalParametro("TipoCuentas", "Con Saldo")) + lista.Add(New CrystalParametro("NombreCliente", Cliente.Nombre)) + lista.Add(New CrystalParametro("FechaInicio", If(FI = "-1", "-", FI))) + lista.Add(New CrystalParametro("FechaFin", If(FF = "-1", DateTime.Now.ToShortDateString, FF))) + lista.Add(New CrystalParametro("UsuarioImprimio", UsuarioActual.Nombre)) + lista.Add(New CrystalParametro("DireccionCliente", String.Format("Calle {0} #{1} Colonia {2}", Cliente.Direccion, If(Cliente.NoExt = "", "S/N", Cliente.NoExt), Cliente.Colonia))) + lista.Add(New CrystalParametro("ClienteCP", Cliente.CP)) + lista.Add(New CrystalParametro("ClienteCiudad", Cliente.Ciudad)) + lista.Add(New CrystalParametro("ClienteRFC", Cliente.RFC)) + lista.Add(New CrystalParametro("ClienteTelefono", Cliente.Telefono)) + lista.Add(New CrystalParametro("DiasCredito", Cliente.PlazoCobranza)) + lista.Add(New CrystalParametro("LimiteCredito", Cliente.LimiteCredito)) + lista.Add(New CrystalParametro("SaldoDisponible", (Cliente.LimiteCredito).FormatoNumero)) + + lista.Add(New CrystalParametro("SaldoIngDolares", SaldoIngDolares.FormatoNumero)) + lista.Add(New CrystalParametro("SaldoIngPesos", SaldoIngPesos.FormatoNumero)) + lista.Add(New CrystalParametro("TotalIng", TotalIng.FormatoNumero)) + lista.Add(New CrystalParametro("SaldoAntDolares", SaldoAntDolares.FormatoNumero)) + lista.Add(New CrystalParametro("SaldoAntPesos", SaldoAntPesos.FormatoNumero)) + lista.Add(New CrystalParametro("TotalAnt", TotalAnt.FormatoNumero)) + lista.Add(New CrystalParametro("ContaIng", ContaIng)) + lista.Add(New CrystalParametro("ContaAnt", ContaAnt)) + + If Imagen.Exists Then + lista.Add(New CrystalParametro("LogoPath", logouri)) + Else + lista.Add(New CrystalParametro("LogoPath", "")) + End If + + Dim drr As DataRow = DtCxCFact2.NewRow + drr("SerieFolio") = "Total Ing Pesos" + drr("Original") = DtCxCFact2.FiltraParametros("CveMoneda = 1").SUM("Original", "TipoDocto IN ('Ing','Rem') OR (TipoDocto = 'Ant' AND Saldo > 0)") + drr("Abonado") = DtCxCFact2.FiltraParametros("CveMoneda = 1").SUM("Abonado", "TipoDocto IN ('Ing','Rem') OR (TipoDocto = 'Ant' AND Saldo > 0)") + drr("Saldo") = 0 + drr("SaldoAnticipo") = 0 + drr("CveMoneda") = 1 + DtCxCFact2.Rows.Add(drr) + + If Archivo.Exists Then + ArchivoPDF = ImprimirPDFCrystal($"{UsuarioActual.Empresa.Ruta}Formatos/RepClientesCxC.rpt", DtCxCFact2.FiltraParametros("", "CveMoneda,Fecha"), lista, "Estado de cuenta", Formato) + Else + ArchivoPDF = ImprimirPDFCrystal(HttpContext.Current.Server.MapPath("~/Empresas/Grales/Formatos/RepClientesCxC.rpt"), DtCxCFact2.FiltraParametros("", "CveMoneda,Fecha"), lista, "Estado de cuenta", Formato) + End If + End If + + Catch ex As Exception + OnError("Ocurrió un error al generar el pdf", ex) + ArchivoPDF = Nothing + End Try + + If ArchivoPDF IsNot Nothing Then + Try + Dim Cuerpo As String = String.Format("Estimado cliente {0}, al presente del correo se anexa su estado actual de cartera en {1}.
    +
    + Quedamos a sus ordenes para cualquier duda o aclaración con su agente de Ventas.
    +
    +
    + Gracias por la atención brindada al presente.
    Reciba un cordial saludo.
    +
    + ESTE CORREO SE GENERO EN FORMA AUTOMATICA.", Cliente.NombreComercial, UsuarioActual.Empresa.Empresa) + + Retorno = MandaCorreo(ArchivoPDF, Correo, $"Estado Actual de Cartera {UsuarioActual.Empresa.Empresa}", Cuerpo) + Catch ex As Exception + Retorno = False + OnError("Ocurrió un error al enviar el correo", ex) + End Try + Else + Retorno = False + End If + + Return Retorno + End Function + + + + Public Function ImprimirPDFCrystal(RutaReporte As String, DataSource As DataTable, Parametros As List(Of CrystalParametro), Optional NombreArchivo As String = "Reporte", Optional Formato As String = "PDF", Optional MR As ReportDocument = Nothing) As Byte() + 'limpio ReportViwer + Dim sw As New System.Diagnostics.Stopwatch() + sw.Start() + If IsNothing(MR) Then MR = New ReportDocument() + Dim Bytes As Byte() = Nothing + Dim formatType As ExportFormatType = ExportFormatType.NoFormat + Try + MR.Load(RutaReporte) + MR.SetDataSource(DataSource) + + For Each item As CrystalParametro In Parametros + MR.SetParameterValue(item.Nombre, item.Valor) + Next + + Select Case Formato + Case "PDF" + formatType = ExportFormatType.PortableDocFormat + 'Format = "Application/pdf" + Case "EXCEL" + formatType = ExportFormatType.Excel + 'Format = "application/ms-excel" + End Select + Dim Stream As IO.Stream = MR.ExportToStream(formatType) + Dim BD As New BinaryReader(MR.ExportToStream(formatType)) + Bytes = BD.ReadBytes(CInt(MR.ExportToStream(formatType).Length)) + BD.Dispose() + Stream.Dispose() + 'Dim Buffer(CInt(Stream.Length)) As Byte + 'Bytes = Buffer + 'MR.ExportToHttpResponse(formatType, Response, True, NombreArchivo) + Catch ex As CrystalReportsException + GuardaLog(If(ex.InnerException IsNot Nothing AndAlso ex.Message IsNot Nothing, + $"Error: {If(ex.InnerException.Message, ex.Message)} | Descripcion: {If(ex.InnerException IsNot Nothing AndAlso ex.InnerException.InnerException IsNot Nothing AndAlso ex.InnerException.InnerException.Message IsNot Nothing, + ex.InnerException.InnerException.Message, If(ex.InnerException IsNot Nothing AndAlso ex.InnerException.Message IsNot Nothing, ex.InnerException.Message, "Sin descripcion"))} Ruta {RutaReporte}", $"Sin descripción - Ruta {RutaReporte}")) + 'HAY QUE VALIDAR QUE LOS OBJETOS QUE SE USAN PARA GUARDAR LOG EXISTEN!!! IPP 14 AGOSTO 2017 + 'GuardaLog($"Error: {ex.InnerException.Message} | Descripcion: {If(ex.InnerException.InnerException IsNot Nothing, ex.InnerException.InnerException.Message, "Sin descripcion")} - Ruta {RutaReporte}") + Catch ex As Exception + GuardaLog(If(ex.InnerException IsNot Nothing AndAlso ex.Message IsNot Nothing, + $"Error: {If(ex.InnerException.Message, ex.Message)} | Descripcion: {If(ex.InnerException IsNot Nothing AndAlso ex.InnerException.InnerException IsNot Nothing AndAlso ex.InnerException.InnerException.Message IsNot Nothing, + ex.InnerException.InnerException.Message, If(ex.InnerException IsNot Nothing AndAlso ex.InnerException.Message IsNot Nothing, ex.InnerException.Message, "Sin descripcion"))} Ruta {RutaReporte}", $"Sin descripción - Ruta {RutaReporte}")) + + 'HAY QUE VALIDAR QUE LOS OBJETOS QUE SE USAN PARA GUARDAR LOG EXISTEN!!! IPP 14 AGOSTO 2017 + 'GuardaLog($"Error {ex.InnerException.Message} | Descripcion: {If(ex.InnerException.InnerException IsNot Nothing, ex.InnerException.InnerException.Message, "Sin descripcion")} - Ruta {RutaReporte}") + End Try + sw.Stop() + If sw.Elapsed.TotalSeconds > 10 Then + GuardaLog($"Reporte:{RutaReporte} | Tiempo Renderizado Milisegundos: {sw.ElapsedMilliseconds},Total Segundos: {sw.Elapsed.TotalSeconds} ") + End If + If MR IsNot Nothing Then MR.Dispose() + Return Bytes + End Function + + Private Function MandaCorreo(File As Byte(), Para As String, Asunto As String, Body As String) As Boolean + + Dim a As String = String.Format("{0} -- {1} ---- -->", Asunto, Para) + 'a.GuardaLog() + Dim Mail As New ClsSisMail() + + Dim LSRutasMail As New List(Of ClsSisMail.ArchivoMail) + LSRutasMail.Add(New ClsSisMail.ArchivoMail With {.ArchivoBinario = File, .NombreArchivo = "EstadoDeCuenta.pdf"}) + + Return Mail.SendMail(ClsPaginas.EmpresaNotificaciones, Para, Asunto, Body, Archivos:=LSRutasMail) + End Function +#End Region + End Class \ No newline at end of file diff --git a/Compras/Compras.aspx.vb b/Compras/Compras.aspx.vb index 24ceab07b..86936d8b7 100644 --- a/Compras/Compras.aspx.vb +++ b/Compras/Compras.aspx.vb @@ -6639,10 +6639,10 @@ Partial Class Compras_Compras IdCtaContable = CtaProveedorExtranjera CveCuenta = CveCuentaProveedorExtranjera - If ObjConta.AddPrePolizasDetalle(CvePrePolizaTemp, False, importeMovimientoNC, Referencia, 17, Concepto, FechaMovimiento, IdCtaContable, -1, CveCompra:=Gvr.DataKey("CveCompra").ToEntero, CveProveedor:=CveProveedorConcepto, CveAcreedor:=CveAcreedor, CvePersonal:=CvePersonal, CveColectiva:=CveColectiva, CveCreditoDetalle:=CveCreditoDetalle, ImporteMX:=importeMovimientoNC, ImporteME:=importeMovimientoNC, TipoCambio:=TipoCambioFactura, CveCuenta:=CveCuenta, Contabilizable:=SeContabiliza) Then + If ObjConta.AddPrePolizasDetalle(CvePrePolizaTemp, False, importeMovimientoNC, Referencia, 272, Concepto, FechaMovimiento, IdCtaContable, -1, CveCompra:=Gvr.DataKey("CveCompra").ToEntero, CveProveedor:=CveProveedorConcepto, CveAcreedor:=CveAcreedor, CvePersonal:=CvePersonal, CveColectiva:=CveColectiva, CveCreditoDetalle:=CveCreditoDetalle, ImporteMX:=importeMovimientoNC, ImporteME:=importeMovimientoNC, TipoCambio:=TipoCambioFactura, CveCuenta:=CveCuenta, Contabilizable:=SeContabiliza, CveCompraAmortizacion:=CveCompra) Then IdCtaContable = CtaProveedorComplementaria CveCuenta = CveCuentaProveedorComplementaria - If Not ObjConta.AddPrePolizasDetalle(CvePrePolizaTemp, False, importeMNNC - importeMovimientoNC, Referencia, 206, Concepto, FechaMovimiento, IdCtaContable, -1, CveCompra:=Gvr.DataKey("CveCompra").ToEntero, CveProveedor:=CveProveedorConcepto, CveAcreedor:=CveAcreedor, CvePersonal:=CvePersonal, CveColectiva:=CveColectiva, CveCreditoDetalle:=CveCreditoDetalle, ImporteMX:=importeMNNC - importeMovimientoNC, ImporteME:=importeMovimientoNC, TipoCambio:=TipoCambioFactura, CveCuenta:=CveCuenta, Contabilizable:=SeContabiliza) Then + If Not ObjConta.AddPrePolizasDetalle(CvePrePolizaTemp, False, importeMNNC - importeMovimientoNC, Referencia, 206, Concepto, FechaMovimiento, IdCtaContable, -1, CveCompra:=Gvr.DataKey("CveCompra").ToEntero, CveProveedor:=CveProveedorConcepto, CveAcreedor:=CveAcreedor, CvePersonal:=CvePersonal, CveColectiva:=CveColectiva, CveCreditoDetalle:=CveCreditoDetalle, ImporteMX:=importeMNNC - importeMovimientoNC, ImporteME:=importeMovimientoNC, TipoCambio:=TipoCambioFactura, CveCuenta:=CveCuenta, Contabilizable:=SeContabiliza, CveCompraAmortizacion:=CveCompra) Then ErrorPrepoliza = True Exit For End If diff --git a/Compras/eFacturas.aspx.vb b/Compras/eFacturas.aspx.vb index ef2355aba..6b8ec27dc 100644 --- a/Compras/eFacturas.aspx.vb +++ b/Compras/eFacturas.aspx.vb @@ -111,9 +111,16 @@ Partial Class Compras_eFacturas End Set End Property - Private Property Serie() As String + Private Property Serie() As String + Get - Return m_Serie + If m_Serie Is Nothing Then + Return "" + Else + Return m_Serie + End If + + End Get Set m_Serie = Value @@ -2535,15 +2542,80 @@ Partial Class Compras_eFacturas BtnOcultar.Visible = False BtnMostrar.Visible = True UpBitacora.Update() - End Sub - + End Sub + #End Region - - + + + Property MSGComplemento As String + Get + If ViewState("MSGComplemento") Is Nothing Then + Return "" + Else + Return ViewState("MSGComplemento").ToString + End If + End Get + Set(value As String) + ViewState("MSGComplemento") = value + End Set + End Property + + Property ViculacionConPUE As Boolean + Get + If ViewState("ViculacionConPUE") Is Nothing Then + Return False + Else + Return Boolean.Parse(ViewState("ViculacionConPUE").ToString) + End If + End Get + Set(value As Boolean) + ViewState("ViculacionConPUE") = value + End Set + End Property + + + Property ListaComprasPUE As List(Of Integer) + Get + If ViewState("ListaComprasPUE") Is Nothing Then + Return New List(Of Integer) + Else + Return DirectCast(ViewState("ListaComprasPUE"), List(Of Integer)) + End If + End Get + Set(value As List(Of Integer)) + ViewState("ListaComprasPUE") = value + End Set + End Property + + + Property ComplementoConPUE As String + Get + If ViewState("ComplementoConPUE") Is Nothing Then + Return "" + Else + Return ViewState("ComplementoConPUE").ToString + End If + End Get + Set(value As String) + ViewState("ComplementoConPUE") = value + End Set + End Property + + #Region "V I N C U L A R P A G O" - + Protected Sub LnkAgregarPago_Click(sender As Object, e As EventArgs) + + MSGComplemento = "" + ViculacionConPUE = False + ListaComprasPUE.Clear() + ComplementoConPUE = "" + + + Dim ListaComprasPUEInterna As New List(Of Integer) + + Dim gvRow As GridViewRow = DirectCast((DirectCast(sender, LinkButton)).NamingContainer, GridViewRow) Dim CveComplementoPagoCompra As Integer = gvRow.DataKey("CveComplementoPagoCompra").ToString.ToEntero @@ -2567,9 +2639,10 @@ Partial Class Compras_eFacturas Dim DiferenciaImportes As Double = 0 Dim TextoDiferenciaImporte As String = "" Dim FechaPago As Date - Dim PagosCantidad As Integer = 0 - Dim MSGComplemento As String = "" - + Dim PagosCantidad As Integer = 0 + + + Dim XMLDoc As New XmlDocument Dim Archivo As String = String.Format("{0}Empresas\{1}\Compras\{2}\{3}", AppDomain.CurrentDomain.BaseDirectory, UsuarioActual.CveEmpresa, gvRow.DataKey("RFCDe"), gvRow.DataKey("XML")) If IO.File.Exists(Archivo) Then @@ -2724,9 +2797,12 @@ Partial Class Compras_eFacturas For Each dRow2 As DataRow In DTDocumentosRelacionados.Rows If dRow2("CveMetodoPago").ToString.ToEntero > 0 Then If dRow2("CveMetodoPago").ToString.ToEntero = 1 Then - MSGComplemento = MSGComplemento & $" Compra {dRow2("SerieFolioCompra").ToString } bloqueado Tipo ""PUE"". " + ListaComprasPUEInterna.Add(dRow2("CveCompra").ToString.ToEntero) + + ComplementoConPUE = $"{SeriePago}-{FolioPago}" + End If End If Next @@ -2776,8 +2852,10 @@ Partial Class Compras_eFacturas Next - If MSGComplemento.Trim.Length > 0 Then - BtnVincularPago.Visible = False + If MSGComplemento.Trim.Length > 0 Then + + ' BtnVincularPago.Visible = False + ViculacionConPUE = True End If @@ -2820,8 +2898,11 @@ Partial Class Compras_eFacturas GvVincularPago.DataBind() - UpVincularPago.Update() - + UpVincularPago.Update() + + + ListaComprasPUE = ListaComprasPUEInterna + RegistraScript("$('#ModalVincularPago').modal('show')", "VincularPagoModalShow") End Sub @@ -2858,14 +2939,30 @@ Partial Class Compras_eFacturas TieneError = True End If - If Not TieneError Then - - + If Not TieneError Then + + Dim objEventos As New ClsOIEventos(ObjCompra.IniciaTransacSQL) + + If ViculacionConPUE Then + + + + + For Each CveCompraVinculada In ListaComprasPUE + + objEventos.AddEventoBitacora($"Complemento { ComplementoConPUE } vinculado manualmente (Compra PUE) ", "", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveCompra:=CveCompraVinculada) + Next + + + + End If + + ObjCompra.Commit() Alert("El pago fue vinculado correctamente", TipoMensaje.MsgInformacion) - RegistraScript("$('#ModalVincularPago').modal('hide')", "VincularPagoModalHide") - CargaDatos() + RegistraScript("$('#ModalVincularPago').modal('hide')", "VincularPagoModalHide") + CargaDatos() Else ObjCompra.RollBack() Alert("Ocurrió un error al vincular el pago. Por favor verifique y vuelva a intentar", TipoMensaje.MsgError) diff --git a/Contabilidad2/RepMovimientosAuxiliaresCatalogo.aspx b/Contabilidad2/RepMovimientosAuxiliaresCatalogo.aspx index 3719f257d..5d76ce0f0 100644 --- a/Contabilidad2/RepMovimientosAuxiliaresCatalogo.aspx +++ b/Contabilidad2/RepMovimientosAuxiliaresCatalogo.aspx @@ -151,6 +151,7 @@ Número Concepto Referencia + SubProyecto Cargos Abonos Saldo @@ -194,6 +195,9 @@ + + + diff --git a/Contabilidad2/Reportes/RepMovimientosAuxiliaresCatalogo.rdlc b/Contabilidad2/Reportes/RepMovimientosAuxiliaresCatalogo.rdlc index 4629da5f0..330f53bdd 100644 --- a/Contabilidad2/Reportes/RepMovimientosAuxiliaresCatalogo.rdlc +++ b/Contabilidad2/Reportes/RepMovimientosAuxiliaresCatalogo.rdlc @@ -15,11 +15,14 @@ 1.49458cm - 7.13431cm + 4.81952cm 1.99729cm + + 2.3148cm + 2.10313cm @@ -149,11 +152,12 @@ 2pt - 3 + 4 + @@ -387,6 +391,44 @@ + + + + true + true + + + + + Subproyecto + + + + + + + Black + + 1pt + + 2pt + 2pt + 2pt + 2pt + + + + @@ -605,10 +647,11 @@ 2pt - 2 + 3 + @@ -844,6 +887,38 @@ + + + + true + true + + + + + =Fields!SubProyecto.Value + + + + + + 2pt + 2pt + 2pt + 2pt + + + + @@ -1053,6 +1128,40 @@ + + + + true + true + + + + + + + + + + + + Textbox12 + + + 2pt + 2pt + 2pt + 2pt + + + + @@ -1172,6 +1281,7 @@ + @@ -1208,9 +1318,9 @@ true DataSet1 - 0.06348cm + 0.06346cm 3cm - 20.37043cm + 20.37044cm @@ -1221,7 +1331,7 @@ 1.2061in