This commit is contained in:
2024-09-23 09:40:26 -07:00
17 changed files with 1832 additions and 94 deletions

View File

@@ -4,6 +4,7 @@ Option Explicit On
Imports System.Data
Imports System.Data.SqlClient
Imports CrystalDecisions.[Shared].Json
Imports DocumentFormat.OpenXml.Presentation
Imports Extensiones
Imports Microsoft.Ajax.Utilities
Imports Profact.TimbraCFDI40
@@ -2283,7 +2284,9 @@ Public Class ClsRH
End Try
Return Retorno
End Function
Public Function UpdateSalarios(CvePersonal As Integer, Fecha As String, CveUsuario As Integer, CveEmpresa As Integer, SalarioDiario As Double, SDI As Double, SalarioDiarioSS As Double, SalarioDiarioPago As Double, Optional CalcularSDI As Boolean = False) As Boolean
Public Function UpdateSalarios(CvePersonal As Integer, Fecha As String, CveUsuario As Integer, CveEmpresa As Integer, SalarioDiario As Double, SDI As Double,
SalarioDiarioSS As Double, SalarioDiarioPago As Double, Optional CalcularSDI As Boolean = False, Optional ActualizaSalarioV As Boolean = False,
Optional OrigenU As String = "") As Boolean
Dim Retorno As Boolean = False
SqlDataAdapter("PA_RH_PersonalUpdateSalarios")
With SqlAdapter.SelectCommand.Parameters
@@ -2296,6 +2299,8 @@ Public Class ClsRH
.Add("@SDI", SqlDbType.Money).Value = SDI
.Add("@SalarioDiarioSS", SqlDbType.Money).Value = SalarioDiarioSS
.Add("@CalcularSDI", SqlDbType.Bit).Value = CalcularSDI
.Add("@ActualizaSalarioV", SqlDbType.Bit).Value = ActualizaSalarioV
.Add("@OrigenU", SqlDbType.Bit).Value = OrigenU
End With
Try
SqlAdapter.Fill(Data)

View File

