Option Explicit On Option Strict On Imports System.Activities.Expressions Imports System.Data Imports DocumentFormat.OpenXml.Office.CustomUI Imports Extensiones Imports Microsoft.Reporting.WebForms Partial Class Ventas_RepPedidosSTF Inherits ClsPaginas Public Property DTProductosEdicion As DataTable Get If ViewState("DTProductosEdicion") Is Nothing Then ViewState("DTProductosEdicion") = New DataTable End If Return DirectCast(ViewState("DTProductosEdicion"), DataTable) End Get Set(value As DataTable) ViewState("DTProductosEdicion") = value End Set End Property Public Property DatosGV As DataTable Get If ViewState("DatosGV") Is Nothing Then ViewState("DatosGV") = New DataTable End If Return DirectCast(ViewState("DatosGV"), DataTable) End Get Set(value As DataTable) ViewState("DatosGV") = value End Set End Property Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load If Not IsPostBack Then CargaCombos() CargaProductosEdicion() End If End Sub Private Sub CargaCombos() txtFechaI.Text = NowADS.FirstDayOfMonth.ToShortDateString txtFechaF.Text = NowADS.LastDayOfMonth.ToShortDateString CargarCentrosDeCosto(DdlProyecto, DdlSubProyecto, LblProyecto, LblSubProyecto, divProyecto:=DivProyecto) 'Vendedor DdlVendedor.DataSource = GlobalDTVendedores(UsuarioActual.CveEmpresa, VendedorTipo:=-1).FiltraParametros("VendedorTipo in (1,4)") 'vendedores y vendedores de piso DdlVendedor.DataBind() DdlVendedor.Items.Insert(0, New ListItem("Todos", "-1")) DdlVendedor.Items.Insert(1, New ListItem("Sin Vendedor", "-2")) If UsuarioActual.CveVendedor > 0 Then DdlVendedor.SelectedValueExist(UsuarioActual.CveVendedor) DdlVendedor.Enabled = False End If DdlClientes.setEsWebService(True) End Sub Protected Sub CargaDatos() LnkImprimirPedidos.Visible = False LnkImprimirPedidosExcel.Visible = False DatosGV = New DataTable Dim Opcion As Integer = 1 Dim FechaInicio As Date = MinFecha Dim FechaFin As Date = MaxFecha Dim tCveCliente As Integer = DdlClientes.SelectedValue.ToEntero LnkImprimirPedidos.Visible = False DatosGV = New DataTable If TabG.ActiveTabIndex = 1 Then ' entregados Opcion = 2 FechaInicio = txtFechaI.Text.ToDate FechaFin = txtFechaF.Text.ToDate Dim ObjVentas As New ClsVentas If ObjVentas.GetRepPedidosSTF(DdlSubProyecto.SelectedValue.ToEntero, DdlVendedor.SelectedValue.ToEntero, UsuarioActual.CveEmpresa, Opcion, FechaInicio, FechaFin, tCveCliente) Then GvE.DataSource = ObjVentas.DtResultados End If ObjVentas.Dispose() GvE.DataBind() Else FechaInicio = txtFechaI.Text.ToDate FechaFin = txtFechaF.Text.ToDate Dim ObjVentas As New ClsVentas If ObjVentas.GetRepPedidosSTF(DdlSubProyecto.SelectedValue.ToEntero, DdlVendedor.SelectedValue.ToEntero, UsuarioActual.CveEmpresa, Opcion, FechaInicio, FechaFin, tCveCliente) Then DatosGV = ObjVentas.DtResultados DatosGV.Columns.Add("CantidadOrg", GetType(Decimal)) DatosGV.Columns.Add("CvePSOrg", GetType(Integer)) DatosGV.Columns.Add("CodigoPSOrg", GetType(String)) GvDatos.DataSource = DatosGV If DatosGV IsNot Nothing AndAlso DatosGV.Rows.Count > 0 Then LnkImprimirPedidos.Visible = True LnkImprimirPedidosExcel.Visible = True End If End If ObjVentas.Dispose() GvDatos.DataBind() End If End Sub Private Sub CargaProductosEdicion() DTProductosEdicion = New DataTable Dim ObjVentas As ClsVentas = New ClsVentas() If ObjVentas.GetPSSubProyectosVendedores(UsuarioActual.CveEmpresa) Then DTProductosEdicion = ObjVentas.DtResultados 'If UsuarioActual.CveRol = 1 Then ' DTProductosEdicion = ObjVentas.DtResultados.FiltraParametros("", "CodigoPS", {"CvePS", "CodigoPS", "Precio"}) 'Else ' DTProductosEdicion = ObjVentas.DtResultados.FiltraParametros($" CveVendedor = {UsuarioActual.CveVendedor}") 'End If End If ObjVentas.Dispose() End Sub 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.DBCampo("CveVendedor") = "" OrElse e.Row.DBCampo("CvePS") = "" Then e.Row.FCCheckBox("Chk").InputAttributes.Add("onclick", $"seleccionVenta('{e.Row.FCCheckBox("Chk").ClientID}','{e.Row.DataKey("CveVenta")}')") e.Row.FCLinkButton("imgE").Visible = False Else e.Row.FCCheckBox("Chk").InputAttributes.Add("class", e.Row.DataKey("CveVenta")) End If If e.Row.DBCampo("TipoRenglon") = "1" Then e.Row.CssClass = "SubTotales" End If If e.Row.RowState = DataControlRowState.Edit OrElse e.Row.RowState = 5 Then If e.Row.DBCampo("CveVendedor") = "" OrElse e.Row.DBCampo("CvePS") = "" Then Else e.Row.FCDropDownList("DdlPS").DataSource = DTProductosEdicion.FiltraParametros($"CveVendedor = {e.Row.DataKey("CveVendedor")}") e.Row.FCDropDownList("DdlPS").DataBind() e.Row.FCDropDownList("DdlPS").SelectedValueExist(e.Row.DBCampo("CvePS")) End If End If End Sub Protected Sub GvDatos_RowEditing(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewEditEventArgs) Handles GvDatos.RowEditing GvDatos.EditIndex = e.NewEditIndex CargaGvDatos() End Sub Protected Sub GvDatos_RowCancelingEdit(sender As Object, e As System.Web.UI.WebControls.GridViewCancelEditEventArgs) Handles GvDatos.RowCancelingEdit GvDatos.EditIndex = -1 CargaGvDatos() End Sub Protected Sub GvDatos_RowUpdating(sender As Object, e As System.Web.UI.WebControls.GridViewUpdateEventArgs) Handles GvDatos.RowUpdating Dim Cantidad As Decimal = GvDatos.Rows(e.RowIndex).FCTextBox("TxtCantidad").Text.ToDecimal Dim CvePSNuevo As Integer = GvDatos.Rows(e.RowIndex).FCDropDownList("DdlPS").SelectedValue.ToEntero Dim PSNuevo As String = GvDatos.Rows(e.RowIndex).FCDropDownList("DdlPS").SelectedItem.Text Dim PU As Decimal = DTProductosEdicion.FiltroPrimeroValor("Precio", $"CvePS = {CvePSNuevo}").ToDecimal If Not CvePSNuevo > 0 Then Alert("Producto no encontrado.", TipoMensaje.MsgAdvertencia) Exit Sub End If If Not Cantidad > 0 Then Alert("Debe especificar la cantidad.", TipoMensaje.MsgAdvertencia) Exit Sub End If If Not PU > 0 Then Alert("El precio del producto no puede ser 0.", TipoMensaje.MsgAdvertencia) Exit Sub End If Dim CvPSOrg As Integer = DatosGV.Rows(GvDatos.EditIndex)("CvePSOrg").ToString.ToEntero Dim CantidadOrg As Decimal = DatosGV.Rows(GvDatos.EditIndex)("CantidadOrg").ToString.ToDecimal If Not (CvPSOrg > 0 Or CantidadOrg > 0) Then DatosGV.Rows(GvDatos.EditIndex)("CantidadOrg") = GvDatos.Rows(GvDatos.EditIndex).DataKey("Cantidad") DatosGV.Rows(GvDatos.EditIndex)("CvePSOrg") = GvDatos.Rows(GvDatos.EditIndex).DataKey("CvePS") DatosGV.Rows(GvDatos.EditIndex)("CodigoPSOrg") = GvDatos.Rows(GvDatos.EditIndex).DataKey("CodigoPS") End If DatosGV.Rows(GvDatos.EditIndex)("Cantidad") = Cantidad DatosGV.Rows(GvDatos.EditIndex)("CvePS") = CvePSNuevo DatosGV.Rows(GvDatos.EditIndex)("CodigoPS") = PSNuevo DatosGV.Rows(GvDatos.EditIndex)("PU") = PU DatosGV.AcceptChanges() GvDatos.EditIndex = -1 GvDatos.DataSource = DatosGV GvDatos.DataBind() UPDatos.Update() End Sub Private Sub CargaGvDatos() GvDatos.DataSource = DatosGV GvDatos.DataBind() UPDatos.Update() End Sub Protected Sub BtnConsultar_Click(sender As Object, e As EventArgs) CargaDatos() UPDatos.Update() End Sub Protected Sub BtnEntregar_Click(sender As Object, e As EventArgs) 'validar que están seleccionados Dim TmpDTRemis As New DataTable TmpDTRemis.Columns.Add("CveVentaDetalle", GetType(Integer)) TmpDTRemis.Columns.Add("CveCliente", GetType(Integer)) TmpDTRemis.Columns.Add("CveSubProyecto", GetType(Integer)) TmpDTRemis.Columns.Add("CvePS", GetType(Integer)) TmpDTRemis.Columns.Add("Cantidad", GetType(Decimal)) TmpDTRemis.Columns.Add("CveUnidadMedida", GetType(Integer)) TmpDTRemis.Columns.Add("PU", GetType(Decimal)) TmpDTRemis.Columns.Add("CveVendedor", GetType(Decimal)) TmpDTRemis.Columns.Add("GastosEnvio", GetType(Decimal)) TmpDTRemis.Columns.Add("Observacion", GetType(String)) TmpDTRemis.Columns.Add("CantidadOrg", GetType(Decimal)) TmpDTRemis.Columns.Add("CvePSOrg", GetType(Integer)) TmpDTRemis.Columns.Add("CodigoPSOrg", GetType(String)) 'agruparo por cliente For Each gvr As GridViewRow In GvDatos.Rows If gvr.DataKey("CveVendedor").ToEntero > 0 AndAlso gvr.DataKey("CvePS").ToEntero > 0 AndAlso gvr.FCCheckBox("chk").Checked Then Dim drp As DataRow = TmpDTRemis.NewRow drp("CvePS") = gvr.DataKey("CvePS").ToEntero drp("Cantidad") = gvr.DataKey("Cantidad").ToDecimal drp("PU") = gvr.DataKey("PU").ToDecimal drp("CveUnidadMedida") = gvr.DataKey("CveUnidadMedida").ToEntero drp("CveSubProyecto") = gvr.DataKey("CveSubProyecto").ToEntero drp("CveCliente") = gvr.DataKey("CveCliente").ToEntero drp("CveVendedor") = gvr.DataKey("CveVendedor").ToEntero drp("CveVentaDetalle") = gvr.DataKey("CveVentaDetalle").ToEntero drp("GastosEnvio") = gvr.DataKey("GastosEnvio").ToDecimal drp("Observacion") = gvr.DataKey("SerieFolio") drp("CantidadOrg") = gvr.DataKey("CantidadOrg").ToDecimal drp("CvePSOrg") = gvr.DataKey("CvePSOrg").ToEntero drp("CodigoPSOrg") = gvr.DataKey("CodigoPSOrg") TmpDTRemis.Rows.Add(drp) End If Next Dim DTDeriesFolio As DataTable = TmpDTRemis.FiltraParametros("", "", {"Observacion"}) Dim Observaciones As String = "" Dim lista As New List(Of String) For Each drow As DataRow In DTDeriesFolio.Rows lista.Add(drow("Observacion").ToString) Next Observaciones = String.Join(", ", lista) If TmpDTRemis IsNot Nothing AndAlso TmpDTRemis.Rows.Count = 0 Then Alert("No se ha seleccionado ninguna partida, favor de seleccionar", TipoMensaje.MsgAdvertencia) Exit Sub End If Dim ObjA As New ClsInventarios ObjA.IniciaTransacSQL() Dim TieneError As Boolean = False Dim StrAlerta As New StringBuilder For Each drt As DataRow In TmpDTRemis.FiltraParametros("", DistinctColumns:={"CveCliente", "CveSubProyecto", "CveVendedor", "GastosEnvio"}).Rows Dim ObjFactura As Modelos.Factura = Modelos.Factura.CrearVentaNueva(UsuarioActual, drt("CveSubProyecto").ToString.ToEntero, drt("CveCliente").ToString.ToEntero, 1, "Rem") ObjFactura.CveVendedor = drt("CveVendedor").ToString.ToEntero ObjFactura.Observaciones = Observaciones For Each dr As DataRow In TmpDTRemis.FiltraParametros($"CveCliente ={drt("CveCliente")} AND CveVendedor = {drt("CveVendedor")} AND CveSubProyecto = {drt("CveSubProyecto")}").Rows If ObjFactura IsNot Nothing Then Dim Obs As String = dr("Observacion").ToString If (dr("CantidadOrg").ToString.ToEntero > 0) AndAlso (dr("Cantidad").ToString.ToDecimal <> dr("CantidadOrg").ToString.ToDecimal) Then Obs = $"{Obs}, Cantidad Original: {dr("CantidadOrg").ToString.ToDecimal.ToString("###,###,###.00")}" End If If (dr("CvePSOrg").ToString.ToEntero > 0) AndAlso (dr("CvePS").ToString.ToEntero <> dr("CvePSOrg").ToString.ToEntero) Then Obs = $"{Obs}, Producto Original: {dr("CodigoPSOrg").ToString}" End If If Not ObjFactura.AgregarPS(dr("CvePS").ToString.ToEntero, dr("Cantidad").ToString.ToDecimal, dr("PU").ToString.ToDecimal, 0, Obs, CveSubProyecto:=dr("CveSubProyecto").ToString.ToEntero, CveVentaDetallePadre:=dr("CveVentaDetalle").ToString.ToEntero) Then Alert("Error al agregar producto", TipoMensaje.MsgAdvertencia) TieneError = True Exit For Else If Not ObjA.UpdateEstatusAlmacen(dr("CveVentaDetalle").ToString.ToEntero, 1) Then TieneError = True End If End If End If Next If drt("GastosEnvio").ToString.ToDecimal > 0 Then Dim tCvePSEnvio As Integer = UsuarioActual.Empresa.Funcionalidad(160).ToEntero If Not ObjFactura.AgregarPS(tCvePSEnvio, 1, drt("GastosEnvio").ToString.ToDecimal, 0, "", CveSubProyecto:=drt("CveSubProyecto").ToString.ToEntero) Then TieneError = True End If End If If Not TieneError Then ObjFactura.CalculaTotales() Dim Resp As New Modelos.Factura.MMensajeFactura Resp = ObjFactura.EmitirFactura(False, Transac:=ObjA.IniciaTransacSQL) If Resp.CveVenta > 0 Then Dim a As String = "a" StrAlerta.AppendFormat("{1}
", Resp.CveVenta, Resp.SerieFolio) 'Respuesta.CveVenta = Resp.CveVenta 'Respuesta.SerieFolio = Resp.SerieFolio 'Respuesta.dtdetalle = TmpDTMat Else TieneError = True End If End If Next If Not TieneError Then ObjA.Commit() Alert("Se registraron las siguientes remisiones:
" & StrAlerta.ToString) CargaDatos() Else ObjA.RollBack() End If End Sub Protected Sub LnkImprimirPedidos_Click(sender As Object, e As EventArgs) ImprimirReporte("PDF") End Sub Protected Sub LnkImprimirPedidosExcel_Click(sender As Object, e As EventArgs) ImprimirReporte("Excel") End Sub Private Sub ImprimirReporte(Formato As String) Dim FechaI As String = txtFechaI.Text Dim FechaF As String = txtFechaF.Text If txtFechaI.Text = "" Then FechaI = "-1" If txtFechaF.Text = "" Then FechaF = "-1" Dim Sucursal As String = If(DdlSubProyecto.SelectedValue = "-1", "", $" Sucursal: {DdlSubProyecto.SelectedItem.Text}") Dim Vendedor As String = If(DdlVendedor.SelectedValue = "-1", "", $" Vendedor: {DdlVendedor.SelectedItem.Text}") Dim FechaIn As String = If(txtFechaI.Text = "", "", $" Fecha Inicio: {txtFechaI.Text}") Dim FechaFn As String = If(txtFechaF.Text = "", "", $" Fecha Fin: {txtFechaF.Text}") Dim TituloReporte As String = "Reporte de Pedidos" If DatosGV.Rows.Count > 0 Then Dim Archivo As New System.IO.FileInfo(String.Format("{0}Formatos/RepProveedorCxP.rpt", UsuarioActual.Empresa.Ruta)) Dim Imagen As New System.IO.FileInfo(String.Format("{0}/Logo.png", UsuarioActual.Empresa.Ruta)) 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", NowADS().ToDateTime.ToShortDateString)) params.Add(New ReportParameter("TituloReporte", TituloReporte)) params.Add(New ReportParameter("AgrupadoPor", $" {Sucursal}{Vendedor}{FechaIn}{FechaFn}")) If Imagen.Exists Then ''POR EMPRESA params.Add(New ReportParameter("LogoPath", $"file://{Imagen.FullName}")) Else params.Add(New ReportParameter("LogoPath", "")) End If ImprimirPDF("Empresas/Grales/Formatos/RepPedidos.rdlc", DatosGV, params, "ReportePedidos", Formato) Else Alert("No hay datos consultados", TipoMensaje.MsgAdvertencia) End If End Sub Protected Sub BtnEditarHorariosPedidos_Click(sender As Object, e As EventArgs) Dim objSisEmpresas As New ClsSisEmpresas If objSisEmpresas.UpdateEmpresaFuncionalidad(546, $"{TxtHorarioDe.Text}|{TxtHorarioA.Text}", UsuarioActual.CveEmpresa) Then If objSisEmpresas.GetEmpresasFuncionalidades(UsuarioActual.CveEmpresa) Then Dim dttmp As Data.DataTable = objSisEmpresas.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 UsuarioActual.Empresa.SetFuncionalidades(EmpresasFuncionalidades) End If Alert("Guardado correctamente.") RegistraScript("$('#divHorariosPedidos').modal('hide');") End If objSisEmpresas.Dispose() End Sub Protected Sub BtnHorariosPedidos_Click(sender As Object, e As EventArgs) Dim objSisEmpresas As New ClsSisEmpresas If objSisEmpresas.GetEmpresasFuncionalidades(UsuarioActual.CveEmpresa) Then Dim dttmp As Data.DataTable = objSisEmpresas.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 UsuarioActual.Empresa.SetFuncionalidades(EmpresasFuncionalidades) End If objSisEmpresas.Dispose() TxtHorarioDe.Text = UsuarioActual.Empresa.Funcionalidad(546).Split("|"c)(0) TxtHorarioA.Text = UsuarioActual.Empresa.Funcionalidad(546).Split("|"c)(1) UpBodyHorariosPedidos.Update() RegistraScript("$('#divHorariosPedidos').modal({ backdrop: 'static', keyboard: false});") End Sub End Class