diff --git a/Ashx/E141.ashx b/Ashx/E141.ashx index e6995fe0d..801f1ab28 100644 --- a/Ashx/E141.ashx +++ b/Ashx/E141.ashx @@ -631,6 +631,7 @@ Public Class E141 : Implements IHttpHandler Dim DebeTimbrar As Boolean = False Dim ObjClientes As New ClsClientes() + Dim ObjInventario As New ClsInventarios(ObjClientes.IniciaTransacSQL()) ObjClientes.IniciaTransacSQL() Try @@ -638,7 +639,7 @@ Public Class E141 : Implements IHttpHandler DebeTimbrar = CBool(JsonRequest("timbrar")) End If - ObjFactura = CreaFactura(ObjClientes, "Ing", Resp, JsonRequest, Usuario) + ObjFactura = CreaFactura(ObjInventario, ObjClientes, "Ing", Resp, JsonRequest, Usuario) If ObjFactura IsNot Nothing Then Resp = ObjFactura.EmitirFactura(False, Transac:=ObjClientes.IniciaTransacSQL()) @@ -768,7 +769,7 @@ Public Class E141 : Implements IHttpHandler End Function - Private Function CreaFactura(ObjClientes As ClsClientes, TipoDocto As String, Resp As Modelos.Factura.MMensajeFactura, JsonRequest As JObject, UsuarioActual As Usuario) As Modelos.Factura + Private Function CreaFactura(ObjInventario As ClsInventarios, ObjClientes As ClsClientes, TipoDocto As String, Resp As Modelos.Factura.MMensajeFactura, JsonRequest As JObject, UsuarioActual As Usuario) As Modelos.Factura Try Resp.TieneError = False Dim Serie As String = "-1" @@ -867,36 +868,85 @@ Public Class E141 : Implements IHttpHandler End If 'FORMA DE PAGO + If JsonRequest("invoice_way_to_pay") Is Nothing Then + Resp.TieneError = False + Resp.Mensajes.Add("Debe asignar una forma de pago") + Return Nothing + End If + If Not String.IsNullOrEmpty(JsonRequest("invoice_way_to_pay").ToString()) Then Dim RowFormaPago As DataRow = GlobalDTVtaFormaPago.FiltroPrimero(String.Format("ClaveFormaPagoSAT = '{0}'", JsonRequest("invoice_way_to_pay").ToString())) - - ObjFactura.CveFormaPago33 = RowFormaPago("CveFormaPago").ToString().ToEntero() - ObjFactura.FormaPago33 = RowFormaPago("FormaPago").ToString() - ObjFactura.FormaPagoSAT33 = RowFormaPago("ClaveFormaPagoSAT").ToString() + If RowFormaPago IsNot Nothing Then + ObjFactura.CveFormaPago33 = RowFormaPago("CveFormaPago").ToString().ToEntero() + ObjFactura.FormaPago33 = RowFormaPago("FormaPago").ToString() + ObjFactura.FormaPagoSAT33 = RowFormaPago("ClaveFormaPagoSAT").ToString() + Else + Resp.TieneError = False + Resp.Mensajes.Add("No se encontro la forma de pago") + Return Nothing + End If + Else + Resp.TieneError = False + Resp.Mensajes.Add("Debe asignar una forma de pago") + Return Nothing End If 'USO CFDi + If JsonRequest("invoice_use") Is Nothing Then + Resp.TieneError = False + Resp.Mensajes.Add("Debe asignar un uso cfdi") + Return Nothing + End If + If Not String.IsNullOrEmpty(JsonRequest("invoice_use").ToString()) Then Dim RowUsoCFDi As DataRow = GlobalDTSATUsosCFDI.FiltroPrimero(String.Format("UsoCFDI = '{0}'", JsonRequest("invoice_use").ToString())) - - ObjFactura.CveUsoCFDI = RowUsoCFDi("CveUsoCFDI").ToString().ToEntero() - ObjFactura.UsoCFDI = RowUsoCFDi("Descripcion").ToString() - ObjFactura.ClaveUsoCFDI = RowUsoCFDi("UsoCFDI").ToString() + If RowUsoCFDi IsNot Nothing Then + ObjFactura.CveUsoCFDI = RowUsoCFDi("CveUsoCFDI").ToString().ToEntero() + ObjFactura.UsoCFDI = RowUsoCFDi("Descripcion").ToString() + ObjFactura.ClaveUsoCFDI = RowUsoCFDi("UsoCFDI").ToString() + Else + Resp.TieneError = False + Resp.Mensajes.Add("No se encontro el uso cfdi") + Return Nothing + End If + Else + Resp.TieneError = False + Resp.Mensajes.Add("Debe asignar un uso cfdi") + Return Nothing End If 'METODO DE PAGO - If Not String.IsNullOrEmpty(JsonRequest("invoice_payment_method").ToString()) Then - Dim RowMetodoPago As DataRow = GlobalDTVtaMetodoPago.FiltroPrimero(String.Format("ClaveMetodoPagoSAT = '{0}'", JsonRequest("invoice_payment_method").ToString())) - - ObjFactura.CveMetodoPago33 = RowMetodoPago("CveMetodoPago").ToString().ToEntero() - ObjFactura.MetodoPago33 = RowMetodoPago("MetodoPago").ToString() - ObjFactura.ClaveMetodoPagoSAT = RowMetodoPago("ClaveMetodoPagoSAT").ToString() + If JsonRequest("invoice_payment_method") Is Nothing Then + Resp.TieneError = False + Resp.Mensajes.Add("Debe asignar un método de pago") + Return Nothing End If - End If + If Not String.IsNullOrEmpty(JsonRequest("invoice_payment_method").ToString()) Then + Dim RowMetodoPago As DataRow = GlobalDTVtaMetodoPago.FiltroPrimero(String.Format("ClaveMetodoPagoSAT = '{0}'", JsonRequest("invoice_payment_method").ToString())) + If RowMetodoPago IsNot Nothing Then + ObjFactura.CveMetodoPago33 = RowMetodoPago("CveMetodoPago").ToString().ToEntero() + ObjFactura.MetodoPago33 = RowMetodoPago("MetodoPago").ToString() + ObjFactura.ClaveMetodoPagoSAT = RowMetodoPago("ClaveMetodoPagoSAT").ToString() + Else + Resp.TieneError = False + Resp.Mensajes.Add("No se encontro el método de pago") + Return Nothing + End If + Else + Resp.TieneError = False + Resp.Mensajes.Add("Debe asignar un método de pago") + Return Nothing + End If + + End If + + ObjFactura.CveAlmacen = GlobalDTAlmacen(CveEmpresa, CveTipoAlmacen:=1).FiltroPrimeroValor("CveAlmacen", $"CveSubProyecto={CveSubProyecto}").ToEntero() + + 'DETALLES - ObjFactura.DtDetalle = CreaDTDetalle(Resp, UsuarioActual, JsonRequest) + ObjFactura.DtDetalle = CreaDTDetalle(ObjInventario, ObjFactura, Resp, UsuarioActual, JsonRequest) If Resp.TieneError Then Resp.Mensajes.Add("No se pudieron agregar los productos/servicios") @@ -912,7 +962,6 @@ Public Class E141 : Implements IHttpHandler 'INVENTARIO If TipoDocto = "Ing" Then ObjFactura.DtInventario = ObjFactura.DtDetalle.Copy.FiltraParametros("CveTipoPS = 2") - ObjFactura.CveAlmacen = GlobalDTAlmacen(CveEmpresa, CveTipoAlmacen:=1).FiltroPrimeroValor("CveAlmacen", $"CveSubProyecto={CveSubProyecto}").ToEntero() ObjFactura.GenerarSalidaAlmacen = True ObjFactura.GenerarPDFFactura = False End If @@ -1104,7 +1153,7 @@ Public Class E141 : Implements IHttpHandler Next Return Timbre End Function - Private Function CreaDTDetalle(ByRef Retorno As Modelos.Factura.MMensajeFactura, UsuarioActual As Usuario, JsonRequest As JObject) As DataTable + Private Function CreaDTDetalle(ByRef ObjInventarios As ClsInventarios, ObjFactura As Modelos.Factura, ByRef Retorno As Modelos.Factura.MMensajeFactura, UsuarioActual As Usuario, JsonRequest As JObject) As DataTable Dim TmpDT = New DataTable TmpDT.Columns.Add("CveVenta", GetType(Integer)) TmpDT.Columns.Add("Consec", GetType(Integer)) @@ -1193,30 +1242,50 @@ Public Class E141 : Implements IHttpHandler Dim DescuentoPorPartida As Decimal = (DescuentoTotal / ListaPS.Count) Dim Consec As Integer = 1 - For Each Dr As JObject In ListaPS - Dim Cantidad As Decimal = Dr("quantity").ToString.ToDecimal() + For Each JsonPS As JObject In ListaPS + Dim Cantidad As Decimal = JsonPS("quantity").ToString.ToDecimal() - Dim DrPS As DataRow = GlobalDTPS(UsuarioActual.CveEmpresa, Codigo:=Dr("product_sku").ToString()).FiltroPrimero("") + Dim DrPS As DataRow = GlobalDTPS(UsuarioActual.CveEmpresa, Codigo:=JsonPS("product_sku").ToString()).FiltroPrimero("") If DrPS Is Nothing Then Retorno.TieneError = True - Retorno.Mensajes.Add(String.Format("No se pudo agregar el producto/servicio: {0}, no se encontró en el sistema", Dr("product_sku").ToString())) + Retorno.Mensajes.Add(String.Format("No se pudo agregar el producto/servicio: {0}, no se encontró en el sistema", JsonPS("product_sku").ToString())) Exit For End If 'VALIDAR QUE SEA EL MISMO PRODUCTO - If DrPS("Codigo").ToString() <> Dr("product_sku").ToString() Then + If DrPS("Codigo").ToString() <> JsonPS("product_sku").ToString() Then Retorno.TieneError = True - Retorno.Mensajes.Add(String.Format("No se pudo agregar el producto/servicio: {0}", Dr("PS").ToString())) + Retorno.Mensajes.Add(String.Format("No se pudo agregar el producto/servicio: {0}", DrPS("PS").ToString())) Exit For End If - Dim TotalOriginal As Decimal = Dr("total_cost").ToString.ToDecimal() + 'VALIDA EXISTENCIA ANTES DE GENERAR LA FACTURA + If ObjFactura.TipoDocto = "Ing" AndAlso DrPS("CveTipoPS").ToString() = "2" Then + Dim Existencia As Decimal = ObjInventarios.GetExistenciasPS(DrPS("CvePS").ToString.ToEntero, DrPS("CveUnidadMedida").ToString.ToEntero, UsuarioActual.CveEmpresa, ObjFactura.CveAlmacen, CveSubProyecto:=ObjFactura.CveSubProyecto, FechaMovto:=DateTime.Today.AddDays(1).ToString("yyyy/MM/dd HH:mm"), ExcluyeAdelantado:=1, PendientePorSurtir:=1, RestringirAlmacenes:=1, ExcluyeApartados:=-1) - Dim PUOrginal As Decimal = Dr("cost").ToString.ToDecimal() + If Cantidad > Existencia Then + Retorno.TieneError = True + Retorno.Mensajes.Add(String.Format("No hay existencia suficiente para este producto: {0}, cuenta con : {1}", DrPS("PSCodigo").ToString(), Existencia)) + Exit For + End If + End If + + + Dim TotalOriginal As Decimal = JsonPS("total_cost").ToString.ToDecimal() + + Dim PUOrginal As Decimal = JsonPS("cost").ToString.ToDecimal() Dim PorcentajeIVADefault As Decimal = 0.16D + Dim DrSubProyecto As DataRow = GlobalDTSubProyectos(-1, JsonRequest("branch_office_id").ToEntero(), CveEmpresa:=CveEmpresa).Rows(0) + + If DrSubProyecto IsNot Nothing Then + PorcentajeIVADefault = DrSubProyecto("IVA").ToString().ToDecimal() + Else + PorcentajeIVADefault = 0.16D + End If + Dim SubTotal2 As Decimal = (TotalOriginal / (1 + PorcentajeIVADefault)) Dim IVA As Decimal = Math.Abs(SubTotal2 - TotalOriginal) @@ -1227,12 +1296,12 @@ Public Class E141 : Implements IHttpHandler Dim Row As DataRow = AgregarProductoServicio(Retorno, UsuarioActual, TmpDT, Consec, Cantidad, DrPS("CveUnidadMedida").ToString.ToEntero, DrPS("UnidadMedida").ToString, DrPS("CveClasificacion").ToString.ToEntero, DrPS("Clasificacion").ToString, DrPS("CvePS").ToString.ToEntero, DrPS("PS").ToString, "", PUCalculado, DescuentoPorPartida, - CveSubProyecto:=JsonRequest("branch_office_id").ToEntero(), CveVentaDetalle:=-1, CveContratoDetalle:=-1, CveVentaDetalleRemision:=-1, RegeneraIEPS:=True) + CveSubProyecto:=ObjFactura.CveSubProyecto, CveVentaDetalle:=-1, CveContratoDetalle:=-1, CveVentaDetalleRemision:=-1, RegeneraIEPS:=True) If Row IsNot Nothing Then TmpDT.Rows.Add(Row) Else Retorno.TieneError = True - Retorno.Mensajes.Add(String.Format("No se pudo agregar el producto/servicio: {0}", Dr("PS").ToString())) + Retorno.Mensajes.Add(String.Format("No se pudo agregar el producto/servicio: {0}", DrPS("PSCodigo").ToString())) Exit For End If @@ -1408,9 +1477,10 @@ Public Class E141 : Implements IHttpHandler If Usuario IsNot Nothing Then Dim Resp As New Modelos.Factura.MMensajeFactura Dim ObjClientes As New ClsClientes() - ObjClientes.IniciaTransacSQL() + Dim ObjInventario As New ClsInventarios(ObjClientes.IniciaTransacSQL()) + Try - Dim ObjFactura = CreaFactura(ObjClientes, "Cot", Resp, JsonRequest, Usuario) + Dim ObjFactura = CreaFactura(ObjInventario, ObjClientes, "Cot", Resp, JsonRequest, Usuario) If ObjFactura IsNot Nothing Then Resp = ObjFactura.EmitirFactura(False, Transac:=ObjClientes.IniciaTransacSQL()) @@ -1447,7 +1517,9 @@ Public Class E141 : Implements IHttpHandler Else ObjClientes.Commit() End If + ObjClientes.Dispose() + ObjInventario.Dispose() Else TieneError = True RespuestaError.message = "no hay un usuario disponible" diff --git a/Compras/Compras.aspx.vb b/Compras/Compras.aspx.vb index 7a06ef3a6..e0306b3b0 100644 --- a/Compras/Compras.aspx.vb +++ b/Compras/Compras.aspx.vb @@ -18072,6 +18072,11 @@ Partial Class Compras_Compras Dim CveProyecto = If(DdlProyecto.SelectedValue.ToEntero > 0, DdlProyecto.SelectedValue.ToEntero, -1) DdlSubProyecto.Items.Clear() + 'SI NO SE VE EL PROYECTO NO FILTRAR POR PROYECTO + If Not DdlProyecto.Visible Then + CveProyecto = -1 + End If + DdlSubProyecto.DataSource = If(Not UsuarioActual.TienePermisoProceso(110), GlobalDTSubProyectosUsuarios(UsuarioActual.CveUsuario, CveProyecto, UsuarioActual.CveEmpresa, -1, 1), GlobalDTSubProyectos(CveProyecto, -1, UsuarioActual.CveEmpresa, 1)) DdlSubProyecto.DataBind() diff --git a/Compras/PopUpVerFactura.aspx.vb b/Compras/PopUpVerFactura.aspx.vb index f477a8d99..9ec3b4e3e 100644 --- a/Compras/PopUpVerFactura.aspx.vb +++ b/Compras/PopUpVerFactura.aspx.vb @@ -13,7 +13,8 @@ Imports Stimulsoft.Report Imports Stimulsoft.Report.Components Imports Stimulsoft.Report.Dictionary Imports Stimulsoft.Report.Web - +Imports Newtonsoft.Json.Linq + Partial Class PopUpVerFactura Inherits ClsPaginas @@ -495,8 +496,17 @@ Partial Class PopUpVerFactura 'PDF AJUSTE If UrlParametros("OP").ToString = "AJUSTE" Then + 'SI YA ESTA GUARDADO If UrlParametros("CVEGARANTIADETALLE") IsNot Nothing Then - ImprimirPDFAjuste(UrlParametros("CVEGARANTIADETALLE").ToString.ToEntero) + ImprimirPDFAjuste(UrlParametros("CVEGARANTIADETALLE").ToString.ToEntero) + Else + ImprimirPDFAjuste(CvePSAjuste:=UrlParametros("CVEPSAJUSTE").ToString.ToEntero(), CveCliente:=UrlParametros("CVECLIENTE").ToString.ToEntero(), + CveClienteDistribuidor:=UrlParametros("CVECLIENTEDISTRIBUIDOR").ToString.ToEntero(), Consec:=UrlParametros("CONSEC").ToString, + FolioGarantia:=UrlParametros("FOLIOGARANTIA").ToString, FechaAjuste:=UrlParametros("FECHAAJUSTE").ToString.ToDateTime(), FechaReclamacion:=UrlParametros("FECHARECLAMACION").ToString.ToDateTime(), + TipoDefecto:=UrlParametros("TIPODEFECTO").ToString, CveTipoUso:=UrlParametros("CVETIPOUSO").ToString.ToEntero(), CodigoEnsamble:=UrlParametros("CODIGOENSAMBLE").ToString, + CodigoLinea:=UrlParametros("CODIGOLINEA").ToString, CodigoInspeccion:=UrlParametros("CODIGOINSPECCION").ToString, PorcentajeAjuste:=UrlParametros("PORCENTAJEAJUSTE").ToString, + BCIAjuste:=UrlParametros("BCIAJUSTE").ToString, Etiqueta:=UrlParametros("ETIQUETA").ToString, Año:=UrlParametros("AÑO").ToString, Comprobante:=UrlParametros("COMPROBANTE").ToString, + ModeloAuto:=UrlParametros("MODELOAUTO").ToString, MarcaAuto:=UrlParametros("MARCAAUTO").ToString, CodigoTD:=UrlParametros("CODIGOTD").ToString) End If End If @@ -4638,6 +4648,134 @@ Partial Class PopUpVerFactura End If + params.Add(New ReportParameter("NombreEmpresa", UsuarioActual.Empresa.Empresa)) + params.Add(New ReportParameter("Consec", Consec)) + params.Add(New ReportParameter("FolioAcuse", FolioGarantia)) + + 'Informacion de Garantia o ajuste + params.Add(New ReportParameter("FechaInst", FechaAjuste.ToString("dd/MM/yyyy"))) + params.Add(New ReportParameter("Fecha", FechaReclamacion.ToString("dd/MM/yyyy"))) + params.Add(New ReportParameter("Defecto", TipoDefecto)) + params.Add(New ReportParameter("MesesUso", MesesUso)) + params.Add(New ReportParameter("PorcentajeAjuste", PorcentajeAjuste)) + + 'Informacion Acumulador + params.Add(New ReportParameter("CodEnsamble", CodigoEnsamble)) + params.Add(New ReportParameter("CodLinea", CodigoLinea)) + params.Add(New ReportParameter("CodInspeccion", CodigoInspeccion)) + params.Add(New ReportParameter("Tipo", BCIAjuste)) + params.Add(New ReportParameter("Marca", MarcaPS)) + params.Add(New ReportParameter("Etiqueta", Etiqueta)) + + 'Informacion Vehiculo + params.Add(New ReportParameter("MarcaAuto", MarcaAuto)) + params.Add(New ReportParameter("TipoAuto", ModeloAuto)) + + 'Informacion Consumidor + If (CveCliente > 0) Then + + Dim DatosClienteSeleccionado As DataRow = GlobalDTCliente(UsuarioActual.CveEmpresa).FiltroPrimero(String.Format("CveCliente = {0}", CveCliente)) + + Dim Nombre As String = "" + Dim Ciudad As String = "" + Dim Estado As String = "" + Dim Direccion As String = "" + Dim Telefono As String = "" + + If DatosClienteSeleccionado IsNot Nothing Then + Nombre = DatosClienteSeleccionado("Nombre").ToString + Ciudad = DatosClienteSeleccionado("Ciudad").ToString + Estado = DatosClienteSeleccionado("Estado").ToString + Direccion = DatosClienteSeleccionado("Direccion").ToString + Telefono = DatosClienteSeleccionado("Telefono").ToString + End If + + params.Add(New ReportParameter("NombreCliente", Nombre)) + params.Add(New ReportParameter("Direccion", Direccion)) + params.Add(New ReportParameter("CiudadEstadoConsumidor", String.Format("{0}, {1}", Ciudad, Estado))) + params.Add(New ReportParameter("TelConsumidor", Telefono)) + End If + + params.Add(New ReportParameter("Anio", Año)) + params.Add(New ReportParameter("Comprobante", Comprobante)) + params.Add(New ReportParameter("CodigoTD", CodigoTD)) + + If Imagen.Exists Then + params.Add(New ReportParameter("LogoPath", logouri)) + Else + params.Add(New ReportParameter("LogoPath", "")) + End If + + ImprimirPDF("Empresas/Grales/Formatos/Ajuste.rdlc", DtDatos, params, "Reporte de Ajuste", "PDF", Content_Disposition:="inline") + End Sub + + Private Sub ImprimirPDFAjuste(CvePSAjuste As Integer, CveCliente As Integer, CveClienteDistribuidor As Integer, Consec As String, FolioGarantia As String, FechaAjuste As DateTime, FechaReclamacion As DateTime, + TipoDefecto As String, CveTipoUso As Integer, CodigoEnsamble As String, CodigoLinea As String, CodigoInspeccion As String, PorcentajeAjuste As String, + BCIAjuste As String, Etiqueta As String, Año As String, Comprobante As String, ModeloAuto As String, MarcaAuto As String, CodigoTD As String) + + Dim MesesUso As String = "0" + + Dim MarcaPS As String = "" + Dim CveMarca As Integer = -1 + + Dim FechaI As Date = FechaAjuste.AddDays(1) + Dim FechaF As Date = FechaReclamacion + + Dim Dia As Integer = FechaI.Day + Try + 'validación adicional, para saber si el mes tiene 31 días y el actua es menor. + If FechaI.Day > Today.LastDayOfMonth.Day Then Dia = Today.LastDayOfMonth.Day + Dim FechaT As Date = String.Format("{0}/{1}/{2}", Dia, FechaF.Month, FechaF.Year).ToDate 'armo la fecha con el día del mes actual + + Dim MesesTrascurridos As Integer = Math.Round(DateDiff(DateInterval.Day, FechaI, FechaT) / 30.4, 2).ToEntero 'saco los meses y lo redondeo + + If FechaT > FechaF Then + 'todavía está en el mes actual. + MesesTrascurridos = MesesTrascurridos + Else + MesesTrascurridos = MesesTrascurridos + 1 + End If + + MesesUso = MesesTrascurridos.ToString + + Catch ex As Exception + OnError("Ocurrió un error al calcular los meses de uso", ex) + End Try + + + Dim ObjPS As New ClsProductosServicios + If ObjPS.GetPS(CvePSAjuste, -1, UsuarioActual.CveEmpresa) Then + MarcaPS = ObjPS.DtResultados.FiltroPrimeroValor("Marca", String.Format("CvePS = {0}", CvePSAjuste)) + End If + ObjPS.Dispose() + + Dim Imagen As New System.IO.FileInfo(String.Format("{0}/Logo.png", UsuarioActual.Empresa.Ruta)) + Dim logouri = String.Format("{0}://{1}:{2}/Empresas/{3}/Logo.png", Request.Url.Scheme, Request.Url.Host, Request.Url.Port, UsuarioActual.CveEmpresa) + Dim DtDatos As New DataTable + + Dim params As New List(Of ReportParameter) + + + 'Informacion Distribuidor + If (CveClienteDistribuidor > 0) Then + + Dim DatosClienteSeleccionado As DataRow = GlobalDTCliente(UsuarioActual.CveEmpresa).FiltroPrimero(String.Format("CveCliente = {0}", CveClienteDistribuidor)) + Dim CiudadEstado As String = "" + Dim Telefono As String = "" + Dim Nombre As String = "" + + If DatosClienteSeleccionado IsNot Nothing Then + CiudadEstado = String.Format("{0}, {1}", DatosClienteSeleccionado("Ciudad"), DatosClienteSeleccionado("Estado")) + Telefono = DatosClienteSeleccionado("Telefono").ToString + Nombre = DatosClienteSeleccionado("Nombre").ToString + End If + + params.Add(New ReportParameter("NombreDistribuidor", Nombre)) + params.Add(New ReportParameter("CiudadEstado", CiudadEstado)) + params.Add(New ReportParameter("TelCliente", Telefono)) + End If + + params.Add(New ReportParameter("NombreEmpresa", UsuarioActual.Empresa.Empresa)) params.Add(New ReportParameter("Consec", Consec)) params.Add(New ReportParameter("FolioAcuse", FolioGarantia)) diff --git a/Imagenes/favicongps.ico b/Imagenes/favicongps.ico new file mode 100644 index 000000000..75dc9049f Binary files /dev/null and b/Imagenes/favicongps.ico differ diff --git a/Inventarios/EntradasSalidas.aspx b/Inventarios/EntradasSalidas.aspx index 8c24fa9af..07fbf137c 100644 --- a/Inventarios/EntradasSalidas.aspx +++ b/Inventarios/EntradasSalidas.aspx @@ -100,6 +100,10 @@ +
  • + +
  • diff --git a/Inventarios/EntradasSalidas.aspx.vb b/Inventarios/EntradasSalidas.aspx.vb index 0cbaa5b97..c6c92e476 100644 --- a/Inventarios/EntradasSalidas.aspx.vb +++ b/Inventarios/EntradasSalidas.aspx.vb @@ -335,6 +335,10 @@ Partial Class Inventarios_EntradasSalidas If Request("CveMovimiento") IsNot Nothing AndAlso Request("CveMovimiento").ToString.ToEntero > 0 Then + If UsuarioActual.CveUsuario = 100 AndAlso UsuarioActual.CveEmpresa = 140 Then + LnkGenerarVirtual.Visible = True + End If + CargaDatos(Request("CveMovimiento").ToString.ToEntero) 'CargaGvPaqueteria() Else @@ -1297,7 +1301,7 @@ Partial Class Inventarios_EntradasSalidas End Sub - Protected Sub AddNew(CvePS As Integer, PS As String, CveUM As Integer, UM As String, Cantidad As Double, PU As Double, Serie As String, CodigoAF As String, Codigo As String, CveAF As String, Observaciones As String, Lote As String, FechaCaducidad As Date, CveSeccionAlmacen As Integer, SeccionAlmacen As String) + Protected Sub AddNew(CvePS As Integer, PS As String, CveUM As Integer, UM As String, Cantidad As Double, PU As Double, Serie As String, CodigoAF As String, Codigo As String, CveAF As String, Observaciones As String, Lote As String, FechaCaducidad As Date, CveSeccionAlmacen As Integer, SeccionAlmacen As String, Optional CargarGV As Boolean = True) If DdlAlmacen.SelectedValue.ToEntero <= 0 Then Alert("Seleccione un almacen", TipoMensaje.MsgAdvertencia) : RegistraScript("playsonidito('142608__autistic-lucario__error.wav')") : DdlProducto2.SelectedText = "" : Exit Sub Dim Valido As Boolean = True @@ -1378,8 +1382,12 @@ Partial Class Inventarios_EntradasSalidas registro.Item("Observaciones") = Observaciones registro.Item("AplicaCaducidad") = RowPS("AplicaCaducidad").ToString DtMovimientos.Rows.Add(registro) - CargaGVM(DtMovimientos.FiltraParametros("Estatus <> 'E' ")) - RegistraScript("playsonidito('beep-07.wav')") + + If CargarGV Then + CargaGVM(DtMovimientos.FiltraParametros("Estatus <> 'E' ")) + RegistraScript("playsonidito('beep-07.wav')") + End If + End If End Sub @@ -2375,7 +2383,7 @@ Partial Class Inventarios_EntradasSalidas #Region " GVM " Private Sub CargaGVM(DtTemp As DataTable) - GvM.DataSource = DtTemp + GvM.DataSource = DtTemp '.FiltraPorIndices(0, If(DtTemp.Rows.Count > 20, 19, DtTemp.Rows.Count - 1)) GvM.DataBind() EscondeColumnasGVM(DtTemp) @@ -4567,102 +4575,105 @@ Partial Class Inventarios_EntradasSalidas End If dt.TableName = "Datos" - Dim DTSeccionesAlmacen As DataTable = GlobalDTSeccionAlmacen(UsuarioActual.CveEmpresa, -1) - If Not ErrorArchivo Then - NumRow = 0 - Dim RowNoEncontrados As String = "" - Dim NumAgregados As Integer = 0 - For Each Row As DataRow In dt.Rows - Dim Cantidad As Decimal = Row("Cantidad").ToString.ToDecimal - Dim UM As String = Row("UM").ToString - Dim Codigo As String = Row("Código").ToString.Trim.ToUpper - 'Dim CodigoBarras As String = Row("Codigo Barras").ToString.Trim.ToUpper - Dim ProductoServicio As String = Row("Producto/Servicio").ToString.Trim.ToUpper - Dim PrecioUnitario As Decimal = Row("Precio Unitario").ToString.ToDecimal - Dim Serie As String = Row("Serie").ToString - Dim Lote As String = Row("Lote").ToString - Dim Caducidad As String = Row("Caducidad").ToString - Dim SeccionAlmacen As String = Row("SeccionAlmacen").ToString + Try + Dim DTSeccionesAlmacen As DataTable = GlobalDTSeccionAlmacen(UsuarioActual.CveEmpresa, -1) + If Not ErrorArchivo Then + NumRow = 0 + Dim RowNoEncontrados As String = "" + Dim NumAgregados As Integer = 0 - Dim CvePS As Integer = 0 - Dim CveUM As Integer = 0 + For Each Row As DataRow In dt.Rows + Dim Cantidad As Decimal = Row("Cantidad").ToString.ToDecimal + Dim UM As String = Row("UM").ToString + Dim Codigo As String = Row("Código").ToString.Trim.ToUpper + 'Dim CodigoBarras As String = Row("Codigo Barras").ToString.Trim.ToUpper + Dim ProductoServicio As String = Row("Producto/Servicio").ToString.Trim.ToUpper + Dim PrecioUnitario As Decimal = Row("Precio Unitario").ToString.ToDecimal + Dim Serie As String = Row("Serie").ToString + Dim Lote As String = Row("Lote").ToString + Dim Caducidad As String = Row("Caducidad").ToString + Dim SeccionAlmacen As String = Row("SeccionAlmacen").ToString - NumRow = NumRow + 1 + Dim CvePS As Integer = 0 + Dim CveUM As Integer = 0 - Dim CveSeccionAlmacen As Integer = -1 - If SeccionAlmacen <> "" Then - CveSeccionAlmacen = DTSeccionesAlmacen.FiltroPrimeroValor("CveSeccion", String.Format("SeccionAlmacen = '{0}'", SeccionAlmacen)).ToEntero - End If + NumRow = NumRow + 1 - If Codigo <> "" Then - Dim StrArray() As String = GetPS("Codigo", Codigo).Split("|"c) - If StrArray.Length > 0 Then - If CBool(StrArray(0)) = True Then - CvePS = StrArray(1).ToEntero - Else - RowNoEncontrados &= StrArray(1) & "<\BR>" - End If + Dim CveSeccionAlmacen As Integer = -1 + If SeccionAlmacen <> "" Then + CveSeccionAlmacen = DTSeccionesAlmacen.FiltroPrimeroValor("CveSeccion", String.Format("SeccionAlmacen = '{0}'", SeccionAlmacen)).ToEntero End If - 'ElseIf CodigoBarras <> "" Then - ' Dim StrArray() As String = GetPS("CodigoBarras", CodigoBarras).Split("|"c) - ' If StrArray.Length > 0 Then - ' If CBool(StrArray(0)) = True Then - ' CvePS = StrArray(1).ToEntero - ' Else - ' RowNoEncontrados &= StrArray(1) & "<\BR>" - ' End If - ' End If - ElseIf ProductoServicio <> "" Then - Dim StrArray() As String = GetPS("PS", ProductoServicio).Split("|"c) - If StrArray.Length > 0 Then - If CBool(StrArray(0)) = True Then - CvePS = StrArray(1).ToEntero - Else - RowNoEncontrados &= StrArray(1) & "<\BR>" + + + + If Codigo <> "" Then + Dim StrArray() As String = GetPS("Codigo", Codigo).Split("|"c) + If StrArray.Length > 0 Then + If CBool(StrArray(0)) = True Then + CvePS = StrArray(1).ToEntero + Else + RowNoEncontrados &= StrArray(1) & "<\BR>" + End If End If + 'ElseIf CodigoBarras <> "" Then + ' Dim StrArray() As String = GetPS("CodigoBarras", CodigoBarras).Split("|"c) + ' If StrArray.Length > 0 Then + ' If CBool(StrArray(0)) = True Then + ' CvePS = StrArray(1).ToEntero + ' Else + ' RowNoEncontrados &= StrArray(1) & "<\BR>" + ' End If + ' End If + ElseIf ProductoServicio <> "" Then + Dim StrArray() As String = GetPS("PS", ProductoServicio).Split("|"c) + If StrArray.Length > 0 Then + If CBool(StrArray(0)) = True Then + CvePS = StrArray(1).ToEntero + Else + RowNoEncontrados &= StrArray(1) & "<\BR>" + End If + End If + Else + RowNoEncontrados &= "<\BR>    - En la fila " & NumRow & " no se especificó código, código de barras ó descripción." + End If + + If CvePS > 0 Then + Dim DrPS As DataRow = GlobalDTPS(UsuarioActual.CveEmpresa, CvePS:=CvePS).Rows(0) + + If DrPS IsNot Nothing AndAlso String.IsNullOrEmpty(UM) Then + CveUM = DrPS("CveUnidadMedida").ToString().ToEntero() + UM = GlobalDTUnidadesMedida(UsuarioActual.CveEmpresa).FiltroPrimeroValor("UnidadMedida", $"CveUnidadMedida={CveUM}") + End If + + AddNew(CvePS, ProductoServicio, CveUM, UM, Cantidad, PrecioUnitario, Serie.Replace(" ", String.Empty), "", "-1", "-1", "", + Lote, Caducidad.ToDate, CveSeccionAlmacen, SeccionAlmacen, CargarGV:=False) + + NumAgregados = NumAgregados + 1 + + End If + + Next + + If RowNoEncontrados.Length > 0 Then + Alert("Se Cargaron " & NumAgregados & " Productos o Servicios.<\BR>Los siguientes Productos o Servicios no se encontraron en la Base de Datos.<\BR>" & RowNoEncontrados, TipoMensaje.MsgAdvertencia) + If NumAgregados > 0 Then + RegistraScript("$('#DivCargaExcel').modal('hide')", "hidemodal") + TxtExcel.Text = "[]" End If Else - RowNoEncontrados &= "<\BR>    - En la fila " & NumRow & " no se especificó código, código de barras ó descripción." - End If - - If CvePS > 0 Then - 'CveUM = GlobalDTPS(UsuarioActual.CveEmpresa).FiltroPrimeroValor("CveUnidadMedida", $"CvePS = '{CvePS}'").ToString.ToEntero - - txtCantidad.Text = Cantidad.ToString - DdlProducto2.SelectedValue = CvePS.ToString - DdlProducto2.SelectedText = Codigo + " - " + ProductoServicio - txtPrecio.Text = PrecioUnitario.ToString - - ElProductoChange() - TxtnSerie.Text = Serie - TxtnLote.Text = Lote - DdlSeccionAlmacen.SelectedValueExist(CveSeccionAlmacen.ToString) - TxtnFechaCaducidad.Text = If(Caducidad = "", MinFecha.ToString, Caducidad) - AgregarPS() - txtPrecio.Text = "" - DdlUnidad.SelectedItem.Text = "" - TxtnSerie.Text = "" - TxtnLote.Text = "" - TxtnFechaCaducidad.Text = "" - 'DdlSeccionAlmacen.SelectedValue = "-1" - NumAgregados = NumAgregados + 1 - - End If - - Next - - If RowNoEncontrados.Length > 0 Then - Alert("Se Cargaron " & NumAgregados & " Productos o Servicios.<\BR>Los siguientes Productos o Servicios no se encontraron en la Base de Datos.<\BR>" & RowNoEncontrados, TipoMensaje.MsgAdvertencia) - If NumAgregados > 0 Then + Alert("Se Cargaron " & NumAgregados & " Productos o Servicios correctamente.") RegistraScript("$('#DivCargaExcel').modal('hide')", "hidemodal") TxtExcel.Text = "[]" End If - Else - Alert("Se Cargaron " & NumAgregados & " Productos o Servicios correctamente.") - RegistraScript("$('#DivCargaExcel').modal('hide')", "hidemodal") - TxtExcel.Text = "[]" + + CargaGVM(DtMovimientos.FiltraParametros("Estatus <> 'E' ")) + RegistraScript("playsonidito('beep-07.wav')") + End If - End If + Catch ex As Exception + OnError("Ocurrió un error al cargar los datos", ex) + End Try + End If dt.Dispose() End Sub @@ -4969,4 +4980,73 @@ Partial Class Inventarios_EntradasSalidas + Protected Sub LnkGenerarVirtual_Click(sender As Object, e As EventArgs) + If CveMovimiento > 0 Then + Dim DtPSVirtual As New DataTable("DtTamanios") + Dim ErrorMovInv As Boolean = False + + Dim CveMovimientoVirtual As Integer = -1 + Dim FolioVirtual As Integer = -1 + + Dim tCveAlmacen As Integer = -1 + Dim tOrigen As Integer = -1 + Dim ObjInventario As New ClsInventarios + ObjInventario.IniciaTransacSQL() + + Try + If ObjInventario.GetMovimientos(CveMovimiento, -1, -1, UsuarioActual.CveEmpresa) AndAlso ObjInventario.DtResultados.Rows.Count > 0 Then + tCveAlmacen = ObjInventario.DtResultados.FiltroPrimeroValor("CveAlmacen").ToEntero() + tOrigen = ObjInventario.DtResultados.FiltroPrimeroValor("Origen").ToEntero() + End If + + Dim CveAlmacenVirtual As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa, CveAlmacen:=tCveAlmacen).FiltroPrimeroValor("CveAlmacenVirtual").ToEntero() + + 'VERIFICA SI TIENE ALMACEN VIRTUAL + If CveAlmacenVirtual > 0 Then + If ObjInventario.GetMovimientosDetalleVirtual(CveMovimiento, UsuarioActual.CveEmpresa) Then + DtPSVirtual = ObjInventario.DtResultados + End If + + If DtPSVirtual IsNot Nothing AndAlso DtPSVirtual.Rows.Count > 0 Then + + CveMovimientoVirtual = ObjInventario.AddMovimiento(CveAlmacenVirtual, If(tOrigen > 0, 2, 3), 1, Now, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, -1, -1, -1, CveMovimientoRelacionado:=CveMovimiento, Observaciones:=TxtObservaciones.Text.Trim, Modulo:="ES/GV") + FolioVirtual = ObjInventario.Folio + + For Each RowUsado As DataRow In DtPSVirtual.Rows + Dim CvePS = RowUsado("CvePS").ToString().ToEntero() + Dim CantidadUsado As Decimal = RowUsado("Cantidad").ToString().ToDecimal() + Dim PU As Decimal = RowUsado("Cargo").ToString().ToDecimal() + Dim CveUM As Integer = RowUsado("CveUM").ToString().ToEntero() + + If Not ObjInventario.AddMovimientoDetalle(CveMovimientoVirtual, CantidadUsado, CveUM, CvePS, PU, -1, CveUsuarioModifico:=UsuarioActual.CveUsuario) Then + ErrorMovInv = True + Exit For + End If + Next + Else + ErrorMovInv = True + Alert("No hay usados para generar el virtual", TipoMensaje.MsgAdvertencia) + End If + Else + ErrorMovInv = True + Alert("El almacen no tiene vinculado un almacen virtual", TipoMensaje.MsgAdvertencia) + End If + Catch ex As Exception + ErrorMovInv = True + End Try + + If ErrorMovInv Then + ObjInventario.RollBack() + Else + ObjInventario.Commit() + End If + + ObjInventario.Dispose() + + If CveMovimientoVirtual > 0 AndAlso Not ErrorMovInv Then + Alert($"Se generó el movimiento virtual con el folio:{FolioVirtual}") + End If + End If + + End Sub End Class diff --git a/Inventarios/TraspasoAlmacen.aspx.vb b/Inventarios/TraspasoAlmacen.aspx.vb index 5e886bbf8..887a7d687 100644 --- a/Inventarios/TraspasoAlmacen.aspx.vb +++ b/Inventarios/TraspasoAlmacen.aspx.vb @@ -3065,7 +3065,13 @@ Partial Class Inventarios_TraspasoAlmacen Dim DrAlmO As DataRow = GlobalDTAlmacen(UsuarioActual.CveEmpresa, CveAlmacen:=DdlAlmacenOrigen.SelectedValue.ToEntero).FiltroPrimero("") If DrAlmO("CveTipoAlmacen").ToString.ToEntero = 26 Then 'costeados - DdlAlmacenDestino.DataSource = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltraParametros("CveTipoAlmacen IN (26) AND Estatus = 'Activo'") + DdlAlmacenDestino.DataSource = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltraParametros("CveTipoAlmacen IN (26) AND Estatus = 'Activo'") + DdlAlmacenDestino.DataBind() + DdlAlmacenDestino.Items.Insert(0, New ListItem("Seleccione", "-1")) + + ElseIf DrAlmO("CveTipoAlmacen").ToString.ToEntero = 22 Then 'Recepcion de Usados + + DdlAlmacenDestino.DataSource = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltraParametros("CveTipoAlmacen IN (22) AND Estatus = 'Activo'") DdlAlmacenDestino.DataBind() DdlAlmacenDestino.Items.Insert(0, New ListItem("Seleccione", "-1")) Else diff --git a/LogIn.aspx b/LogIn.aspx index ec14d4d0f..d9d8a3fd6 100644 --- a/LogIn.aspx +++ b/LogIn.aspx @@ -5,7 +5,7 @@ <%= If(Request.Url.Host.ToUpper().Contains("signalsgps".ToUpper()), "", "SIG -") %> Inicio de Sesión - + diff --git a/LogIn.aspx.vb b/LogIn.aspx.vb index 0adbb361c..28fdeb150 100644 --- a/LogIn.aspx.vb +++ b/LogIn.aspx.vb @@ -72,6 +72,7 @@ Partial Class LogIn Ltlcopyright2.Text = "2019 © Sistema de Monitoreo y Telemedición SA de CV" PnlLoginB.CssClass = "logincint login-form " PnlContraB.CssClass = "logincint login-form " + lnkFavicon.Href = "/Imagenes/favicongps.ico" Else End If diff --git a/Site.master b/Site.master index 30390b077..0996ebb05 100644 --- a/Site.master +++ b/Site.master @@ -37,7 +37,7 @@ - + diff --git a/Site.master.vb b/Site.master.vb index 4cfc112f6..e35e3893b 100644 --- a/Site.master.vb +++ b/Site.master.vb @@ -74,6 +74,12 @@ Partial Class Site TxtTit.Visible = True End If + If UsuarioActual.Empresa.CvePlataforma = 3 Then + lnkFavicon.Href = "/Imagenes/favicongps.ico" + Else + lnkFavicon.Href = "/Imagenes/favicon.ico" + End If + Dim thisURL As String = Request.Url.Segments(Request.Url.Segments.Count - 1) If thisURL.Equals("WizardRegistro.aspx") OrElse thisURL.Equals("Registro.aspx") Then LitTit.Text = "AD  Soluciones en TI " diff --git a/SiteGPS.master b/SiteGPS.master index 6d7ce01e1..0f7e51b27 100644 --- a/SiteGPS.master +++ b/SiteGPS.master @@ -58,7 +58,7 @@ - + diff --git a/SiteGPS.master.vb b/SiteGPS.master.vb index a0aa82fc9..81010cdad 100644 --- a/SiteGPS.master.vb +++ b/SiteGPS.master.vb @@ -326,7 +326,7 @@ Partial Class SiteGPS LtlMNotificaciones.Text = Notificaciones.ToString If countNotificaciones > 0 Then - RegistraScript($" var newTitle = '(' + {countNotificaciones} + ') ' + 'SIG GPS'; + RegistraScript($" var newTitle = '(' + {countNotificaciones} + ') ' + 'SIGNALS GPS'; document.title = newTitle; ") End If diff --git a/Ventas/PV.aspx b/Ventas/PV.aspx index 2786cb0f2..fdfef6fe7 100644 --- a/Ventas/PV.aspx +++ b/Ventas/PV.aspx @@ -589,7 +589,7 @@
    - +
    @@ -837,11 +837,11 @@ - Total: + Total: - + @@ -1950,13 +1950,14 @@ - + - + + @@ -2861,9 +2862,9 @@ - + <%-- - + --%>
    @@ -3114,6 +3115,15 @@