Option Explicit On Option Strict On Imports System.Data Imports Extensiones Imports System.IO Imports Microsoft.Reporting.WebForms 'Imports DocumentFormat.OpenXml.Wordprocessing Partial Class Inventarios_RecepcionUsados Inherits ClsPaginas #Region "Propiedades" Private _dtDatos As DataTable Public Property DtMovimientos() As DataTable Get Return CType(ViewState("DtMovimientos"), DataTable) End Get Set(value As DataTable) ViewState("DtMovimientos") = value End Set End Property Public Property DtTamaños() As DataTable Get Return CType(ViewState("DtTamaños"), DataTable) End Get Set(value As DataTable) ViewState("DtTamaños") = value End Set End Property Public Property DtMovimientosEntradaInvFisico() As DataTable Get Return CType(ViewState("DtMovimientosEntradaInvFisico"), DataTable) End Get Set(value As DataTable) ViewState("DtMovimientosEntradaInvFisico") = value End Set End Property Public Property DtMovimientosSalidaInvFisico() As DataTable Get Return CType(ViewState("DtMovimientosSalidaInvFisico"), DataTable) End Get Set(value As DataTable) ViewState("DtMovimientosSalidaInvFisico") = value End Set End Property Public Property CveMovimiento() As Integer Get Return ViewState("CveMovimiento").ToString.ToEntero End Get Set(value As Integer) ViewState("CveMovimiento") = value End Set End Property Private Property DtMov As DataTable Get Return CType(ViewState("DtMov"), DataTable) End Get Set(value As DataTable) ViewState("DtMov") = value End Set End Property Public Property CveCompra() As Integer Get Return ViewState("CveCompra").ToString.ToEntero End Get Set(value As Integer) ViewState("CveCompra") = value End Set End Property 'Public Property CveConcepto() As Integer ' Get ' Return ViewState("CveConcepto").ToString.ToEntero ' End Get ' Set(value As Integer) ' ViewState("CveConcepto") = value ' End Set 'End Property Public Property Folio() As Integer Get Return ViewState("Folio").ToString.ToEntero End Get Set(value As Integer) ViewState("Folio") = value End Set End Property Public Property CveMovimientoRelacionado As Integer Get Return ViewState("CveMovimientoRelacionado").ToString.ToEntero End Get Set(value As Integer) ViewState("CveMovimientoRelacionado") = value End Set End Property Public Property ConceptoRelacionado As String Get Return ViewState("ConceptoRelacionado").ToString End Get Set(value As String) ViewState("ConceptoRelacionado") = value End Set End Property Public Property FolioRelacionado As Integer Get Return ViewState("FolioRelacionado").ToString.ToEntero End Get Set(value As Integer) ViewState("FolioRelacionado") = value End Set End Property Public Property TieneRelacionado As Integer Get Return ViewState("TieneRelacionado").ToString.ToEntero End Get Set(value As Integer) ViewState("TieneRelacionado") = value End Set End Property Public Property EstatusAlmacenCompra As Integer Get Return ViewState("EstatusAlmacenCompra").ToString.ToEntero End Get Set(value As Integer) ViewState("EstatusAlmacenCompra") = value End Set End Property Public Property TieneSalida As Boolean Get Return CBool(ViewState("TieneSalida").ToString) End Get Set(value As Boolean) ViewState("TieneSalida") = 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 CvePSSerieLote As Integer Get Return CType(ViewState("CvePSSerieLote"), Integer) End Get Set(value As Integer) ViewState("CvePSSerieLote") = value End Set End Property Private Property PSSerieLote As String Get Return CType(ViewState("PSSerieLote"), String) End Get Set(value As String) ViewState("PSSerieLote") = value End Set End Property Private Property CveUMSerieLote As Integer Get Return CType(ViewState("CveUMSerieLote"), Integer) End Get Set(value As Integer) ViewState("CveUMSerieLote") = value End Set End Property Private Property UMSerieLote As String Get Return CType(ViewState("UMSerieLote"), String) End Get Set(value As String) ViewState("UMSerieLote") = value End Set End Property Private Property CostoPromedioSerieLote As Double Get Return CType(ViewState("CostoPromedioSerieLote"), Double) End Get Set(value As Double) ViewState("CostoPromedioSerieLote") = value End Set End Property Public Property EsConsumoInterno As Boolean Get Return CBool(ViewState("EsConsumoInterno").ToString) End Get Set(value As Boolean) ViewState("EsConsumoInterno") = value End Set End Property Private Property FolioAsignado As Integer Get Return CType(ViewState("FolioAsignado"), Integer) End Get Set(value As Integer) ViewState("FolioAsignado") = value End Set End Property Private Property CveRemisionRecibida As Integer Get Return IfNull(ViewState("CveRemisionRecibida"), -1, CType(ViewState("CveRemisionRecibida"), Integer)).ToString().ToEntero() End Get Set(value As Integer) ViewState("CveRemisionRecibida") = value End Set End Property Private Property EsDistribuidor As Boolean Get Return CBool(IfNull(ViewState("EsDistribuidor"), False, CBool(ViewState("EsDistribuidor")))) End Get Set(value As Boolean) ViewState("EsDistribuidor") = value End Set End Property Private ReadOnly Property CveConcepto As Integer Get Return RBLOpcion.SelectedValue.ToEntero End Get End Property Public Property AgregarUsado As Boolean Get If ViewState("AgregarUsado") Is Nothing Then Return True Else Return Boolean.Parse(ViewState("AgregarUsado").ToString) End If End Get Set(value As Boolean) ViewState("AgregarUsado") = value End Set End Property Private Property IndexDTUsado As Integer Get Return CType(ViewState("IndexDTUsado"), Integer) End Get Set(value As Integer) ViewState("IndexDTUsado") = value End Set End Property Private Property Correo As String Get Return CType(ViewState("Correo"), String) End Get Set(value As String) ViewState("Correo") = value End Set End Property Private Property FolioCorreo As String Get Return CType(ViewState("FolioCorreo"), String) End Get Set(value As String) ViewState("FolioCorreo") = value End Set End Property Private Property ObjRemisionNC As Modelos.Factura Get Return CType(ViewState("ObjRemisionNC"), Modelos.Factura) End Get Set(value As Modelos.Factura) ViewState("ObjRemisionNC") = value End Set End Property Private Property ObjFactura As Modelos.Factura Get Return CType(ViewState("ObjFactura"), Modelos.Factura) End Get Set(value As Modelos.Factura) ViewState("ObjFactura") = value End Set End Property #End Region Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load If Not IsPostBack Then CveMovimiento = -1 CveMovimientoRelacionado = -1 TieneRelacionado = -1 TieneSalida = False EstatusAlmacenCompra = -1 EsConsumoInterno = False Correo = "" FolioCorreo = "" If IfNull(Request("Opc"), "").ToString = "S" Then RBLOpcion.SelectedValue = "3" DivCliente.Visible = False End If CreaDT() CargaCombos() TxtFecha.Text = Now.ToShortDateString TxtFechaPendientes.Text = Now.ToShortDateString RVFecha.MaximumValue = Now.ToShortDateString InicializaClientes() 'si viene una parámetro para cargar un movimiento lo hacemos dentro del procedimiento cargadatos Select Case UsuarioActual.Empresa.Funcionalidad(103) Case "1" Case "2" divMonedaSeccion.Visible = True divGuia.Visible = True End Select 'AsignacionOpcion() SiguienteFolio() 'SI YA ES MOVIMIENTO REGISTRADO NO ESCONDE COLUMNA AF If CveMovimiento > 0 Then BloqueaEdicionEncabezado() If UsuarioActual.CveEmpresa.Contiene(66, 13) Then TrSubProyectoActivoFijo.Visible = True VisualizaAF(True) CargaSubProyectos() End If End If CargaSubProyectosUsados() InicializaBitacoraTemporal() If UsuarioActual.Empresa.Funcionalidad(132) = "1" Then DivCodigoSeriePS.Visible = True End If 'If IfNull(Request("CI"), -1).ToString.ToEntero > 0 Then ' ActivaConsumoInterno() 'End If 'BLOQUEA PERMISOS BtnGuardar.Enabled = PermiteGuardar() BtnEliminar.Enabled = PermiteEliminar() BtnContabilizar.Enabled = PermiteContabilizar() BtnNuevo.Enabled = PermiteCrearNuevo() ActivaPermisoSeccionAlmacen() If CveMovimiento > 0 Then PermisoVerImportes() End If CargaTamaños() 'DdlProducto2.setEsWebService(True) 'DdlProducto2.Attributes.Add("data-metodo", "getpsusados") End If End Sub #Region " PERMISOS PAGINAS " Private Function PermiteGuardar() As Boolean Return True 'If(UsuarioActual.TienePermisoProceso(181) Or EsConsumoInterno, True, False) End Function ''' ''' Este permiso solo habilita el Btn del GV. Debe ir en conjunto con el permiso 181 [PermiteGuardar] ''' Private Function PermiteGuardarObservacionDetalle() As Boolean Return UsuarioActual.TienePermisoProceso(225) End Function Private Function PermiteEliminar() As Boolean Return If(UsuarioActual.TienePermisoProceso(182), True, False) End Function Private Function PermiteContabilizar() As Boolean Return If(UsuarioActual.TienePermisoProceso(183), True, False) End Function Private Function PermiteCrearNuevo() As Boolean Return If(UsuarioActual.TienePermisoProceso(184) Or EsConsumoInterno, True, False) End Function Private Sub ActivaPermisoSeccionAlmacen() ' GvM.Columns(12).Visible = UsuarioActual.Empresa.Funcionalidad(147) = "1" End Sub Private Sub PermisoVerImportes() Dim TienePermisoImportes As Boolean = UsuarioActual.TienePermisoProceso(201) End Sub #End Region #Region " VALORES INICIALES " Protected Sub CreaDT() Dim dt As New DataTable Dim column As DataColumn = New DataColumn("No") column.DataType = Type.GetType("System.Int32") With column .AutoIncrement = True .AutoIncrementSeed = 1 .AutoIncrementStep = 1 End With 'dt.Columns.Add("No", Type.GetType("System.Int32")) dt.Columns.Add(column) dt.Columns.Add("CveMovimiento", Type.GetType("System.Int32")) dt.Columns.Add("CveMovimientoDetalle", Type.GetType("System.Int32")) dt.Columns.Add("Cantidad", Type.GetType("System.Double")) dt.Columns.Add("CveUM", Type.GetType("System.Int32")) dt.Columns.Add("UnidadMedida") dt.Columns.Add("CvePS", Type.GetType("System.Int32")) dt.Columns.Add("CodigoPS") dt.Columns.Add("Codigo") dt.Columns.Add("PS") dt.Columns.Add("PU", Type.GetType("System.Double")) dt.Columns.Add("PUExtranjero", Type.GetType("System.Double")) dt.Columns.Add("Total", Type.GetType("System.Double")) dt.Columns.Add("CveClasificacion", Type.GetType("System.Int32")) dt.Columns.Add("CveSeccionAlmacen", Type.GetType("System.Int32")) dt.Columns.Add("SeccionAlmacen") dt.Columns.Add("Estatus") dt.Columns.Add("CostoIndirecto", Type.GetType("System.Double")) dt.Columns.Add("CodigoAF") dt.Columns.Add("CveAF") dt.Columns.Add("SerieLote", Type.GetType("System.String")) dt.Columns.Add("Lote", Type.GetType("System.String")) dt.Columns.Add("Batch", Type.GetType("System.String")) dt.Columns.Add("Observaciones") dt.Columns.Add("CountMovimientoEntradaDetalle") dt.Columns.Add("TotalExtranjero", Type.GetType("System.Double")) dt.Columns.Add("CveTamaño", Type.GetType("System.Int32")) dt.Columns.Add("Tamaño", Type.GetType("System.String")) CargaGVM(dt) DtMovimientos = dt.Clone DtMovimientosEntradaInvFisico = dt.Clone DtMovimientosSalidaInvFisico = dt.Clone End Sub Private Sub CargaCombos() DdlSeccion.DataSource = GlobalDTSeccionAlmacen(UsuarioActual.CveEmpresa) DdlSeccion.Items.Insert(0, New ListItem("Seleccione", "-1")) DdlSeccion.DataBind() 'Llenar el dropdownlist de monedas DdlMoneda.DataSource = GlobalDTMonedas DdlMoneda.DataBind() 'Llenar el dropdownlist de almacén DdlAlmacen.DataSource = GlobalDTAlmacenUsuarios(UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1).FiltraParametros("CveTipoAlmacen IN (22)") 'GlobalDTAlmacen(UsuarioActual.CveEmpresa) DdlAlmacen.Items.Insert(0, New ListItem("Seleccione", "-1")) DdlAlmacen.SelectedValue = "-1" DdlAlmacen.DataBind() If IsNothing(Request("CveMovimiento")) Then DdlAlmacen.SelectedValueExist(UsuarioActual.CveAlmacen) DdlAlmacen_SelectedIndexChanged(DdlAlmacen, EventArgs.Empty) End If CargaPS() End Sub Private Sub CargaPS() Dim ObjAcum As New ClsAcumuladores Dim lista As New List(Of String) Dim Filtro As String = "" If ObjAcum.TamañoGet(-1, UsuarioActual.CveEmpresa) Then For Each drow As DataRow In ObjAcum.DtResultados.Rows If drow("CvePSCargo").ToString.ToEntero > 0 Then lista.Add(drow("CvePSCargo").ToString) End If Next End If If lista.Count > 0 Then Filtro = "CvePS in(" & String.Join(",", lista) & ")" DdlProducto2.DataSource = GlobalDTPSSimplificado(UsuarioActual.CveEmpresa).FiltraParametros(Filtro) DdlProducto2.DataBind() DdlProducto2.Items.Insert(0, New ListItem("Seleccione", "-1")) End If ObjAcum.Dispose() End Sub Private Sub CargaSubProyectos() DdlSubProyecto.DataSource = If(UsuarioActual.Empresa.Funcionalidad(102) = "1" AndAlso Not UsuarioActual.TienePermisoProceso(110), GlobalDTSubProyectosUsuarios(UsuarioActual.CveUsuario, -1, UsuarioActual.CveEmpresa, -1, 1), GlobalDTSubProyectos(-1, -1, UsuarioActual.CveEmpresa, 1)) DdlSubProyecto.DataBind() 'DdlSubProyecto.Items.Insert(0, New ListItem("Seleccione", "-1")) End Sub Private Sub CargaSubProyectosUsados() If UsuarioActual.Empresa.Funcionalidad(531) = "1" Then DivRecepcionUsados.Visible = True If Not UsuarioActual.TienePermisoProceso(190) Then 'CARGA SOLO LAS SUCURSALES DE LOS ALMCENES QUE TIENE ASIGNADO EL USUARIO Dim ObjInventarios As New ClsInventarios If ObjInventarios.GetSucursalesAlmacenUsuario(UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa) Then DdlSubProyectos.DataSource = ObjInventarios.DtResultados End If ObjInventarios.Dispose() Else DdlSubProyectos.DataSource = GlobalDTSubProyectos(-1, CveEmpresa:=UsuarioActual.CveEmpresa) End If DdlSubProyectos.DataBind() DdlSubProyectos.SelectedValueExist(UsuarioActual.CveSubProyecto.ToString) End If End Sub Private Sub CargaPersonal() TrPersonal.Visible = True Dim dt As DataTable = Nothing Dim RH As New ClsRH If RH.GetPersonal(-1, UsuarioActual.CveEmpresa) Then dt = RH.DtResultados End If RH.Dispose() DdlPersonal.DataSource = dt DdlPersonal.DataBind() 'DdlSubProyecto.Items.Insert(0, New ListItem("Seleccione", "-1")) End Sub #End Region #Region " CARGA DATOS " Private Sub BloqueaEdicionEncabezado() DdlAlmacen.Enabled = True 'DdlConcepto.Enabled = True TxtFolio.Enabled = True TxtFecha.Enabled = True TxtResponsable.Enabled = True TxtObservaciones.Enabled = True DdlMoneda.Enabled = True TxtGuia.Enabled = True DdlSeccion.Enabled = True If CveMovimiento > 0 Then DdlAlmacen.Enabled = False ' DdlConcepto.Enabled = False TxtFolio.Enabled = False If Not PermiteGuardar() Then TxtFecha.Enabled = False TxtResponsable.Enabled = False TxtObservaciones.Enabled = False DdlMoneda.Enabled = False TxtGuia.Enabled = False DdlSeccion.Enabled = False End If UppGrid.Update() End Sub #End Region #Region " BOTONES: ELIMINAR, NUEVO " Protected Sub BtnNuevo_Click(sender As Object, e As EventArgs) Handles BtnNuevo.Click 'Response.Redirect("EntradasSalidas.aspx") LimpiarMovimiento() BloqueaEdicionEncabezado() End Sub Private Sub LimpiarMovimiento() CveMovimiento = -1 SiguienteFolio() HplCompra.Visible = False HplPoliza.Visible = False HplVenta.Visible = False HplOrdenCompra.Visible = False TrTipoCargado.Visible = False TrPersonal.Visible = False DtMovimientos.Clear() GvM.EditIndex = -1 CargaGVM(DtMovimientos.FiltraParametros("Estatus <> 'E' ")) BtnGuardar.Visible = PermiteGuardar() BtnEliminar.Visible = False DivRegistro.Visible = False DivTipoCambio.Visible = False If Not DdlAlmacen.Items.Contains(New ListItem("Seleccione", "-1")) Then DdlAlmacen.Items.Add(New ListItem("Seleccione", "-1")) End If DdlAlmacen.SelectedValue = "-1" If Not EsConsumoInterno Then DdlAlmacen_SelectedIndexChanged(DdlAlmacen, EventArgs.Empty) End If DdlAlmacen.Enabled = True TxtResponsable.Text = "" TxtObservaciones.Text = "" TxtFecha.Text = Now.ToShortDateString LblUsuarioRegistro.Text = "" LblFechaRegistro.Text = "" HplCompra.Visible = False HplVenta.Visible = False HplPoliza.Visible = False HplOrdenCompra.Visible = False LimpiarAgregar() InicializaBitacoraTemporal() DtBitacora.Clear() CargaEventoBitacoraTemp() TxtRemision.Text = "" DivRemision.Visible = False UpRegistroTipoCambio.Update() UPDatos.Update() End Sub Private Sub LimpiarAgregar() 'DdlClasificacion.SelectedValue = "-1" txtCantidad.Text = "" TxtObservacionesdetalle.Text = "" End Sub Protected Sub BtnEliminar_Click(sender As Object, e As EventArgs) Handles BtnEliminar.Click Dim Inv As New ClsInventarios Dim Conta As New ClsContabilidad(Inv.IniciaTransacSQL()) Dim TieneError = False Dim ObjConta As ClsContPAQi = Nothing If UsuarioActual.Empresa.UsaContabilidad Or UsuarioActual.Empresa.UsaAC Then ObjConta = New ClsContPAQi(UsuarioActual.Empresa) ObjConta.IniciaTransacSQL() End If If Inv.MovimientoRemove(CveMovimiento, UsuarioActual.CveEmpresa) Then If HdnIdPoliza.Value.ToEntero > 0 Then If Not ObjConta.RemovePoliza(HdnIdPoliza.Value.ToEntero) Then TieneError = True End If End If Else TieneError = True End If 'If Not TieneError Then ' If Not Conta.UpdatePrePolizasDetalleBloquear(CvePrePoliza, False) Then ' TieneError = True ' End If 'End If If Not TieneError Then If ObjConta IsNot Nothing Then ObjConta.Commit() Inv.Commit() Alert("Movimientos Eliminado", TipoMensaje.MsgInformacion) LimpiarMovimiento() Else If ObjConta IsNot Nothing Then ObjConta.RollBack() Inv.RollBack() Alert("Ocurrió un error al eliminar el movimiento. Por favor vuelva a intetar.", TipoMensaje.MsgError) End If CveMovimiento = 0 If ObjConta IsNot Nothing Then ObjConta.Dispose() Inv.Dispose() Conta.Dispose() End Sub #End Region #Region "CORREO" Private Function GeneraCorreo() As String Dim ObjInv As New ClsInventarios ObjInv.GetMovimientos(CveMovimiento, -1, -1, UsuarioActual.CveEmpresa) Dim strBody As New StringBuilder strBody.Append(" ") strBody.Append(" ") strBody.Append(" ") strBody.Append(" ") strBody.Append(" ") strBody.Append("
") strBody.AppendFormat("
Datos {0} ", "de la recepción de usados") strBody.Append(" ") strBody.Append(" ") strBody.AppendFormat(" ") strBody.Append(" ") strBody.AppendFormat(" ", ObjInv.DtResultados(0)("Almacen").ToString()) strBody.Append(" ") strBody.AppendFormat(" ", ObjInv.DtResultados(0)("FechaMovto").ToString().ToDate().ToShortDateString()) strBody.Append(" ") strBody.Append(" ") strBody.AppendFormat(" ", ObjInv.DtResultados(0)("Nombre").ToString()) strBody.Append(" ") strBody.Append(" ") strBody.AppendFormat(" ", ObjInv.DtResultados(0)("Recibio").ToString()) strBody.Append(" ") strBody.Append(" ") strBody.AppendFormat(" ", ObjInv.DtResultados(0)("Observaciones").ToString()) strBody.Append(" ") strBody.Append("
Folio: " + ObjInv.DtResultados(0)("Folio").ToString() + "
Almacen:{0}  
Fecha:{0}
Cliente:{0}  
Recibe:{0}  
Observaciones:{0}  
") strBody.Append("
") strBody.Append("
") strBody.Append("
") strBody.Append("
") strBody.Append(" Listado de Recepción ") strBody.Append(" ") strBody.Append(" ") FolioCorreo = ObjInv.DtResultados(0)("Folio").ToString() Dim DtMovimientosDetalle As DataTable = Nothing If ObjInv.GetMovimientosDetalle(CveMovimiento, UsuarioActual.CveEmpresa) Then DtMovimientosDetalle = ObjInv.DtResultados End If For Each dr As DataRow In DtMovimientosDetalle.Rows strBody.AppendFormat("", dr("Cantidad").ToString.FormatoNumero(0), dr("CodigoPS"), dr("UnidadMedida"), dr("Observaciones")) Next strBody.Append("
CantidadProductoUnidadObservaciones
{0}{1}{2}{3}
") strBody.Append("
") strBody.Append("
") strBody.Append("
") strBody.Append("") ObjInv.Dispose() Return strBody.ToString End Function Private Sub MandaCorreo(Para As String, Asunto As String, Body As String) Dim a As String = String.Format("{0} -- {1} ---- -->", Asunto, Para) Dim Mail As New ClsSisMail() Mail.SendMail(ClsPaginas.EmpresaNotificaciones, Para, Asunto, Body) End Sub Protected Sub EnvioCorreo() Dim Body As String = GeneraCorreo() Dim Asunto As String = $"SIG - Se Genero una Recepción de Usados con el folio: {FolioCorreo}" Try Dim Hilo As New System.Threading.Thread(Sub() MandaCorreo(Correo, Asunto, Body)) Hilo.Start() Catch ex As Exception OnError("Ocurrió error al mandar MAIL", ex) End Try End Sub #End Region #Region " AGREGAR - GUARDAR " Private Function GetExistencias(CvePS As Integer, CveUnidadMedida As Integer, CveEmpresa As Integer, CveAlmacen As Integer, Optional SerieLote As String = "-1", Optional Lote As String = "-1", Optional Batch As String = "-1") As Double Dim Inv As New ClsInventarios Dim Existencia As Double = Inv.GetExistenciasPS(CvePS, CveUnidadMedida, CveEmpresa, CveAlmacen, -1, FechaMovto:=String.Format("{0} {1}", TxtFecha.Text.ToDate.ToString("yyyy/MM/dd"), TxtHoraInicio.PostedTime), SerieLote:=SerieLote, Lote:=Lote, Batch:=Batch) Inv.Dispose() Return Existencia End Function Protected Sub BtnSerieAddNew_Click(sender As Object, e As EventArgs) AgregarPS() End Sub Private Sub AgregarPS() If Not DdlProducto2.SelectedValue.ToEntero > 0 Then RegistraScript("playsonidito('142608__autistic-lucario__error.wav')") Alert("Es necesario especificar el producto.", TipoMensaje.MsgAdvertencia) Exit Sub End If Dim PU As Decimal = 0 If GlobalDTAcumTamaños.FiltraParametros($"CveEmpresa = {UsuarioActual.CveEmpresa} AND CvePSCargo > 0 AND CvePSCargo={DdlProducto2.SelectedValue}").Rows.Count > 0 Then PU = GlobalDTAcumTamaños.FiltraParametros($"CveEmpresa = {UsuarioActual.CveEmpresa} AND CvePSCargo > 0 AND CvePSCargo={DdlProducto2.SelectedValue}").Rows(0)("Cargo").ToString.ToDecimal End If AddNew(DdlProducto2.SelectedValue.ToEntero, DdlProducto2.SelectedItem.Text, DdlUnidad.SelectedValue.ToEntero, DdlUnidad.SelectedItem.Text, txtCantidad.Text.ToDouble, PU, "", "-1", "-1", "-1", TxtObservacionesdetalle.Text, "", "", DdlAlmacen.SelectedValue.ToEntero, DdlAlmacen.SelectedItem.Text, "", HdnCveTamaño.Value.ToEntero) LimpiarAgregar() txtCantidad.Text = "" RegistraScript("CodigoAF = "";") If Not UsuarioActual.Empresa.Funcionalidad(105).ToString = "1" Then DdlProducto2.SelectedValue = "-1" Else DdlProducto2.SelectedIndex = 0 End If txtCantidad.Focus() End Sub Protected Sub AddNew(CvePS As Integer, PS As String, CveUM As Integer, UM As String, Cantidad As Double, PU As Double, SerieLote As String, CodigoAF As String, Codigo As String, CveAF As String, Observaciones As String, Lote As String, Batch As String, CveSeccionAlmacen As Integer, SeccionAlmacen As String, Tamaño As String, CveTamaño As Integer) 'If DdlAlmacen.SelectedValue.ToEntero <= 0 Then Alert("Seleccione un almacen", TipoMensaje.MsgAdvertencia) : RegistraScript("playsonidito('142608__autistic-lucario__error.wav')") : DdlProducto2.SelectedText = "" : Exit Sub Dim Valido As Boolean = True Dim CveClasificacion As Integer Dim dr As DataRow = GlobalDTPS(UsuarioActual.CveEmpresa, CvePS).FiltroPrimero("", "PS") If dr IsNot Nothing Then CveClasificacion = dr("CveClasificacion").ToString.ToEntero If Valido And AgregarUsado Then If ObjFactura IsNot Nothing AndAlso Not EsDistribuidor Then Dim RowDetalle As DataRow = ObjFactura.DtDetalle.FiltroPrimero($"CvePS={CvePS}") If RowDetalle IsNot Nothing Then 'If RowDetalle("PU").ToString.ToDecimal().RoundSQL <> PU.RoundSQL Then ' Alert($"Los importes no coinciden", TipoMensaje.MsgAdvertencia) ' Exit Sub 'End If Dim Puntos As Decimal = DtTamaños.FiltroPrimeroValor("Puntos", $"CvePSCargo={CvePS}").ToDecimal() Dim CantidadPermitida As Double = Math.Ceiling(RowDetalle("Cantidad").ToString.ToDecimal() * Puntos) If Cantidad > CantidadPermitida Then Alert($"La cantidad es mayor a la permitida", TipoMensaje.MsgAdvertencia) Exit Sub End If Else Alert($"El producto no se encuentra en la factura", TipoMensaje.MsgAdvertencia) Exit Sub End If End If 'VALIDA QUE LA SERIE NO SEA IGUAL AL CODIGO O CODIGOBARRAS If SerieLote <> "" And (SerieLote.ToUpper = dr("Codigo").ToString.ToUpper Or SerieLote.ToUpper = dr("CodigoBarras").ToString.ToUpper) Then Alert($"La serie indicada {SerieLote} coincide con el codigo o codigo de barras del producto. Por favor rectifique y vuelva a intentar.", TipoMensaje.MsgAdvertencia) Exit Sub End If Dim registro As DataRow = DtMovimientos.NewRow registro.Item("Cantidad") = Cantidad registro.Item("CveUM") = CveUM registro.Item("UnidadMedida") = UM registro.Item("CvePS") = CvePS registro.Item("CodigoPS") = PS registro.Item("PS") = PS registro.Item("PU") = PU 'registro.Item("PUExtranjero") = PU registro.Item("Total") = Cantidad * PU registro.Item("CveClasificacion") = CveClasificacion registro.Item("Estatus") = "" registro.Item("CveSeccionAlmacen") = CveSeccionAlmacen registro.Item("SeccionAlmacen") = SeccionAlmacen registro.Item("CodigoAF") = CodigoAF registro.Item("Codigo") = Codigo registro.Item("CveAF") = CveAF registro.Item("SerieLote") = If(SerieLote <> "", SerieLote, "") registro.Item("Lote") = If(Lote <> "", Lote, "") registro.Item("Batch") = If(Batch <> "", Batch, "") registro.Item("Observaciones") = Observaciones registro.Item("CveTamaño") = CveTamaño registro.Item("Tamaño") = Tamaño DtMovimientos.Rows.Add(registro) CargaGVM(DtMovimientos.FiltraParametros("Estatus <> 'E' ")) ' RegistraScript("playsonidito('beep-07.wav')") 'asdasdasdasdasdad RegistraScript("$('#DivModalAgregar').modal('hide')", "hidemodal") Else DtMovimientos.Rows(IndexDTUsado)("Cantidad") = Cantidad DtMovimientos.Rows(IndexDTUsado)("CveUM") = CveUM DtMovimientos.Rows(IndexDTUsado)("UnidadMedida") = UM DtMovimientos.Rows(IndexDTUsado)("CvePS") = CvePS DtMovimientos.Rows(IndexDTUsado)("CodigoPS") = PS DtMovimientos.Rows(IndexDTUsado)("PS") = PS DtMovimientos.Rows(IndexDTUsado)("PU") = PU 'registro.Item("PUExtranjero") = PU DtMovimientos.Rows(IndexDTUsado)("Total") = Cantidad * PU DtMovimientos.Rows(IndexDTUsado)("CveClasificacion") = CveClasificacion DtMovimientos.Rows(IndexDTUsado)("Estatus") = "" DtMovimientos.Rows(IndexDTUsado)("CveSeccionAlmacen") = CveSeccionAlmacen DtMovimientos.Rows(IndexDTUsado)("SeccionAlmacen") = SeccionAlmacen DtMovimientos.Rows(IndexDTUsado)("CodigoAF") = CodigoAF DtMovimientos.Rows(IndexDTUsado)("Codigo") = Codigo DtMovimientos.Rows(IndexDTUsado)("CveAF") = CveAF DtMovimientos.Rows(IndexDTUsado)("SerieLote") = If(SerieLote <> "", SerieLote, "") DtMovimientos.Rows(IndexDTUsado)("Lote") = If(Lote <> "", Lote, "") DtMovimientos.Rows(IndexDTUsado)("Batch") = If(Batch <> "", Batch, "") DtMovimientos.Rows(IndexDTUsado)("Observaciones") = Observaciones DtMovimientos.Rows(IndexDTUsado)("CveTamaño") = CveTamaño DtMovimientos.Rows(IndexDTUsado)("Tamaño") = Tamaño DtMovimientos.AcceptChanges() CargaGVM(DtMovimientos.FiltraParametros("Estatus <> 'E' ")) RegistraScript("$('#DivModalAgregar').modal('hide')", "hidemodal") End If End Sub Protected Sub BtnGuardar_Click(sender As Object, e As EventArgs) Handles BtnGuardar.Click If ObjRemisionNC IsNot Nothing Then Dim sb As New StringBuilder() sb.Append($"Se va a generar un documento de tipo 'Remisión de nota de crédito'.
Serie-Folio:{ObjRemisionNC.SerieFolio}.
¿Esta seguro que desea guardar?:
") Alert(sb.ToString(), TipoMensaje.MsgConfirmacion, JSBtnAceptar:="GenerarRNC();", TextoConfirmacion:="    Si    ", TextoCancelacion:="    No    ") Else Guardar() End If End Sub Private Sub BtnGenerarRNC_Click(sender As Object, e As EventArgs) Handles BtnGenerarRNC.Click Guardar(True) End Sub Protected Sub Guardar(Optional GenerarRNC As Boolean = False) If GvM.Rows.Count > 0 Then Dim Msg As New StringBuilder() Dim ObjInventario As New ClsInventarios Dim ObjAcum As New ClsAcumuladores(ObjInventario.IniciaTransacSQL()) Dim ObjVentas As New ClsVentas(ObjInventario.IniciaTransacSQL()) Dim ErrorMovInv As Boolean = False Dim ErrorAC As Boolean = False Dim IDPoliza As Integer = 0 Dim ImporteConcepto = 0.0 Try Dim CveSubProyecto = -1 Dim ActivoFijo = -1 If CveMovimiento > 0 Then Else Dim Fecha = String.Format("{0} {1}", TxtFecha.Text.ToDate.ToString("yyyy/MM/dd"), TxtHoraInicio.PostedTime).ToDate Dim CveCliente As Integer = CInt(IIf((DdlClientes.SelectedValue.ToEntero <= 0), -1, DdlClientes.SelectedValue.ToEntero)) Dim CveClienteSucursal As Integer = CInt(IIf((DdlClientesSucursales.SelectedValue.ToEntero <= 0), -1, DdlClientesSucursales.SelectedValue.ToEntero)) 'cuando es APH Dim tFolio As Integer = -1 If UsuarioActual.CveEmpresa = 48 And EsConsumoInterno = False Then tFolio = TxtFolio.Text.ToEntero If Not tFolio > 0 Then tFolio = If(TxtFolio.Text.ToEntero <> FolioAsignado, TxtFolio.Text.ToEntero, -1) End If Dim tCveProveedor As Integer = -1 If DdlProveedor.SelectedValue.ToEntero > 0 Then tCveProveedor = DdlProveedor.SelectedValue.ToEntero Dim CveVenta As Integer = -1 If CveRemisionRecibida > 0 Then CveVenta = CveRemisionRecibida ElseIf DdlFactura.SelectedValue.ToEntero() > 0 Then CveVenta = DdlFactura.SelectedValue.ToEntero() End If CveMovimiento = ObjInventario.AddMovimiento(DdlAlmacen.SelectedValue.ToEntero, CveConcepto, 1, Fecha, tFolio, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, CveVenta, CveSubProyecto, ActivoFijo, Guia:=TxtGuia.Text, Observaciones:=TxtObservaciones.Text, CvePersonal:=DdlPersonal.SelectedValue.ToEntero, Recibio:=TxtResponsable.Text.Trim, CveCliente:=CveCliente, CveClienteSucursal:=CveClienteSucursal, DepartamentoEntrega:=TxtDepartamentoEntrega.Text, PedidoContrato:=TxtPedidoContrato.Text, CveProveedor:=tCveProveedor) If CveMovimiento <= 0 Then Alert("No se pudo almacenar el movimiento correctamente", TipoMensaje.MsgError) RegistraScript("playsonidito('142608__autistic-lucario__error.wav')") ObjInventario.RollBack() 'deshace lo insertado Else Dim Mensaje As String = "" For Each Dr As DataRow In DtMovimientos.Rows If CveConcepto = 2 AndAlso DdlMoneda.SelectedValue.ToEntero = 2 Then ImporteConcepto = Dr("PU").ToString.ToDouble * GlobalTipoCambio(TxtFecha.Text.ToDate) Else ImporteConcepto = Dr("PU").ToString.ToDouble End If If Not ObjInventario.AddMovimientoDetalle(CveMovimiento, Dr("Cantidad").ToString.ToDouble, Dr("CveUM").ToString.ToEntero, Dr("CvePS").ToString.ToEntero, ImporteConcepto, Dr("CveAF").ToString.ToEntero, -1, Dr("SerieLote").ToString, Dr("Observaciones").ToString, Lote:=Dr("Lote").ToString, Batch:=Dr("Batch").ToString, CveUsuarioModifico:=UsuarioActual.CveUsuario) Then Mensaje = "Error al guardar los movimientos" ErrorMovInv = True Exit For End If If Not ObjVentas.UpdateVentaUsadoRecibido(CveRemisionRecibida, Dr("CvePS").ToString.ToEntero, True) Then Mensaje = "Error al actualizar el recibo de los usados" ErrorMovInv = True Exit For End If Dim CveConceptoUsados As Integer = If(RBLOpcion.SelectedValue.ToEntero = 2, 1, 2) If RBLOpcion.SelectedValue.ToEntero <> 3 Then If EsDistribuidor Then If Not ObjAcum.DistribuidorMovtosAdd(DdlClientes.SelectedValue.ToEntero, Dr("Cantidad").ToString.ToEntero(), Dr("CveTamaño").ToString.ToEntero, CveConceptoUsados, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, 0, Dr("Observaciones").ToString, CveMovimiento:=CveMovimiento) Then Mensaje = "Error al guardar Movimientos de distribuidor" ErrorMovInv = True Exit For End If End If End If Next If Not ErrorMovInv Then Msg.AppendFormat("
El Movimiento se registro con el Folio: {0}", ObjInventario.Folio) Msg.AppendFormat("