@@ -420,5 +420,24 @@ Public Class ClsTransportes
Return Retorno
End Function
Public Function VIA_FormularioTrip(cveTrip As Int32, cveUsuario As Int32, cveEmpresa As Int32) As Boolean
Dim retorno As Boolean = False
DataAdapter("PA_VIA_FormularioTrip", CommandType.StoredProcedure)
With SqlAdapter.SelectCommand.Parameters
.Add("@CveTrip", SqlDbType.Int).Value = cveTrip
.Add("@CveUsuario", SqlDbType.Int).Value = cveUsuario
.Add("@CveEmpresa", SqlDbType.Int).Value = cveEmpresa
End With
Try
SqlAdapter.Fill(Data)
retorno = True
Catch ex As Exception
OnError("Ocurrió un error al eliminar el importe.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo())
End Try
Return retorno
End Function
#End Region
End Class

View File

@@ -3,6 +3,7 @@ Option Explicit On
Imports System.Data
Imports System.Math
Imports ClosedXML.Excel
Imports DocumentFormat.OpenXml.Drawing.Diagrams
Imports Extensiones
@@ -1549,7 +1550,7 @@ Partial Class General_SaldosIniciales
'P R O V E E D O R E S - F A C T U R A S
ElseIf RblFormato.SelectedValue = "3" Or RblFormato.SelectedValue = "18" Then
ElseIf RblFormato.SelectedValue = "3" Then
#Region "P R O V E E D O R E S - F A C T U R A S"
@@ -1774,14 +1775,314 @@ Partial Class General_SaldosIniciales
End If
ObjCompras.Dispose()
ElseIf RblFormato.SelectedValue = "18" Then
Dim ObjCompras As New ClsCompras
Dim ErrorCompras As Boolean = False
Dim ObjConta As New ClsContabilidad(ObjCompras.IniciaTransacSQL())
Dim CveCompra As Integer
Dim CvePrePoliza As Integer
'Dim Contador As Integer = 0
Dim ExisteCompra As Boolean = False
Dim DtProveedores As New DataTable
Dim NoEncontrados As Integer = 0
Dim Encontrados As Integer = 0
Dim RFC As String = ""
Try
DtProveedores = GlobalDTCompProveedores(UsuarioActual.CveEmpresa)
Dim drr As DataRow = GlobalDTPS(UsuarioActual.CveEmpresa).FiltroPrimero("")
Dim CvePS As Integer = drr("CvePS").ToString().ToEntero()
Dim CveUnidadMedida As Integer = drr("CveUnidadMedida").ToString().ToEntero()
Dim CveClasificacion As Integer = drr("CveClasificacion").ToString().ToEntero()
Dim dtsubp As DataTable = GlobalDTSubProyectos(UsuarioActual.CveEmpresa)
Dim CountRow As Integer = 1
Dim LastSerieFolioTipoDoc As String = String.Empty
Dim EsDetalle As Boolean = False
For Each Row As DataRow In dt.FiltraParametros("RFC <> ''").Rows
Dim Sucursal As String = dtsubp.FiltroPrimeroValor("CveSubProyecto", $"SubProyecto = '{Row("Sucursal").ToString()}'")
RFC = Row("RFC").ToString().Trim
Dim Serie As String = Row("Serie").ToString().Trim
Dim Folio As String = Row("Folio").ToString().Trim
Dim Fecha As Date = Row("Fecha").ToString().ToDate
Dim TipoDocto As String = Row("Tipo Documento").ToString().Trim.ToUpper
Dim CveProveedor As Integer = 0
If UsuarioActual.CveEmpresa = 189 Then
CveProveedor = DtProveedores.FiltroPrimeroValor("CveProveedor", $"RazonSocial = '{RFC}'").ToString().ToEntero()
Else
CveProveedor = DtProveedores.FiltroPrimeroValor("CveProveedor", $"RFC = '{RFC}'").ToString().ToEntero()
End If
GuardaLog(Sucursal + " - " + Row("Sucursal").ToString())
Dim Moneda As String = Row("Moneda").ToString()
Dim TipoCambio As String = If(dt.Columns.Contains("Tipo Cambio"), Row("Tipo Cambio").ToString(), "1")
Dim FechaVencimiento As Date = Row("Fecha Vencimiento").ToString().ToDate
Dim CveMoneda As Integer = 1
Dim CveProveedorSucursal As Integer = If(dt.Columns.Contains("CveProveedorSucursal"), Row("CveProveedorSucursal").ToString(), "0").ToEntero
Dim PorcentajeIVA As Decimal = If(dt.Columns.Contains("PorcentajeIVA"), Row("PorcentajeIVA").ToString(), "0").ToDecimal.RoundSQL
Dim ImpuestosLocales As Decimal = If(dt.Columns.Contains("ImpuestosLocales"), Row("ImpuestosLocales").ToString(), "0").ToDecimal
Dim RetIVAPorcentaje As Decimal = If(dt.Columns.Contains("RetIVAPorcentaje"), Row("RetIVAPorcentaje").ToString(), "0").ToDecimal
Dim RetISRPorcentaje As Decimal = If(dt.Columns.Contains("RetISRPorcentaje"), Row("RetISRPorcentaje").ToString(), "0").ToDecimal
Dim CveSubProyecto As Integer = GlobalDTSubProyectos(UsuarioActual.CveEmpresa).FiltroPrimeroValor("CveSubProyecto", String.Format("SubProyecto='{0}'", If(dt.Columns.Contains("SubProyecto"), Row("SubProyecto").ToString(), ""))).ToEntero
If CveSubProyecto = 0 Then CveSubProyecto = GlobalDTSubProyectos(UsuarioActual.CveEmpresa).FiltroPrimeroValor("CveSubProyecto").ToEntero
If Not CvePS > 0 Then Alert(String.Format("No se encontró el Producto Servicio"), TipoMensaje.MsgError) : ErrorCompras = True
If Not CveUnidadMedida > 0 Then Alert(String.Format("No se encontró la Unidad de Medida."), TipoMensaje.MsgError) : ErrorCompras = True
If UsuarioActual.CveEmpresa = 189 Then
If Not CveProveedor > 0 Then Alert(String.Format("No se encontró el Proveedor con la razon social: {0}", {RFC}), TipoMensaje.MsgError) : ErrorCompras = True : Exit For
Else
If Not CveProveedor > 0 Then Alert(String.Format("No se encontró el Proveedor con el RFC: {0}", {RFC}), TipoMensaje.MsgError) : ErrorCompras = True : Exit For
End If
If Not CveProveedorSucursal > 0 Then CveProveedorSucursal = -1
If LastSerieFolioTipoDoc = $"{Folio}" AndAlso UsuarioActual.CveEmpresa = 189 Then
EsDetalle = True
Else
LastSerieFolioTipoDoc = $"{Folio}"
EsDetalle = False
End If
Dim SubTotal As Decimal = 0
Dim IVA As Decimal = 0
Dim Total As Decimal = 0
Dim Saldo As Decimal = 0
Dim RetIVA As Decimal = 0
Dim RetISR As Decimal = 0
Dim IEPS As Decimal = 0
If UsuarioActual.CveEmpresa = 189 AndAlso Not EsDetalle Then
For Each item As DataRow In dt.FiltraParametros($"RFC <> '' AND Folio = '{Row("Folio").ToString()}'").Rows
SubTotal += item("SubTotal").ToString().ToDecimal.RoundSQL
IVA += item("IVA").ToString().ToDecimal.RoundSQL
Total += item("Total").ToString().ToDecimal.RoundSQL
Saldo += item("Saldo").ToString().ToDecimal.RoundSQL
RetIVA += item("Ret IVA").ToString().ToDecimal.RoundSQL
RetISR += item("Ret ISR").ToString().ToDecimal.RoundSQL
IEPS += If(dt.Columns.Contains("IEPS"), Row("IEPS").ToString(), "0").ToDecimal.RoundSQL
Next
Else
SubTotal = Row("SubTotal").ToString().ToDecimal.RoundSQL
IVA = Row("IVA").ToString().ToDecimal.RoundSQL
Total = Row("Total").ToString().ToDecimal.RoundSQL
Saldo = Row("Saldo").ToString().ToDecimal.RoundSQL
RetIVA = Row("Ret IVA").ToString().ToDecimal.RoundSQL
RetISR = Row("Ret ISR").ToString().ToDecimal.RoundSQL
IEPS = If(dt.Columns.Contains("IEPS"), Row("IEPS").ToString(), "0").ToDecimal.RoundSQL
End If
If PorcentajeIVA > 0 AndAlso IVA = 0 Then PorcentajeIVA = 0
Dim RetIVAConcepto As String = If(dt.Columns.Contains("RetIVAConcepto"), Row("RetIVAConcepto").ToString(), "").ToUpper
Dim RetISRConcepto As String = If(dt.Columns.Contains("RetISRConcepto"), Row("RetISRConcepto").ToString(), "").ToUpper
Dim CveRetIVAConcepto As Integer = If(RetIVAConcepto = "HONORARIOS", 1, If(RetIVAConcepto = "FLETES", 2, If(RetIVAConcepto = "ARRENDAMIENTO", 4, -1)))
Dim CveRetISRConcepto As Integer = If(RetISRConcepto = "HONORARIOS", 1, If(RetISRConcepto = "ARRENDAMIENTO", 2, If(RetISRConcepto = "RESICO", 4, -1)))
TipoDocto = IIf(TipoDocto.Contiene("INGRESOS", "INGRESO", "ING", "FACTURA", "FACTURAS", ""), "Fac", "NC").ToString()
'RMF. falta validación de totales.
'Temporalmente SE BORRARA
Dim Transaccion As String = "" 'Row("Transaccion2").ToString()
Dim Folio2 As String = "" 'Row("Folio2").ToString()
Dim CodProvee As String = "" 'Row("CodProvee2").ToString()
'Moneda
If Moneda.ToUpper.Contiene("PESOS", "PESO", "MXN", "MONEDA NACIONAL") Then
CveMoneda = 1
ElseIf Moneda.ToUpper.Contiene("DOLARES", "DOLAR", "USD", "DÓLARES", "DÓLAR") Then
CveMoneda = 2
End If
'Si no se especifica TC, se manda como pesos.
If TipoCambio = "" Then TipoCambio = "1"
If CveMoneda = 2 AndAlso TipoCambio = "1" Then
TipoCambio = GlobalTipoCambio(Fecha).ToString
End If
Dim IEPSDetalle As Decimal = 0
Dim CantidadDetalle As Decimal = 0
Dim PUDetalle As Decimal = 0
Dim IVADetalle As Decimal = 0
If RblFormato.SelectedValue = "18" Then
Dim CodigoDetalle As String = Row("Codigo").ToString
If CodigoDetalle.Trim.Length > 0 Then
Dim DrDetalles As DataRow = GlobalDTPS(UsuarioActual.CveEmpresa).FiltroPrimero($"Codigo = '{CodigoDetalle}'")
If DrDetalles IsNot Nothing Then
CvePS = DrDetalles("CvePS").ToString().ToEntero()
CveUnidadMedida = DrDetalles("CveUnidadMedida").ToString().ToEntero()
CveClasificacion = DrDetalles("CveClasificacion").ToString().ToEntero()
Else
Alert($"El código del producto no se encontro, error en registro {CountRow}")
ErrorCompras = True
End If
Else
Alert($"El código es requerido, error en registro {CountRow}")
ErrorCompras = True
End If
IEPSDetalle = Row("IEPS").ToString.ToDecimal
CantidadDetalle = Row("Cantidad").ToString.ToDecimal
PUDetalle = Row("PU").ToString.ToDecimal
IVADetalle = Row("IVA").ToString.ToDecimal
If CantidadDetalle = 0 Then
Alert($"No se especifico la cantidad, error en registro {CountRow}")
ErrorCompras = True
End If
End If
'PrePóliza
If Not EsDetalle Then
CvePrePoliza = ObjConta.AddPrePolizas("Compras/SaldoInicial", 1, Total, Total, CveMoneda, Fecha, String.Format("{0}-{1}", Serie, Folio), UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa)
If Not CvePrePoliza > 0 Then
ErrorCompras = True
Exit For
End If
End If
If FechaVencimiento = "".ToDate Or FechaVencimiento < "1900/01/01".ToDate Then
FechaVencimiento = Fecha
End If
If Not EsDetalle Then
If Not ObjCompras.AddCompra(TipoDocto, "", Serie, Folio, Folio2, CveProveedor.ToEntero(), SubTotal + ImpuestosLocales, 0, 0, IVA, RetIVA, RetISR, IEPS, 0, 0, Total, Fecha, CveMoneda, TipoCambio.ToDecimal, FechaVencimiento,
False, CodProvee, 1, CvePrePoliza, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveProveedorSucursal:=CveProveedorSucursal,
NumeroReembolso:=Transaccion, PorcentajeIVA:=PorcentajeIVA, TotalOriginal:=Total, CveSubProyecto:=CveSubProyecto, CveRetIVAConcepto:=CveRetIVAConcepto, CveRetISRConcepto:=CveRetISRConcepto) Then
ErrorCompras = True
Exit For
End If
CveCompra = ObjCompras.CveCompra
SubTotal = Row("SubTotal").ToString().ToDecimal
IVA = Row("IVA").ToString().ToDecimal
Total = Row("Total").ToString().ToDecimal
Saldo = Row("Saldo").ToString().ToDecimal
RetIVA = Row("Ret IVA").ToString().ToDecimal
RetISR = Row("Ret ISR").ToString().ToDecimal
IEPS = Row("IEPS").ToString().ToDecimal
End If
'Compra Detalle
If RblFormato.SelectedValue = "18" Then
Dim TotalDetalles As Decimal = SubTotal
If PUDetalle > 0 Then
TotalDetalles = (CantidadDetalle * PUDetalle) + IVA - RetIVA - RetISR + IEPSDetalle
End If
If Math.Abs(TotalDetalles - Total) > 0.01 Then
ErrorCompras = True
Alert($"Registro {CountRow} El total no councide con el calculo de los detalles, total: {Total.ToString("###,###,###.00")} calculo detatalles: {TotalDetalles.ToString("###,###,###.00")}", TipoMensaje.MsgAdvertencia)
Exit For
End If
If Not ObjCompras.AddCompraDetalle(CveCompra, CveUnidadMedida, CvePS, CveSubProyecto, -1, 0, CantidadDetalle, PUDetalle, (CantidadDetalle * PUDetalle) * PorcentajeIVA, TotalDetalles, 0, "Carga Inicial", -1, IVAPorcentaje:=PorcentajeIVA, RetIVAPorcentaje:=RetIVAPorcentaje, RetISRPorcentaje:=RetISRPorcentaje, IEPSPS:=IEPSDetalle) Then
ErrorCompras = True
Exit For
End If
Else
If Not ObjCompras.AddCompraDetalle(CveCompra, CveUnidadMedida, CvePS, CveSubProyecto, -1, 0, 1, SubTotal, SubTotal * PorcentajeIVA, SubTotal, 0, "Carga Inicial", -1, IVAPorcentaje:=PorcentajeIVA, RetIVAPorcentaje:=RetIVAPorcentaje, RetISRPorcentaje:=RetISRPorcentaje) Then
ErrorCompras = True
Exit For
End If
End If
If ImpuestosLocales > 0 Then 'se agrega como parte de la partida, sin iva.
If Not ObjCompras.AddCompraDetalle(CveCompra, CveUnidadMedida, CvePS, CveSubProyecto, -1, 0, 1, ImpuestosLocales, ImpuestosLocales, ImpuestosLocales, 0, "Carga Inicial", -1, IVAPorcentaje:=0, RetIVAPorcentaje:=0, RetISRPorcentaje:=0) Then
ErrorCompras = True
Exit For
End If
End If
Dim ConceptoContablePago As Integer = 17
If TipoDocto = "NC" Then ConceptoContablePago = 60
If Not EsDetalle Then
SubTotal = 0
IVA = 0
Total = 0
Saldo = 0
RetIVA = 0
RetISR = 0
IEPS = 0
For Each item As DataRow In dt.FiltraParametros($"RFC <> '' AND Folio = '{Row("Folio").ToString()}'").Rows
SubTotal += item("SubTotal").ToString().ToDecimal.RoundSQL
IVA += item("IVA").ToString().ToDecimal.RoundSQL
Total += item("Total").ToString().ToDecimal.RoundSQL
Saldo += item("Saldo").ToString().ToDecimal.RoundSQL
RetIVA += item("Ret IVA").ToString().ToDecimal.RoundSQL
RetISR += item("Ret ISR").ToString().ToDecimal.RoundSQL
IEPS += If(dt.Columns.Contains("IEPS"), Row("IEPS").ToString(), "0").ToDecimal.RoundSQL
Next
'PrePólizaDetalle
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, Total, Total, IIf(TipoDocto = "Fac", 5, 18).ToString().ToEntero(), Folio, String.Format("{0}-{1}", Serie, Folio), CveCompra:=CveCompra, CveProveedor:=CveProveedor, CveSubProyecto:=Sucursal.ToEntero(), Contabilizable:=False) Then ErrorCompras = True : Exit For
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, SubTotal, SubTotal, 6, Folio, String.Format("{0}-{1}", Serie, Folio), CveCompra:=CveCompra, CveProveedor:=CveProveedor, CveClasificacion:=CveClasificacion, CveSubProyecto:=Sucursal.ToEntero(), Contabilizable:=False) Then ErrorCompras = True : Exit For
If IVA > 0 Then
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, IVA, IVA, 14, Folio, String.Format("{0}-{1}", Serie, Folio), CveCompra:=CveCompra, CveProveedor:=CveProveedor, CveSubProyecto:=Sucursal.ToEntero(), CveClasificacion:=CveClasificacion, PorcentajeImpuesto:=PorcentajeIVA, Contabilizable:=False) Then ErrorCompras = True : Exit For
End If
If IEPS > 0 Then If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, IEPS, IEPS, 25, Folio, String.Format("{0}-{1}", Serie, Folio), CveCompra:=CveCompra, CveProveedor:=CveProveedor, CveSubProyecto:=Sucursal.ToEntero(), Contabilizable:=False) Then ErrorCompras = True : Exit For
If RetIVA > 0 Then If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, RetIVA, RetIVA, 15, Folio, String.Format("{0}-{1}", Serie, Folio), CveCompra:=CveCompra, CveProveedor:=CveProveedor, CveSubProyecto:=Sucursal.ToEntero(), Contabilizable:=False) Then ErrorCompras = True : Exit For
If RetISR > 0 Then If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, RetISR, RetISR, 16, Folio, String.Format("{0}-{1}", Serie, Folio), CveCompra:=CveCompra, CveProveedor:=CveProveedor, CveSubProyecto:=Sucursal.ToEntero(), Contabilizable:=False) Then ErrorCompras = True : Exit For
'If ImpuestosLocales > 0 Then If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, ImpuestosLocales, ImpuestosLocales, 27, Folio, String.Format("{0}-{1}", Serie, Folio), CveCompra:=CveCompra, CveProveedor:=CveProveedor, CveSubProyecto:=Sucursal.ToEntero()) Then ErrorCompras = True : Exit For
'Saldo
If Saldo < Total Then
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, Total - Saldo, Total - Saldo, ConceptoContablePago, Folio.ToString(), Folio.ToString(), CveCompra:=CveCompra, CveProveedor:=CveProveedor, Contabilizable:=False) Then ErrorCompras = True : Exit For
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, Total - Saldo, Total - Saldo, 95, Folio.ToString(), Folio.ToString(), CveCompra:=CveCompra, CveProveedor:=CveProveedor, Contabilizable:=False) Then ErrorCompras = True : Exit For
End If
End If
Encontrados = Encontrados + 1
CountRow = CountRow + 1
Next
Catch ex As Exception
OnError("Ocurrió un error al cargar los datos", ex)
ErrorCompras = True
End Try
If Not ErrorCompras Then
'If Encontrados > 0 Then
' Alert(String.Format("Se agregaron: <b>{0}</b> Compras correctamente.<br>Se Omitieron: <b>{1}</b> Compras ya que ya se encuentran registradas.", Encontrados, NumRows - 1 - Encontrados), TipoMensaje.MsgInformacion)
'Else
' Alert(String.Format("Se agregaron: <b>{0}</b> Compras correctamente.", Encontrados), TipoMensaje.MsgInformacion)
'End If
Alert(String.Format("Se agregaron: <b>{0}</b> Compras correctamente.", Encontrados), TipoMensaje.MsgInformacion)
'Alert(String.Format("Se agregaron: <b>{0}</b> Compras correctamente. RFC:{1} ", Encontrados, RFC), TipoMensaje.MsgInformacion)
ObjCompras.Commit()
TxtExcel.Text = ""
UpDatos.Update()
Else
Alert(String.Format("NO Se agregaron: <b>{0}</b> Compras.", NumRows), TipoMensaje.MsgError)
ObjCompras.RollBack()
End If
ObjCompras.Dispose()
#End Region
'C L I E N T E S - F A C T U R A S
ElseIf RblFormato.SelectedValue = "4" Or RblFormato.SelectedValue = "17" Then
ElseIf RblFormato.SelectedValue = "4" Then
#Region "C L I E N T E S - F A C T U R A S"
Dim NoEncontrados As Integer = 0
Dim Encontrados As Integer = 0
Dim StrRFCNoencontrados As New StringBuilder
@@ -2089,11 +2390,397 @@ Partial Class General_SaldosIniciales
End If
ObjVentas.Dispose()
ElseIf RblFormato.SelectedValue = "17" Then
Dim NoEncontrados As Integer = 0
Dim Encontrados As Integer = 0
Dim StrRFCNoencontrados As New StringBuilder
Dim drr As DataRow = GlobalDTPS(UsuarioActual.CveEmpresa).FiltroPrimero("AplicaParaVenta = 1")
If drr Is Nothing Then
Alert("No existen productos para venta. favor de crear uno e intentar de nuevo", TipoMensaje.MsgAdvertencia)
Exit Sub
End If
Dim ObjVentas As New ClsVentas
Dim ObjConta As New ClsContabilidad(ObjVentas.IniciaTransacSQL())
Dim ObjIE As New ClsBancos(ObjVentas.IniciaTransacSQL())
Dim ErrorVentas As Boolean = False
Dim CveVenta As Integer
Dim CvePrePoliza As Integer
Dim DtClientes As New DataTable
'Dim ExisteVenta As Boolean = False
'Dim Contador As Integer = 0
DtClientes = GlobalDTCliente(UsuarioActual.CveEmpresa, Estatus:=-1)
Dim CvePS As Integer = drr("CvePS").ToString().ToEntero()
Dim CveUnidadMedida As Integer = drr("CveUnidadMedida").ToString().ToEntero()
Dim CveClasificacion As Integer = drr("CveClasificacion").ToString().ToEntero()
If Not CvePS > 0 Then Alert(String.Format("No se encontró el Producto Servicio"), TipoMensaje.MsgError) : ErrorVentas = True
' If Not CveSucursal > 0 Then Alert("No se encontró la sucursal.", TipoMensaje.MsgError) : ErrorVentas = True
If Not CveUnidadMedida > 0 Then Alert(String.Format("No se encontró la Unidad de Medida."), TipoMensaje.MsgError) : ErrorVentas = True
Dim dtsubp As DataTable = GlobalDTSubProyectos(UsuarioActual.CveEmpresa)
'For Each drt As DataRow In dt.FiltraParametros("RFC <> ''", DistinctColumns:={"RFC"}).Rows
' Dim RFC As String = drt("RFC").ToString().Trim.Replace("-", "").Replace(" ", "")
' Dim CveCliente As Integer = DtClientes.FiltroPrimeroValor("CveCliente", $"RFC = '{RFC}'").ToString().ToEntero()
' If CveCliente <= 0 Then
' Dim OBJ As New ClsClientes
' OBJ.AgregarClienteNoFrecuente(RFC, RFC, "", "", "", "", "", 26, RFC, "", "", "", -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, "", -1, -1)
' OBJ.Dispose()
' End If
'Next
'GlobalDTCliente(UsuarioActual.CveEmpresa) = Nothing
'DtClientes = GlobalDTCliente(UsuarioActual.CveEmpresa, Estatus:=-1)
Dim CountRow As Integer = 1
Dim LastSerieFolioTipoDoc As String = String.Empty
Dim EsDetalle As Boolean = False
For Each Row As DataRow In dt.FiltraParametros("RFC <> ''").Rows
Dim Sucursal As String = dtsubp.FiltroPrimeroValor("CveSubProyecto", $"SubProyecto = '{Row("Sucursal").ToString()}'")
Dim TipoDocto As String = Row("Tipo Documento").ToString().Trim
Dim RFC As String = Row("RFC").ToString().Trim.Replace("-", "").Replace(" ", "")
Dim Serie As String = Row("Serie").ToString().Trim
Dim Folio As Integer = Row("Folio").ToString().ToEntero()
Dim Fecha As Date = Row("Fecha").ToString().ToDate
Dim FechaVencimiento As Date = Row("Fecha Vencimiento").ToString().ToDate
Dim ImpuestoLocal As Decimal = If(dt.Columns.Contains("ImpuestoLocal"), Row("ImpuestoLocal").ToString().ToDecimal, 0D)
Dim Amortizacion As Decimal = If(dt.Columns.Contains("Amort.Ant"), Row("Amort.Ant").ToString().ToDecimal, 0)
Dim CveCliente As Integer = DtClientes.FiltroPrimeroValor("CveCliente", $"RFC = '{RFC}'").ToString().ToEntero()
If LastSerieFolioTipoDoc = $"{Serie}{Folio}{TipoDocto}" AndAlso UsuarioActual.CveEmpresa = 189 Then
EsDetalle = True
Else
LastSerieFolioTipoDoc = $"{Serie}{Folio}{TipoDocto}"
EsDetalle = False
End If
Dim SubTotal As Decimal = 0
Dim IVA As Decimal = 0
Dim Total As Decimal = 0
Dim Saldo As Decimal = 0
Dim RetIVA As Decimal = 0
Dim RetISR As Decimal = 0
Dim IEPS As Decimal = 0
If UsuarioActual.CveEmpresa = 189 AndAlso Not EsDetalle Then
For Each item As DataRow In dt.FiltraParametros($"RFC <> '' AND Folio = '{Row("Folio").ToString()}' AND Serie = '{Row("Serie").ToString()}' AND [Tipo Documento] = '{Row("Tipo Documento").ToString()}' ").Rows
SubTotal += item("SubTotal").ToString().ToDecimal
IVA += item("IVA").ToString().ToDecimal
Total += item("Total").ToString().ToDecimal
Saldo += item("Saldo").ToString().ToDecimal
RetIVA += item("Ret IVA").ToString().ToDecimal
RetISR += item("Ret ISR").ToString().ToDecimal
IEPS += item("IEPS").ToString().ToDecimal
Next
Else
SubTotal = Row("SubTotal").ToString().ToDecimal
IVA = Row("IVA").ToString().ToDecimal
Total = Row("Total").ToString().ToDecimal
Saldo = Row("Saldo").ToString().ToDecimal
RetIVA = Row("Ret IVA").ToString().ToDecimal
RetISR = Row("Ret ISR").ToString().ToDecimal
IEPS = Row("IEPS").ToString().ToDecimal
End If
Dim Moneda As String = Row("Moneda").ToString()
Dim TipoCambio As String = Row("Tipo Cambio").ToString()
Dim CveMoneda As Integer = 1
Dim Vendedor As String = If(dt.Columns.Contains("Vendedor"), Row("Vendedor").ToString(), "")
Dim CveVendedor As Integer = 0
Dim CveClienteSucursal As Integer = 0 'Row("CveClienteSucursal").ToString().ToEntero()
Dim FolioFiscal As String = If(dt.Columns.Contains("Folio Fiscal"), Row("Folio Fiscal").ToString(), "")
Dim PorcentajeIVA As Decimal = If(dt.Columns.Contains("PorcentajeIVA"), Round(Row("PorcentajeIVA").ToString().ToDecimal, 2), 0)
Dim PorcentajeRetIVA As Decimal = If(dt.Columns.Contains("PorcentajeRetIVA"), Round(Row("PorcentajeRetIVA").ToString().ToDecimal, 4), 0)
Dim PorcentajeRetISR As Decimal = If(dt.Columns.Contains("PorcentajeRetISR"), Round(Row("PorcentajeRetISR").ToString().ToDecimal, 4), 0)
Dim PedidoContrato As String = If(dt.Columns.Contains("Pedido"), Row("Pedido").ToString(), "")
GuardaLog(Sucursal + "-" + Row("Folio").ToString())
'Temporalmente SE BORRARA
Dim Transaccion As String = "" ' Row("Transaccion2").ToString()
Dim Folio2 As String = "" ' Row("Folio2").ToString()
Dim CodCliente As String = "" 'Row("CodCliente2").ToString()
Dim IEPSDetalle As Decimal = 0
Dim CantidadDetalle As Decimal = 0
Dim PUDetalle As Decimal = 0
Dim IVADetalle As Decimal = 0
Dim PorcentajeIEPS As Decimal = 0
If IEPS > 0 Then
PorcentajeIEPS = If(dt.Columns.Contains("PorcentajeIEPS"), Round(Row("PorcentajeIEPS").ToString().ToDecimal, 4), 0)
End If
If RblFormato.SelectedValue = "17" Then
Dim CodigoDetalle As String = Row("Codigo").ToString
If CodigoDetalle.Trim.Length > 0 Then
Dim DrDetalles As DataRow = GlobalDTPS(UsuarioActual.CveEmpresa).FiltroPrimero($"Codigo = '{CodigoDetalle}'")
If DrDetalles IsNot Nothing Then
CvePS = DrDetalles("CvePS").ToString().ToEntero()
CveUnidadMedida = DrDetalles("CveUnidadMedida").ToString().ToEntero()
CveClasificacion = DrDetalles("CveClasificacion").ToString().ToEntero()
Else
Alert($"El código del producto no se encontro, error en registro {CountRow}")
ErrorVentas = True
End If
Else
Alert($"El código es requerido, error en registro {CountRow}")
ErrorVentas = True
End If
IEPSDetalle = Row("IEPS").ToString.ToDecimal
CantidadDetalle = Row("Cantidad").ToString.ToDecimal
PUDetalle = Row("PU").ToString.ToDecimal
IVADetalle = Row("IVA").ToString.ToDecimal
If CantidadDetalle = 0 Then
Alert($"No se especifico la cantidad, error en registro {CountRow}")
ErrorVentas = True
End If
End If
If dt.Columns.Contains("Cliente Sucursal") AndAlso Row("Cliente Sucursal").ToString() <> "" Then
Dim ObjCliente As New ClsClientes
If ObjCliente.GetSucursales(CveCliente) Then
If ObjCliente.DtResultados.Rows.Count > 0 Then
CveClienteSucursal = ObjCliente.DtResultados.FiltroPrimeroValor("CveClienteSucursal", "SucursalCliente = '" & Row("Cliente Sucursal").ToString().Trim & "'").ToEntero
End If
End If
ObjCliente.Dispose()
End If
'If Not CveCliente > 0 Then Alert(String.Format("No se encontró el cliente con el RFC: {0}", {RFC}), TipoMensaje.MsgError) : ErrorVentas = True : RFC.GuardaLog : Exit For
TipoDocto = IIf(TipoDocto.ToUpper.Contiene("INGRESO", "INGRESOS", "ING", "FACTURA", "FACTURAS"), "Ing", IIf(TipoDocto.ToUpper.Contiene("EGRESO", "EGRESOS", "EGS"), "Egs", "Rem")).ToString()
'PrePóliza
If Not EsDetalle Then
CvePrePoliza = ObjConta.AddPrePolizas("Venta/SaldoInicial", 1, Total, Total, 1, Fecha, String.Format("{0}-{1}", Serie, Folio), UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa)
End If
If Vendedor <> "" Then
CveVendedor = GlobalDTVendedores(UsuarioActual.CveEmpresa, VendedorTipo:=-1).FiltroPrimeroValor("CveVendedor", $"Vendedor = '{Vendedor}'").ToString().ToEntero()
If Not CveVendedor > 0 Then CveVendedor = 0
Else
CveVendedor = 0
End If
'Moneda
If Moneda.ToUpper.Contiene("PESOS", "PESO", "MXN") Then
CveMoneda = 1
TipoCambio = "1"
ElseIf Moneda.ToUpper.Contiene("DÓLAR", "DÓLARES", "DOLARES", "USD") Then
CveMoneda = 2
If TipoCambio.Trim.ToDecimal < 10 Then
If UsuarioActual.CveEmpresa.Contiene(13, 83) Then
TipoCambio = GlobalTipoCambio(Fecha.AddDays(-1)).ToString()
Else
TipoCambio = GlobalTipoCambio(Fecha).ToString()
End If
End If
End If
'Si no se especifica TC, se manda como pesos.
If TipoCambio = "" Then TipoCambio = "1"
If Not CveClienteSucursal > 0 Then CveClienteSucursal = -1
If FechaVencimiento = "".ToDate Or FechaVencimiento < "1900/01/01".ToDate Then
FechaVencimiento = Fecha
End If
'Venta
If CveCliente > 0 Then
If TipoDocto.Contiene("Ing", "Egs", "Rem") Then
GuardaLog(Serie & "-" & Folio)
If Not EsDetalle Then
If Not ObjVentas.AddVenta(TipoDocto, Folio, CveCliente.ToEntero(), CveClienteSucursal, SubTotal, 0, Amortizacion, IVA, RetIVA, RetISR, Total, CveMoneda, TipoCambio.ToDouble,
0, 0, 0, FechaVencimiento, Fecha, "", "", Fecha, CveVendedor, Folio2, "", "", 0, 0, 0, "-1".ToDate, "-1".ToDate, "-1".ToDate, -1, 0, CvePrePoliza,
UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, Serie:=Serie, CveSubProyecto:=Sucursal.ToEntero(), CveSubProyectoEjecucion:=Sucursal.ToEntero(),
CveSubProyectoCobranza:=Sucursal.ToEntero(), IEPS:=IEPS, ObservacionesAlmacen:=Transaccion, Entrega:=CodCliente, ImpuestoLocal:=ImpuestoLocal,
PedidoContrato:=PedidoContrato, CveMetodoPago33:=3) Then
ErrorVentas = True
Exit For
End If
CveVenta = ObjVentas.CveVenta
End If
If Not EsDetalle Then
SubTotal = Row("SubTotal").ToString().ToDecimal
IVA = Row("IVA").ToString().ToDecimal
Total = Row("Total").ToString().ToDecimal
Saldo = Row("Saldo").ToString().ToDecimal
RetIVA = Row("Ret IVA").ToString().ToDecimal
RetISR = Row("Ret ISR").ToString().ToDecimal
IEPS = Row("IEPS").ToString().ToDecimal
End If
If RblFormato.SelectedValue = "17" Then
Dim TotalDetalles As Decimal = SubTotal
If PUDetalle > 0 Then
TotalDetalles = (CantidadDetalle * PUDetalle) + IVA - RetIVA - RetISR + IEPSDetalle
End If
If Math.Abs(TotalDetalles - Total) > 0.01 Then
ErrorVentas = True
Alert($"Registro {CountRow} El total no councide con el calculo de los detalles, total: {Total.ToString("###,###,###.00")} calculo detatalles: {TotalDetalles.ToString("###,###,###.00")}", TipoMensaje.MsgAdvertencia)
Exit For
End If
If Not ObjVentas.AddVentaDetalle(CveVenta, CvePS, CantidadDetalle, CveUnidadMedida, PUDetalle, IVADetalle, TotalDetalles, "Saldo Inicial", 0, 0, Sucursal.ToEntero(), 0,
PorcentajeIVA:=PorcentajeIVA, PorcentajeRetIVA:=PorcentajeRetIVA, ImporteRetIVA:=RetIVA, IEPS:=IEPSDetalle, PorcentajeRetISR:=PorcentajeRetISR, PorcentajeIEPS:=PorcentajeIEPS) Then
ErrorVentas = True
Exit For
End If
Else
If Not ObjVentas.AddVentaDetalle(CveVenta, CvePS, 1, CveUnidadMedida, SubTotal, IVA, SubTotal * PorcentajeIVA, "Saldo Inicial", 0, 0, Sucursal.ToEntero(), 0, PorcentajeIVA:=PorcentajeIVA, PorcentajeRetIVA:=PorcentajeRetIVA, ImporteRetIVA:=RetIVA, IEPS:=0) Then
ErrorVentas = True
Exit For
End If
End If
Dim ConceptoContable As Integer = 1
Dim ConceptoContablePago As Integer = 2
If TipoDocto = "Egs" Then
ConceptoContable = 12
ConceptoContablePago = 91
End If
If FolioFiscal <> "" Then
If Not ObjVentas.UpdateVentaFolioFiscal(FolioFiscal, CveVenta, UsuarioActual.CveEmpresa) Then
ErrorVentas = True
Exit For
End If
End If
Dim UsaComplementaria As Boolean = False
If UsuarioActual.CveEmpresa.Contiene(119, 158) Then UsaComplementaria = True
If Not EsDetalle Then
SubTotal = 0
IVA = 0
Total = 0
Saldo = 0
RetIVA = 0
RetISR = 0
For Each item As DataRow In dt.FiltraParametros($"RFC <> '' AND Folio = '{Row("Folio").ToString()}' AND Serie = '{Row("Serie").ToString()}' AND [Tipo Documento] = '{Row("Tipo Documento").ToString()}' ").Rows
SubTotal += item("SubTotal").ToString().ToDecimal
IVA += item("IVA").ToString().ToDecimal
Total += item("Total").ToString().ToDecimal
Saldo += item("Saldo").ToString().ToDecimal
RetIVA += item("Ret IVA").ToString().ToDecimal
RetISR += item("Ret ISR").ToString().ToDecimal
IEPS += item("IEPS").ToString().ToDecimal
Next
'PrePólizaDetalle
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, SubTotal, SubTotal, 4, Folio.ToString(), String.Format("{0}-{1}", Serie, Folio), CveVenta:=CveVenta, CveCliente:=CveCliente, CveClasificacion:=CveClasificacion, CveSubProyecto:=Sucursal.ToEntero(), PorcentajeImpuesto:=PorcentajeIVA, Contabilizable:=False) Then ErrorVentas = True : Exit For
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, Total, Total, ConceptoContable, Folio.ToString(), String.Format("{0}-{1}", Serie, Folio), CveVenta:=CveVenta, CveCliente:=CveCliente, PorcentajeImpuesto:=PorcentajeIVA, Contabilizable:=False) Then ErrorVentas = True : Exit For
If IVA > 0 Then
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, IVA, IVA, 13, Folio.ToString(), String.Format("{0}-{1}", Serie, Folio), CveVenta:=CveVenta, CveCliente:=CveCliente, PorcentajeImpuesto:=PorcentajeIVA, Contabilizable:=False) Then ErrorVentas = True : Exit For
End If
If IEPS > 0 Then
'AndAlso Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, IEPS, Folio, 38, String.Format("{0}-{1}", Serie, Folio), CveVenta:=CveVenta, CveCliente:=CveCliente, ImporteMX:=IEPS)
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, IEPS, IEPS, 38, Folio.ToString, String.Format("{0}-{1}", Serie, Folio), CveVenta:=CveVenta, CveCliente:=CveCliente, Contabilizable:=False) Then ErrorVentas = True : Exit For
End If
If RetIVA > 0 Then
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, RetISR, RetISR, 8, Folio.ToString(), String.Format("{0}-{1}", Serie, Folio), CveVenta:=CveVenta, CveCliente:=CveCliente, PorcentajeImpuesto:=PorcentajeRetISR, Contabilizable:=False) Then ErrorVentas = True : Exit For
End If
If RetISR > 0 Then
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, RetISR, RetISR, 9, Folio.ToString(), String.Format("{0}-{1}", Serie, Folio), CveVenta:=CveVenta, CveCliente:=CveCliente, PorcentajeImpuesto:=PorcentajeRetISR, Contabilizable:=False) Then ErrorVentas = True : Exit For
End If
If ImpuestoLocal > 0 Then
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, ImpuestoLocal, ImpuestoLocal, 27, Folio.ToString(), String.Format("{0}-{1}", Serie, Folio), CveVenta:=CveVenta, CveCliente:=CveCliente, PorcentajeImpuesto:=PorcentajeIVA, Contabilizable:=False) Then ErrorVentas = True : Exit For
End If
If UsaComplementaria Then
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, Total * TipoCambio.ToDecimal - Total, Total * TipoCambio.ToDecimal - Total, 203, Folio.ToString(), String.Format("{0}-{1}", Serie, Folio), CveVenta:=CveVenta, CveCliente:=CveCliente, ImporteME:=Total, TipoCambio:=TipoCambio.ToDecimal, Contabilizable:=False) Then ErrorVentas = True : Exit For
End If
'Saldo
If Saldo < Total Then
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, Total - Saldo, Total - Saldo, ConceptoContablePago, Folio.ToString(), Folio.ToString(), CveVenta:=CveVenta, CveCliente:=CveCliente, CveVentaAmortizacion:=CveVenta, Contabilizable:=False) Then ErrorVentas = True : Exit For
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, Total - Saldo, Total - Saldo, 95, Folio.ToString(), Folio.ToString(), CveVenta:=CveVenta, CveCliente:=CveCliente, Contabilizable:=False) Then ErrorVentas = True : Exit For
End If
End If
Else
If Not EsDetalle Then
SubTotal = 0
IVA = 0
Total = 0
Saldo = 0
RetIVA = 0
RetISR = 0
For Each item As DataRow In dt.FiltraParametros($"RFC <> '' AND Folio = '{Row("Folio").ToString()}' AND Serie = '{Row("Serie").ToString()}' AND [Tipo Documento] = '{Row("Tipo Documento").ToString()}' ").Rows
SubTotal += item("SubTotal").ToString().ToDecimal
IVA += item("IVA").ToString().ToDecimal
Total += item("Total").ToString().ToDecimal
Saldo += item("Saldo").ToString().ToDecimal
RetIVA += item("Ret IVA").ToString().ToDecimal
RetISR += item("Ret ISR").ToString().ToDecimal
IEPS += item("IEPS").ToString().ToDecimal
Next
'ANTICIPOS
Dim CveIE As Integer = ObjIE.AddBancos_IE(1, 1, Fecha, Folio.ToString(), "", Total, 1,
1, "Anticipo Cliente", "", False, False, -1, CvePrePoliza, "", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa)
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, Total, Total, 30, Folio.ToString(), String.Format("{0}-{1}", Serie, Folio), CveIE:=CveIE, CveCliente:=CveCliente, Contabilizable:=False) Then ErrorVentas = True : Exit For
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, Total, Total, 66, Folio.ToString(), String.Format("{0}-{1}", Serie, Folio), CveIE:=CveIE, CveCliente:=CveCliente, Contabilizable:=False) Then ErrorVentas = True : Exit For
End If
End If
Encontrados = Encontrados + 1
Else
NoEncontrados = NoEncontrados + 1
StrRFCNoencontrados.AppendFormat("{0}<br/>", RFC)
'ErrorVentas = True
'Exit For
End If
CountRow = CountRow + 1
Next
If Not ErrorVentas Then
Alert(String.Format("Se agregaron: <b>{0}</b> Ventas correctamente. <b>{1} no encontrados</b><br/>{2} ", Encontrados, NoEncontrados, StrRFCNoencontrados), TipoMensaje.MsgInformacion)
ObjVentas.Commit()
TxtExcel.Text = ""
UpDatos.Update()
Else
Alert(String.Format("Error al registrar : <b>{0}</b> Ventas correctamente. <b>{1} no encontrados</b><br/>{2} ", Encontrados, NoEncontrados, StrRFCNoencontrados), TipoMensaje.MsgError)
ObjVentas.RollBack()
End If
ObjVentas.Dispose()
#End Region
' R H - P E R S O N A L
ElseIf RblFormato.SelectedValue = "6" Then

