diff --git a/Inventarios/EntregaAlmacen.aspx.vb b/Inventarios/EntregaAlmacen.aspx.vb
index d02cb3b2b..19bf302aa 100644
--- a/Inventarios/EntregaAlmacen.aspx.vb
+++ b/Inventarios/EntregaAlmacen.aspx.vb
@@ -2,14 +2,14 @@
Option Explicit On
Imports System.Data
-Imports System.IO
+Imports System.IO
Imports Extensiones
Imports Microsoft.Reporting.WebForms
Partial Class Inventarios_EntregaAlmacen
- Inherits ClsPaginas
-
+ Inherits ClsPaginas
+
#Region "PROPIEDADES"
Private Property CveVentaAD As Integer
Get
@@ -243,10 +243,10 @@ Partial Class Inventarios_EntregaAlmacen
Set(value As Boolean)
ViewState("EsDevolucionDirecta") = value
End Set
- End Property
-
+ End Property
+
#End Region
-
+
Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load
If Not IsPostBack Then
@@ -254,9 +254,9 @@ Partial Class Inventarios_EntregaAlmacen
CargaParametrosAD()
If UsuarioActual.CveEmpresa.Contiene(72, 80) Then DdlAlmacen.AutoPostBack = True
End If
- End Sub
-
-
+ End Sub
+
+
#Region " INICIALIZA VALORES "
Private Sub InicializaValores()
TipoEstatus = -1
@@ -324,11 +324,11 @@ Partial Class Inventarios_EntregaAlmacen
LimpiaCampos()
- End Sub
-
+ End Sub
+
#End Region
-
-
+
+
#Region " CARGA PARAMETROS - EXCLUSIVO USO AD "
Private Sub CargaParametrosAD()
@@ -346,9 +346,9 @@ Partial Class Inventarios_EntregaAlmacen
BtnGuardar.Visible = False
End If
- End Sub
+ End Sub
#End Region
-
+
#Region " CARGA PENDIENTES POR SURTIR "
Protected Sub DdlCliente_SelectedIndexChanged(sender As Object, e As EventArgs)
CargaFolios()
@@ -466,11 +466,11 @@ Partial Class Inventarios_EntregaAlmacen
End Select
UpPendientes.Update()
End If
- End Sub
-
+ End Sub
+
#End Region
-
-
+
+
#Region " CARGA VENTA POR SURTIR "
Protected Sub BtnSurtir_Click(sender As Object, e As EventArgs)
@@ -659,8 +659,8 @@ Partial Class Inventarios_EntregaAlmacen
Alert("Ocurrió un error al cargar los datos de devolución. Por favor vuelva a intentar.", TipoMensaje.MsgError)
End If
End If
- If UsuarioActual.Empresa.FacturaProduccion Then
- CargaDocumentos(CveVenta)
+ If UsuarioActual.Empresa.FacturaProduccion Then
+ CargaDocumentos(CveVenta)
End If
Else
Alert("No se encontraron productos pendientes por surtir. Por favor verifique y vuelva a intentar.", TipoMensaje.MsgAdvertencia)
@@ -714,7 +714,7 @@ Partial Class Inventarios_EntregaAlmacen
CveAlmacenTraspasoDestino = DtDatos.Rows(0)("CveAlmacenDestino").ToString.ToEntero
CveAlmacenTraspasoOrigen = DtDatos.Rows(0)("CveAlmacenOrigen").ToString.ToEntero
- CveSubProyecto = DtDatos.Rows(0)("CveSubProyecto").ToString.ToEntero
+ CveSubProyecto = DtDatos.Rows(0)("CveSubProyecto").ToString.ToEntero
EsInterno = CBool(DtDatos.Rows(0)("EsInterno").ToString)
CveVentaSurtir = -1
@@ -751,10 +751,10 @@ Partial Class Inventarios_EntregaAlmacen
If Not DtDatos.Columns.Contains("CveSeccion") Then
DtDatos.Columns.Add("CveSeccion", GetType(Integer))
- End If
-
- If Not DtDatos.Columns.Contains("Lote") Then
- DtDatos.Columns.Add("Lote", GetType(String))
+ End If
+
+ If Not DtDatos.Columns.Contains("Lote") Then
+ DtDatos.Columns.Add("Lote", GetType(String))
End If
If Not DtDatos.Columns.Contains("FechaCaducidad") Then
@@ -923,14 +923,14 @@ Partial Class Inventarios_EntregaAlmacen
End If
objInv.Dispose()
GvDocs.DataBind()
- End Sub
-
-
+ End Sub
+
+
#End Region
-
-
+
+
#Region " AGREGAR "
-
+
Protected Sub BtnSerie_Click(sender As Object, e As EventArgs)
Dim Argumentos = CType(sender, Button).CommandArgument.Split("°"c)
@@ -957,10 +957,10 @@ Partial Class Inventarios_EntregaAlmacen
UpLoteBatch.Update()
End If
- End Sub
-
+ End Sub
+
#Region " AGREGA POR SERIE/LOTE "
-
+
Private Sub CreaDtDetalle()
If DtDatosDetalle Is Nothing Then
DtDatosDetalle = New DataTable
@@ -1165,11 +1165,11 @@ Partial Class Inventarios_EntregaAlmacen
DtDatosDetalle.AcceptChanges()
CargaSerie()
- End Sub
+ End Sub
#End Region
-
+
#Region " AGREGA CON LOTE BATCH "
-
+
Private Sub CreaDtDetalleLote()
If DtDatosDetalleLote Is Nothing Then
DtDatosDetalleLote = New DataTable
@@ -1357,9 +1357,9 @@ Partial Class Inventarios_EntregaAlmacen
End Try
DtDatosDetalleLote.AcceptChanges()
CargaLote()
- End Sub
+ End Sub
#End Region
-
+
#Region " AGREGA CON TXT | CODIGO - SERIE "
Protected Sub BtnCodigoPS_Click(sender As Object, e As EventArgs)
@@ -1493,12 +1493,12 @@ Partial Class Inventarios_EntregaAlmacen
End If
TxtCantidadEspecialDiv.Text = "1"
- End Sub
+ End Sub
#End Region
-
+
#End Region
-
-
+
+
#Region " GUARDAR "
Protected Sub BtnGuardar_Click(sender As Object, e As EventArgs)
@@ -1660,6 +1660,8 @@ Partial Class Inventarios_EntregaAlmacen
DtTraspasos.Columns.Add("FolioSalida", GetType(Integer))
DtTraspasos.Columns.Add("CveMovimientoEntrada", GetType(Integer))
DtTraspasos.Columns.Add("FolioEntrada", GetType(Integer))
+ DtTraspasos.Columns.Add("CveTipoAlmacen", GetType(Integer))
+ DtTraspasos.Columns.Add("CveConceptoMovimientoSalida", GetType(Integer))
Dim CveMovimientoSalida = -1, FolioSalida = -1, CveMovimientoEntrada = -1, CveMovimientoEntradaApartado = -1, FolioEntrada = -1, CveMovimientoSalidaDevRem = -1, FolioMovimientoSalidaDevRem = -1, CveMovimientoEntradaDevRem = -1, FolioMovimientoEntradaDevRem = -1
@@ -1717,13 +1719,240 @@ Partial Class Inventarios_EntregaAlmacen
'' TERMINA: VALIDACIONES
+ Dim CantidadPendienteSinCosto As Decimal = 0
+ Dim CantidadSaldoSinCosto As Decimal = 0
+
+ Dim CantidadSalidaSinCosto As Decimal = 0
+
+ '' COMIENZA: SIN COSTO
+ If TipoDocto.Contiene("Ing", "Rem") AndAlso UsuarioActual.Empresa.Funcionalidad(587) = "1" AndAlso TipoMovimiento = 1 Then
+
+ Dim CveConceptoSalidaSinCosto As Integer = If(TipoDocto.Contiene("Rem"), 8, 40)
+
+ For Each Dr As DataRow In DtDatos.Rows
+ If Dr("CantidadGV").ToString.ToDecimal > 0 Then
+ If CBool(Dr("AplicaSerie")) Then
+ DtDetalle = DtDatosDetalle.FiltraParametros(String.Format("ConsecId = {0}", Dr("Consec")))
+ For Each Dr1 As DataRow In DtDetalle.Rows
+ If ObjInventario.GetExistenciasProducto(Dr1("CvePS").ToString.ToEntero, Dr1("CveUM").ToString.ToEntero, UsuarioActual.CveEmpresa, -1, FechaMovto:=TxtFecha.Text.ToDateTime.ToString("yyyy/MM/dd HH:mm"), Serie:=Dr1("Serie").ToString, CveTipoAlmacen:=26, CveSubProyecto:=CveSubProyecto, Caducidad:=If(CBool(Dr("AplicaCaducidad")), Dr("FechaCaducidad").ToString.ToDate, MinFecha), Lote:=If(CBool(Dr("AplicaLote")), Dr("Lote").ToString, "-1"), CveSeccionAlmacen:=If(CBool(Dr("AplicaSeccion")), Dr("CveSeccion").ToString.ToEntero, -1)) Then
+ For Each Dr2 As DataRow In ObjInventario.DtResultados.FiltraParametros("CveAlmacen > 0 AND ExistenciaFinal > 0").Rows
+
+ 'BUSCA SI EXISTE YA UN TRASPASO DEL ALMACEN DE APARTADO
+ CveMovimientoSalida = DtTraspasos.FiltroPrimeroValor("CveMovimientoSalida", $"CveAlmacen = {Dr2("CveAlmacen")}").ToEntero
+
+ If Not CveMovimientoSalida > 0 Then
+
+
+
+ CveMovimientoSalida = ObjInventario.AddMovimiento(Dr2("CveAlmacen").ToString.ToEntero, CveConceptoSalidaSinCosto, 1, TxtFecha.Text.ToDate, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, CveVentaSurtir, -1, -1,
+ Observaciones:=TxtObservaciones.Text.Trim, Guia:=TxtGuia.Text, CveContrato:=CveContrato, Modulo:="RE/GSC1")
+ FolioSalida = ObjInventario.Folio
+
+ If Not CveMovimientoSalida > 0 Then
+ ErrorMovInv = True
+ TextoError.AppendFormat("Ocurrió un error al procesar los movimientos de traspaso de apartado. Por favor vuelva a intentar.")
+ Exit For
+ End If
+
+ Dim DrMovto = DtTraspasos.NewRow
+ DrMovto("Almacen") = Dr2("Almacen").ToString.ToEntero
+ DrMovto("CveAlmacen") = Dr2("CveAlmacen").ToString.ToEntero
+ DrMovto("CveMovimientoSalida") = CveMovimientoSalida
+ DrMovto("FolioSalida") = FolioSalida
+ DrMovto("CveTipoAlmacen") = 26
+ DrMovto("CveConceptoMovimientoSalida") = CveConceptoSalidaSinCosto
+ DtTraspasos.Rows.Add(DrMovto)
+ End If
+
+
+ CantidadPendienteSinCosto = 1
+
+ If Not ObjInventario.AddMovimientoDetalle(CveMovimientoSalida, CantidadPendienteSinCosto, Dr("CveUM").ToString.ToEntero, Dr("CvePS").ToString.ToEntero, 0, Serie:=Dr1("Serie").ToString, CveVentaDetalle:=Dr("CveVentaDetalle").ToString.ToEntero, FechaCaducidad:=If(CBool(Dr("AplicaCaducidad")), Dr("FechaCaducidad").ToString.ToDate, MinFecha), Lote:=If(CBool(Dr("AplicaLote")), Dr("Lote").ToString, "-1"), CveSeccionAlmacen:=If(CBool(Dr("AplicaSeccion")), Dr("CveSeccion").ToString.ToEntero, -1)) Then
+ ErrorMovInv = True
+ TextoError.AppendFormat("Ocurrió un Error al procesar los conceptos de traspaso de apartado. Por favor vuelva a intentar.")
+ Exit For
+ End If
+
+ DtDatosDetalle.Select($"Consec = {Dr1("Consec")}")(0)("FueTraspaso") = 1
+ DtDatosDetalle.Select($"Consec = {Dr1("Consec")}")(0)("CveVentaDetalle") = Dr("CveVentaDetalle")
+ Dr("CantidadTraspaso") = Dr("CantidadTraspaso").ToString.ToDecimal + CantidadPendienteSinCosto
+ Exit For
+ Next
+ End If
+ If ErrorMovInv Then Exit For
+ Next
+
+ ElseIf CBool(Dr("AplicaLote")) Then
+
+ DtDetalle = DtDatosDetalleLote.FiltraParametros(String.Format("ConsecId = {0}", Dr("Consec")))
+ For Each Dr1 As DataRow In DtDetalle.Rows
+ If ObjInventario.GetExistenciasProducto(Dr1("CvePS").ToString.ToEntero, Dr1("CveUM").ToString.ToEntero, UsuarioActual.CveEmpresa, -1, FechaMovto:=TxtFecha.Text.ToDateTime.ToString("yyyy/MM/dd HH:mm"), Lote:=Dr1("Lote").ToString, CveTipoAlmacen:=26, CveSubProyecto:=CveSubProyecto, Caducidad:=If(CBool(Dr("AplicaCaducidad")), Dr("FechaCaducidad").ToString.ToDate, MinFecha), CveSeccionAlmacen:=If(CBool(Dr("AplicaSeccion")), Dr("CveSeccion").ToString.ToEntero, -1)) Then
+
+ CantidadSaldoSinCosto = Dr("CantidadGV").ToString.ToDecimal
+
+ For Each Dr2 As DataRow In ObjInventario.DtResultados.FiltraParametros("CveAlmacen > 0 AND ExistenciaFinal > 0").Rows
+
+ 'BUSCA SI EXISTE YA UN TRASPASO DEL ALMACEN DE APARTADO
+ CveMovimientoSalida = DtTraspasos.FiltroPrimeroValor("CveMovimientoSalida", $"CveAlmacen = {Dr2("CveAlmacen")}").ToEntero
+
+ If Not CveMovimientoSalida > 0 Then
+ CveMovimientoSalida = ObjInventario.AddMovimiento(Dr2("CveAlmacen").ToString.ToEntero, CveConceptoSalidaSinCosto, 1, TxtFecha.Text.ToDate, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, CveVentaSurtir, -1, -1, Observaciones:=TxtObservaciones.Text.Trim,
+ Guia:=TxtGuia.Text, CveContrato:=CveContrato, Modulo:="RE/GSC2")
+ FolioSalida = ObjInventario.Folio
+
+ If Not CveMovimientoSalida > 0 Then
+ ErrorMovInv = True
+ TextoError.AppendFormat("Ocurrió un error al procesar los movimientos de traspaso de apartado. Por favor vuelva a intentar.")
+ Exit For
+ End If
+
+ Dim DrMovto = DtTraspasos.NewRow
+ DrMovto("Almacen") = Dr2("Almacen").ToString.ToEntero
+ DrMovto("CveAlmacen") = Dr2("CveAlmacen").ToString.ToEntero
+ DrMovto("CveMovimientoSalida") = CveMovimientoSalida
+ DrMovto("FolioSalida") = FolioSalida
+ DrMovto("CveTipoAlmacen") = 26
+ DrMovto("CveConceptoMovimientoSalida") = CveConceptoSalidaSinCosto
+ DtTraspasos.Rows.Add(DrMovto)
+ End If
+
+ CantidadPendienteSinCosto = If(Dr1("Cantidad").ToString.ToDecimal > CantidadSaldoSinCosto, CantidadSaldoSinCosto, Dr1("Cantidad").ToString.ToDecimal)
+
+ If Not ObjInventario.AddMovimientoDetalle(CveMovimientoSalida, CantidadPendienteSinCosto.ToString.ToDecimal, Dr("CveUM").ToString.ToEntero, Dr("CvePS").ToString.ToEntero, 0, Lote:=Dr1("Lote").ToString, CveVentaDetalle:=Dr("CveVentaDetalle").ToString.ToEntero, FechaCaducidad:=If(CBool(Dr("AplicaCaducidad")), Dr("FechaCaducidad").ToString.ToDate, MinFecha), CveSeccionAlmacen:=If(CBool(Dr("AplicaSeccion")), Dr("CveSeccion").ToString.ToEntero, -1)) Then
+ ErrorMovInv = True
+ TextoError.AppendFormat("Ocurrió un error al procesar los conceptos de traspaso de apartado. Por favor vuelva a intentar.")
+ Exit For
+ End If
+
+ DtDatosDetalle.Select($"Consec = {Dr1("Consec")}")(0)("FueTraspaso") = 1
+ DtDatosDetalle.Select($"Consec = {Dr1("Consec")}")(0)("CveVentaDetalle") = Dr("CveVentaDetalle")
+
+ CantidadSaldoSinCosto -= CantidadPendienteSinCosto
+ Dr("CantidadTraspaso") = Dr("CantidadTraspaso").ToString.ToDecimal + CantidadPendienteSinCosto
+ If CantidadSaldoSinCosto <= 0 Then Exit For
+ Next
+ End If
+ Next
+
+ Else
+
+ If ObjInventario.GetExistenciasProducto(Dr("CvePS").ToString.ToEntero, Dr("CveUM").ToString.ToEntero, UsuarioActual.CveEmpresa, -1, FechaMovto:=TxtFecha.Text.ToDateTime.ToString("yyyy/MM/dd HH:mm"), CveTipoAlmacen:=26, CveSubProyecto:=CveSubProyecto, Caducidad:=If(CBool(Dr("AplicaCaducidad")), Dr("FechaCaducidad").ToString.ToDate, MinFecha), Lote:=If(CBool(Dr("AplicaLote")), Dr("Lote").ToString, "-1"), CveSeccionAlmacen:=If(CBool(Dr("AplicaSeccion")), Dr("CveSeccion").ToString.ToEntero, -1)) Then
+
+ CantidadSaldoSinCosto = Dr("CantidadGV").ToString.ToDecimal
+
+ For Each Dr1 As DataRow In ObjInventario.DtResultados.FiltraParametros("CveAlmacen > 0 AND ExistenciaFinal > 0").Rows
+
+ 'BUSCA SI EXISTE YA UN TRASPASO DEL ALMACEN DE APARTADO
+ CveMovimientoSalida = DtTraspasos.FiltroPrimeroValor("CveMovimientoSalida", $"CveAlmacen = {Dr1("CveAlmacen")}").ToEntero
+
+ If Not CveMovimientoSalida > 0 Then
+ CveMovimientoSalida = ObjInventario.AddMovimiento(Dr1("CveAlmacen").ToString.ToEntero, CveConceptoSalidaSinCosto, 1, TxtFecha.Text.ToDate, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, CveVentaSurtir, -1, -1,
+ Observaciones:=TxtObservaciones.Text.Trim, Guia:=TxtGuia.Text, CveContrato:=CveContrato, Modulo:="RE/GSC3")
+ FolioSalida = ObjInventario.Folio
+
+ If Not CveMovimientoSalida > 0 Then
+ ErrorMovInv = True
+ TextoError.AppendFormat("Ocurrió un error al procesar los movimientos de traspaso de apartado. Por favor vuelva a intentar.")
+ Exit For
+ End If
+
+ Dim DrMovto = DtTraspasos.NewRow
+ DrMovto("Almacen") = Dr1("Almacen").ToString.ToEntero
+ DrMovto("CveAlmacen") = Dr1("CveAlmacen").ToString.ToEntero
+ DrMovto("CveMovimientoSalida") = CveMovimientoSalida
+ DrMovto("FolioSalida") = FolioSalida
+ DrMovto("CveTipoAlmacen") = 26
+ DrMovto("CveConceptoMovimientoSalida") = CveConceptoSalidaSinCosto
+ DtTraspasos.Rows.Add(DrMovto)
+ End If
+
+
+ CantidadPendienteSinCosto = If(Dr1("ExistenciaFinal").ToString.ToDecimal > CantidadSaldoSinCosto, CantidadSaldoSinCosto, Dr1("ExistenciaFinal").ToString.ToDecimal)
+
+ If Not ObjInventario.AddMovimientoDetalle(CveMovimientoSalida, CantidadPendienteSinCosto.ToString.ToDecimal, Dr("CveUM").ToString.ToEntero, Dr("CvePS").ToString.ToEntero, 0,
+ Serie:=Dr("Serie").ToString,
+ CveVentaDetalle:=Dr("CveVentaDetalle").ToString.ToEntero,
+ FechaCaducidad:=If(CBool(Dr("AplicaCaducidad")), Dr("FechaCaducidad").ToString.ToDate, MinFecha),
+ Lote:=If(CBool(Dr("AplicaLote")), Dr("Lote").ToString, "-1"),
+ CveSeccionAlmacen:=If(CBool(Dr("AplicaSeccion")), Dr("CveSeccion").ToString.ToEntero, -1)) Then
+ ErrorMovInv = True
+ TextoError.AppendFormat("Ocurrió un error al procesar los conceptos de traspaso de apartado. Por favor vuelva a intentar.")
+ Exit For
+ End If
+
+ CantidadSaldoSinCosto -= CantidadPendienteSinCosto
+ Dr("CantidadTraspaso") = Dr("CantidadTraspaso").ToString.ToDecimal + CantidadPendienteSinCosto
+ If CantidadSaldoSinCosto <= 0 Then Exit For
+ Next
+
+ If ErrorMovInv Then Exit For
+ Else
+ ErrorMovInv = True
+ End If
+
+ End If
+
+ CantidadSalidaSinCosto += Dr("CantidadTraspaso").ToString().ToDecimal()
+ If ErrorMovInv Then Exit For
+
+ End If
+
+ Next
+
+ 'ENTRADA POR TRASPASO A ENTREGA POR ADELANTADO
+ If TipoDocto = "Rem" AndAlso Not ErrorMovInv Then
+ For Each Dr1 As DataRow In DtTraspasos.Select("CveTipoAlmacen = 26")
+ CveMovimientoSalida = Dr1("CveMovimientoSalida").ToString.ToEntero
+
+ Dim CveAlmacenExA As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa, CveTipoAlmacen:=10).FiltroPrimeroValor("CveAlmacen", $"CveSubProyecto={CveSubProyecto}").ToEntero()
+
+ CveMovimientoEntradaApartado = ObjInventario.AddMovimiento(CveAlmacenExA, 9, 1, TxtFecha.Text.ToDate, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, CveVentaSurtir, -1, -1,
+ Observaciones:=TxtObservaciones.Text.Trim, CveAlmacenDestino:=DdlAlmacen.SelectedValue.ToEntero, CveMovimientoRelacionado:=CveMovimientoSalida,
+ Guia:=TxtGuia.Text, CveContrato:=CveContrato, CveVendedor:=CveVendedor, CveCliente:=CveCliente, Modulo:="RE/G4")
+ FolioEntrada = ObjInventario.Folio
+
+ If Not CveMovimientoEntradaApartado > 0 Then
+ ErrorMovInv = True
+ TextoError.AppendFormat("Ocurrió un error al procesar los movimientos de traspaso de apartado. Por favor vuelva a intentar.")
+ Exit For
+ End If
+
+ Dr1("CveMovimientoEntrada") = CveMovimientoEntradaApartado
+ Dr1("FolioEntrada") = FolioEntrada
+
+ If ObjInventario.GetMovimientosDetalle(CveMovimientoSalida, UsuarioActual.CveEmpresa) Then
+ For Each Dr As DataRow In ObjInventario.DtResultados.Rows
+ If Not ObjInventario.AddMovimientoDetalle(CveMovimientoEntradaApartado, Dr("Cantidad").ToString.ToDouble, Dr("CveUM").ToString.ToEntero, Dr("CvePS").ToString.ToEntero, Dr("PU").ToString.ToDecimal, CveAF:=Dr("CveAF").ToString.ToEntero, Serie:=Dr("Serie").ToString, CveMovimientoDetalleEntrada:=Dr("CveMovimientoDetalle").ToString.ToEntero, CveVentaDetalle:=Dr("CveVentaDetalle").ToString.ToEntero, FechaCaducidad:=If(CBool(Dr("AplicaCaducidad")), Dr("FechaCaducidad").ToString.ToDate, MinFecha), Lote:=If(CBool(Dr("AplicaLote")), Dr("Lote").ToString, "-1"), CveSeccionAlmacen:=If(CBool(Dr("AplicaSeccion")), Dr("CveSeccion").ToString.ToEntero, -1)) Then
+ ErrorMovInv = True
+ TextoError.AppendFormat("Ocurrió un error al procesar los conceptos de traspaso de apartado. Por favor vuelva a intentar.")
+ Exit For
+ End If
+ Next
+ End If
+
+ If ErrorMovInv Then Exit For
+
+ Next
+ End If
+ End If
+
+ If Not ErrorMovInv Then
+ For Each DrMovto As DataRow In DtTraspasos.FiltraParametros("CveConceptoMovimientoSalida = 40").Rows
+ ErrorMovInv = Not GenerarPrePoliza(ObjInventario, ObjVentas, ObjConta, DrMovto("CveMovimientoSalida").ToString().ToEntero(), TextoError)
+ If ErrorMovInv Then
+ Exit For
+ End If
+ Next
+ End If
+
+ ''TERMINA: SIN COSTO
'' COMIENZA: APARTADOS
Dim CantidadPendiente As Decimal = 0
Dim CantidadSaldo As Decimal = 0
- If CveVendedor > 0 AndAlso (UsuarioActual.Empresa.Funcionalidad(146) = "1" Or CveCliente > 0) Then 'no debe considerar cuando es pedido de contrato
+ If Not ErrorMovInv AndAlso CveVendedor > 0 AndAlso (UsuarioActual.Empresa.Funcionalidad(146) = "1" Or CveCliente > 0) Then 'no debe considerar cuando es pedido de contrato
If TipoMovimiento = 1 Then ' SI ES DEVOLUCION NO APLICA APARTADO
' SALIDA POR TRASPASO DE LOS ALMACENES DE APARTADO
For Each Dr As DataRow In DtDatos.Rows
@@ -1756,6 +1985,8 @@ Partial Class Inventarios_EntregaAlmacen
DrMovto("CveAlmacen") = Dr2("CveAlmacen").ToString.ToEntero
DrMovto("CveMovimientoSalida") = CveMovimientoSalida
DrMovto("FolioSalida") = FolioSalida
+ DrMovto("CveTipoAlmacen") = 9
+ DrMovto("CveConceptoMovimientoSalida") = 8
DtTraspasos.Rows.Add(DrMovto)
End If
@@ -1807,6 +2038,8 @@ Partial Class Inventarios_EntregaAlmacen
DrMovto("CveAlmacen") = Dr2("CveAlmacen").ToString.ToEntero
DrMovto("CveMovimientoSalida") = CveMovimientoSalida
DrMovto("FolioSalida") = FolioSalida
+ DrMovto("CveTipoAlmacen") = 9
+ DrMovto("CveConceptoMovimientoSalida") = 8
DtTraspasos.Rows.Add(DrMovto)
End If
@@ -1856,6 +2089,8 @@ Partial Class Inventarios_EntregaAlmacen
DrMovto("CveAlmacen") = Dr1("CveAlmacen").ToString.ToEntero
DrMovto("CveMovimientoSalida") = CveMovimientoSalida
DrMovto("FolioSalida") = FolioSalida
+ DrMovto("CveTipoAlmacen") = 9
+ DrMovto("CveConceptoMovimientoSalida") = 8
DtTraspasos.Rows.Add(DrMovto)
End If
@@ -1892,7 +2127,7 @@ Partial Class Inventarios_EntregaAlmacen
'ENTRADA POR TRASPASO AL ALMACEN GENERAL
If Not ErrorMovInv Then
- For Each Dr1 As DataRow In DtTraspasos.Rows
+ For Each Dr1 As DataRow In DtTraspasos.Select("CveTipoAlmacen = 9")
CveMovimientoSalida = Dr1("CveMovimientoSalida").ToString.ToEntero
CveMovimientoEntradaApartado = ObjInventario.AddMovimiento(DdlAlmacen.SelectedValue.ToEntero, 9, 1, TxtFecha.Text.ToDate, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, CveVentaSurtir, -1, -1,
@@ -1928,7 +2163,7 @@ Partial Class Inventarios_EntregaAlmacen
'' TERMINA: APARTADOS
' COMIENZA: GARANTIAS
- If TipoDocto.Contiene("Ing", "Rem") AndAlso UsuarioActual.Empresa.Funcionalidad(531) = "1" AndAlso TipoMovimiento = 1 Then
+ If Not ErrorMovInv AndAlso TipoDocto.Contiene("Ing", "Rem") AndAlso UsuarioActual.Empresa.Funcionalidad(531) = "1" AndAlso TipoMovimiento = 1 Then
Dim CveAlmacenGarantia As Integer = GlobalDTAlmacenUsuarios(UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, 6).FiltroPrimeroValor("CveAlmacen", $"CveSubProyecto={CveSubProyecto}").ToEntero()
Dim DtGarantias As DataTable = Nothing
@@ -1957,9 +2192,9 @@ Partial Class Inventarios_EntregaAlmacen
End If
' TERMINA: GARANTIAS
+ Dim CantidadPendientePorSalir As Decimal = DtDatos.SUM("CantidadGV").ToDecimal() - CantidadSalidaSinCosto
-
- If Not ErrorMovInv Then
+ If Not ErrorMovInv AndAlso CantidadPendientePorSalir > 0 Then
Dim ConceptoMovimiento = 3
ConceptoMovimiento = If(TipoMovimiento = 1, ConceptoMovimiento, 18)
ConceptoMovimiento = If(CveAlmacenTraspasoDestino > 0, 8, ConceptoMovimiento)
@@ -1999,7 +2234,7 @@ Partial Class Inventarios_EntregaAlmacen
If CveMovimiento > 0 Then
'SACA LO DE TRASPASOS - APARTADO
- For Each Dr1 As DataRow In DtTraspasos.Rows
+ For Each Dr1 As DataRow In DtTraspasos.Select("CveTipoAlmacen = 9")
CveMovimientoSalida = Dr1("CveMovimientoEntrada").ToString.ToEntero
If ObjInventario.GetMovimientosDetalle(CveMovimientoSalida, UsuarioActual.CveEmpresa) Then
If ObjInventario.DtResultados.Rows.Count = 0 Then
@@ -2083,137 +2318,41 @@ Partial Class Inventarios_EntregaAlmacen
Else
ErrorMovInv = True
End If
- End If
- 'End If
+ 'ENTRADA POR TRASPASO CUANDO ES REMISION
+ If Not ErrorMovInv Then
+ If CveAlmacenTraspasoDestino > 0 AndAlso Not (TipoMovimiento = 2 And TipoDocto = "Dev" And EsDevolucionVenta = 1) Then ' TRASPASO CUANDO ES REMISION
+ CveMovimientoEntrada = ObjInventario.AddMovimiento(CveAlmacenTraspasoDestino, 9, 1, TxtFecha.Text.ToDate, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, CveVentaSurtir, -1, -1, Observaciones:=TxtObservaciones.Text.Trim, Guia:=TxtGuia.Text, CveContrato:=CveContrato,
+ CveMovimientoRelacionado:=CveMovimiento, CveAlmacenDestino:=DdlAlmacen.SelectedValue.ToEntero, Modulo:="RE/G8")
+ FolioEntrada = ObjInventario.Folio
- 'ENTRADA POR TRASPASO CUANDO ES REMISION
- If Not ErrorMovInv Then
- If CveAlmacenTraspasoDestino > 0 AndAlso Not (TipoMovimiento = 2 And TipoDocto = "Dev" And EsDevolucionVenta = 1) Then ' TRASPASO CUANDO ES REMISION
- CveMovimientoEntrada = ObjInventario.AddMovimiento(CveAlmacenTraspasoDestino, 9, 1, TxtFecha.Text.ToDate, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, CveVentaSurtir, -1, -1, Observaciones:=TxtObservaciones.Text.Trim, Guia:=TxtGuia.Text, CveContrato:=CveContrato,
- CveMovimientoRelacionado:=CveMovimiento, CveAlmacenDestino:=DdlAlmacen.SelectedValue.ToEntero, Modulo:="RE/G8")
- FolioEntrada = ObjInventario.Folio
-
- If CveMovimientoEntrada <= 0 Then
- TextoError.AppendFormat("No se pudo generar el movimiento de entrada correctamente")
- ErrorMovInv = True
- Else
- If ObjInventario.GetMovimientosDetalle(CveMovimiento, UsuarioActual.CveEmpresa) AndAlso ObjInventario.DtResultados.Rows.Count > 0 Then
- For Each Dr As DataRow In ObjInventario.DtResultados.Rows
- If Not ObjInventario.AddMovimientoDetalle(CveMovimientoEntrada, 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, EsInterno:=EsInterno, CveMovimientoDetalleEntrada:=Dr("CveMovimientoDetalle").ToString.ToEntero()) Then
- ErrorMovInv = True
- TextoError.AppendFormat("Ocurrió un error al guardar los movimientos de entrada")
- Exit For
- End If
- Next
- Else
+ If CveMovimientoEntrada <= 0 Then
+ TextoError.AppendFormat("No se pudo generar el movimiento de entrada correctamente")
ErrorMovInv = True
- TextoError.AppendFormat("Ocurrió un error al guardar los movimientos de entrada")
- End If
- End If
-
- Else 'REGISTRO LA PREPOLIZA DE COSTO VS ALMACEN - SALIDA ALMACEN
- Dim DtCostos As DataTable = Nothing
- Dim ValorInventario As Decimal = 0
- If ObjInventario.GetMovimientosDetalle(CveMovimiento, UsuarioActual.CveEmpresa) Then
- DtCostos = ObjInventario.DtResultados
-
- Dim tmpCostos As DataTable = DtCostos.FiltraParametros("", "", {"CveClasificacion"})
- 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 IdCtaContable As Integer = 0
- Dim CveCuenta As Integer = 0
- If tmpCostos.Rows.Count > 0 Then
-
-
- If ObjVentas.GetVenta(CveVentaSurtir, UsuarioActual.CveEmpresa) Then
- Dim Fecha As Date = TxtFecha.Text.ToDate ' If(TipoMovimiento <> 1, TxtFecha.Text.ToDate, ObjVentas.DtResultados(0)("Fecha").ToString.ToDate)
- Dim CveCliente As Integer = ObjVentas.DtResultados(0)("CveCliente").ToString.ToEntero
- Dim ClienteNombre As String = ObjVentas.DtResultados(0)("ClienteNombre").ToString
- Dim Serie As String = ObjVentas.DtResultados(0)("Serie").ToString
- Dim TotalCosto As Decimal = DtCostos.SUMD("Total").RoundSQL()
- Dim TotalCostoAcumulado As Decimal = 0
- Dim cont As Integer = 1
-
- Dim ValorMultiplicador = 1
-
- If TipoMovimiento = 1 Then
- ValorMultiplicador = 1
- ElseIf TipoMovimiento = 2 Then
- ValorMultiplicador = -1
- ElseIf TipoMovimiento = 2 AndAlso TipoDocto.Contiene({"Dev"}) And (EsDevolucionVenta = 1) Then
- ValorMultiplicador = 1
- End If
-
- Dim CvePrePoliza As Integer = ObjConta.AddPrePolizas("Inventario/RecepcionEntrega", 4, TotalCosto, TotalCosto, 1, Fecha, ClienteNombre, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa)
- 'Se agrega movimiento separado por la cuenta de ventas (ER)
-
- If CvePrePoliza > 0 Then
-
- For Each RowInv As DataRow In tmpCostos.Rows
- ValorInventario = DtCostos.SUMD("Total", $"CveClasificacion = {RowInv("CveClasificacion")}").RoundSQL()
- TotalCostoAcumulado += ValorInventario
-
- 'cuando es el último movimiento y hay diferencias en los importes
- If cont = DtCostos.FiltraParametros("", "", {"CveClasificacion"}).Rows.Count AndAlso TotalCosto <> TotalCostoAcumulado Then
- ValorInventario = ValorInventario + (TotalCosto - TotalCostoAcumulado)
- End If
-
- 'Concepto = String.Format("{0} - {1}", Row2("Clasificacion").ToString, Row2("SubProyecto").ToString)
- IdCtaContable = GlobalDTClasificaciones(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCuentaCostos", $"CveClasificacion = {RowInv("CveClasificacion")}").ToEntero
- CveCuenta = GlobalDTClasificaciones(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCuentaCostosSIG", $"CveClasificacion = {RowInv("CveClasificacion")}").ToEntero
-
- If Not ErrorMovInv Then
- If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, ValorMultiplicador * ValorInventario, Serie, 69, Serie, Fecha, IdCtaContable, -1, CveVenta:=CveVentaSurtir, CveCliente:=CveCliente, CveMovimientoAlmacen:=CveMovimiento, CveSubProyecto:=CveSubProyecto, ImporteMX:=ValorMultiplicador * ValorInventario, CveCuenta:=CveCuenta, CveClasificacion:=RowInv("CveClasificacion").ToString.ToEntero) Then
- ErrorMovInv = True
- End If
- End If
-
- cont += 1
- Next
-
- If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, ValorMultiplicador * TotalCosto, Serie, 68, Serie, Fecha, IdCtaContableAlmacen, -1, CveVenta:=CveVentaSurtir, CveCliente:=CveCliente, CveMovimientoAlmacen:=CveMovimiento, CveSubProyecto:=CveSubProyecto, ImporteMX:=ValorMultiplicador * TotalCosto, CveCuenta:=CveCuentaAlmacen) Then
+ Else
+ If ObjInventario.GetMovimientosDetalle(CveMovimiento, UsuarioActual.CveEmpresa) AndAlso ObjInventario.DtResultados.Rows.Count > 0 Then
+ For Each Dr As DataRow In ObjInventario.DtResultados.Rows
+ If Not ObjInventario.AddMovimientoDetalle(CveMovimientoEntrada, 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, EsInterno:=EsInterno, CveMovimientoDetalleEntrada:=Dr("CveMovimientoDetalle").ToString.ToEntero()) Then
ErrorMovInv = True
+ TextoError.AppendFormat("Ocurrió un error al guardar los movimientos de entrada")
+ Exit For
End If
-
- 'AutoConta - El movimiento 1 es el de Venta
- Dim AutoConta As Boolean = UsuarioActual.Empresa.Funcionalidad(200) = "1"
-
- If AutoConta And Not ErrorMovInv Then
- Dim ObjContPaq = New ClsContPAQi(UsuarioActual.Empresa)
-
- If IdCtaContable > 0 Then
- If Not ObjConta.ContabilizarPrePoliza(CvePrePoliza, UsuarioActual.CveUsuario, UsuarioActual.Empresa, ObjConta:=ObjContPaq) Then
- Alert("Ocurrio un Error al contabilizar, pongase en contacto con Soporte Técnico")
- ErrorMovInv = True
- TextoError.AppendFormat("Ocurrio un Error al contabilizar, pongase en contacto con Soporte Técnico")
- End If
- Else
- Alert(String.Format("No se puede contabilizar ya que falta asignación de las cuentas contables"), TipoMensaje.MsgAdvertencia)
- End If
-
- ObjContPaq.Dispose()
- End If
- Else
- ErrorMovInv = True
- TextoError.AppendFormat("Ocurrió un Error al ingresar la prepoliza.1")
- End If
+ Next
Else
ErrorMovInv = True
- TextoError.AppendFormat("Ocurrió un Error al ingresar las prepolizas.2")
+ TextoError.AppendFormat("Ocurrió un error al guardar los movimientos de entrada")
End If
- Else
- ErrorMovInv = True
- TextoError.AppendFormat("Ocurrió un Error al ingresar las prepolizas.3")
End If
- Else
- ErrorMovInv = True
- TextoError.AppendFormat("Ocurrió un Error al ingresar las prepolizas.4")
+
+ Else 'REGISTRO LA PREPOLIZA DE COSTO VS ALMACEN - SALIDA ALMACEN
+ ErrorMovInv = Not GenerarPrePoliza(ObjInventario, ObjVentas, ObjConta, CveMovimiento, TextoError)
End If
+
End If
End If
+
'DEVOLUCION APARTADOS
If Not ErrorMovInv Then
If TipoMovimiento = 2 Then
@@ -2416,46 +2555,45 @@ Partial Class Inventarios_EntregaAlmacen
End If
End If
+ 'Paqueterias guias
+ If RbEntregaInterna.Checked AndAlso Not ErrorMovInv Then
+ Dim CveEstatus As Integer = DdlEstatus.SelectedValue.ToEntero()
+ Dim Fecha As String = TxtFechaPaqInterna.Text
+ Dim FechaEstimada As String = If(TxtFechaEstimada.Text = "", "-1", TxtFechaEstimada.Text)
+ Dim NoCajas As Integer = TxtNoCajas.Text.ToEntero()
+ Dim Observaciones As String = TxtObservacionesPaqInterna.Text
+ Dim CvePaqueteria As Integer = GlobalDTPaqueterias().FiltroPrimeroValor("CvePaqueteria", String.Format("CveEmpresa={0} AND TipoPaqueteria = 0", UsuarioActual.CveEmpresa)).ToEntero
+
+ If CveSubProyecto > 0 Then
+ Dim CvePaqueteriaGuia As Integer = ObjGeneral.AddPaqueteriasGuias(CvePaqueteria, 9, CveEstatus, CveSubProyecto, Fecha, "", "", NoCajas, 0.00, "-1", FechaEstimada, Observaciones, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, EsEntregaInterna:=True)
+
+ If CvePaqueteriaGuia > 0 Then
+
+ If CveVentaSurtir > 0 OrElse CveSubProyecto > 0 Then
+ If ObjGeneral.AddPaqueteriasGuiasDetalles(CvePaqueteriaGuia, CveVentaSurtir, -1, CveMovimiento, -1) Then
+ ''manda correo
+ MandaCorreoEntrega(CveVentaSurtir)
+ Else
+ ErrorMovInv = True
+ End If
+ End If
+ If ErrorMovInv Then
+ Alert("Error en el paqueteria guia detalle", TipoMensaje.MsgError)
+ End If
+ Else
+ ErrorMovInv = True
+ Alert("Error en el paqueteria guia", TipoMensaje.MsgError)
+ End If
+ Else
+ Alert("Hace falta indicar un Sub Proyecto", TipoMensaje.MsgAdvertencia)
+ ErrorMovInv = True
+ End If
+ End If
Catch ex As Exception
ErrorMovInv = True
OnError("Ocurrió un error al guardar", ex)
End Try
- 'Paqueterias guias
- If RbEntregaInterna.Checked AndAlso Not ErrorMovInv Then
- Dim CveEstatus As Integer = DdlEstatus.SelectedValue.ToEntero()
- Dim Fecha As String = TxtFechaPaqInterna.Text
- Dim FechaEstimada As String = If(TxtFechaEstimada.Text = "", "-1", TxtFechaEstimada.Text)
- Dim NoCajas As Integer = TxtNoCajas.Text.ToEntero()
- Dim Observaciones As String = TxtObservacionesPaqInterna.Text
- Dim CvePaqueteria As Integer = GlobalDTPaqueterias().FiltroPrimeroValor("CvePaqueteria", String.Format("CveEmpresa={0} AND TipoPaqueteria = 0", UsuarioActual.CveEmpresa)).ToEntero
-
- If CveSubProyecto > 0 Then
- Dim CvePaqueteriaGuia As Integer = ObjGeneral.AddPaqueteriasGuias(CvePaqueteria, 9, CveEstatus, CveSubProyecto, Fecha, "", "", NoCajas, 0.00, "-1", FechaEstimada, Observaciones, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, EsEntregaInterna:=True)
-
- If CvePaqueteriaGuia > 0 Then
-
- If CveVentaSurtir > 0 OrElse CveSubProyecto > 0 Then
- If ObjGeneral.AddPaqueteriasGuiasDetalles(CvePaqueteriaGuia, CveVentaSurtir, -1, CveMovimiento, -1) Then
- ''manda correo
- MandaCorreoEntrega(CveVentaSurtir)
- Else
- ErrorMovInv = True
- End If
- End If
- If ErrorMovInv Then
- Alert("Error en el paqueteria guia detalle", TipoMensaje.MsgError)
- End If
- Else
- ErrorMovInv = True
- Alert("Error en el paqueteria guia", TipoMensaje.MsgError)
- End If
- Else
- Alert("Hace falta indicar un Sub Proyecto", TipoMensaje.MsgAdvertencia)
- ErrorMovInv = True
- End If
- End If
-
If Not ErrorMovInv Then
ObjInventario.Commit()
@@ -2471,13 +2609,23 @@ Partial Class Inventarios_EntregaAlmacen
Msg.AppendFormat("
Imprimir Movimiento ", Encripta(String.Format("OP=Alm&CveMovimiento={0}", CveMovimientoEntrada)))
End If
- If DtTraspasos.Rows.Count > 0 Then
+ If DtTraspasos.FiltraParametros("CveTipoAlmacen=9").Rows.Count > 0 Then
Msg.AppendFormat("
Movimientos de Control (Apartados):")
For Each Dr As DataRow In DtTraspasos.Rows
Msg.AppendFormat("
Almacén {0} | Salida por Traspaso: {2} | Entrada por Traspaso: {4} ", Dr("Almacen"), Dr("CveMovimientoSalida"), Dr("FolioSalida"), Dr("CveMovimientoEntrada"), Dr("FolioEntrada"))
Next
End If
+ If DtTraspasos.FiltraParametros("CveTipoAlmacen=26").Rows.Count > 0 Then
+ Msg.AppendFormat("
Movimientos de Control (Sin Costo):")
+ For Each Dr As DataRow In DtTraspasos.FiltraParametros("CveConceptoMovimientoSalida=40").Rows
+ Msg.AppendFormat("
Almacén {0} | Salida directa de almacen: {2} ", Dr("Almacen"), Dr("CveMovimientoSalida"), Dr("FolioSalida"), Dr("CveMovimientoEntrada"), Dr("FolioEntrada"))
+ Next
+ For Each Dr As DataRow In DtTraspasos.FiltraParametros("CveConceptoMovimientoSalida=8").Rows
+ Msg.AppendFormat("
Almacén {0} | Salida por Traspaso: {2} ", Dr("Almacen"), Dr("CveMovimientoSalida"), Dr("FolioSalida"), Dr("CveMovimientoEntrada"), Dr("FolioEntrada"))
+ Next
+ End If
+
If CveMovimientoGarantia > 0 Then
Msg.AppendFormat("
Movimiento de Entrada (garantías): {1}", CveMovimientoGarantia, FolioGarantia)
Msg.AppendFormat("
Imprimir Movimiento ", Encripta(String.Format("OP=Alm&CveMovimiento={0}", CveMovimientoGarantia)))
@@ -2512,6 +2660,109 @@ Partial Class Inventarios_EntregaAlmacen
End Sub
+ Private Function GenerarPrePoliza(ByRef ObjInventario As ClsInventarios, ByRef ObjVentas As ClsVentas, ByRef ObjConta As ClsContabilidad, CveMovimiento As Integer, ByRef TextoError As StringBuilder) As Boolean
+ Dim ErrorMovInv As Boolean = False
+ Dim DtCostos As DataTable = Nothing
+ Dim ValorInventario As Decimal = 0
+ If ObjInventario.GetMovimientosDetalle(CveMovimiento, UsuarioActual.CveEmpresa) Then
+ DtCostos = ObjInventario.DtResultados
+
+ Dim tmpCostos As DataTable = DtCostos.FiltraParametros("", "", {"CveClasificacion"})
+ 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 IdCtaContable As Integer = 0
+ Dim CveCuenta As Integer = 0
+ If tmpCostos.Rows.Count > 0 Then
+
+
+ If ObjVentas.GetVenta(CveVentaSurtir, UsuarioActual.CveEmpresa) Then
+ Dim Fecha As Date = TxtFecha.Text.ToDate ' If(TipoMovimiento <> 1, TxtFecha.Text.ToDate, ObjVentas.DtResultados(0)("Fecha").ToString.ToDate)
+ Dim CveCliente As Integer = ObjVentas.DtResultados(0)("CveCliente").ToString.ToEntero
+ Dim ClienteNombre As String = ObjVentas.DtResultados(0)("ClienteNombre").ToString
+ Dim Serie As String = ObjVentas.DtResultados(0)("Serie").ToString
+ Dim TotalCosto As Decimal = DtCostos.SUMD("Total").RoundSQL()
+ Dim TotalCostoAcumulado As Decimal = 0
+ Dim cont As Integer = 1
+
+ Dim ValorMultiplicador = 1
+
+ If TipoMovimiento = 1 Then
+ ValorMultiplicador = 1
+ ElseIf TipoMovimiento = 2 Then
+ ValorMultiplicador = -1
+ ElseIf TipoMovimiento = 2 AndAlso TipoDocto.Contiene({"Dev"}) And (EsDevolucionVenta = 1) Then
+ ValorMultiplicador = 1
+ End If
+
+ Dim CvePrePoliza As Integer = ObjConta.AddPrePolizas("Inventario/RecepcionEntrega", 4, TotalCosto, TotalCosto, 1, Fecha, ClienteNombre, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa)
+ 'Se agrega movimiento separado por la cuenta de ventas (ER)
+
+ If CvePrePoliza > 0 Then
+
+ For Each RowInv As DataRow In tmpCostos.Rows
+ ValorInventario = DtCostos.SUMD("Total", $"CveClasificacion = {RowInv("CveClasificacion")}").RoundSQL()
+ TotalCostoAcumulado += ValorInventario
+
+ 'cuando es el último movimiento y hay diferencias en los importes
+ If cont = DtCostos.FiltraParametros("", "", {"CveClasificacion"}).Rows.Count AndAlso TotalCosto <> TotalCostoAcumulado Then
+ ValorInventario = ValorInventario + (TotalCosto - TotalCostoAcumulado)
+ End If
+
+ 'Concepto = String.Format("{0} - {1}", Row2("Clasificacion").ToString, Row2("SubProyecto").ToString)
+ IdCtaContable = GlobalDTClasificaciones(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCuentaCostos", $"CveClasificacion = {RowInv("CveClasificacion")}").ToEntero
+ CveCuenta = GlobalDTClasificaciones(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCuentaCostosSIG", $"CveClasificacion = {RowInv("CveClasificacion")}").ToEntero
+
+ If Not ErrorMovInv Then
+ If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, ValorMultiplicador * ValorInventario, Serie, 69, Serie, Fecha, IdCtaContable, -1, CveVenta:=CveVentaSurtir, CveCliente:=CveCliente, CveMovimientoAlmacen:=CveMovimiento, CveSubProyecto:=CveSubProyecto, ImporteMX:=ValorMultiplicador * ValorInventario, CveCuenta:=CveCuenta, CveClasificacion:=RowInv("CveClasificacion").ToString.ToEntero) Then
+ ErrorMovInv = True
+ End If
+ End If
+
+ cont += 1
+ Next
+
+ If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, ValorMultiplicador * TotalCosto, Serie, 68, Serie, Fecha, IdCtaContableAlmacen, -1, CveVenta:=CveVentaSurtir, CveCliente:=CveCliente, CveMovimientoAlmacen:=CveMovimiento, CveSubProyecto:=CveSubProyecto, ImporteMX:=ValorMultiplicador * TotalCosto, CveCuenta:=CveCuentaAlmacen) Then
+ ErrorMovInv = True
+ End If
+
+ 'AutoConta - El movimiento 1 es el de Venta
+ Dim AutoConta As Boolean = UsuarioActual.Empresa.Funcionalidad(200) = "1"
+
+ If AutoConta And Not ErrorMovInv Then
+ Dim ObjContPaq = New ClsContPAQi(UsuarioActual.Empresa)
+
+ If IdCtaContable > 0 Then
+ If Not ObjConta.ContabilizarPrePoliza(CvePrePoliza, UsuarioActual.CveUsuario, UsuarioActual.Empresa, ObjConta:=ObjContPaq) Then
+ Alert("Ocurrio un Error al contabilizar, pongase en contacto con Soporte Técnico")
+ ErrorMovInv = True
+ TextoError.AppendFormat("Ocurrio un Error al contabilizar, pongase en contacto con Soporte Técnico")
+ End If
+ Else
+ Alert(String.Format("No se puede contabilizar ya que falta asignación de las cuentas contables"), TipoMensaje.MsgAdvertencia)
+ End If
+
+ ObjContPaq.Dispose()
+ End If
+ Else
+ ErrorMovInv = True
+ TextoError.AppendFormat("Ocurrió un Error al ingresar la prepoliza.1")
+ End If
+ Else
+ ErrorMovInv = True
+ TextoError.AppendFormat("Ocurrió un Error al ingresar las prepolizas.2")
+ End If
+ Else
+ ErrorMovInv = True
+ TextoError.AppendFormat("Ocurrió un Error al ingresar las prepolizas.3")
+ End If
+ Else
+ ErrorMovInv = True
+ TextoError.AppendFormat("Ocurrió un Error al ingresar las prepolizas.4")
+ End If
+
+ Return Not ErrorMovInv
+ End Function
+
Private Sub GuardaTraspaso()
'OBLIGA A SURTIR TODO
@@ -2521,8 +2772,8 @@ Partial Class Inventarios_EntregaAlmacen
RegistraScript("playsonidito('142608__autistic-lucario__error.wav')")
Exit Sub
End If
- Next
-
+ Next
+
Dim ValidaSeccion As Boolean = False : Dim ValidaCaducidad As Boolean = False : Dim ValidaLote As Boolean = False
'VALIDA CANTIDAD DE SALIDA
Dim Cantidad As Decimal = 0.0D
@@ -2592,8 +2843,8 @@ Partial Class Inventarios_EntregaAlmacen
If gvr.FCCheckBox("cbInv").Checked AndAlso gvr.FCTextBox("TbCantidadF").Text.ToDecimal > 0 Then
DtDatos.Rows(Index)("CantidadGV") = gvr.FCTextBox("TbCantidadF").Text.ToDecimal
DtDatos.Rows(Index)("CveSeccion") = gvr.FCDropDownList("DdlSeccionAlmacen").SelectedValue.ToEntero
- DtDatos.Rows(Index)("FechaCaducidad") = gvr.FCTextBox("TxtCaducidad").Text.ToDate
- DtDatos.Rows(Index)("Lote") = gvr.FCTextBox("TxtLote").Text
+ DtDatos.Rows(Index)("FechaCaducidad") = gvr.FCTextBox("TxtCaducidad").Text.ToDate
+ DtDatos.Rows(Index)("Lote") = gvr.FCTextBox("TxtLote").Text
End If
Index += 1
Next
@@ -2688,8 +2939,8 @@ Partial Class Inventarios_EntregaAlmacen
Dim CveSeccionAlmacen As Integer = -1
For Each Dr As DataRow In DtDatos.Rows
- FechaCaducidad = If(CBool(Dr("AplicaCaducidad")) AndAlso Dr("FechaCaducidad").ToString <> "", Dr("FechaCaducidad").ToString.ToDate, MinFecha)
- Lote = If(CBool(Dr("AplicaLote")), Dr("Lote").ToString, "-1")
+ FechaCaducidad = If(CBool(Dr("AplicaCaducidad")) AndAlso Dr("FechaCaducidad").ToString <> "", Dr("FechaCaducidad").ToString.ToDate, MinFecha)
+ Lote = If(CBool(Dr("AplicaLote")), Dr("Lote").ToString, "-1")
CveSeccionAlmacen = If(CBool(Dr("AplicaSeccion")), Dr("CveSeccion").ToString.ToEntero, -1)
DtDetalle = DtDatosDetalle.FiltraParametros(String.Format("ConsecId = {0} AND FueTraspaso IS NULL", Dr("Consec")))
@@ -2738,12 +2989,12 @@ Partial Class Inventarios_EntregaAlmacen
If ObjInventario.GetMovimientosDetalle(CveMovimientoSalida, UsuarioActual.CveEmpresa) Then
Dim CveSeccionAlmacen As Integer = -1
For Each Dr As DataRow In ObjInventario.DtResultados.Rows
- If CBool(Dr("AplicaSeccion")) Then
- CveSeccionAlmacen = GlobalDTInvPSSeccionesAlmacen(UsuarioActual.CveEmpresa, Almacen2, Dr("CvePS").ToString.ToEntero).FiltroPrimeroValor("CveSeccionAlmacen").ToEntero
- Else
- CveSeccionAlmacen = -1
- End If
-
+ If CBool(Dr("AplicaSeccion")) Then
+ CveSeccionAlmacen = GlobalDTInvPSSeccionesAlmacen(UsuarioActual.CveEmpresa, Almacen2, Dr("CvePS").ToString.ToEntero).FiltroPrimeroValor("CveSeccionAlmacen").ToEntero
+ Else
+ CveSeccionAlmacen = -1
+ End If
+
If Not ObjInventario.AddMovimientoDetalle(CveMovimientoEntrada, Dr("Cantidad").ToString.ToDecimal, Dr("CveUM").ToString.ToEntero, Dr("CvePS").ToString.ToEntero, Dr("PU").ToString.ToDecimal, CveAF:=Dr("CveAF").ToString.ToEntero, CveSeccionAlmacen:=CveSeccionAlmacen, Serie:=Dr("Serie").ToString, Lote:=Dr("Lote").ToString, FechaCaducidad:=Dr("FechaCaducidad").ToString.ToDate, CveMovimientoDetalleEntrada:=Dr("CveMovimientoDetalle").ToString.ToEntero, CveVentaDetalle:=Dr("CveVentaDetalle").ToString.ToEntero) Then
ErrorMovInv = True
TextoError = "Ocurrió un error al guardar los movimientos de entrada"
@@ -2824,51 +3075,51 @@ Partial Class Inventarios_EntregaAlmacen
End Sub
- Private Sub MandaCorreoEntrega(tCveVenta As Integer)
- Dim Correo As New ClsSisMail()
- Dim SerieFolio As String = ""
- Dim Asunto As String = String.Format("{0} Envio de pedido: {1}", UsuarioActual.Empresa.NombreCorto, SerieFolio)
- Dim Cuerpo As New StringBuilder()
- Dim Destinatario As String = ""
- Dim MensajeEnviado = False
- Dim tCvecliente As Integer
-
-
- Dim ObjVentas As New ClsVentas()
-
- If (ObjVentas.GetVenta(tCveVenta, UsuarioActual.CveEmpresa)) Then
- Dim dr As DataRow = ObjVentas.DtResultados.FiltroPrimero("")
- Destinatario = String.Format("{0};{1}", dr("CorreoNotificacion"), dr("CorreoVendedorVenta"))
-
- tCvecliente = dr("CveCliente").ToString.ToEntero
-
- Dim drC As DataRow = GlobalDTCliente(UsuarioActual.CveEmpresa, CveCliente:=tCvecliente).FiltroPrimero("")
- Destinatario += String.Format("{0};{1}", drC("CorreoEntregaCompras"), drC("CorreoEntregaAlmacen"))
-
- Cuerpo.AppendLine(String.Format("Estimado {0} le informamos que los productos de la factura {1} han sido enviados a entrega.
", dr("ClienteNombre"), dr("SerieFolio")))
- Cuerpo.AppendLine("
Dudas y aclaraciones con su coordinador empresarial.")
-
- End If
- ObjVentas.Dispose()
-
-
- ' Dim ArchivoAdjunto As New ClsSisMail.ArchivoMail()
-
- 'Dim ListaAdjuntos As New List(ClsSisMail.ArchivoMail)
-
-
- 'If (File.Exists(RutaArchivoAdjunto))Then
- ' {
- ' ArchivoAdjunto.ArchivoBinario = File.ReadAllBytes(RutaArchivoAdjunto);
- ' ArchivoAdjunto.Ruta = RutaArchivoAdjunto;
- ' ArchivoAdjunto.NombreArchivo = new FileInfo(RutaArchivoAdjunto).Name;
- ' ListaAdjuntos.Add(ArchivoAdjunto);
- ' }
-
-
- MensajeEnviado = Correo.SendMail(UsuarioActual.Empresa, Destinatario, Asunto, Cuerpo.ToString())
-
-
+ Private Sub MandaCorreoEntrega(tCveVenta As Integer)
+ Dim Correo As New ClsSisMail()
+ Dim SerieFolio As String = ""
+ Dim Asunto As String = String.Format("{0} Envio de pedido: {1}", UsuarioActual.Empresa.NombreCorto, SerieFolio)
+ Dim Cuerpo As New StringBuilder()
+ Dim Destinatario As String = ""
+ Dim MensajeEnviado = False
+ Dim tCvecliente As Integer
+
+
+ Dim ObjVentas As New ClsVentas()
+
+ If (ObjVentas.GetVenta(tCveVenta, UsuarioActual.CveEmpresa)) Then
+ Dim dr As DataRow = ObjVentas.DtResultados.FiltroPrimero("")
+ Destinatario = String.Format("{0};{1}", dr("CorreoNotificacion"), dr("CorreoVendedorVenta"))
+
+ tCvecliente = dr("CveCliente").ToString.ToEntero
+
+ Dim drC As DataRow = GlobalDTCliente(UsuarioActual.CveEmpresa, CveCliente:=tCvecliente).FiltroPrimero("")
+ Destinatario += String.Format("{0};{1}", drC("CorreoEntregaCompras"), drC("CorreoEntregaAlmacen"))
+
+ Cuerpo.AppendLine(String.Format("Estimado {0} le informamos que los productos de la factura {1} han sido enviados a entrega.
", dr("ClienteNombre"), dr("SerieFolio")))
+ Cuerpo.AppendLine("
Dudas y aclaraciones con su coordinador empresarial.")
+
+ End If
+ ObjVentas.Dispose()
+
+
+ ' Dim ArchivoAdjunto As New ClsSisMail.ArchivoMail()
+
+ 'Dim ListaAdjuntos As New List(ClsSisMail.ArchivoMail)
+
+
+ 'If (File.Exists(RutaArchivoAdjunto))Then
+ ' {
+ ' ArchivoAdjunto.ArchivoBinario = File.ReadAllBytes(RutaArchivoAdjunto);
+ ' ArchivoAdjunto.Ruta = RutaArchivoAdjunto;
+ ' ArchivoAdjunto.NombreArchivo = new FileInfo(RutaArchivoAdjunto).Name;
+ ' ListaAdjuntos.Add(ArchivoAdjunto);
+ ' }
+
+
+ MensajeEnviado = Correo.SendMail(UsuarioActual.Empresa, Destinatario, Asunto, Cuerpo.ToString())
+
+
End Sub
Private Sub Limpia()