Imprimir Movimiento ", Encripta(String.Format("OP=Alm&CveMovimiento={0}", CveMovimiento))) If IDPoliza > 0 Then Msg = Msg.AppendFormat("

Ver Póliza", IDPoliza) ObjInventario.Commit() ' aplica los movimientos insertados 'Limpia Valores cuando inserta de campos especiales If UsuarioActual.CveEmpresa = 66 Then DdlSubProyecto.SelectedValueExist("-1") End If EnvioCorreo() CargaPendientesRecibir() UPDatos.Update() Else ObjInventario.RollBack() 'deshace lo insertado CveMovimiento = 0 Alert("ocurrió un Error al registrar los movimientos", TipoMensaje.MsgError) End If End If End If Catch ex As Exception ObjInventario.RollBack() 'deshace lo insertado CveMovimiento = 0 Alert("Ocurrió un Error inesperado en el registro" & ex.Message, TipoMensaje.MsgError) RegistraScript("playsonidito('142608__autistic-lucario__error.wav')") End Try ObjInventario.Dispose() ObjAcum.Dispose() ObjVentas.Dispose() If Not ErrorMovInv AndAlso GenerarRNC AndAlso ObjRemisionNC IsNot Nothing Then CargaDTDetalleRNC() Dim Resp = ObjRemisionNC.EmitirFactura(False) For Each mensaje As String In Resp.Mensajes Msg.AppendFormat("
{0}", mensaje) Next Alert(Msg.ToString, If(Resp.CveVenta > 0, TipoMensaje.MsgInformacion, TipoMensaje.MsgAdvertencia)) ElseIf Not ErrorMovInv Then Alert(Msg.ToString, TipoMensaje.MsgInformacion) End If Else Alert("No hay ningun registro para generar el movimiento. Por favor rectifique y vuelva a intentar.", TipoMensaje.MsgError) RegistraScript("playsonidito('142608__autistic-lucario__error.wav')") End If LimpiarMovimiento() CargaGVM(DtMovimientos.FiltraParametros("Estatus <> 'E' ")) End Sub #End Region #Region " ADD INVENTARIO INICIAL " Protected Sub BtnCodigoBarras_Click(sender As Object, e As EventArgs) If TxtCodigoBarras.Text = "" Then Exit Sub End If TdSeriePS.Visible = False Dim DrPS = GlobalDTPS(UsuarioActual.CveEmpresa).FiltroPrimero($"CodigoBarras= '{TxtCodigoBarras.Text}'") If DrPS Is Nothing Then Alert($"No se ha encontrado un producto del Codigo ""{TxtCodigoBarras.Text}"". ", TipoMensaje.MsgAdvertencia, "window.setTimeout(Focus,200);") RegistraScript("playsonidito('142608__autistic-lucario__error.wav')") TxtCodigoBarras.Text = "" Exit Sub End If If DrPS("Inv_CveMetodoInventario").ToString.ToEntero = 5 Then TdSeriePS.Visible = True TxtCodigoSerie.Focus() CvePSSerieLote = DrPS("CvePS").ToString.ToEntero CveUMSerieLote = DrPS("CveUnidadMedida").ToString.ToEntero CostoPromedioSerieLote = DrPS("CostoPromedio").ToString.ToDouble Exit Sub End If GuardaCodigoSerie(TxtCantidadProducto.Text.ToDouble, DrPS("CvePS").ToString.ToEntero, DrPS("CveUnidadMedida").ToString.ToEntero, DrPS("CostoPromedio").ToString.ToDouble) TxtCodigoBarras.Text = "" TxtCodigoBarras.Focus() End Sub Protected Sub BtnSeriePS_Click(sender As Object, e As EventArgs) If TxtCodigoSerie.Text.Trim = "" Then TxtCodigoSerie.Focus() : Exit Sub GuardaCodigoSerie(1, CvePSSerieLote, CveUMSerieLote, CostoPromedioSerieLote, TxtCodigoSerie.Text.Trim) TdSeriePS.Visible = False End Sub Private Sub BtnAddCodigo_Click(sender As Object, e As EventArgs) Handles BtnAddCodigo.Click If TxtCodigo.Text.Trim = "" Then Exit Sub Dim DrP = GlobalDTPS(UsuarioActual.CveEmpresa).FiltroPrimero($"Codigo= '{TxtCodigo.Text.Trim}'") If DrP IsNot Nothing AndAlso DrP("CvePS").ToString.ToEntero > 0 Then GuardaCodigoSerie(TxtCantidadProducto.Text.ToDouble, DrP("CvePS").ToString.ToEntero, DrP("CveUnidadMedida").ToString.ToEntero, DrP("CostoPromedio").ToString.ToDouble) Else Alert("No se encontró el producto. Favor de verificar y volver a intentar.", TipoMensaje.MsgError, "window.setTimeout(Focus2,200);") End If End Sub Private Sub GuardaCodigoSerie(Cantidad As Double, CvePS As Integer, CveUM As Integer, CostoPromedio As Double, Optional SerieLote As String = "-1") Dim ObjInv As New ClsInventarios If CveMovimiento <= 0 Then CveMovimiento = ObjInv.AddMovimiento(DdlAlmacen.SelectedValue.ToEntero, CveConcepto, 1, TxtFecha.Text.ToDate, TxtFolio.Text.ToEntero, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, -1, -1, -1) End If ObjInv.AddMovimientoDetalle(CveMovimiento, Cantidad, CveUM, CvePS, CostoPromedio, -1, SerieLote:=SerieLote) ObjInv.GetMovimientosDetalle(CveMovimiento, UsuarioActual.CveEmpresa) DtMovimientos = ObjInv.DtResultados.FiltraParametros("", "CveMovimientoDetalle DESC").AsEnumerable.Take(25).CopyToDataTable ObjInv.Dispose() CargaGVM(DtMovimientos) TxtCodigoBarras.Text = "" TxtCodigo.Text = "" TxtCodigoSerie.Text = "" TxtCantidadProducto.Text = "1" txtCantidad.Text = "" TxtCodigoBarras.Focus() RegistraScript("beep-07.wav')") End Sub #End Region #Region " DdlConcepto, DdlClasificacion, DdlAlmacen | Index CHANGED " Protected Sub DdlAlmacen_SelectedIndexChanged(sender As Object, e As EventArgs) If EsConsumoInterno Then Exit Sub End If Dim filtro As String = "" Dim CveTipoAlmacen = GlobalDTAlmacenUsuarios(UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1).FiltroPrimeroValor("CveTipoAlmacen", $"CveAlmacen = {DdlAlmacen.SelectedValue}").ToEntero filtro = If(UsuarioActual.TienePermisoProceso(144), "CveConcepto NOT IN (1,4,5,8,9,10,12,26,27,29)", "CveConcepto NOT IN (1,2,4,5,8,9,10,12,26,27,29)") If DdlAlmacen.SelectedValue = "-1" Then filtro = IIf(UsuarioActual.CveEmpresa.Contiene(72, 1, 80), "CveConcepto NOT IN (4,5,10)", filtro).ToString Else filtro = String.Format("{0} AND CveTipoAlmacen = {1}", IIf(UsuarioActual.CveEmpresa.Contiene(72, 1, 80, 4, 7, 11, 12), "CveConcepto NOT IN (4,5,10)", filtro).ToString, CveTipoAlmacen) End If End Sub Private Sub VisualizaPU(Opcion As Boolean) txtPrecio.Visible = Opcion End Sub Private Sub VisualizaPUExtranjero(Opcion As Boolean) End Sub Private Sub VisualizaAF(Opcion As Boolean) End Sub Private Sub SiguienteFolio() Dim Inv As New ClsInventarios Dim Folio As Integer = Inv.GetFolioSiguiente(CveConcepto, UsuarioActual.CveEmpresa) Inv.Dispose() TxtFolio.Text = Folio.ToString FolioAsignado = Folio End Sub Protected Sub DdlProducto2_SelectedIndexChanged(sender As Object, e As EventArgs) CambiarProducto() End Sub Private Sub CambiarProducto() EscondeColumnasGVM(DtMovimientos.FiltraParametros("Estatus <> 'E' ")) DdlUnidad.Items.Clear() DdlUnidad.DataSource = GlobalDTProductosServiciosEquivalencias(DdlProducto2.SelectedValue.ToEntero, -1) DdlUnidad.DataBind() HdnCveTamaño.Value = GlobalDTPSSimplificado(UsuarioActual.CveEmpresa).FiltroPrimeroValor("CveTamaño", $"CvePS = { DdlProducto2.SelectedValue.ToEntero }") Dim ObjAcum As New ClsAcumuladores If ObjAcum.TamañoGet(-1, UsuarioActual.CveEmpresa) Then HdnCveTamaño.Value = ObjAcum.DtResultados.FiltroPrimeroValor("CveTamaño", $"CvePSCargo = { DdlProducto2.SelectedValue }") End If ObjAcum.Dispose() UPDatos.Update() End Sub #End Region #Region " GVM " Private Sub CargaGVM(DtTemp As DataTable) GvM.DataSource = DtTemp GvM.DataBind() EscondeColumnasGVM(DtTemp) End Sub Private Sub EscondeColumnasGVM(DtTemp As DataTable) 'Dim TienePermisoImportes = UsuarioActual.TienePermisoProceso(201) If DtTemp IsNot Nothing AndAlso DtTemp.Rows.Count > 0 Then If DtTemp.MAX("SerieLote").ToString <> "" Then End If If DtTemp.MAX("Lote").ToString <> "" Then GvM.Columns(11).Visible = True End If If DtTemp.SUM("PUExtranjero") > 0 Then End If If DtTemp.SUM("CostoIndirecto") > 0 Then End If Dim Total = DtTemp.SUM("Total") TxtTotal.Text = Total.FormatoNumero(2) End If End Sub Protected Sub GvM_RowDataBound(sender As Object, e As GridViewRowEventArgs) End Sub Protected Sub GvM_RowEditing(sender As Object, e As GridViewEditEventArgs) Handles GvM.RowEditing GvM.EditIndex = e.NewEditIndex CargaGVM(DtMovimientos.FiltraParametros("Estatus <> 'E' ")) End Sub Protected Sub GvM_RowCancelingEdit(sender As Object, e As GridViewCancelEditEventArgs) Handles GvM.RowCancelingEdit GvM.EditIndex = -1 CargaGVM(DtMovimientos.FiltraParametros("Estatus <> 'E' ")) End Sub Protected Sub GvM_RowUpdating(sender As Object, e As GridViewUpdateEventArgs) Handles GvM.RowUpdating Dim Precio As Double = GvM.Rows(e.RowIndex).FCTextBox("TxtPrecio").Text.ToDouble Dim No As Integer = GvM.Rows(e.RowIndex).DataKey("No").ToEntero Dim serielote As String = GvM.Rows(e.RowIndex).FCTextBox("TxtSerieLote").Text.Replace(" ", String.Empty) Dim Observaciones As String = GvM.Rows(e.RowIndex).FCTextBox("TxtObservaciones").Text Dim CveSeccionAlmacen As Integer = GvM.Rows(e.RowIndex).FCDropDownList("DdlSeccionAlmacen").SelectedValue.ToEntero Dim SeccionAlmacen As String = GvM.Rows(e.RowIndex).FCDropDownList("DdlSeccionAlmacen").SelectedItem.Text Dim Drs As DataRow() = DtMovimientos.Select(String.Format("No = {0}", No)) If Drs.Count > 0 Then Drs(0)("PU") = Precio Drs(0)("Total") = Drs(0)("Cantidad").ToString.ToDouble * Precio Drs(0)("Estatus") = "U" Drs(0)("SerieLote") = serielote Drs(0)("Observaciones") = Observaciones Drs(0)("CveSeccionAlmacen") = CveSeccionAlmacen Drs(0)("SeccionAlmacen") = SeccionAlmacen End If DtMovimientos.AcceptChanges() GvM.EditIndex = -1 CargaGVM(DtMovimientos.FiltraParametros("Estatus <> 'E' ")) End Sub Protected Sub DeleteRow(ByVal sender As Object, ByVal e As EventArgs) Dim lnkRemove As LinkButton = DirectCast(sender, LinkButton) If DtMovimientos.Rows.Count > 0 And lnkRemove.CommandArgument.ToString.Length > 0 Then Dim i As Integer i = lnkRemove.CommandArgument.ToString.ToEntero Dim Drs As DataRow() = DtMovimientos.Select(String.Format("No = {0}", i)) If Drs.Count > 0 Then If CveMovimiento > 0 AndAlso Drs(0)("CveMovimientoDetalle").ToString.ToEntero > 0 Then Drs(0)("Estatus") = "E" Else Drs(0).Delete() End If End If DtMovimientos.AcceptChanges() End If GvM.EditIndex = -1 CargaGVM(DtMovimientos.FiltraParametros("Estatus <> 'E' ")) 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 DtMovimientos.Rows Dr("PU") = Dr("PUExtranjero") Dr("Total") = Dr("PU").ToString.ToDouble * Dr("Cantidad").ToString.ToDouble Next CargaGVM(DtMovimientos.FiltraParametros("Estatus <> 'E' ")) 'LtTotal.Text = DtMovimientos.SUM("Total", "").ToString.FormatoNumero UPDatos.Update() Case 2 TrTC1.Visible = True TrTC2.Visible = True End Select End Sub Protected Sub BtnAplicarTC_Click(sender As Object, e As EventArgs) For Each Dr As DataRow In DtMovimientos.Rows Dr("PU") = Dr("PUExtranjero").ToString.ToDouble * TxtTipoCambio.Text.ToDouble Dr("Total") = Dr("PU").ToString.ToDouble * Dr("Cantidad").ToString.ToDouble Next CargaGVM(DtMovimientos.FiltraParametros("Estatus <> 'E' ")) 'LtTotal.Text = DtMovimientos.SUM("Total", "").ToString.FormatoNumero UPDatos.Update() End Sub #End Region #Region " BITACORA " Private Sub InicializaBitacoraTemporal() DivBitacora.Visible = True If CveMovimiento > 0 Then CargaEventoBitacora() Else 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 If End Sub Private Sub CargaEventoBitacora() Dim ObjEventoBitacora As New ClsOIEventos() If ObjEventoBitacora.GetAgendaBitacora(UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveMovimientoAlmacen:=CveMovimiento) Then GvBitacora.DataSource = ObjEventoBitacora.DtResultados.FiltraParametros("CveTipoEvento IN (6,2)") Else GvBitacora.DataSource = Nothing End If ObjEventoBitacora.Dispose() GvBitacora.DataBind() UPEventoBitacora.Update() End Sub Protected Sub BtnGuardarEventoBitacora_Click(sender As Object, e As EventArgs) Handles BtnGuardarEventoBitacora.Click If CveMovimiento > 0 Then GuardaBitacora() Else AgregaBitacoraTemporal() End If End Sub #Region " GUARDA TEMPORAL " 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() 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 " GUARDA DIRECTO " Private Sub GuardaBitacora() Dim ObjEventoBitacora As New ClsOIEventos Dim FileExtension As String = "" Dim Filesgral As List(Of Archivo) = Anexo.getfiles().Archivos Dim Filename As String = "" 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 descripcion As String = TxtEventoDescripcion.Text.Trim If ObjEventoBitacora.AddEventoBitacora(descripcion, String.Format("{0}", FileExtension), UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveMovimientoAlmacen:=CveMovimiento) Then If Filename <> "" Then Filename.FilesMove(String.Format("OI{0}", ObjEventoBitacora.CveEvento.ToString), String.Format("Empresas\{0}\OI", UsuarioActual.CveEmpresa)) End If GvBitacora.DataSource = ObjEventoBitacora.DtResultados TxtEventoDescripcion.Text = "" Anexo.Text = "[]" Alert("La bitácora/observación se guardó correctamente", TipoMensaje.MsgInformacion) RegistraScript("$('#ModalBitacora').modal('hide')", "hidemodal") End If ObjEventoBitacora.Dispose() GvBitacora.DataBind() UPEventoBitacora.Update() CargaEventoBitacora() UPAddEventoBitacora.Update() End Sub #End Region 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 CveMovimiento > 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 Else e.Row.Cells(4).Text = "NO" End If End If End Sub Protected Sub DownloadFile(ByVal sender As Object, ByVal e As EventArgs) Dim filePath As String = String.Format("{0}{1}", UsuarioActual.Empresa.Ruta, CType(sender, LinkButton).CommandArgument) If IO.File.Exists(filePath) Then Dim Archivo As New System.IO.FileInfo(filePath) HttpContext.Current.Response.Clear() HttpContext.Current.Response.ClearContent() HttpContext.Current.Response.ContentType = "application/octet-stream" HttpContext.Current.Response.AppendHeader("Content-disposition", "attachment; filename=" + Path.GetFileName(filePath)) HttpContext.Current.Response.AddHeader("Content-Length", Archivo.Length.ToString()) HttpContext.Current.Response.TransmitFile(filePath) HttpContext.Current.Response.Flush() HttpContext.Current.Response.End() Archivo = Nothing Else UPEventoBitacora.Update() End If End Sub #End Region #Region " CONSUMO INTERNO " 'Private Sub ActivaConsumoInterno() ' EsConsumoInterno = True ' DdlAlmacen.AutoPostBack = False ' DivFolio1.Visible = False ' DivFolio2.Visible = False ' divMonedaSeccion.Visible = False ' divGuia.Visible = False ' TrResponsable.Visible = False ' CargaPersonal() ' 'RECARGA ALMACENES SOLO DE CONSUMO INTERNO ' DdlAlmacen.Items.Clear() ' DdlAlmacen.DataSource = GlobalDTAlmacenUsuarios(UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, 22) 'GlobalDTAlmacen(UsuarioActual.CveEmpresa) ' DdlAlmacen.Items.Insert(0, New ListItem("Seleccione", "-1")) ' DdlAlmacen.SelectedValue = "-1" ' DdlAlmacen.DataBind() ' If IsNothing(Request("CveMovimiento")) Then ' DdlAlmacen.SelectedValueExist(UsuarioActual.CveAlmacen) ' End If 'End Sub #End Region #Region "PAQUETERIA GUIA" 'Protected Sub LnkAgregarGuia_Click(sender As Object, e As EventArgs) ' RegistraScript(String.Format("AbrirVentana('/General/PopUpPaqueteriasGuias.aspx?CveMovimiento={0}',800,620);", CveMovimiento)) 'End Sub #End Region #Region "DDL CLIENTE / CLIENTE SUCURSAL - SELECTED INDEX CHANGED" Private Sub InicializaClientes() DdlClientes.DataSource = GlobalDTCliente(UsuarioActual.CveEmpresa) '.FiltraParametros("EsDistribuidor = 1") DdlClientes.DataBind() DdlClientes.Items.Insert(0, New ListItem("Seleccione", "-1")) DdlClientes.SelectedValue = "-1" End Sub 'Protected Sub ActivaClientes() ' If UsuarioActual.CveEmpresa.Contiene(72, 80) Then ' DivCliente.Visible = True ' DivDepartamentoEntrega.Visible = True ' 'TxtDepartamentoEntrega.Text = "" ' End If 'End Sub Protected Sub DdlClientes_SelectedIndexChanged(sender As Object, e As EventArgs) CambiaCliente() End Sub Private Sub CambiaCliente() DivClienteSucursal.Visible = False DdlClientesSucursales.Items.Clear() Me.EsDistribuidor = CBool(GlobalDTCliente(UsuarioActual.CveEmpresa).FiltroPrimeroValor("EsDistribuidor", $"CveCliente = {DdlClientes.SelectedValue.ToEntero()}")) CargaSucursalesCliente() CargaFacturasCliente() UpGenerales.Update() End Sub Private Sub CargaFacturasCliente() DivFactura.Visible = True Dim CveCliente As Integer = DdlClientes.SelectedValue.ToEntero() If CveCliente > 0 Then Dim ObjVentas As New ClsVentas If ObjVentas.GetVentas(UsuarioActual.CveEmpresa, "Ing", "-1", -1, "-1", CveCliente, -1, -1, -1, "-1", "-1", "-1", CveUsuarioConsulta:=UsuarioActual.CveUsuario) Then DdlFactura.DataSource = ObjVentas.DtResultados.FiltraParametros("", "", {"CveVenta", "SerieFolio"}) End If ObjVentas.Dispose() DdlFactura.DataBind() DdlFactura.Items.Insert(0, New ListItem("Seleccione", "-1")) End If End Sub Protected Sub CargaSucursalesCliente() DdlClientesSucursales.Enabled = True Dim ObjCliente As New ClsClientes If ObjCliente.GetSucursales(DdlClientes.SelectedValue.ToEntero) Then If ObjCliente.DtResultados.Rows.Count > 0 Then DivClienteSucursal.Visible = True UpGenerales.Update() DdlClientesSucursales.DataSource = ObjCliente.DtResultados DdlClientesSucursales.DataBind() DdlClientesSucursales.Items.Insert(0, New ListItem("Seleccione", "-1")) DdlClientesSucursales.SelectedValue = "-1" UpGenerales.Update() End If End If If DdlClientes.SelectedValue.ToEntero > 0 AndAlso GlobalDTCliente(UsuarioActual.CveEmpresa).FiltraParametros($"CveCliente = {DdlClientes.SelectedValue}").Rows.Count > 0 Then Correo = GlobalDTCliente(UsuarioActual.CveEmpresa).FiltraParametros($"CveCliente = {DdlClientes.SelectedValue}").Rows(0)("Mail").ToString End If ObjCliente.Dispose() End Sub Private Sub BtnGeneraPrepoliza_Click(sender As Object, e As EventArgs) Handles BtnGeneraPrepoliza.Click ''PREPOLIZA - SE CAMBIO DE LUGAR EL USO DE ESTA PARTE Dim ObjInventario As New ClsInventarios Dim ErrorMovInv As Boolean = False Dim ObjConta As New ClsContabilidad(ObjInventario.IniciaTransacSQL()) Dim DtCostos As DataTable = Nothing Dim ValorInventario As Decimal = 0 Dim ValorInventarioME As Decimal = 0 ObjInventario.GetMovimientos(CveMovimiento, -1, -1, UsuarioActual.CveEmpresa) Dim CveVenta As Integer = ObjInventario.CveVenta 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 DTOCs As DataTable = DtCostos.FiltraParametros("", "", {"CveOrdenCompraDetalle"}) Dim IdCtaContable As Integer = 0 If tmpCostos.Rows.Count > 0 Then Dim Concepto As String = $" {TxtObservaciones.Text}" Dim CvePrePoliza = ObjConta.AddPrePolizas("Inv_EntradaSalida", 74, DtCostos.SUM("Total"), DtCostos.SUM("Total"), 1, TxtFecha.Text.ToDate, $"F: {HplVenta.Text}", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa) If HdnCveOrdenCompra.Value.ToEntero > 0 Then MovAlmacen = False For Each RowOC As DataRow In DTOCs.Rows ValorInventario = DtCostos.SUM("Total", $"CveOrdenCompraDetalle = {RowOC("CveOrdenCompraDetalle")}").ToString.ToDecimal ValorInventarioME = DtCostos.SUM("TotalExtranjero", $"CveOrdenCompraDetalle = {RowOC("CveOrdenCompraDetalle")}").ToString.ToDecimal If ValorInventarioME > 0 Then If ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, ValorInventarioME, Concepto, 228, Concepto, TxtFecha.Text.ToDate, IdCtaContable, -1, CveVenta:=CveVenta, CveMovimientoAlmacen:=CveMovimiento, ImporteMX:=ValorInventarioME, ImporteME:=ValorInventarioME, CveOC:=HdnCveOrdenCompra.Value.ToEntero, CveOCDetalle:=RowOC("CveOrdenCompraDetalle").ToString.ToEntero, TipoCambio:=LbTipoCambio.Text.ToDecimal) Then ValorInventario = ValorInventario - ValorInventarioME If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, ValorInventario, Concepto, 229, Concepto, TxtFecha.Text.ToDate, IdCtaContable, -1, CveVenta:=CveVenta, CveMovimientoAlmacen:=CveMovimiento, ImporteMX:=ValorInventario, ImporteME:=ValorInventarioME, CveOC:=HdnCveOrdenCompra.Value.ToEntero, CveOCDetalle:=RowOC("CveOrdenCompraDetalle").ToString.ToEntero, TipoCambio:=LbTipoCambio.Text.ToDecimal) Then ErrorMovInv = True Exit For End If Else ErrorMovInv = True Exit For End If Else If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, ValorInventario, Concepto, 176, Concepto, TxtFecha.Text.ToDate, IdCtaContable, -1, CveVenta:=CveVenta, CveMovimientoAlmacen:=CveMovimiento, ImporteMX:=ValorInventario, CveOC:=HdnCveOrdenCompra.Value.ToEntero, CveOCDetalle:=RowOC("CveOrdenCompraDetalle").ToString.ToEntero) Then ErrorMovInv = True Exit For End If End If Next Else For Each RowInv As DataRow In tmpCostos.Rows ValorInventario = DtCostos.SUM("Total", $"CveClasificacion = {RowInv("CveClasificacion")}").ToString.ToDecimal IdCtaContable = GlobalDTClasificaciones(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCuentaGasto", $"CveClasificacion = {RowInv("CveClasificacion")}").ToEntero If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, Not MovAlmacen, ValorInventario, Concepto, 69, Concepto, TxtFecha.Text.ToDate, IdCtaContable, -1, CveVenta:=CveVenta, CveClasificacion:=RowInv("CveClasificacion").ToString.ToEntero, CveMovimientoAlmacen:=CveMovimiento, ImporteMX:=ValorInventario) Then ErrorMovInv = True Exit For End If Next End If IdCtaContable = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCtaContable", $"CveAlmacen={DdlAlmacen.SelectedValue.ToEntero}").ToEntero If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, MovAlmacen, DtCostos.SUMD("Total"), Concepto, 68, Concepto, TxtFecha.Text.ToDate, IdCtaContable, -1, CveVenta:=CveVenta, CveMovimientoAlmacen:=CveMovimiento, ImporteMX:=DtCostos.SUMD("Total")) Then ErrorMovInv = True End If End If End If If ErrorMovInv = False Then ObjInventario.Commit() End If ObjInventario.Dispose() ObjConta.Dispose() End Sub #End Region Private Sub GuardarBitacora(CveVenta As Integer, RutaAdjunto As String, Obser As String) Dim ObjEventos As New ClsOIEventos() Try If ObjEventos.AddEventoBitacora(Obser, "", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveVenta:=CveVenta) Then End If Catch ex As Exception OnError("Se presento un error al guardar la Bitacora", ex) End Try ObjEventos.Dispose() End Sub Protected Sub LnkAgregarUsado_Click(sender As Object, e As EventArgs) AgregarUsado = True ResetModalUsados() RegistraScript("$('#DivModalAgregar').modal()", "showmodal") LnkModalAgregarUsado.Text = "Agregar" UpModalAgregar.Update() End Sub Protected Sub LnkModalAgregarUsado_Click(sender As Object, e As EventArgs) AgregarPS() End Sub Protected Sub LnkActuallizarUsado_Click(sender As Object, e As EventArgs) ResetModalUsados() AgregarUsado = False LnkModalAgregarUsado.Text = "Actualizar" Dim GvRow As GridViewRow = DirectCast(DirectCast(sender, LinkButton).NamingContainer, GridViewRow) Dim CveTamaño As Integer = DtMovimientos.Rows(GvRow.RowIndex)("CveTamaño").ToString.ToEntero IndexDTUsado = GvRow.RowIndex txtCantidad.Text = DtMovimientos.Rows(GvRow.RowIndex)("Cantidad").ToString 'DdlClasificacion.SelectedValueExist(DtMovimientos.Rows(GvRow.RowIndex)("CveClasificacion").ToString) DdlProducto2.SelectedValueExist(DtMovimientos.Rows(GvRow.RowIndex)("CvePS").ToString) CambiarProducto() 'LblMoldalTamanio.Text = DtMovimientos.Rows(GvRow.RowIndex)("Tamaño").ToString DdlUnidad.SelectedValueExist(DtMovimientos.Rows(GvRow.RowIndex)("UnidadMedida").ToString) txtPrecio.Text = DtMovimientos.Rows(GvRow.RowIndex)("PU").ToString TxtObservacionesdetalle.Text = DtMovimientos.Rows(GvRow.RowIndex)("Observaciones").ToString RegistraScript("$('#DivModalAgregar').modal()", "showmodal") UpModalAgregar.Update() End Sub Private Sub ResetModalUsados() txtCantidad.Text = "" ' DdlClasificacion.SelectedIndex = 0 DdlProducto2.SelectedIndex = 0 ' LblMoldalTamanio.Text = "" Try DdlUnidad.SelectedIndex = 0 Catch ex As Exception End Try DdlUnidad.Items.Clear() txtPrecio.Text = "" TxtObservacionesdetalle.Text = "" UpModalAgregar.Update() End Sub Private Sub RBLOpcion_SelectedIndexChanged(sender As Object, e As EventArgs) Handles RBLOpcion.SelectedIndexChanged If RBLOpcion.SelectedValue.ToEntero = 3 Then DivCliente.Visible = False Else DivCliente.Visible = True End If SiguienteFolio() UpGenerales.Update() End Sub Protected Sub BtnConsultarPendientes_Click(sender As Object, e As EventArgs) CargaPendientesRecibir() End Sub Private Sub CargaPendientesRecibir() Dim ObjVentas As New ClsVentas If ObjVentas.GetVentasUsados(-1, DdlSubProyectos.SelectedValue.ToEntero(), TxtFechaPendientes.Text.ToDateTime(), UsuarioActual.CveEmpresa) Then GVPendientes.DataSource = ObjVentas.DtResultados End If ObjVentas.Dispose() GVPendientes.DataBind() UpGenerales.Update() End Sub Protected Sub BtnRecibir_Click(sender As Object, e As EventArgs) DtMovimientos.Rows.Clear() Me.CveRemisionRecibida = -1 Me.CveRemisionRecibida = CType(CType(sender, LinkButton).NamingContainer, GridViewRow).DataKey("CveVenta").ToEntero() Dim DtUsados As DataTable = Nothing Dim CveCliente As Integer = -1 Dim ObjVentas As New ClsVentas If ObjVentas.GetVenta(CveRemisionRecibida, UsuarioActual.CveEmpresa) AndAlso ObjVentas.DtResultados.Rows.Count > 0 Then EsDistribuidor = CBool(ObjVentas.DtResultados.Rows(0)("EsDistribuidor").ToString()) CveCliente = ObjVentas.DtResultados.Rows(0)("CveCliente").ToString().ToEntero() End If If EsDistribuidor Then DivCliente.Visible = True DdlClientes.SelectedValueExist(CveCliente) DdlClientes_SelectedIndexChanged(DdlClientes, EventArgs.Empty) DdlFactura.SelectedValueExist(CveRemisionRecibida) Else DivCliente.Visible = False DivFactura.Visible = False End If If ObjVentas.GetVentasUsadosDetalle(CveRemisionRecibida) Then DtUsados = ObjVentas.DtResultados.Copy() End If ObjVentas.Dispose() If DtUsados IsNot Nothing Then For Each RowUsado As DataRow In DtUsados.Rows Dim CvePS = RowUsado("CvePS").ToString().ToEntero() Dim RowPS = GlobalDTPS(UsuarioActual.CveEmpresa, CvePS).Rows(0) '.FiltroPrimeroValor("CveTamaño", $"CvePS = { DdlProducto2.SelectedValue.ToEntero }").ToEntero Dim CveTamaño As Integer = RowPS("CveTamaño").ToString().ToEntero() Dim PS As String = RowPS("PS").ToString() Dim CveUM As Integer = RowPS("CveUnidadMedida").ToString().ToEntero() Dim UM As String = RowPS("UnidadMedida").ToString() Dim Cantidad As Double = RowUsado("Cantidad").ToString().ToEntero() Dim PU As Double = RowUsado("PU").ToString().ToDouble() AddNew(CvePS, PS, CveUM, UM, Cantidad, PU, "", "-1", "-1", "-1", "", "", "", DdlAlmacen.SelectedValue.ToEntero, DdlAlmacen.SelectedItem.Text, "", CveTamaño) Next End If UpGenerales.Update() End Sub Protected Sub DdlFactura_SelectedIndexChanged(sender As Object, e As EventArgs) If Not EsDistribuidor AndAlso Me.CveRemisionRecibida <= 0 Then If ObjRemisionNC IsNot Nothing Then ObjRemisionNC.Dispose() ObjRemisionNC = Nothing End If If ObjFactura IsNot Nothing Then ObjFactura.Dispose() ObjFactura = Nothing End If Dim CveVenta As Integer = DdlFactura.SelectedValue.ToEntero() ObjFactura = New Modelos.Factura(UsuarioActual, CveVenta, UsuarioActual.CveEmpresa, DirectorioServidor:=Server.MapPath("/")) If ObjFactura IsNot Nothing Then CreaRemisionNC(ObjFactura.CveCliente, ObjFactura.CveSubProyecto, ObjFactura.CveMoneda) DivTotal.Visible = True End If End If UPDatos.Update() End Sub Private Sub CreaRemisionNC(CveCliente As Integer, CveSubProyecto As Integer, CveMoneda As Integer) ObjRemisionNC = New Modelos.Factura(UsuarioActual) Dim Folio As String = "" Dim Serie As String = "" Dim ObjFolios As New ClsGralFolios() If ObjFolios.GetFolios("RNC", UsuarioActual.CveEmpresa) Then Dim DT As DataTable = ObjFolios.DtResultados.FiltraParametros(String.Format(" Estado = 'Activo' AND CveSubProyecto = {0}", CveSubProyecto)) If DT.Rows.Count > 0 Then Serie = DT.Rows(0)("Serie").ToString() Folio = DT.Rows(0)("FActual").ToString() End If DT.Dispose() End If ObjFolios.Dispose() ObjRemisionNC.TipoMensajeRespuesta = Modelos.TipoMensajeRespuesta.HTML ObjRemisionNC.Serie = Serie ObjRemisionNC.Folio = Folio.ToEntero() ObjRemisionNC.Version = "3.3" ObjRemisionNC.FolioFiscal = "" ObjRemisionNC.CveUsuario = UsuarioActual.CveUsuario ObjRemisionNC.CveEmpresa = UsuarioActual.CveEmpresa ObjRemisionNC.TipoCambio = 1 ObjRemisionNC.ConvertirPesos = False ObjRemisionNC.CveMoneda = CveMoneda ObjRemisionNC.Moneda = GlobalDTMonedas.FiltroPrimeroValor("Moneda", String.Format("CveMoneda = {0} ", CveMoneda)) ObjRemisionNC.MonedaSAT = GlobalDTMonedas.FiltroPrimeroValor("AbreviaturaSAT", String.Format("CveMoneda = {0} ", CveMoneda)) ObjRemisionNC.TipoDocto = "RNC" ObjRemisionNC.RefDocto = "" ObjRemisionNC.CveMesa = -1 ObjRemisionNC.Fecha = Now ObjRemisionNC.CvePrePoliza = -1 ObjRemisionNC.FechaPago = Now ObjRemisionNC.MotivoDescuento = "" ObjRemisionNC.FechaEjecucion = Now ObjRemisionNC.UsuarioCreo = UsuarioActual.Usuario ObjRemisionNC.CveCondicionEntrega = -1 ObjRemisionNC.CondicionEntrega = "" ObjRemisionNC.NumeroCuenta = "" ObjRemisionNC.CondicionesPago = 0 ObjRemisionNC.FormaPago = 0 ObjRemisionNC.PedidoContrato = "" ObjRemisionNC.NumeroContrato = "" ObjRemisionNC.DescripcionContrato = "" ObjRemisionNC.CveCorte = -1 ObjRemisionNC.TipoDocumento = "Remisión" ObjRemisionNC.Alfa1 = "" ObjRemisionNC.Alfa2 = "" ObjRemisionNC.Alfa3 = "" ObjRemisionNC.CveContrato = -1 ObjRemisionNC.ConvertirPesos = False ObjRemisionNC.CveSubProyecto = CveSubProyecto ObjRemisionNC.CveSubProyectoCobranza = CveSubProyecto ObjRemisionNC.CveSubProyectoEjecucion = CveSubProyecto ObjRemisionNC.SubProyecto = New Modelos.SubProyectoModel(GlobalDTSubProyectos(-1).FiltroPrimero(String.Format("CveSubProyecto = {0}", CveSubProyecto))) ObjRemisionNC.SubProyectoMatriz = New Modelos.SubProyectoModel(GlobalDTSubProyectos(-1, CveSubProyecto:=-1, CveEmpresa:=UsuarioActual.CveEmpresa).FiltroPrimero("TipoSucursal=1")) 'CLIENTE ObjRemisionNC.CveCliente = CveCliente ObjRemisionNC.SetCliente() ObjRemisionNC.CveAlmacen = -1 Dim ObjCliente As New ClsClientes If ObjCliente.GetClientes(CveCliente, "-1", "-1", "-1", "-1", "-1", "-1", -1, UsuarioActual.CveEmpresa, -1, TipoCliente:=-1) Then If ObjCliente.DtResultados.Rows.Count > 0 Then ObjRemisionNC.CveFormaPago33 = ObjCliente.CveFormaPago33 ObjRemisionNC.FormaPago33 = GlobalDTVtaFormaPago.FiltroPrimeroValor("FormaPago", String.Format("CveFormaPago = {0}", ObjCliente.CveFormaPago33)) ObjRemisionNC.FormaPagoSAT33 = GlobalDTVtaFormaPago.FiltroPrimeroValor("ClaveFormaPagoSAT", String.Format("CveFormaPago = {0}", ObjCliente.CveFormaPago33)) ObjRemisionNC.CveMetodoPago33 = ObjCliente.CveMetodoPago33 ObjRemisionNC.MetodoPago33 = GlobalDTVtaMetodoPago.FiltroPrimeroValor("MetodoPago", String.Format("CveMetodoPago = {0}", ObjCliente.CveMetodoPago33)) ObjRemisionNC.ClaveMetodoPagoSAT = GlobalDTVtaMetodoPago.FiltroPrimeroValor("ClaveMetodoPagoSAT", String.Format("CveMetodoPago = {0}", ObjCliente.CveMetodoPago33)) ObjRemisionNC.CveUsoCFDI = ObjCliente.CveUsoCFDI ObjRemisionNC.UsoCFDI = GlobalDTSATUsosCFDI.FiltroPrimeroValor("Descripcion", String.Format("CveUsoCFDI = {0}", ObjCliente.CveUsoCFDI)) ObjRemisionNC.ClaveUsoCFDI = GlobalDTSATUsosCFDI.FiltroPrimeroValor("UsoCFDI", String.Format("CveUsoCFDI = {0}", ObjCliente.CveUsoCFDI)) ObjRemisionNC.CveMetodoPago = ObjCliente.CveMetodoPago If GlobalDTMetodosPago.FiltraParametros(String.Format("CveMetodoPago = {0}", ObjCliente.CveMetodoPago)).Rows.Count > 0 Then ObjRemisionNC.MetodoPago = GlobalDTMetodosPago.FiltraParametros(String.Format("CveMetodoPago = {0}", ObjCliente.CveMetodoPago)).Rows(0)("MetodoPago").ToString Else ObjRemisionNC.CveMetodoPago = 1 ObjRemisionNC.MetodoPago = "Efectivo" End If End If End If If ObjCliente.GetSucursales(CveCliente) Then If ObjCliente.DtResultados.Rows.Count > 0 Then ObjRemisionNC.CveClienteSucursal = If(String.IsNullOrEmpty(ObjCliente.DtResultados.FiltroPrimeroValor("CveClienteSucursal", "Estatus = 'Activo'")), -1, ObjCliente.DtResultados.FiltroPrimeroValor("CveClienteSucursal", "Estatus = 'Activo'").ToEntero()) Else ObjRemisionNC.CveClienteSucursal = -1 End If End If ObjCliente.Dispose() 'DETALLES ObjRemisionNC.DtDetalle = CreaDTDetalleRNC() 'VALIDA PROMOCIONES Y EXISTENCIAS Dim ObjVentas As New ClsVentas If ObjVentas.GetPromocionesPS(-1, Now, CveSubProyecto, ObjRemisionNC.CveCliente, ObjRemisionNC.CveVendedor, UsuarioActual.CveEmpresa) Then ObjRemisionNC.DtPromociones = ObjVentas.DtResultados.Copy() End If ObjVentas.Dispose() ObjRemisionNC.Observaciones = "" ObjRemisionNC.OrdenCompra = "" ObjRemisionNC.PedidoContrato = "" ObjRemisionNC.ObservacionesAlmacen = "" End Sub Private Function AddPSRNC(ByRef TmpDT As DataTable, Cantidad As Decimal, CveUM As Integer, UM As String, CveClasificacion As Integer, Clasificacion As String, CvePS As Integer, PS As String, Obs As String, PU As Decimal, Descuento As Decimal, CveProyecto As Integer, Proyecto As String, CveSubProyecto As Integer, SubProyecto As String, Optional SerieLote As String = "", Optional TiempoEntrega As String = "", Optional EntregaDirecta As Integer = 0, Optional CveContratoDetalle As Integer = 0, Optional CveVentaDetalle As Integer = 0, Optional CveMovimientoDetallePedido As Integer = 0, Optional CveOrdenCompraDetalle As Integer = 0, Optional CveVentaDetalleRemision As Integer = 0, Optional CveVentaDetalleCotizacion As Integer = 0, Optional CuentaPredial As String = "", Optional RegeneraIEPS As Boolean = True, Optional CveVentaDetallePedido2 As Integer = 0, Optional EsCargo As Boolean = False, Optional PorcentajeIVA As Decimal = 0D) As Boolean Dim Retorno As Boolean = False If Not CvePS > 0 Then Alert("Ocurrió un error al cargar la información del producto a agregar. Por favor verifique y vuelva a intentar.", TipoMensaje.MsgAdvertencia) Return False End If If (Obs.Length + PS.Length > 1000) Then Alert(String.Format("El Nombre y observación del producto tiene longitud de {0} caracteres y excede los 1000 caracteres permitidos.", Obs.Length + PS.Length), TipoMensaje.MsgAdvertencia) Return False End If Dim Row As DataRow = Nothing Dim TotalCalculableImpuestos As Decimal = 0 PU = Math.Round(PU, 6) ' el precio unitario puede llevar hasta 6 decimales permitidos Row = TmpDT.NewRow() Row("CveProyecto") = CveProyecto Row("Proyecto") = Proyecto Row("CveSubProyecto") = CveSubProyecto Row("SubProyecto") = SubProyecto Row("SerieLote") = SerieLote Row("TiempoEntrega") = TiempoEntrega Row("Orden") = TmpDT.Rows.Count + 1 Row("Cantidad") = Cantidad Row("CveUM") = CveUM Row("UM") = UM Row("CveClasificacion") = CveClasificacion Row("Clasificacion") = Clasificacion Row("CvePS") = CvePS Row("Obs") = Obs Dim DrPS As DataRow = Nothing DrPS = GlobalDTPS(UsuarioActual.CveEmpresa, CvePS:=CvePS).FiltroPrimero("") ' Estado = -1 If DrPS Is Nothing Then Alert("Ocurrió un error al cargar la información del Producto. Por favor vuelva a intentar.", TipoMensaje.MsgAdvertencia) Return False End If DrPS("IEPSPorcentaje") = 0 'verifica si tiene ventaminima If Cantidad > 0 AndAlso DrPS("VentaMinima").ToString.ToDecimal > 0 Then 'verifico que la cantidad sea multiplo de venta minima, es decir ventaminima =5, solo puede vender 5,10,15... If Cantidad Mod DrPS("VentaMinima").ToString.ToDecimal <> 0 Then Alert(String.Format("El producto se vende solo en cantidades de {0}", DrPS("VentaMinima").ToString)) Return False End If End If TotalCalculableImpuestos = (Cantidad * (PU)) - Descuento Row("PU") = PU Row("Codigo") = DrPS("Codigo") Row("NoIdentificacion") = DrPS("Codigo") Row("ClaveSATFraccionArancelaria") = DrPS("ClaveSATFraccionArancelaria") Row("ClaveSATUnidadAduana") = DrPS("ClaveSATUnidadAduana") Row("ClaveSATFraccionArancelariaDescripcion") = DrPS("ClaveSATFraccionArancelariaDescripcion") Row("ClaveSATUnidadAduanaDescripcion") = DrPS("ClaveSATUnidadAduanaDescripcion") Row("Consec") = TmpDT.Rows.Count + 1 Row("PS") = DrPS("PS") Row("CodigoPS") = DrPS("PSCodigo").ToString Row("CveTipoPS") = DrPS("CveTipoPS") Row("CveTipoInvPS") = DrPS("Inv_CveMetodoInventario") Row("CveTamaño") = DrPS("CveTamaño") If CveClasificacion <= 0 Then Row("CveClasificacion") = DrPS("CveClasificacion") If Clasificacion = "" Then Row("Clasificacion") = DrPS("Clasificacion") Row("PorcentajeIVA") = PorcentajeIVA Row("IVA") = Row("PorcentajeIVA") Row("ImporteIVA") = Math.Round(Row("PorcentajeIVA").ToString.ToDecimal * TotalCalculableImpuestos, 2) Row("ImporteRetIVA") = 0 Row("ImporteRetISR") = 0 Row("PorcentajeRetIVA") = 0 Row("PorcentajeRetISR") = 0 Row("PorcentajeIEPS") = DrPS("IEPSPorcentaje") Row("ImporteIEPS") = Math.Round(DrPS("IEPSPorcentaje").ToString.ToDecimal * TotalCalculableImpuestos, 2) Row("IEPS") = Row("ImporteIEPS") Row("Descuento") = Math.Round(Descuento, 2) Row("TipoDescuento") = 0 Row("Total") = (Cantidad * PU) Row("TotalImporte") = Math.Round(Cantidad * PU, 2) 'Row("AsientoContableVentas") = DrPS("AsientoContableVentas") ' Row("IdCtaContVentas") = IdCtaContable ' Row("AplicaParaConcepto") = AplicaParaConcepto Row("SATClaveProdServ") = DrPS("SATClavePS") Row("SATClaveUM") = DrPS("SATClaveUnidadMedida") Row("EntregaDirecta") = EntregaDirecta 'Contratos Row("CveContratoDetalle") = CveContratoDetalle Row("CveVentaDetalle") = CveVentaDetalle Row("CveMovimientoDetallePedido") = CveVentaDetalle Row("CveOrdenCompraDetalle") = CveOrdenCompraDetalle Row("CveVentaDetalleRemision") = CveVentaDetalleRemision Row("CveVentaDetalleCotizacion") = CveVentaDetalleCotizacion Row("CveVentaDetallePedido2") = CveVentaDetallePedido2 Row("CuentaPredial") = CuentaPredial Row("EsCargo") = EsCargo 'RECARGAR GV TmpDT.Rows.Add(Row) TmpDT.AcceptChanges() Retorno = True Return Retorno End Function Protected Function CreaDTDetalleRNC() As DataTable Dim TmpDT = New DataTable TmpDT.Columns.Add("CveVenta", GetType(Integer)) TmpDT.Columns.Add("Consec", GetType(Integer)) TmpDT.Columns.Add("Cantidad", GetType(Decimal)) TmpDT.Columns.Add("Codigo", GetType(String)) TmpDT.Columns.Add("CveUM", GetType(Integer)) TmpDT.Columns.Add("UM", GetType(String)) TmpDT.Columns.Add("SATClaveUM", GetType(String)) TmpDT.Columns.Add("CveClasificacion", GetType(Integer)) TmpDT.Columns.Add("Clasificacion", GetType(String)) TmpDT.Columns.Add("CvePS", GetType(Integer)) TmpDT.Columns.Add("PS", GetType(String)) TmpDT.Columns.Add("CodigoPS", GetType(String)) TmpDT.Columns.Add("SATClaveProdServ", GetType(String)) TmpDT.Columns.Add("NoIdentificacion", GetType(String)) TmpDT.Columns.Add("CveTipoPS", GetType(Integer)) TmpDT.Columns.Add("CveTipoInvPS", GetType(Integer)) TmpDT.Columns.Add("SerieLote", GetType(String)) TmpDT.Columns.Add("CuentaPredial", GetType(String)) TmpDT.Columns.Add("Obs", GetType(String)) TmpDT.Columns.Add("TiempoEntrega", GetType(String)) TmpDT.Columns.Add("PU", GetType(Decimal)) TmpDT.Columns.Add("IVA", GetType(Decimal)) TmpDT.Columns.Add("ImporteIVA", GetType(Decimal)) TmpDT.Columns.Add("PorcentajeIVA", GetType(Decimal)) TmpDT.Columns.Add("ImporteRetIVA", GetType(Decimal)) TmpDT.Columns.Add("ImporteRetISR", GetType(Decimal)) TmpDT.Columns.Add("PorcentajeRetIVA", GetType(Decimal)) TmpDT.Columns.Add("PorcentajeRetISR", GetType(Decimal)) TmpDT.Columns.Add("ImporteIEPS", GetType(Decimal)) TmpDT.Columns.Add("IEPS", GetType(Decimal)) TmpDT.Columns.Add("PorcentajeIEPS", GetType(Decimal)) TmpDT.Columns.Add("Descuento", GetType(Decimal)) TmpDT.Columns.Add("TipoDescuento", GetType(Integer)) TmpDT.Columns.Add("TotalImporte", GetType(Decimal)) TmpDT.Columns.Add("Total", GetType(Decimal)) 'Para uso del módulo contable TmpDT.Columns.Add("AsientoContableVentas", GetType(Integer)) TmpDT.Columns.Add("IdCtaContVentas", GetType(Integer)) TmpDT.Columns.Add("AplicaParaConcepto", GetType(Boolean)) TmpDT.Columns.Add("CveProyecto", GetType(Integer)) TmpDT.Columns.Add("Proyecto", GetType(String)) TmpDT.Columns.Add("CveSubProyecto", GetType(Integer)) TmpDT.Columns.Add("SubProyecto", GetType(String)) TmpDT.Columns.Add("CveVentaDetallePadre", GetType(Integer)) 'TipoDescuento: 1 = Descuento * PU; 2 = Descuento por Total del concepto TmpDT.Columns.Add("CvePresupuestoIngreso", GetType(Integer)) TmpDT.Columns.Add("CveFuenteRecaudacion", GetType(Integer)) 'Contratos TmpDT.Columns.Add("CveContratoDetalle", GetType(Integer)) 'Remisiones a Facturas TmpDT.Columns.Add("CveVentaDetalle", GetType(Integer)) TmpDT.Columns.Add("CveVentaDetalleRemision", GetType(Integer)) TmpDT.Columns.Add("CveVentaDetalleCotizacion", GetType(Integer)) 'Pedido2 a Facturas TmpDT.Columns.Add("CveVentaDetallePedido2", GetType(Integer)) TmpDT.Columns.Add("Origen", GetType(Integer)) 'Ordenes Servicio TmpDT.Columns.Add("CveOS", GetType(Integer)) TmpDT.Columns.Add("CveOSDetalle", GetType(Integer)) TmpDT.Columns.Add("SeFacturara", GetType(Integer)) TmpDT.Columns.Add("Folio", GetType(Integer)) TmpDT.Columns.Add("Estatus", GetType(String)) 'Ordenamiento TmpDT.Columns.Add("Orden", GetType(Integer)) TmpDT.Columns.Add("TipoDocto", GetType(String)) 'OC TmpDT.Columns.Add("CveOrdenCompraDetalle", GetType(Integer)) TmpDT.Columns.Add("EntregaDirecta", GetType(Integer)) TmpDT.Columns.Add("CveMovimientoDetallePedido", GetType(Integer)) TmpDT.Columns.Add("CantidadFacturadaRem", GetType(Decimal)) TmpDT.Columns.Add("CantidadFacturadaCot", GetType(Decimal)) TmpDT.Columns.Add("CantidadFacturadaPed2", GetType(Decimal)) TmpDT.Columns.Add("CantidadInventario", GetType(Decimal)) TmpDT.Columns.Add("ClaveSATFraccionArancelaria", GetType(String)) TmpDT.Columns.Add("ClaveSATUnidadAduana", GetType(String)) TmpDT.Columns.Add("ClaveSATFraccionArancelariaDescripcion", GetType(String)) TmpDT.Columns.Add("ClaveSATUnidadAduanaDescripcion", GetType(String)) TmpDT.Columns.Add("CveTamaño", GetType(Integer)) TmpDT.Columns.Add("EsCargo", GetType(Boolean)) Return TmpDT End Function Protected Sub CargaDTDetalleRNC() For Each Row As GridViewRow In GvM.Rows If Row.RowType = DataControlRowType.DataRow Then Dim CvePS As Integer = Row.DataKey("CvePS").ToEntero() Dim Cantidad As Decimal = Row.DataKey("Cantidad").ToDecimal() Dim PU As Decimal = Row.DataKey("PU").ToDecimal() Dim SubTotal As Decimal = Cantidad * PU Dim CveUnidadMedida As Integer = 0 Dim CveClasificacion As Integer = 0 Dim UnidadMedida As String = "" Dim Clasificacion As String = "" Dim PS As String = "" Dim PorcentajeIVA As Decimal = 0D Dim IVA As Decimal = 0D If CvePS > 0 Then If SubTotal > 0 Then Dim Dr As DataRow = GlobalDTPS(UsuarioActual.CveEmpresa, CvePS).Rows(0) If Dr IsNot Nothing Then CveUnidadMedida = Dr("CveUnidadMedida").ToString.ToEntero CveClasificacion = Dr("CveClasificacion").ToString.ToEntero PS = Dr("PSCodigo").ToString UnidadMedida = Dr("UnidadMedida").ToString Clasificacion = Dr("Clasificacion").ToString End If PorcentajeIVA = 0.16D IVA = SubTotal * PorcentajeIVA End If End If AddPSRNC(ObjRemisionNC.DtDetalle, Cantidad, CveUnidadMedida, UnidadMedida, CveClasificacion, Clasificacion, CvePS, PS, "Inv/RecepcionUsados", SubTotal, 0, -1, "", ObjRemisionNC.CveSubProyecto, ObjRemisionNC.SubProyecto.SubProyecto, PorcentajeIVA:=PorcentajeIVA) End If Next Dim TotalImporte As Decimal = ObjRemisionNC.DtDetalle.SUM("TotalImporte").ToDecimal() Dim ImporteIVA As Decimal = ObjRemisionNC.DtDetalle.SUM("ImporteIVA").ToDecimal() Dim ImporteRetIVA As Decimal = ObjRemisionNC.DtDetalle.SUM("ImporteRetIVA").ToDecimal() Dim ImporteRetISR As Decimal = ObjRemisionNC.DtDetalle.SUM("ImporteRetISR").ToDecimal() Dim ImporteIEPS As Decimal = ObjRemisionNC.DtDetalle.SUM("ImporteIEPS").ToDecimal() Dim Descuento As Decimal = ObjRemisionNC.DtDetalle.SUM("Descuento").ToDecimal() Dim Amortizacion As Decimal = 0 Dim Total As Decimal = (TotalImporte + ImporteIVA + ImporteIEPS) - (ImporteRetIVA + ImporteRetISR + Descuento + Amortizacion) 'DETALLES ObjRemisionNC.SubTotal = TotalImporte ObjRemisionNC.Descuento = Descuento ObjRemisionNC.Amortizacion = Amortizacion ObjRemisionNC.IVA = ImporteIVA ObjRemisionNC.RetIVA = ImporteRetIVA ObjRemisionNC.RetISR = ImporteRetISR ObjRemisionNC.IEPS = ImporteIEPS ObjRemisionNC.Total = Total ObjRemisionNC.TotalOtrosConceptos = 0 End Sub Protected Sub CargaTamaños() Dim objAcum As New ClsAcumuladores If objAcum.TamañoGet(-1, UsuarioActual.Empresa.CveEmpresa) Then DtTamaños = objAcum.DtResultados.Copy() End If objAcum.Dispose() End Sub End Class