BIN
Imagenes/autobus.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

BIN
Imagenes/sprinter.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

View File

@@ -19,14 +19,25 @@
<li>
<a target="_blank" class="ayuda" href="../Documentacion/DocumentacionInventarios.aspx#RecepcionAlmacen">&nbsp;</a>
</li>
<li>
<asp:HyperLink ID="HlAgregarExcel" NavigateUrl="#" Visible="true" data-toggle="modal" data-target="#DivCargaExcel" runat="server"><i class='fa fa-server'></i> Cargar Excel</asp:HyperLink>
</li>
<%--
<li>
<asp:HyperLink ID="HlAgregarExcel" NavigateUrl="#" Visible="true" data-toggle="modal" data-target="#DivCargaExcel" runat="server"><i class='fa fa-server'></i> Cargar Excel</asp:HyperLink>
</li>
--%>
<asp:UpdatePanel ID="UpAcciones" runat="server" UpdateMode="Conditional" RenderMode="Inline">
<ContentTemplate>
<li>
<asp:LinkButton ID="LnkAgregarExcel" Visible="true" OnClick="LnkAgregarExcel_Click" runat="server"><i class='fa fa-server'></i> Cargar Excel</asp:LinkButton>
</li>
</ContentTemplate>
</asp:UpdatePanel>
<asp:UpdatePanel ID="uppCargaBitacora" runat="server" UpdateMode="Conditional" RenderMode="Inline">
<ContentTemplate>
<li>
<asp:LinkButton ID="HplCargaBitacora" runat="server" Visible="false" OnClick="HplCargaBitacora_Click" Style="color: #686868;"><i class="fa fa-file-load-o" style="color: #686868;"></i> Cargar Bitácora</asp:LinkButton>
<asp:LinkButton ID="HplCargaBitacora" runat="server" Visible="false" OnClick="HplCargaBitacora_Click" Style="color: #686868;"><i class="fa fa-book" aria-hidden="true"></i> Cargar Bitácora</asp:LinkButton>
</li>
</ContentTemplate>
</asp:UpdatePanel>

