347 lines
14 KiB
VB.net
347 lines
14 KiB
VB.net
Option Explicit On
|
|
Option Strict On
|
|
|
|
Imports System.Activities.Expressions
|
|
Imports System.Data
|
|
Imports DocumentFormat.OpenXml.Office.CustomUI
|
|
Imports Extensiones
|
|
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
|
|
End Sub
|
|
|
|
Protected Sub CargaDatos()
|
|
|
|
DatosGV = New DataTable
|
|
|
|
Dim Opcion As Integer = 1
|
|
Dim FechaInicio As Date = MinFecha
|
|
Dim FechaFin As Date = MaxFecha
|
|
|
|
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) 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) 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
|
|
|
|
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.FiltraParametros($" CveVendedor = {UsuarioActual.CveVendedor}")
|
|
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
|
|
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
|
|
|
|
|
|
|
|
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
|
|
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, 0) 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
|
|
|
|
Dim Obs As String = drt("Observacion").ToString
|
|
|
|
If (drt("CantidadOrg").ToString.ToEntero > 0 Or drt("CvePSOrg").ToString.ToEntero > 0) AndAlso (drt("CvePS").ToString.ToEntero <> drt("CvePSOrg").ToString.ToEntero Or drt("Cantidad").ToString.ToDecimal <> drt("CantidadOrg").ToString.ToDecimal) Then
|
|
Obs = $"{Obs} - Cantidad Original: {drt("CantidadOrg").ToString.ToDecimal.ToString("###,###,###.00")}, Producto Original: {drt("CodigoPSOrg").ToString}"
|
|
End If
|
|
|
|
If Not ObjFactura.AgregarPS(tCvePSEnvio, 1, drt("GastosEnvio").ToString.ToDecimal, 0, Obs, 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("<a href = '/Ventas/Ventas.aspx?CveVenta={0}' class='Texto'>{1}</a><br/>", 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: <br/>" & StrAlerta.ToString)
|
|
CargaDatos()
|
|
Else
|
|
ObjA.RollBack()
|
|
End If
|
|
|
|
End Sub
|
|
End Class
|