275 lines
12 KiB
VB.net
275 lines
12 KiB
VB.net
Option Explicit On
|
|
Option Strict On
|
|
|
|
Imports System.Data
|
|
Imports Extensiones
|
|
Partial Class Ventas_FacturacionGlobal
|
|
Inherits ClsPaginas
|
|
Private Property CveSubProyecto As Integer
|
|
Get
|
|
Return If(IsNothing(ViewState("CveSubProyecto")), -1, ViewState("CveSubProyecto").ToString().ToEntero())
|
|
End Get
|
|
Set(value As Integer)
|
|
ViewState("CveSubProyecto") = value
|
|
End Set
|
|
End Property
|
|
|
|
Private Property DtRemisiones As DataTable
|
|
Get
|
|
Return If(IsNothing(ViewState("DtRemisiones")), Nothing, CType(ViewState("DtRemisiones"), DataTable))
|
|
End Get
|
|
Set(value As DataTable)
|
|
ViewState("DtRemisiones") = value
|
|
End Set
|
|
End Property
|
|
|
|
Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load
|
|
If Not Page.IsPostBack Then
|
|
CargaCombos()
|
|
End If
|
|
End Sub
|
|
|
|
#Region " C A R G A - D A T O S "
|
|
|
|
Public Sub CargaCombos()
|
|
DdlSubProyecto.DataSource = GlobalDTSubProyectosUsuarios(UsuarioActual.CveUsuario, -1, UsuarioActual.CveEmpresa)
|
|
DdlSubProyecto.DataBind()
|
|
DdlSubProyecto.Items.Insert(0, New ListItem("Seleccione", "-1"))
|
|
|
|
DdlPeriodo.DataSource = GlobalDTGralSATPeriodicidad()
|
|
DdlPeriodo.DataBind()
|
|
DdlPeriodo.Items.Insert(0, New ListItem("Seleccione", "-1"))
|
|
|
|
DdlMes.DataSource = GlobalDTGralSATMeses().FiltraParametros("ISNULL(CveSATPeriodicidad,0) <> 5")
|
|
DdlMes.DataBind()
|
|
DdlMes.Items.Insert(0, New ListItem("Seleccione", "-1"))
|
|
|
|
Dim Anio As Integer = Now.Year
|
|
Dim AnioAnterior As Integer = Now.Year - 1
|
|
|
|
DdlAnio.Items.Add(New ListItem(Anio.ToString(), Anio.ToString()))
|
|
DdlAnio.Items.Add(New ListItem(AnioAnterior.ToString(), AnioAnterior.ToString()))
|
|
|
|
txtFechaI.Text = Now.AddDays(-1).ToString("dd/MM/yyyy")
|
|
txtFechaF.Text = Now.ToString("dd/MM/yyyy")
|
|
|
|
End Sub
|
|
|
|
Protected Sub DdlPeriodo_SelectedIndexChanged(sender As Object, e As EventArgs)
|
|
If DdlPeriodo.SelectedValue = "5" Then
|
|
DdlMes.DataSource = GlobalDTGralSATMeses().FiltraParametros("ISNULL(CveSATPeriodicidad,0) = 5")
|
|
Else
|
|
DdlMes.DataSource = GlobalDTGralSATMeses().FiltraParametros("ISNULL(CveSATPeriodicidad,0) <> 5")
|
|
End If
|
|
DdlMes.DataBind()
|
|
DdlMes.Items.Insert(0, New ListItem("Seleccione", "-1"))
|
|
|
|
UPFiltros.Update()
|
|
End Sub
|
|
|
|
'Private Function CalculaFechas() As MFiltroPeriodicidad
|
|
' Dim Retorno As New MFiltroPeriodicidad()
|
|
' Dim Mes As String = GlobalDTGralSATMeses().FiltroPrimeroValor("Mes", $"CveSATMes = {DdlMes.SelectedValue}")
|
|
|
|
' Select Case DdlPeriodo.SelectedValue
|
|
' Case "1"
|
|
' Retorno.FechaI = DateTime.Now.AddDays(-1).Day.ToString() + "/" + Mes + "/" + DdlAnio.SelectedValue
|
|
' Retorno.FechaF = Retorno.FechaI.ToDate().AddDays(1).ToString("dd/MM/yyyy")
|
|
' Case "2"
|
|
' Retorno.FechaI = DateTime.Now.AddDays(-7).Day.ToString() + "/" + Mes + "/" + DdlAnio.SelectedValue
|
|
' Retorno.FechaF = Retorno.FechaI.ToDate().AddDays(7).ToString("dd/MM/yyyy")
|
|
' Case "3"
|
|
' If DateTime.Now.Day < 16 Then
|
|
' Retorno.FechaI = "01/" + Mes + "/" + DdlAnio.SelectedValue
|
|
' Retorno.FechaF = "15/" + Mes + "/" + DdlAnio.SelectedValue
|
|
' Else
|
|
' Dim LastDayOfMonth = DateTime.DaysInMonth(DdlAnio.SelectedValue.ToEntero(), DdlMes.SelectedValue.ToEntero())
|
|
' Retorno.FechaI = "16/" + Mes + "/" + DdlAnio.SelectedValue
|
|
' Retorno.FechaF = LastDayOfMonth.ToString() + "/" + Mes + "/" + DdlAnio.SelectedValue
|
|
' End If
|
|
' Case "4"
|
|
' Dim LastDayOfMonth = DateTime.DaysInMonth(DdlAnio.SelectedValue.ToEntero(), DdlMes.SelectedValue.ToEntero())
|
|
' Retorno.FechaI = "01/" + Mes + "/" + DdlAnio.SelectedValue
|
|
' Retorno.FechaF = LastDayOfMonth.ToString() + "/" + Mes + "/" + DdlAnio.SelectedValue
|
|
' Case "5"
|
|
' Dim LastDayOfMonth = DateTime.DaysInMonth(DdlAnio.SelectedValue.ToEntero(), DdlMes.SelectedValue.ToEntero())
|
|
' Dim PrimerMes = GlobalDTGralSATMeses().FiltroPrimeroValor("PrimerMes", $"CveSATMes = {DdlMes.SelectedValue}")
|
|
' Dim SegundoMes = GlobalDTGralSATMeses().FiltroPrimeroValor("SegundoMes", $"CveSATMes = {DdlMes.SelectedValue}")
|
|
|
|
' Retorno.FechaI = "01/" + PrimerMes + "/" + DdlAnio.SelectedValue
|
|
' Retorno.FechaF = LastDayOfMonth.ToString() + "/" + SegundoMes + "/" + DdlAnio.SelectedValue
|
|
' End Select
|
|
|
|
' Return Retorno
|
|
'End Function
|
|
|
|
Public Sub CargaDatos()
|
|
Me.CveSubProyecto = -1
|
|
|
|
If UsuarioActual.CveRol = 1 Then
|
|
GvDatos.Columns(7).Visible = True
|
|
End If
|
|
|
|
Dim CveCliente As Integer = -1 'UsuarioActual.Empresa.Funcionalidad(714).ToEntero()
|
|
Dim FechaI = If(IsDate(txtFechaI.Text.Trim()), txtFechaI.Text.Trim(), "-1")
|
|
Dim FechaF = If(IsDate(txtFechaF.Text.Trim()), txtFechaF.Text.Trim(), "-1")
|
|
|
|
Dim ObjVentas As New ClsVentas
|
|
If ObjVentas.GetRepRemisionesSinFacturar(FechaI, FechaF, "-1", DdlSubProyecto.SelectedValue, CveCliente, -1, "-1", UsuarioActual.CveEmpresa, CveUsuarioConsulta:=UsuarioActual.CveUsuario, ConsultaInventario:=False) Then
|
|
DtRemisiones = ObjVentas.DtResultados.FiltraParametros("CveVenta > 0 OR Folio IN ('Total Pesos')")
|
|
Me.CveSubProyecto = DdlSubProyecto.SelectedValue.ToEntero()
|
|
Else
|
|
DtRemisiones = Nothing
|
|
End If
|
|
ObjVentas.Dispose()
|
|
|
|
GvDatos.DataSource = DtRemisiones
|
|
GvDatos.DataBind()
|
|
|
|
UPDatos.Update()
|
|
End Sub
|
|
#End Region
|
|
|
|
Protected Sub BtnConsultar_Click(sender As Object, e As EventArgs)
|
|
CargaDatos()
|
|
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("CveVenta").ToEntero() > 0 Then
|
|
If e.Row.DBCampo("Saldo").ToDecimal() > 0 Then
|
|
e.Row.FCCheckBox("chkDis").Enabled = False
|
|
e.Row.FCCheckBox("chkDis").ToolTip = "No se puede seleccionar esta remisión porque no ha sido pagada"
|
|
Else
|
|
e.Row.FCCheckBox("chkDis").Enabled = True
|
|
e.Row.FCCheckBox("chkDis").CssClass = "ChkAllEvt"
|
|
End If
|
|
Else
|
|
e.Row.FCCheckBox("chkDis").Visible = False
|
|
e.Row.CssClass = "Totales"
|
|
End If
|
|
End If
|
|
End Sub
|
|
|
|
Protected Sub BtnGuardar_Click(sender As Object, e As EventArgs)
|
|
Dim CveCliente As Integer = -1 'UsuarioActual.Empresa.Funcionalidad(714).ToEntero()
|
|
Dim CveMoneda As Integer = 1
|
|
|
|
Dim SbRemisiones As New StringBuilder()
|
|
Dim RemisionesLista As New List(Of Integer)
|
|
|
|
For Each RowRem As GridViewRow In GvDatos.Rows
|
|
If RowRem.RowType = DataControlRowType.DataRow Then
|
|
If RowRem.FCCheckBox("chkDis").Checked Then
|
|
SbRemisiones.AppendFormat("{0},", RowRem.DataKey("CveVenta"))
|
|
RemisionesLista.Add(RowRem.DataKey("CveVenta").ToEntero())
|
|
End If
|
|
End If
|
|
Next
|
|
|
|
If RemisionesLista.Count = 0 Then
|
|
Alert("Debe seleccionar al menos una remisión", TipoMensaje.MsgAdvertencia)
|
|
Exit Sub
|
|
End If
|
|
|
|
SbRemisiones.Remove(SbRemisiones.Length - 1, 1)
|
|
|
|
Dim DtRemisionesPS As New DataTable()
|
|
Dim DtPagosFacturaGlobal As New DataTable()
|
|
|
|
Dim ObjClientes As New ClsClientes
|
|
If ObjClientes.GetVentasRemisionesTotales(CveCliente, SbRemisiones.ToString(), 1) Then
|
|
DtRemisionesPS = ObjClientes.DtResultados.Copy()
|
|
End If
|
|
|
|
If ObjClientes.GetVentasRemisionesPagos(CveCliente, SbRemisiones.ToString()) Then
|
|
DtPagosFacturaGlobal = ObjClientes.DtResultados.Copy()
|
|
End If
|
|
ObjClientes.Dispose()
|
|
|
|
If DtRemisionesPS Is Nothing OrElse DtRemisionesPS.Rows.Count = 0 Then
|
|
Alert("No se pudieron cargar las remsiones para facturar", TipoMensaje.MsgError)
|
|
Exit Sub
|
|
End If
|
|
|
|
If DtPagosFacturaGlobal Is Nothing OrElse DtPagosFacturaGlobal.Rows.Count = 0 Then
|
|
Alert("No se pudieron cargar los pagos", TipoMensaje.MsgError)
|
|
Exit Sub
|
|
End If
|
|
|
|
If Me.CveSubProyecto <= 0 Then
|
|
Alert("No se pudo cargar la sucursal", TipoMensaje.MsgError)
|
|
Exit Sub
|
|
End If
|
|
|
|
CveCliente = UsuarioActual.Empresa.Funcionalidad(714).ToEntero()
|
|
If CveCliente <= 0 Then
|
|
Alert("No se pudo cargar el cliente", TipoMensaje.MsgError)
|
|
Exit Sub
|
|
End If
|
|
|
|
Dim ObjFactura = Modelos.Factura.CrearVentaNueva(UsuarioActual, Me.CveSubProyecto, CveCliente, CveMoneda, "Ing")
|
|
ObjFactura.EsFacturaGlobal = True
|
|
ObjFactura.CveSATPeriodicidad = DdlPeriodo.SelectedValue.ToEntero()
|
|
ObjFactura.CveSATMes = DdlMes.SelectedValue.ToEntero()
|
|
ObjFactura.SATAnio = DdlAnio.SelectedValue.ToEntero()
|
|
ObjFactura.RemisionesLista = RemisionesLista
|
|
ObjFactura.DtRemisionesPS = DtRemisionesPS
|
|
ObjFactura.DtRemisiones = DtRemisiones.FiltraParametros($"CveVenta IN ({SbRemisiones.ToString()})")
|
|
ObjFactura.DtPagosFacturaGlobal = DtPagosFacturaGlobal
|
|
|
|
Dim RowNum As Integer = 0
|
|
For Each Dr As DataRow In ObjFactura.DtRemisionesPS.Rows
|
|
ObjFactura.AgregarPS(Dr("CvePS").ToString().ToEntero(), Dr("Cantidad").ToString().ToDecimal(), Dr("PU").ToString().ToDecimal(), Dr("Descuento").ToString().ToDecimal, Dr("Obs").ToString(), CveUM:=Dr("CveUM").ToString().ToEntero(),
|
|
CveProyecto:=Dr("CveProyecto").ToString().ToEntero(), CveSubProyecto:=Dr("CveSubProyecto").ToString().ToEntero(), CveVentaDetallePadre:=Dr("CveVentaDetalle").ToString().ToEntero(), CveVentaDetalleRemision:=Dr("CveVentaDetalle").ToString().ToEntero())
|
|
Next
|
|
|
|
ObjFactura.CalculaTotales()
|
|
|
|
ObjFactura.PreparaTimbre()
|
|
|
|
If Math.Abs(ObjFactura.Total.RoundSQL(2) - DtPagosFacturaGlobal.SUMD("Importe").RoundSQL(2)) > 0.01D Then
|
|
Alert($"Los pagos no coinciden con el total de la factura [{ObjFactura.Total.RoundSQL(2)}-{ DtPagosFacturaGlobal.SUMD("Importe").RoundSQL(2)}]", TipoMensaje.MsgError)
|
|
Exit Sub
|
|
End If
|
|
|
|
Dim SbAlert As New StringBuilder()
|
|
|
|
Dim Retorno As Modelos.Factura.MMensajeFactura = Nothing
|
|
Try
|
|
Retorno = ObjFactura.EmitirFactura(True)
|
|
|
|
If Retorno IsNot Nothing AndAlso Retorno.CveVenta > 0 Then
|
|
SbAlert.AppendFormat("{0}", Retorno.Mensajes(Retorno.Mensajes.Count - 1))
|
|
SbAlert.AppendFormat("<ul><li><a class=""Texto"" href=""/Compras/PopUpVerFactura.aspx?P={0}"">Descargar PDF Factura</a></li></ul><br/>", Encripta(String.Format("OP=VTA&CVEVENTA={0}&PAG=1&GUARDAR=1", Retorno.CveVenta)))
|
|
Else
|
|
SbAlert.Append("Ocurrió un error al generar la factura")
|
|
End If
|
|
Catch ex As Exception
|
|
SbAlert.Append("Ocurrió un error al generar el documento")
|
|
GuardaLog(ex.ToString())
|
|
End Try
|
|
|
|
|
|
If Retorno IsNot Nothing AndAlso Retorno.Mensajes.Count > 0 Then
|
|
Retorno.Mensajes(Retorno.Mensajes.Count - 1) = SbAlert.ToString()
|
|
End If
|
|
|
|
If Retorno IsNot Nothing AndAlso Retorno.Mensajes IsNot Nothing AndAlso Retorno.Mensajes.Count > 0 Then
|
|
For Each Mensaje As String In Retorno.Mensajes
|
|
Alert(Mensaje, If(Retorno.TieneError, TipoMensaje.MsgError, TipoMensaje.MsgInformacion), If(Retorno.TieneError, "", "document.location.href=""/Ventas/FacturacionGlobal.aspx"";"), ShowCloseButton:=False)
|
|
Next
|
|
Else
|
|
If SbAlert.Length = 0 Then
|
|
SbAlert.Append("Ocurrió un error al generar la factura")
|
|
End If
|
|
Alert(SbAlert.ToString(), TipoMensaje.MsgError, ShowCloseButton:=False)
|
|
End If
|
|
|
|
|
|
If ObjFactura IsNot Nothing Then
|
|
ObjFactura.Dispose()
|
|
End If
|
|
End Sub
|
|
End Class
|