View File

@@ -7,6 +7,7 @@ Imports System.Text
Imports Extensiones
Imports GemBox.Spreadsheet
Imports Microsoft.Reporting.WebForms
Imports Org.BouncyCastle.Asn1.X509
Partial Class Inventarios_RecepcionAlmacen
Inherits ClsPaginas
@@ -154,12 +155,21 @@ Partial Class Inventarios_RecepcionAlmacen
ViewState("PUSerie") = value
End Set
End Property
Private Property CveConsecSerie As Integer
'Private Property CveConsecSerie As Integer
' Get
' Return CType(ViewState("CveConsecSerie"), Integer)
' End Get
' Set(value As Integer)
' ViewState("CveConsecSerie") = value
' End Set
'End Property
Private Property CveCompraDetalle As Integer
Get
Return CType(ViewState("CveConsecSerie"), Integer)
Return CType(ViewState("CveCompraDetalle"), Integer)
End Get
Set(value As Integer)
ViewState("CveConsecSerie") = value
ViewState("CveCompraDetalle") = value
End Set
End Property
Private Property TotalGV As Decimal
@@ -412,6 +422,11 @@ Partial Class Inventarios_RecepcionAlmacen
End Property
Private Property ArchivoBitacora As String
Get
If ViewState("ArchivoBitacora") Is Nothing Then
ViewState("ArchivoBitacora") = ""
End If
Return CType(ViewState("ArchivoBitacora"), String)
End Get
Set(value As String)
@@ -420,6 +435,10 @@ Partial Class Inventarios_RecepcionAlmacen
End Property
Private Property ArchivoBitacoraDetalle As String
Get
If ViewState("ArchivoBitacoraDetalle") Is Nothing Then
ViewState("ArchivoBitacoraDetalle") = ""
End If
Return CType(ViewState("ArchivoBitacoraDetalle"), String)
End Get
Set(value As String)
@@ -1461,11 +1480,12 @@ Partial Class Inventarios_RecepcionAlmacen
'If e.Row.DBCampo("CveMetodoInventario").ToString = "5" Then
e.Row.FCButton("BtnSerie").Visible = True
e.Row.FCButton("BtnSerie").CommandArgument = String.Format("{0}°{1}°{2}°{3}°{4}°{5}", e.Row.DBCampo("CvePS"), e.Row.DBCampo("CveUM"), e.Row.DBCampo("PU"), e.Row.DBCampo("PS"), e.Row.DBCampo("CantidadF"), e.Row.DBCampo("Consec"))
e.Row.FCButton("BtnSerie").CommandArgument = String.Format("{0}°{1}°{2}°{3}°{4}°{5}°{6}", e.Row.DBCampo("CvePS"), e.Row.DBCampo("CveUM"), e.Row.DBCampo("PU"), e.Row.DBCampo("PS"), e.Row.DBCampo("CantidadF"), e.Row.DBCampo("Consec"), e.Row.DBCampo("CveCompraDetalle"))
e.Row.FCTextBox("TbCantidadF").Enabled = False
e.Row.FCCheckBox("cbInv").Enabled = False
Dim Contador As Integer = DtDatosDetalle.FiltraParametros(String.Format("ConsecId = {0}", e.Row.DataKey("Consec"))).Rows.Count
'Dim Contador As Integer = DtDatosDetalle.FiltraParametros(String.Format("ConsecId = {0}", e.Row.DataKey("Consec"))).Rows.Count
Dim Contador As Integer = DtDatosDetalle.FiltraParametros(String.Format("CveCompraDetalle = {0}", e.Row.DataKey("CveCompraDetalle"))).Rows.Count
e.Row.FCTextBox("TbCantidadF").Text = Contador.ToString
'' Empresa Acumuladores
@@ -1577,6 +1597,12 @@ Partial Class Inventarios_RecepcionAlmacen
TotalGV += (e.Row.DBCampo("PU").ToDecimal + e.Row.DBCampo("CostoIndirecto").ToDecimal) * e.Row.DBCampo("CantidadF").ToDecimal
If UsuarioActual.TienePermisoProceso(388) Then
e.Row.FCButton("BtnSerie").Visible = False
End If
End If
If e.Row.RowType = DataControlRowType.Footer Then
@@ -1617,7 +1643,8 @@ Partial Class Inventarios_RecepcionAlmacen
TdSeriePS.Visible = True
TxtSeriePS.Focus()
CveConsecSerie = Gvr.DataKey("Consec").ToEntero
'CveConsecSerie = Gvr.DataKey("Consec").ToEntero
CveCompraDetalle = Gvr.DataKey("CveCompraDetalle").ToEntero
CvePSSerie = Gvr.DataKey("CvePS").ToEntero
CveUMSerie = Gvr.DataKey("CveUM").ToEntero
Exit Sub
@@ -1717,7 +1744,8 @@ Partial Class Inventarios_RecepcionAlmacen
CvePSSerie = Argumentos(0).ToEntero
CveUMSerie = Argumentos(1).ToEntero
PUSerie = Argumentos(2).ToDecimal
CveConsecSerie = Argumentos(5).ToEntero
'CveConsecSerie = Argumentos(5).ToEntero
CveCompraDetalle = Argumentos(6).ToEntero
CargaSerie(1)
@@ -1732,6 +1760,8 @@ Partial Class Inventarios_RecepcionAlmacen
DtDatosDetalle.Columns.Add("PU", GetType(Decimal))
DtDatosDetalle.Columns.Add("Serie", GetType(String))
DtDatosDetalle.Columns.Add("FechaCaducidad", GetType(String))
DtDatosDetalle.Columns.Add("CveCompraDetalle", GetType(Integer))
End If
End Sub
@@ -1747,11 +1777,13 @@ Partial Class Inventarios_RecepcionAlmacen
'RegistraScript("document.getElementById(""TxtSerie"").focus();")
RegistraScript("$('#DivSerie').modal();", "ModalLote")
GvSerie.DataSource = DtDatosDetalle.FiltraParametros(String.Format("ConsecId = {0}", CveConsecSerie), "Consec DESC")
'GvSerie.DataSource = DtDatosDetalle.FiltraParametros(String.Format("ConsecId = {0}", CveConsecSerie), "Consec DESC")
GvSerie.DataSource = DtDatosDetalle.FiltraParametros(String.Format("CveCompraDetalle = {0}", CveCompraDetalle), "Consec DESC")
GvSerie.DataBind()
'VALIDA QUE SIGA AGREGANDO
If Not DtDatosDetalle.FiltraParametros(String.Format("ConsecId = {0}", CveConsecSerie)).Rows.Count < LbCantidad.Text.ToEntero Then
'If Not DtDatosDetalle.FiltraParametros(String.Format("ConsecId = {0}", CveConsecSerie)).Rows.Count < LbCantidad.Text.ToEntero Then
If Not DtDatosDetalle.FiltraParametros(String.Format("CveCompraDetalle = {0}", CveCompraDetalle)).Rows.Count < LbCantidad.Text.ToEntero Then
BtnAgregarPS.Enabled = True
If CerrarCompletado Then
RegistraScript("$('#DivSerie').modal('hide');")
@@ -1764,7 +1796,9 @@ Partial Class Inventarios_RecepcionAlmacen
Dim Contador As Integer = 0
For Each Gvr As GridViewRow In GvInv.Rows
If Gvr.DataKey("CvePS").ToEntero = CvePSSerie Then
Contador = DtDatosDetalle.FiltraParametros(String.Format("ConsecId = {0}", Gvr.DataKey("Consec"))).Rows.Count
'Contador = DtDatosDetalle.FiltraParametros(String.Format("ConsecId = {0}", Gvr.DataKey("Consec"))).Rows.Count
Contador = DtDatosDetalle.FiltraParametros(String.Format("CveCompraDetalle = {0}", Gvr.DataKey("CveCompraDetalle"))).Rows.Count
Gvr.FCCheckBox("cbInv").Enabled = False
Gvr.FCTextBox("TbCantidadF").Enabled = False
If DtDatosDetalle IsNot Nothing AndAlso Contador > 0 Then
@@ -1776,7 +1810,8 @@ Partial Class Inventarios_RecepcionAlmacen
End If
End If
Dim Dr As DataRow = DtInv.Select($"Consec = {Gvr.DataKey("Consec")}")(0)
'Dim Dr As DataRow = DtInv.Select($"Consec = {Gvr.DataKey("Consec")}")(0)
Dim Dr As DataRow = DtInv.Select($"CveCompraDetalle = {Gvr.DataKey("CveCompraDetalle")}")(0)
Dr("CantidadSurtidaPantalla") = Gvr.FCTextBox("TbCantidadF").Text.ToDecimal
DtInv.AcceptChanges()
Next
@@ -1810,7 +1845,10 @@ Partial Class Inventarios_RecepcionAlmacen
Dim dr As DataRow = GlobalDTPS(UsuarioActual.CveEmpresa, CvePS:=CvePSSerie).FiltroPrimero("", "PS")
For Each Serie In SeriesArreglo
DtDuplicado = DtDatosDetalle.FiltraParametros($"ConsecId = {CveConsecSerie} AND Serie = '{Serie}'")
'DtDuplicado = DtDatosDetalle.FiltraParametros($"ConsecId = {CveConsecSerie} AND Serie = '{Serie}'")
DtDuplicado = DtDatosDetalle.FiltraParametros($"CveCompraDetalle = {CveCompraDetalle} AND Serie = '{Serie}'")
If DtDuplicado IsNot Nothing AndAlso DtDuplicado.Rows.Count > 0 Then
MensajeAlert.Append($"<br/> El numero de Serie <b>""{Serie}""</b> proporcionado ya se encuentra ingresado.")
TxtSerie.Text = ""
@@ -1836,7 +1874,8 @@ Partial Class Inventarios_RecepcionAlmacen
Dim Index As Integer = 0
Dim Cantidad As Integer = LbCantidad.Text.ToEntero
If CargaMasivaSeries Then Cantidad = DtInv.FiltroPrimeroValor("CantidadF", "Consec = " & CveConsecSerie).ToEntero
'If CargaMasivaSeries Then Cantidad = DtInv.FiltroPrimeroValor("CantidadF", "Consec = " & CveConsecSerie).ToEntero
If CargaMasivaSeries Then Cantidad = DtInv.FiltroPrimeroValor("CantidadF", "CveCompraDetalle = " & CveCompraDetalle).ToEntero
'DtInv
For Each Serie In SeriesArreglo
@@ -1847,7 +1886,8 @@ Partial Class Inventarios_RecepcionAlmacen
If Index > Cantidad Then Exit For
'VALIDA QUE SIGA AGREGANDO
If Not DtDatosDetalle.FiltraParametros(String.Format("ConsecId = {0}", CveConsecSerie)).Rows.Count < Cantidad Then
'If Not DtDatosDetalle.FiltraParametros(String.Format("ConsecId = {0}", CveConsecSerie)).Rows.Count < Cantidad Then
If Not DtDatosDetalle.FiltraParametros(String.Format("CveCompraDetalle = {0}", CveCompraDetalle)).Rows.Count < Cantidad Then
MensajeAlert.Append("series cargadas en su totalidad") : Exit For
End If
@@ -1867,7 +1907,8 @@ Partial Class Inventarios_RecepcionAlmacen
End If
End If
Row("ConsecId") = CveConsecSerie
'Row("ConsecId") = CveConsecSerie
Row("CveCompraDetalle") = CveCompraDetalle
Row("Consec") = DtDatosDetalle.Rows.Count + 1
Row("CvePS") = CvePSSerie
Row("CveUM") = CveUMSerie
@@ -1922,6 +1963,10 @@ Partial Class Inventarios_RecepcionAlmacen
Dim dtt As New DataTable
dtt.ReadXml(ArchivoBitacoraDetalle)
DtDatosDetalle = dtt
If Not DtDatosDetalle.Columns.Contains("CveCompraDetalle") Then
DtDatosDetalle.Columns.Add("CveCompraDetalle", GetType(Integer))
DtDatosDetalle.AcceptChanges()
End If
Alert("Registro(s) Recuperados", TipoMensaje.ToastInformacion)
End If
CargaGVInv()
@@ -1975,18 +2020,21 @@ Partial Class Inventarios_RecepcionAlmacen
CvePSSerie = Argumentos(0).ToEntero
CveUMSerie = Argumentos(1).ToEntero
PUSerie = Argumentos(2).ToDecimal
CveConsecSerie = Argumentos(5).ToEntero
'CveConsecSerie = Argumentos(5).ToEntero
CveCompraDetalle = Argumentos(6).ToEntero
CargaLote(1)
End Sub
Private Sub CargaLote(Tipo As Integer, Optional CerrarCompletado As Boolean = False)
RegistraScript("$('#DivLote').modal();", "ModalLote")
GvLote.Columns(2).HeaderText = UsuarioActual.Empresa.Funcionalidad(147)
GvLote.DataSource = DtDatosLoteDetalle.FiltraParametros(String.Format("ConsecId = {0}", CveConsecSerie), "Consec DESC")
'GvLote.DataSource = DtDatosLoteDetalle.FiltraParametros(String.Format("ConsecId = {0}", CveConsecSerie), "Consec DESC")
GvLote.DataSource = DtDatosLoteDetalle.FiltraParametros(String.Format("CveCompraDetalle = {0}", CveCompraDetalle), "Consec DESC")
GvLote.DataBind()
'VALIDA QUE SIGA AGREGANDO
If Not DtDatosLoteDetalle.SUM("Cantidad", String.Format("ConsecId = {0}", CveConsecSerie)) < LbLoteCantidad2.Text.ToDecimal Then
'If Not DtDatosLoteDetalle.SUM("Cantidad", String.Format("ConsecId = {0}", CveConsecSerie)) < LbLoteCantidad2.Text.ToDecimal Then
If Not DtDatosLoteDetalle.SUM("Cantidad", String.Format("CveCompraDetalle = {0}", CveCompraDetalle)) < LbLoteCantidad2.Text.ToDecimal Then
BtnAddPSLote.Enabled = False
If CerrarCompletado Then
RegistraScript("$('#DivLote').modal('hide');")
@@ -1999,7 +2047,9 @@ Partial Class Inventarios_RecepcionAlmacen
Dim Contador As Decimal = 0
For Each Gvr As GridViewRow In GvInv.Rows
If Gvr.DataKey("CvePS").ToEntero = CvePSSerie Then
Contador = DtDatosLoteDetalle.SUMD("Cantidad", String.Format("ConsecId = {0}", Gvr.DataKey("Consec")))
'Contador = DtDatosLoteDetalle.SUMD("Cantidad", String.Format("ConsecId = {0}", Gvr.DataKey("Consec")))
Contador = DtDatosLoteDetalle.SUMD("Cantidad", String.Format("CveCompraDetalle = {0}", Gvr.DataKey("CveCompraDetalle")))
Gvr.FCCheckBox("cbInv").Enabled = False
Gvr.FCTextBox("TbCantidadF").Enabled = False
If DtDatosLoteDetalle IsNot Nothing AndAlso Contador > 0 Then
@@ -2049,7 +2099,8 @@ Partial Class Inventarios_RecepcionAlmacen
Dim DtSeriesNuevas As New DataTable
DtSeriesNuevas.Columns.Add("Serie", GetType(String))
DtDuplicado = DtDatosLoteDetalle.FiltraParametros($"ConsecId = {CveConsecSerie} AND Lote = '{Lote}' ")
'DtDuplicado = DtDatosLoteDetalle.FiltraParametros($"ConsecId = {CveConsecSerie} AND Lote = '{Lote}' ")
DtDuplicado = DtDatosLoteDetalle.FiltraParametros($"CveCompraDetalle = {CveCompraDetalle} AND Lote = '{Lote}' ")
If DtDuplicado IsNot Nothing AndAlso DtDuplicado.Rows.Count > 0 Then
Alert($"<br/> El numero de Lote <b>""{Lote}""</b> proporcionado ya se encuentra ingresado.", TipoMensaje.MsgAdvertencia)
RegistraScript("playsonidito('142608__autistic-lucario__error.wav')")
@@ -2078,7 +2129,8 @@ Partial Class Inventarios_RecepcionAlmacen
End If
End If
Row("ConsecId") = CveConsecSerie
'Row("ConsecId") = CveConsecSerie
Row("CveCompraDetalle") = CveCompraDetalle
Row("Consec") = DtDatosDetalle.Rows.Count + 1
Row("Cantidad") = CantidadLote
Row("CvePS") = CvePSSerie
@@ -2716,8 +2768,12 @@ Partial Class Inventarios_RecepcionAlmacen
PUExtranjero = DtInv.Rows(gvr.RowIndex)("PUExtranjero").ToString.ToDecimal
'SI FUE POR SERIE LOTE
DtDetalle = DtDatosDetalle.FiltraParametros(String.Format("ConsecId = {0}", gvr.DataKey("Consec").ToEntero))
DtDetalleLote = DtDatosLoteDetalle.FiltraParametros(String.Format("ConsecId = {0}", gvr.DataKey("Consec").ToEntero))
'DtDetalle = DtDatosDetalle.FiltraParametros(String.Format("ConsecId = {0}", gvr.DataKey("Consec").ToEntero))
'DtDetalleLote = DtDatosLoteDetalle.FiltraParametros(String.Format("ConsecId = {0}", gvr.DataKey("Consec").ToEntero))
DtDetalle = DtDatosDetalle.FiltraParametros(String.Format("CveCompraDetalle = {0}", gvr.DataKey("CveCompraDetalle").ToEntero))
DtDetalleLote = DtDatosLoteDetalle.FiltraParametros(String.Format("CveCompraDetalle = {0}", gvr.DataKey("CveCompraDetalle").ToEntero))
If DtDetalle.Rows.Count > 0 Then
Dim ContDt As Integer = 0
' por redondeo
@@ -3655,7 +3711,9 @@ Partial Class Inventarios_RecepcionAlmacen
ErrorMovInv = True
End Try
If Not ErrorMovInv Then
RenombrarBitacoras()
End If
'FINAL
If Not ErrorMovInv Then
@@ -3759,6 +3817,26 @@ Partial Class Inventarios_RecepcionAlmacen
If ObjContaAC IsNot Nothing Then ObjContaAC.Dispose()
End Sub
Private Sub RenombrarBitacoras()
Dim fechaActual As String = DateTime.Now.ToString("yyyyMMddHHmmss")
Dim fib As New FileInfo(ArchivoBitacora)
Dim fibd As New FileInfo(ArchivoBitacoraDetalle)
If fib.Exists() Then
Dim nuevoNombre As String = Path.Combine(fib.DirectoryName, Path.GetFileNameWithoutExtension(fib.Name) & "_" & fechaActual & ".xml")
fib.MoveTo(nuevoNombre)
End If
If fibd.Exists() Then
Dim nuevoNombreDetalle As String = Path.Combine(fibd.DirectoryName, Path.GetFileNameWithoutExtension(fibd.Name) & "_" & fechaActual & ".xml")
fibd.MoveTo(nuevoNombreDetalle)
End If
End Sub
Private Function GenerarMovimientoAlmacenVenta(CveAlmacen As Integer, CveConceptoAlmacen As Integer, CveVenta As Integer, CveMovimientoRelacionado As Integer, DtDetalle As DataTable, ObjInventario As ClsInventarios, ObjConta As ClsContabilidad, EsContabilizable As Boolean, Modulo As String) As MMovimientoAlmacen
Dim ErrorMovInv As Boolean = False
Dim Retorno As New MMovimientoAlmacen
@@ -4816,7 +4894,7 @@ Partial Class Inventarios_RecepcionAlmacen
Alert("El nombre de la segunda columna debe ser 'Codigo'. Favor de corregirlo", TipoMensaje.MsgError)
Exit Sub
End If
If Not dt.Columns(2).ColumnName = "Producto" Then
If Not (dt.Columns(2).ColumnName = "Producto" Or dt.Columns(2).ColumnName = "Producto/Servicio") Then
Alert("El nombre de la tercera columna debe ser 'Producto'. Favor de corregirlo", TipoMensaje.MsgError)
Exit Sub
End If
@@ -4851,7 +4929,8 @@ Partial Class Inventarios_RecepcionAlmacen
Dim CveProducto As Integer = RowPS("CvePS").ToString().ToEntero()
Dim CveUnidadMedida As Integer = RowPS("CveUM").ToString().ToEntero()
CvePSSerie = CveProducto
CveConsecSerie = DtInv.FiltroPrimeroValor("Consec", "CvePS=" & CvePSSerie).ToEntero
'CveConsecSerie = DtInv.FiltroPrimeroValor("Consec", "CvePS=" & CvePSSerie).ToEntero
CveCompraDetalle = DtInv.FiltroPrimeroValor("CveCompraDetalle", "CvePS=" & CvePSSerie).ToEntero
Dim Cantidad As Double = RowExcel("Cantidad").ToString().ToDecimal()
Dim Serie As String = RowExcel("Serie").ToString()
@@ -4875,7 +4954,8 @@ Partial Class Inventarios_RecepcionAlmacen
If Valido Then
CveConsecSerie = RowPS("Consec").ToString.ToEntero
'CveConsecSerie = RowPS("Consec").ToString.ToEntero
CveCompraDetalle = RowPS("CveCompraDetalle").ToString.ToEntero
AgregaSerie(RowExcel("Serie").ToString, 1, False)
'AgregarPS(Cantidad, CveProducto, CveUnidadMedida, Observaciones, CveSeccionAlmacen:=DdlSeccionAlmacen.SelectedValue.ToEntero, SeccionAlmacen:=DdlSeccionAlmacen.SelectedItem.Text, Serie:=If(Not String.IsNullOrEmpty(Serie), Serie, ""), Lote:=Lote, FechaCaducidad:=FechaCaducidad, Limpia:=False)
@@ -4887,7 +4967,7 @@ Partial Class Inventarios_RecepcionAlmacen
Else
RowsNoCargados = RowsNoCargados + 1
ProductosNoCargados.AppendFormat("{0},", RowExcel("Producto").ToString())
ProductosNoCargados.AppendFormat("{0},", RowExcel("Producto/Servicio").ToString())
End If
End If
Next
@@ -4896,12 +4976,20 @@ Partial Class Inventarios_RecepcionAlmacen
Finally
Dim MensajeFinal As New StringBuilder()
If RowsNoCargados = 0 AndAlso RowsCargados > 0 Then
MensajeFinal.Append("Los productos se cargaron correctamente. <br/><br/>")
End If
If RowsCargados > 0 Then
MensajeFinal.Append("Se cargaron <b>" & RowsCargados & "</b> productos correctamente.")
TxtExcel.Text = "[]"
UpConcepto.Update()
RegistraScript("$('#DivCargaExcel').modal('hide');")
End If
If RowsNoCargados > 0 Then
MensajeFinal.Append("No se pudieron cargar <b>" & RowsNoCargados & "</b> productos. <br/>Los siguientes productos no se pudieron cargar: " & ProductosNoCargados.ToString())
End If
@@ -4922,32 +5010,67 @@ Partial Class Inventarios_RecepcionAlmacen
End Sub
Public Sub DescargarFormato()
Dim Directorio As String = ModExtensiones.DirectorioBaseEmpresas & "Empresas\Grales\Formatos\FormatoRecepcionAlmacen.xlsx"
Dim dtt As New DataTable
dtt = DtInv.Copy()
dtt.Columns.Remove("Cantidad")
dtt.Columns("CantidadF").ColumnName = "Cantidad"
dtt.Columns("PS").ColumnName = "Producto"
dtt.Columns("Codigo").ColumnName = "Código"
Dim PathArchivo As String = ModExtensiones.DirectorioBaseEmpresas & "Empresas\Grales\Formatos\FormatoRecepcionAlmacen.xlsx"
Dim existingcol As New List(Of String) '= {"Cantidad", "Producto", "Código"}
If System.IO.File.Exists(PathArchivo) Then
For Each col As DataColumn In dtt.Columns
If Not col.ColumnName.Contiene("Cantidad", "Producto", "Código") Then
existingcol.Add(col.ColumnName)
End If
Next
Response.Clear()
Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
Response.AddHeader("Content-Disposition", "attachment; filename=FormatoRecepcionAlmacen.xlsx")
Response.TransmitFile(Directorio)
Response.End()
For Each colName As String In existingcol
dtt.Columns.Remove(colName)
Next
End If
dtt.Columns("Cantidad").SetOrdinal(0)
dtt.Columns("Código").SetOrdinal(1)
dtt.Columns("Producto").SetOrdinal(2)
dtt.Columns.Add("Serie", GetType(String))
dtt.ExportToExcel("FormatoRecepcionAlmacen.xlsx")
'Dim dtt As New DataTable
'dtt = DtInv.Copy()
'If dtt.Columns.Contains("Cantidad") Then
' dtt.Columns.Remove("Cantidad")
'End If
'If dtt.Columns.Contains("CantidadF") Then
' dtt.Columns("CantidadF").ColumnName = "Cantidad"
'End If
'If dtt.Columns.Contains("PS") Then
' dtt.Columns("PS").ColumnName = "Producto"
'End If
'If dtt.Columns.Contains("Codigo") Then
' dtt.Columns("Codigo").ColumnName = "Código"
'End If
'Dim existingcol As New List(Of String) '= {"Cantidad", "Producto", "Código"}
'For Each col As DataColumn In dtt.Columns
' If Not col.ColumnName.Contiene("Cantidad", "Producto", "Código") Then
' existingcol.Add(col.ColumnName)
' End If
'Next
'For Each colName As String In existingcol
' dtt.Columns.Remove(colName)
'Next
'Try
' dtt.Columns("Cantidad").SetOrdinal(0)
' dtt.Columns("Código").SetOrdinal(1)
' dtt.Columns("Producto").SetOrdinal(2)
'Catch ex As Exception
'End Try
'If Not dtt.Columns.Contains("PS") Then
' dtt.Columns.Add("Serie", GetType(String))
'End If
'dtt.ExportToExcel("FormatoRecepcionAlmacen.xlsx")
End Sub
@@ -4957,7 +5080,7 @@ Partial Class Inventarios_RecepcionAlmacen
'Create a DataTable.
Dim dt As New DataTable()
dt.Columns.AddRange(New DataColumn(9) {New DataColumn("CodBarra", GetType(String)),
dt.Columns.AddRange(New DataColumn(10) {New DataColumn("CodBarra", GetType(String)),
New DataColumn("OVenta", GetType(String)),
New DataColumn("Factura", GetType(String)),
New DataColumn("FechaFac", GetType(String)),
@@ -4966,7 +5089,8 @@ Partial Class Inventarios_RecepcionAlmacen
New DataColumn("Producto", GetType(String)),
New DataColumn("Serie", GetType(String)),'CodigoUnico
New DataColumn("Cantidad", GetType(Integer)),
New DataColumn("Código", GetType(String))})
New DataColumn("Código", GetType(String)),
New DataColumn("CveCompraDetalle", GetType(Integer))})
FolioFactura = FolioFactura.Replace("-", "")
'Read the contents of CSV file.
@@ -5049,5 +5173,10 @@ Partial Class Inventarios_RecepcionAlmacen
End Class
Protected Sub LnkAgregarExcel_Click(sender As Object, e As EventArgs)
TxtExcel.Text = "[]"
UpConcepto.Update()
RegistraScript("$('#DivCargaExcel').modal('show');")
End Sub
End Class

