Files
SIG/Inventarios/RecepcionAlmacen.aspx.vb

3603 lines
173 KiB
VB.net

Option Strict On
Option Explicit On
Imports Microsoft.Reporting.WebForms
Imports System.Data
Imports Extensiones
Imports System.IO
Imports System.Linq
Partial Class Inventarios_RecepcionAlmacen
Inherits ClsPaginas
#Region "PROPIEDADES"
Private Shared missing As Object = System.Reflection.Missing.Value
Private Property EstatusInicial As String
Get
EstatusInicial = ViewState("EstatusInicial").ToString
End Get
Set(value As String)
ViewState("EstatusInicial") = value
End Set
End Property
Private Property EstatusFinalOK As String
Get
EstatusFinalOK = ViewState("EstatusFinalOK").ToString
End Get
Set(value As String)
ViewState("EstatusFinalOK") = value
End Set
End Property
Private Property DtInv As DataTable
Get
Return CType(ViewState("DtInv"), DataTable)
End Get
Set(value As DataTable)
ViewState("DtInv") = value
End Set
End Property
Private Property DtSeccionAlmacen As DataTable
Get
Return CType(ViewState("DtSeccionAlmacen"), DataTable)
End Get
Set(value As DataTable)
ViewState("DtSeccionAlmacen") = value
End Set
End Property
Private Property dt As DataTable
Get
Return CType(ViewState("dt"), DataTable)
End Get
Set(value As DataTable)
ViewState("dt") = value
End Set
End Property
Private Property CveMoneda As Integer
Get
Return CType(ViewState("CveMoneda"), Integer)
End Get
Set(value As Integer)
ViewState("CveMoneda") = value
End Set
End Property
Private Property CveCompraParametro As Integer
Get
Return CType(ViewState("CveCompraParametro"), Integer)
End Get
Set(value As Integer)
ViewState("CveCompraParametro") = value
End Set
End Property
Private Property CveTipoCompra As Integer
Get
Return CType(IfNull(ViewState("CveTipoCompra"), 0), Integer)
End Get
Set(value As Integer)
ViewState("CveTipoCompra") = value
End Set
End Property
Private Property DtCuentas As DataTable
Get
Return CType(ViewState("DtCuentas"), DataTable)
End Get
Set(value As DataTable)
ViewState("DtCuentas") = value
End Set
End Property
Private ReadOnly Property IdPoliza As Integer
Get
Return ViewState("IdPoliza").ToString.ToEntero
End Get
End Property
Private Property DtDatosDetalle As DataTable
Get
Return CType(ViewState("DtDatosDetalle"), DataTable)
End Get
Set(value As DataTable)
ViewState("DtDatosDetalle") = value
End Set
End Property
Private Property DtDatosLoteDetalle As DataTable
Get
Return CType(ViewState("DtDatosLoteDetalle"), DataTable)
End Get
Set(value As DataTable)
ViewState("DtDatosLoteDetalle") = value
End Set
End Property
Private Property CvePSSerieLote As Integer
Get
Return CType(ViewState("CvePSSerieLote"), Integer)
End Get
Set(value As Integer)
ViewState("CvePSSerieLote") = value
End Set
End Property
Private Property CveUMSerieLote As Integer
Get
Return CType(ViewState("CveUMSerieLote"), Integer)
End Get
Set(value As Integer)
ViewState("CveUMSerieLote") = value
End Set
End Property
Private Property CantidadTotal As Decimal
Get
Return CType(ViewState("CantidadTotal"), Decimal)
End Get
Set(value As Decimal)
ViewState("CantidadTotal") = value
End Set
End Property
Private Property IndexSeccionAlmacen As Integer
Get
Return CType(ViewState("IndexSeccionAlmacen"), Integer)
End Get
Set(value As Integer)
ViewState("IndexSeccionAlmacen") = value
End Set
End Property
Private Property PUSerieLote As Decimal
Get
Return CType(ViewState("PUSerieLote"), Decimal)
End Get
Set(value As Decimal)
ViewState("PUSerieLote") = value
End Set
End Property
Private Property CveConsecSerieLote As Integer
Get
Return CType(ViewState("CveConsecSerieLote"), Integer)
End Get
Set(value As Integer)
ViewState("CveConsecSerieLote") = value
End Set
End Property
Private Property TotalGV As Decimal
Get
Return CType(ViewState("TotalGV"), Decimal)
End Get
Set(value As Decimal)
ViewState("TotalGV") = value
End Set
End Property
Private Property TotalCompraOC As Decimal
Get
Return CType(ViewState("TotalCompraOC"), Decimal)
End Get
Set(value As Decimal)
ViewState("TotalCompraOC") = value
End Set
End Property
Private Property TipoCambio As Double
Get
Return ViewState("TipoCambio").ToString.ToDouble
End Get
Set(value As Double)
ViewState("TipoCambio") = value
End Set
End Property
Private Property DtBitacora As DataTable
Get
Return CType(ViewState("DtBitacora"), DataTable)
End Get
Set(value As DataTable)
ViewState("DtBitacora") = value
End Set
End Property
Private Property RowIndexCantidadEspecial As Integer
Get
Return CType(ViewState("RowIndexCantidadEspecial"), Integer)
End Get
Set(value As Integer)
ViewState("RowIndexCantidadEspecial") = value
End Set
End Property
Private Property CantidadEspecialTemp As Decimal
Get
Return CType(ViewState("CantidadEspecialTemp"), Decimal)
End Get
Set(value As Decimal)
ViewState("CantidadEspecialTemp") = value
End Set
End Property
Private Property EntregaDirecta As Boolean
Get
Return CBool(ViewState("EntregaDirecta"))
End Get
Set(value As Boolean)
ViewState("EntregaDirecta") = value
End Set
End Property
Private Property RecibidaCompleta As Boolean
Get
Return CBool(ViewState("RecibidaCompleta"))
End Get
Set(value As Boolean)
ViewState("RecibidaCompleta") = value
End Set
End Property
Private Property Apartado As Boolean
Get
Return CBool(ViewState("Apartado"))
End Get
Set(value As Boolean)
ViewState("Apartado") = value
End Set
End Property
Private Property BuscaEntregaDirecta As Integer
Get
Return CType(ViewState("BuscaEntregaDirecta"), Integer)
End Get
Set(value As Integer)
ViewState("BuscaEntregaDirecta") = value
End Set
End Property
Private Property CveAlmacenApartado As Integer
Get
Return CType(ViewState("CveAlmacenApartado"), Integer)
End Get
Set(value As Integer)
ViewState("CveAlmacenApartado") = value
End Set
End Property
Private Property TipoMovimiento As Integer
Get
Return CType(ViewState("TipoMovimiento"), Integer)
End Get
Set(value As Integer)
ViewState("TipoMovimiento") = value
End Set
End Property
Private Property CveCompraSurtir As Integer
Get
Return CType(ViewState("CveCompraSurtir"), Integer)
End Get
Set(value As Integer)
ViewState("CveCompraSurtir") = value
End Set
End Property
Private Property CvePrePolizaCompra As Integer
Get
Return CType(ViewState("CvePrePolizaCompra"), Integer)
End Get
Set(value As Integer)
ViewState("CvePrePolizaCompra") = value
End Set
End Property
Private Property CveOCSurtir As Integer
Get
Return CType(ViewState("CveOCSurtir"), Integer)
End Get
Set(value As Integer)
ViewState("CveOCSurtir") = value
End Set
End Property
Private Property CveImportacionSurtir As Integer
Get
Return CType(ViewState("CveImportacionSurtir"), Integer)
End Get
Set(value As Integer)
ViewState("CveImportacionSurtir") = value
End Set
End Property
Private Property CveImportacionCompra As Integer
Get
Return CType(ViewState("CveImportacionCompra"), Integer)
End Get
Set(value As Integer)
ViewState("CveImportacionCompra") = value
End Set
End Property
Private Property CveImportacionProveedor As Integer
Get
Return CType(ViewState("CveImportacionProveedor"), Integer)
End Get
Set(value As Integer)
ViewState("CveImportacionProveedor") = value
End Set
End Property
Private Property CveFleteSurtir As Integer
Get
Return CType(ViewState("CveFleteSurtir"), Integer)
End Get
Set(value As Integer)
ViewState("CveFleteSurtir") = value
End Set
End Property
Private Property CveFleteOrdenCompra As Integer
Get
Return CType(ViewState("CveFleteOrdenCompra"), Integer)
End Get
Set(value As Integer)
ViewState("CveFleteOrdenCompra") = value
End Set
End Property
Private Property CveFleteCompra As Integer
Get
Return CType(ViewState("CveFleteCompra"), Integer)
End Get
Set(value As Integer)
ViewState("CveFleteCompra") = value
End Set
End Property
Private Property DtExistencias As DataTable
Get
Return CType(ViewState("DtExistencias"), DataTable)
End Get
Set(value As DataTable)
ViewState("DtExistencias") = value
End Set
End Property
Private Property CveCliente As Integer
Get
Return CType(ViewState("CveCliente"), Integer)
End Get
Set(value As Integer)
ViewState("CveCliente") = value
End Set
End Property
Private Property CveVendedor As Integer
Get
Return CType(ViewState("CveVendedor"), Integer)
End Get
Set(value As Integer)
ViewState("CveVendedor") = 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
InicializaValores()
CargaUrlParametros()
CargaPendientes()
CargaPermisos()
End If
End Sub
#Region " PERMISOS PAGINAS "
Private Sub CargaPermisos()
'IMPORTES
Dim TienePermisoImportes As Boolean = UsuarioActual.TienePermisoProceso(201)
GvInv.Columns(8).Visible = TienePermisoImportes
GvInv.Columns(11).Visible = TienePermisoImportes
'SECCION ALMACEN
GvInv.Columns(10).Visible = UsuarioActual.Empresa.Funcionalidad(147) = "1"
'SECCION ALMACEN EXISTENCIAS
GvInv.Columns(11).Visible = UsuarioActual.Empresa.Funcionalidad(563).ToString = "1"
End Sub
#End Region
#Region " INICIALIZA VALORES "
Private Sub InicializaValores()
CveCompraParametro = -1
CveCompraSurtir = -1
CvePrePolizaCompra = -1
CveOCSurtir = -1
CveImportacionSurtir = -1
CveImportacionProveedor = -1
CveImportacionCompra = -1
CveFleteSurtir = -1
CveFleteOrdenCompra = -1
CveFleteCompra = -1
BuscaEntregaDirecta = -1
CveAlmacenApartado = -1
TipoMovimiento = 1
CantidadTotal = 0
IndexSeccionAlmacen = 0
CreaDtSeccionAlmacen()
CargaDdlAlmacen()
ddlAlmacenAdd.DataSource = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltraParametros("CveTipoAlmacen NOT IN (9)")
ddlAlmacenAdd.DataBind()
CargaAlmacenes(-1)
ddlProveedor.setEsWebService(UsuarioActual.Empresa.Funcionalidad(105) = "1")
If ddlProveedor.UsaWebService Then
ddlProveedor.Attributes.Add("data-metodo", "getproveedores")
Else
ddlProveedor.DataSource = GlobalDTCompProveedores(UsuarioActual.CveEmpresa)
ddlProveedor.DataBind()
ddlProveedor.ddl.Items.Insert(0, New ListItem("Seleccione el Proveedor", "-1"))
ddlProveedor.SelectedValue = "-1"
End If
DdlFolio.Items.Insert(0, New ListItem("Seleccione", "-1"))
DdlFolioOC.Items.Insert(0, New ListItem("Seleccione", "-1"))
ConfiguraTipoRecepcion()
If UsuarioActual.CveEmpresa = 119 Then
DivRemision.Visible = True
End If
TxtFechaCaducidad.Text = Now.ToShortDateString
TxtFechaPendientes.Text = Now.ToShortDateString
TipoCambio = -1
CreaDtDetalle()
ImgClose.Attributes.Add("onclick", "$('#DivAlmacen').hide();")
ImgAdd.Attributes.Add("onclick", "$('#DivAlmacen').hide();")
BtnGuardar.Visible = False
TxtFecha.Text = Now.ToShortDateString
RVFecha.MaximumValue = MaxFecha.ToShortDateString
If UsuarioActual.CveEmpresa.Contiene(119) Then RVFecha.MinimumValue = Now.ToShortDateString : CEFecha.StartDate = Now Else RVFecha.MinimumValue = MinFecha.ToShortDateString
InicializaBitacoraTemporal()
DdlMonedaTC.Enabled = False
End Sub
''' <summary>
''' Recarga los almacenes [DdlAlmacen] que se pueden usar para el movimiento
''' </summary>
''' <param name="CveSubProyecto"></param>
''' <param name="CveTiposAlmacen">Parametro sin espacios y separado por comas ["1,2,3,21"]</param>
Private Sub CargaAlmacenes(CveSubProyecto As Integer, Optional CveTiposAlmacen As String = "")
Dim StrAlmacenes As String = ""
If UsuarioActual.CveSubProyecto = 8804 Then 'AGS
StrAlmacenes = $"CveTipoAlmacen IN ({If(CveTiposAlmacen.Length > 0, CveTiposAlmacen, "1,2,12,15")}) {If(CveSubProyecto > 0, $"And CveSubProyecto = {CveSubProyecto}", "")}"
Else
StrAlmacenes = $"CveTipoAlmacen IN ({If(CveTiposAlmacen.Length > 0, CveTiposAlmacen, "1,2,15")}) {If(CveSubProyecto > 0, $"And CveSubProyecto = {CveSubProyecto}", "")}"
End If
DdlAlmacen.Items.Clear()
DdlAlmacen.DataSource = GlobalDTAlmacenUsuarios(UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1).FiltraParametros(StrAlmacenes) 'GlobalDTAlmacen(UsuarioActual.CveEmpresa)
DdlAlmacen.Items.Insert(0, New ListItem(" Seleccione ", "-1"))
DdlAlmacen.SelectedValue = "-1"
DdlAlmacen.DataBind()
DdlAlmacen.SelectedValueExist(UsuarioActual.CveAlmacen)
UpGenerales.Update()
End Sub
Private Sub ConfiguraTipoRecepcion()
DdlTipo.Items.Insert(0, New ListItem("Compra", "1"))
If UsuarioActual.Empresa.Funcionalidad(131).ToEntero > 0 Then
DdlTipo.Items.Insert(1, New ListItem("OC", "2"))
If UsuarioActual.Empresa.Funcionalidad(153).ToEntero > 0 Then
DdlTipo.Items.RemoveAt(0)
DdlTipo.SelectedValue = "2"
ModalidadRecepcion()
End If
End If
If UsuarioActual.Empresa.Funcionalidad(155).ToEntero > 0 Then
DdlTipo.Items.Insert(DdlTipo.Items.Count - 1, New ListItem("Importación", "3"))
End If
If UsuarioActual.Empresa.Funcionalidad(158).ToEntero > 0 Then
DdlTipo.Items.Insert(DdlTipo.Items.Count - 1, New ListItem("Costo Indirecto", "4"))
End If
UpFiltros.Update()
End Sub
#End Region
#Region " CARGA URL PARAMETROS "
Private Sub CargaUrlParametros()
CveCompraParametro = IfNull(Request("CveCompra"), "-1").ToString.ToEntero
BuscaEntregaDirecta = IfNull(Request("ED"), "-1").ToString.ToEntero
If CveCompraParametro > 0 Then
Dim ObjCompras As New ClsCompras
If ObjCompras.GetCompras(CveCompraParametro, "-1", "-1", -1, -1, UsuarioActual.CveEmpresa) Then
If ObjCompras.DtResultados.Rows.Count >= 1 Then
ddlProveedor.SelectedValue = ObjCompras.DtResultados.Rows(0)("CveProveedor").ToString
ddlProveedor.SelectedText = ObjCompras.DtResultados.Rows(0)("RazonSocial").ToString
ddlProveedor_SelectedIndexChanged(ddlProveedor, EventArgs.Empty)
If (DdlFolio.Items.FindByValue(CveCompraParametro.ToString) Is Nothing) Then
DdlFolio.Items.Insert(1, New ListItem(ObjCompras.DtResultados.Rows(0)("SerieFolio").ToString, CveCompraParametro.ToString)) ' lo genera Obj.SelectedValue = Valor.ToString
End If
DdlFolio.SelectedValueExist(CveCompraParametro.ToString)
btnBuscar_Click(BtnBuscar, EventArgs.Empty)
Else
Alert("La Compra solicitada no se pudo encontrar. Por favor vuelva a intentar.", TipoMensaje.MsgAdvertencia)
End If
Else
Alert("Ocurrió un error al cargar los datos de la Compra. Por favor vuelva a intentar.", TipoMensaje.MsgError)
End If
ObjCompras.Dispose()
End If
End Sub
#End Region
#Region " MODALIDAD RECEPCION "
Protected Sub DdlTipo_SelectedIndexChanged(sender As Object, e As EventArgs)
ModalidadRecepcion()
End Sub
Private Sub ModalidadRecepcion()
LblCompra.Visible = False
DivCompra.Visible = False
LblOC.Visible = False
DivOC.Visible = False
LblImportacion.Visible = False
DivImportacion.Visible = False
LblFletes.Visible = False
DivFletes.Visible = False
LblFactura.Visible = False
DivDdlFactura.Visible = False
Select Case DdlTipo.SelectedValue.ToEntero
Case 1
LblCompra.Visible = True
DivCompra.Visible = True
Case 2
LblOC.Visible = True
DivOC.Visible = True
Case 3
LblImportacion.Visible = True
DivImportacion.Visible = True
LblFactura.Visible = True
DivDdlFactura.Visible = True
Case 4
LblFletes.Visible = True
DivFletes.Visible = True
End Select
CargaFoliosRecepcion()
End Sub
#End Region
#Region " CARGA FOLIOS RECEPCION "
Protected Sub ddlProveedor_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ddlProveedor.selectedindexchange
CargaFoliosRecepcion()
'DdlTipo_SelectedIndexChanged(DdlTipo, EventArgs.Empty)
End Sub
Private Sub CargaFoliosRecepcion()
Select Case DdlTipo.SelectedValue.ToEntero
Case 1
CargaFolios()
Case 2
CargaFoliosOC()
Case 3
CargaFoliosImportacion()
Case 4
CargaFletes()
End Select
UpFiltros.Update()
End Sub
Private Sub CargaFolios()
DdlFolio.Items.Clear()
Dim ObjInventarios As New ClsInventarios
If ddlProveedor.SelectedValue.ToEntero > 0 Then
If ObjInventarios.ComprasPendientesAlmacenGet(ddlProveedor.SelectedValue.ToEntero, MinFecha.ToShortDateString.ToDate, UsuarioActual.CveEmpresa) Then
Dim FiltroTemporal = If(UsuarioActual.CveEmpresa = 119, "AND TipoDocto IN ('Fac','NC')", "AND TipoDocto IN ('Fac')")
DdlFolio.DataSource = ObjInventarios.DtResultados.FiltraParametros($"CantOC >= 0 {FiltroTemporal}")
Else
Alert("Ocurrió un error al obtener las Compras pendientes de recibir del proveedor. Por favor vuelva a intentar", TipoMensaje.MsgError)
End If
End If
ObjInventarios.Dispose()
DdlFolio.DataBind()
DdlFolio.Items.Insert(0, New ListItem("Seleccione", "-1"))
End Sub
Private Sub CargaFoliosImportacion()
DdlFolioImportacion.Items.Clear()
Dim ObjInventarios As New ClsInventarios
If ddlProveedor.SelectedValue.ToEntero > 0 Then
If ObjInventarios.PendientesAlmacenImportacionGet(ddlProveedor.SelectedValue.ToEntero, MinFecha.ToShortDateString.ToDate, UsuarioActual.CveEmpresa) Then
DdlFolioImportacion.DataSource = ObjInventarios.DtResultados
Else
Alert("Ocurrió un error al obtener las Compras pendientes de recibir del proveedor. Por favor vuelva a intentar", TipoMensaje.MsgError)
End If
End If
ObjInventarios.Dispose()
DdlFolioImportacion.DataBind()
DdlFolioImportacion.Items.Insert(0, New ListItem("Seleccione", "-1"))
CargaFactura()
End Sub
Protected Sub DdlFolioImportacion_SelectedIndexChanged(sender As Object, e As EventArgs)
CargaFactura()
End Sub
Private Sub CargaFactura()
DdlFactura.Items.Clear()
Dim ObjInventarios As New ClsInventarios
If DdlFolioImportacion.SelectedValue.ToEntero > 0 Then
If ObjInventarios.PendientesAlmacenImportacionComprasGet(DdlFolioImportacion.SelectedValue.ToEntero, ddlProveedor.SelectedValue.ToEntero) Then
DdlFactura.DataSource = ObjInventarios.DtResultados
Else
Alert("Ocurrió un error al obtener las Compras pendientes de recibir del proveedor. Por favor vuelva a intentar", TipoMensaje.MsgError)
End If
End If
ObjInventarios.Dispose()
DdlFactura.DataBind()
DdlFactura.Items.Insert(0, New ListItem("Todos", "-1"))
End Sub
Private Sub CargaFletes()
DdlFletes.Items.Clear()
Dim ObjInventarios As New ClsInventarios
If ddlProveedor.SelectedValue.ToEntero > 0 Then
If ObjInventarios.GetFletes(UsuarioActual.CveEmpresa, CveProveedor:=ddlProveedor.SelectedValue.ToEntero) Then
DdlFletes.DataSource = ObjInventarios.DtResultados.FiltraParametros("CantRest > 0")
Else
Alert("Ocurrió un error al obtener las ordenes de compra pendientes de recibir del proveedor. Por favor vuelva a intentar", TipoMensaje.MsgError)
End If
End If
ObjInventarios.Dispose()
DdlFletes.DataBind()
DdlFletes.Items.Insert(0, New ListItem("Seleccione", "-1"))
End Sub
#End Region
#Region " CARGA POR SURTIR - GV "
Protected Sub TimmerRefresh_Tick(sender As Object, e As EventArgs)
CargaPendientes()
End Sub
Protected Sub BtnConsultarPendientes_Click(sender As Object, e As EventArgs)
CargaPendientes()
End Sub
Private Sub CargaPendientes()
Dim ObjInventarios As New ClsInventarios
Dim DtPendientes As New DataTable
If ObjInventarios.ComprasPendientesAlmacenGet(-1, TxtFechaPendientes.Text.ToDate, UsuarioActual.CveEmpresa) Then
Dim FiltroTemporal = If(UsuarioActual.CveEmpresa = 119, "AND TipoDocto IN ('Fac','NC')", "AND TipoDocto IN ('Fac')")
DtPendientes = ObjInventarios.DtResultados.FiltraParametros($"CantOC >= 0 {FiltroTemporal}")
Else
DtPendientes = Nothing
Alert("Ocurrió un error al obtener las Compras pendientes de recibir del proveedor. Por favor vuelva a intentar", TipoMensaje.MsgError)
End If
'If UsuarioActual.Empresa.Funcionalidad(539) = "1" Then
' BtnGuardar.Enabled = False
' Dim FI As Date = Now.AddDays(-1)
' Dim FF As Date = Now.AddDays(-7)
' If ObjInventarios.RepNotasSinAlmacen(2, -1, FI, FF, "-1", -1, UsuarioActual.Empresa.CveEmpresa) Then
' If ObjInventarios.DtResultados IsNot Nothing AndAlso ObjInventarios.DtResultados.Rows.Count > 1 Then
' BtnGuardar.Enabled = False
' Alert("No se podrá realizar recepción de mercancía si no se les da entrada a los documentos pendientes. Para más información ver el Reporte de notas sin entrada en la sección Compras.", TipoMensaje.MsgAdvertencia)
' Else
' BtnGuardar.Enabled = True
' End If
' End If
'End If
ObjInventarios.Dispose()
If DtPendientes IsNot Nothing Then
GVPendientes.DataSource = DtPendientes
End If
LtActualizado.Text = String.Format("Actualizado: {0}", Now.ToString("H:mm"))
GVPendientes.DataBind()
UpPendientes.Update()
End Sub
Protected Sub GVPendientes_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles GVPendientes.RowDataBound
If e.Row.RowType = DataControlRowType.DataRow Then
e.Row.FCLinkButton("BtnSurtir").CommandArgument = e.Row.DBCampo("CveCompra")
If e.Row.DBCampo("TipoDocto").ToString.Contiene({"Fac"}) And e.Row.DBCampo("EstatusAlmacen").ToString.ToEntero = 0 Then
e.Row.FCLinkButton("BtnSurtir").CssClass = "btn btn-primary"
e.Row.FCLinkButton("BtnSurtir").Text = "<i class='fa fa-arrow-left' > Recibir</i>"
Else
e.Row.FCLinkButton("BtnSurtir").CssClass = "btn yellow-gold"
e.Row.FCLinkButton("BtnSurtir").Text = " Devolver <i class='fa fa-arrow-right' ></i>"
End If
If UsuarioActual.TienePermisoProceso(201) Then
Dim Css = "Texto"
Dim Liga = $"/Compras/Compras.aspx?&CveCompra={e.Row.DataKey("CveCompra")}"
e.Row.FCLabel("LblSerieFolio").Text = "<a class=" + "" + Css + "" + " href=" + "" + Liga + "" + ">" + e.Row.FCLabel("LblSerieFolio").Text + "</a>"
End If
End If
End Sub
#End Region
#Region " CARGA POR SURTIR "
Protected Sub btnBuscar_Click(sender As Object, e As EventArgs) Handles BtnBuscar.Click
'REINICIA VALORES
DdlMonedaTC.SelectedValueExist("1")
TipoCambio = -1
DivBitacora.Visible = False
DtBitacora.Clear()
GvInv.Columns(2).Visible = False
GvInv.Columns(3).Visible = False
CveCompraSurtir = -1
CvePrePolizaCompra = -1
CveOCSurtir = -1
CveImportacionSurtir = -1
CveImportacionProveedor = -1
CveImportacionCompra = -1
CveFleteSurtir = -1
CveFleteOrdenCompra = -1
CveFleteCompra = -1
DivAdvertencia.Visible = False
EntregaDirecta = False
DivTipoCambio.Visible = False
Apartado = False
CveAlmacenApartado = -1
BtnGuardar.Enabled = True
CargaAlmacenes(-1)
DtInv = Nothing
TxtObservaciones.Text = ""
TxtOC.Text = ""
TxtFecha.Text = Now.ToShortDateString
DdlAlmacen.SelectedValueExist(-1)
TxtRemision.Text = ""
UpTipoCambio.Update()
UPInv.Update()
UpGenerales.Update()
UpFiltros.Update()
UpDatosCompra.Update()
If TxtOC.Text <> "" Then
LtDocumento.Text = "ORDEN DE COMPRA"
CargaOC()
ElseIf DdlFolioOC.SelectedValue.ToEntero > 0 Then
LtDocumento.Text = "ORDEN DE COMPRA"
CargaOCPorSurtir(DdlFolioOC.SelectedValue.ToEntero)
ElseIf DdlFolio.SelectedValue.ToEntero > 0 Then
LtDocumento.Text = "COMPRA"
CargaCompra(DdlFolio.SelectedValue.ToEntero, ddlProveedor.SelectedValue.ToEntero)
ElseIf DdlFolioImportacion.SelectedValue.ToEntero > 0 Then
LtDocumento.Text = "IMPORTACIÓN"
CargaImportacionSurtir(DdlFolioImportacion.SelectedValue.ToEntero)
ElseIf DdlFletes.SelectedValue.ToEntero > 0 Then
LtDocumento.Text = "FLETE"
CargaFleteSurtir(DdlFletes.SelectedValue.ToEntero)
Else
Alert("Debe seleccionar algun criterio de busqueda (Compra, OC, Importación). Por favor rectifique y vuelva a intentar", TipoMensaje.MsgAdvertencia)
BtnGuardar.Visible = False
End If
CargaGVInv()
DtSeccionAlmacen.Rows.Clear()
DtSeccionAlmacen.AcceptChanges()
End Sub
Protected Sub BtnSurtir_Click(sender As Object, e As EventArgs)
If CType(sender, LinkButton).CommandArgument.ToEntero > 0 Then
CargaCompra(CType(sender, LinkButton).CommandArgument.ToEntero, -1)
TimmerRefresh.Enabled = False
End If
End Sub
Private Sub CargaCompra(pCveCompra As Integer, pCveProveedor As Integer)
Dim ObjCompras As New ClsCompras
Dim ObjInventario As New ClsInventarios
If ObjCompras.GetCompras(pCveCompra, "-1", "-1", pCveProveedor, -1, UsuarioActual.CveEmpresa) Then
If ObjCompras.DtResultados.Rows.Count > 0 Then
CveCompraSurtir = pCveCompra
CvePrePolizaCompra = ObjCompras.DtResultados.Rows(0)("CvePrePoliza").ToString.ToEntero
LbProveedor.Text = ObjCompras.DtResultados.Rows(0)("RazonSocial").ToString
HLFolio.Text = ObjCompras.DtResultados.Rows(0)("SerieFolio").ToString
If UsuarioActual.TienePermisoProceso(201) Then
HLFolio.NavigateUrl = $"/Compras/Compras.aspx?CveCompra={CveCompraSurtir}"
End If
LbDescripcionCompra.Text = ObjCompras.DtResultados.Rows(0)("Descripcion").ToString
UpDatosCompra.Update()
CveMoneda = ObjCompras.DtResultados.Rows(0)("CveMoneda").ToString.ToEntero
lbDescripcion.Text = ObjCompras.DtResultados.Rows(0)("Descripcion").ToString
HdnTipoDocto.Value = ObjCompras.DtResultados.Rows(0)("TipoDocto").ToString
TipoCambio = ObjCompras.DtResultados.Rows(0)("TipoCambio").ToString.ToDecimal
TipoMovimiento = If(ObjCompras.DtResultados.Rows(0)("EstatusAlmacen").ToString.ToEntero = 1, 2, 1)
TipoMovimiento = If(ObjCompras.DtResultados.Rows(0)("TipoDocto").ToString = "NC", 3, TipoMovimiento)
TotalCompraOC = ObjCompras.DtResultados.Rows(0)("SubTotal").ToString.ToDecimal
CveTipoCompra = ObjCompras.DtResultados.Rows(0)("CveTipoCompra").ToString.ToEntero
If TipoMovimiento = 3 Then
CargaAlmacenes(-1, "21")
End If
RecibidaCompleta = False
If ObjInventario.RecepcionAlmacenGet(pCveCompra, BuscaEntregaDirecta, UsuarioActual.CveEmpresa) AndAlso ObjInventario.DtResultados.Rows.Count > 0 Then
DtDatosDetalle = Nothing
CreaDtDetalle()
DtDatosLoteDetalle = Nothing
CreaDtLoteDetalle()
CreaDTInv(ObjInventario.DtResultados)
BtnGuardar.Visible = True
'cuando están todos los detalles de la compra, nos indica que se va a recibir la totalidad de la compra
If ObjInventario.DtResultados.Rows.Count = ObjInventario.DtResultados.Rows(0)("NumDetalles").ToString.ToEntero Then
RecibidaCompleta = True
End If
''MONEDA DIFERENTE
If CveMoneda <> 1 Then
'DivTipoCambio.Visible = True
DdlMonedaTC.SelectedValueExist("2")
DdlMonedaTC_SelectedIndexChanged(DdlMonedaTC, EventArgs.Empty)
'TxtTipoCambio.Text = If(TipoCambio <= 0, GlobalTipoCambio(TxtFecha.Text.ToDate).ToString, TipoCambio.ToString)
TipoCambio = If(TipoCambio <= 0, GlobalTipoCambio(TxtFecha.Text.ToDate), TipoCambio)
LtAdvertencia.Text = "El cambio de moneda se aplicara al guardar el movimiento con el tipo de cambio indicado."
DivAdvertencia.Visible = True
End If
UpTipoCambio.Update()
''ENTREGA DIRECTA
If BuscaEntregaDirecta > 0 Then
If UsuarioActual.Empresa.Funcionalidad(149) = "1" Then
LtAdvertencia.Text = "La mercancía tendra salida inmediata por ser entrega directa al cliente"
DivAdvertencia.Visible = True
EntregaDirecta = True
CveCliente = ObjInventario.DtResultados.Rows(0)("CveCliente").ToString.ToEntero
CveVendedor = ObjInventario.DtResultados.Rows(0)("CveVendedor").ToString.ToEntero
If DtInv.COUNT("EntregaDirecta") <> DtInv.Rows.Count Then
Alert("Todos los conceptos deben estar facturados.", TipoMensaje.MsgAdvertencia)
BtnGuardar.Enabled = False
End If
End If
End If
If DtInv.Rows.Count = 0 Then
Alert("No hay productos pendientes de surtir de esta compra. Por favor rectifique y vuelva a intentar.", TipoMensaje.MsgAdvertencia)
Else
If ObjInventario.DtResultados.Rows(0)("CveVendedor").ToString.ToEntero > 0 And ObjInventario.DtResultados.Rows(0)("CveCliente").ToString.ToEntero > 0 Then
If DtInv.SUM("EntregaDirecta") > 0 Then
''ENTREGA DIRECTA
'LtAdvertencia.Text = "La mercancía tendra salida inmediata por ser entrega directa al cliente"
'DivAdvertencia.Visible = True
'EntregaDirecta = True
Else
'APARTADO
'If UsuarioActual.CveUsuario.Contiene(100) Or (ObjInventario.DtResultados.Rows(0)("CveUsuarioOC").ToString.ToEntero = 1559 And ObjInventario.DtResultados.Rows(0)("FechaIngOC").ToString.ToDateTime > "2017-04-24 12:00".ToDateTime) Then
If UsuarioActual.Empresa.Funcionalidad(148) = "1" Then
CveAlmacenApartado = ObjInventario.DtResultados.Rows(0)("CveAlmacenApartado").ToString.ToEntero
DivAdvertencia.Visible = True
Apartado = True
If CveAlmacenApartado <= 0 Then
BtnGuardar.Enabled = False
LtAdvertencia.Text = "No se puede recibir la mercancía por ser de apartados y no contar con un almacen de apartado."
Else
LtAdvertencia.Text = "La mercancía sera traspasada ha apartados"
CargaAlmacenes(ObjInventario.DtResultados.Rows(0)("CveSubProyecto").ToString.ToEntero)
End If
End If
'End If
End If
End If
End If
Dim CantidadFaltante As Double = ObjInventario.DtResultados.SUM("CantidadC", "CantidadF > 0")
If UsuarioActual.Empresa.UsaAC AndAlso CantidadFaltante > 0 Then
PnlAC.Visible = True
CargaAC()
LbTotalPorDevengar.Text = ObjInventario.DtResultados.SUM("Total", "CantidadF > 0").FormatoNumero
End If
'Existencias
If TipoMovimiento = 2 Then
If ObjInventario.ComprasDevolucionExistenciasGet(CveCompraSurtir) Then
DtExistencias = ObjInventario.DtResultados
Else
Alert("No se pudieron cargar las existencias del movimiento de entrada, por lo cual no se podra hacer la devolución.", TipoMensaje.MsgError)
BtnGuardar.Enabled = False
End If
End If
End If
DivBitacora.Visible = True
If UsuarioActual.Empresa.Funcionalidad(132) = "1" Then
DivCodigoSeriePS.Visible = True
Else
DivCodigoSeriePS.Visible = False
End If
End If
Else
BtnGuardar.Visible = False
End If
ObjCompras.Dispose()
ObjInventario.Dispose()
CargaGVInv()
End Sub
Private Sub CargaImportacionSurtir(pCveImportacion As Integer)
Dim ObjCompras As New ClsCompras
Dim ObjInventario As New ClsInventarios
If ObjCompras.GetImportaciones(pCveImportacion, -1, -1, "-1", "-1", UsuarioActual.CveEmpresa) Then
If ObjCompras.DtResultados.Rows.Count > 0 Then
CveImportacionSurtir = pCveImportacion
CveImportacionProveedor = ddlProveedor.SelectedValue.ToEntero
CveImportacionCompra = DdlFactura.SelectedValue.ToEntero
LbProveedor.Text = ObjCompras.DtResultados.Rows(0)("Aduanal").ToString
HLFolio.Text = ObjCompras.DtResultados.Rows(0)("PedimentoDescripcion").ToString
If UsuarioActual.TienePermisoProceso(201) Then
HLFolio.NavigateUrl = $"/Compras/Importaciones.aspx?CveImportacion={CveImportacionSurtir}"
End If
UpDatosCompra.Update()
CveMoneda = 1
lbDescripcion.Text = ""
TipoMovimiento = 1
If ObjInventario.RecepcionAlmacenImportacionGet(CveImportacionSurtir, DdlFactura.SelectedValue.ToEntero, CveImportacionProveedor, UsuarioActual.CveEmpresa) AndAlso ObjInventario.DtResultados.Rows.Count > 0 Then
DtDatosDetalle = Nothing
CreaDtDetalle()
DtDatosLoteDetalle = Nothing
CreaDtLoteDetalle()
CreaDTInv(ObjInventario.DtResultados)
BtnGuardar.Visible = True
End If
If DtInv Is Nothing OrElse DtInv.Rows.Count = 0 Then
Alert("No hay productos pendientes de surtir de esta importación. Por favor rectifique y vuelva a intentar.", TipoMensaje.MsgAdvertencia)
End If
DivBitacora.Visible = True
If UsuarioActual.Empresa.Funcionalidad(132) = "1" Then
DivCodigoSeriePS.Visible = True
Else
DivCodigoSeriePS.Visible = False
End If
End If
Else
BtnGuardar.Visible = False
End If
ObjCompras.Dispose()
ObjInventario.Dispose()
CargaGVInv()
End Sub
Private Sub CargaFleteSurtir(pCveImportacion As Integer)
Dim ObjInventario As New ClsInventarios
If ObjInventario.GetFletes(UsuarioActual.CveEmpresa, CveFlete:=pCveImportacion) Then
If ObjInventario.DtResultados.Rows.Count > 0 Then
CveFleteSurtir = pCveImportacion
CveFleteOrdenCompra = ObjInventario.DtResultados.Rows(0)("CveOC").ToString.ToEntero
CveFleteCompra = ObjInventario.DtResultados.Rows(0)("CveCompra").ToString.ToEntero
LbProveedor.Text = ObjInventario.DtResultados.Rows(0)("RazonSocial").ToString
HLFolio.Text = ObjInventario.DtResultados.Rows(0)("Folio").ToString
If UsuarioActual.TienePermisoProceso(201) Then
HLFolio.NavigateUrl = $"/Inventarios/Fletes.aspx?CveFlete={CveFleteSurtir}"
End If
UpDatosCompra.Update()
CveMoneda = 1
lbDescripcion.Text = ""
TipoMovimiento = 1
If ObjInventario.RecepcionAlmacenFleteGet(CveFleteSurtir, CveFleteOrdenCompra, CveFleteCompra, UsuarioActual.CveEmpresa) AndAlso ObjInventario.DtResultados.Rows.Count > 0 Then
DtDatosDetalle = Nothing
CreaDtDetalle()
DtDatosLoteDetalle = Nothing
CreaDtLoteDetalle()
CreaDTInv(ObjInventario.DtResultados)
BtnGuardar.Visible = True
End If
If DtInv Is Nothing OrElse DtInv.Rows.Count = 0 Then
Alert("No hay productos pendientes de surtir de esta importación. Por favor rectifique y vuelva a intentar.", TipoMensaje.MsgAdvertencia)
End If
DivBitacora.Visible = True
If UsuarioActual.Empresa.Funcionalidad(132) = "1" Then
DivCodigoSeriePS.Visible = True
Else
DivCodigoSeriePS.Visible = False
End If
End If
Else
BtnGuardar.Visible = False
End If
ObjInventario.Dispose()
CargaGVInv()
End Sub
#End Region
#Region " GVINV "
Private Sub CreaDTInv(TmDT As DataTable)
TmDT.Columns.Add("CveAlmacen", GetType(Integer))
TmDT.Columns.Add("PUExtranjero", GetType(Double))
TmDT.Columns.Add("CostoIndirectoExtranjero", GetType(Double))
TmDT.Columns.Add("Consec", GetType(Integer))
TmDT.Columns.Add("CantidadSurtidaPantalla", GetType(Double))
If Not TmDT.Columns.Contains("CostoIndirecto") Then
TmDT.Columns.Add("CostoIndirecto", GetType(Double))
End If
GvInv.Columns(2).Visible = False
GvInv.Columns(3).Visible = False
GvInv.Columns(9).Visible = TmDT.SUM("CostoIndirecto") > 0
Dim VariableCampo = If(TipoMovimiento.Contiene(1, 3), "CantidadF", "CantidadS")
Dim Index = 1
For Each Dr As DataRow In TmDT.Rows
Dr("PUExtranjero") = Dr("PU")
Dr("CostoIndirectoExtranjero") = Dr("CostoIndirecto")
Dr("Consec") = Index
Index += 1
Dr("CantidadF") = Dr(VariableCampo)
If Dr(VariableCampo).ToString.ToDecimal <> Dr("CantidadC").ToString.ToDecimal Then
GvInv.Columns(3).Visible = True
End If
Next
DtInv = TmDT '.FiltraParametros("CantidadF > 0")
dt = TmDT
If DtInv.SUM("CantidadS") > 0 Then
GvInv.Columns(2).Visible = True
End If
End Sub
Private Sub CargaGVInv()
If UsuarioActual.CveEmpresa = 119 Then
DtInv = DtInv.FiltraParametros("", "PS")
End If
GvInv.DataSource = DtInv
GvInv.DataBind()
UPInv.Update()
End Sub
Protected Sub GVINV_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles GvInv.RowDataBound
If e.Row.RowType = DataControlRowType.DataRow Then
If e.Row.DBCampo("CveMetodoInventario").ToString.Contiene("5", "6") Then
If e.Row.DBCampo("CveMetodoInventario").ToString = "5" Then
e.Row.FCButton("BtnSerieLote").Visible = True
e.Row.FCButton("BtnSerieLote").CommandArgument = String.Format("{0}°{1}°{2}°{3}°{4}°{5}", e.Row.DBCampo("CvePS"), e.Row.DBCampo("CveUM"), e.Row.DBCampo("PU"), e.Row.DBCampo("PS"), e.Row.DBCampo("CantidadF"), e.Row.DBCampo("Consec"))
e.Row.FCTextBox("TbCantidadF").Enabled = False
e.Row.FCCheckBox("cbInv").Enabled = False
Dim Contador = DtDatosDetalle.FiltraParametros(String.Format("ConsecId = {0}", e.Row.DataKey("Consec"))).Rows.Count
e.Row.FCTextBox("TbCantidadF").Text = Contador.ToString
ElseIf e.Row.DBCampo("CveMetodoInventario").ToString = "6" Then
e.Row.FCButton("BtnLote").Visible = True
e.Row.FCButton("BtnLote").CommandArgument = String.Format("{0}°{1}°{2}°{3}°{4}°{5}", e.Row.DBCampo("CvePS"), e.Row.DBCampo("CveUM"), e.Row.DBCampo("PU"), e.Row.DBCampo("PS"), e.Row.DBCampo("CantidadF"), e.Row.DBCampo("Consec"))
e.Row.FCTextBox("TbCantidadF").Enabled = False
e.Row.FCCheckBox("cbInv").Enabled = False
Dim Contador = DtDatosLoteDetalle.FiltraParametros(String.Format("ConsecId = {0}", e.Row.DataKey("Consec"))).Rows.Count
e.Row.FCTextBox("TbCantidadF").Text = Contador.ToString
End If
Else
e.Row.FCButton("BtnSerieLote").Visible = False
e.Row.FCButton("BtnLote").Visible = False
e.Row.FCTextBox("TbCantidadF").Enabled = True
e.Row.FCTextBox("TbCantidadF").Attributes.Add("onblur", String.Format("ValidarCantidad(this,{0})", e.Row.DBCampo("CantidadF")))
e.Row.FCCheckBox("cbInv").Attributes.Add("onclick", String.Format("Check(this, {0}, {1});", e.Row.FCTextBox("TbCantidadF").ClientID, e.Row.DBCampo("CantidadF")))
If e.Row.DBCampo("EntregaDirecta").ToString = "1" And TipoMovimiento = 1 Then
e.Row.FCCheckBox("cbInv").Checked = True
e.Row.FCCheckBox("cbInv").Enabled = False
e.Row.FCTextBox("TbCantidadF").Text = e.Row.DBCampo("CantidadF").FormatoNumero
e.Row.FCTextBox("TbCantidadF").Enabled = False
End If
End If
'FUNCIONALIDAD PISTOLA DE CODIGOS
If UsuarioActual.Empresa.Funcionalidad(132) = "1" And e.Row.DBCampo("CodigoBarras").Trim <> "" And Not UsuarioActual.TienePermisoProceso(174) Then
e.Row.FCTextBox("TbCantidadF").Enabled = False
End If
If e.Row.DBCampo("CantidadF").ToDecimal = 0 Then
e.Row.FCTextBox("TbCantidadF").Visible = False
e.Row.Cells(3).Text = "0"
e.Row.FCCheckBox("cbInv").Visible = False
End If
'TotalGV += e.Row.DBCampo("PU").ToString.ToDecimal * e.Row.DBCampo("CantidadF").ToString.ToDecimal
If UsuarioActual.Empresa.Funcionalidad(147) = "1" Then
e.Row.FCDropDownList("DdlSeccionAlmacen").DataSource = GlobalDTSeccionAlmacen(UsuarioActual.CveEmpresa)
e.Row.FCDropDownList("DdlSeccionAlmacen").DataBind()
e.Row.FCDropDownList("DdlSeccionAlmacen").Items.Insert(0, New ListItem("Seleccione", "-1"))
End If
e.Row.FCLabel("LbTotal").Text = ((e.Row.DBCampo("PU").ToDecimal + e.Row.DBCampo("CostoIndirecto").ToDecimal) * e.Row.DBCampo("CantidadF").ToDecimal).FormatoNumero
TotalGV += (e.Row.DBCampo("PU").ToDecimal + e.Row.DBCampo("CostoIndirecto").ToDecimal) * e.Row.DBCampo("CantidadF").ToDecimal
End If
If e.Row.RowType = DataControlRowType.Footer Then
Dim TienePermisoImportes As Boolean = UsuarioActual.TienePermisoProceso(201)
e.Row.FCLabel("LbTotal").Visible = TienePermisoImportes
If TienePermisoImportes Then
e.Row.FCLabel("LbTotal").Text = TotalGV.FormatoNumero
TotalGV = 0.0D
e.Row.Font.Bold = True
e.Row.Cells(6).Text = "Total"
e.Row.Cells(6).HorizontalAlign = HorizontalAlign.Right
End If
End If
End Sub
#End Region
#Region " AGREGAR "
#Region " AGREGA CON TXT | CODIGO - SERIE "
Protected Sub BtnCodigoPS_Click(sender As Object, e As EventArgs)
If TxtCodigoPS.Text = "" Then
Exit Sub
End If
TdSeriePS.Visible = False
For Each Gvr As GridViewRow In GvInv.Rows
If Gvr.DataKey("CodigoBarras") = TxtCodigoPS.Text.Trim Then
Dim TxtCantidad = GvInv.Rows(Gvr.RowIndex).FCTextBox("TbCantidadF")
If Gvr.DataKey("CantidadF").ToDecimal - TxtCantidad.Text.ToDecimal - 1 >= 0 Then
If Gvr.DataKey("AplicaSerieLote") = "True" Then
TdSeriePS.Visible = True
TxtSeriePS.Focus()
CveConsecSerieLote = Gvr.DataKey("Consec").ToEntero
CvePSSerieLote = Gvr.DataKey("CvePS").ToEntero
CveUMSerieLote = Gvr.DataKey("CveUM").ToEntero
Exit Sub
End If
Dim CantidadEspecial = Gvr.DataKey("CveClasificacion").ToString.ToEntero.Contiene(17601, 17881) OrElse Gvr.DataKey("CvePS").ToString.ToEntero.Contiene(343032, 343033)
If CantidadEspecial Then
RegistraScript("CantidadEspecial();window.setTimeout(FocusCantidadEspecial,200);")
LtlProductoCantidad.Text = $"{Gvr.DataKey("Codigo")}"
RowIndexCantidadEspecial = Gvr.RowIndex
CantidadEspecialTemp = Gvr.DataKey("CantidadF").ToDecimal
TxtCodigoPS.Text = ""
Exit Sub
Else
'VERIFICA EXISTENCIAS
Dim MensajeSinExistencias As New StringBuilder
If TipoMovimiento > 1 Then
Dim ExistenciaActual = DtInv.SUM("CantidadSurtidaPantalla", $"CvePS = {Gvr.DataKey("CvePS").ToEntero} AND CveUM = {Gvr.DataKey("CveUM").ToEntero} ") + 1
Dim ObjInventarios As New ClsInventarios
Dim Existencia = ObjInventarios.GetExistenciasPS(Gvr.DataKey("CvePS").ToEntero, Gvr.DataKey("CveUM").ToEntero, UsuarioActual.CveEmpresa, DdlAlmacen.SelectedValue.ToEntero, FechaMovto:=TxtFecha.Text.ToDateTime.ToString("yyyy/MM/dd HH:mm"))
ObjInventarios.Dispose()
If Existencia < ExistenciaActual Then
Alert($"El producto con el codigo de barras <b>{TxtCodigoPS.Text}</b> no tiene la existencia suficiente.", TipoMensaje.MsgAdvertencia)
Exit Sub
End If
'EXISTENCIAS DE LA COMPRAR - PARA DEVOLUCION
If TipoMovimiento = 2 Then
If DtExistencias.SUM("Existencia", $"CvePS = {Gvr.DataKey("CvePS").ToEntero} AND CveUM = {Gvr.DataKey("CveUM").ToEntero}") < ExistenciaActual Then
Alert($"El producto con el codigo de barras <b>{TxtCodigoPS.Text}</b> no tiene la existencia suficiente de recepción.", TipoMensaje.MsgAdvertencia)
Exit Sub
End If
End If
End If
TxtCantidad.Text = (TxtCantidad.Text.ToDecimal + 1).ToString.FormatoNumero
TxtCodigoPS.Text = ""
RegistraScript("playsonidito('beep-07.wav')")
UPInv.Update()
Dim Dr = DtInv.Select($"Consec = {Gvr.DataKey("Consec")}")(0)
Dr("CantidadSurtidaPantalla") = TxtCantidad.Text.ToDouble
DtInv.AcceptChanges()
Exit Sub
End If
End If
Alert($"Ya se ha cargado la totalidad del Producto ""<b>{Gvr.DataKey("PS").ToString}</b>"" con el Codigo ""<b>{TxtCodigoPS.Text}</b>"".", TipoMensaje.MsgAdvertencia, "window.setTimeout(Focus,200);")
RegistraScript("playsonidito('142608__autistic-lucario__error.wav')")
End If
Next
Alert($"No se ha encontrado un producto para surtir con el Codigo ""<b>{TxtCodigoPS.Text}</b>"". ", TipoMensaje.MsgAdvertencia, "window.setTimeout(Focus,200);")
RegistraScript("playsonidito('142608__autistic-lucario__error.wav')")
TxtCodigoPS.Text = ""
End Sub
Protected Sub BtnSeriePS_Click(sender As Object, e As EventArgs)
AgregaSerieLote(TxtSeriePS.Text.Trim, 2)
TdSeriePS.Visible = False
TxtSeriePS.Text = ""
TxtCodigoPS.Text = ""
TxtCodigoPS.Focus()
End Sub
Protected Sub BtnGuardarCantidadEspecial_Click(sender As Object, e As EventArgs)
AgregaCantidadEspecial()
End Sub
Private Sub AgregaCantidadEspecial()
Dim TxtCantidad = GvInv.Rows(RowIndexCantidadEspecial).FCTextBox("TbCantidadF")
If CantidadEspecialTemp - TxtCantidadEspecialDiv.Text.ToDecimal - TxtCantidad.Text.ToDecimal >= 0 Then
TxtCantidad.Text = (TxtCantidad.Text.ToDecimal + TxtCantidadEspecialDiv.Text.ToDecimal).ToString.FormatoNumero
'RegistraScript("$('#ModalCantidad').modal('hide');")
RegistraScript("$('#DivCantidadEspecial').hide(200);")
UPInv.Update()
TxtCodigoPS.Focus()
RegistraScript("playsonidito('beep-07.wav')")
Else
Alert("La cantidad excede la pendiente por surtir. Por favor rectifique y vuelva a intentar.", TipoMensaje.MsgAdvertencia, "window.setTimeout(Focus,200);")
RegistraScript("playsonidito('142608__autistic-lucario__error.wav')")
End If
TxtCantidadEspecialDiv.Text = "1"
End Sub
#End Region
#Region " AGREGA POR SERIE/LOTE "
Protected Sub BtnSerieLote_Click(sender As Object, e As EventArgs)
Dim Argumentos = CType(sender, Button).CommandArgument.Split("°"c)
LbProducto.Text = Argumentos(3)
LbCantidad.Text = Argumentos(4).FormatoNumero
TxtFechaCaducidad.Text = Now.ToShortDateString()
CvePSSerieLote = Argumentos(0).ToEntero
CveUMSerieLote = Argumentos(1).ToEntero
PUSerieLote = Argumentos(2).ToDecimal
CveConsecSerieLote = Argumentos(5).ToEntero
CargaSerie(1)
End Sub
Private Sub CreaDtDetalle()
If DtDatosDetalle Is Nothing Then
DtDatosDetalle = New DataTable
DtDatosDetalle.Columns.Add("Consec", GetType(Integer))
DtDatosDetalle.Columns.Add("ConsecId", GetType(Integer))
DtDatosDetalle.Columns.Add("CvePS", GetType(Integer))
DtDatosDetalle.Columns.Add("CveUM", GetType(Integer))
DtDatosDetalle.Columns.Add("PU", GetType(Decimal))
DtDatosDetalle.Columns.Add("Serie", GetType(String))
DtDatosDetalle.Columns.Add("FechaCaducidad", GetType(String))
End If
End Sub
Private Sub CargaSerie(Tipo As Integer, Optional CerrarCompletado As Boolean = False)
'RegistraScript("document.getElementById(""TxtSerieLote"").focus();")
RegistraScript("$('#DivSerie').modal();", "ModalLote")
Dim AplicaCaducidad = False
If GlobalDTPS(UsuarioActual.CveEmpresa, CvePS:=CvePSSerieLote).FiltraParametros("").Rows(0) IsNot Nothing Then
AplicaCaducidad = If(GlobalDTPS(UsuarioActual.CveEmpresa, CvePS:=CvePSSerieLote).FiltraParametros("").Rows(0)("AplicaCaducidad").ToString = "True", True, False)
End If
If AplicaCaducidad Then
GvSerie.Columns(1).Visible = True
TdCaducidad1.Visible = True
TdCaducidad2.Visible = True
Else
GvSerie.Columns(1).Visible = False
TdCaducidad1.Visible = False
TdCaducidad2.Visible = False
End If
GvSerie.DataSource = DtDatosDetalle.FiltraParametros(String.Format("ConsecId = {0}", CveConsecSerieLote), "Consec DESC")
GvSerie.DataBind()
'VALIDA QUE SIGA AGREGANDO
If Not DtDatosDetalle.FiltraParametros(String.Format("ConsecId = {0}", CveConsecSerieLote)).Rows.Count < LbCantidad.Text.ToEntero Then
BtnAgregarPS.Enabled = False
If CerrarCompletado Then
RegistraScript("$('#DivSerie').modal('hide');")
End If
Else
BtnAgregarPS.Enabled = True
End If
'SI TIENE ENTRADA POR SERIE LOTE, BLOQUEAMOS CHECK Y TXTCANTIDAD
Dim Contador = 0
For Each Gvr As GridViewRow In GvInv.Rows
If Gvr.DataKey("CvePS").ToEntero = CvePSSerieLote Then
Contador = DtDatosDetalle.FiltraParametros(String.Format("ConsecId = {0}", Gvr.DataKey("Consec"))).Rows.Count
Gvr.FCCheckBox("cbInv").Enabled = False
Gvr.FCTextBox("TbCantidadF").Enabled = False
If DtDatosDetalle IsNot Nothing AndAlso Contador > 0 Then
Gvr.FCCheckBox("cbInv").Checked = True
Gvr.FCTextBox("TbCantidadF").Text = Contador.ToString
ElseIf Gvr.DataKey("CantidadF").ToString.ToDecimal <> 0 Then
Gvr.FCCheckBox("cbInv").Checked = False
Gvr.FCTextBox("TbCantidadF").Text = "0"
End If
End If
Dim Dr = DtInv.Select($"Consec = {Gvr.DataKey("Consec")}")(0)
Dr("CantidadSurtidaPantalla") = Gvr.FCTextBox("TbCantidadF").Text.ToDouble
DtInv.AcceptChanges()
Next
UPInv.Update()
UpSerie.Update()
TxtSerieLote.Text = ""
TxtSerieLote.Focus()
If Tipo = 1 Then
RegistraScript(String.Format("$('#{0}').on('shown.bs.modal', function () {{$('#{0}').focus(); $('#{0}').trigger(jQuery.Event('keypress', {{which: 13}})); }});$('#DivSerie').modal('show'); ", TxtSerieLote.ClientID))
End If
End Sub
Protected Sub BtnAgregarPS_Click(sender As Object, e As EventArgs)
AgregaSerieLote(TxtSerieLote.Text.Replace(" ", String.Empty), 1)
End Sub
Private Sub AgregaSerieLote(SerieLote As String, Tipo As Integer)
'SerieLote = SerieLote.Trim.Replace(" ", " ")
If SerieLote.Trim = "" Then
Alert("El campo Serie es obligatorio. Por favor rectifique y vuelva a intentar.", TipoMensaje.MsgAdvertencia)
Exit Sub
End If
Dim SeriesArreglo = SerieLote.Trim.Split(";"c)
'VALIDACION DE SERIES DUPLICADAS
Dim MensajeAlert As New StringBuilder
Dim DtDuplicado As New DataTable
Dim DtSeriesNuevas As New DataTable
DtSeriesNuevas.Columns.Add("Serie", GetType(String))
'PARA VALIDAR SI LA SERIE ES IGUAL AL CODIGO O CODIGOBARRAS
Dim dr As DataRow = GlobalDTPS(UsuarioActual.CveEmpresa, CvePS:=CvePSSerieLote).FiltroPrimero("", "PS")
For Each Serie In SeriesArreglo
DtDuplicado = DtDatosDetalle.FiltraParametros($"ConsecId = {CveConsecSerieLote} AND Serie = '{Serie}'")
If DtDuplicado IsNot Nothing AndAlso DtDuplicado.Rows.Count > 0 Then
MensajeAlert.Append($"<br/> El numero de Serie <b>""{Serie}""</b> proporcionado ya se encuentra ingresado.")
Continue For
End If
DtDuplicado = DtSeriesNuevas.FiltraParametros($"Serie = '{Serie}'")
If DtDuplicado IsNot Nothing AndAlso DtDuplicado.Rows.Count > 0 Then
MensajeAlert.Append($"<br/> El numero de Serie <b>""{Serie}""</b> proporcionado se encuentra duplicado.")
Continue For
End If
'PARA VALIDAR SI LA SERIE ES IGUAL AL CODIGO O CODIGOBARRAS
If Serie.ToUpper = dr("Codigo").ToString.ToUpper Or Serie.ToUpper = dr("CodigoBarras").ToString.ToUpper Then
MensajeAlert.Append($"<br/> El numero de Serie <b>{Serie}</b> coincide con el codigo o codigo de barras del producto. Por favor rectifique y vuelva a intentar.")
Continue For
End If
Dim Row = DtSeriesNuevas.NewRow
Row("Serie") = Serie
DtSeriesNuevas.Rows.Add(Row)
Next
If MensajeAlert.ToString <> "" Then
Alert(MensajeAlert.ToString, TipoMensaje.MsgAdvertencia)
RegistraScript("playsonidito('142608__autistic-lucario__error.wav')")
Exit Sub
End If
Dim MensajeSinExistencias As New StringBuilder
Dim ObjInventarios As New ClsInventarios
Dim Index = 0
For Each Serie In SeriesArreglo
Dim Row = DtDatosDetalle.NewRow
Index = Index + 1
If Index > LbCantidad.Text.ToEntero Then
Exit For
End If
'VALIDA QUE SIGA AGREGANDO
If Not DtDatosDetalle.FiltraParametros(String.Format("ConsecId = {0}", CveConsecSerieLote)).Rows.Count < LbCantidad.Text.ToEntero Then
Exit For
End If
'VERIFICA EXISTENCIAS
If TipoMovimiento > 1 Then
Dim Existencia = ObjInventarios.GetExistenciasPS(CvePSSerieLote, CveUMSerieLote, UsuarioActual.CveEmpresa, DdlAlmacen.SelectedValue.ToEntero, FechaMovto:=TxtFecha.Text.ToDateTime.ToString("yyyy/MM/dd HH:mm"), SerieLote:=Serie)
If Existencia < 1 Then
MensajeSinExistencias.Append($"Serie: <b>{Serie}</b>. <br/>")
Continue For
End If
If TipoMovimiento = 2 Then
If DtExistencias.SUM("Existencia", $"SerieLote = {Serie}") = 0 Then
MensajeSinExistencias.Append($"Serie: <b>{Serie}</b>. <br/>")
Continue For
End If
End If
End If
Dim AplicaCaducidad = False
If GlobalDTPS(UsuarioActual.CveEmpresa, CvePS:=CvePSSerieLote).FiltraParametros("").Rows(0) IsNot Nothing Then
AplicaCaducidad = If(GlobalDTPS(UsuarioActual.CveEmpresa, CvePS:=CvePSSerieLote).FiltraParametros("").Rows(0)("AplicaCaducidad").ToString = "True", True, False)
End If
Row("ConsecId") = CveConsecSerieLote
Row("Consec") = DtDatosDetalle.Rows.Count + 1
Row("CvePS") = CvePSSerieLote
Row("CveUM") = CveUMSerieLote
Row("PU") = PUSerieLote
Row("Serie") = Serie
Row("FechaCaducidad") = If(AplicaCaducidad, TxtFechaCaducidad.Text, MinFecha.ToShortDateString)
DtDatosDetalle.Rows.Add(Row)
Next
ObjInventarios.Dispose()
If Tipo = 1 Then
TxtSerieLote.Text = ""
TxtFechaCaducidad.Text = Now.ToShortDateString
End If
CargaSerie(Tipo, True)
If MensajeAlert.ToString <> "" Then
RegistraScript("playsonidito('142608__autistic-lucario__error.wav')")
Else
If MensajeSinExistencias.ToString <> "" Then
Alert($"Las siguientes Series no cuentan con la existencia suficiente por lo cual se omitieron. <br?><br/> {MensajeSinExistencias.ToString}", TipoMensaje.MsgAdvertencia)
End If
RegistraScript("playsonidito('beep-07.wav')")
End If
End Sub
Protected Sub GvSerie_RowDeleting(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewDeleteEventArgs) Handles GvSerie.RowDeleting
Dim keySerieLote As String = e.Keys("Serie").ToString
Try
For Each dr As DataRow In DtDatosDetalle.Rows
If dr("Serie").ToString = keySerieLote Then
dr.Delete()
End If
Next
Catch ex As Exception
End Try
DtDatosDetalle.AcceptChanges()
CargaSerie(1)
End Sub
#End Region
#Region " AGREGAR POR LOTE BATCH "
Private Sub CreaDtLoteDetalle()
If DtDatosLoteDetalle Is Nothing Then
DtDatosLoteDetalle = New DataTable
DtDatosLoteDetalle.Columns.Add("Consec", GetType(Integer))
DtDatosLoteDetalle.Columns.Add("ConsecId", GetType(Integer))
DtDatosLoteDetalle.Columns.Add("Cantidad", GetType(Double))
DtDatosLoteDetalle.Columns.Add("CvePS", GetType(Integer))
DtDatosLoteDetalle.Columns.Add("CveUM", GetType(Integer))
DtDatosLoteDetalle.Columns.Add("PU", GetType(Decimal))
DtDatosLoteDetalle.Columns.Add("Lote", GetType(String))
DtDatosLoteDetalle.Columns.Add("Batch", GetType(String))
DtDatosLoteDetalle.Columns.Add("FechaCaducidad", GetType(String))
End If
End Sub
Protected Sub BtnLote_Click(sender As Object, e As EventArgs)
Dim Argumentos = CType(sender, Button).CommandArgument.Split("°"c)
LbLoteProducto2.Text = Argumentos(3)
LbLoteCantidad2.Text = Argumentos(4).FormatoNumero
CvePSSerieLote = Argumentos(0).ToEntero
CveUMSerieLote = Argumentos(1).ToEntero
PUSerieLote = Argumentos(2).ToDecimal
CveConsecSerieLote = Argumentos(5).ToEntero
CargaLote(1)
End Sub
Private Sub CargaLote(Tipo As Integer, Optional CerrarCompletado As Boolean = False)
RegistraScript("$('#DivLote').modal();", "ModalLote")
GvLote.DataSource = DtDatosLoteDetalle.FiltraParametros(String.Format("ConsecId = {0}", CveConsecSerieLote), "Consec DESC")
GvLote.DataBind()
'VALIDA QUE SIGA AGREGANDO
If Not DtDatosLoteDetalle.SUM("Cantidad", String.Format("ConsecId = {0}", CveConsecSerieLote)) < LbLoteCantidad2.Text.ToDouble Then
BtnAddPSLote.Enabled = False
If CerrarCompletado Then
RegistraScript("$('#DivLote').modal('hide');")
End If
Else
BtnAddPSLote.Enabled = True
End If
'SI TIENE ENTRADA POR LOTE, BLOQUEAMOS CHECK Y TXTCANTIDAD
Dim Contador = 0.0
For Each Gvr As GridViewRow In GvInv.Rows
If Gvr.DataKey("CvePS").ToEntero = CvePSSerieLote Then
Contador = DtDatosLoteDetalle.SUM("Cantidad", String.Format("ConsecId = {0}", Gvr.DataKey("Consec")))
Gvr.FCCheckBox("cbInv").Enabled = False
Gvr.FCTextBox("TbCantidadF").Enabled = False
If DtDatosLoteDetalle IsNot Nothing AndAlso Contador > 0 Then
Gvr.FCCheckBox("cbInv").Checked = True
Gvr.FCTextBox("TbCantidadF").Text = Contador.ToString
ElseIf Gvr.DataKey("CantidadF").ToString.ToDecimal <> 0 Then
Gvr.FCCheckBox("cbInv").Checked = False
Gvr.FCTextBox("TbCantidadF").Text = "0"
End If
End If
Dim Dr = DtInv.Select($"Consec = {Gvr.DataKey("Consec")}")(0)
Dr("CantidadSurtidaPantalla") = Gvr.FCTextBox("TbCantidadF").Text.ToDouble
DtInv.AcceptChanges()
Next
RVCantidadLote.MaximumValue = (If((LbLoteCantidad2.Text.ToDouble - Contador) = 0, 0.02, LbLoteCantidad2.Text.ToDouble - Contador)).ToString.FormatoNumero
TxtCantidadLote.Text = "1"
TxtLote.Text = ""
TxtBatch.Text = ""
TxtFechaCaducidadLote.Text = If(TxtFechaCaducidadLote.Text.Trim = "", Now.ToShortDateString(), TxtFechaCaducidadLote.Text)
TxtLote.Focus()
UPInv.Update()
UpLote.Update()
If Tipo = 1 Then
RegistraScript(String.Format("$('#{0}').on('shown.bs.modal', function () {{$('#{0}').focus(); $('#{0}').trigger(jQuery.Event('keypress', {{which: 13}})); }});$('#DivLote').modal('show'); ", TxtLote.ClientID))
End If
End Sub
Protected Sub BtnAddPSLote_Click(sender As Object, e As EventArgs)
AgregaLote(TxtLote.Text.Trim, TxtBatch.Text.Trim, 1)
End Sub
Private Sub AgregaLote(Lote As String, Batch As String, Tipo As Integer)
If Lote.Trim = "" Then
Alert("El campo Lote es obligatorio. Por favor rectifique y vuelva a intentar.", TipoMensaje.MsgAdvertencia)
Exit Sub
End If
'VALIDACION DE SERIES DUPLICADAS
Dim MensajeAlert As New StringBuilder
Dim DtDuplicado As New DataTable
Dim DtSeriesNuevas As New DataTable
DtSeriesNuevas.Columns.Add("Serie", GetType(String))
DtDuplicado = DtDatosLoteDetalle.FiltraParametros($"ConsecId = {CveConsecSerieLote} AND Lote = '{Lote}' AND Batch = '{Batch}'")
If DtDuplicado IsNot Nothing AndAlso DtDuplicado.Rows.Count > 0 Then
Alert($"<br/> El numero de Lote <b>""{Lote}""</b> y Batch = '{Batch}' proporcionado ya se encuentra ingresado.", TipoMensaje.MsgAdvertencia)
RegistraScript("playsonidito('142608__autistic-lucario__error.wav')")
Exit Sub
End If
Dim Row = DtDatosLoteDetalle.NewRow
Dim CantidadLote = TxtCantidadLote.Text.ToDouble
Dim MensajeSinExistencias As New StringBuilder
Dim ObjInventarios As New ClsInventarios
'VERIFICA EXISTENCIAS
If TipoMovimiento > 1 Then
Dim Existencia = ObjInventarios.GetExistenciasPS(CvePSSerieLote, CveUMSerieLote, UsuarioActual.CveEmpresa, DdlAlmacen.SelectedValue.ToEntero, FechaMovto:=TxtFecha.Text.ToDateTime.ToString("yyyy/MM/dd HH:mm"), Lote:=Lote, Batch:=Batch)
If Existencia < CantidadLote Then
Alert($"<br/> El numero de Lote <b>""{Lote}""</b> y Batch = '{Batch}' proporcionado ya se encuentra ingresado.", TipoMensaje.MsgAdvertencia)
RegistraScript("playsonidito('142608__autistic-lucario__error.wav')")
End If
If TipoMovimiento = 2 Then
If Not DtExistencias.SUM("Existencia", $"Lote = '{Lote}' Batch = '{Batch}'") = 0 Then
Alert($"<br/> El numero de Lote <b>""{Lote}""</b> y Batch '{Batch}' proporcionado ya se encuentra ingresado.", TipoMensaje.MsgAdvertencia)
RegistraScript("playsonidito('142608__autistic-lucario__error.wav')")
End If
End If
End If
Row("ConsecId") = CveConsecSerieLote
Row("Consec") = DtDatosDetalle.Rows.Count + 1
Row("Cantidad") = CantidadLote
Row("CvePS") = CvePSSerieLote
Row("CveUM") = CveUMSerieLote
Row("PU") = PUSerieLote
Row("Lote") = Lote
Row("Batch") = Batch
Row("FechaCaducidad") = If(IsDate(TxtFechaCaducidadLote.Text), TxtFechaCaducidadLote.Text, MinFecha.ToShortDateString)
'Row("FechaCaducidad") = If(AplicaCaducidad, TxtFechaCaducidadLote.Text, MinFecha.ToShortDateString)
DtDatosLoteDetalle.Rows.Add(Row)
ObjInventarios.Dispose()
If Tipo = 1 Then
TxtLote.Text = ""
TxtBatch.Text = ""
TxtFechaCaducidad.Text = Now.ToShortDateString
End If
CargaLote(1, True)
End Sub
Protected Sub GvLote_RowDeleting(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewDeleteEventArgs) Handles GvLote.RowDeleting
Dim keyLote As String = e.Keys("Lote").ToString
Dim keyBatch As String = e.Keys("Batch").ToString
Try
For Each dr As DataRow In DtDatosLoteDetalle.Rows
If dr("Lote").ToString = keyLote And dr("Batch").ToString = keyBatch Then
dr.Delete()
End If
Next
Catch ex As Exception
End Try
DtDatosLoteDetalle.AcceptChanges()
CargaLote(1)
End Sub
#End Region
#End Region
#Region " GUARDAR "
Private Function ValidaGuardar() As Boolean
Dim TotalCantidad As Double = GvInv.Rows.Cast(Of GridViewRow)().Sum(Function(gvr) gvr.FCTextBox("TbCantidadF").Text.ToDouble)
If TotalCantidad <= 0 Then
Alert("No se seleccionó ninguna cantidad de productos a guardar. Por favor verifique e intente nuevamente.", TipoMensaje.MsgAdvertencia)
RegistraScript("playsonidito('142608__autistic-lucario__error.wav')")
Return False
End If
'verifica si recibió al 100% la compra
'bandera que me indica que se cargaron todos los productos, yque se verifique si los detalle s se van a recibir al 100
' que la cantidad orginal sea igual a la recibida. para considedrarse completa
If RecibidaCompleta Then
For Each Gvr As GridViewRow In GvInv.Rows
If Not Gvr.FCCheckBox("cbInv").Checked Or Gvr.FCTextBox("TbCantidadF").Text.ToDecimal <> Gvr.DataKey("CantidadF").ToString.ToDecimal OrElse Gvr.DataKey("CantidadC").ToString.ToDecimal <> Gvr.DataKey("CantidadF").ToString.ToDecimal Then
RecibidaCompleta = False
End If
Next
End If
If EntregaDirecta Then
For Each Gvr As GridViewRow In GvInv.Rows
If Not Gvr.FCCheckBox("cbInv").Checked Or Gvr.FCTextBox("TbCantidadF").Text.ToDecimal <> Gvr.DataKey("CantidadF").ToString.ToDecimal Then
Alert("La compra se debe surtir completa por ser entrega directa. Por favor verifique e intente nuevamente.", TipoMensaje.MsgAdvertencia)
RegistraScript("playsonidito('142608__autistic-lucario__error.wav')")
Return False
End If
Next
End If
Dim TotalPorDevengar As Double = 0.0
If UsuarioActual.Empresa.UsaAC Then
TotalPorDevengar += GvAC.Rows.Cast(Of GridViewRow)().Sum(Function(Gvr) Gvr.FCTextBox("TxtImporte").Text.ToDouble)
If TotalPorDevengar <= 0 Then
Alert("Especifique el importe del presupuesto", TipoMensaje.MsgAdvertencia)
RegistraScript("playsonidito('142608__autistic-lucario__error.wav')")
Return False
End If
End If
If DdlMonedaTC.SelectedValue = "2" Then
AplicarTipoCambio()
If TipoCambio <= 0 Then
Alert("Ocurrió un error al obtener el tipo de cambio. Por favor verifique e intente de nuevo.", TipoMensaje.MsgAdvertencia)
RegistraScript("playsonidito('142608__autistic-lucario__error.wav')")
Return False
End If
End If
'VALIDA SI HUBO CAMBIOS EN LOS DETALLES COMPRA
If CveCompraSurtir > 0 Then
Dim VariableCampo = If(TipoMovimiento.Contiene(1, 3), "CantidadF", "CantidadS")
Dim ObjComprasDif As New ClsInventarios
Dim DtDatosCompra As New DataTable
If ObjComprasDif.RecepcionAlmacenGet(CveCompraSurtir, BuscaEntregaDirecta, UsuarioActual.CveEmpresa) Then
DtDatosCompra = ObjComprasDif.DtResultados
End If
Dim CantidadGV = GvInv.Rows.Cast(Of GridViewRow)().Sum(Function(gvr) gvr.DataKey("CantidadF").ToDouble)
Dim CantConsulta = DtDatosCompra.SUM(VariableCampo)
If Math.Abs(CantidadGV - CantConsulta) > 0.01 Then
CargaCompra(CveCompraSurtir, -1)
CargaPendientes()
Alert("Ha sido cambiada la información de existencias de la compra actual, se han recargado la información.", TipoMensaje.MsgAdvertencia)
ObjComprasDif.Dispose()
Return False
End If
ObjComprasDif.Dispose()
End If
'VALIDA SI HUBO CAMBIOS EN LOS DETALLES OC
If CveOCSurtir > 0 Then
Dim VariableCampo = If(TipoMovimiento = 1, "CantidadF", "CantidadS")
Dim ObjComprasDif As New ClsInventarios
Dim DtDatosOC As New DataTable
If ObjComprasDif.RecepcionAlmacenOCGet(CveOCSurtir, UsuarioActual.CveEmpresa) Then
DtDatosOC = ObjComprasDif.DtResultados.FiltraParametros("CantidadCompra = 0")
End If
Dim CantidadGV = GvInv.Rows.Cast(Of GridViewRow)().Sum(Function(gvr) gvr.DataKey("CantidadF").ToDouble)
Dim CantConsulta = DtDatosOC.SUM(VariableCampo)
If Math.Abs(CantidadGV - CantConsulta) > 0.1 Then
CargaOCPorSurtir(CveOCSurtir)
Alert("Ha sido cambiada la información de existencias de la orden de compra actual, se han recargado la información.", TipoMensaje.MsgAdvertencia)
ObjComprasDif.Dispose()
Return False
End If
ObjComprasDif.Dispose()
End If
'VALIDA SI HUBO CAMBIOS EN LOS DETALLES IMPORTACION
If CveImportacionSurtir > 0 Then
Dim VariableCampo = If(TipoMovimiento = 1, "CantidadF", "CantidadS")
Dim ObjComprasDif As New ClsInventarios
Dim DtDatosImportacion As New DataTable
If ObjComprasDif.RecepcionAlmacenImportacionGet(CveImportacionSurtir, CveImportacionCompra, CveImportacionProveedor, UsuarioActual.CveEmpresa) Then
DtDatosImportacion = ObjComprasDif.DtResultados
End If
Dim CantidadGV = GvInv.Rows.Cast(Of GridViewRow)().Sum(Function(gvr) gvr.DataKey("CantidadF").ToDouble)
Dim CantConsulta = DtDatosImportacion.SUM(VariableCampo)
If CantidadGV <> CantConsulta Then
CargaImportacionSurtir(CveImportacionSurtir)
Alert("Ha sido cambiada la información de existencias de la importación actual, se han recargado la información.", TipoMensaje.MsgAdvertencia)
ObjComprasDif.Dispose()
Return False
End If
ObjComprasDif.Dispose()
End If
'VALIDA SI HUBO CAMBIOS EN LOS DETALLES FLETES
If CveFleteSurtir > 0 Then
Dim VariableCampo = If(TipoMovimiento = 1, "CantidadF", "CantidadS")
Dim ObjComprasDif As New ClsInventarios
Dim DtDatosImportacion As New DataTable
If ObjComprasDif.RecepcionAlmacenFleteGet(CveFleteSurtir, CveFleteOrdenCompra, CveFleteCompra, UsuarioActual.CveEmpresa) Then
DtDatosImportacion = ObjComprasDif.DtResultados
End If
Dim CantidadGV = GvInv.Rows.Cast(Of GridViewRow)().Sum(Function(gvr) gvr.DataKey("CantidadF").ToDouble)
Dim CantConsulta = DtDatosImportacion.SUM(VariableCampo)
If CantidadGV <> CantConsulta Then
CargaFleteSurtir(CveFleteSurtir)
Alert("Ha sido cambiada la informacion de existencias costo indirecto actual, se han recargado la información.", TipoMensaje.MsgAdvertencia)
ObjComprasDif.Dispose()
Return False
End If
ObjComprasDif.Dispose()
End If
'PASA DATOS DEL GV A DATATABLE PARA MANEJOR CON FOR EACH
Dim Index = 0
For Each gvr As GridViewRow In GvInv.Rows
If gvr.FCCheckBox("cbInv").Checked AndAlso gvr.FCTextBox("TbCantidadF").Text.ToDecimal > 0 Then
DtInv.Rows(Index)("CantidadSurtidaPantalla") = gvr.FCTextBox("TbCantidadF").Text.ToDouble
End If
Index += 1
Next
'VERIFICA EXISTENCIAS
If TipoMovimiento > 1 Then
Dim MensajeExistencias As New StringBuilder
Dim ObjInventarios As New ClsInventarios
For Each gvr As GridViewRow In GvInv.Rows
Dim ExistenciaActual = DtInv.SUM("CantidadSurtidaPantalla", $"CvePS = {gvr.DataKey("CvePS").ToEntero} AND CveUM = {gvr.DataKey("CveUM").ToEntero} ")
If TipoMovimiento = 2 Then
'If gvr.DataKey("CantidadC").ToString.ToDecimal <> ExistenciaActual Then
' Alert("La devolución debe de ser completa.", TipoMensaje.MsgAdvertencia)
' Exit Sub
'End If
If DtExistencias.SUM("Existencia", $"CvePS = {gvr.DataKey("CvePS").ToEntero} AND CveUM = {gvr.DataKey("CveUM").ToEntero}") < ExistenciaActual Then
MensajeExistencias.Append($"Producto: <b>{GlobalDTPS(UsuarioActual.CveEmpresa, CvePS:=gvr.DataKey("CvePS").ToString.ToEntero).FiltroPrimeroValor("PSCodigo")}</b>.</br>")
Continue For
End If
End If
Dim Existencia = ObjInventarios.GetExistenciasPS(gvr.DataKey("CvePS").ToEntero, gvr.DataKey("CveUM").ToEntero, UsuarioActual.CveEmpresa, DdlAlmacen.SelectedValue.ToEntero, FechaMovto:=TxtFecha.Text.ToDateTime.ToString("yyyy/MM/dd HH:mm"))
If Existencia < ExistenciaActual Then
MensajeExistencias.Append($"Producto: <b>{GlobalDTPS(UsuarioActual.CveEmpresa, CvePS:=gvr.DataKey("CvePS").ToString.ToEntero).FiltroPrimeroValor("PSCodigo")}</b>.</br>")
Continue For
End If
Next
ObjInventarios.Dispose()
If MensajeExistencias.ToString <> "" Then
Alert($"Los siguientes productos no cuentan con la existencia suficiente para hacer la devolución. </br></br> {MensajeExistencias.ToString}", TipoMensaje.MsgAdvertencia)
Return False
End If
End If
If UsuarioActual.Empresa.Funcionalidad(563) = "1" Then
If TotalCantidad <> DtSeccionAlmacen.SUMD("CantidadSeccionAlmacen") Then
Alert("La seccion de almacen no ha sido agregada completamente.", TipoMensaje.MsgAdvertencia)
Return False
End If
End If
Return True
End Function
Protected Sub BtnGuardar_Click(sender As Object, e As EventArgs) Handles BtnGuardar.Click
'VALIDACIONES
If Not ValidaGuardar() Then
Exit Sub
End If
If CveCompraSurtir > 0 Or CveOCSurtir > 0 Then
GuardaCompraOC()
ElseIf CveImportacionSurtir > 0 Then
GuardaImportacionFlete()
ElseIf CveFleteSurtir > 0 Then
GuardaImportacionFlete()
Else
Alert("Ocurrio un error al procesar la informacion para guardar el movimiento. Por favor comuniquese con atencion SIG.", TipoMensaje.MsgError)
End If
End Sub
Private Function GeneraPrePolizaSalidaEntregaDirecta(CveMovimiento As Integer, ByRef ObjInventario As ClsInventarios, ByRef ObjConta As ClsContabilidad, ByRef ObjContaContPAQ As ClsContPAQi) As Boolean
Dim Retorno As Boolean = True
Try
Dim DtCostos As DataTable = Nothing
Dim ValorInventario As Decimal = 0
Dim ValorInventarioME As Decimal = 0
Dim CveConcepto As Integer = 3
ObjInventario.GetMovimientos(CveMovimiento, -1, -1, UsuarioActual.CveEmpresa)
Dim CveVenta As Integer = ObjInventario.CveVenta
Dim CveAlmacen As Integer = ObjInventario.CveAlmacen
Dim SerieFolio As String = ObjInventario.DtResultados.Rows(0)("SerieFolioVenta").ToString
Dim MovAlmacen As Boolean = True
Dim OrigenMov As Integer = GlobalDTInvConceptos.FiltroPrimeroValor("Origen", "CveConcepto = " & CveConcepto).ToEntero
If OrigenMov = 1 Then MovAlmacen = False Else MovAlmacen = True
If ObjInventario.GetMovimientosDetalle(CveMovimiento, UsuarioActual.CveEmpresa) Then
DtCostos = ObjInventario.DtResultados
Dim tmpCostos As DataTable = DtCostos.FiltraParametros("", "", {"CveClasificacion"})
Dim IdCtaContable As Integer = 0
Dim ConceptoPoliza As String = String.Format("{0}-{1}", "Salida de Almacen", SerieFolio)
If tmpCostos.Rows.Count > 0 Then
Dim Concepto As String = ConceptoPoliza
Dim CvePrePoliza = ObjConta.AddPrePolizas("Inv_EntradaSalida", 74, DtCostos.SUM("Total"), DtCostos.SUM("Total"), 1, TxtFecha.Text.ToDate, ConceptoPoliza, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa)
Dim tCveSubProyecto = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("CveSubProyecto", $"CveAlmacen={CveAlmacen}").ToEntero
Dim tCveConcepto As Integer = 69
For Each RowInv As DataRow In tmpCostos.Rows
ValorInventario = DtCostos.SUM("Total", $"CveClasificacion = {RowInv("CveClasificacion")}").ToString.ToDecimal.RoundSQL
If tCveConcepto = 69 Then
IdCtaContable = GlobalDTClasificaciones(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCuentaCostos", $"CveClasificacion = {RowInv("CveClasificacion")}").ToEntero
End If
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, Not MovAlmacen, ValorInventario, Concepto, tCveConcepto, Concepto, TxtFecha.Text.ToDate, IdCtaContable, -1, CveVenta:=CveVenta, CveClasificacion:=RowInv("CveClasificacion").ToString.ToEntero, CveMovimientoAlmacen:=CveMovimiento, ImporteMX:=ValorInventario, CveSubProyecto:=tCveSubProyecto) Then
Retorno = False
Exit For
End If
Next
IdCtaContable = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCtaContable", $"CveAlmacen={CveAlmacen}").ToEntero
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, MovAlmacen, DtCostos.SUMD("Total").RoundSQL, Concepto, 68, Concepto, TxtFecha.Text.ToDate, IdCtaContable, -1, CveVenta:=CveVenta, CveMovimientoAlmacen:=CveMovimiento, ImporteMX:=DtCostos.SUMD("Total").RoundSQL) Then
Retorno = False
End If
If ObjConta.ValidacionPrePolizaCuadre(CvePrePoliza, -1) Then
If ObjConta.ValorPolizaDescuadre > 0 Then
GuardaLogAD($"Inventarios/RecepcionAlmacen-PPCompOC | Error:{ObjConta.MensajePolizaDescuadre} Diferencia:{ObjConta.ValorDiferencia} | CvePrePoliza:{CvePrePoliza}", "LogPrePolizas")
Retorno = False
End If
End If
'CONTABILIZAR - SIMPLIFICAR
If Retorno Then
If UsuarioActual.Empresa.Funcionalidad(220) <> "" Then
If Not ObjConta.PrePolizaSimplificacion(CvePrePoliza, UsuarioActual.CveEmpresa) Then
Retorno = False
End If
End If
If UsuarioActual.Empresa.Funcionalidad(200) = "1" Then
If ObjContaContPAQ Is Nothing Then
ObjContaContPAQ = New ClsContPAQi(UsuarioActual.Empresa)
ObjContaContPAQ.IniciaTransacSQL()
End If
If Not ObjConta.ContabilizarPrePoliza(CvePrePoliza, UsuarioActual.CveUsuario, UsuarioActual.Empresa, ObjConta:=ObjContaContPAQ) Then
Retorno = False
End If
End If
End If
Else
Retorno = False
End If
Else
Retorno = False
End If
Catch ex As Exception
OnError("Ocurrió un error al guadar la prepoliza", ex)
Retorno = False
End Try
Return Retorno
End Function
Private Sub GuardaCompraOC()
Dim CveMovimiento As Integer
Dim InvFolio As String = ""
Dim FechaMovto As Date = TxtFecha.Text.ToDate
Dim ErrorMovInv As Boolean
Dim MensajeError = ""
Dim ObjInventario As New ClsInventarios
Dim ObjBitacora As New ClsOIEventos(ObjInventario.IniciaTransacSQL())
Dim ObjCompras As New ClsCompras(ObjInventario.IniciaTransacSQL())
Dim ObjConta As New ClsContabilidad(ObjInventario.IniciaTransacSQL())
Dim ObjOC As New ClsOC(ObjInventario.IniciaTransacSQL())
Dim ObjContaAC As ClsContPAQi = Nothing
Dim ObjContaContPAQ As ClsContPAQi = Nothing
'ENTREGA DIRECTA
Dim CveMovtoSalidaDirecta = -1
Dim FolioSalidaDirecta = -1
'APARTADOS
Dim MovtosSalida As New List(Of Integer)
Dim FoliosSalida As New List(Of Integer)
Dim MovtosEntrada As New List(Of Integer)
Dim FoliosEntrada As New List(Of Integer)
'CONTABILIDAD
Dim CvePrePoliza = -1
Dim MensajeContabilidad = ""
'RECARGA TC CUANDO ES RECEPCION CON OC Y DOLARES
If CveOCSurtir > 0 And CveMoneda <> 1 Then
TipoCambio = GlobalTipoCambio(TxtFecha.Text.ToDate)
End If
If HdnTipoDocto.Value <> "Fac" Then RecibidaCompleta = False
'ENTRADA ALMACÉN
CveMovimiento = ObjInventario.AddMovimiento(DdlAlmacen.SelectedValue.ToEntero, If(TipoMovimiento > 1, 13, 2), 1, FechaMovto, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveCompraSurtir, -1, -1, -1, Observaciones:=TxtObservaciones.Text.Trim, TipoCambio:=If(DdlMonedaTC.SelectedValue.ToEntero = 1, -1, TipoCambio), MovimientoFijo:=If(TipoMovimiento = 2, True, False), Remision:=TxtRemision.Text)
If CveMovimiento > 0 Then
InvFolio = ObjInventario.Folio.ToString
Dim DtDetalle As New DataTable
Dim DtDetalleLote As New DataTable
Dim PU As Decimal = 0.0D
Dim PUExtranjero As Decimal = 0.0D
Dim CostoIndirecto As Decimal = 0.0D
Dim SumaTotal As Decimal = 0.0D
Dim Cont As Integer = 0
For Each gvr As GridViewRow In GvInv.Rows
If gvr.FCCheckBox("cbInv").Checked AndAlso gvr.FCTextBox("TbCantidadF").Text.ToDecimal > 0 Then
PU = DtInv.Rows(gvr.RowIndex)("PU").ToString.ToDecimal
CostoIndirecto = DtInv.Rows(gvr.RowIndex)("CostoIndirecto").ToString.ToDecimal
PUExtranjero = DtInv.Rows(gvr.RowIndex)("PUExtranjero").ToString.ToDecimal
'SI FUE POR SERIE LOTE
DtDetalle = DtDatosDetalle.FiltraParametros(String.Format("ConsecId = {0}", gvr.DataKey("Consec").ToEntero))
DtDetalleLote = DtDatosLoteDetalle.FiltraParametros(String.Format("ConsecId = {0}", gvr.DataKey("Consec").ToEntero))
If DtDetalle.Rows.Count > 0 Then
Dim ContDt As Integer = 0
For Each Dr As DataRow In DtDetalle.Rows
SumaTotal += PU + CostoIndirecto
If RecibidaCompleta AndAlso Cont + 1 = GvInv.Rows.Count AndAlso ContDt + 1 = DtDetalle.Rows.Count AndAlso Math.Round((TotalCompraOC * If(TipoCambio > 1, TipoCambio, 1)), 2) <> SumaTotal Then
PU = Math.Round((TotalCompraOC * If(TipoCambio > 1, TipoCambio, 1)), 2).ToDecimal - (SumaTotal - (PU))
End If
If Not ObjInventario.AddMovimientoDetalle(CveMovimiento, 1, gvr.DataKey("CveUM").ToEntero, gvr.DataKey("CvePS").ToEntero, PU, -1, CveSeccionAlmacen:=gvr.FCDropDownList("DdlSeccionAlmacen").SelectedValue.ToEntero, PUTC:=If(DdlMonedaTC.SelectedValue.ToEntero = 1, -1, PUExtranjero), SerieLote:=Dr("Serie").ToString, FechaCaducidad:=Dr("FechaCaducidad").ToString.ToDate, CveCompraDetalle:=gvr.DataKey("CveCompraDetalle").ToEntero, CveOrdenCompraDetalle:=gvr.DataKey("CveOrdenCompraDetalle").ToEntero, CveVentaDetalle:=gvr.DataKey("CveVentaDetalle").ToEntero, CostoIndirecto:=CostoIndirecto, CveUsuarioModifico:=UsuarioActual.CveUsuario) Then
ErrorMovInv = True
Exit For
End If
ContDt += 1
Next
ElseIf DtDetalleLote.Rows.Count > 0 Then
Dim ContDt As Integer = 0
For Each Dr As DataRow In DtDetalleLote.Rows
SumaTotal += Dr("Cantidad").ToString.ToDecimal * (PU + CostoIndirecto)
If RecibidaCompleta AndAlso Cont + 1 = GvInv.Rows.Count AndAlso ContDt + 1 = DtDetalleLote.Rows.Count AndAlso Math.Round((TotalCompraOC * If(TipoCambio > 1, TipoCambio, 1)), 2) <> SumaTotal Then
PU = (Math.Round((TotalCompraOC * If(TipoCambio > 1, TipoCambio, 1)), 2).ToDecimal - (SumaTotal - (Dr("Cantidad").ToString.ToDecimal * (PU)))) / Dr("Cantidad").ToString.ToDecimal
End If
If Not ObjInventario.AddMovimientoDetalle(CveMovimiento, Dr("Cantidad").ToString.ToDouble, gvr.DataKey("CveUM").ToEntero, gvr.DataKey("CvePS").ToEntero, PU, -1, CveSeccionAlmacen:=gvr.FCDropDownList("DdlSeccionAlmacen").SelectedValue.ToEntero, PUTC:=If(DdlMonedaTC.SelectedValue.ToEntero = 1, -1, PUExtranjero), Lote:=Dr("Lote").ToString, Batch:=Dr("Batch").ToString, FechaCaducidad:=Dr("FechaCaducidad").ToString.ToDate, CveCompraDetalle:=gvr.DataKey("CveCompraDetalle").ToEntero, CveOrdenCompraDetalle:=gvr.DataKey("CveOrdenCompraDetalle").ToEntero, CveVentaDetalle:=gvr.DataKey("CveVentaDetalle").ToEntero, CostoIndirecto:=CostoIndirecto, CveUsuarioModifico:=UsuarioActual.CveUsuario) Then
ErrorMovInv = True
Exit For
End If
ContDt += 1
Next
Else
SumaTotal += gvr.FCTextBox("TbCantidadF").Text.ToDecimal * (PU + CostoIndirecto) ' considerar el costo indirecto para el ajuste
If RecibidaCompleta AndAlso Cont + 1 = GvInv.Rows.Count AndAlso Math.Round((TotalCompraOC * If(TipoCambio > 1, TipoCambio, 1)), 2) <> Math.Round(SumaTotal, 2) Then
Dim tTotal As Decimal = gvr.FCTextBox("TbCantidadF").Text.ToDecimal * (PU)
PU = (Math.Round((TotalCompraOC * If(TipoCambio > 1, TipoCambio, 1)), 2).ToDecimal - (SumaTotal - tTotal)) / gvr.FCTextBox("TbCantidadF").Text.ToDecimal
End If
If Not ObjInventario.AddMovimientoDetalle(CveMovimiento, gvr.FCTextBox("TbCantidadF").Text.ToDouble, gvr.DataKey("CveUM").ToEntero, gvr.DataKey("CvePS").ToEntero, PU, -1, CveSeccionAlmacen:=gvr.FCDropDownList("DdlSeccionAlmacen").SelectedValue.ToEntero, PUTC:=If(DdlMonedaTC.SelectedValue.ToEntero = 1, -1, PUExtranjero), CveCompraDetalle:=gvr.DataKey("CveCompraDetalle").ToEntero, CveOrdenCompraDetalle:=gvr.DataKey("CveOrdenCompraDetalle").ToEntero, CveVentaDetalle:=gvr.DataKey("CveVentaDetalle").ToEntero, CostoIndirecto:=CostoIndirecto, CveUsuarioModifico:=UsuarioActual.CveUsuario) Then
ErrorMovInv = True
Exit For
End If
End If
If ObjInventario.CveMovimientoDetalle > 0 AndAlso DtSeccionAlmacen.Rows.Count > 0 Then
For Each Dr As DataRow In DtSeccionAlmacen.FiltraParametros($"IndexSeccionAlmacen = {gvr.RowIndex}").Rows
If Not ObjInventario.AddMovimientosDetalleSeccionesAlmacen(ObjInventario.CveMovimientoDetalle, Dr("CveSeccionAlmacen").ToString.ToEntero, Dr("CantidadSeccionAlmacen").ToString.ToDecimal) Then
ErrorMovInv = True
Exit For
End If
Next
End If
Cont += 1
End If
Next
Else
ErrorMovInv = True
End If
''VALIDACIÓN DE IMPORTES INGRESADOS VS LA COMPRA U OC
If Not ErrorMovInv AndAlso RecibidaCompleta AndAlso ObjInventario.GetMovimientosDetalle(CveMovimiento, UsuarioActual.CveEmpresa) Then
Dim dtt As DataTable = ObjInventario.DtResultados
Dim tTotalInsertado As Decimal = dtt.SUMD("TotalOriginal")
If CveTipoCompra = 8 Then 'entrada almacen con costo indirecto cargado en la misma compra
tTotalInsertado = dtt.SUMD("Total") ' está incluido el costo indirecto en la factura
End If
If Math.Round(TotalCompraOC * If(TipoCambio > 1, TipoCambio, 1), 2) <> Math.Round(tTotalInsertado, 2) Then
ErrorMovInv = True
Alert("La Entrada no coincide con el valor del documento." & Math.Round(TotalCompraOC * If(TipoCambio > 1, TipoCambio, 1), 2) & " -" & tTotalInsertado, TipoMensaje.MsgError)
GuardaLog("La Entrada no coincide con el valor del documento." & Math.Round(TotalCompraOC * If(TipoCambio > 1, TipoCambio, 1), 2) & " -" & tTotalInsertado)
End If
End If
'SI RECEPCION VALIDA [ENTREGADIRECTA, APARTADOS, AC]
If TipoMovimiento = 1 Then
'ENTREGA DIRECTA
If EntregaDirecta Then
If Not ErrorMovInv Then
Dim CveVenta As Integer = 0
Dim Dt As DataTable
If ObjInventario.GetMovimientosDetalle(CveMovimiento, UsuarioActual.CveEmpresa) Then
If ObjInventario.DtResultados.Rows.Count > 0 Then
Dt = ObjInventario.DtResultados
CveVenta = ObjInventario.DtResultados.Rows(0)("CveVenta").ToString.ToEntero
End If
End If
CveMovtoSalidaDirecta = ObjInventario.AddMovimiento(DdlAlmacen.SelectedValue.ToEntero, 3, 1, TxtFecha.Text.ToDate, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, CveVenta, -1, -1, Observaciones:=TxtObservaciones.Text.Trim, TipoCambio:=If(DdlMonedaTC.SelectedValue.ToEntero = 1, -1, TipoCambio), MovimientoFijo:=True, CveMovimientoRelacionado:=CveMovimiento, Remision:=TxtRemision.Text, CveVendedor:=CveVendedor, CveCliente:=CveCliente)
FolioSalidaDirecta = ObjInventario.Folio
If Not CveMovtoSalidaDirecta > 0 Then
ErrorMovInv = True
End If
If Not ErrorMovInv Then
For Each Dr As DataRow In Dt.Rows
If Not ObjInventario.AddMovimientoDetalle(CveMovtoSalidaDirecta, Dr("Cantidad").ToString.ToDouble, Dr("CveUM").ToString.ToEntero, Dr("CvePS").ToString.ToEntero, Dr("PU").ToString.ToDouble, Dr("CveAF").ToString.ToEntero, Dr("CveSeccionAlmacen").ToString.ToEntero, Dr("SerieLote").ToString, Lote:=Dr("Lote").ToString, Batch:=Dr("Batch").ToString, CveMovimientoDetalleEntrada:=Dr("CveMovimientoDetalle").ToString.ToEntero, CveVentaDetalle:=Dr("CveVentaDetalle").ToString.ToEntero, CveUsuarioModifico:=UsuarioActual.CveUsuario) Then
ErrorMovInv = True
Exit For
End If
Next
End If
If Not ErrorMovInv Then
If Not ObjInventario.LimpiaEntregaDirecta(CveMovimiento) Then
ErrorMovInv = True
End If
End If
If Not ErrorMovInv Then
If Not GeneraPrePolizaSalidaEntregaDirecta(CveMovtoSalidaDirecta, ObjInventario, ObjConta, ObjContaContPAQ) Then
ErrorMovInv = True
End If
End If
End If
End If
'APARTADOS
If Apartado Then
If ObjInventario.GetMovimientosDetalleVendedor(CveMovimiento) Then
Dim CveMovtoSalidaActual = -1
Dim CveMovtoEntradaActual = -1
Dim CveVendedorActual = -1
Dim CveClienteActual = -1
Dim CveAlmacenDestino = CveAlmacenApartado
For Each Dr As DataRow In ObjInventario.DtResultados.Rows
If CveVendedorActual = -1 Or (Dr("CveVendedor").ToString.ToEntero <> CveVendedorActual Or Dr("CveCliente").ToString.ToEntero <> CveClienteActual) Then
CveMovtoSalidaActual = ObjInventario.AddMovimiento(DdlAlmacen.SelectedValue.ToEntero, 8, 1, FechaMovto, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveCompraSurtir, -1, -1, -1, Observaciones:=TxtObservaciones.Text.Trim, TipoCambio:=If(DdlMonedaTC.SelectedValue.ToEntero = 1, -1, TipoCambio), CveAlmacenDestino:=CveAlmacenDestino, MovimientoFijo:=True, CveVendedor:=Dr("CveVendedor").ToString.ToEntero, CveCliente:=Dr("CveCliente").ToString.ToEntero, Remision:=TxtRemision.Text)
MovtosSalida.Add(CveMovtoSalidaActual)
FoliosSalida.Add(ObjInventario.Folio)
CveMovtoEntradaActual = ObjInventario.AddMovimiento(CveAlmacenDestino, 9, 1, FechaMovto, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveCompraSurtir, -1, -1, -1, Observaciones:=TxtObservaciones.Text.Trim, TipoCambio:=If(DdlMonedaTC.SelectedValue.ToEntero = 1, -1, TipoCambio), CveAlmacenDestino:=CveAlmacenDestino, CveMovimientoRelacionado:=CveMovtoSalidaActual, CveVendedor:=Dr("CveVendedor").ToString.ToEntero, CveCliente:=Dr("CveCliente").ToString.ToEntero, Remision:=TxtRemision.Text)
MovtosEntrada.Add(CveMovtoEntradaActual)
FoliosEntrada.Add(ObjInventario.Folio)
CveVendedorActual = Dr("CveVendedor").ToString.ToEntero
CveClienteActual = Dr("CveCliente").ToString.ToEntero
End If
If CveMovtoSalidaActual <= 0 Or CveMovtoEntradaActual <= 0 Then
ErrorMovInv = True
Exit For
End If
If Not ObjInventario.AddMovimientoDetalle(CveMovtoSalidaActual, Dr("Cantidad").ToString.ToDouble, Dr("CveUM").ToString.ToEntero, Dr("CvePS").ToString.ToEntero, Dr("PU").ToString.ToDouble, Dr("CveAF").ToString.ToEntero, Dr("CveSeccionAlmacen").ToString.ToEntero, Dr("SerieLote").ToString, Lote:=Dr("Lote").ToString, Batch:=Dr("Batch").ToString, CveVentaDetalle:=Dr("CveVentaDetalle").ToString.ToEntero, CveMovimientoDetalleEntrada:=Dr("CveMovimientoDetalle").ToString.ToEntero, CveUsuarioModifico:=UsuarioActual.CveUsuario) Then
ErrorMovInv = True
Exit For
End If
If Not ObjInventario.AddMovimientoDetalle(CveMovtoEntradaActual, Dr("Cantidad").ToString.ToDouble, Dr("CveUM").ToString.ToEntero, Dr("CvePS").ToString.ToEntero, Dr("PU").ToString.ToDouble, Dr("CveAF").ToString.ToEntero, Dr("CveSeccionAlmacen").ToString.ToEntero, Dr("SerieLote").ToString, Lote:=Dr("Lote").ToString, Batch:=Dr("Batch").ToString, CveVentaDetalle:=Dr("CveVentaDetalle").ToString.ToEntero, CveUsuarioModifico:=UsuarioActual.CveUsuario) Then
ErrorMovInv = True
Exit For
End If
Next
End If
End If
'DEVENGAR AC
If Not ErrorMovInv AndAlso UsuarioActual.Empresa.UsaAC Then
Dim IDPoliza As Integer
Dim TotalDetalle As Double = 0.0
Dim TotalPorDevengar = 0.0
TotalPorDevengar += GvInv.Rows.Cast(Of GridViewRow)().Sum(Function(Gvr) Math.Round(Gvr.DataKey("PU").ToString.ToDouble, 4) * Math.Round(Gvr.DataKey("CantidadF").ToString.ToDouble, 4))
TotalPorDevengar = Math.Round(TotalPorDevengar, 4)
If ObjContaContPAQ Is Nothing Then
ObjContaContPAQ = New ClsContPAQi(UsuarioActual.Empresa)
ObjContaContPAQ.IniciaTransacSQL()
End If
IDPoliza = ObjContaAC.AddPoliza(4, "Devengado", TotalPorDevengar * 2, TotalPorDevengar * 2, UsuarioActual.CveUsuario, FechaMovto)
If IDPoliza > 0 AndAlso ObjContaAC.GetCuentas(-1, "-1", -1) Then
DtCuentas = ObjContaAC.DtResultados.Copy
Dim drRegistroMatriz As DataRow
Dim CuentaCargo As Integer
Dim CuentaAbono As Integer
Dim Importe = 0.0
For Each gvr As GridViewRow In GvInv.Rows
Importe = gvr.FCTextBox("TbCantidadF").Text.ToDouble * gvr.DataKey("PU").ToString.ToDouble
TotalDetalle += Importe
If Importe > 0 Then
If ObjContaAC.AddMovimiento(IDPoliza, 1, False, Importe, "", "", 0, FechaMovto, "") Then
'actualizo el idcuenta del presupuesto
If Not ObjContaAC.AddMovimiento(IDPoliza, gvr.DataKey("IdCuentaComprometido").ToString.ToEntero, True, Importe, "", "", 0, FechaMovto, "") Then
ErrorMovInv = True
Exit For
End If
Else
ErrorMovInv = True
Exit For
End If
'AFECTAR MATRIZ EGRESOS
drRegistroMatriz = GlobalDTAC_MatrizEgresos.FiltroPrimero(String.Format("Partida = {0} And TipoGasto = {1}", gvr.DataKey("CodigoClasificacion").ToString, gvr.DataKey("CveTipoGasto").ToString))
If drRegistroMatriz IsNot Nothing AndAlso drRegistroMatriz("CuentaCargo").ToString.ToEntero > 0 Then
CuentaCargo = DtCuentas.FiltroPrimeroValor("Id", String.Format("Codigo = '{0}'", drRegistroMatriz("CuentaCargo").ToString)).ToEntero
CuentaAbono = DtCuentas.FiltroPrimeroValor("Id", String.Format("Codigo = '{0}'", drRegistroMatriz("CuentaAbono").ToString)).ToEntero
If CuentaCargo > 0 AndAlso CuentaAbono > 0 Then
If ObjContaAC.AddMovimiento(IDPoliza, CuentaCargo, False, Importe, "", "", 0, FechaMovto, "") Then
If Not ObjContaAC.AddMovimiento(IDPoliza, CuentaAbono, True, Importe, "", "", 0, FechaMovto, "") Then
ErrorMovInv = True
Exit For
End If
Else
ErrorMovInv = True
Exit For
End If
Else
ErrorMovInv = True
Exit For
End If
End If
'TERMINA AFECTAR MATRIZ INGRESOS
End If
Next
If TotalDetalle <= 0 AndAlso TotalPorDevengar >= TotalDetalle Then
ErrorMovInv = True
End If
Else
ErrorMovInv = True
End If
If ErrorMovInv Then
Alert("Error al registrar los movimientos Contables", TipoMensaje.MsgError)
RegistraScript("playsonidito('142608__autistic-lucario__error.wav')")
End If
End If
'TERMINA: DEVENGAR
End If
'ACTUALIZA ESTATUS ALMACEN
If TipoMovimiento = 2 Then
If Not ObjCompras.UpdateEstatusAlmacen(CveCompraSurtir, 0) Then
ErrorMovInv = True
End If
End If
'AGREGA BITACORA TEMPORAL
If DtBitacora IsNot Nothing AndAlso DtBitacora.Rows.Count > 0 Then
ErrorMovInv = GuardaBitacoraTemporal(ObjBitacora, CveMovimiento)
End If
'PREPOLIZA - SOLO CUANDO SEA RECEPCIÓN
If TipoMovimiento = 1 AndAlso ObjInventario.GetMovimientosDetalle(CveMovimiento, UsuarioActual.CveEmpresa) Then
Dim DtCostos As DataTable = Nothing
Dim ValorInventario As Decimal = 0
DtCostos = ObjInventario.DtResultados
Dim TotalCosto As Decimal = DtCostos.SUMD("Total").RoundSQL
Dim TotalCostoExtranjero As Decimal = DtCostos.SUM("TotalExtranjero").ToDecimal
'VARIABLES
Dim IdCtaContableAlmacen As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCtaContable", $"CveAlmacen = {DdlAlmacen.SelectedValue}").ToEntero
Dim CveCuentaAlmacen As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCtaContableSIG", $"CveAlmacen = {DdlAlmacen.SelectedValue}").ToEntero
Dim IdCtaContableRecepcion = -1
Dim IdCtaContableRecepcionME = -1
Dim IdCtaContableRecepcionComplementaria = -1
Dim Fecha As Date = Now
Dim CveProveedor As Integer = -1
Dim ProveedorNombre As String = ""
Dim SerieFolio As String = ""
Dim CveConceptoContableCosto = -1
Dim CveConceptoContableCostoME = -1
Dim CveConceptoContableCostoComplementaria = -1
Dim UsaComplementariaFleteImportaciones As Boolean = False
If UsuarioActual.CveEmpresa = 119 Then UsaComplementariaFleteImportaciones = False
If DtCostos.Rows.Count > 0 Then
If CveCompraSurtir > 0 Then
If ObjCompras.GetCompras(CveCompraSurtir, "-1", "-1", -1, -1, UsuarioActual.CveEmpresa) Then
'Fecha = ObjCompras.DtResultados(0)("Fecha").ToString.ToDate
Fecha = TxtFecha.Text.ToDate
CveProveedor = ObjCompras.DtResultados(0)("CveProveedor").ToString.ToEntero
ProveedorNombre = ObjCompras.DtResultados(0)("RazonSocial").ToString
SerieFolio = $"Compra: {ObjCompras.DtResultados(0)("SerieFolio").ToString}"
CveConceptoContableCosto = 205
CveConceptoContableCostoME = 230
CveConceptoContableCostoComplementaria = 231
If ObjConta.GetRetCuenta(205, UsuarioActual.CveEmpresa) AndAlso ObjConta.DtResultados.Rows.Count > 0 Then
IdCtaContableRecepcion = ObjConta.DtResultados.FiltroPrimeroValor("IdCtaContable").ToEntero
End If
If UsaComplementariaFleteImportaciones AndAlso ObjConta.GetRetCuenta(230, UsuarioActual.CveEmpresa) AndAlso ObjConta.DtResultados.Rows.Count > 0 Then
IdCtaContableRecepcionME = ObjConta.DtResultados.FiltroPrimeroValor("IdCtaContable").ToEntero
End If
If UsaComplementariaFleteImportaciones AndAlso ObjConta.GetRetCuenta(231, UsuarioActual.CveEmpresa) AndAlso ObjConta.DtResultados.Rows.Count > 0 Then
IdCtaContableRecepcionComplementaria = ObjConta.DtResultados.FiltroPrimeroValor("IdCtaContable").ToEntero
End If
Else
ErrorMovInv = True
End If
ElseIf CveOCSurtir > 0 Then
If ObjOC.GetOC(CveOCSurtir, UsuarioActual.CveEmpresa) Then
'Fecha = ObjOC.DtResultados(0)("Fecha").ToString.ToDate
Fecha = TxtFecha.Text.ToDate
CveProveedor = ObjOC.DtResultados(0)("CveProveedor").ToString.ToEntero
ProveedorNombre = ObjOC.DtResultados(0)("RazonSocial").ToString
SerieFolio = String.Format("{0} OC# {1} - Almacén# {2}", ProveedorNombre, ObjOC.DtResultados(0)("Folio"), ObjInventario.Folio)
CveConceptoContableCosto = 176
CveConceptoContableCostoME = 228
CveConceptoContableCostoComplementaria = 229
If UsuarioActual.CveEmpresa = 119 Then UsaComplementariaFleteImportaciones = True
If UsaComplementariaFleteImportaciones AndAlso ObjConta.GetRetCuenta(176, UsuarioActual.CveEmpresa) AndAlso ObjConta.DtResultados.Rows.Count > 0 Then
IdCtaContableRecepcion = ObjConta.DtResultados.FiltroPrimeroValor("IdCtaContable").ToEntero
End If
If UsaComplementariaFleteImportaciones AndAlso ObjConta.GetRetCuenta(228, UsuarioActual.CveEmpresa) AndAlso ObjConta.DtResultados.Rows.Count > 0 Then
IdCtaContableRecepcionME = ObjConta.DtResultados.FiltroPrimeroValor("IdCtaContable").ToEntero
End If
If UsaComplementariaFleteImportaciones AndAlso ObjConta.GetRetCuenta(229, UsuarioActual.CveEmpresa) AndAlso ObjConta.DtResultados.Rows.Count > 0 Then
IdCtaContableRecepcionComplementaria = ObjConta.DtResultados.FiltroPrimeroValor("IdCtaContable").ToEntero
End If
Else
ErrorMovInv = True
End If
End If
If Not ErrorMovInv Then
Dim CveSubProyecto As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("CveSubProyecto", $"CveAlmacen= {DdlAlmacen.SelectedValue}").ToEntero
CvePrePoliza = ObjConta.AddPrePolizas("Inventario/RecepcionAlmacen", 74, TotalCosto, TotalCosto, 1, Fecha, ProveedorNombre, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa)
If CvePrePoliza > 0 Then
If ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, TotalCosto, SerieFolio, 68, SerieFolio, Fecha, IdCtaContableAlmacen, -1, CveCompra:=CveCompraSurtir, CveSubProyecto:=CveSubProyecto, CveOC:=CveOCSurtir, CveProveedor:=CveProveedor, CveMovimientoAlmacen:=CveMovimiento, ImporteMX:=TotalCosto, CveCuenta:=CveCuentaAlmacen) Then
'AGREGA POR CONCEPTO POR CVEOCDETALLE
If CveOCSurtir > 0 Then
Dim TotalCostoDetalle As Decimal = 0
Dim TotalCostoAcumulado As Decimal = 0
Dim cont As Integer = 1
For Each Dr As DataRow In DtCostos.Rows
TotalCostoDetalle = (Dr("Total").ToString.ToDecimal)
TotalCostoExtranjero = Dr("TotalExtranjero").ToString.ToDecimal
TotalCostoAcumulado += Math.Round(TotalCostoDetalle, 2)
'si es el último movimiento verifica los importes que sean igual
If cont = DtCostos.Rows.Count AndAlso (Math.Round(TotalCosto, 2) <> Math.Round(TotalCostoAcumulado, 2)) Then
TotalCostoDetalle = TotalCostoDetalle + (Math.Round(TotalCosto, 2) - Math.Round(TotalCostoAcumulado, 2))
TotalCostoExtranjero = TotalCostoExtranjero + (Math.Round(TotalCosto, 2) - Math.Round(TotalCostoAcumulado, 2))
End If
If CveMoneda <> 1 AndAlso UsaComplementariaFleteImportaciones Then
'COMPLEMENTARIA
If ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, TotalCostoExtranjero, SerieFolio, CveConceptoContableCostoME, SerieFolio, Fecha, IdCtaContableRecepcionME, -1, CveCompra:=CveCompraSurtir, CveOC:=CveOCSurtir, CveSubProyecto:=CveSubProyecto, CveProveedor:=CveProveedor, CveMovimientoAlmacen:=CveMovimiento, ImporteMX:=TotalCostoExtranjero, ImporteME:=TotalCostoExtranjero, TipoCambio:=TipoCambio.ToDecimal, CveOCDetalle:=Dr("CveOrdenCompraDetalle").ToString.ToEntero) Then
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, TotalCostoDetalle - TotalCostoExtranjero, SerieFolio, CveConceptoContableCostoComplementaria, SerieFolio, Fecha, IdCtaContableRecepcionComplementaria, -1, CveCompra:=CveCompraSurtir, CveOC:=CveOCSurtir, CveProveedor:=CveProveedor, CveSubProyecto:=CveSubProyecto, CveMovimientoAlmacen:=CveMovimiento, ImporteMX:=TotalCostoDetalle - TotalCostoExtranjero, ImporteME:=TotalCostoExtranjero, TipoCambio:=TipoCambio.ToDecimal, CveOCDetalle:=Dr("CveOrdenCompraDetalle").ToString.ToEntero) Then
ErrorMovInv = True
Exit For
End If
Else
ErrorMovInv = True
Exit For
End If
Else
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, TotalCostoDetalle, SerieFolio, CveConceptoContableCosto, SerieFolio, Fecha, IdCtaContableRecepcion, -1, CveCompra:=CveCompraSurtir, CveOC:=CveOCSurtir, CveSubProyecto:=CveSubProyecto, CveProveedor:=CveProveedor, CveMovimientoAlmacen:=CveMovimiento, ImporteMX:=TotalCostoDetalle, CveCuenta:=-1, CveOCDetalle:=Dr("CveOrdenCompraDetalle").ToString.ToEntero) Then
ErrorMovInv = True
Exit For
End If
End If
cont = cont + 1
Next
Else
TotalCosto = DtCostos.SUMD("Total").RoundSQL
TotalCostoExtranjero = DtCostos.SUMD("TotalExtranjero")
If CveMoneda <> 1 AndAlso UsaComplementariaFleteImportaciones Then
'COMPLEMENTARIA
If ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, TotalCostoExtranjero, SerieFolio, CveConceptoContableCostoME, SerieFolio, Fecha, IdCtaContableRecepcionME, -1, CveCompra:=CveCompraSurtir, CveOC:=CveOCSurtir, CveProveedor:=CveProveedor, CveMovimientoAlmacen:=CveMovimiento, ImporteMX:=TotalCostoExtranjero, ImporteME:=TotalCostoExtranjero, TipoCambio:=TipoCambio.ToDecimal) Then
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, TotalCosto - TotalCostoExtranjero, SerieFolio, CveConceptoContableCostoComplementaria, SerieFolio, Fecha, IdCtaContableRecepcionComplementaria, -1, CveCompra:=CveCompraSurtir, CveOC:=CveOCSurtir, CveProveedor:=CveProveedor, CveMovimientoAlmacen:=CveMovimiento, ImporteMX:=TotalCosto - TotalCostoExtranjero, ImporteME:=TotalCostoExtranjero, TipoCambio:=TipoCambio.ToDecimal) Then
ErrorMovInv = True
End If
Else
ErrorMovInv = True
End If
Else
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, TotalCosto, SerieFolio, CveConceptoContableCosto, SerieFolio, Fecha, IdCtaContableRecepcion, -1, CveCompra:=CveCompraSurtir, CveOC:=CveOCSurtir, CveProveedor:=CveProveedor, CveMovimientoAlmacen:=CveMovimiento, ImporteMX:=TotalCosto, CveCuenta:=-1) Then
ErrorMovInv = True
End If
End If
End If
Else
ErrorMovInv = True
End If
Else
ErrorMovInv = True
End If
End If
If ObjConta.ValidacionPrePolizaCuadre(CvePrePoliza, -1) Then
If ObjConta.ValorPolizaDescuadre > 0 Then
GuardaLogAD($"Inventarios/RecepcionAlmacen-PPCompOC | Error:{ObjConta.MensajePolizaDescuadre} Diferencia:{ObjConta.ValorDiferencia} | CvePrePoliza:{CvePrePoliza}", "LogPrePolizas")
MensajeError = "El Movimiento presenta una diferencia en el registro."
ErrorMovInv = True
End If
End If
'CONTABILIZAR - UNIFICAR Y SIMPLIFICAR CON PP DE LA COMPRA
If Not ErrorMovInv Then
If CvePrePolizaCompra > 0 Then
If UsuarioActual.Empresa.Funcionalidad(219) = "1" Then
If Not ObjConta.PrePolizaUnificacion(CvePrePoliza, CvePrePolizaCompra) Then
ErrorMovInv = True
MensajeError = "Error al unificar los conceptos contables"
End If
End If
End If
If UsuarioActual.Empresa.Funcionalidad(220) <> "" Then
If Not ObjConta.PrePolizaSimplificacion(CvePrePoliza, UsuarioActual.CveEmpresa) Then
ErrorMovInv = True
MensajeError = "Error al simplificar los conceptos contables"
End If
End If
If UsuarioActual.Empresa.Funcionalidad(200) = "1" Then
If ObjContaContPAQ Is Nothing Then
ObjContaContPAQ = New ClsContPAQi(UsuarioActual.Empresa)
ObjContaContPAQ.IniciaTransacSQL()
End If
If ObjConta.ContabilizarPrePoliza(CvePrePoliza, UsuarioActual.CveUsuario, UsuarioActual.Empresa, ObjConta:=ObjContaContPAQ) Then
MensajeContabilidad = $"<br>Movimiento contabilizado en el folio: <b><a class='Texto' href = '/Contabilidad/RegPoliza.aspx?IdPoliza={ObjConta.ContaIdPoliza}'>{ObjConta.ContaFolio}</a></b><br>"
Else
ErrorMovInv = True
MensajeError = "Error al contabilizar los conceptos contables"
End If
End If
End If
End If
End If
'PREPOLIZA - NC
If TipoMovimiento = 3 AndAlso ObjInventario.GetMovimientosDetalle(CveMovimiento, UsuarioActual.CveEmpresa) Then
Dim DtCostos As DataTable = Nothing
DtCostos = ObjInventario.DtResultados
Dim TotalCosto As Decimal = DtCostos.SUM("Total").ToDecimal
Dim TotalNC As Decimal = 0
Dim CveClasificacionDifCostoNC = -1
Dim tTipoCambio As Decimal = 1
If CveMoneda <> 1 Then tTipoCambio = TipoCambio.ToDecimal
For Each gvr As GridViewRow In GvInv.Rows
TotalNC += gvr.FCTextBox("TbCantidadF").Text.ToDecimal * gvr.DataKey("PU").ToDecimal * tTipoCambio
CveClasificacionDifCostoNC = gvr.DataKey("CveClasificacion").ToEntero
Next
Dim IdCtaContableClasificacion As Integer = GlobalDTClasificaciones(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCuentaCostos", $"CveClasificacion = {CveClasificacionDifCostoNC}").ToEntero
Dim CveCuentaClasificacion As Integer = GlobalDTClasificaciones(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCuentaCostosSIG", $"CveClasificacion = {CveClasificacionDifCostoNC}").ToEntero
TotalCosto = Math.Round(TotalCosto, 2)
TotalNC = Math.Round(TotalNC, 2)
Dim DifCostoNC = Math.Round(TotalCosto - TotalNC, 2)
'VARIABLES
Dim IdCtaContableAlmacen As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCtaContable", $"CveAlmacen = {DdlAlmacen.SelectedValue}").ToEntero
Dim CveCuentaAlmacen As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCtaContableSIG", $"CveAlmacen = {DdlAlmacen.SelectedValue}").ToEntero
Dim Fecha As Date = TxtFecha.Text.ToDate
Dim CveProveedor As Integer = -1
Dim ProveedorNombre As String = ""
Dim SerieFolio As String = ""
Dim IdCtaContableNC = 0
Dim CveConceptoContableNC = -1
If DtCostos.Rows.Count > 0 Then
If CveCompraSurtir > 0 Then
If ObjCompras.GetCompras(CveCompraSurtir, "-1", "-1", -1, -1, UsuarioActual.CveEmpresa) Then
CveProveedor = ObjCompras.DtResultados(0)("CveProveedor").ToString.ToEntero
ProveedorNombre = ObjCompras.DtResultados(0)("RazonSocial").ToString
SerieFolio = $"NC: {ObjCompras.DtResultados(0)("SerieFolio").ToString}"
CveConceptoContableNC = 225
If ObjConta.GetRetCuenta(CveConceptoContableNC, UsuarioActual.CveEmpresa) AndAlso ObjConta.DtResultados.Rows.Count > 0 Then
IdCtaContableNC = ObjConta.DtResultados.FiltroPrimeroValor("IdCtaContable").ToEntero
End If
Else
ErrorMovInv = True
End If
End If
If Not ErrorMovInv Then
CvePrePoliza = ObjConta.AddPrePolizas("Inventario/RecepcionAlmacen-NC", 74, TotalCosto, TotalCosto, 1, Fecha, ProveedorNombre, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa)
If CvePrePoliza > 0 Then
If ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, TotalNC, SerieFolio, CveConceptoContableNC, SerieFolio, Fecha, IdCtaContableNC, -1, CveCompra:=CveCompraSurtir, CveProveedor:=CveProveedor, CveMovimientoAlmacen:=CveMovimiento, ImporteMX:=TotalNC) Then
If ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, TotalCosto * -1, SerieFolio, 68, SerieFolio, Fecha, IdCtaContableAlmacen, -1, CveCompra:=CveCompraSurtir, CveProveedor:=CveProveedor, CveMovimientoAlmacen:=CveMovimiento, ImporteMX:=TotalCosto * -1, CveCuenta:=CveCuentaAlmacen) Then
If DifCostoNC <> 0 Then
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, DifCostoNC * -1, SerieFolio, 69, SerieFolio, Fecha, IdCtaContableClasificacion, -1, CveClasificacion:=CveClasificacionDifCostoNC, CveCompra:=CveCompraSurtir, CveProveedor:=CveProveedor, CveMovimientoAlmacen:=CveMovimiento, ImporteMX:=DifCostoNC * -1, CveCuenta:=CveCuentaClasificacion) Then
ErrorMovInv = True
End If
End If
Else
ErrorMovInv = True
End If
Else
ErrorMovInv = True
End If
Else
ErrorMovInv = True
End If
End If
If ObjConta.ValidacionPrePolizaCuadre(CvePrePoliza, -1) Then
If ObjConta.ValorPolizaDescuadre > 0 Then
GuardaLogAD($"Inventarios/RecepcionAlmacen-PPNC | Error:{ObjConta.MensajePolizaDescuadre} Diferencia:{ObjConta.ValorDiferencia} | CvePrePoliza:{CvePrePoliza}", "LogPrePolizas")
ErrorMovInv = True
End If
End If
'CONTABILIZAR - UNIFICAR Y SIMPLIFICAR CON PP DE LA COMPRA
If Not ErrorMovInv Then
If CvePrePolizaCompra > 0 Then
If UsuarioActual.Empresa.Funcionalidad(219) = "1" Then
If Not ObjConta.PrePolizaUnificacion(CvePrePoliza, CvePrePolizaCompra) Then
ErrorMovInv = True
MensajeError = "Error al unificar los conceptos contables"
End If
End If
End If
If UsuarioActual.Empresa.Funcionalidad(220) <> "" Then
If Not ObjConta.PrePolizaSimplificacion(CvePrePoliza, UsuarioActual.CveEmpresa) Then
ErrorMovInv = True
MensajeError = "Error al simplificar los conceptos contables"
End If
End If
If UsuarioActual.Empresa.Funcionalidad(200) = "1" Then
ObjContaContPAQ = New ClsContPAQi(UsuarioActual.Empresa)
ObjContaContPAQ.IniciaTransacSQL()
If ObjConta.ContabilizarPrePoliza(CvePrePoliza, UsuarioActual.CveUsuario, UsuarioActual.Empresa, ObjConta:=ObjContaContPAQ) Then
MensajeContabilidad = $"<br>Movimiento contabilizado en el folio: <b><a class='Texto' href = '/Contabilidad/RegPoliza.aspx?IdPoliza={ObjConta.ContaIdPoliza}'>{ObjConta.ContaFolio}</a></b><br>"
Else
ErrorMovInv = True
MensajeError = "Error al contabilizar los conceptos contables"
End If
End If
End If
End If
End If
'AGREGA SALDOS A OC SURTIDAS
If Not ErrorMovInv And CveOCSurtir > 0 Then
If ObjInventario.GetMovimientosDetalle(CveMovimiento, UsuarioActual.CveEmpresa) Then
For Each Dr As DataRow In ObjInventario.DtResultados.Rows
If Not ObjOC.OrdenesCompraDetalleSaldosInvCompraAdd(Dr("CveOrdenCompraDetalle").ToString.ToEntero, Dr("CveMovimientoDetalle").ToString.ToEntero, Dr("Cantidad").ToString.ToDouble, -1, -1) Then
ErrorMovInv = True
Exit For
End If
Next
Else
ErrorMovInv = True
End If
End If
'FINAL
If Not ErrorMovInv Then
ObjInventario.Commit() ' aplica los movimientos insertados
If ObjContaAC IsNot Nothing Then ObjContaAC.Commit()
If ObjContaContPAQ IsNot Nothing Then ObjContaContPAQ.Commit()
RegistraScript("playsonidito('beep-07.wav')")
' 'ENVIO DE CORREO NOTIFICACION A VENDEDORES DE OC
MandaCorreoOCVendedores(CveCompraSurtir, CveMovimiento)
Dim Msg As New StringBuilder
Dim link As String = String.Format("<a href=""/Inventarios/EntradasSalidas.aspx?CveMovimiento={0}"" target=""_blank"">{1}</a>", CveMovimiento, InvFolio)
Msg.AppendFormat("Movimiento Registrado: Folio: <b>{0}</b>", link)
Msg.AppendFormat("<br/><a class=""Texto"" target='_blank' href=""/Compras/PopUpVerFactura.aspx?P={0}"">Imprimir Movimiento</a> ", Encripta(String.Format("OP=Alm&CveMovimiento={0}", CveMovimiento)))
'ENTREGA DIRECTA
If CveMovtoSalidaDirecta > 0 Then
Msg.AppendFormat("<br/><br/> Movimientos de control:<br/>")
link = String.Format("<a href=""/Inventarios/EntradasSalidas.aspx?CveMovimiento={0}"" target=""_blank"">{1}</a>", CveMovtoSalidaDirecta, FolioSalidaDirecta)
Msg.AppendFormat("Movimiento de Salida Folio: <b>{0}</b>", link)
End If
'APARTADO
If MovtosSalida.Count > 0 Then
Msg.AppendFormat("<br/><br/> Movimientos de control:<br/>")
For index = 0 To MovtosSalida.Count - 1
link = String.Format("<a href=""/Inventarios/EntradasSalidas.aspx?CveMovimiento={0}"" target=""_blank"">{1}</a>", MovtosSalida(index), FoliosSalida(index))
Msg.AppendFormat("<br/>Movimiento de Salida por Traspaso: Folio: <b>{0}</b>", link)
link = String.Format("<a href=""/Inventarios/EntradasSalidas.aspx?CveMovimiento={0}"" target=""_blank"">{1}</a>", MovtosEntrada(index), FoliosEntrada(index))
Msg.AppendFormat("<br/>Movimiento de Entrada por Traspaso: Folio: <b>{0}</b><br/>", link)
Next
End If
'CONTABILIDAD
Msg.Append(MensajeContabilidad)
Alert(Msg.ToString, TipoMensaje.MsgInformacion)
If ObjInventario.RecepcionAlmacenGet(CveCompraSurtir, -1, UsuarioActual.CveEmpresa) Then
CreaDTInv(ObjInventario.DtResultados)
CargaGVInv()
BtnGuardar.Visible = True
End If
Limpia()
Else
ObjInventario.RollBack()
If ObjContaAC IsNot Nothing Then ObjContaAC.RollBack()
If ObjContaContPAQ IsNot Nothing Then ObjContaContPAQ.RollBack()
RegistraScript("playsonidito('142608__autistic-lucario__error.wav')")
Alert($"Ocurrió un error al guardar el movimiento de almacén. Por favor vuelva a intentar. <br><br> {MensajeError}", TipoMensaje.MsgError)
End If
ObjInventario.Dispose()
If ObjContaAC IsNot Nothing Then ObjContaAC.Dispose()
If ObjContaContPAQ IsNot Nothing Then ObjContaContPAQ.Dispose()
End Sub
Private Sub GuardaImportacionFlete()
Dim CveMovimiento As Integer
Dim InvFolio As String = ""
Dim FechaMovto As Date = TxtFecha.Text.ToDate
Dim ErrorMovInv As Boolean
Dim MensajeError = ""
Dim ObjInventario As New ClsInventarios
Dim ObjBitacora As New ClsOIEventos(ObjInventario.IniciaTransacSQL())
Dim ObjCompras As New ClsCompras(ObjInventario.IniciaTransacSQL())
Dim ObjConta As New ClsContabilidad(ObjInventario.IniciaTransacSQL())
Dim ObjOC As New ClsOC(ObjInventario.IniciaTransacSQL())
Dim ObjContaAC As ClsContPAQi = Nothing
'ENTRADA ALMACÉN
CveMovimiento = ObjInventario.AddMovimiento(DdlAlmacen.SelectedValue.ToEntero, 2, 1, FechaMovto, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveImportacionCompra, -1, -1, -1, Observaciones:=TxtObservaciones.Text.Trim, TipoCambio:=-1, Remision:=TxtRemision.Text)
If CveMovimiento > 0 Then
InvFolio = ObjInventario.Folio.ToString
Dim DtDetalle As New DataTable
Dim DtDetalleLote As New DataTable
Dim PU As Decimal = 0
Dim CostoIndirecto As Decimal = 0
Dim PUExtranjero As Decimal = 0
For Each gvr As GridViewRow In GvInv.Rows
If gvr.FCCheckBox("cbInv").Checked AndAlso gvr.FCTextBox("TbCantidadF").Text.ToDecimal > 0 Then
PU = DtInv.Rows(gvr.RowIndex)("PU").ToString.ToDecimal
CostoIndirecto = DtInv.Rows(gvr.RowIndex)("CostoIndirecto").ToString.ToDecimal
PUExtranjero = DtInv.Rows(gvr.RowIndex)("PUExtranjero").ToString.ToDecimal
'SI FUE POR SERIE LOTE
DtDetalle = DtDatosDetalle.FiltraParametros(String.Format("ConsecId = {0}", gvr.DataKey("Consec").ToEntero))
DtDetalleLote = DtDatosLoteDetalle.FiltraParametros(String.Format("ConsecId = {0}", gvr.DataKey("Consec").ToEntero))
If DtDetalle.Rows.Count > 0 Then
For Each Dr As DataRow In DtDetalle.Rows
If Not ObjInventario.AddMovimientoDetalle(CveMovimiento, 1, gvr.DataKey("CveUM").ToEntero, gvr.DataKey("CvePS").ToEntero, PU, -1, CveSeccionAlmacen:=gvr.FCDropDownList("DdlSeccionAlmacen").SelectedValue.ToEntero, PUTC:=If(DdlMonedaTC.SelectedValue.ToEntero = 1, -1, PUExtranjero), SerieLote:=Dr("Serie").ToString, FechaCaducidad:=Dr("FechaCaducidad").ToString.ToDate, CveCompraDetalle:=gvr.DataKey("CveCompraDetalle").ToEntero, CveOrdenCompraDetalle:=gvr.DataKey("CveOrdenCompraDetalle").ToEntero, CveVentaDetalle:=gvr.DataKey("CveVentaDetalle").ToEntero, CostoIndirecto:=CostoIndirecto) Then
ErrorMovInv = True
Exit For
End If
Next
ElseIf DtDetalleLote.Rows.Count > 0 Then
For Each Dr As DataRow In DtDetalleLote.Rows
If Not ObjInventario.AddMovimientoDetalle(CveMovimiento, Dr("Cantidad").ToString.ToDouble, gvr.DataKey("CveUM").ToEntero, gvr.DataKey("CvePS").ToEntero, PU, -1, CveSeccionAlmacen:=gvr.FCDropDownList("DdlSeccionAlmacen").SelectedValue.ToEntero, PUTC:=If(DdlMonedaTC.SelectedValue.ToEntero = 1, -1, PUExtranjero), Lote:=Dr("Lote").ToString, Batch:=Dr("Batch").ToString, FechaCaducidad:=Dr("FechaCaducidad").ToString.ToDate, CveCompraDetalle:=gvr.DataKey("CveCompraDetalle").ToEntero, CveOrdenCompraDetalle:=gvr.DataKey("CveOrdenCompraDetalle").ToEntero, CveVentaDetalle:=gvr.DataKey("CveVentaDetalle").ToEntero, CostoIndirecto:=CostoIndirecto) Then
ErrorMovInv = True
Exit For
End If
Next
Else
If Not ObjInventario.AddMovimientoDetalle(CveMovimiento, gvr.FCTextBox("TbCantidadF").Text.ToDouble, gvr.DataKey("CveUM").ToEntero, gvr.DataKey("CvePS").ToEntero, PU, -1, CveSeccionAlmacen:=gvr.FCDropDownList("DdlSeccionAlmacen").SelectedValue.ToEntero, PUTC:=If(DdlMonedaTC.SelectedValue.ToEntero = 1, -1, PUExtranjero), CveCompraDetalle:=gvr.DataKey("CveCompraDetalle").ToEntero, CveOrdenCompraDetalle:=gvr.DataKey("CveOrdenCompraDetalle").ToEntero, CveVentaDetalle:=gvr.DataKey("CveVentaDetalle").ToEntero, CostoIndirecto:=CostoIndirecto) Then
ErrorMovInv = True
Exit For
End If
End If
End If
Next
Else
ErrorMovInv = True
End If
'AGREGA BITACORA TEMPORAL
If DtBitacora IsNot Nothing AndAlso DtBitacora.Rows.Count > 0 Then
ErrorMovInv = GuardaBitacoraTemporal(ObjBitacora, CveMovimiento)
End If
Dim CvePrePoliza As Integer = 0
Dim UsaComplementariaCostoIndirecto As Boolean = False
If UsuarioActual.CveEmpresa = 119 Then UsaComplementariaCostoIndirecto = False
Dim PorcentajeCompraImportacion As Decimal = 0 ' si hay mas de una factura de importación saber lo que se está recibiendo
'SE REGISTRAN LAS PREPOLIZAS
If Not ErrorMovInv Then
CvePrePoliza = ObjConta.AddPrePolizas("Inventario/RecepcionAlmacen CostoInd", 74, 0, 0, 1, FechaMovto, TxtObservaciones.Text.Trim, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa)
Dim DtTempCompras As DataTable = Nothing
PorcentajeCompraImportacion = 1
If CveFleteSurtir > 0 Then
If ObjInventario.GetFleteDetalle(CveFleteSurtir) Then
DtTempCompras = ObjInventario.DtResultados
' faltaría agregar la factura de producto,
If ObjCompras.GetCompras(CveFleteCompra, "-1", "-1", -1, -1, UsuarioActual.CveEmpresa) Then
Dim drc As DataRow = DtTempCompras.NewRow
Dim drr As DataRow = ObjCompras.DtResultados.FiltroPrimero("")
If drr IsNot Nothing Then
drc("CveCompra") = CveFleteCompra
drc("SubTotal") = drr("SubTotal")
drc("TipoCambio") = drr("TipoCambio")
drc("CveProveedor") = drr("CveProveedor")
DtTempCompras.Rows.Add(drc)
End If
End If
Else
ErrorMovInv = True
End If
Else
If CveImportacionSurtir > 0 Then
If ObjCompras.GetImportacionesDetalle(CveImportacionSurtir, -1) Then
DtTempCompras = ObjCompras.DtResultados
Dim CveCompraImportacion As Integer = -1
If (DdlFactura.SelectedValue.ToEntero > 0) Then CveCompraImportacion = DdlFactura.SelectedValue.ToEntero
If ObjCompras.GetImportacionCompras(CveImportacionSurtir, CveCompraImportacion) Then
For Each drt As DataRow In ObjCompras.DtResultados.Rows
PorcentajeCompraImportacion = If(CveCompraImportacion > 0, drt("PorcentajeCompra").ToString.ToDecimal, 1)
Dim drc As DataRow = DtTempCompras.NewRow
drc("CveCompra") = drt("CveCompra")
drc("SubTotal") = drt("SubTotal")
drc("TipoCambio") = drt("TipoCambio")
drc("CveProveedor") = drt("CveProveedor")
DtTempCompras.Rows.Add(drc)
Next
End If
Else
ErrorMovInv = True
End If
End If
End If
If CvePrePoliza > 0 Then
Dim IdCtaContableAlmacen As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCtaContable", $"CveAlmacen = {DdlAlmacen.SelectedValue}").ToEntero
Dim CveCuentaAlmacen As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCtaContableSIG", $"CveAlmacen = {DdlAlmacen.SelectedValue}").ToEntero
ObjInventario.GetMovimientosDetalle(CveMovimiento, UsuarioActual.CveEmpresa)
Dim TotalCosto As Decimal = ObjInventario.DtResultados.SUMD("Total").RoundSQL()
Dim IdCtaContableCostoInd As Integer = 0
If ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, TotalCosto, InvFolio, 68, InvFolio, FechaMovto, IdCtaContableAlmacen, -1, CveCompra:=CveCompraSurtir, CveMovimientoAlmacen:=CveMovimiento, ImporteMX:=TotalCosto, CveCuenta:=CveCuentaAlmacen) Then
'se recorren las facturas a descontar el recepción
If DtTempCompras IsNot Nothing AndAlso DtTempCompras.Rows.Count > 0 Then
For Each dr As DataRow In DtTempCompras.Rows
Dim CveComp As Integer = dr("CveCompra").ToString.ToEntero
'el porcentaje solo aplica a las facturas de costo indirecto
Dim SubTotalPartida As Decimal = dr("SubTotal").ToString.ToDecimal * If(dr("TipoCompra").ToString = "CI", PorcentajeCompraImportacion, 1)
Dim ImporteAbono As Decimal = (SubTotalPartida * dr("TipoCambio").ToString.ToDecimal).RoundSQL
Dim ImporteAbonoME As Decimal = 0
Dim CveConceptoCostoIndirecto As Integer = If(CveImportacionSurtir > 0, 240, 237)
If ObjConta.GetRetCuenta(CveConceptoCostoIndirecto, UsuarioActual.CveEmpresa) AndAlso ObjConta.DtResultados.Rows.Count > 0 Then
IdCtaContableCostoInd = ObjConta.DtResultados.FiltroPrimeroValor("IdCtaContable").ToEntero
End If
If UsaComplementariaCostoIndirecto Then
CveConceptoCostoIndirecto = If(CveImportacionSurtir > 0, 241, 238)
ImporteAbono = SubTotalPartida
ImporteAbonoME = (SubTotalPartida * dr("TipoCambio").ToString.ToDecimal) - SubTotalPartida
End If
If ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, ImporteAbono, InvFolio, CveConceptoCostoIndirecto, InvFolio, FechaMovto, IdCtaContableCostoInd, -1, CveCompra:=CveComp, CveProveedor:=dr("CveProveedor").ToString.ToEntero, CveMovimientoAlmacen:=CveMovimiento, ImporteMX:=ImporteAbono) Then
' si tiene valor es que hay complementaria
If ImporteAbonoME > 0 Then
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, ImporteAbono, InvFolio, If(CveImportacionSurtir > 0, 242, 239), InvFolio, FechaMovto, IdCtaContableCostoInd, -1, CveCompra:=CveComp, CveProveedor:=dr("CveProveedor").ToString.ToEntero, CveMovimientoAlmacen:=CveMovimiento, ImporteMX:=ImporteAbono) Then
ErrorMovInv = True
End If
End If
Else
ErrorMovInv = True
End If
Next
End If
End If
Else
ErrorMovInv = True
End If
End If
If ObjConta.ValidacionPrePolizaCuadre(CvePrePoliza, -1) Then
If ObjConta.ValorPolizaDescuadre > 0 Then
GuardaLogAD($"Inventarios/RecepcionAlmacen-PPCompOC | Error:{ObjConta.MensajePolizaDescuadre} Diferencia:{ObjConta.ValorDiferencia} | CvePrePoliza:{CvePrePoliza}", "LogPrePolizas")
ErrorMovInv = True
End If
End If
If UsuarioActual.Empresa.Funcionalidad(200) = "1" Then
ObjContaAC = New ClsContPAQi(UsuarioActual.Empresa)
ObjContaAC.IniciaTransacSQL()
If ObjConta.ContabilizarPrePoliza(CvePrePoliza, UsuarioActual.CveUsuario, UsuarioActual.Empresa, ObjConta:=ObjContaAC) Then
MensajeError = $"<br>Movimiento contabilizado en el folio: <b><a class='Texto' href = '/Contabilidad/RegPoliza.aspx?IdPoliza={ObjConta.ContaIdPoliza}'>{ObjConta.ContaFolio}</a></b><br>"
Else
ErrorMovInv = True
MensajeError = "Error al contabilizar los conceptos contables"
End If
End If
'FINAL
If Not ErrorMovInv Then
ObjInventario.Commit() ' aplica los movimientos insertados
If ObjContaAC IsNot Nothing Then ObjContaAC.Commit()
RegistraScript("playsonidito('beep-07.wav')")
Dim Msg As New StringBuilder
Dim link As String = String.Format("<a href=""/Inventarios/EntradasSalidas.aspx?CveMovimiento={0}"" target=""_blank"">{1}</a>", CveMovimiento, InvFolio)
Msg.AppendFormat("Movimiento Registrado: Folio: <b>{0}</b>", link)
Msg.AppendFormat("<br/><a class=""Texto"" target='_blank' href=""/Compras/PopUpVerFactura.aspx?P={0}"">Imprimir Movimiento</a> ", Encripta(String.Format("OP=Alm&CveMovimiento={0}", CveMovimiento)))
Alert(Msg.ToString, TipoMensaje.MsgInformacion)
Limpia()
Else
ObjInventario.RollBack()
If ObjContaAC IsNot Nothing Then ObjContaAC.RollBack()
RegistraScript("playsonidito('142608__autistic-lucario__error.wav')")
Alert("Error al guardar el movimiento de almacen. Por favor vuelva a intentar.", TipoMensaje.MsgError)
End If
ObjInventario.Dispose()
If ObjContaAC IsNot Nothing Then ObjContaAC.Dispose()
End Sub
Private Sub Limpia()
CveCompraSurtir = -1
CvePrePolizaCompra = -1
CveOCSurtir = -1
CveImportacionSurtir = -1
CveImportacionProveedor = -1
CveImportacionCompra = -1
BuscaEntregaDirecta = -1
DivAdvertencia.Visible = False
EntregaDirecta = False
DtInv = Nothing
CargaGVInv()
TxtObservaciones.Text = ""
TxtOC.Text = ""
TxtFecha.Text = Now.ToShortDateString
DdlAlmacen.SelectedValueExist(-1)
TxtRemision.Text = ""
'ddlProveedor.SelectedValueExist(-1)
ddlProveedor.SelectedValue = "-1"
DdlFolio.Items.Clear()
DdlFolio.Items.Insert(0, New ListItem("Seleccione", "-1"))
DdlFolioOC.Items.Clear()
DdlFolioOC.Items.Insert(0, New ListItem("Seleccione", "-1"))
DdlFolioImportacion.Items.Clear()
DdlFolioImportacion.Items.Insert(0, New ListItem("Seleccione", "-1"))
CargaFoliosRecepcion()
DtBitacora.Clear()
DivBitacora.Visible = False
CargaEventoBitacoraTemp()
DdlMonedaTC.SelectedValueExist("1")
TipoCambio = 0
'TxtTipoCambio.Text = GlobalTipoCambio(TxtFecha.Text.ToDate).ToString
DivTipoCambio.Visible = False
DivAdvertencia.Visible = False
UpTipoCambio.Update()
UPInv.Update()
UpGenerales.Update()
UpFiltros.Update()
HLFolio.Text = ""
HLFolio.NavigateUrl = "#"
LbProveedor.Text = ""
LbDescripcionCompra.Text = ""
UpDatosCompra.Update()
CargaPendientes()
End Sub
Private Function GuardaPrePoliza() As Boolean
Return True
End Function
#End Region
#Region " OC "
Private Sub CargaFoliosOC()
DdlFolioOC.Items.Clear()
Dim ObjInventarios As New ClsInventarios
If ddlProveedor.SelectedValue.ToEntero > 0 Then
If ObjInventarios.PendientesAlmacenOCGet(ddlProveedor.SelectedValue.ToEntero, MinFecha.ToShortDateString.ToDate, UsuarioActual.CveEmpresa) Then
DdlFolioOC.DataSource = ObjInventarios.DtResultados
Else
Alert("Ocurrió un error al obtener las Compras pendientes de recibir del proveedor. Por favor vuelva a intentar", TipoMensaje.MsgError)
End If
End If
ObjInventarios.Dispose()
DdlFolioOC.DataBind()
DdlFolioOC.Items.Insert(0, New ListItem("Seleccione", "-1"))
End Sub
Private Sub CargaPendientesOC()
Dim ObjInventarios As New ClsInventarios
Dim DtPendientesOC As New DataTable
If ObjInventarios.PendientesAlmacenOCGet(ddlProveedor.SelectedValue.ToEntero, TxtFechaPendientes.Text.ToDate, UsuarioActual.CveEmpresa) Then
DtPendientesOC = ObjInventarios.DtResultados
Else
DtPendientesOC = Nothing
Alert("Ocurrió un error al obtener las OC pendientes de recibir del proveedor. Por favor vuelva a intentar", TipoMensaje.MsgError)
End If
ObjInventarios.Dispose()
If DtPendientesOC IsNot Nothing Then
GVPendientes.DataSource = DtPendientesOC
End If
LtActualizado.Text = String.Format("Actualizado: {0}", Now.ToString("H:mm"))
GVPendientes.DataBind()
UpPendientes.Update()
End Sub
Protected Sub BtnBuscarOC_Click(sender As Object, e As EventArgs) Handles BtnBuscarOC.Click
CargaOC()
End Sub
Private Sub CargaOC()
'OBTENE CveOC
Dim CveOC = -1
Dim MensajeCompra = ""
Dim FolioOC = TxtOC.Text.Trim.ToEntero
Dim ObjOC As New ClsOC
If ObjOC.GetOrdenesCompraRep("OC", -1, -1, -1, -1, MinFecha, MaxFecha, -1, -1, FolioOC, -1, -1, UsuarioActual.CveEmpresa, -1) Then
'If ObjOC.DtResultados.FiltraParametros("TipoTermino = 3").Rows.Count = 1 Then
If ObjOC.DtResultados.Rows(0)("TieneCompra").ToString.ToEntero > 0 And UsuarioActual.Empresa.Funcionalidad(153).ToEntero > 0 Then 'Or UsuarioActual.Empresa.Funcionalidad(153).ToEntero > 0
MensajeCompra = String.Format("<a href=""/Inventarios/RecepcionAlmacen.aspx?CveCompra={0}"">{1}</a>", ObjOC.DtResultados.Rows(0)("CveCompraVinculada").ToString, ObjOC.DtResultados.Rows(0)("SerieFolioCompraVinculada").ToString)
Else
CveOC = ObjOC.DtResultados.FiltroPrimeroValor("CveOrdenCompra").ToString.ToEntero
End If
'End If
End If
ObjOC.Dispose()
RecibidaCompleta = False
If CveOC > 0 Then
CargaOCPorSurtir(CveOC)
Else
If MensajeCompra <> "" Then
Alert($"La orden de compra ya esta vinculada y debe darse recepción por medio de su compra: <br/>{MensajeCompra}", TipoMensaje.MsgAdvertencia)
Else
Alert("No se encontro ninguna orden de compra pendiente de recepción de almacén con el folio especificado.", TipoMensaje.MsgAdvertencia)
End If
End If
UpGenerales.Update()
UPInv.Update()
End Sub
Private Sub CargaOCPorSurtir(CveOC As Integer)
'REINICIALIZA VALORES
DdlMonedaTC.SelectedValueExist("1")
TipoCambio = 0
DivAdvertencia.Visible = False
EntregaDirecta = False
DivTipoCambio.Visible = False
DivAdvertencia.Visible = False
Apartado = False
BtnGuardar.Enabled = True
CargaAlmacenes(-1)
LtDocumento.Text = "ORDEN DE COMPRA"
CveCompraSurtir = -1
CvePrePolizaCompra = -1
Dim ObjOC As New ClsOC
Dim ObjInventario As New ClsInventarios
If ObjOC.GetOC(CveOC, UsuarioActual.CveEmpresa) Then
If ObjOC.DtResultados.Rows.Count > 0 Then
CveOCSurtir = CveOC
LbProveedor.Text = ObjOC.DtResultados.Rows(0)("RazonSocial").ToString
HLFolio.Text = ObjOC.DtResultados.Rows(0)("Folio").ToString
If UsuarioActual.TienePermisoProceso(201) Then
HLFolio.NavigateUrl = $"/OC/OC.aspx?OC={CveOCSurtir}"
End If
LbDescripcionCompra.Text = ObjOC.DtResultados.Rows(0)("Descripcion").ToString
CveMoneda = ObjOC.DtResultados.Rows(0)("CveMoneda").ToString.ToEntero
lbDescripcion.Text = ObjOC.DtResultados.Rows(0)("Descripcion").ToString
TotalCompraOC = ObjOC.DtResultados.Rows(0)("SubTotal").ToString.ToDecimal
'TipoCambio = ObjOC.DtResultados.Rows(0)("TipoCambio").ToString.ToDecimal
TipoCambio = 0
TipoMovimiento = 1
If ObjInventario.RecepcionAlmacenOCGet(CveOC, UsuarioActual.CveEmpresa) AndAlso ObjInventario.DtResultados.Rows.Count > 0 Then
DtDatosDetalle = Nothing
CreaDtDetalle()
DtDatosLoteDetalle = Nothing
CreaDtLoteDetalle()
CreaDTInv(ObjInventario.DtResultados.FiltraParametros("CantidadCompra = 0"))
BtnGuardar.Visible = True
''MONEDA DIFERENTE
If CveMoneda <> 1 Then
'DivTipoCambio.Visible = True
DdlMonedaTC.SelectedValueExist("2")
DdlMonedaTC_SelectedIndexChanged(DdlMonedaTC, EventArgs.Empty)
'TxtTipoCambio.Text = If(TipoCambio <= 0, GlobalTipoCambio(TxtFecha.Text.ToDate).ToString, TipoCambio.ToString)
TipoCambio = If(TipoCambio <= 0, GlobalTipoCambio(TxtFecha.Text.ToDate), TipoCambio)
If TipoCambio > 0 Then
LtAdvertencia.Text = "El cambio de moneda se aplicara al guardar el movimiento con el tipo de cambio indicado."
DivAdvertencia.Visible = True
Else
Alert("Ocurrió un error al cargar el tipo cambio. Por favor comuniquese con asistencia SIG.", TipoMensaje.MsgError)
BtnGuardar.Visible = False
End If
End If
UpTipoCambio.Update()
DivBitacora.Visible = True
If UsuarioActual.Empresa.Funcionalidad(132) = "1" Then
DivCodigoSeriePS.Visible = True
Else
DivCodigoSeriePS.Visible = False
End If
CargaGVInv()
Else
Alert("No hay productos pendientes de surtir de esta orden de compra. Por favor rectifique y vuelva a intentar.", TipoMensaje.MsgAdvertencia)
HLFolio.Text = ""
HLFolio.NavigateUrl = "#"
LbProveedor.Text = ""
LbDescripcionCompra.Text = ""
DtInv = Nothing
CargaGVInv()
CargaFoliosRecepcion()
End If
End If
Else
BtnGuardar.Visible = False
End If
ObjOC.Dispose()
ObjInventario.Dispose()
UpDatosCompra.Update()
End Sub
#End Region
#Region " TIPO DE CAMBIO "
Protected Sub DdlMonedaTC_SelectedIndexChanged(sender As Object, e As EventArgs)
Select Case DdlMonedaTC.SelectedValue.ToEntero
Case 1
TrTC1.Visible = False
TrTC2.Visible = False
For Each Dr As DataRow In DtInv.Rows
Dr("PU") = Dr("PUExtranjero")
Dr("Total") = Dr("PU").ToString.ToDouble * Dr("Cantidad").ToString.ToDouble
Dr("CostoIndirecto") = Dr("CostoIndirectoExtranjero")
Next
CargaGVInv()
'LtTotal.Text = DtMovimientos.SUM("Total", "").ToString.FormatoNumero
UPInv.Update()
Case 2
TrTC1.Visible = True
TrTC2.Visible = True
End Select
End Sub
Protected Sub BtnAplicarTC_Click(sender As Object, e As EventArgs)
AplicarTipoCambio()
CargaGVInv()
End Sub
Private Sub AplicarTipoCambio()
'TipoCambio = TxtTipoCambio.Text.ToDouble
If CveOCSurtir > 0 Then
TipoCambio = GlobalTipoCambio(TxtFecha.Text.ToDate)
End If
For Each Dr As DataRow In DtInv.Rows
Dr("PU") = Dr("PUExtranjero").ToString.ToDouble * TipoCambio
Dr("Total") = Dr("PU").ToString.ToDouble * Dr("CantidadC").ToString.ToDouble
Dr("CostoIndirecto") = Dr("CostoIndirectoExtranjero").ToString.ToDouble * TipoCambio
Next
DtInv.AcceptChanges()
End Sub
#End Region
#Region " BITACORA "
Protected Sub GVEventoBitacora_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles GvBitacora.RowDataBound
If e.Row.RowType = DataControlRowType.DataRow Then
If e.Row.DBCampo("Archivo").ToString.Trim <> "" AndAlso -1 > 0 Then
e.Row.FCLinkButton("LinkArchivo").Visible = True
e.Row.FCLinkButton("LinkArchivo").CommandArgument = String.Format("OI\{0}", e.Row.DBCampo("Archivo").ToString)
ScriptManager.GetCurrent(Me).RegisterPostBackControl(e.Row.FCLinkButton("LinkArchivo")) 'Registro un evento Postbacktrigger, que recargue toda la pagina para que funcione
End If
If e.Row.DBCampo("Archivo").ToString.Trim <> "" Then
e.Row.Cells(5).Text = "SI"
Else
e.Row.Cells(5).Text = "NO"
End If
End If
End Sub
Private Sub InicializaBitacoraTemporal()
DtBitacora = New DataTable
DtBitacora.Columns.Add("FechaIng", GetType(String))
DtBitacora.Columns.Add("FechaInicio", GetType(String))
DtBitacora.Columns.Add("Usuario", GetType(String))
DtBitacora.Columns.Add("CveUsuario", GetType(String))
DtBitacora.Columns.Add("Descripcion", GetType(String))
DtBitacora.Columns.Add("Prioridad", GetType(String))
DtBitacora.Columns.Add("FileExtension", GetType(String))
DtBitacora.Columns.Add("Archivo", GetType(String))
DtBitacora.Columns.Add("CveOrdenCompra", GetType(String))
DtBitacora.Columns.Add("CveEmpresa", GetType(String))
End Sub
Protected Sub BtnGuardarEventoBitacora_Click(sender As Object, e As EventArgs) Handles BtnGuardarEventoBitacora.Click
AgregaBitacoraTemporal()
End Sub
Private Sub AgregaBitacoraTemporal()
Dim ObjEventoBitacora As New ClsOIEventos
'Archivo
Dim FileExtension As String = ""
Dim Filename As String = ""
Dim Filesgral As List(Of Archivo) = Anexo.getfiles().Archivos
For Each fileItem As Archivo In Filesgral
FileExtension = IO.Path.GetExtension(String.Format("{0}Temp\{1}", AppDomain.CurrentDomain.BaseDirectory, fileItem.filename)).Replace(".", "")
Filename = fileItem.filename
Next
Dim Archivo As New System.IO.FileInfo(String.Format("{0}OI\Temp\OI{1}{2}.{3}", UsuarioActual.Empresa.Ruta, UsuarioActual.CveUsuario, Now.ToString("HH-mm"), FileExtension))
If Archivo.Exists() Then
Archivo.Delete()
'File.Delete(String.Format("\Empresas\{0}\OI\Temp\OI{1}{2}.{3}", CveEmpresaActual, UsuarioActual.CveUsuario, DtDetalle.Rows.Count, FileExtension))
End If
If Filename <> "" Then
Filename.FilesMove(String.Format("OI{0}{1}", UsuarioActual.CveUsuario, Now.ToString("HH-mm")), String.Format("Empresas\{0}\OI\Temp", UsuarioActual.CveEmpresa))
End If
'AGREGA
Dim Dr = DtBitacora.NewRow
Dr("FechaIng") = Now
Dr("FechaInicio") = ""
Dr("Usuario") = UsuarioActual.Usuario
Dr("CveUsuario") = UsuarioActual.CveUsuario
Dr("Descripcion") = TxtEventoDescripcion.Text.Trim
Dr("Prioridad") = 1
Dr("Archivo") = If(FileExtension = "", "", $"{UsuarioActual.Empresa.Ruta}OI\Temp\OI{UsuarioActual.CveUsuario}{Now.ToString("HH-mm")}.{FileExtension}")
Dr("FileExtension") = String.Format(".{0}", FileExtension)
Dr("CveOrdenCompra") = -1
Dr("CveEmpresa") = UsuarioActual.CveEmpresa
DtBitacora.Rows.Add(Dr)
'LIMPIA
TxtEventoDescripcion.Text = ""
'ChkEventoPrioridad.Checked = False
RegistraScript("$('#ModalBitacora').modal('hide')", "hidemodal")
CargaEventoBitacoraTemp()
End Sub
Private Sub CargaEventoBitacoraTemp()
GvBitacora.DataSource = DtBitacora
GvBitacora.DataBind()
UPAddEventoBitacora.Update()
UPEventoBitacora.Update()
End Sub
Private Function GuardaBitacoraTemporal(ObjEventoBitacora As ClsOIEventos, CveMovimiento As Integer) As Boolean
Dim Retorno = False
Dim Archivo As System.IO.FileInfo = Nothing
For Each Dr As DataRow In DtBitacora.Rows
If ObjEventoBitacora.AddEventoBitacora(Dr("Descripcion").ToString, Dr("FileExtension").ToString, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveMovimientoAlmacen:=CveMovimiento) Then
Try
If Dr("Archivo").ToString <> "" Then
Archivo = New System.IO.FileInfo(Dr("Archivo").ToString)
If Archivo.Exists() Then
File.Move(Archivo.ToString, String.Format("{0}OI\OI{1}{2}", UsuarioActual.Empresa.Ruta, ObjEventoBitacora.CveEvento.ToString, Archivo.Extension))
End If
End If
Catch ex As Exception
Retorno = True
Alert("Ocurrió un error al guardar los datos adjuntos de la Bitácora.", TipoMensaje.MsgError)
Exit For
End Try
Else
Retorno = True
Exit For
End If
Next
Return Retorno
End Function
#End Region
#Region " FINANCIAMIENTO - AC "
Protected Sub CargaAC()
Dim Cont As New ClsContPAQi(UsuarioActual.Empresa)
Dim DtAC As DataTable = Nothing
If Cont.GetACSaldos(UsuarioActual.Empresa.EjercicioActual, 2) Then
DtAC = Cont.DtResultados.Copy.FiltraParametros("PorDevengar > 0")
Else
Alert("Ocurrió un error al cargar los Presupuestos. Por favor vuelva a cargar la página", TipoMensaje.MsgError)
End If
Cont.Dispose()
GvAC.DataSource = DtAC
GvAC.DataBind()
Dim Total As Double = GvAC.Rows.Cast(Of GridViewRow)().Sum(Function(gvr) gvr.DataKey("PorDevengar").ToDouble)
Lbtotalsaldo.Text = Total.ToString.FormatoNumero
UPPM.Update()
End Sub
Protected Sub GvAC_RowDataBound(sender As Object, e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GvAC.RowDataBound
If e.Row.RowType = DataControlRowType.DataRow Then
e.Row.FCTextBox("TxtImporte").Attributes.Add("onkeyup", String.Format("ValidaImporte(this, {0});", e.Row.DBCampo("PorDevengar")))
e.Row.FCRangeValidator("RVA").MaximumValue = e.Row.DBCampo("PorDevengar").FormatoNumero
End If
End Sub
#End Region
#Region " ENVIA CORREO NOTICIACION - VENDEDOR "
Private Sub MandaCorreoOCVendedores(CveCompra As Integer, CveMovimiento As Integer)
'SI NO TIENE FUNCIONALIDAD DATOS DE VENTA EN OC
If Not UsuarioActual.Empresa.Funcionalidad(108) = "1" Then
Exit Sub
End If
Dim DTCorreos As New DataTable
Dim DTMovimientos As New DataTable
Dim strBody As New StringBuilder
Dim Asunto, Para, ArrayCC, Body As String
Dim ObjOC As New ClsOC
ObjOC.GetOrdenesCompraCorreo(CveCompra, CveMovimiento:=CveMovimiento)
DTCorreos = ObjOC.DtResultados
ObjOC.GetOrdenesCompraMovimiento(CveCompra, CveMovimiento:=CveMovimiento)
DTMovimientos = ObjOC.DtResultados
ObjOC.Dispose()
For Each row As DataRow In DTCorreos.Rows
strBody.Clear()
'SI DE UNA OC DE LA COMPRA NO SE RECIBIÓ NADA NO MANDA CORREO
If DTMovimientos.FiltraParametros($"CveOrdenCompra = {row("CveOrdenCompra")}").Rows.Count = 0 Then
Continue For
End If
strBody.Append("<html xmlns=""http: //www.w3.org/1999/xhtml""> ")
strBody.Append("<head> ")
strBody.Append(" <style type=""text/css""> ")
strBody.Append(" * {")
strBody.Append(" font-family: Verdana; ")
strBody.Append(" }")
strBody.Append(" body { ")
strBody.Append(" padding: 0px;")
strBody.Append(" margin: 0px; ")
strBody.Append(" } ")
strBody.Append(" p {")
strBody.Append(" font-size: 14px;")
strBody.Append(" }")
strBody.Append(" /*ESTILOS ESTANDAR DE TABLA*/")
strBody.Append(" table {")
strBody.Append(" font-size: 12px;")
strBody.Append(" }")
strBody.Append(" table tr{")
strBody.Append(" height:20px;")
strBody.Append(" }")
strBody.Append(" table .thead{")
strBody.Append(" background-color:#dddddd;")
strBody.Append(" text-align:center;")
strBody.Append(" vertical-align:middle;")
strBody.Append(" }")
strBody.Append(" table .tbody{")
strBody.Append(" background-color:#F7F6F3; ")
strBody.Append(" }")
strBody.Append(" </style> ")
strBody.Append("</head> ")
strBody.Append("<body>")
strBody.Append(" <h3> Notificación de recepción de material </h3>")
strBody.Append(" <p class=""mensaje"">")
strBody.AppendFormat(" Se confirma recepción de material en almacén <b>{0}</b> vinculado la OC # <b>{1}</b> {2}.", DdlAlmacen.SelectedItem.Text, row("Folio").ToString, If(row("FolioREQ").ToString.Length > 0, $", relacionada a la(s) requisicion(es) # <b>{row("FolioREQ")}</b>", ""))
strBody.Append(" <br>")
strBody.Append(" Con los siguientes productos:")
strBody.Append(" </p>")
'DETALLES
strBody.Append(" <!-- DETALLES -->")
strBody.Append(" <table width=""700px"">")
strBody.Append(" <tr class=""thead"">")
strBody.Append(" <th style='width: 50px'>Cantidad</th>")
strBody.Append(" <th style='width: 100px'>UM</th>")
strBody.Append(" <th style='width: 100px'>Código</th>")
strBody.Append(" <th style='width: 450px'>Producto</th>")
strBody.Append(" </tr>")
For Each RowM As DataRow In DTMovimientos.FiltraParametros($"CveOrdenCompra = {row("CveOrdenCompra")}").Rows
strBody.AppendFormat(" <tr class=""tbody"">")
strBody.AppendFormat(" <td style='width:50px; text-align: right;'>{0}</td>", RowM("Cantidad").ToString.FormatoNumero)
strBody.AppendFormat(" <td style='width:100px;'>{0}</td>", RowM("UnidadMedida"))
strBody.AppendFormat(" <td style='width:100px;'>{0}</td>", RowM("Codigo"))
strBody.AppendFormat(" <td align='left' style='width:450px;'>{0}</td>", RowM("PS"))
strBody.AppendFormat(" </tr>")
Next
strBody.Append(" </table>")
strBody.Append("</body>")
strBody.Append("</html>")
'' ENVIO DEL CORREO
Asunto = "Recepción de Material de OC "
Para = row("Correo").ToString
ArrayCC = row("CorreoAsistente").ToString
Body = strBody.ToString
Dim Mail As New ClsSisMail()
Mail.SendMail(ClsPaginas.EmpresaNotificaciones, Para, Asunto, Body, ArrayCC)
Next
End Sub
#End Region
#Region "Imprimir PDF/Excel"
Private Sub LnkExportar_Click(sender As Object, e As EventArgs) Handles LnkExportar.Click
ImprimiReporte("EXCEL")
End Sub
Private Sub LnkImprimir_Click(sender As Object, e As EventArgs) Handles LnkImprimir.Click
ImprimiReporte()
End Sub
Protected Sub ImprimiReporte(Optional Formato As String = "PDF")
Dim Proveedor As String = ddlProveedor.SelectedText
Dim Compra As String = DdlFolio.SelectedItem.Text
Dim RutaPDF As String
Dim Ruta As String = $"{AppDomain.CurrentDomain.BaseDirectory}Empresas\{UsuarioActual.CveEmpresa}\"
RutaPDF = $"{Ruta}\Formatos\EntradaAlmacen.rdlc"
If Not File.Exists(RutaPDF) Then
RutaPDF = "Empresas/Grales/Formatos/EntradaAlmacen.rdlc"
End If
Dim params As New List(Of ReportParameter)
params.Add(New ReportParameter("pEmp", UsuarioActual.Empresa.Empresa))
params.Add(New ReportParameter("pImg", New Uri(Server.MapPath(String.Format("~/Empresas/{0}/Logo.png", UsuarioActual.CveEmpresa))).AbsoluteUri))
params.Add(New ReportParameter("Proveedor", Proveedor))
params.Add(New ReportParameter("Compra", Compra))
params.Add(New ReportParameter("UsuarioImprimio", UsuarioActual.Nombre))
params.Add(New ReportParameter("FechaImpresion", Now.ToDateTime.ToShortDateString))
ImprimirPDF(RutaPDF, dt, params, "Reporte de Entrada Almacén", Formato:=Formato)
End Sub
#End Region
#Region " VIEJO - POR ELIMINAR 22 NOVIEMBRE 2017 "
Protected Sub ImgAlmacen_Click(sender As Object, e As ImageClickEventArgs)
For i As Integer = 0 To GvInv.Rows.Count - 1
If Not DtInv.Rows(i)("CantidadF").ToString.ToEntero = 0 Then
DtInv.Rows(i)("CveAlmacen") = GvInv.HeaderRow.FCDropDownList("ddlPAlmacen").SelectedValue
End If
Next
CargaGVInv()
End Sub
Private Sub AddDTEnvio(Cantidad As Double, UM As String, CveUM As Integer, CvePS As Integer, PS As String, PU As Double, CveAlmacen As Integer)
Dim dr As DataRow = DtInv.NewRow
dr("CantidadF") = Cantidad
dr("UM") = UM
dr("CveUM") = CveUM
dr("CvePS") = CvePS
dr("PS") = PS
dr("PU") = PU
dr("CveAlmacen") = CveAlmacen
DtInv.Rows.InsertAt(dr, hdnIndexInv.Value.ToEntero + 1)
CargaGVInv()
End Sub
Protected Sub Enviar_Click(sender As Object, e As ImageClickEventArgs) Handles ImgAdd.Click
If TbCantidadAlm.Text.ToDouble < DtInv.Rows.Item(hdnIndexInv.Value.ToEntero)("CantidadF").ToString.ToDouble And TbCantidadAlm.Text.ToDouble > 0 Then
DtInv.Rows.Item(hdnIndexInv.Value.ToEntero)("CantidadF") = DtInv.Rows.Item(hdnIndexInv.Value.ToEntero)("CantidadF").ToString.ToDouble - TbCantidadAlm.Text.ToDouble
AddDTEnvio(TbCantidadAlm.Text.ToDouble,
DtInv.Rows.Item(hdnIndexInv.Value.ToEntero)("UM").ToString,
DtInv.Rows.Item(hdnIndexInv.Value.ToEntero)("CveUM").ToString.ToEntero,
DtInv.Rows.Item(hdnIndexInv.Value.ToEntero)("CvePS").ToString().ToEntero,
DtInv.Rows.Item(hdnIndexInv.Value.ToEntero)("PS").ToString,
DtInv.Rows.Item(hdnIndexInv.Value.ToEntero)("PU").ToString.ToDouble,
ddlAlmacenAdd.SelectedValue.ToEntero)
Else
Alert("El campo cantidad es necesario que sea mayor que 0 y menor a la cantidad faltante.", TipoMensaje.MsgAdvertencia)
End If
CargaGVInv()
TbCantidadAlm.Text = ""
ddlAlmacenAdd.SelectedIndex = 0
End Sub
#End Region
#Region "SECCION ALMACEN"
Private Sub CreaDtSeccionAlmacen()
DtSeccionAlmacen = New DataTable
DtSeccionAlmacen.Columns.Add("CantidadSeccionAlmacen", GetType(Decimal))
DtSeccionAlmacen.Columns.Add("IndexSeccionAlmacen", GetType(Integer))
DtSeccionAlmacen.Columns.Add("CveSeccionAlmacen", GetType(Integer))
DtSeccionAlmacen.Columns.Add("SeccionAlmacen", GetType(String))
DtSeccionAlmacen.Columns.Add("Consec", GetType(Integer))
End Sub
Private Sub CargaDdlAlmacen()
DdlSeccionAlmacen.DataSource = GlobalDTSeccionAlmacen(UsuarioActual.CveEmpresa)
DdlSeccionAlmacen.Items.Insert(0, New ListItem("Seleccione", "-1"))
DdlSeccionAlmacen.DataBind()
End Sub
Protected Sub LnkSeccionAlmacen_Click(sender As Object, e As EventArgs)
Dim gvRow As GridViewRow = DirectCast((DirectCast(sender, LinkButton)).NamingContainer, GridViewRow)
CantidadTotal = gvRow.FCTextBox("TbCantidadF").Text.ToDecimal
IndexSeccionAlmacen = gvRow.RowIndex
CargaSeccionAlmacen()
RegistraScript("$('#DModalSeccionAlmacen').modal()")
End Sub
Private Sub CargaSeccionAlmacen()
Dim CantidadTotalSeccion As Decimal = DtSeccionAlmacen.FiltraParametros($"IndexSeccionAlmacen = {IndexSeccionAlmacen}").SUMD("CantidadSeccionAlmacen")
GvSeccionAlmacen.DataSource = DtSeccionAlmacen.FiltraParametros($"IndexSeccionAlmacen = {IndexSeccionAlmacen}")
GvSeccionAlmacen.DataBind()
TxtCantidadSeccion.Text = ""
DdlSeccionAlmacen.SelectedIndex = 0
Dim CantidadRestante As Decimal = CantidadTotal - CantidadTotalSeccion
If CantidadRestante = 0 Then
RVTxtCantidad.MaximumValue = "1"
TxtCantidadSeccion.Enabled = False
Else
RVTxtCantidad.MaximumValue = CantidadRestante.ToString
TxtCantidadSeccion.Enabled = True
End If
If CantidadTotalSeccion > 0 Then
GvInv.Rows(IndexSeccionAlmacen).FCTextBox("TbCantidadF").Enabled = False
GvInv.Rows(IndexSeccionAlmacen).FCTextBox("TbCantidadF").ToolTip = "Cuenta con sección almacen"
Else
GvInv.Rows(IndexSeccionAlmacen).FCTextBox("TbCantidadF").Enabled = True
GvInv.Rows(IndexSeccionAlmacen).FCTextBox("TbCantidadF").ToolTip = ""
End If
UpModalSeccionAlmacen.Update()
UPInv.Update()
End Sub
Protected Sub LnkAddSeccionAlmacen_Click(sender As Object, e As EventArgs)
Dim Row As DataRow = Nothing
DtSeccionAlmacen.AcceptChanges()
Row = DtSeccionAlmacen.NewRow
Row("CantidadSeccionAlmacen") = TxtCantidadSeccion.Text.ToDecimal
Row("IndexSeccionAlmacen") = IndexSeccionAlmacen
Row("CveSeccionAlmacen") = DdlSeccionAlmacen.SelectedValue.ToEntero
Row("SeccionAlmacen") = DdlSeccionAlmacen.SelectedItem.Text
Row("Consec") = DtSeccionAlmacen.Rows.Count + 1
DtSeccionAlmacen.Rows.Add(Row)
DtSeccionAlmacen.AcceptChanges()
CargaSeccionAlmacen()
End Sub
Protected Sub LnkEliminarSeccion_Click(sender As Object, e As EventArgs)
Dim gvRow As GridViewRow = DirectCast((DirectCast(sender, LinkButton)).NamingContainer, GridViewRow)
Dim Index As Integer = 0
For Each Dr As DataRow In DtSeccionAlmacen.Rows
If Dr("Consec").ToString.ToEntero = gvRow.DataKey("Consec").ToEntero() Then
Exit For
End If
Index += 1
Next
DtSeccionAlmacen.Rows.RemoveAt(Index)
DtSeccionAlmacen.AcceptChanges()
CargaSeccionAlmacen()
End Sub
#End Region
End Class