4345 lines
225 KiB
VB.net
4345 lines
225 KiB
VB.net
Option Strict On
|
|
Option Explicit On
|
|
|
|
Imports Microsoft.Reporting.WebForms
|
|
Imports System.Data
|
|
Imports Extensiones
|
|
Imports System.IO
|
|
|
|
|
|
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
|
|
If ViewState("DtInv") Is Nothing Then
|
|
Return New DataTable
|
|
Else
|
|
Return CType(ViewState("DtInv"), DataTable)
|
|
End If
|
|
|
|
|
|
|
|
End Get
|
|
Set(value As DataTable)
|
|
ViewState("DtInv") = 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 DtAlmacenesDevolucion As DataTable
|
|
Get
|
|
Return CType(ViewState("DtAlmacenesDevolucion"), DataTable)
|
|
End Get
|
|
Set(value As DataTable)
|
|
ViewState("DtAlmacenesDevolucion") = value
|
|
End Set
|
|
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 CvePSSerie As Integer
|
|
Get
|
|
Return CType(ViewState("CvePSSerie"), Integer)
|
|
End Get
|
|
Set(value As Integer)
|
|
ViewState("CvePSSerie") = value
|
|
End Set
|
|
End Property
|
|
Private Property CveUMSerie As Integer
|
|
Get
|
|
Return CType(ViewState("CveUMSerie"), Integer)
|
|
End Get
|
|
Set(value As Integer)
|
|
ViewState("CveUMSerie") = 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 PUSerie As Decimal
|
|
Get
|
|
Return CType(ViewState("PUSerie"), Decimal)
|
|
End Get
|
|
Set(value As Decimal)
|
|
ViewState("PUSerie") = value
|
|
End Set
|
|
End Property
|
|
Private Property CveConsecSerie As Integer
|
|
Get
|
|
Return CType(ViewState("CveConsecSerie"), Integer)
|
|
End Get
|
|
Set(value As Integer)
|
|
ViewState("CveConsecSerie") = 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 CveAlmacenDevolucionProveedor As Integer
|
|
Get
|
|
Return CType(ViewState("CveAlmacenDevolucionProveedor"), Integer)
|
|
End Get
|
|
Set(value As Integer)
|
|
ViewState("CveAlmacenDevolucionProveedor") = 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 CveProveedor As Integer
|
|
Get
|
|
Return CType(ViewState("CveProveedor"), Integer)
|
|
End Get
|
|
Set(value As Integer)
|
|
ViewState("CveProveedor") = 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
|
|
Private Property RealizarTraspasoAlmacenDevolucion As Boolean
|
|
Get
|
|
Return If(IsNothing(ViewState("RealizarTraspasoAlmacenDevolucion")), False, CBool(ViewState("RealizarTraspasoAlmacenDevolucion")))
|
|
End Get
|
|
Set
|
|
ViewState("RealizarTraspasoAlmacenDevolucion") = 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()
|
|
If UsuarioActual.CveEmpresa.Contiene(72, 80) Then DdlAlmacen.AutoPostBack = True
|
|
|
|
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(10).Visible = TienePermisoImportes
|
|
|
|
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
|
|
CveAlmacenDevolucionProveedor = -1
|
|
TipoMovimiento = 1
|
|
RealizarTraspasoAlmacenDevolucion = False
|
|
CantidadTotal = 0
|
|
IndexSeccionAlmacen = 0
|
|
|
|
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
|
|
|
|
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 = "", Optional CveTipoCompra As Integer = -1)
|
|
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,6,14")}) {If(CveSubProyecto > 0, $"And CveSubProyecto = {CveSubProyecto}", "")}"
|
|
End If
|
|
|
|
If CveTipoCompra = 10 Then
|
|
StrAlmacenes = $"Modalidad = 0"
|
|
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
|
|
|
|
Protected Sub DdlAlmacen_SelectedIndexChanged(sender As Object, e As EventArgs) Handles DdlAlmacen.SelectedIndexChanged
|
|
If DdlAlmacen.SelectedValue <> "-1" Then
|
|
|
|
CargaGVInv()
|
|
'For Each Gvr As GridViewRow In GvInv.Rows
|
|
' If Gvr.FCDropDownList("DdlSeccionAlmacen").SelectedValue = "-1" Then
|
|
' Dim Dr As DataRow = GlobalDTSeccionAlmacen(UsuarioActual.CveEmpresa, DdlAlmacen.SelectedValue.ToEntero).FiltroPrimero("")
|
|
' If Dr IsNot Nothing Then
|
|
' Gvr.FCDropDownList("DdlSeccionAlmacen").SelectedValueExist(Dr("CveSeccion"))
|
|
' End If
|
|
' End If
|
|
'Next
|
|
'UPInv.Update()
|
|
End If
|
|
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
|
|
LblIndirectoFactura.Visible = True
|
|
DivDdlIndirectoFactura.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.CveUsuario, UsuarioActual.CveEmpresa) Then
|
|
Dim FiltroTemporal = If(UsuarioActual.CveEmpresa = 119, "AND TipoDocto IN ('Fac','NC','DEV')", "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
|
|
|
|
Protected Sub DdlFletes_SelectedIndexChanged(sender As Object, e As EventArgs)
|
|
CargaFletesFactura()
|
|
End Sub
|
|
Private Sub CargaFletesFactura()
|
|
|
|
DdlIndirectoFactura.Items.Clear()
|
|
|
|
Dim ObjInventarios As New ClsInventarios
|
|
If DdlFletes.SelectedValue.ToEntero > 0 Then
|
|
If ObjInventarios.GetFletesCompras(DdlFletes.SelectedValue.ToEntero, UsuarioActual.CveEmpresa) Then
|
|
DdlIndirectoFactura.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()
|
|
|
|
DdlIndirectoFactura.DataBind()
|
|
'DdlIndirectoFactura.Items.Insert(0, New ListItem("Todos", "-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.CveUsuario, UsuarioActual.CveEmpresa) Then
|
|
Dim FiltroTemporal = If(UsuarioActual.CveEmpresa.Contiene(119, 140, 1, 72, 80), "AND TipoDocto IN ('Fac','NC','DEV')", "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
|
|
CveAlmacenDevolucionProveedor = -1
|
|
RealizarTraspasoAlmacenDevolucion = False
|
|
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)
|
|
'CargaAlmacenes(-1)
|
|
|
|
RealizarTraspasoAlmacenDevolucion = False
|
|
CveAlmacenDevolucionProveedor = -1
|
|
|
|
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
|
|
CveProveedor = pCveProveedor
|
|
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.Contiene("NC", "DEV"), 3, TipoMovimiento)
|
|
TotalCompraOC = ObjCompras.DtResultados.Rows(0)("SubTotal").ToString.ToDecimal - ObjCompras.DtResultados.Rows(0)("Descuentos").ToString.ToDecimal
|
|
CveTipoCompra = ObjCompras.DtResultados.Rows(0)("CveTipoCompra").ToString.ToEntero
|
|
|
|
If TipoMovimiento = 3 Then
|
|
CargaAlmacenes(-1, "21,2", CveTipoCompra)
|
|
End If
|
|
|
|
If CveTipoCompra = 9 Then
|
|
CargaAlmacenes(-1, "21", CveTipoCompra)
|
|
End If
|
|
|
|
If CveTipoCompra = 10 Then
|
|
CargaAlmacenes(-1, CveTipoCompra:=CveTipoCompra)
|
|
End If
|
|
|
|
|
|
RecibidaCompleta = False
|
|
|
|
|
|
Dim CargaSoloUsados As Boolean = False
|
|
|
|
If ObjInventario.RecepcionAlmacenGet(pCveCompra, BuscaEntregaDirecta, UsuarioActual.CveEmpresa) AndAlso ObjInventario.DtResultados.Rows.Count > 0 Then
|
|
Dim DtRecepcion As DataTable = Nothing
|
|
Dim NumUsados = ObjInventario.DtResultados.COUNT("EsUsado", "EsUsado = True").ToEntero()
|
|
Dim NumProductos = ObjInventario.DtResultados.COUNT("EsUsado", "EsUsado = False").ToEntero()
|
|
|
|
'SI LA COMPRA TIENE PRODUCTOS Y USADOS SOLO MOSTRAR LOS PRODUCTOS
|
|
If NumProductos > 0 AndAlso NumUsados > 0 Then
|
|
DtRecepcion = ObjInventario.DtResultados.FiltraParametros("EsUsado = False")
|
|
'SI LA COMPRA TIENE PUROS USADOS, MOSTRAR LOS USADOS Y CARGAR LOS ALMACENES
|
|
ElseIf NumProductos = 0 AndAlso NumUsados > 0 Then
|
|
CargaSoloUsados = True
|
|
DtRecepcion = ObjInventario.DtResultados.Copy()
|
|
If UsuarioActual.CveRol = 1 Then
|
|
CargaAlmacenes(-1, "22,24", CveTipoCompra)
|
|
Else
|
|
CargaAlmacenes(DtRecepcion.Rows(0)("CveSubProyecto").ToString.ToEntero, "22", CveTipoCompra)
|
|
End If
|
|
Else
|
|
DtRecepcion = ObjInventario.DtResultados.Copy()
|
|
End If
|
|
|
|
CveAlmacenDevolucionProveedor = DtRecepcion.Rows(0)("CveAlmacenDevolucionProveedor").ToString.ToEntero
|
|
|
|
If TipoMovimiento = 2 AndAlso CveAlmacenDevolucionProveedor > 0 Then
|
|
RealizarTraspasoAlmacenDevolucion = True
|
|
|
|
DivTraspasoDevolucion.Visible = True
|
|
LtlTextoDevolucion.Text = "La mercancía sera trasladada desde el almacen seleccionado al almacén de devolución"
|
|
ElseIf TipoMovimiento = 2 AndAlso GlobalDTAlmacen(UsuarioActual.CveEmpresa, CveTipoAlmacen:=21).Rows.Count = 0 Then
|
|
LtlTextoDevolucion.Text = "La mercancía sera devuelta ha el almacen seleccionado."
|
|
DivTraspasoDevolucion.Visible = True
|
|
End If
|
|
|
|
DtDatosDetalle = Nothing
|
|
CreaDtDetalle()
|
|
DtDatosLoteDetalle = Nothing
|
|
CreaDtLoteDetalle()
|
|
CreaDTInv(DtRecepcion)
|
|
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 DtRecepcion.Rows.Count = DtRecepcion.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 = DtRecepcion.Rows(0)("CveCliente").ToString.ToEntero
|
|
CveVendedor = DtRecepcion.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 DtRecepcion.Rows(0)("CveVendedor").ToString.ToEntero > 0 And DtRecepcion.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 (DtRecepcion .Rows(0)("CveUsuarioOC").ToString.ToEntero = 1559 And DtRecepcion .Rows(0)("FechaIngOC").ToString.ToDateTime > "2017-04-24 12:00".ToDateTime) Then
|
|
If UsuarioActual.Empresa.Funcionalidad(148) = "1" Then
|
|
CveAlmacenApartado = DtRecepcion.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"
|
|
If CargaSoloUsados Then
|
|
CargaAlmacenes(DtRecepcion.Rows(0)("CveSubProyecto").ToString.ToEntero, "22", CveTipoCompra)
|
|
Else
|
|
CargaAlmacenes(DtRecepcion.Rows(0)("CveSubProyecto").ToString.ToEntero, CveTipoCompra:=CveTipoCompra)
|
|
End If
|
|
End If
|
|
End If
|
|
'End If
|
|
End If
|
|
End If
|
|
|
|
End If
|
|
|
|
Dim CantidadFaltante As Double = DtRecepcion.SUM("CantidadC", "CantidadF > 0")
|
|
|
|
If UsuarioActual.Empresa.UsaAC AndAlso CantidadFaltante > 0 Then
|
|
PnlAC.Visible = True
|
|
CargaAC()
|
|
LbTotalPorDevengar.Text = DtRecepcion.SUM("Total", "CantidadF > 0").FormatoNumero
|
|
End If
|
|
|
|
|
|
'Existencias
|
|
If TipoMovimiento = 2 Then
|
|
If ObjInventario.ComprasDevolucionExistenciasGet(CveCompraSurtir) Then
|
|
DtExistencias = ObjInventario.DtResultados.Copy
|
|
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
|
|
|
|
If UsuarioActual.Empresa.Funcionalidad(573) = "1" Then
|
|
DivVirtualAdvertencia.Visible = True
|
|
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)("ProveedorCompra").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 = DdlIndirectoFactura.SelectedValue.ToEntero 'ObjInventario.DtResultados.Rows(0)("CveCompra").ToString.ToEntero
|
|
CveImportacionCompra = CveFleteCompra ' se iguala para que al guardar el movimiento, se toma esta variable
|
|
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("AplicaSeccion") Then
|
|
TmDT.Columns.Add("AplicaSeccion", GetType(Double))
|
|
End If
|
|
If Not TmDT.Columns.Contains("AplicaSerie") Then
|
|
TmDT.Columns.Add("AplicaSerie", GetType(Double))
|
|
End If
|
|
If Not TmDT.Columns.Contains("AplicaLote") Then
|
|
TmDT.Columns.Add("AplicaLote", GetType(Double))
|
|
End If
|
|
If Not TmDT.Columns.Contains("AplicaCaducidad") Then
|
|
TmDT.Columns.Add("AplicaCaducidad", GetType(Double))
|
|
End If
|
|
If Not TmDT.Columns.Contains("CostoIndirecto") Then
|
|
TmDT.Columns.Add("CostoIndirecto", GetType(Double))
|
|
End If
|
|
If Not TmDT.Columns.Contains("Lote") Then
|
|
TmDT.Columns.Add("Lote", GetType(String))
|
|
End If
|
|
If Not TmDT.Columns.Contains("CveSeccion") Then
|
|
TmDT.Columns.Add("CveSeccion", GetType(Integer))
|
|
End If
|
|
If Not TmDT.Columns.Contains("Caducidad") Then
|
|
TmDT.Columns.Add("Caducidad", GetType(Date))
|
|
End If
|
|
If Not TmDT.Columns.Contains("Seleccionado") Then
|
|
TmDT.Columns.Add("Seleccionado", GetType(Boolean))
|
|
End If
|
|
If Not TmDT.Columns.Contains("CantidadSeleccionada") Then
|
|
TmDT.Columns.Add("CantidadSeleccionada", 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
|
|
Dr("Caducidad") = Now
|
|
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
|
|
|
|
Dim AplicaSeccion, AplicaLote, AplicaCaducidad, AplicaSerie As Boolean
|
|
If DtInv IsNot Nothing AndAlso DtInv.Rows.Count > 0 Then
|
|
AplicaSerie = CBool(DtInv.MAX("AplicaSerie"))
|
|
AplicaSeccion = CBool(DtInv.MAX("AplicaSeccion"))
|
|
AplicaLote = CBool(DtInv.MAX("AplicaLote"))
|
|
AplicaCaducidad = CBool(DtInv.MAX("AplicaCaducidad"))
|
|
End If
|
|
|
|
If AplicaSeccion Then GvInv.Columns(11).Visible = True
|
|
If AplicaLote Then GvInv.Columns(12).Visible = True
|
|
If AplicaCaducidad Then GvInv.Columns(13).Visible = True
|
|
|
|
If AplicaSerie OrElse AplicaSeccion OrElse AplicaLote OrElse AplicaCaducidad Then
|
|
GvInv.Columns(14).Visible = True
|
|
End If
|
|
|
|
'For Each item As DataRow In DtInv.Rows
|
|
' Dim Dr As DataRow = GlobalDTPS(UsuarioActual.CveEmpresa, item("CvePS").ToString.ToEntero).FiltroPrimero("")
|
|
' If Dr IsNot Nothing Then
|
|
' item("AplicaSeccion") = CBool(Dr("AplicaSeccion"))
|
|
' If CBool(Dr("AplicaSeccion")) Then GvInv.Columns(10).Visible = True
|
|
' item("AplicaSerie") = CBool(Dr("AplicaSerie"))
|
|
' item("AplicaLote") = CBool(Dr("AplicaLote"))
|
|
' If CBool(Dr("AplicaLote")) Then GvInv.Columns(11).Visible = True
|
|
' item("AplicaCaducidad") = CBool(Dr("AplicaCaducidad"))
|
|
' If CBool(Dr("AplicaCaducidad")) Then GvInv.Columns(12).Visible = True
|
|
' If CBool(Dr("AplicaSeccion")) Or CBool(Dr("AplicaLote")) Or CBool(Dr("AplicaCaducidad")) Or CBool(Dr("AplicaSerie")) Then
|
|
' GvInv.Columns(15).Visible = True
|
|
' End If
|
|
' End If
|
|
'Next
|
|
|
|
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 CBool(e.Row.DBCampo("AplicaSerie")) Then
|
|
|
|
'If e.Row.DBCampo("CveMetodoInventario").ToString = "5" Then
|
|
e.Row.FCButton("BtnSerie").Visible = True
|
|
e.Row.FCButton("BtnSerie").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("BtnSerie").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
|
|
If UsuarioActual.CveRol = 1 Then 'carga la cantidad con el rol AD
|
|
e.Row.FCTextBox("TbCantidadF").Text = e.Row.DBCampo("CantidadF").FormatoNumero
|
|
End If
|
|
End If
|
|
|
|
If CBool(e.Row.DBCampo("AplicaSeccion")) Then
|
|
e.Row.FCDropDownList("DdlSeccionAlmacen").Visible = True
|
|
If DdlAlmacen.SelectedValue.ToEntero > 0 Then
|
|
|
|
CargaSeccionesAlmacen(e.Row.FCDropDownList("DdlSeccionAlmacen"), DdlAlmacen.SelectedValue.ToEntero, e.Row.DBCampo("CvePS").ToEntero, UsuarioActual.CveEmpresa, True)
|
|
'Dim dtsec As DataTable = GlobalDTInvPSSeccionesAlmacen(UsuarioActual.CveEmpresa, DdlAlmacen.SelectedValue.ToEntero, e.Row.DBCampo("CvePS").ToEntero)
|
|
'e.Row.FCDropDownList("DdlSeccionAlmacen").DataSource = dtsec
|
|
'e.Row.FCDropDownList("DdlSeccionAlmacen").DataBind()
|
|
'If dtsec.Rows.Count = 1 Then
|
|
' e.Row.FCDropDownList("DdlSeccionAlmacen").SelectedIndex = 0
|
|
' e.Row.FCDropDownList("DdlSeccionAlmacen").Enabled = False
|
|
'Else 'si es mayor a uno que por default seleccione el primero, que seria el predeterminado
|
|
' e.Row.FCDropDownList("DdlSeccionAlmacen").SelectedValueExist(dtsec.FiltroPrimeroValor("CveSeccionAlmacen", "Predeterminado = 1"))
|
|
'End If
|
|
|
|
'e.Row.FCDropDownList("DdlSeccionAlmacen").Items.Insert(0, New ListItem("Seleccione", "-1"))
|
|
|
|
'dtsec.Dispose()
|
|
End If
|
|
e.Row.FCTextBox("TxtDividir").Visible = True
|
|
|
|
Else
|
|
e.Row.FCDropDownList("DdlSeccionAlmacen").Visible = False
|
|
End If
|
|
|
|
If CBool(e.Row.DBCampo("AplicaCaducidad")) Then
|
|
e.Row.FCTextBox("TxtCaducidad").Visible = True
|
|
e.Row.FCLinkButton("LnkCaducidad").Visible = True
|
|
e.Row.FCTextBox("TxtCaducidad").Text = Now.ToShortDateString
|
|
e.Row.FCTextBox("TxtDividir").Visible = True
|
|
Else
|
|
e.Row.FCTextBox("TxtCaducidad").Visible = False
|
|
e.Row.FCLinkButton("LnkCaducidad").Visible = False
|
|
End If
|
|
|
|
If CBool(e.Row.DBCampo("AplicaLote")) Then
|
|
e.Row.FCTextBox("TxtLote").Visible = True
|
|
Else
|
|
e.Row.FCTextBox("TxtLote").Visible = False
|
|
End If
|
|
|
|
e.Row.FCButton("BtnDividir").Attributes.Add("onclick", String.Format("Dividir('{0}');", e.Row.FCTextBox("TxtDividir").ClientID))
|
|
e.Row.FCButton("BtnDividir").CommandArgument = e.Row.RowIndex.ToString
|
|
e.Row.FCTextBox("TxtDividir").Attributes.Add("onkeyup", String.Format("LimitaCantidad({0},this,'{1}');", e.Row.DBCampo("CantidadF"), e.Row.FCButton("BtnDividir").ClientID))
|
|
|
|
|
|
'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
|
|
|
|
|
|
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()
|
|
|
|
CveConsecSerie = Gvr.DataKey("Consec").ToEntero
|
|
CvePSSerie = Gvr.DataKey("CvePS").ToEntero
|
|
CveUMSerie = 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)
|
|
AgregaSerie(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 BtnSerie_Click(sender As Object, e As EventArgs)
|
|
|
|
Dim Argumentos = CType(sender, Button).CommandArgument.Split("°"c)
|
|
|
|
LbProducto.Text = Argumentos(3)
|
|
LbCantidad.Text = Argumentos(4).FormatoNumero
|
|
|
|
CvePSSerie = Argumentos(0).ToEntero
|
|
CveUMSerie = Argumentos(1).ToEntero
|
|
PUSerie = Argumentos(2).ToDecimal
|
|
CveConsecSerie = 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 CreaDTAlmacenDevolucion()
|
|
If DtAlmacenesDevolucion Is Nothing Then
|
|
DtAlmacenesDevolucion = New DataTable
|
|
DtAlmacenesDevolucion.Columns.Add("CveCompraDetalle", GetType(Integer))
|
|
DtAlmacenesDevolucion.Columns.Add("CveAlmacenOriginal", GetType(Integer))
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub CargaSerie(Tipo As Integer, Optional CerrarCompletado As Boolean = False)
|
|
'RegistraScript("document.getElementById(""TxtSerie"").focus();")
|
|
RegistraScript("$('#DivSerie').modal();", "ModalLote")
|
|
|
|
'Dim AplicaCaducidad = False
|
|
'If GlobalDTPS(UsuarioActual.CveEmpresa, CvePS:=CvePSSerie).FiltraParametros("").Rows(0) IsNot Nothing Then
|
|
' AplicaCaducidad = If(GlobalDTPS(UsuarioActual.CveEmpresa, CvePS:=CvePSSerie).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}", CveConsecSerie), "Consec DESC")
|
|
GvSerie.DataBind()
|
|
|
|
'VALIDA QUE SIGA AGREGANDO
|
|
If Not DtDatosDetalle.FiltraParametros(String.Format("ConsecId = {0}", CveConsecSerie)).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 = CvePSSerie 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()
|
|
TxtSerie.Text = ""
|
|
TxtSerie.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'); ", TxtSerie.ClientID))
|
|
End If
|
|
|
|
End Sub
|
|
Protected Sub BtnAgregarPS_Click(sender As Object, e As EventArgs)
|
|
AgregaSerie(TxtSerie.Text.Replace(" ", String.Empty), 1)
|
|
End Sub
|
|
Private Sub AgregaSerie(Serie As String, Tipo As Integer)
|
|
'SerieLote = SerieLote.Trim.Replace(" ", " ")
|
|
|
|
If Serie.Trim = "" Then
|
|
Alert("El campo Serie es obligatorio. Por favor rectifique y vuelva a intentar.", TipoMensaje.MsgAdvertencia)
|
|
Exit Sub
|
|
End If
|
|
|
|
Dim SeriesArreglo = Serie.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:=CvePSSerie).FiltroPrimero("", "PS")
|
|
|
|
For Each Serie In SeriesArreglo
|
|
DtDuplicado = DtDatosDetalle.FiltraParametros($"ConsecId = {CveConsecSerie} 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}", CveConsecSerie)).Rows.Count < LbCantidad.Text.ToEntero Then
|
|
Exit For
|
|
End If
|
|
|
|
'VERIFICA EXISTENCIAS
|
|
If TipoMovimiento > 1 Then
|
|
Dim Existencia = ObjInventarios.GetExistenciasPS(CvePSSerie, CveUMSerie, UsuarioActual.CveEmpresa, DdlAlmacen.SelectedValue.ToEntero, FechaMovto:=TxtFecha.Text.ToDateTime.ToString("yyyy/MM/dd HH:mm"), Serie:=Serie)
|
|
If Existencia < 1 Then
|
|
MensajeSinExistencias.Append($"Serie: <b>{Serie}</b>. <br/>")
|
|
Continue For
|
|
End If
|
|
|
|
If TipoMovimiento = 2 Then
|
|
If DtExistencias.SUM("Existencia", $"Serie = '{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:=CvePSSerie).FiltraParametros("").Rows(0) IsNot Nothing Then
|
|
' AplicaCaducidad = If(GlobalDTPS(UsuarioActual.CveEmpresa, CvePS:=CvePSSerie).FiltraParametros("").Rows(0)("AplicaCaducidad").ToString = "True", True, False)
|
|
'End If
|
|
|
|
Row("ConsecId") = CveConsecSerie
|
|
Row("Consec") = DtDatosDetalle.Rows.Count + 1
|
|
Row("CvePS") = CvePSSerie
|
|
Row("CveUM") = CveUMSerie
|
|
Row("PU") = PUSerie
|
|
Row("Serie") = Serie
|
|
Row("FechaCaducidad") = MinFecha.ToShortDateString
|
|
|
|
DtDatosDetalle.Rows.Add(Row)
|
|
Next
|
|
ObjInventarios.Dispose()
|
|
|
|
If Tipo = 1 Then
|
|
TxtSerie.Text = ""
|
|
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("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
|
|
|
|
CvePSSerie = Argumentos(0).ToEntero
|
|
CveUMSerie = Argumentos(1).ToEntero
|
|
PUSerie = Argumentos(2).ToDecimal
|
|
CveConsecSerie = 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}", CveConsecSerie), "Consec DESC")
|
|
GvLote.DataBind()
|
|
|
|
'VALIDA QUE SIGA AGREGANDO
|
|
If Not DtDatosLoteDetalle.SUM("Cantidad", String.Format("ConsecId = {0}", CveConsecSerie)) < 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 = CvePSSerie 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, 1)
|
|
End Sub
|
|
|
|
Private Sub AgregaLote(Lote 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 = {CveConsecSerie} AND Lote = '{Lote}' ")
|
|
If DtDuplicado IsNot Nothing AndAlso DtDuplicado.Rows.Count > 0 Then
|
|
Alert($"<br/> El numero de Lote <b>""{Lote}""</b> 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(CvePSSerie, CveUMSerie, UsuarioActual.CveEmpresa, DdlAlmacen.SelectedValue.ToEntero, FechaMovto:=TxtFecha.Text.ToDateTime.ToString("yyyy/MM/dd HH:mm"), Lote:=Lote)
|
|
If Existencia < CantidadLote Then
|
|
Alert($"<br/> El numero de Lote <b>""{Lote}""</b> 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}' ") = 0 Then
|
|
Alert($"<br/> El numero de Lote <b>""{Lote}""</b> proporcionado ya se encuentra ingresado.", TipoMensaje.MsgAdvertencia)
|
|
RegistraScript("playsonidito('142608__autistic-lucario__error.wav')")
|
|
End If
|
|
End If
|
|
End If
|
|
|
|
Row("ConsecId") = CveConsecSerie
|
|
Row("Consec") = DtDatosDetalle.Rows.Count + 1
|
|
Row("Cantidad") = CantidadLote
|
|
Row("CvePS") = CvePSSerie
|
|
Row("CveUM") = CveUMSerie
|
|
Row("PU") = PUSerie
|
|
Row("Lote") = Lote
|
|
'Row("FechaCaducidad") = FechaCaducidad
|
|
'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 = ""
|
|
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
|
|
|
|
Try
|
|
For Each dr As DataRow In DtDatosLoteDetalle.Rows
|
|
If dr("Lote").ToString = keyLote 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(String.Format("Ha sido cambiada la informacion de existencias costo indirecto actual, se han recargado la información.[{0}-{1}]", CantidadGV, CantConsulta), TipoMensaje.MsgAdvertencia)
|
|
ObjComprasDif.Dispose()
|
|
Return False
|
|
End If
|
|
ObjComprasDif.Dispose()
|
|
End If
|
|
|
|
|
|
Dim ValidaSeccion As Boolean = False : Dim ValidaCaducidad As Boolean = False : Dim ValidaLote As Boolean = False
|
|
'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
|
|
|
|
If CBool(gvr.DataKey("AplicaSeccion")) AndAlso gvr.FCDropDownList("DdlSeccionAlmacen").SelectedValue.ToEntero <= 0 Then
|
|
ValidaSeccion = True
|
|
End If
|
|
If CBool(gvr.DataKey("AplicaCaducidad")) AndAlso gvr.FCTextBox("TxtCaducidad").Text.Trim = "" Then
|
|
ValidaCaducidad = True
|
|
End If
|
|
If CBool(gvr.DataKey("AplicaLote")) AndAlso gvr.FCTextBox("TxtLote").Text.Trim = "" Then
|
|
ValidaLote = True
|
|
End If
|
|
|
|
End If
|
|
Index += 1
|
|
Next
|
|
If ValidaSeccion Then
|
|
Alert("La sección de almacen no ha sido especificada en todos los productos.", TipoMensaje.MsgAdvertencia)
|
|
Return False
|
|
End If
|
|
If ValidaCaducidad Then
|
|
Alert("La caducidad no ha sido especificada en todos los productos.", TipoMensaje.MsgAdvertencia)
|
|
Return False
|
|
End If
|
|
If ValidaLote Then
|
|
Alert("El lote de almacen no ha sido especificada en todos los productos.", TipoMensaje.MsgAdvertencia)
|
|
Return False
|
|
End If
|
|
|
|
'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
|
|
|
|
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, EsContabilizable As Boolean) 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, Contabilizable:=EsContabilizable) 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, Contabilizable:=If(CveTipoCompra = 10, False, EsContabilizable)) 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 CveMovimientoOriginal As Integer
|
|
|
|
'Dim CveMovimientoS
|
|
|
|
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 ObjAcum As New ClsAcumuladores(ObjInventario.IniciaTransacSQL())
|
|
Dim ObjContaAC As ClsContPAQi = Nothing
|
|
Dim ObjContaContPAQ As ClsContPAQi = Nothing
|
|
|
|
'ENTREGA DIRECTA
|
|
|
|
Dim MovtosEntradaExA As New List(Of Integer)
|
|
Dim FoliosEntradaExA As New List(Of Integer)
|
|
|
|
Dim MovtosSalidaDirecta As New List(Of Integer)
|
|
Dim FoliosSalidaDirecta As New List(Of Integer)
|
|
|
|
'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)
|
|
|
|
'VIRUAL
|
|
Dim CveMovimientoVirtual As Integer = -1
|
|
Dim FolioVirtual As Integer = -1
|
|
|
|
'TRASPASO DEVOLUCION
|
|
Dim CveMovimientoSalidaTraspaso As Integer = -1
|
|
Dim FolioSalidaTraspaso As String = ""
|
|
|
|
'CONTABILIDAD
|
|
Dim CvePrePoliza = -1
|
|
Dim MensajeContabilidad = ""
|
|
|
|
Try
|
|
'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
|
|
|
|
Dim CveConceptoAlmacen As Integer = If(TipoMovimiento > 1, 13, 2)
|
|
|
|
Dim CveAlmacen As Integer = DdlAlmacen.SelectedValue.ToEntero
|
|
|
|
Dim CveModalidad As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa, CveAlmacen:=CveAlmacen).FiltroPrimeroValor("CveModalidad").ToEntero()
|
|
|
|
Dim EsContabilizable As Boolean = (CveModalidad = 1)
|
|
|
|
If RealizarTraspasoAlmacenDevolucion AndAlso TipoMovimiento = 2 Then
|
|
CveConceptoAlmacen = 26
|
|
|
|
'For Each gvr As GridViewRow In GvInv.Rows
|
|
' If gvr.FCCheckBox("cbInv").Checked AndAlso gvr.FCTextBox("TbCantidadF").Text.ToDecimal > 0 Then
|
|
' Dim Row As DataRow = DtAlmacenesDevolucion.NewRow()
|
|
' Row("CveCompraDetalle") = gvr.DataKey("CveCompraDetalle").ToEntero()
|
|
' Row("CveAlmacenOriginal") = gvr.DataKey("CveAlmacenOriginal").ToEntero()
|
|
' DtAlmacenesDevolucion.Rows.Add(Row)
|
|
' End If
|
|
'Next
|
|
|
|
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
|
|
|
|
Dim CveMovtoSalidaActual = -1
|
|
Dim CveMovtoEntradaActual = -1
|
|
Dim CveVendedorActual = -1
|
|
Dim CveClienteActual = -1
|
|
|
|
Dim CveAlmacenDestino = CveAlmacen
|
|
Dim CveSeccionDestino As Integer = -1
|
|
|
|
'For Each RowAlmacen As DataRow In DtAlmacenesDevolucion.FiltraParametros("", DistinctColumns:={"CveAlmacenOrignal"}).Rows
|
|
|
|
'SALIDA DE ALMACEN POR TRASPASO
|
|
CveMovimientoSalidaTraspaso = ObjInventario.AddMovimiento(CveAlmacen, CveConceptoAlmacen, 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), CveAlmacenDestino:=CveAlmacenDestino, Remision:=TxtRemision.Text, Modulo:="RA/G11")
|
|
|
|
If CveMovimientoSalidaTraspaso > 0 Then
|
|
FolioSalidaTraspaso = ObjInventario.Folio.ToString()
|
|
|
|
For Each gvr As GridViewRow In GvInv.Rows '.Cast(Of GridViewRow).Where(Function(row) row.DataKey("CveAlmacenOrignal") = RowAlmacen("CveAlmacenOrignal").ToString())
|
|
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
|
|
If Not UsuarioActual.Empresa.Funcionalidad(531) = "1" Then
|
|
PU = Math.Round((TotalCompraOC * If(TipoCambio > 1, TipoCambio, 1)), 2).ToDecimal - (SumaTotal - (PU))
|
|
End If
|
|
End If
|
|
If Not ObjInventario.AddMovimientoDetalle(CveMovimientoSalidaTraspaso, 1, gvr.DataKey("CveUM").ToEntero, gvr.DataKey("CvePS").ToEntero, PU, -1, PUTC:=If(DdlMonedaTC.SelectedValue.ToEntero = 1, -1, PUExtranjero), Serie:=Dr("Serie").ToString, CveCompraDetalle:=gvr.DataKey("CveCompraDetalle").ToEntero, CveOrdenCompraDetalle:=gvr.DataKey("CveOrdenCompraDetalle").ToEntero, CveVentaDetalle:=gvr.DataKey("CveVentaDetalle").ToEntero, CostoIndirecto:=CostoIndirecto, CveUsuarioModifico:=UsuarioActual.CveUsuario, FechaCaducidad:=If(CBool(gvr.DataKey("AplicaCaducidad")), gvr.FCTextBox("TxtCaducidad").Text.ToDate, MinFecha), Lote:=If(CBool(gvr.DataKey("AplicaLote")), gvr.FCTextBox("TxtLote").Text, ""), CveSeccionAlmacen:=If(CBool(gvr.DataKey("AplicaSeccion")), gvr.FCDropDownList("DdlSeccionAlmacen").SelectedValue.ToEntero, -1)) 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
|
|
If Not UsuarioActual.Empresa.Funcionalidad(531) = "1" Then
|
|
PU = (Math.Round((TotalCompraOC * If(TipoCambio > 1, TipoCambio, 1)), 2).ToDecimal - (SumaTotal - (Dr("Cantidad").ToString.ToDecimal * (PU)))) / Dr("Cantidad").ToString.ToDecimal
|
|
End If
|
|
End If
|
|
If Not ObjInventario.AddMovimientoDetalle(CveMovimientoSalidaTraspaso, Dr("Cantidad").ToString.ToDouble, gvr.DataKey("CveUM").ToEntero, gvr.DataKey("CvePS").ToEntero, PU, -1, PUTC:=If(DdlMonedaTC.SelectedValue.ToEntero = 1, -1, PUExtranjero), Lote:=Dr("Lote").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, CveSeccionAlmacen:=If(CBool(gvr.DataKey("AplicaSeccion")), gvr.FCDropDownList("DdlSeccionAlmacen").SelectedValue.ToEntero, -1)) 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)
|
|
If Not UsuarioActual.Empresa.Funcionalidad(531) = "1" Then
|
|
PU = (Math.Round((TotalCompraOC * If(TipoCambio > 1, TipoCambio, 1)), 2).ToDecimal - (SumaTotal - tTotal)) / gvr.FCTextBox("TbCantidadF").Text.ToDecimal
|
|
End If
|
|
End If
|
|
If Not ObjInventario.AddMovimientoDetalle(CveMovimientoSalidaTraspaso, gvr.FCTextBox("TbCantidadF").Text.ToDouble, gvr.DataKey("CveUM").ToEntero, gvr.DataKey("CvePS").ToEntero, PU, -1, 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, FechaCaducidad:=If(CBool(gvr.DataKey("AplicaCaducidad")), gvr.FCTextBox("TxtCaducidad").Text.ToDate, MinFecha), Lote:=If(CBool(gvr.DataKey("AplicaLote")), gvr.FCTextBox("TxtLote").Text, ""), CveSeccionAlmacen:=If(CBool(gvr.DataKey("AplicaSeccion")), gvr.FCDropDownList("DdlSeccionAlmacen").SelectedValue.ToEntero, -1)) 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
|
|
|
|
'Next
|
|
|
|
'MODIFICA EL CONCEPTO PARA REALIZAR LA ENTRADA
|
|
CveConceptoAlmacen = 27
|
|
CveAlmacen = CveAlmacenDevolucionProveedor
|
|
End If
|
|
|
|
'ENTRADA ALMACÉN
|
|
CveMovimiento = ObjInventario.AddMovimiento(CveAlmacen, CveConceptoAlmacen, 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), CveMovimientoRelacionado:=CveMovimientoSalidaTraspaso, Remision:=TxtRemision.Text, Modulo:="RA/G1")
|
|
|
|
If CveMovimiento > 0 Then
|
|
CveMovimientoOriginal = CveMovimiento
|
|
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
|
|
If Not UsuarioActual.Empresa.Funcionalidad(531) = "1" Then
|
|
PU = Math.Round((TotalCompraOC * If(TipoCambio > 1, TipoCambio, 1)), 2).ToDecimal - (SumaTotal - (PU))
|
|
End If
|
|
End If
|
|
If Not ObjInventario.AddMovimientoDetalle(CveMovimiento, 1, gvr.DataKey("CveUM").ToEntero, gvr.DataKey("CvePS").ToEntero, PU, -1, PUTC:=If(DdlMonedaTC.SelectedValue.ToEntero = 1, -1, PUExtranjero), Serie:=Dr("Serie").ToString, CveCompraDetalle:=gvr.DataKey("CveCompraDetalle").ToEntero, CveOrdenCompraDetalle:=gvr.DataKey("CveOrdenCompraDetalle").ToEntero, CveVentaDetalle:=gvr.DataKey("CveVentaDetalle").ToEntero, CostoIndirecto:=CostoIndirecto, CveUsuarioModifico:=UsuarioActual.CveUsuario, FechaCaducidad:=If(CBool(gvr.DataKey("AplicaCaducidad")), gvr.FCTextBox("TxtCaducidad").Text.ToDate, MinFecha), Lote:=If(CBool(gvr.DataKey("AplicaLote")), gvr.FCTextBox("TxtLote").Text, ""), CveSeccionAlmacen:=If(CBool(gvr.DataKey("AplicaSeccion")), gvr.FCDropDownList("DdlSeccionAlmacen").SelectedValue.ToEntero, -1)) 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
|
|
If Not UsuarioActual.Empresa.Funcionalidad(531) = "1" Then
|
|
PU = (Math.Round((TotalCompraOC * If(TipoCambio > 1, TipoCambio, 1)), 2).ToDecimal - (SumaTotal - (Dr("Cantidad").ToString.ToDecimal * (PU)))) / Dr("Cantidad").ToString.ToDecimal
|
|
End If
|
|
End If
|
|
If Not ObjInventario.AddMovimientoDetalle(CveMovimiento, Dr("Cantidad").ToString.ToDouble, gvr.DataKey("CveUM").ToEntero, gvr.DataKey("CvePS").ToEntero, PU, -1, PUTC:=If(DdlMonedaTC.SelectedValue.ToEntero = 1, -1, PUExtranjero), Lote:=Dr("Lote").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, CveSeccionAlmacen:=If(CBool(gvr.DataKey("AplicaSeccion")), gvr.FCDropDownList("DdlSeccionAlmacen").SelectedValue.ToEntero, -1)) 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)
|
|
If Not UsuarioActual.Empresa.Funcionalidad(531) = "1" Then
|
|
PU = (Math.Round((TotalCompraOC * If(TipoCambio > 1, TipoCambio, 1)), 2).ToDecimal - (SumaTotal - tTotal)) / gvr.FCTextBox("TbCantidadF").Text.ToDecimal
|
|
End If
|
|
End If
|
|
If Not ObjInventario.AddMovimientoDetalle(CveMovimiento, gvr.FCTextBox("TbCantidadF").Text.ToDouble, gvr.DataKey("CveUM").ToEntero, gvr.DataKey("CvePS").ToEntero, PU, -1, 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, FechaCaducidad:=If(CBool(gvr.DataKey("AplicaCaducidad")), gvr.FCTextBox("TxtCaducidad").Text.ToDate, MinFecha), Lote:=If(CBool(gvr.DataKey("AplicaLote")), gvr.FCTextBox("TxtLote").Text, ""), CveSeccionAlmacen:=If(CBool(gvr.DataKey("AplicaSeccion")), gvr.FCDropDownList("DdlSeccionAlmacen").SelectedValue.ToEntero, -1)) 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 UsuarioActual.Empresa.Funcionalidad(531) = "1" Then
|
|
If Not ErrorMovInv AndAlso RecibidaCompleta AndAlso ObjInventario.GetMovimientosDetalle(CveMovimientoOriginal, 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
|
|
End If
|
|
|
|
Dim ImporteIngresoAdicional As Decimal = 0
|
|
|
|
'SI RECEPCION VALIDA [ENTREGADIRECTA, APARTADOS, AC]
|
|
If TipoMovimiento = 1 Then
|
|
'ENTREGA DIRECTA
|
|
If EntregaDirecta Then
|
|
If Not ErrorMovInv Then
|
|
|
|
Dim Dt As DataTable = Nothing
|
|
|
|
If ObjInventario.GetMovimientosDetalle(CveMovimiento, UsuarioActual.CveEmpresa) Then
|
|
If ObjInventario.DtResultados.Rows.Count > 0 Then
|
|
Dt = ObjInventario.DtResultados
|
|
End If
|
|
End If
|
|
|
|
'GENERA UN MOVIMIENTO POR CADA VENTA
|
|
For Each DrVenta As DataRow In Dt.FiltraParametros("", DistinctColumns:={"CveVenta"}).Rows
|
|
Dim CveMovtoSalidaDirecta As Integer = -1
|
|
Dim FolioSalidaDirecta As Integer = -1
|
|
|
|
Dim CveVenta As Integer = DrVenta("CveVenta").ToString().ToEntero()
|
|
|
|
Dim ObjFactura As New Modelos.Factura(UsuarioActual, CveVenta, UsuarioActual.CveEmpresa)
|
|
|
|
Dim DtDetalleMovimiento As DataTable = Dt.FiltraParametros($"CveVenta={ObjFactura.CveVenta}")
|
|
|
|
If ObjFactura.TipoDocto = "Ing" Then
|
|
Dim MovSalida = GenerarMovimientoAlmacenVenta(DdlAlmacen.SelectedValue.ToEntero(), 3, ObjFactura.CveVenta, CveMovimiento, DtDetalleMovimiento, ObjInventario, ObjConta, ObjContaContPAQ, EsContabilizable, "RA/G2")
|
|
|
|
ErrorMovInv = MovSalida.CveMovimiento <= 0
|
|
|
|
If Not ErrorMovInv Then
|
|
MovtosSalidaDirecta.Add(MovSalida.CveMovimiento)
|
|
FoliosSalidaDirecta.Add(MovSalida.Folio)
|
|
End If
|
|
|
|
ElseIf ObjFactura.TipoDocto = "Rem" Then
|
|
Dim MovSalidaExA = GenerarMovimientoAlmacenVenta(DdlAlmacen.SelectedValue.ToEntero(), 8, ObjFactura.CveVenta, -1, DtDetalleMovimiento, ObjInventario, ObjConta, ObjContaContPAQ, False, "RA/G2R1")
|
|
|
|
ErrorMovInv = MovSalidaExA.CveMovimiento <= 0
|
|
|
|
If Not ErrorMovInv Then
|
|
MovtosSalidaDirecta.Add(MovSalidaExA.CveMovimiento)
|
|
FoliosSalidaDirecta.Add(MovSalidaExA.Folio)
|
|
|
|
Dim MovEntradaExA = GenerarMovimientoAlmacenVenta(ObjFactura.CveAlmacenTraspasoDestino, 9, ObjFactura.CveVenta, MovSalidaExA.CveMovimiento, DtDetalleMovimiento, ObjInventario, ObjConta, ObjContaContPAQ, False, "RA/G2R2")
|
|
|
|
ErrorMovInv = MovEntradaExA.CveMovimiento <= 0
|
|
|
|
If Not ErrorMovInv Then
|
|
MovtosEntradaExA.Add(MovEntradaExA.CveMovimiento)
|
|
FoliosEntradaExA.Add(MovEntradaExA.Folio)
|
|
End If
|
|
|
|
End If
|
|
|
|
End If
|
|
|
|
Next
|
|
|
|
If Not ErrorMovInv Then
|
|
If Not ObjInventario.LimpiaEntregaDirecta(CveMovimiento) 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
|
|
Dim CveSeccionDestino As Integer = -1
|
|
|
|
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, Modulo:="RA/G3")
|
|
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, Modulo:="RA/G7")
|
|
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.ToDecimal, CveAF:=Dr("CveAF").ToString.ToEntero, CveSeccionAlmacen:=Dr("CveSeccionAlmacen").ToString.ToEntero, Serie:=Dr("Serie").ToString, Lote:=Dr("Lote").ToString, FechaCaducidad:=Dr("FechaCaducidad").ToString.ToDate, CveVentaDetalle:=Dr("CveVentaDetalle").ToString.ToEntero, CveMovimientoDetalleEntrada:=Dr("CveMovimientoDetalle").ToString.ToEntero, CveUsuarioModifico:=UsuarioActual.CveUsuario) Then
|
|
ErrorMovInv = True
|
|
Exit For
|
|
End If
|
|
|
|
CveSeccionDestino = -3 'se madna este dato, para que el trigger, obtenga la seccion automaticamente
|
|
|
|
If Not ObjInventario.AddMovimientoDetalle(CveMovtoEntradaActual, Dr("Cantidad").ToString.ToDouble, Dr("CveUM").ToString.ToEntero, Dr("CvePS").ToString.ToEntero, Dr("PU").ToString.ToDecimal, CveAF:=Dr("CveAF").ToString.ToEntero, CveSeccionAlmacen:=CveSeccionDestino, Serie:=Dr("Serie").ToString, Lote:=Dr("Lote").ToString, FechaCaducidad:=Dr("FechaCaducidad").ToString.ToDate, CveVentaDetalle:=Dr("CveVentaDetalle").ToString.ToEntero, CveUsuarioModifico:=UsuarioActual.CveUsuario) Then
|
|
ErrorMovInv = True
|
|
Exit For
|
|
End If
|
|
|
|
Next
|
|
|
|
End If
|
|
End If
|
|
|
|
'VIRTUAL
|
|
If UsuarioActual.Empresa.Funcionalidad(573) = "1" Then
|
|
|
|
Dim DtPSVirtual As New DataTable("DtTamanios")
|
|
|
|
If ObjInventario.GetMovimientosDetalleVirtual(CveMovimiento, UsuarioActual.CveEmpresa) Then
|
|
DtPSVirtual = ObjInventario.DtResultados
|
|
End If
|
|
|
|
If DtPSVirtual IsNot Nothing AndAlso DtPSVirtual.Rows.Count > 0 Then
|
|
Dim CveSubProyecto As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("CveSubProyecto", $"CveAlmacen= {DdlAlmacen.SelectedValue}").ToEntero()
|
|
|
|
Dim CveTipoAlmacenFiltro As Integer = If(CveTipoCompra = 9, 25, 24)
|
|
|
|
Dim CveAlmacenVirutal As Integer = GlobalDTAlmacenUsuarios(UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveTipoAlmacenFiltro).FiltroPrimeroValor("CveAlmacen", $"CveSubProyecto={CveSubProyecto}").ToEntero()
|
|
|
|
CveMovimientoVirtual = ObjInventario.AddMovimiento(CveAlmacenVirutal, If(TipoMovimiento > 1, 13, 2), 1, TxtFecha.Text.ToDate, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveCompraSurtir, -1, -1, -1, Observaciones:=TxtObservaciones.Text.Trim, Modulo:="RA/G4")
|
|
FolioVirtual = ObjInventario.Folio
|
|
|
|
For Each RowUsado As DataRow In DtPSVirtual.Rows
|
|
Dim CvePS = RowUsado("CvePS").ToString().ToEntero()
|
|
Dim CantidadUsado As Decimal = RowUsado("Cantidad").ToString().ToDecimal()
|
|
Dim PU As Decimal = RowUsado("Cargo").ToString().ToDecimal()
|
|
Dim CveUM As Integer = RowUsado("CveUM").ToString().ToEntero()
|
|
|
|
If Not ObjInventario.AddMovimientoDetalle(CveMovimientoVirtual, CantidadUsado, CveUM, CvePS, PU, -1, CveUsuarioModifico:=UsuarioActual.CveUsuario) Then
|
|
ErrorMovInv = True
|
|
Exit For
|
|
End If
|
|
Next
|
|
If ObjInventario.GetMovimientosDetalle(CveMovimientoVirtual, UsuarioActual.CveEmpresa) Then
|
|
ImporteIngresoAdicional = ObjInventario.DtResultados.SUMD("TotalOriginal")
|
|
End If
|
|
|
|
Else
|
|
ErrorMovInv = True
|
|
End If
|
|
End If
|
|
|
|
'DEVENGAR AC
|
|
If Not ErrorMovInv AndAlso UsuarioActual.Empresa.UsaAC AndAlso EsContabilizable 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 ObjContaAC Is Nothing Then
|
|
ObjContaAC = New ClsContPAQi(UsuarioActual.Empresa)
|
|
ObjContaAC.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
|
|
|
|
Else
|
|
|
|
'VIRTUAL
|
|
If CveTipoCompra = 9 And UsuarioActual.Empresa.Funcionalidad(573) = "1" Then
|
|
|
|
Dim DtPSVirtual As New DataTable("DtTamanios")
|
|
DtPSVirtual.Columns.Add(New DataColumn("CvePS", GetType(Integer)))
|
|
DtPSVirtual.Columns.Add(New DataColumn("Cantidad", GetType(Decimal)))
|
|
DtPSVirtual.Columns.Add(New DataColumn("PU", GetType(Decimal)))
|
|
DtPSVirtual.Columns.Add(New DataColumn("CveUM", GetType(Integer)))
|
|
|
|
Dim DtComprasDetalle As DataTable = Nothing
|
|
Dim DtTamanios As DataTable = Nothing
|
|
|
|
If ObjCompras.GetCompraDetalle(CveCompraSurtir) Then
|
|
DtComprasDetalle = ObjCompras.DtResultados.Copy()
|
|
End If
|
|
|
|
If ObjAcum.TamañoGet(-1, UsuarioActual.CveEmpresa) Then
|
|
DtTamanios = ObjAcum.DtResultados.Copy()
|
|
End If
|
|
|
|
For Each GvRow As GridViewRow In GvInv.Rows
|
|
If GvRow.RowType = DataControlRowType.DataRow Then
|
|
|
|
For Each Tam As DataRow In DtTamanios.Rows
|
|
If Tam("CveTamaño").ToString() = GvRow.DataKey("CveTamaño") Then
|
|
Dim CvePSCargo = Tam("CvePSCargo").ToString().ToEntero()
|
|
Dim RowCompraDetalle = DtComprasDetalle.FiltroPrimero($"CvePS = {CvePSCargo}")
|
|
|
|
If RowCompraDetalle IsNot Nothing Then
|
|
Dim Row As DataRow = DtPSVirtual.NewRow()
|
|
Row("CvePS") = CvePSCargo
|
|
Row("Cantidad") = GvRow.FCTextBox("TbCantidadF").Text.ToDecimal()
|
|
Row("PU") = RowCompraDetalle("PU").ToString().ToDecimal()
|
|
Row("CveUM") = GvRow.DataKey("CveUM").ToEntero()
|
|
DtPSVirtual.Rows.Add(Row)
|
|
End If
|
|
|
|
End If
|
|
Next
|
|
|
|
End If
|
|
Next
|
|
|
|
If DtPSVirtual IsNot Nothing AndAlso DtPSVirtual.Rows.Count > 0 Then
|
|
Dim CveSubProyecto As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("CveSubProyecto", $"CveAlmacen= {DdlAlmacen.SelectedValue}").ToEntero()
|
|
|
|
Dim CveAlmacenVirutal As Integer = GlobalDTAlmacenUsuarios(UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, 25).FiltroPrimeroValor("CveAlmacen", $"CveSubProyecto={CveSubProyecto}").ToEntero()
|
|
|
|
CveMovimientoVirtual = ObjInventario.AddMovimiento(CveAlmacenVirutal, If(TipoMovimiento > 1, 13, 2), 1, TxtFecha.Text.ToDate, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveCompraSurtir, -1, -1, -1, Observaciones:=TxtObservaciones.Text.Trim, Modulo:="RA/G5")
|
|
FolioVirtual = ObjInventario.Folio
|
|
|
|
For Each RowUsado As DataRow In DtPSVirtual.Rows
|
|
Dim CvePS = RowUsado("CvePS").ToString().ToEntero()
|
|
Dim CantidadUsado As Double = RowUsado("Cantidad").ToString().ToDouble()
|
|
Dim PU As Decimal = RowUsado("PU").ToString().ToDecimal()
|
|
Dim CveUM As Integer = RowUsado("CveUM").ToString().ToEntero()
|
|
|
|
If Not ObjInventario.AddMovimientoDetalle(CveMovimientoVirtual, CantidadUsado, CveUM, CvePS, PU, -1, CveUsuarioModifico:=UsuarioActual.CveUsuario) Then
|
|
ErrorMovInv = True
|
|
Exit For
|
|
End If
|
|
Next
|
|
End If
|
|
End If
|
|
|
|
End If
|
|
|
|
|
|
''VALIDACIÓN DE IMPORTES INGRESADOS VS LA COMPRA U OC
|
|
'If Not UsuarioActual.Empresa.Funcionalidad(531) = "1" Then
|
|
If Not ErrorMovInv AndAlso RecibidaCompleta Then
|
|
If ObjInventario.GetMovimientosDetalle(CveMovimientoOriginal, UsuarioActual.CveEmpresa) Then
|
|
Dim dtt As DataTable = ObjInventario.DtResultados
|
|
Dim tTotalInsertado As Decimal = dtt.SUMD("TotalOriginal") + ImporteIngresoAdicional
|
|
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.RoundSQL.ToString, TipoMensaje.MsgError)
|
|
GuardaLog("La Entrada no coincide con el valor del documento." & Math.Round(TotalCompraOC * If(TipoCambio > 1, TipoCambio, 1), 2) & " -" & tTotalInsertado.RoundSQL.ToString)
|
|
End If
|
|
Else
|
|
ErrorMovInv = True
|
|
End If
|
|
End If
|
|
' 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 Not ErrorMovInv Then
|
|
If 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, Contabilizable:=If(CveTipoCompra = 10, False, EsContabilizable)) 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, Contabilizable:=EsContabilizable) 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, Contabilizable:=EsContabilizable) 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, Contabilizable:=EsContabilizable) 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, Contabilizable:=EsContabilizable) 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, Contabilizable:=EsContabilizable) 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
|
|
Else
|
|
ErrorMovInv = True
|
|
MensajeError = "Error al obtener movimientos"
|
|
End If
|
|
End If
|
|
|
|
'PREPOLIZA - NC
|
|
If TipoMovimiento = 3 AndAlso Not ErrorMovInv Then
|
|
If ObjInventario.GetMovimientosDetalle(CveMovimiento, UsuarioActual.CveEmpresa) Then
|
|
|
|
Dim DtCostos As DataTable = Nothing
|
|
DtCostos = ObjInventario.DtResultados
|
|
Dim TotalCosto As Decimal = DtCostos.SUMD("Total").RoundSQL
|
|
|
|
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
|
|
|
|
TotalNC = TotalNC.RoundSQL
|
|
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
|
|
|
|
|
|
|
|
Dim CveSubProyecto As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("CveSubProyecto", $"CveAlmacen= {DdlAlmacen.SelectedValue}").ToEntero()
|
|
|
|
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, Contabilizable:=EsContabilizable) 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, Contabilizable:=If(CveTipoCompra = 10, False, EsContabilizable)) 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, Contabilizable:=EsContabilizable, CveSubProyecto:=CveSubProyecto) 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
|
|
|
|
Else
|
|
ErrorMovInv = True
|
|
MensajeError = "Error al obtener movimientos"
|
|
End If
|
|
End If
|
|
|
|
If Not ErrorMovInv AndAlso TipoMovimiento = 2 AndAlso CveMovimientoSalidaTraspaso > 0 Then
|
|
|
|
'VARIABLES
|
|
Dim Fecha As Date = Now
|
|
Dim CveProveedor As Integer = -1
|
|
Dim ProveedorNombre As String = ""
|
|
Dim SerieFolio As String = ""
|
|
|
|
'Dim DrAlmO, DrAlmD As DataRow
|
|
'Dim CveSucursalOrigen, CveSucursalDestino As Integer
|
|
'Dim TipoAlmacenOrigen, TipoAlmacenDestino As Integer
|
|
'Dim CveSubProyectoOrigen, CveSubProyectoDestino As Integer
|
|
Dim IdCtaContableOrigen, IdCtaContableDestino As Integer
|
|
|
|
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}"
|
|
Else
|
|
ErrorMovInv = True
|
|
End If
|
|
|
|
'DrAlmO = GlobalDTAlmacen(UsuarioActual.CveEmpresa, CveAlmacen:=DdlAlmacen.SelectedValue.ToEntero).FiltroPrimero("")
|
|
'DrAlmD = GlobalDTAlmacen(UsuarioActual.CveEmpresa, CveAlmacen:=CveAlmacenDevolucionProveedor).FiltroPrimero("")
|
|
|
|
'If Not ErrorMovInv AndAlso DrAlmO IsNot Nothing AndAlso DrAlmD IsNot Nothing Then
|
|
' CveSucursalOrigen = DrAlmO("CveSubProyecto").ToString.ToEntero
|
|
' TipoAlmacenOrigen = DrAlmO("CveTipoAlmacen").ToString.ToEntero
|
|
' CveSubProyectoOrigen = DrAlmO("CveSubProyecto").ToString.ToEntero
|
|
' IdCtaContableOrigen = DrAlmO("IdCtaContable").ToString.ToEntero
|
|
|
|
' CveSucursalDestino = DrAlmD("CveSubProyecto").ToString.ToEntero
|
|
' TipoAlmacenDestino = DrAlmD("CveTipoAlmacen").ToString.ToEntero
|
|
' CveSubProyectoDestino = DrAlmD("CveSubProyecto").ToString.ToEntero
|
|
' IdCtaContableDestino = DrAlmO("IdCtaContable").ToString.ToEntero
|
|
'Else
|
|
' ErrorMovInv = True
|
|
'End If
|
|
|
|
Dim resultado As DataTable = Nothing
|
|
|
|
If ObjInventario.GetMovimientosDetalle(CveMovimientoSalidaTraspaso, UsuarioActual.CveEmpresa) Then
|
|
resultado = ObjInventario.DtResultados.Copy()
|
|
Else
|
|
ErrorMovInv = True
|
|
End If
|
|
|
|
'Dim CveSubProyecto As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("CveSubProyecto", $"CveAlmacen= {CveAlmacenDevolucionProveedor}").ToEntero()
|
|
|
|
'AGREGAMOS PREPOLIZAS TRASPASO DIRECTO:
|
|
Dim CvePrePolizaTraspaso As Integer = ObjConta.AddPrePolizas("RecepcionAlmacen/TraspasoAlmacen", 53, 0, 0, 1, Now, ProveedorNombre, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa)
|
|
If CvePrePolizaTraspaso > 0 AndAlso ObjInventario.GetMovimientosDetalle(CveMovimientoSalidaTraspaso, UsuarioActual.CveEmpresa) Then
|
|
Dim importe As Decimal = resultado.SUMD("Total").RoundSQL
|
|
|
|
If Not ObjConta.AddPrePolizasDetalle(CvePrePolizaTraspaso, True, importe, TxtObservaciones.Text, 68, TxtObservaciones.Text, Fecha, IdCtaContableOrigen, -1, CveMovimientoAlmacen:=CveMovimientoSalidaTraspaso, Contabilizable:=False, ImporteMX:=importe) Then
|
|
ErrorMovInv = True
|
|
End If
|
|
|
|
If Not ErrorMovInv AndAlso Not ObjConta.AddPrePolizasDetalle(CvePrePolizaTraspaso, False, importe, TxtObservaciones.Text, 68, TxtObservaciones.Text, Fecha, IdCtaContableDestino, -1, CveMovimientoAlmacen:=CveMovimiento, Contabilizable:=False, ImporteMX:=importe) Then
|
|
ErrorMovInv = True
|
|
End If
|
|
Else
|
|
ErrorMovInv = True
|
|
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
|
|
Catch ex As Exception
|
|
OnError("Ocurrió un error al guardar RA.", ex)
|
|
ErrorMovInv = True
|
|
End Try
|
|
|
|
'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)
|
|
'SI LO SOLO GENERO EL MOVIMIENTO DE ENTRADA O SALIDA
|
|
If CveMovimiento > 0 AndAlso CveMovimientoSalidaTraspaso <= 0 Then
|
|
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)))
|
|
'SI GENERO UN TRASPASO AL ALMACEN DE DEVOLUCION
|
|
ElseIf CveMovimiento > 0 AndAlso CveMovimientoSalidaTraspaso > 0 Then
|
|
Msg.AppendFormat("Movimiento de Salida: Folio: <b>{0}</b>", String.Format("<a href=""/Inventarios/EntradasSalidas.aspx?CveMovimiento={0}"" target=""_blank"">{1}</a>", CveMovimientoSalidaTraspaso, FolioSalidaTraspaso))
|
|
Msg.AppendFormat("<br/><a class=""Texto"" target='_blank' href=""/Compras/PopUpVerFactura.aspx?P={0}"">Imprimir Movimiento</a> ", Encripta(String.Format("OP=Alm&CveMovimiento={0}", CveMovimientoSalidaTraspaso)))
|
|
|
|
Msg.AppendFormat("<br/><br/>Movimiento de control: 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)))
|
|
End If
|
|
|
|
|
|
'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
|
|
|
|
'ENTREGA DIRECTA
|
|
If MovtosSalidaDirecta.Count > 0 Then
|
|
Msg.AppendFormat("<br/><br/> Movimientos de control:<br/>")
|
|
|
|
If MovtosEntradaExA.Count > 0 Then
|
|
For index = 0 To MovtosEntradaExA.Count - 1
|
|
link = String.Format("<a href=""/Inventarios/EntradasSalidas.aspx?CveMovimiento={0}"" target=""_blank"">{1}</a>", MovtosEntradaExA(index), FoliosEntradaExA(index))
|
|
Msg.AppendFormat("<br/>Movimiento de Entrada Folio: <b>{0}</b>", link)
|
|
Next
|
|
End If
|
|
|
|
For index = 0 To MovtosSalidaDirecta.Count - 1
|
|
link = String.Format("<a href=""/Inventarios/EntradasSalidas.aspx?CveMovimiento={0}"" target=""_blank"">{1}</a>", MovtosSalidaDirecta(index), FoliosSalidaDirecta(index))
|
|
Msg.AppendFormat("<br/>Movimiento de Salida Folio: <b>{0}</b>", link)
|
|
Next
|
|
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
|
|
|
|
'VIRTUAL
|
|
If CveMovimientoVirtual > 0 Then
|
|
link = String.Format("<a href=""/Inventarios/EntradasSalidas.aspx?CveMovimiento={0}"" target=""_blank"">{1}</a>", CveMovimientoVirtual, FolioVirtual)
|
|
Msg.AppendFormat("<br/>Movimiento de Entrada al Almacen Virtual: 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}", CveMovimientoVirtual)))
|
|
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 Function GenerarMovimientoAlmacenVenta(CveAlmacen As Integer, CveConceptoAlmacen As Integer, CveVenta As Integer, CveMovimientoRelacionado As Integer, DtDetalle As DataTable, ObjInventario As ClsInventarios, ObjConta As ClsContabilidad, ObjContaContPAQ As ClsContPAQi, EsContabilizable As Boolean, Modulo As String) As MMovimientoAlmacen
|
|
Dim ErrorMovInv As Boolean = False
|
|
Dim Retorno As New MMovimientoAlmacen
|
|
|
|
Dim CveMovtoSalidaDirecta As Integer = -1
|
|
Dim FolioSalidaDirecta As Integer = -1
|
|
|
|
CveMovtoSalidaDirecta = ObjInventario.AddMovimiento(CveAlmacen, CveConceptoAlmacen, 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:=CveMovimientoRelacionado, Remision:=TxtRemision.Text, CveVendedor:=CveVendedor, CveCliente:=CveCliente, Modulo:=Modulo)
|
|
FolioSalidaDirecta = ObjInventario.Folio
|
|
|
|
If Not CveMovtoSalidaDirecta > 0 Then
|
|
ErrorMovInv = True
|
|
End If
|
|
|
|
If Not ErrorMovInv AndAlso DtDetalle IsNot Nothing Then
|
|
For Each Dr As DataRow In DtDetalle.Rows
|
|
If Not ObjInventario.AddMovimientoDetalle(CveMovtoSalidaDirecta, Dr("Cantidad").ToString.ToDouble, Dr("CveUM").ToString.ToEntero, Dr("CvePS").ToString.ToEntero, Dr("PU").ToString.ToDecimal, CveAF:=Dr("CveAF").ToString.ToEntero, CveSeccionAlmacen:=Dr("CveSeccionAlmacen").ToString.ToEntero, Serie:=Dr("Serie").ToString, Lote:=Dr("Lote").ToString, FechaCaducidad:=Dr("FechaCaducidad").ToString.ToDate, 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 AndAlso CveConceptoAlmacen = 3 Then
|
|
If Not GeneraPrePolizaSalidaEntregaDirecta(CveMovtoSalidaDirecta, ObjInventario, ObjConta, ObjContaContPAQ, EsContabilizable) Then
|
|
ErrorMovInv = True
|
|
End If
|
|
End If
|
|
|
|
If Not ErrorMovInv Then
|
|
Retorno.CveMovimiento = CveMovtoSalidaDirecta
|
|
Retorno.Folio = FolioSalidaDirecta
|
|
End If
|
|
|
|
Return Retorno
|
|
End Function
|
|
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, Modulo:="RA/G6")
|
|
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, PUTC:=If(DdlMonedaTC.SelectedValue.ToEntero = 1, -1, PUExtranjero), Serie:=Dr("Serie").ToString, CveCompraDetalle:=gvr.DataKey("CveCompraDetalle").ToEntero, CveOrdenCompraDetalle:=gvr.DataKey("CveOrdenCompraDetalle").ToEntero, CveVentaDetalle:=gvr.DataKey("CveVentaDetalle").ToEntero, CostoIndirecto:=CostoIndirecto, FechaCaducidad:=If(CBool(gvr.DataKey("AplicaCaducidad")), gvr.FCTextBox("TxtCaducidad").Text.ToDate, MinFecha), Lote:=If(CBool(gvr.DataKey("AplicaLote")), gvr.FCTextBox("TxtLote").Text, ""), CveSeccionAlmacen:=If(CBool(gvr.DataKey("AplicaSeccion")), gvr.FCDropDownList("DdlSeccionAlmacen").SelectedValue.ToEntero, -1)) 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, PUTC:=If(DdlMonedaTC.SelectedValue.ToEntero = 1, -1, PUExtranjero), Lote:=Dr("Lote").ToString, FechaCaducidad:=Dr("FechaCaducidad").ToString.ToDate, CveCompraDetalle:=gvr.DataKey("CveCompraDetalle").ToEntero, CveOrdenCompraDetalle:=gvr.DataKey("CveOrdenCompraDetalle").ToEntero, CveVentaDetalle:=gvr.DataKey("CveVentaDetalle").ToEntero, CostoIndirecto:=CostoIndirecto, CveSeccionAlmacen:=If(CBool(gvr.DataKey("AplicaSeccion")), gvr.FCDropDownList("DdlSeccionAlmacen").SelectedValue.ToEntero, -1)) 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, 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, FechaCaducidad:=If(CBool(gvr.DataKey("AplicaCaducidad")), gvr.FCTextBox("TxtCaducidad").Text.ToDate, MinFecha), Lote:=If(CBool(gvr.DataKey("AplicaLote")), gvr.FCTextBox("TxtLote").Text, ""), CveSeccionAlmacen:=If(CBool(gvr.DataKey("AplicaSeccion")), gvr.FCDropDownList("DdlSeccionAlmacen").SelectedValue.ToEntero, -1)) 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
|
|
Dim ConceptoPrePoliza As String = String.Format("{0}-{1}", LbProveedor.Text, HLFolio.Text)
|
|
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, ConceptoPrePoliza, 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")
|
|
drc("SubTotalTC") = drr("SubTotalTC")
|
|
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")
|
|
drc("SubTotalTC") = drt("SubTotalTC")
|
|
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
|
|
'si reciben parcialidades de producto. en base al total de la importacion y lo recibido.
|
|
Dim PorcentajeRecepcionCompras As Decimal = TotalCosto / DtTempCompras.SUMD("SubTotalTC")
|
|
Dim ConceptoPartida As String = String.Format("{0}- Inv#{1}", HLFolio.Text, InvFolio)
|
|
|
|
If ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, TotalCosto, InvFolio, 68, InvFolio, FechaMovto, IdCtaContableAlmacen, -1, CveCompra:=CveCompraSurtir, CveMovimientoAlmacen:=CveMovimiento, ImporteMX:=TotalCosto, CveCuenta:=CveCuentaAlmacen, Contabilizable:=If(CveTipoCompra = 10, False, True)) 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) * PorcentajeRecepcionCompras
|
|
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, ConceptoPartida, CveConceptoCostoIndirecto, ConceptoPartida, 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, ConceptoPartida, If(CveImportacionSurtir > 0, 242, 239), ConceptoPartida, 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, 6) 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 Not ErrorMovInv AndAlso 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')")
|
|
GuardaLog(MensajeError)
|
|
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 = $"{ModExtensiones.DirectorioBaseEmpresas}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 "DIVIDIR"
|
|
|
|
Protected Sub Dividir(sender As Object, e As EventArgs)
|
|
Dim index2 As Integer = 0
|
|
|
|
For Each Row As DataRow In DtInv.Rows
|
|
Row("Seleccionado") = GvInv.Rows(index2).FCCheckBox("cbInv").Checked
|
|
If GvInv.Rows(index2).FCTextBox("TbCantidadF").Text <> "" Then
|
|
Row("CantidadSeleccionada") = GvInv.Rows(index2).FCTextBox("TbCantidadF").Text
|
|
End If
|
|
If GvInv.Rows(index2).FCTextBox("TxtLote").Text <> "" Then
|
|
Row("Lote") = GvInv.Rows(index2).FCTextBox("TxtLote").Text
|
|
End If
|
|
If GvInv.Rows(index2).FCDropDownList("DdlSeccionAlmacen").SelectedValue <> "-1" Then
|
|
Row("CveSeccion") = GvInv.Rows(index2).FCDropDownList("DdlSeccionAlmacen").SelectedValue.ToEntero
|
|
End If
|
|
If GvInv.Rows(index2).FCTextBox("TxtCaducidad").Text <> "" Then
|
|
Row("Caducidad") = GvInv.Rows(index2).FCTextBox("TxtCaducidad").Text.ToDate
|
|
End If
|
|
index2 += 1
|
|
Next
|
|
DtInv.AcceptChanges()
|
|
|
|
Dim gvRow As GridViewRow = DirectCast((DirectCast(sender, Button)).NamingContainer, GridViewRow)
|
|
Dim Index As Integer = gvRow.RowIndex
|
|
Dim Cantidad As String = HdnCantidadMovimiento.Value
|
|
Dim dr1 As DataRow = DtInv.Rows(Index)
|
|
Dim dr As DataRow = DtInv.NewRow
|
|
dr.ItemArray = dr1.ItemArray
|
|
dr1("CantidadC") = (dr1("CantidadC").ToString.ToDouble - Cantidad.ToDouble)
|
|
Dim CantidadFOriginal As Double = dr1("CantidadF").ToString.ToDouble
|
|
dr1("CantidadF") = (dr1("CantidadF").ToString.ToDouble - Cantidad.ToDouble)
|
|
Dim CantidadSOriginal As Double = dr1("CantidadS").ToString.ToDouble
|
|
dr1("CantidadS") = (CantidadSOriginal * dr1("CantidadF").ToString.ToDouble) / CantidadFOriginal
|
|
Dim CantidadSeleccionadaOriginal As Double = dr1("CantidadSeleccionada").ToString.ToDouble
|
|
dr1("CantidadSeleccionada") = If(CantidadSeleccionadaOriginal > dr1("CantidadF").ToString.ToDouble, dr1("CantidadF").ToString.ToDouble, CantidadSeleccionadaOriginal)
|
|
CantidadSeleccionadaOriginal = CantidadSeleccionadaOriginal - dr1("CantidadF").ToString.ToDouble
|
|
|
|
Dim CostoIndirectoOriginal As Double = dr1("CostoIndirecto").ToString.ToDouble
|
|
dr1("CostoIndirecto") = (CostoIndirectoOriginal * dr1("CantidadF").ToString.ToDouble) / CantidadFOriginal
|
|
Dim CostoIndirectoExtranjeroOriginal As Double = dr1("CostoIndirectoExtranjero").ToString.ToDouble
|
|
dr1("CostoIndirectoExtranjero") = (CostoIndirectoExtranjeroOriginal * dr1("CantidadF").ToString.ToDouble) / CantidadFOriginal
|
|
|
|
DtInv.AcceptChanges()
|
|
|
|
dr("CantidadC") = Cantidad.ToDouble
|
|
dr("CantidadF") = Cantidad.ToDouble
|
|
dr("CantidadS") = (CantidadSOriginal * dr("CantidadF").ToString.ToDouble) / CantidadFOriginal
|
|
dr("CantidadSeleccionada") = If(CantidadSeleccionadaOriginal > 0, CantidadSeleccionadaOriginal, 0)
|
|
dr("Seleccionado") = If(CantidadSeleccionadaOriginal > 0, True, False)
|
|
dr("CostoIndirecto") = (CostoIndirectoOriginal * dr("CantidadF").ToString.ToDouble) / CantidadFOriginal
|
|
dr("CostoIndirectoExtranjero") = (CostoIndirectoExtranjeroOriginal * dr("CantidadF").ToString.ToDouble) / CantidadFOriginal
|
|
DtInv.Rows.InsertAt(dr, Index)
|
|
DtInv.AcceptChanges()
|
|
|
|
index2 = 1
|
|
For Each Row As DataRow In DtInv.Rows
|
|
Row("Consec") = index2
|
|
index2 += 1
|
|
Next
|
|
DtInv.AcceptChanges()
|
|
|
|
CargaGVInv()
|
|
|
|
index2 = 0
|
|
For Each Row As DataRow In DtInv.Rows
|
|
GvInv.Rows(index2).FCCheckBox("cbInv").Checked = CBool(Row("Seleccionado"))
|
|
If Row("CantidadSeleccionada").ToString <> "" Then
|
|
GvInv.Rows(index2).FCTextBox("TbCantidadF").Text = Row("CantidadSeleccionada").ToString
|
|
End If
|
|
If Row("Lote").ToString <> "" Then
|
|
GvInv.Rows(index2).FCTextBox("TxtLote").Text = Row("Lote").ToString
|
|
End If
|
|
If Row("CveSeccion").ToString <> "" Then
|
|
GvInv.Rows(index2).FCDropDownList("DdlSeccionAlmacen").SelectedValue = Row("CveSeccion").ToString
|
|
End If
|
|
If Row("Caducidad").ToString <> "" Then
|
|
GvInv.Rows(index2).FCTextBox("TxtCaducidad").Text = Row("Caducidad").ToString.ToDate.ToShortDateString
|
|
End If
|
|
index2 += 1
|
|
Next
|
|
|
|
End Sub
|
|
|
|
|
|
#End Region
|
|
|
|
|
|
End Class
|
|
|
|
Public Class MMovimientoAlmacen
|
|
Public Property CveMovimiento As Integer
|
|
Public Property Folio As Integer
|
|
|
|
End Class
|