View File

@@ -555,7 +555,6 @@ public partial class Nomina_Nomina2 : ClsPaginas
}
private void CargaTiposPeriodo()
{
set_GlobalDTTipoPeriodos(UsuarioActual.CveEmpresa, null);
DdlTipoPeriodo.DataSource = get_GlobalDTTipoPeriodos(UsuarioActual.CveEmpresa);
DdlTipoPeriodoCM.DataSource = DdlTipoPeriodo.DataSource;
DdlTipoPeriodoSim.DataSource = DdlTipoPeriodo.DataSource;

View File

@@ -520,7 +520,8 @@ public partial class RH_CalculoSBC : ClsPaginas
SDI = Salariodiario * factordeintegracion;
SalarioCotizacion = Salariovariable + SDI;
if (objpersonal.UpdateSalarios(CvePersonal, txtfechacargamasiva.Text.ToDate().ToString("yyyy/MM/dd"), UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa,
Salariodiario.ToString().ToDouble(), SDI.ToString().ToDouble(), SalarioCotizacion.ToString().ToDouble(), Salariodiario.ToString().ToDouble()))
Salariodiario.ToString().ToDouble(), SDI.ToString().ToDouble(), SalarioCotizacion.ToString().ToDouble(), Salariodiario.ToString().ToDouble(),
false,true,"C"))
{
{
@@ -753,7 +754,9 @@ public partial class RH_CalculoSBC : ClsPaginas
double SalarioVariableNuevo = item.DataKey("SalarioVariableNuevo").ToDouble();
double SalarioDiarioSS = Math.Round(item.DataKey("SalarioDiarioSS").ToDouble(), 2);
if (continuar && (item.FCCheckBox("chkUpdate").Checked) &&//SalarioDiarioSSNuevo != SalarioDiarioSS &&
(continuar = objrh.UpdateSalarios(CvePersonal, fecha, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, SalarioDiario, SDINuevo, SalarioDiarioSSNuevo, SalarioDiario)))
(continuar = objrh.UpdateSalarios(CvePersonal, fecha, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, SalarioDiario, SDINuevo, SalarioDiarioSSNuevo, SalarioDiario,
false,true,"D"
)))
{
}

View File

@@ -41,14 +41,26 @@ Partial Class RH_CatTurno
End Sub
Private Sub BtnAgregarTurno_Click(sender As Object, e As EventArgs) Handles BtnAgregarTurno.Click
Dim ComidaDe As String = If(TxtComidade.Text.Trim = "", "00:00:00", TxtComidade.Text.Trim)
Dim ComidaA As String = If(TxtComidaA.Text.Trim = "", "00:00:00", TxtComidaA.Text.Trim)
Dim horaInicios As String = If(TxtHorarioDe.Text.Trim = "", "00:00:00", TxtHorarioDe.Text.Trim)
Dim horaSalidaS As String = If(TxtHorarioA.Text.Trim = "", "00:00:00", TxtHorarioA.Text.Trim)
Dim horaInicio As TimeSpan = TimeSpan.Parse(horaInicios)
Dim horaSalida As TimeSpan = TimeSpan.Parse(horaSalidaS)
If Not validaHorasTurno(horaInicio, horaSalida) Then
Exit Sub
End If
Exit Sub
Using ObjRH As New ClsRH
Dim Estatus As Boolean = False
Dim comida As Integer = If(chkComida.Checked, 1, 0)
Dim ComidaDe As String = If(TxtComidade.Text.Trim = "", "00:00:00", TxtComidade.Text.Trim)
Dim ComidaA As String = If(TxtComidaA.Text.Trim = "", "00:00:00", TxtComidaA.Text.Trim)
If ChkEstatus.Checked Then Estatus = True
If HdnModalidad.Value = "A" Then
If ObjRH.AddTurno(TxtTurno.Text, TxtHorarioDe.Text, TxtHorarioA.Text, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, DdlChecadorHorario.SelectedValue.ToEntero(),
@@ -72,6 +84,25 @@ Partial Class RH_CatTurno
End Sub
Private Function validaHorasTurno(horaInicio As TimeSpan, horaSalida As TimeSpan) As Boolean
If horaInicio > horaSalida Then
horaSalida = horaSalida.Add(TimeSpan.FromDays(1))
End If
Dim diferencia As TimeSpan = horaSalida - horaInicio
If diferencia.TotalHours > 13 Then
Alert("Las horas de entrada y salida no son validas. El rango de horas supera las 13 horas.", TipoMensaje.MsgAdvertencia)
Return False
End If
Return True
End Function
Public Sub Edit_Click(sender As Object, e As EventArgs)
Dim GvRow As GridViewRow = DirectCast(DirectCast(sender, LinkButton).NamingContainer, GridViewRow)

View File

@@ -7050,7 +7050,9 @@ Partial Class RH_Personal
TxtSalarioDiarioIntegrado.Text = TxtFISalarioDiarioIntegrado.Text
Using ObjPersonal As ClsRH = New ClsRH()
ObjPersonal.IniciaTransacSQL()
If ObjPersonal.UpdateSalarios(CvePersonal, TxtFechamodSalario.Text.ToDate().ToString("yyyy/MM/dd"), UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, TxtSalarioDiarioM.Text.ToDecimal(), TxtFISalarioDiarioIntegrado.Text.ToDecimal(), TxtSalarioDiarioImSS.Text.ToDecimal(), TxtSalarioDiarioM.Text.ToDecimal()) Then
If ObjPersonal.UpdateSalarios(CvePersonal, TxtFechamodSalario.Text.ToDate().ToString("yyyy/MM/dd"), UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa,
TxtSalarioDiarioM.Text.ToDecimal(), TxtFISalarioDiarioIntegrado.Text.ToDecimal(), TxtSalarioDiarioImSS.Text.ToDecimal(),
TxtSalarioDiarioM.Text.ToDecimal(), False, False, "A") Then
ObjPersonal.Commit()
@@ -7085,7 +7087,7 @@ Partial Class RH_Personal
Using ObjPersonal As ClsRH = New ClsRH()
ObjPersonal.IniciaTransacSQL()
If ObjPersonal.UpdateSalarios(CvePersonal, TxtFechamodIMSSSalario.Text.ToDate().ToString("yyyy/MM/dd"), UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa,
TxtSalarioDiario.Text.ToDecimal(), TxtMImssSDI.Text.ToDecimal(), TxtMImssSalarioDiarioImSS.Text.ToDecimal(), -1) Then
TxtSalarioDiario.Text.ToDecimal(), TxtMImssSDI.Text.ToDecimal(), TxtMImssSalarioDiarioImSS.Text.ToDecimal(), -1, False, True, "B") Then
ObjPersonal.Commit()

View File

@@ -1,19 +1,323 @@
<%@ Page Title="" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true" CodeFile="TripsChecks.aspx.cs" Inherits="VYA_TripsChecks" %>
<asp:Content ID="Content1" ContentPlaceHolderID="CP" Runat="Server">
<asp:Content ID="Content1" ContentPlaceHolderID="CP" runat="Server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="Css" Runat="Server">
<asp:Content ID="Content2" ContentPlaceHolderID="Css" runat="Server">
<style>
.trip-button {
display: inline-block;
width: 150px;
text-align: center;
margin: 20px;
cursor: pointer;
}
.trip-button img {
width: 150px;
height: auto;
border: 2px solid #ddd;
border-radius: 5px;
padding: 10px;
transition: transform 0.2s;
}
.trip-button img:hover {
transform: scale(1.05);
}
.trip-button p {
font-family: Arial, sans-serif;
margin-top: 10px;
font-weight: bold;
}
.odometer-container {
display: flex;
align-items: center;
justify-content: space-between;
width: 200px;
}
.odometer-btn {
width: 40px;
height: 40px;
font-size: 1.5rem;
line-height: 1;
text-align: center;
padding: 0;
border-radius: 50%;
background-color: #e0e0e0;
border: none;
cursor: pointer;
}
.btn-ok {
background-color: green;
color: white;
}
.btn-detected {
background-color: red;
color: white;
}
.btn-next {
background-color: blue;
color: white;
}
.gridview-style {
width: 100%;
border-collapse: collapse;
}
.gridview-style td {
padding: 10px;
border-bottom: 1px solid #ddd;
}
.requerido{color:darkred}
</style>
</asp:Content>
<asp:Content ID="Content3" ContentPlaceHolderID="E" Runat="Server">
<asp:Content ID="Content3" ContentPlaceHolderID="E" runat="Server">
</asp:Content>
<asp:Content ID="Content4" ContentPlaceHolderID="HB" Runat="Server">
<asp:Content ID="Content4" ContentPlaceHolderID="HB" runat="Server">
</asp:Content>
<asp:Content ID="Content5" ContentPlaceHolderID="H" Runat="Server">
<asp:Content ID="Content5" ContentPlaceHolderID="H" runat="Server">
</asp:Content>
<asp:Content ID="Content6" ContentPlaceHolderID="HA" Runat="Server">
<asp:Content ID="Content6" ContentPlaceHolderID="HA" runat="Server">
</asp:Content>
<asp:Content ID="Content7" ContentPlaceHolderID="C" Runat="Server">
<asp:Content ID="Content7" ContentPlaceHolderID="C" runat="Server">
<asp:UpdatePanel ID="UpDatos" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<div class="row">
<div class="col-md-6 col-md-offset-3 col-sm-8 col-sm-offset-2 col-xs-12">
<asp:Panel ID="PnlPaso1" runat="server">
<div class="portlet light xspadding bordered" id="idnecesaria1">
<div class="portlet-title ">
<div class="tools">
</div>
<div class="titlefiltros caption">
Paso 1: Seleccione el Tipo de Unidad
</div>
<div class="tools">
<a href="javascript:;" class="collapse" data-original-title="" title=""></a>
<a href="javascript:;" class="fullscreen" data-original-title="" title=""></a>
</div>
<div class="actions">
<div class="btn-group">
</div>
</div>
</div>
<div class="portlet-body">
<div class="row">
<div class="col-sm-offset-2 col-sm-4">
<!-- Botón para Trip Autobus -->
<asp:ImageButton ID="imgBtnAutobus" runat="server" ImageUrl="~/imagenes/autobus.png" OnClick="ImgBtnAutobus_Click" CssClass="trip-button" />
<p>TRIP AUTOBUS</p>
</div>
<div class="col-sm-4">
<!-- Botón para Trip Sprinter -->
<asp:ImageButton ID="imgBtnSprinter" runat="server" ImageUrl="~/imagenes/sprinter.png" OnClick="ImgBtnSprinter_Click" CssClass="trip-button" />
<p>TRIP SPRINTER</p>
</div>
<div class="col-sm-4"></div>
</div>
</div>
</div>
</asp:Panel>
<asp:Panel ID="PnlPaso2" runat="server">
<div class="portlet light xspadding bordered" id="idnecesaria">
<div class="portlet-title ">
<div class="tools">
</div>
<div class="titlefiltros caption">
Paso 2: CHECK PT
</div>
<div class="tools">
<a href="javascript:;" class="collapse" data-original-title="" title=""></a>
<a href="javascript:;" class="fullscreen" data-original-title="" title=""></a>
</div>
<div class="actions">
<div class="btn-group">
</div>
</div>
</div>
<div class="portlet-body">
<div>
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<label>Tipo de Unidad</label>
<asp:DropDownList ID="DdlTipoUnidad" data-text="Todos" AppendDataBoundItems="true" AutoPostBack="true"
DataTextField="TipoActivoFijo" DataValueField="CveTipoActivoFijo" OnSelectedIndexChanged="DdlTipoUnidad_SelectedIndexChanged"
CssClass="form-control ddlFiltros input-sm select2me Widthall" ClientIDMode="Static"
Style="width: 100%;" runat="server">
</asp:DropDownList>
</div>
</div>
<div class="col-sm-6">
<div class="form-group">
<label>Unidad</label>
<asp:DropDownList ID="DdlAF" DataValueField="CveActivoFijo" DataTextField="CodDesc" Class="form-control select2me" Width="100%" runat="server">
</asp:DropDownList>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<label for="odometro">Folio</label>
<asp:TextBox ID="TxtFolio" runat="server" CssClass="form-control text-right" Text="0" Style="width: 100%;" />
</div>
</div>
<div class="col-sm-6">
<div class="form-group">
<label>Fecha</label>
<div style="width: 115px">
<div class="input-group input-sm input-small date date-picker "
data-date-format="dd/mm/yyyy"
style="width: 100px !important; padding: 0px;">
<asp:TextBox Width="80px" ID="txtFechaI" runat="server" CssClass="form-control"
MaxLength="10"></asp:TextBox>
<span class="input-group-btn ">
<asp:LinkButton ID="imgCalendario" class="btn default" Text="<i class='fa fa-calendar'></i>"
runat="server"></asp:LinkButton>
</span>
</div>
<ajax:MaskedEditExtender ID="MEEFechaI" runat="server" TargetControlID="txtFechaI"
Mask="99/99/9999" MaskType="Date" DisplayMoney="Left" AcceptNegative="Left"></ajax:MaskedEditExtender>
<ajax:CalendarExtender runat="server" ID="Calendario" TargetControlID="txtFechaI"
PopupButtonID="ImgCalendario" PopupPosition="BottomRight" Enabled="True"></ajax:CalendarExtender>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<label>Chofer</label>
<asp:DropDownList ID="DdlChofer" data-text="Todos" AppendDataBoundItems="true"
DataTextField="NombreCompleto" DataValueField="CvePersonal" CssClass="form-control ddlFiltros input-sm select2me Widthall" ClientIDMode="Static"
Style="width: 100%;" runat="server">
</asp:DropDownList>
</div>
</div>
<div class="col-sm-6">
<div class="form-group">
<label for="odometro">ODÓMETRO</label>
<div class="odometer-container">
<button type="button" class="odometer-btn" onclick="updateOdometer(-1)">-</button>
<asp:TextBox ID="txtOdometer" runat="server" CssClass="form-control text-center" Text="0" Style="width: 80px;" />
<button type="button" class="odometer-btn" onclick="updateOdometer(1)">+</button>
</div>
</div>
</div>
</div>
</div>
<div class="form-group text-right">
<asp:Button ID="btnContinuar" runat="server" CssClass="btn btn-primary" Text="Continuar" OnClientClick="setPaso(3); return false;" />
</div>
</div>
</div>
</asp:Panel>
<asp:Panel ID="PnlPaso3" runat="server">
<div class="portlet light xspadding bordered" id="idnecesaria3">
<div class="portlet-title ">
<div class="tools">
</div>
<div class="titlefiltros caption">
Paso 3:
</div>
<div class="tools">
<a href="javascript:;" class="expand" data-original-title="" title=""></a>
<a href="javascript:;" class="fullscreen" data-original-title="" title=""></a>
</div>
<div class="actions">
<div class="btn-group">
</div>
</div>
</div>
<div class="portlet-body" style="display:none;">
<div>
<h4>
<asp:Label ID="lblFormulario" runat="server" Font-Bold="True" />
</h4>
<asp:GridView ID="gvPreguntas" runat="server" GridLines="none" AutoGenerateColumns="False" ShowHeader="false" DataKeyNames="CvePregunta,Valor"
CssClass="gridview-style" OnRowDataBound="gvPreguntas_RowDataBound" >
<Columns>
<asp:TemplateField HeaderText="Acciones">
<ItemTemplate>
<h4>
<asp:Label ID="lblPregunta" runat="server" Text='<%# Eval("Pregunta") %>'></asp:Label>*<br />
</h4>
<asp:Button ID="btnOk" runat="server" Text="OK" OnClick="btnOk_Click" />
<asp:Button ID="btnDetected" runat="server" Text="Detectado" OnClick="btnDetected_Click" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
<div class="form-group">
<h4>
<asp:Label ID="lblFormularioobserv" runat="server"></asp:Label><br />
</h4>
<asp:TextBox ID="TxtObservaciones" runat="server" TextMode="multiline" CssClass="Widthall" Columns="50" Rows="5"></asp:TextBox>
</div>
<div class="text-center">
<asp:Button ID="btnAnt" runat="server" CssClass="btn btn-default" Text="Anterior" OnClick="btnAnt_Click" />
<asp:Button ID="BtnCancel" runat="server" CssClass="btn btn-default" Text="Cancelar" OnClick="BtnCancel_Click" />
<asp:Button ID="btnNext" runat="server" CssClass="btn btn-default" Text="Siguiente" OnClick="btnNext_Click" />
<asp:Button ID="btnGuardar" runat="server" CssClass="btn btn-primary" Text="Guardar" OnClick="btnGuardar_Click" />
</div>
</div>
</div>
</div>
</asp:Panel>
</div>
</div>
</ContentTemplate>
</asp:UpdatePanel>
</asp:Content>
<asp:Content ID="Content8" ContentPlaceHolderID="JS" Runat="Server">
<asp:Content ID="Content8" ContentPlaceHolderID="JS" runat="Server">
<script>
function setPaso(id){
if (id == 3) {
}
}
function updateOdometer(change) {
// Get the odometer input field
var odometerInput = document.getElementById('<%= txtOdometer.ClientID %>');
// Convert the current value to a number and update it by the change amount
var currentValue = parseInt(odometerInput.value, 10);
if (isNaN(currentValue)) {
currentValue = 0;
}
// Update the value
odometerInput.value = currentValue + change;
}
</script>
</asp:Content>

View File

@@ -1,13 +1,274 @@
using System;
using CrystalDecisions.Shared.Json;
using System;
using System.Activities.Expressions;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Extensiones;
public partial class VYA_TripsChecks : System.Web.UI.Page
public partial class VYA_TripsChecks : ClsPaginas
{
#region "Propiedades"
private int Paso
{
get
{
return ViewState["Paso"].ToEntero();
}
set
{
PnlPaso1.Visible = (value == 1);
PnlPaso2.Visible = (value == 2 || value == 3);
PnlPaso3.Visible = (value == 3 || value == 2);
ViewState["Paso"] = value;
}
}
private int _currentFormIndex
{
get
{
return ViewState["_currentFormIndex"].ToEntero();
}
set
{
ViewState["_currentFormIndex"] = value;
}
}
private DataTable _dtPreguntas
{
get
{
if (ViewState["_dtPreguntas"] != null)
return (DataTable)ViewState["_dtPreguntas"];
else
return null;
}
set
{
ViewState["_dtPreguntas"] = value;
}
}
#endregion
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
Paso = (Request["Paso"] != null && Request["Paso"].ToString().ToEntero() > 0) ? Request["Paso"].ToString().ToEntero() : 1;
_currentFormIndex = (Request["FormIndex"] != null && Request["FormIndex"].ToString().ToEntero() > 0) ? Request["FormIndex"].ToString().ToEntero() : 1;
CargaCombos();
LoadData();
BindForm();
}
}
public void CargaCombos()
{
DataTable dttipoaf = get_GlobalDTTipoActivoFijo(UsuarioActual.CveEmpresa).FiltraParametros("MedidaVehicularClave IN (2,3)");
DdlTipoUnidad.DataSource = dttipoaf;
DdlTipoUnidad.Items.Insert(0, new ListItem("Todos", "-1"));
DdlTipoUnidad.DataBind();
//CvePuesto =702 valor fijo V&A
DataTable dtchofer = get_GlobalDTRHPersonal(UsuarioActual.CveEmpresa).FiltraParametros("CvePuesto = 702 and CveEstatusPersonal = 1", "NombreCompleto");
DdlChofer.DataSource = dtchofer;
DdlChofer.DataBind();
DdlChofer.Items.Insert(0, new ListItem("-", "-1"));
}
public void cargaUnidades()
{
DataTable dt = get_GlobalDTActivoFijos(UsuarioActual.CveEmpresa).FiltraParametros(string.Format(" EstadoActivoFijo= 'Activo' ", DdlTipoUnidad.SelectedValue));
DdlAF.DataSource = dt;
DdlAF.DataBind();
DdlAF.Items.Insert(0, new ListItem("-", "-1"));
}
#region "Paso 1"
protected void ImgBtnAutobus_Click(object sender, ImageClickEventArgs e)
{
DdlTipoUnidad.SelectedValue = "181";
Paso = 2;
cargaUnidades();
}
protected void ImgBtnSprinter_Click(object sender, ImageClickEventArgs e)
{
DdlTipoUnidad.SelectedValue = "184";
Paso = 2;
cargaUnidades();
}
#endregion
protected void DdlTipoUnidad_SelectedIndexChanged(object sender, EventArgs e)
{
cargaUnidades();
}
#region "Formulario"
private void LoadData()
{
_dtPreguntas = new DataTable();
using(ClsTransportes nom =new ClsTransportes())
{
if(nom.VIA_FormularioTrip(-1,UsuarioActual.CveUsuario,UsuarioActual.CveEmpresa))
{
_dtPreguntas =nom.DtResultados;
}
}
//// Para la demostración, aquí va un código para llenar el DataTable con datos ficticios.
//_dtPreguntas.Columns.Add("CveFormulario", typeof(int));
//_dtPreguntas.Columns.Add("Formulario", typeof(string));
//_dtPreguntas.Columns.Add("CvePregunta", typeof(int));
//_dtPreguntas.Columns.Add("Pregunta", typeof(string));
//_dtPreguntas.Columns.Add("Valor", typeof(int));
//_dtPreguntas.Columns.Add("OrdenPregunta", typeof(int));
//_dtPreguntas.Columns.Add("OrdenFormulario", typeof(int));
//// Agregar datos de prueba
//_dtPreguntas.Rows.Add(1, "Formulario 1", 1, "Pregunta 1", null, 1, 1);
//_dtPreguntas.Rows.Add(1, "Formulario 1", 2, "Pregunta 2", null, 2, 1);
//_dtPreguntas.Rows.Add(2, "Formulario 2", 3, "Pregunta 3", null, 1, 2);
//_dtPreguntas.Rows.Add(2, "Formulario 2", 4, "Pregunta 4", null, 2, 2);
//_dtPreguntas.Rows.Add(2, "Formulario 2", 5, "Pregunta 5", null, 1, 3);
//_dtPreguntas.Rows.Add(2, "Formulario 2", 6, "Pregunta 6", null, 2, 3);
}
private void BindForm()
{
var filteredRowsant = _dtPreguntas.FiltraParametros($"OrdenFormulario = {_currentFormIndex - 1}");
var filteredRowsnext = _dtPreguntas.FiltraParametros($"OrdenFormulario = {_currentFormIndex + 1}");
btnAnt.Visible = filteredRowsant.Rows.Count > 0;
btnNext.Visible = filteredRowsnext.Rows.Count > 0;
btnGuardar.Visible = !(filteredRowsnext.Rows.Count > 0);
var filteredRows = _dtPreguntas.Select($"OrdenFormulario = {_currentFormIndex}");
var sortedRows = filteredRows.CopyToDataTable();
if(sortedRows.Rows.Count > 0)
{
lblFormulario.Text = $"{sortedRows.Rows[0]["Formulario"]}:";
lblFormularioobserv.Text = $"Observaciones {sortedRows.Rows[0]["Formulario"]}";
}
gvPreguntas.DataSource = sortedRows;
gvPreguntas.DataBind();
UpDatos.Update();
}
protected void gvPreguntas_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
string valor = e.Row.DataKey("Valor");
// Botón btnOk
Button btnOk = (Button)e.Row.FindControl("btnOk");
if (btnOk != null)
{
btnOk.CssClass = valor == "1" ? "btn btn-primary" : "btn btn-default";
}
// Botón btnDetected
Button btnDetected = (Button)e.Row.FindControl("btnDetected");
if (btnDetected != null)
{
btnDetected.CssClass = valor == "0" ? "btn btn-primary" : "btn btn-default";
}
}
}
private void UpdateValue(int cvePregunta, int newValue)
{
foreach (DataRow row in _dtPreguntas.Rows)
{
if (Convert.ToInt32(row["CvePregunta"]) == cvePregunta)
{
row["Valor"] = newValue;
break;
}
}
}
protected void btnOk_Click(object sender, EventArgs e)
{
Button btnOk = (Button)sender;
GridViewRow row = (GridViewRow)btnOk.NamingContainer;
int cvePregunta = row.DataKey("CvePregunta").ToEntero();
UpdateValue(cvePregunta, 1);
BindForm();
}
protected void btnDetected_Click(object sender, EventArgs e)
{
Button btnDetected = (Button)sender;
GridViewRow row = (GridViewRow)btnDetected.NamingContainer;
int cvePregunta = row.DataKey("CvePregunta").ToEntero();
UpdateValue(cvePregunta, 0);
BindForm();
}
public bool ValidarGridView()
{
bool ok = true;
foreach (GridViewRow row in gvPreguntas.Rows)
{
// Obtener el valor del DataKey correspondiente a la fila actual
string valor = row.DataKey("Valor");
// Verificar si el valor es diferente de '0' o '1'
if (valor != "0" && valor != "1")
{
ok = false;
// Marcar lblPregunta como requerido si el valor es diferente
Label lblPregunta = (Label)row.FindControl("lblPregunta");
if (lblPregunta != null)
{
lblPregunta.CssClass = "requerido"; // Añade tu clase CSS para marcar como requerido
}
}
}
return ok;
}
protected void btnNext_Click(object sender, EventArgs e)
{
if (ValidarGridView())
{
// Incrementar el índice del formulario
_currentFormIndex++;
BindForm();
}
}
protected void btnAnt_Click(object sender, EventArgs e)
{
_currentFormIndex--;
BindForm();
}
protected void BtnCancel_Click(object sender, EventArgs e)
{
Paso = 1;
}
#endregion
protected void btnGuardar_Click(object sender, EventArgs e)
{
}
protected void btnContinuar_Click(object sender, EventArgs e)
{
}

View File

@@ -723,6 +723,42 @@
</div>
</div>
</div>
<div class="row">
<div class="col-md-12" id="DivListaPrecios" runat="server" visible="false">
<div class="portlet xspadding light bordered">
<div class="portlet-title">
<div class="caption font-green">
<i class="icon-briefcase font-green"></i>
<span class="caption-subject bold uppercase">Lista de Precios &nbsp;&nbsp;</span>
</div>
<div class="actions">
<div class="btn-group">
</div>
</div>
</div>
<div class="portlet-body form">
<div class="row">
<div class="col-md-12">
<asp:GridView ID="GvMultiple" Width="100%" runat="server" GridLines="None" ClientIDMode="Static" AutoGenerateColumns="false" DataKeyNames="CvePrecioLista,PrecioLista,Precio"
CssClass="table table-striped table-advance table-hover ScrollAD mysmallbtn" data-sort="true" EmptyDataText="No se encontraron registros" OnRowDataBound="GvMultiple_RowDataBound">
<Columns>
<asp:BoundField DataField="PrecioLista" HeaderText="Lista de Precio" />
<asp:TemplateField ItemStyle-HorizontalAlign="Right">
<HeaderTemplate>
<asp:Label ID="LtlLista" runat="server">Precio</asp:Label>
</HeaderTemplate>
<ItemTemplate>
<asp:TextBox ID="TxtPrecio" runat="server" MaxLength="39" onkeypress="return onlyNumberKey(event)" Style="text-align: right !important;"></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</ContentTemplate>
@@ -2672,7 +2708,19 @@
}
//TERMINA: ECOMMERCE
function onlyNumberKey(evt) {
// Only ASCII character in that range allowed
var ASCIICode = (evt.which) ? evt.which : evt.keyCode
if (ASCIICode > 31 && (ASCIICode < 48 || ASCIICode > 57)) {
if (ASCIICode == 46) {
return true
} else {
return false;
}
}
return true;
}
</script>

View File

@@ -141,6 +141,15 @@ Partial Class ProductosyServicios
ViewState("Imagen") = value
End Set
End Property
Private Property DtPreciosMultiple As DataTable
Get
Return If(IsNothing(ViewState("DtPreciosMultiple")), Nothing, CType(ViewState("DtPreciosMultiple"), DataTable))
End Get
Set(value As DataTable)
ViewState("DtPreciosMultiple") = value
End Set
End Property
#End Region
Private ReadOnly Property PermiteClasificacion2 As Boolean
@@ -273,6 +282,9 @@ Partial Class ProductosyServicios
'CargaFamilia(ViewState("CveSubFamilia").ToString.ToEntero)
CargaSucursaless()
CargaImpuestosLocales()
If UsuarioActual.Empresa.Funcionalidad(382) = "1" Then
CargaListaPrecios()
End If
If UsuarioActual.TienePermisoProceso(122) Then
BtnEliminar.Visible = False
@@ -1714,6 +1726,10 @@ Partial Class ProductosyServicios
Next
End If
If Not TieneError AndAlso UsuarioActual.Empresa.Funcionalidad(382) = "1" Then
GuardarListasPrecios(ObjProductosServicios)
End If
If ObjProductosServicios.CvePS > 0 And Not TieneError Then
TieneError = GuardaEcommerce()
End If
@@ -2967,6 +2983,58 @@ Partial Class ProductosyServicios
#End Region
#Region "LISTA PRECIOS"
Private Sub CargaListaPrecios()
Dim objPS As New ClsProductosServicios
If objPS.GetPSPreciosLista(UsuarioActual.CveEmpresa, -1, CveClasificacion:=-1, CvePS:=CvePS,
CveProveedor:=-1, Estado:=-1, Marcas:="-1", CveModelo:=-1) Then
DtPreciosMultiple = objPS.DtResultados.Copy()
GvMultiple.DataSource = DtPreciosMultiple
End If
objPS.Dispose()
DivListaPrecios.Visible = True
GvMultiple.DataBind()
End Sub
Protected Sub GvMultiple_RowDataBound(sender As Object, e As GridViewRowEventArgs)
If e.Row.RowType = DataControlRowType.DataRow Then
Dim Valor As Decimal = DtPreciosMultiple.Rows(e.Row.RowIndex)(2).ToString().ToDecimal()
e.Row.FCTextBox("TxtPrecio").Text = Valor.FormatoNumero(2)
End If
End Sub
Private Sub GuardarListasPrecios(ObjPS As ClsProductosServicios)
Dim TieneError As Boolean = False
Try
For Each GvRow As GridViewRow In GvMultiple.Rows
Dim CvePrecioLista As Integer = GvRow.DataKey("CvePrecioLista").ToEntero()
Dim Precio As Decimal = GvRow.FCTextBox("TxtPrecio").Text.ToDecimal()
TieneError = Not ObjPS.UpdatePSPreciosLista(Precio, CvePrecioLista, 0, CvePS, UsuarioActual.CveUsuario, NowADS(), True)
If TieneError Then
Exit For
End If
Next
Catch ex As Exception
OnError("Ocurrió un error al actualizar precios", ex)
TieneError = True
End Try
If TieneError Then
Alert("Ocurrió un error al actualizar precios", TipoMensaje.MsgError)
End If
End Sub
#End Region
#Region "EXISTENCIAS"
Protected Sub GVExistencias_RowDataBound(sender As Object, e As GridViewRowEventArgs)

View File

@@ -56,6 +56,9 @@
<li>
<asp:LinkButton ID="LnkVerGrafica" OnClick="LnkVerGrafica_Click" runat="server">Ver Grafica</asp:LinkButton>
</li>
<li>
<asp:LinkButton ID="LnkModalPorcentajes" OnClick="LnkModalPorcentajes_Click" runat="server" Visible="false"><i class="fa fa-list" aria-hidden="true"></i> Consultar porcentajes</asp:LinkButton>
</li>
</ContentTemplate>
</asp:UpdatePanel>
<li>
@@ -275,6 +278,106 @@
</asp:GridView>
</ContentTemplate>
</asp:UpdatePanel>
<div id="DivModalPorcetajes" class="modal ADS fade" role="dialog">
<asp:UpdatePanel class="modal-dialog modal-lg" runat="server" ID="UpModalPorcentajes" UpdateMode="Conditional">
<ContentTemplate>
<div class="modal-content" style="width:700px!important">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal">&times;</button>
<h4 class="modal-title">
<asp:Label ID="LblModalTituloPorcentajes" runat="server" ClientIDMode="Static" Text="">Consulta Porcentajes</asp:Label>
</h4>
</div>
<div class="modal-body">
<div class="row">
<div class="col-md-3">
<div class="form-group form-md-line-input input-iconright date date-picker date date-picker" style="min-width: 135px; margin-top: -10px !important;">
<label for="<%= TxtModalFechaInicio.ClientID.ToString()%>" style="color: #888888;">Fecha Inicio: </label>
<div class="input-group input-sm input-small date date-picker " data-date-format="dd/mm/yyyy" style="width: 120px !important; padding: 0px;">
<asp:TextBox ID="TxtModalFechaInicio" runat="server" CssClass="form-control" CausesValidation="true" MaxLength="10" Width="100px"></asp:TextBox>
<span class="input-group-btn ">
<asp:LinkButton ID="LnkTxtModalFechaInicio" class="btn default " Text="<i class='fa fa-calendar'></i>" runat="server"></asp:LinkButton>
</span>
</div>
<ajax:MaskedEditExtender ID="METxtModalFechaInicio" runat="server" TargetControlID="TxtModalFechaInicio" Mask="99/99/9999" MaskType="Date" DisplayMoney="Left" AcceptNegative="Left"></ajax:MaskedEditExtender>
<ajax:CalendarExtender runat="server" ID="CETxtModalFechaInicio" TargetControlID="TxtModalFechaInicio" PopupButtonID="LnkTxtModalFechaInicio" PopupPosition="BottomRight" Enabled="True"></ajax:CalendarExtender>
<asp:RequiredFieldValidator ID="RfvTxtModalFechaInicio" CssClass="help-block errorimput" runat="server" ControlToValidate="TxtModalFechaInicio" ErrorMessage="<b><span style='text-decoration: underline'>ERROR:</span></b><br />El campo <b>''Fecha Inicio''</b> es necesario, por favor ingréselo." ValidationGroup="GrpModalPorcentaje"></asp:RequiredFieldValidator>
</div>
</div>
<div class="col-md-3">
<div class="form-group form-md-line-input input-iconright date date-picker date date-picker" style="min-width: 135px; margin-top: -10px !important;">
<label for="<%= TxtModalFechaFin.ClientID.ToString()%>" style="color: #888888;">Fecha Fin: </label>
<div class="input-group input-sm input-small date date-picker " data-date-format="dd/mm/yyyy" style="width: 120px !important; padding: 0px;">
<asp:TextBox ID="TxtModalFechaFin" runat="server" CssClass="form-control" CausesValidation="true" MaxLength="10" Width="100px"></asp:TextBox>
<span class="input-group-btn ">
<asp:LinkButton ID="LnkTxtModalFechaFin" class="btn default " Text="<i class='fa fa-calendar'></i>" runat="server"></asp:LinkButton>
</span>
</div>
<ajax:MaskedEditExtender ID="METxtModalFechaFin" runat="server" TargetControlID="TxtModalFechaFin" Mask="99/99/9999" MaskType="Date" DisplayMoney="Left" AcceptNegative="Left"></ajax:MaskedEditExtender>
<ajax:CalendarExtender runat="server" ID="CETxtModalFechaFin" TargetControlID="TxtModalFechaFin" PopupButtonID="LnkTxtModalFechaFin" PopupPosition="BottomRight" Enabled="True"></ajax:CalendarExtender>
<asp:RequiredFieldValidator ID="RfvLnkTxtModalFechaFin" CssClass="help-block errorimput" runat="server" ControlToValidate="TxtModalFechaFin" ErrorMessage="<b><span style='text-decoration: underline'>ERROR:</span></b><br />El campo <b>''Fecha Fin''</b> es necesario, por favor ingréselo." ValidationGroup="GrpModalPorcentaje"></asp:RequiredFieldValidator>
</div>
</div>
<div class="col-md-3">
<div class="form-group form-md-line-input input-iconright">
<asp:TextBox ID="TxtModalPorcentaje" runat="server" CausesValidation="true" CssClass="form-control" MaxLength="13" Text="5" Enabled="true"></asp:TextBox>
<asp:RequiredFieldValidator ID="RfvTxtModalPorcentaje" CssClass="help-block errorimput" runat="server" ControlToValidate="TxtModalPorcentaje" ErrorMessage="<b><span style='text-decoration: underline'>ERROR:</span></b><br />El campo <b>''Porcentaje''</b> es necesario, por favor ingréselo." ValidationGroup="GrpModalPorcentaje"></asp:RequiredFieldValidator>
<ajax:FilteredTextBoxExtender ID="FIETTxtModalPorcentaje" TargetControlID="TxtModalPorcentaje" FilterType="Numbers,Custom" ValidChars="-" runat="server" />
<label for="<%= TxtModalPorcentaje.ClientID.ToString()%>">Porcentaje Menor a:</label>
</div>
</div>
<div class="col-md-3">
<asp:Button runat="server" ID="BtnModalConsultaPorcentaje" CssClass="btn btn-primary" Text="Consultar" CausesValidation="true" ValidationGroup="GrpModalPorcentaje" OnClick="BtnModalConsultaPorcentaje_Click" />
</div>
</div>
<div class="row">
<div class="col-md-12" style="height:10px!important"></div>
</div>
<div class="row">
<div class="col-md-12">
<asp:GridView ID="GvPorcentajes" runat="server" AutoGenerateColumns="False" EmptyDataText="No se encontraron Ventas Utilidad con los filtros especificados"
CssClass="table table-advance table-hover Widthall ScrollAD" data-sort="true" GridLines="None" OnRowDataBound="GvPorcentajes_RowDataBound" >
<Columns>
<asp:BoundField ItemStyle-HorizontalAlign="Left" HeaderText="SubProyecto" DataField="SubProyecto" ItemStyle-Width="200px" />
<asp:HyperLinkField ItemStyle-HorizontalAlign="Center" HeaderText="Serie Folio" DataTextField="SerieFolio" DataTextFormatString="{0}" Target="_blank"
DataNavigateUrlFields="CveVenta"
DataNavigateUrlFormatString="Ventas.aspx?CveVenta={0}" />
<asp:BoundField ItemStyle-HorizontalAlign="Center" HeaderText="Fecha" DataField="FechaVenta" DataFormatString="{0:d}" ItemStyle-Width="100px" />
<asp:BoundField ItemStyle-HorizontalAlign="Right" HeaderText="SubTotal" DataField="SubTotal" DataFormatString="{0:N}" ItemStyle-Width="100px" />
<asp:BoundField ItemStyle-HorizontalAlign="Right" HeaderText="Costo" DataField="Costo" DataFormatString="{0:N}" ItemStyle-Width="100px" />
<asp:BoundField ItemStyle-HorizontalAlign="Right" HeaderText="% Neto" DataField="PorNeto" DataFormatString="{0:N}" ItemStyle-Width="100px" />
</Columns>
</asp:GridView>
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Cerrar</button>
</div>
</div>
</ContentTemplate>
</asp:UpdatePanel>
</div>
<div id="DivModalGrafica" class="modal ADS fade" role="dialog">
<asp:UpdatePanel class="modal-dialog modal-lg" runat="server" ID="UPModalProd" UpdateMode="Conditional">
<ContentTemplate>
@@ -288,18 +391,20 @@
<div class="modal-body">
<div class="row">
<label class="col-md-1 truncate">Ver:</label>
<div class="col-md-2">
<asp:DropDownList ID="DdlVer" runat="server" AutoPostBack="true" OnSelectedIndexChanged="DdlVer_SelectedIndexChanged" AppendDataBoundItems="true" Class="table-group-action-input form-control input-inline input-small input-sm select2me">
<asp:ListItem Selected="True" Text="Neto" Value="1"></asp:ListItem>
<asp:ListItem Text="Rentabilidad" Value="2"></asp:ListItem>
</asp:DropDownList>
</div>
<label class="col-md-1 truncate">Ver:</label>
<div class="col-md-2">
<asp:DropDownList ID="DdlVer" runat="server" AutoPostBack="true" OnSelectedIndexChanged="DdlVer_SelectedIndexChanged" AppendDataBoundItems="true" Class="table-group-action-input form-control input-inline input-small input-sm select2me">
<asp:ListItem Selected="True" Text="Neto" Value="1"></asp:ListItem>
<asp:ListItem Text="Rentabilidad" Value="2"></asp:ListItem>
</asp:DropDownList>
</div>
</div>
<br />
<br />
<div id="chartdiv"></div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-danger" data-dismiss="modal">Cerrar</button>
</div>
@@ -307,6 +412,10 @@
</ContentTemplate>
</asp:UpdatePanel>
</div>
</asp:Content>
<asp:Content ID="Content8" ContentPlaceHolderID="JS" runat="Server">
<script src="https://www.amcharts.com/lib/3/amcharts.js"></script>

View File

@@ -32,19 +32,37 @@ Partial Class Ventas_RepVentasUtilidadPadre
Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load
If Not IsPostBack Then
'If UsuarioActual.Empresa.Funcionalidad(382) <> "1" Then
' GvDatos.Columns(3).Visible = False
' GvDatos.Columns(5).Visible = False
'End If
If UsuarioActual.Empresa.Funcionalidad(382) = "1" Then
LnkModalPorcentajes.Visible = True
End If
CargaCombos()
End If
End Sub
Private Property SubProyectoConf As String
Get
If ViewState("SubProyectoConf") Is Nothing Then
ViewState("SubProyectoConf") = ""
End If
Return ViewState("SubProyectoConf").ToString
End Get
Set(value As String)
ViewState("SubProyectoConf") = value
End Set
End Property
#Region " INICIALIZA VALORES "
Private Sub CargaCombos()
TxtModalFechaInicio.Text = NowADS().FirstDayOfMonth.ToShortDateString
TxtModalFechaFin.Text = NowADS().LastDayOfMonth.ToShortDateString
txtFechaI.Text = NowADS().FirstDayOfMonth.ToShortDateString
txtFechaF.Text = NowADS().LastDayOfMonth.ToShortDateString
@@ -108,6 +126,12 @@ Partial Class Ventas_RepVentasUtilidadPadre
LblNeto.Text = "0"
LblPorNeto.Text = "0"
Dim LblSubProyectoConf As New Label
CargarCentrosDeCosto(Nothing, Nothing, Nothing, LblSubProyectoConf)
SubProyectoConf = LblSubProyectoConf.Text
End Sub
Protected Sub DdlCategoria_SelectedIndexChanged(sender As Object, e As EventArgs)
@@ -315,4 +339,42 @@ Partial Class Ventas_RepVentasUtilidadPadre
#End Region
Protected Sub LnkModalPorcentajes_Click(sender As Object, e As EventArgs)
GvPorcentajes.DataSource = Nothing
GvPorcentajes.DataBind()
UpModalPorcentajes.Update()
RegistraScript("$('#DivModalPorcetajes').modal(`show`);")
End Sub
Protected Sub BtnModalConsultaPorcentaje_Click(sender As Object, e As EventArgs)
Dim ObjVentas As New ClsVentas()
Dim FechaI As Date = TxtModalFechaInicio.Text.ToDate
Dim FechaF As Date = TxtModalFechaFin.Text.ToDate
If TxtModalFechaInicio.Text = "" Then FechaI = MinFecha
If TxtModalFechaFin.Text = "" Then FechaF = MaxFecha
If ObjVentas.GetReporteVentasUtilidad("-1", -1, "-1", FechaI, FechaF, UsuarioActual.CveEmpresa, -1, -1, -1, -1, -1) Then
GvPorcentajes.DataSource = ObjVentas.DtResultados.FiltraParametros($" CveVenta > 0 AND PorNeto <= {TxtModalPorcentaje.Text.ToDecimal} AND TipoDocto = 'Ing' AND CveEstatusFactura IN(2,3) ")
End If
ObjVentas.Dispose()
GvPorcentajes.DataBind()
ObjVentas.Dispose()
UpModalPorcentajes.Update()
End Sub
Protected Sub GvPorcentajes_RowDataBound(sender As Object, e As GridViewRowEventArgs)
If e.Row.RowType = DataControlRowType.Header Then
e.Row.Cells(0).Text = SubProyectoConf
End If
End Sub
End Class