From 8037a6f17b0cdb372b13b0d0ea3ac8f8ba2df23e Mon Sep 17 00:00:00 2001 From: Jonathan Alexis Perez Morales Date: Fri, 9 Oct 2020 14:32:46 -0700 Subject: [PATCH 01/36] Cambiar porcentaje IVA al editar cotizacion --- Ventas/Ventas.aspx.vb | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/Ventas/Ventas.aspx.vb b/Ventas/Ventas.aspx.vb index fa4571f56..de5366a5a 100644 --- a/Ventas/Ventas.aspx.vb +++ b/Ventas/Ventas.aspx.vb @@ -24747,6 +24747,10 @@ Partial Class Ventas GvImpuestosLocales2.Enabled = True + If DdlTipoComprobante.SelectedValue = "Cot" Then + DdlIVA.Visible = True + End If + BloqueaCondiconesPago() UpPS.Update() @@ -26539,6 +26543,11 @@ Partial Class Ventas #Region "PORCENTAJE IVA" Protected Sub DdlIVA_SelectedIndexChanged(sender As Object, e As EventArgs) If Not CveVenta > 0 Or EsCreaApartirDe Or CveDevolucion > 0 Then RecalculaIVA() + + If ModalidadEdicion AndAlso DdlTipoComprobante.SelectedValue = "Cot" Then + RecalculaIVA() + End If + End Sub Private Sub RecalculaIVA() From a4eef95158f89b8643c630fed5f3e9a84ee7e7b7 Mon Sep 17 00:00:00 2001 From: Jonathan Alexis Perez Morales Date: Fri, 9 Oct 2020 14:48:20 -0700 Subject: [PATCH 02/36] Quitar boton de editar erroneo en cotizaciones --- Ventas/Ventas.aspx.vb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Ventas/Ventas.aspx.vb b/Ventas/Ventas.aspx.vb index de5366a5a..bd10e6eca 100644 --- a/Ventas/Ventas.aspx.vb +++ b/Ventas/Ventas.aspx.vb @@ -2157,7 +2157,7 @@ Partial Class Ventas DdlSubProyectoDatos.Enabled = False BtnEmitirImprimir.Visible = False BtnCrearApartirDe.Visible = True - If UsuarioActual.TienePermisoProceso(302) Then BtnEditar.Visible = True + If UsuarioActual.TienePermisoProceso(302) AndAlso DdlTipoComprobante.SelectedValue <> "Cot" Then BtnEditar.Visible = True 'DdlEstatus.Enabled = True DivFechaAnticipoCliente.Visible = True From c92fb2fdd791cb072775ef79b121c5121a69cf29 Mon Sep 17 00:00:00 2001 From: rrene Date: Sat, 10 Oct 2020 17:50:41 -0700 Subject: [PATCH 03/36] -- cambios en contabilidad --- App_Code/ClsCompras.vb | 6 +- App_Code/ClsContabilidad.vb | 401 ++++++++++++++++++------------------ App_Code/Modelos.vb | 4 +- 3 files changed, 208 insertions(+), 203 deletions(-) diff --git a/App_Code/ClsCompras.vb b/App_Code/ClsCompras.vb index cd1106378..d2fef34d1 100644 --- a/App_Code/ClsCompras.vb +++ b/App_Code/ClsCompras.vb @@ -2183,13 +2183,14 @@ Public Class ClsCompras #Region " ESTATUS ALMACEN " - Public Function UpdateEstatusAlmacen(CveCompra As Integer, ValorEstatus As Integer) As Boolean + Public Function UpdateEstatusAlmacen(CveCompra As Integer, ValorEstatus As Integer, CveUsuario As Integer) As Boolean Dim Retorno As Boolean = False DataAdapter("PA_Comp_ComprasEstatusAlmacenUpdate") With SqlAdapter.SelectCommand.Parameters .Add("@CveCompra", SqlDbType.Int).Value = CveCompra .Add("@Estatus", SqlDbType.Int).Value = ValorEstatus + .Add("@CveUsuario", SqlDbType.Int).Value = CveUsuario End With Try @@ -2201,13 +2202,14 @@ Public Class ClsCompras Return Retorno End Function - Public Function UpdateEstatusAlmacenDetalle(CveCompraDetalle As Integer, ValorEstatus As Integer) As Boolean + Public Function UpdateEstatusAlmacenDetalle(CveCompraDetalle As Integer, ValorEstatus As Integer, CveUsuario As Integer) As Boolean Dim Retorno As Boolean = False DataAdapter("PA_Comp_ComprasDetalleEstatusAlmacenUpdate") With SqlAdapter.SelectCommand.Parameters .Add("@CveCompraDetalle", SqlDbType.Int).Value = CveCompraDetalle .Add("@Estatus", SqlDbType.Int).Value = ValorEstatus + .Add("@CveUsuario", SqlDbType.Int).Value = CveUsuario End With Try diff --git a/App_Code/ClsContabilidad.vb b/App_Code/ClsContabilidad.vb index 4085f9b24..c175d592d 100644 --- a/App_Code/ClsContabilidad.vb +++ b/App_Code/ClsContabilidad.vb @@ -153,22 +153,22 @@ Public Class ClsContabilidad - Public Function CuentasContablesSigGet(cveEmpresa As Int32) As Boolean - Dim retorno As Boolean = False - DataAdapter("PA_Conta_CuentasContablesSigGet", CommandType.StoredProcedure) - With SqlAdapter.SelectCommand.Parameters - .Add("@CveEmpresa", SqlDbType.Int).Value = cveEmpresa - End With - Try - SqlAdapter.Fill(Data) - retorno = True - Catch ex1 As SqlException - OnError("Ocurrió un error al obtener las Cuentas Contables", ex1, SqlAdapter.SelectCommand.Parameters.ParametrosInfo) - Catch ex As Exception - OnError("Ocurrió un error al obtener las Cuentas Contables", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo) - End Try - Return retorno - End Function + 'Public Function CuentasContablesSigGet(cveEmpresa As Int32) As Boolean + ' Dim retorno As Boolean = False + ' DataAdapter("PA_Conta_CuentasContablesSigGet", CommandType.StoredProcedure) + ' With SqlAdapter.SelectCommand.Parameters + ' .Add("@CveEmpresa", SqlDbType.Int).Value = cveEmpresa + ' End With + ' Try + ' SqlAdapter.Fill(Data) + ' retorno = True + ' Catch ex1 As SqlException + ' OnError("Ocurrió un error al obtener las Cuentas Contables", ex1, SqlAdapter.SelectCommand.Parameters.ParametrosInfo) + ' Catch ex As Exception + ' OnError("Ocurrió un error al obtener las Cuentas Contables", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo) + ' End Try + ' Return retorno + 'End Function #Region " C O N T A B I L I D A D - P R E P O L I Z A" Public Function ObtenerTipoPoliza(Valor1 As String, Valor2 As String, CveEmpresa As Integer) As Integer @@ -1118,8 +1118,9 @@ Public Class ClsContabilidad Public Function ContabilizarPrePoliza(CvePrePoliza As Integer, CveUsuario As Integer, Empresa As Empresa, Optional Fecha As Date = MinFecha, Optional Concepto As String = "", Optional ObjConta As ClsContPAQi = Nothing, Optional pIDPoliza As Integer = -1) As Boolean - + Dim StrLog As New StringBuilder Dim Retorno As Boolean = False + StrLog.AppendFormat("CvePrep:{0} - Inicio", CvePrePoliza) If Empresa.TipoContabilizacion = 1 Then ' contabilidad en SIG @@ -1396,6 +1397,8 @@ Public Class ClsContabilidad If Not ContaCompartida Then ObjConta.Dispose() End If + StrLog.AppendFormat(" - Fin") + StrLog.ToString.GuardaLogAD("LogContabilidazacion") Return Retorno End Function @@ -4645,25 +4648,25 @@ Public Class ClsContabilidad Return Retorno End Function - Public Function GetSaldoCuenta(IdCuenta As Integer, TipoMovto As Integer, Ejercicio As Integer) As Boolean - Dim Retorno As Boolean + 'Public Function GetSaldoCuenta(IdCuenta As Integer, TipoMovto As Integer, Ejercicio As Integer) As Boolean + ' Dim Retorno As Boolean - If TipoMovto = 0 Then - DataAdapter(String.Format("SELECT SUM(CASE WHEN TipoMovto = 1 THEN -1 ELSE 1 END * Importe) AS Saldo from Conta_PolizasDetalle CD inner join Conta_Polizas CP on CP.CvePoliza=CD.CvePoliza and year(CP.Fecha)={1} WHERE CveCuenta = {0}", IdCuenta, Ejercicio), CommandType.Text) - Else - DataAdapter(String.Format("SELECT SUM(CASE WHEN TipoMovto = 0 THEN -1 ELSE 1 END * Importe) AS Saldo from Conta_PolizasDetalle CD inner join Conta_Polizas CP on CP.CvePoliza=CD.CvePoliza and year(CP.Fecha)={1} WHERE CveCuenta = {0} ", IdCuenta, Ejercicio), CommandType.Text) - End If + ' If TipoMovto = 0 Then + ' DataAdapter(String.Format("SELECT SUM(CASE WHEN TipoMovto = 1 THEN -1 ELSE 1 END * Importe) AS Saldo from Conta_PolizasDetalle CD inner join Conta_Polizas CP on CP.CvePoliza=CD.CvePoliza and year(CP.Fecha)={1} WHERE CveCuenta = {0}", IdCuenta, Ejercicio), CommandType.Text) + ' Else + ' DataAdapter(String.Format("SELECT SUM(CASE WHEN TipoMovto = 0 THEN -1 ELSE 1 END * Importe) AS Saldo from Conta_PolizasDetalle CD inner join Conta_Polizas CP on CP.CvePoliza=CD.CvePoliza and year(CP.Fecha)={1} WHERE CveCuenta = {0} ", IdCuenta, Ejercicio), CommandType.Text) + ' End If - Try - SqlAdapter.Fill(Data) - 'Retorno = Math.Round(SqlCommand.ExecuteScalar.ToString.ToDouble, 2) - Retorno = True - Catch ex As Exception - Me.OnError("Ocurrió un error al obtener eL saldo de la cuenta.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo()) - End Try + ' Try + ' SqlAdapter.Fill(Data) + ' 'Retorno = Math.Round(SqlCommand.ExecuteScalar.ToString.ToDouble, 2) + ' Retorno = True + ' Catch ex As Exception + ' Me.OnError("Ocurrió un error al obtener eL saldo de la cuenta.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo()) + ' End Try - Return Retorno - End Function + ' Return Retorno + 'End Function Public Function GetRepPresupuestosEgresosSaldos(Ejercicio As Integer, Fecha As Date, Capitulo As String, CveClasificacion As Integer, CveFuenteFinanciamiento As Integer, CveProgramaOperativo As Integer, CveUnidadAdministrativa As Integer, CveTipoGasto As Integer, Gpo As Integer, CveEmpresa As Integer) As Boolean Dim Retorno As Boolean = False DataAdapter("PA_PresupuestosEgresosSaldosRep") @@ -4742,138 +4745,138 @@ Public Class ClsContabilidad Return Retorno End Function - Public Function Conta_ContabilizaPrePoliza(CvePrepoliza As Integer, Ejercicio As Integer) As Boolean - Dim Retorno = False + 'Public Function Conta_ContabilizaPrePoliza(CvePrepoliza As Integer, Ejercicio As Integer) As Boolean + ' Dim Retorno = False - DataAdapter("PA_Conta_ContabilizaPrepolizas") + ' DataAdapter("PA_Conta_ContabilizaPrepolizas") - With SqlAdapter.SelectCommand.Parameters - .Add("@CvePrepoliza", SqlDbType.Int).Value = CvePrepoliza - .Add("@Ejercicio", SqlDbType.Int).Value = Ejercicio - .Add("@Error", SqlDbType.Int).Direction = ParameterDirection.Output - End With + ' With SqlAdapter.SelectCommand.Parameters + ' .Add("@CvePrepoliza", SqlDbType.Int).Value = CvePrepoliza + ' .Add("@Ejercicio", SqlDbType.Int).Value = Ejercicio + ' .Add("@Error", SqlDbType.Int).Direction = ParameterDirection.Output + ' End With - Try - SqlAdapter.Fill(Data) - If SqlAdapter.SelectCommand.Parameters("@Error").Value.ToString.ToEntero = 0 Then - Retorno = True - Else - Retorno = False - End If - Catch ex As Exception - Me.OnError("Ocurrió un error al contabilizar la prepoliza", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo()) - End Try + ' Try + ' SqlAdapter.Fill(Data) + ' If SqlAdapter.SelectCommand.Parameters("@Error").Value.ToString.ToEntero = 0 Then + ' Retorno = True + ' Else + ' Retorno = False + ' End If + ' Catch ex As Exception + ' Me.OnError("Ocurrió un error al contabilizar la prepoliza", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo()) + ' End Try - Return Retorno - End Function - Public Function Conta_CompactaPrePoliza(CvePrepoliza As Integer) As Boolean - Dim Retorno = False + ' Return Retorno + 'End Function + 'Public Function Conta_CompactaPrePoliza(CvePrepoliza As Integer) As Boolean + ' Dim Retorno = False - DataAdapter("PA_Comp_CompactaPrepoliza") + ' DataAdapter("PA_Comp_CompactaPrepoliza") - With SqlAdapter.SelectCommand.Parameters - .Add("@CvePrePoliza", SqlDbType.Int).Value = CvePrepoliza - .Add("@Error", SqlDbType.Int).Direction = ParameterDirection.Output - End With + ' With SqlAdapter.SelectCommand.Parameters + ' .Add("@CvePrePoliza", SqlDbType.Int).Value = CvePrepoliza + ' .Add("@Error", SqlDbType.Int).Direction = ParameterDirection.Output + ' End With - Try - SqlAdapter.Fill(Data) - If SqlAdapter.SelectCommand.Parameters("@Error").Value.ToString.ToEntero = 0 Then - Retorno = True - Else - Retorno = False - End If - Catch ex As Exception - Me.OnError("Ocurrió un error al contabilizar la prepoliza", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo()) - End Try + ' Try + ' SqlAdapter.Fill(Data) + ' If SqlAdapter.SelectCommand.Parameters("@Error").Value.ToString.ToEntero = 0 Then + ' Retorno = True + ' Else + ' Retorno = False + ' End If + ' Catch ex As Exception + ' Me.OnError("Ocurrió un error al contabilizar la prepoliza", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo()) + ' End Try - Return Retorno - End Function - Public Function Conta_GeneraPptarias(CveCompra As Integer) As Boolean - Dim Retorno = False + ' Return Retorno + 'End Function + 'Public Function Conta_GeneraPptarias(CveCompra As Integer) As Boolean + ' Dim Retorno = False - DataAdapter("PA_Conta_GeneraPptarias") + ' DataAdapter("PA_Conta_GeneraPptarias") - With SqlAdapter.SelectCommand.Parameters - .Add("@CveCompra", SqlDbType.Int).Value = CveCompra - .Add("@Error", SqlDbType.Int).Direction = ParameterDirection.Output - End With + ' With SqlAdapter.SelectCommand.Parameters + ' .Add("@CveCompra", SqlDbType.Int).Value = CveCompra + ' .Add("@Error", SqlDbType.Int).Direction = ParameterDirection.Output + ' End With - Try - SqlAdapter.Fill(Data) - If SqlAdapter.SelectCommand.Parameters("@Error").Value.ToString.ToEntero = 0 Then - Retorno = True - Else - Retorno = False - End If - Catch ex As Exception - Me.OnError("Ocurrió un error al Generar las Cuentas Presupuestarias", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo()) - End Try + ' Try + ' SqlAdapter.Fill(Data) + ' If SqlAdapter.SelectCommand.Parameters("@Error").Value.ToString.ToEntero = 0 Then + ' Retorno = True + ' Else + ' Retorno = False + ' End If + ' Catch ex As Exception + ' Me.OnError("Ocurrió un error al Generar las Cuentas Presupuestarias", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo()) + ' End Try - Return Retorno - End Function + ' Return Retorno + 'End Function - Public Function AddConta_Poliza(CveTipoPoliza As Integer, CveEjercicio As Integer, Folio As Integer, FechaPoliza As Date, Concepto As String, CveUsuario As Integer, CveEmpresa As Integer) As Integer - Dim Retorno As Integer = 0 + 'Public Function AddConta_Poliza(CveTipoPoliza As Integer, CveEjercicio As Integer, Folio As Integer, FechaPoliza As Date, Concepto As String, CveUsuario As Integer, CveEmpresa As Integer) As Integer + ' Dim Retorno As Integer = 0 - DataAdapter("PA_Add_Conta_Polizas") + ' DataAdapter("PA_Add_Conta_Polizas") - With SqlAdapter.SelectCommand.Parameters - .Add("@Folio", SqlDbType.Int).Value = Folio - ' .Add("@CveTipoPoliza", SqlDbType.Int).Value = CveTipoPoliza - .Add("@Ejercicio", SqlDbType.Int).Value = CveEjercicio - .Add("@Concepto", SqlDbType.VarChar).Value = Concepto - .Add("@FechaPoliza", SqlDbType.DateTime).Value = FechaPoliza - .Add("@CveUsuario", SqlDbType.Int).Value = CveUsuario - .Add("@CveEmpresa", SqlDbType.Int).Value = CveEmpresa - .Add("@CvePoliza", SqlDbType.Int).Direction = ParameterDirection.Output - End With - Try - SqlAdapter.Fill(Data) - Retorno = SqlAdapter.SelectCommand.Parameters("@CvePoliza").Value.ToString.ToEntero - Catch ex As Exception - OnError("Ocurrió un error al agregar la poliza", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo()) - End Try + ' With SqlAdapter.SelectCommand.Parameters + ' .Add("@Folio", SqlDbType.Int).Value = Folio + ' ' .Add("@CveTipoPoliza", SqlDbType.Int).Value = CveTipoPoliza + ' .Add("@Ejercicio", SqlDbType.Int).Value = CveEjercicio + ' .Add("@Concepto", SqlDbType.VarChar).Value = Concepto + ' .Add("@FechaPoliza", SqlDbType.DateTime).Value = FechaPoliza + ' .Add("@CveUsuario", SqlDbType.Int).Value = CveUsuario + ' .Add("@CveEmpresa", SqlDbType.Int).Value = CveEmpresa + ' .Add("@CvePoliza", SqlDbType.Int).Direction = ParameterDirection.Output + ' End With + ' Try + ' SqlAdapter.Fill(Data) + ' Retorno = SqlAdapter.SelectCommand.Parameters("@CvePoliza").Value.ToString.ToEntero + ' Catch ex As Exception + ' OnError("Ocurrió un error al agregar la poliza", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo()) + ' End Try - Return Retorno - End Function - Public Function AddConta_PolizaDetalle(CvePoliza As Integer, CveCuenta As Integer, TipoMovto As Boolean, Importe As Double, Referencia As String, - Concepto As String, FechaMovto As Date, CveUsuario As Integer, Optional ImporteMonedaExtranjera As Double = 0) As Boolean - Dim Retorno As Boolean = False + ' Return Retorno + 'End Function + 'Public Function AddConta_PolizaDetalle(CvePoliza As Integer, CveCuenta As Integer, TipoMovto As Boolean, Importe As Double, Referencia As String, + ' Concepto As String, FechaMovto As Date, CveUsuario As Integer, Optional ImporteMonedaExtranjera As Double = 0) As Boolean + ' Dim Retorno As Boolean = False - If CvePoliza <= 0 Or CveCuenta <= 0 Then - Return False - End If + ' If CvePoliza <= 0 Or CveCuenta <= 0 Then + ' Return False + ' End If - DataAdapter("PA_Add_Conta_PolizasDetalles") - 'DataAdapter("PA_Conta_PolizasDetalleAdd") + ' DataAdapter("PA_Add_Conta_PolizasDetalles") + ' 'DataAdapter("PA_Conta_PolizasDetalleAdd") - With SqlAdapter.SelectCommand.Parameters - .Add("@CvePoliza", SqlDbType.Int).Value = CvePoliza - .Add("@CveCuenta", SqlDbType.Int).Value = CveCuenta - .Add("@TipoMovto", SqlDbType.Int).Value = TipoMovto - .Add("@Total", SqlDbType.Money).Value = Math.Round(Importe, 2) - .Add("@ImporteME", SqlDbType.Money).Value = ImporteMonedaExtranjera - .Add("@Referencia", SqlDbType.VarChar).Value = Referencia - .Add("@Concepto", SqlDbType.VarChar).Value = Concepto - .Add("@CveUsuario", SqlDbType.Int).Value = CveUsuario - .Add("@Error", SqlDbType.Int).Direction = ParameterDirection.Output - End With + ' With SqlAdapter.SelectCommand.Parameters + ' .Add("@CvePoliza", SqlDbType.Int).Value = CvePoliza + ' .Add("@CveCuenta", SqlDbType.Int).Value = CveCuenta + ' .Add("@TipoMovto", SqlDbType.Int).Value = TipoMovto + ' .Add("@Total", SqlDbType.Money).Value = Math.Round(Importe, 2) + ' .Add("@ImporteME", SqlDbType.Money).Value = ImporteMonedaExtranjera + ' .Add("@Referencia", SqlDbType.VarChar).Value = Referencia + ' .Add("@Concepto", SqlDbType.VarChar).Value = Concepto + ' .Add("@CveUsuario", SqlDbType.Int).Value = CveUsuario + ' .Add("@Error", SqlDbType.Int).Direction = ParameterDirection.Output + ' End With - Try - SqlAdapter.Fill(Data) - If SqlAdapter.SelectCommand.Parameters("@Error").Value.ToString.ToEntero <> 0 Then - Retorno = False - Else - Retorno = True - End If - Catch ex As Exception - OnError("Ocurrió un error al agregar el movimiento en la póliza.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo()) - End Try + ' Try + ' SqlAdapter.Fill(Data) + ' If SqlAdapter.SelectCommand.Parameters("@Error").Value.ToString.ToEntero <> 0 Then + ' Retorno = False + ' Else + ' Retorno = True + ' End If + ' Catch ex As Exception + ' OnError("Ocurrió un error al agregar el movimiento en la póliza.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo()) + ' End Try - Return Retorno - End Function + ' Return Retorno + 'End Function Public Function GetSaldoCuentaAC(TipoMovto As Integer, CveCuentaAprobado As Integer, CveCuentaDevengado As Integer, Ejercicio As Integer) As Decimal Dim Retorno As Decimal DataAdapter("PA_Conta_CalculaSaldo") @@ -4895,51 +4898,51 @@ Public Class ClsContabilidad Return Retorno End Function - Public Function GetSegmentosNegocio(Id As Integer, Codigo As String) As Boolean - Dim Retorno As Boolean = False - Dim StrSQl = New StringBuilder + 'Public Function GetSegmentosNegocio(Id As Integer, Codigo As String) As Boolean + ' Dim Retorno As Boolean = False + ' Dim StrSQl = New StringBuilder - StrSQl.Clear() - StrSQl.Append(" SELECT Id, RTRIM (LTRIM (Codigo)) AS Codigo, Nombre, '' AS CveProyecto, '' AS CveSubProyecto ") - StrSQl.Append(" FROM SegmentosNegocio ") - StrSQl.Append(" WHERE (@Id = -1 OR Id = @Id) ") - StrSQl.Append(" AND (@Codigo = '-1' OR Codigo = @Codigo) ") + ' StrSQl.Clear() + ' StrSQl.Append(" SELECT Id, RTRIM (LTRIM (Codigo)) AS Codigo, Nombre, '' AS CveProyecto, '' AS CveSubProyecto ") + ' StrSQl.Append(" FROM SegmentosNegocio ") + ' StrSQl.Append(" WHERE (@Id = -1 OR Id = @Id) ") + ' StrSQl.Append(" AND (@Codigo = '-1' OR Codigo = @Codigo) ") - DataAdapter(StrSQl.ToString, CommandType.Text) - SqlAdapter.SelectCommand.Parameters.Add("@Id", SqlDbType.Int).Value = Id - SqlAdapter.SelectCommand.Parameters.Add("@Codigo", SqlDbType.VarChar).Value = Codigo + ' DataAdapter(StrSQl.ToString, CommandType.Text) + ' SqlAdapter.SelectCommand.Parameters.Add("@Id", SqlDbType.Int).Value = Id + ' SqlAdapter.SelectCommand.Parameters.Add("@Codigo", SqlDbType.VarChar).Value = Codigo - Try - SqlAdapter.Fill(Data) - Retorno = True - Catch ex As Exception - OnError("Ocurrió un error al consultar los Segmentos de Negocio.", ex) - End Try + ' Try + ' SqlAdapter.Fill(Data) + ' Retorno = True + ' Catch ex As Exception + ' OnError("Ocurrió un error al consultar los Segmentos de Negocio.", ex) + ' End Try - Return Retorno - End Function + ' Return Retorno + 'End Function - Public Function GetSubProyectos(CveEmpresa As Integer) As Boolean - Dim Retorno As Boolean = False - Dim StrSQl = New StringBuilder + 'Public Function GetSubProyectos(CveEmpresa As Integer) As Boolean + ' Dim Retorno As Boolean = False + ' Dim StrSQl = New StringBuilder - DataAdapter("PA_Comp_Compras_Pptarias") + ' DataAdapter("PA_Comp_Compras_Pptarias") - With SqlAdapter.SelectCommand.Parameters - .Add("@CveEmpresa", SqlDbType.Int).Value = CveEmpresa - End With + ' With SqlAdapter.SelectCommand.Parameters + ' .Add("@CveEmpresa", SqlDbType.Int).Value = CveEmpresa + ' End With - SqlAdapter.Fill(Data) - Retorno = True - Try - SqlAdapter.Fill(Data) - Retorno = True - Catch ex As Exception - OnError("Ocurrió un error al consultar los Segmentos de Negocio.", ex) - End Try + ' SqlAdapter.Fill(Data) + ' Retorno = True + ' Try + ' SqlAdapter.Fill(Data) + ' Retorno = True + ' Catch ex As Exception + ' OnError("Ocurrió un error al consultar los Segmentos de Negocio.", ex) + ' End Try - Return Retorno - End Function + ' Return Retorno + 'End Function Public Function GetNumeroPoliza(CveTipoPoliza As Integer, Tipo As String, Fecha As DateTime, CveEmpresa As Integer) As Boolean Dim Retorno As Boolean = False @@ -4962,29 +4965,29 @@ Public Class ClsContabilidad Return Retorno End Function - Public Function Compras_Pptarias(CveCompra As Integer, Importe As Decimal, CveConceptoContable As Integer) As Boolean + 'Public Function Compras_Pptarias(CveCompra As Integer, Importe As Decimal, CveConceptoContable As Integer) As Boolean - Dim Retorno As Boolean = False + ' Dim Retorno As Boolean = False - DataAdapter("PA_Comp_Compras_Pptarias") + ' DataAdapter("PA_Comp_Compras_Pptarias") - With SqlAdapter.SelectCommand.Parameters - .Add("@CveCompra", SqlDbType.Int).Value = CveCompra - .Add("@Importe", SqlDbType.Decimal).Value = Importe - .Add("@CveConceptoContable", SqlDbType.Int).Value = CveConceptoContable - End With + ' With SqlAdapter.SelectCommand.Parameters + ' .Add("@CveCompra", SqlDbType.Int).Value = CveCompra + ' .Add("@Importe", SqlDbType.Decimal).Value = Importe + ' .Add("@CveConceptoContable", SqlDbType.Int).Value = CveConceptoContable + ' End With - Try - SqlAdapter.Fill(Data) - Retorno = True - Catch ex1 As SqlException - OnError("Ocurrió un error al obtener las Plantillas", ex1, SqlAdapter.SelectCommand.Parameters.ParametrosInfo) - Catch ex As Exception - OnError("Ocurrió un error al obtener las Plantillas", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo) - End Try + ' Try + ' SqlAdapter.Fill(Data) + ' Retorno = True + ' Catch ex1 As SqlException + ' OnError("Ocurrió un error al obtener las Plantillas", ex1, SqlAdapter.SelectCommand.Parameters.ParametrosInfo) + ' Catch ex As Exception + ' OnError("Ocurrió un error al obtener las Plantillas", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo) + ' End Try - Return Retorno - End Function + ' Return Retorno + 'End Function #End Region #Region "FIS IMPUESTOS" @@ -5878,7 +5881,7 @@ Public Class ClsContabilidad End Function Public Function GetPrePolizasImpresion(CveEmpresa As Integer, FechaI As String, FechaF As String, Optional CveTipoPoliza As Integer = -1, Optional FolioI As Integer = -1, - Optional FolioF As Integer = -1, Optional CveUsuario As Integer = -1, Optional IdSegNegocio As Integer = -1, + Optional FolioF As Integer = -1, Optional CveUsuario As Integer = -1, Optional CveSubProyecto As Integer = -1, Optional CveCuenta As Integer = -1, Optional CvePlantillaPoliza As Integer = -1, Optional CveProveedor As Integer = -1) As Boolean Dim Retorno As Boolean = False @@ -5892,7 +5895,7 @@ Public Class ClsContabilidad .Add("@FolioI", SqlDbType.Int).Value = FolioI .Add("@FolioF", SqlDbType.Int).Value = FolioF .Add("@CveUsuario", SqlDbType.Int).Value = CveUsuario - .Add("@IdSegNegocio", SqlDbType.Int).Value = IdSegNegocio + .Add("@CveSubProyecto", SqlDbType.Int).Value = CveSubProyecto .Add("@CveCuenta", SqlDbType.Int).Value = CveCuenta .Add("@CvePlantillaPoliza", SqlDbType.Int).Value = CvePlantillaPoliza .Add("@CveProveedor", SqlDbType.Int).Value = CveProveedor diff --git a/App_Code/Modelos.vb b/App_Code/Modelos.vb index 6df233d4e..deb17d739 100644 --- a/App_Code/Modelos.vb +++ b/App_Code/Modelos.vb @@ -4631,7 +4631,7 @@ Namespace Modelos Dim tmpCostos As DataTable = DtCostos.FiltraParametros("", "", {"CveClasificacion"}) Dim IdCtaContableAlmacen As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCtaContable", $"CveAlmacen = {CveAlmacenDevolucion}").ToEntero - Dim CveCuentaAlmacen As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCtaContableSIG", $"CveAlmacen = {CveAlmacenDevolucion}").ToEntero + 'Dim CveCuentaAlmacen As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCtaContableSIG", $"CveAlmacen = {CveAlmacenDevolucion}").ToEntero Dim IdCtaContable As Integer = 0 Dim CveCuenta As Integer = 0 If tmpCostos.Rows.Count > 0 Then @@ -4668,7 +4668,7 @@ Namespace Modelos cont += 1 Next - If Not ObjConta.AddPrePolizasDetalle(CvePrePolizaDev, True, -1 * TotalCosto, SerieFolio, 68, SerieFolio, Fecha, IdCtaContableAlmacen, -1, CveVenta:=CveVenta, CveCliente:=CveCliente, CveMovimientoAlmacen:=CveMovimientoDevolucion, CveSubProyecto:=ObjFactura.CveSubProyecto, ImporteMX:=-1 * TotalCosto, CveCuenta:=CveCuentaAlmacen) Then + If Not ObjConta.AddPrePolizasDetalle(CvePrePolizaDev, True, -1 * TotalCosto, SerieFolio, 68, SerieFolio, Fecha, IdCtaContableAlmacen, -1, CveVenta:=CveVenta, CveCliente:=CveCliente, CveMovimientoAlmacen:=CveMovimientoDevolucion, CveSubProyecto:=ObjFactura.CveSubProyecto, ImporteMX:=-1 * TotalCosto) Then ErrorCancelar = True End If From 1fb4c59208774022294f1b28ca60ebbdea26a9d9 Mon Sep 17 00:00:00 2001 From: rrene Date: Sat, 10 Oct 2020 17:52:38 -0700 Subject: [PATCH 04/36] -- parametro de usuarios, en asolicitar devolucion --- Compras/Compras.aspx.vb | 82 ++++++++++++++++++++--------------------- 1 file changed, 41 insertions(+), 41 deletions(-) diff --git a/Compras/Compras.aspx.vb b/Compras/Compras.aspx.vb index b8f36c0f5..762ed68de 100644 --- a/Compras/Compras.aspx.vb +++ b/Compras/Compras.aspx.vb @@ -3992,23 +3992,23 @@ Partial Class Compras_Compras End If End If - 'VERIFICA SI LOS PRODUCTOS/SERVICIOS EXISTEN EN EL CATALOGO DEL SAT - If UsuarioActual.CveEmpresa = 72 Then + ''VERIFICA SI LOS PRODUCTOS/SERVICIOS EXISTEN EN EL CATALOGO DEL SAT + 'If UsuarioActual.CveEmpresa = 72 Then - Dim DtNoEncontrados As DataTable = TmpDT.FiltraParametros("ISNULL(CveSATPS,0) = 46920 ") - If DtNoEncontrados IsNot Nothing AndAlso DtNoEncontrados.Rows.Count > 0 Then - Dim StrNoEncontrados As New StringBuilder - StrNoEncontrados.Append("Los siguientes productos no tiene asignado la clave Producto SAT o Unidad Medida SAT

") - For Each drt As DataRow In DtNoEncontrados.Rows - StrNoEncontrados.AppendFormat("{0}
", drt("CodigoPS")) - Next - Alert(StrNoEncontrados.ToString(), TipoMensaje.MsgAdvertencia) - DtNoEncontrados.Dispose() - StrNoEncontrados.Clear() - Exit Sub - End If - DtNoEncontrados.Dispose() - End If + ' Dim DtNoEncontrados As DataTable = TmpDT.FiltraParametros("ISNULL(CveSATPS,0) = 46920 ") + ' If DtNoEncontrados IsNot Nothing AndAlso DtNoEncontrados.Rows.Count > 0 Then + ' Dim StrNoEncontrados As New StringBuilder + ' StrNoEncontrados.Append("Los siguientes productos no tiene asignado la clave Producto SAT o Unidad Medida SAT

") + ' For Each drt As DataRow In DtNoEncontrados.Rows + ' StrNoEncontrados.AppendFormat("{0}
", drt("CodigoPS")) + ' Next + ' Alert(StrNoEncontrados.ToString(), TipoMensaje.MsgAdvertencia) + ' DtNoEncontrados.Dispose() + ' StrNoEncontrados.Clear() + ' Exit Sub + ' End If + ' DtNoEncontrados.Dispose() + 'End If 'Verifica funcionalidad 702 "Require orden de compra para factura de compra" @@ -4641,7 +4641,7 @@ Partial Class Compras_Compras ErrorOC = True End If 'actualiza la compra para que no se surta en almacen. sino por el flete o importación - If Not ObjCompras.UpdateEstatusAlmacen(CveCompra, 2) Then + If Not ObjCompras.UpdateEstatusAlmacen(CveCompra, 2, UsuarioActual.CveUsuario) Then ErrorOC = True End If End Select @@ -4656,7 +4656,7 @@ Partial Class Compras_Compras ErrorOC = True End If 'actualiza la compra para que no se surta en almacen. sino por el flete o importación - If Not ObjCompras.UpdateEstatusAlmacen(CveCompra, 2) Then + If Not ObjCompras.UpdateEstatusAlmacen(CveCompra, 2, UsuarioActual.CveUsuario) Then ErrorOC = True End If End Select @@ -18659,14 +18659,14 @@ Partial Class Compras_Compras For Each gvr As GridViewRow In GvSolDev.Rows If gvr.FCTextBox("TxtCant").Text.ToDecimal > 0 Then 'actualiza el estatus del detalle - ObjCompras.UpdateEstatusAlmacenDetalle(gvr.DataKey("CveCompraDetalle").ToEntero, 0) + ObjCompras.UpdateEstatusAlmacenDetalle(gvr.DataKey("CveCompraDetalle").ToEntero, 0, UsuarioActual.CveUsuario) Else - ObjCompras.UpdateEstatusAlmacenDetalle(gvr.DataKey("CveCompraDetalle").ToEntero, 1) + ObjCompras.UpdateEstatusAlmacenDetalle(gvr.DataKey("CveCompraDetalle").ToEntero, 1, UsuarioActual.CveUsuario) End If Next End If - If ObjCompras.UpdateEstatusAlmacen(CveCompra, If(EstatusAlmacen = 1, 0, 1)) Then + If ObjCompras.UpdateEstatusAlmacen(CveCompra, If(EstatusAlmacen = 1, 0, 1), UsuarioActual.CveUsuario) Then EstatusAlmacen = If(EstatusAlmacen = 1, 0, 1) Alert(If(EstatusAlmacen = 1, "La solicitud de devolución de almacen se guardo correctamente.", "La solicitud de almacen se canceló correctamente.")) End If @@ -19029,7 +19029,7 @@ Partial Class Compras_Compras End If CveMovimientoInventario = DtInv.MAX("CveMovimiento", $"CveCompraDetalle = {Row2("CveCompraDetalle")}").ToEntero IdCtaContable = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCtaContable", $"CveAlmacen = {DtInv.MIN("CveAlmacen", $"CveCompraDetalle = {Row2("CveCompraDetalle")}")}").ToEntero - CveCuenta = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCtaContableSIG", $"CveAlmacen = {DtInv.MIN("CveAlmacen", $"CveCompraDetalle = {Row2("CveCompraDetalle")}")}").ToEntero + ' CveCuenta = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCtaContableSIG", $"CveAlmacen = {DtInv.MIN("CveAlmacen", $"CveCompraDetalle = {Row2("CveCompraDetalle")}")}").ToEntero ImporteMovimiento = DtInv.SUM(If(DdlMoneda.SelectedValue = "1", "Total", "TotalExtranjero"), $"CveCompraDetalle = {Row2("CveCompraDetalle")}").ToDecimal ImporteMovimiento = If(ImporteMovimiento > Row2("Total").ToString.ToDecimal, Row2("Total").ToString.ToDecimal, ImporteMovimiento) * Multiplicador @@ -19059,15 +19059,15 @@ Partial Class Compras_Compras If IdCtaContable = 0 Then CuentasContablesInvalidas.Append("
" & GlobalDTContaConceptosContables(-1).FiltroPrimero(String.Format("CveConceptoContable = {0}", 68))("ConceptoContable").ToString) End If - If CveCuenta = 0 Then - CuentasContablesInvalidasSIG.Append("
" & GlobalDTContaConceptosContables(-1).FiltroPrimero(String.Format("CveConceptoContable = {0}", 68))("ConceptoContable").ToString) - End If + 'If CveCuenta = 0 Then + ' CuentasContablesInvalidasSIG.Append("
" & GlobalDTContaConceptosContables(-1).FiltroPrimero(String.Format("CveConceptoContable = {0}", 68))("ConceptoContable").ToString) + 'End If Dim SeContabiliza As Boolean = True 'SI ES GASTO DE ALMACEN NO DEBE CONTABILIZAR CONCEPTO 68 If DdlTipoCompra.SelectedValue = "10" Then SeContabiliza = False End If - If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, ImporteMovimiento, Concepto, 68, Concepto, FechaMovimiento, Row("IdCtaContable").ToString.ToEntero, -1, CveCompra:=CveCompra, CveProveedor:=CveProveedorConcepto, CveMovimientoAlmacen:=Row("CveMovimiento").ToString.ToEntero, ImporteMX:=importeMN, ImporteME:=If(TipoCambioActual = 1, 0, ImporteMovimiento), CveCuenta:=Row("CveCuenta").ToString.ToEntero, Contabilizable:=SeContabiliza) Then + If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, ImporteMovimiento, Concepto, 68, Concepto, FechaMovimiento, Row("IdCtaContable").ToString.ToEntero, -1, CveCompra:=CveCompra, CveProveedor:=CveProveedorConcepto, CveMovimientoAlmacen:=Row("CveMovimiento").ToString.ToEntero, ImporteMX:=importeMN, ImporteME:=If(TipoCambioActual = 1, 0, ImporteMovimiento), Contabilizable:=SeContabiliza) Then TieneError = True Exit For End If @@ -20220,24 +20220,24 @@ Partial Class Compras_Compras ' CvePSGRuposAux.AppendFormat("{0},", CvePSIndividual) ' Next - Dim CvePSGRupos As String = Left(CvePSGRuposAux.ToString, CvePSGRuposAux.Length - 1) + 'Dim CvePSGRupos As String = Left(CvePSGRuposAux.ToString, CvePSGRuposAux.Length - 1) - Dim PSSat As DataTable = GlobalDTPS(UsuarioActual.CveEmpresa).FiltraParametros(String.Format("CvePS IN ({0})", CvePSGRuposAux)) + 'Dim PSSat As DataTable = GlobalDTPS(UsuarioActual.CveEmpresa).FiltraParametros(String.Format("CvePS IN ({0})", CvePSGRuposAux)) - Dim ProductosCodigoSATNoPermitidos As New StringBuilder("") - For Each PS As GridViewRow In GvPS.Rows - Dim PSIndividual As String = PS.DataKey("PS") - Dim ClavePSSAT As String = PSSat.FiltroPrimeroValor("CveSATPS", String.Format("PS = '{0}'", PSIndividual)) - If ClavePSSAT = "46920" Then - ProductosCodigoSATNoPermitidos.AppendFormat("{0}
", PSIndividual) - End If - Next + 'Dim ProductosCodigoSATNoPermitidos As New StringBuilder("") + 'For Each PS As GridViewRow In GvPS.Rows + 'Dim PSIndividual As String = PS.DataKey("PS") + 'Dim ClavePSSAT As String = PSSat.FiltroPrimeroValor("CveSATPS", String.Format("PS = '{0}'", PSIndividual)) + 'If ClavePSSAT = "46920" Then + ' ProductosCodigoSATNoPermitidos.AppendFormat("{0}
", PSIndividual) + ' End If + 'Next - If ProductosCodigoSATNoPermitidos.ToString.Length > 0 Then - Dim mensajeAdvertencia As String = String.Format("No se permite vinculación de productos con código SAT '01010101', revise los productos:

{0}", ProductosCodigoSATNoPermitidos.ToString) - Alert(mensajeAdvertencia, TipoMensaje.MsgAdvertencia) - Return False - End If + 'If ProductosCodigoSATNoPermitidos.ToString.Length > 0 Then + 'Dim mensajeAdvertencia As String = String.Format("No se permite vinculación de productos con código SAT '01010101', revise los productos:

{0}", ProductosCodigoSATNoPermitidos.ToString) + ' Alert(mensajeAdvertencia, TipoMensaje.MsgAdvertencia) + ' Return False + 'End If ' Return True From 6f47b2e10d5fb8f167ad64aadd2ece91f02d4333 Mon Sep 17 00:00:00 2001 From: rrene Date: Sat, 10 Oct 2020 17:53:28 -0700 Subject: [PATCH 05/36] -- cambios en contabilidad, partes quitar la obtencion de cvecuenta --- AF/AF.aspx.vb | 4 +- Contabilidad/ContabilizacionVentas.aspx.cs | 2 +- Contabilidad/RegPrePolizaS.aspx | 8 +- Contabilidad/RegPrePolizaS.aspx.vb | 25 +++-- Contabilidad2/PolizasImpresion.aspx | 4 +- Contabilidad2/PolizasImpresion.aspx.vb | 30 +++--- Inventarios/Apartados.aspx.vb | 2 +- Inventarios/CatAlmacenes.aspx | 4 +- Inventarios/CatAlmacenes.aspx.vb | 108 +++++++++++---------- Inventarios/Consignaciones.aspx.vb | 4 +- Inventarios/EntregaAlmacen.aspx.vb | 4 +- Inventarios/RecepcionAlmacen.aspx.vb | 14 +-- Inventarios/TraspasoAlmacen.aspx.vb | 4 +- OC/OC.aspx.vb | 5 +- Ventas/CatClasificaciones.aspx.vb | 17 ++-- 15 files changed, 124 insertions(+), 111 deletions(-) diff --git a/AF/AF.aspx.vb b/AF/AF.aspx.vb index 690738748..2dcae1e8e 100644 --- a/AF/AF.aspx.vb +++ b/AF/AF.aspx.vb @@ -2135,12 +2135,12 @@ Partial Class AF_AF 'PREPOLIZA DE IMPORTACION DESDE ALMACEN If AFInvCvePS > 0 AndAlso AFInvCveAlmacen > 0 Then Dim IDCtaContableInv = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCtaContable", $"CveAlmacen={AFInvCveAlmacen}").ToEntero - Dim CveCuentaInv = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCtaContableSIG", $"CveAlmacen={AFInvCveAlmacen}").ToEntero + 'Dim CveCuentaInv = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCtaContableSIG", $"CveAlmacen={AFInvCveAlmacen}").ToEntero If Not ErrorGuardar Then Dim CvePrePoliza As Integer = ObjContabilidad.AddPrePolizas("AF/ImportadoInv", 4, TxtValorCompra.Text.ToDouble, TxtValorCompra.Text.ToDouble, 1, Now, $"AF importado de Almacén {TxtCodigo.Text.Trim}", UsuarioActual.CveUsuario, CveEmpresaActual) If ObjContabilidad.AddPrePolizasDetalle(CvePrePoliza, False, TxtValorCompra.Text.ToDecimal, $"{TxtCodigo.Text.Trim} - {TxtDescripcion.Text.Trim}", 49, $"{TxtCodigo.Text.Trim} - {TxtDescripcion.Text.Trim}", Now, DdlCtaContable.SelectedValue.Trim.ToEntero, -1, CveActivoFijo:=CveActivoFijo, ImporteMX:=TxtValorCompra.Text.ToDecimal, CveCuenta:=If(UsuarioActual.Empresa.UsaContabilidad AndAlso UsuarioActual.Empresa.UsaContabilidadSIG, ObtenerCuentaDobleConta(DdlCtaContable.SelectedValue.Trim.ToEntero, UsuarioActual.CveEmpresa), -1)) Then If Not ErrorGuardar Then - If Not ObjContabilidad.AddPrePolizasDetalle(CvePrePoliza, True, TxtValorCompra.Text.ToDecimal, TxtCodigo.Text.Trim, 68, TxtCodigo.Text.Trim, Now, IDCtaContableInv, -1, CveMovimientoAlmacen:=CveMovimientoSalidaInv, ImporteMX:=TxtValorCompra.Text.ToDecimal, CveCuenta:=CveCuentaInv) Then + If Not ObjContabilidad.AddPrePolizasDetalle(CvePrePoliza, True, TxtValorCompra.Text.ToDecimal, TxtCodigo.Text.Trim, 68, TxtCodigo.Text.Trim, Now, IDCtaContableInv, -1, CveMovimientoAlmacen:=CveMovimientoSalidaInv, ImporteMX:=TxtValorCompra.Text.ToDecimal) Then ErrorGuardar = True End If End If diff --git a/Contabilidad/ContabilizacionVentas.aspx.cs b/Contabilidad/ContabilizacionVentas.aspx.cs index 0b85ddfa4..93878626d 100644 --- a/Contabilidad/ContabilizacionVentas.aspx.cs +++ b/Contabilidad/ContabilizacionVentas.aspx.cs @@ -42,7 +42,7 @@ public partial class Contabilidad_ContabilizacionVentas : ClsPaginas TienePermisoVerPoliza = true; } - if (UsuarioActual.Empresa.TipoContabilidad == 2 && UsuarioActual.Empresa.UsaContabilidad) + if (UsuarioActual.Empresa.TipoContabilizacion != 1 ) { ClsContPAQi ObjCont = new ClsContPAQi(UsuarioActual.Empresa); diff --git a/Contabilidad/RegPrePolizaS.aspx b/Contabilidad/RegPrePolizaS.aspx index 56ac1ea7e..e3b61c3c4 100644 --- a/Contabilidad/RegPrePolizaS.aspx +++ b/Contabilidad/RegPrePolizaS.aspx @@ -266,11 +266,15 @@ -
+
Si
+ +
+ +
@@ -575,7 +579,7 @@
- +
diff --git a/Contabilidad/RegPrePolizaS.aspx.vb b/Contabilidad/RegPrePolizaS.aspx.vb index 074017309..cfa135354 100644 --- a/Contabilidad/RegPrePolizaS.aspx.vb +++ b/Contabilidad/RegPrePolizaS.aspx.vb @@ -388,14 +388,23 @@ Partial Class ContabilidadC_RegPrePolizaS LnkComplementoPago.Visible = True End If - If dr("IdPoliza").ToString.ToEntero > 0 Then - HplContabilizada.NavigateUrl = String.Format("RegPoliza.aspx?IdPoliza={0}", dr("IdPoliza")) - divContabilziada.Visible = True - ElseIf TxtTotalCargos.Text.ToDouble = TxtTotalAbonos.Text.ToDouble Then - 'sino está contabilizada, se activa el botón - BtnContabilizar.Visible = True - End If - + If UsuarioActual.Empresa.TipoContabilizacion = 1 Then + If dr("FolioPoliza").ToString.ToEntero > 0 Then + divContabilizada.Visible = True + LblFolio.Text = dr("FolioPoliza").ToString + End If + Else + If dr("IdPoliza").ToString.ToEntero > 0 Then + HplContabilizada.NavigateUrl = String.Format("RegPoliza.aspx?IdPoliza={0}", dr("IdPoliza")) + divContabilizada.Visible = True + ElseIf TxtTotalCargos.Text.ToDouble = TxtTotalAbonos.Text.ToDouble Then + 'sino está contabilizada, se activa el botón + BtnContabilizar.Visible = True + End If + End If + + + divDatosPrincipales.Visible = False divObservaciones.Visible = False UPMovs.Visible = False diff --git a/Contabilidad2/PolizasImpresion.aspx b/Contabilidad2/PolizasImpresion.aspx index f266fa9be..7664693c0 100644 --- a/Contabilidad2/PolizasImpresion.aspx +++ b/Contabilidad2/PolizasImpresion.aspx @@ -73,9 +73,9 @@
- +
- +
diff --git a/Contabilidad2/PolizasImpresion.aspx.vb b/Contabilidad2/PolizasImpresion.aspx.vb index 72185a306..992887fb8 100644 --- a/Contabilidad2/PolizasImpresion.aspx.vb +++ b/Contabilidad2/PolizasImpresion.aspx.vb @@ -18,7 +18,7 @@ Partial Class Contabilidad2_PolizasImpresion DdlUsuarioRegistro.DataSource = GlobalDTUsuarios(CveEmpresa:=UsuarioActual.CveEmpresa) DdlUsuarioRegistro.DataBind() cargaddlpolizas() - CargaSegmentoNeg() + CargaSubProyectos() CargaCuentas() End If End Sub @@ -34,13 +34,13 @@ Partial Class Contabilidad2_PolizasImpresion Dim ArchivoReporte As String = "Empresas/Grales/Formatos/Polizas.rdlc" - 'If IO.File.Exists(String.Format("{0}Formatos/Polizas.rdlc", UsuarioActual.Empresa.Ruta)) Then - ' ArchivoReporte = String.Format("{0}Formatos/Polizas.rdlc", UsuarioActual.Empresa.Ruta) - 'End If + If IO.File.Exists(String.Format("{0}Formatos/Polizas.rdlc", UsuarioActual.Empresa.Ruta)) Then + ArchivoReporte = String.Format("{0}Formatos/Polizas.rdlc", UsuarioActual.Empresa.Ruta) + End If Dim ObjConta As New ClsContabilidad If ObjConta.GetPrePolizasImpresion(UsuarioActual.CveEmpresa, TxtFechaInicio.Text, TxtFechaFin.Text, CveTipoPoliza:=ddlTipoPoliza.SelectedValue.ToEntero, FolioI:=foli, - FolioF:=folf, CveUsuario:=DdlUsuarioRegistro.SelectedValue.ToEntero, IdSegNegocio:=DdlSegmentoNeg.SelectedValue.ToEntero, + FolioF:=folf, CveUsuario:=DdlUsuarioRegistro.SelectedValue.ToEntero, CveSubProyecto:=DdlSubProyectos.SelectedValue.ToEntero, CveCuenta:=DdlCuenta.SelectedValue.ToEntero, CvePlantillaPoliza:=DdlGrupoPlantilla.SelectedValue.ToEntero, CveProveedor:=DdlTipoProveedor.SelectedValue.ToEntero) Then If ObjConta.DtResultados.Rows.Count < 10000 Then @@ -60,9 +60,9 @@ Partial Class Contabilidad2_PolizasImpresion params.Add(New ReportParameter("Moneda", "")) params.Add(New ReportParameter("CodigoPostal", "")) - 'If UsuarioActual.CveEmpresa = 119 Then - ' params.Add(New ReportParameter("UsuarioRegistro", GlobalDTUsuarios(dr("IdUsuario").ToString.ToEntero).FiltroPrimeroValor("Nombre"))) - 'End If + If UsuarioActual.CveEmpresa = 119 Then + params.Add(New ReportParameter("UsuarioRegistro", dr("NombreUsuario").ToString)) + End If ImprimirPDF(ArchivoReporte, ObjConta.DtResultados, params) @@ -89,15 +89,11 @@ Partial Class Contabilidad2_PolizasImpresion DdlUsuarioRegistro.Items.Insert(0, New ListItem("Todos", "-1")) End Sub - Private Sub CargaSegmentoNeg() - Dim objtcont As New ClsContabilidad - If objtcont.GetSegmentosNegocio(-1, "-1") Then - DdlSegmentoNeg.DataSource = objtcont.DtResultados - DdlSegmentoNeg.DataBind() - End If - objtcont.Dispose() - DdlSegmentoNeg.Items.Insert(0, New ListItem("Todos", "-1")) - DdlSegmentoNeg.Items.Insert(1, New ListItem("Sin Asignar", "-2")) + Private Sub CargaSubProyectos() + DdlSubProyectos.DataSource = GlobalDTSubProyectos(UsuarioActual.CveEmpresa) + DdlSubProyectos.DataBind() + DdlSubProyectos.Items.Insert(0, New ListItem("Todos", "-1")) + DdlSubProyectos.Items.Insert(1, New ListItem("Sin Asignar", "-2")) End Sub Private Sub CargaCuentas() diff --git a/Inventarios/Apartados.aspx.vb b/Inventarios/Apartados.aspx.vb index fd119f2c7..7cbe8dca6 100644 --- a/Inventarios/Apartados.aspx.vb +++ b/Inventarios/Apartados.aspx.vb @@ -722,7 +722,7 @@ Partial Class Inventarios_Apartados Dim CveSec As Integer = 0 For Each Dr As DataRow In ObjInventario.DtResultados.Rows - CveSec = GlobalDTInvPSSeccionesAlmacen(UsuarioActual.CveEmpresa, DdlAlmacenDestino.SelectedValue.ToEntero, Dr("CvePS").ToString.ToEntero).FiltroPrimeroValor("CveSeccionAlmacen", "").ToEntero + CveSec = -3 'GlobalDTInvPSSeccionesAlmacen(UsuarioActual.CveEmpresa, DdlAlmacenDestino.SelectedValue.ToEntero, Dr("CvePS").ToString.ToEntero).FiltroPrimeroValor("CveSeccionAlmacen", "").ToEntero If Not ObjInventario.AddMovimientoDetalle(CveMovimientoEntrada, Dr("Cantidad").ToString.ToDouble, Dr("CveUM").ToString.ToEntero, Dr("CvePS").ToString.ToEntero, Dr("PU").ToString.ToDecimal, CveAF:=Dr("CveAF").ToString.ToEntero, CveSeccionAlmacen:=CveSec, Serie:=Dr("Serie").ToString, CveMovimientoDetalleEntrada:=Dr("CveMovimientoDetalle").ToString.ToEntero) Then ErrorMovInv = True diff --git a/Inventarios/CatAlmacenes.aspx b/Inventarios/CatAlmacenes.aspx index 011c6115b..5810385a9 100644 --- a/Inventarios/CatAlmacenes.aspx +++ b/Inventarios/CatAlmacenes.aspx @@ -175,7 +175,7 @@ -   +   @@ -265,7 +265,7 @@
- + diff --git a/Inventarios/CatAlmacenes.aspx.vb b/Inventarios/CatAlmacenes.aspx.vb index fe6ef2857..a0b990035 100644 --- a/Inventarios/CatAlmacenes.aspx.vb +++ b/Inventarios/CatAlmacenes.aspx.vb @@ -99,31 +99,34 @@ Partial Class Inventarios_CatAlmacenes End Sub Private Sub CargaCuentasContables() - If UsuarioActual.Empresa.TipoContabilidad = 1 Then - divCuentasCompac.Visible = False + If UsuarioActual.Empresa.TipoContabilizacion = 1 Then + divCuentasCompac.Visible = False pnlCuentassig.Visible = True Using ObjContabilidad As New ClsContabilidad 'UsuarioActual.Empresa.Funcionalidad(208).ToEntero - If ObjContabilidad.CuentasContablesSigGet(UsuarioActual.CveEmpresa) Then + If ObjContabilidad.GetCuentas(-1, "-1", 1, UsuarioActual.CveEmpresa) Then DdlCuentasSig.DataSource = ObjContabilidad.DtResultados DdlCuentasSig.DataBind() DdlCuentasSig.Items.Insert(0, New ListItem("Selecione", "-1")) End If End Using Else - divCuentasCompac.Visible = True - pnlCuentassig.Visible = False - Using ObjContabilidad As New ClsContPAQi(UsuarioActual.Empresa) - 'UsuarioActual.Empresa.Funcionalidad(208).ToEntero - If ObjContabilidad.GetCuentasRecursiva(UsuarioActual.Empresa.Funcionalidad(208).ToEntero, 1) Then - DtCuentasContables = ObjContabilidad.DtResultados - Else - DtCuentasContables = Nothing - End If - End Using - - DdlCuentasContables.DataSource = DtCuentasContables - DdlCuentasContables.DataBind() + If UsuarioActual.Empresa.TipoContabilidad = 2 Then + divCuentasCompac.Visible = True + pnlCuentassig.Visible = False + Using ObjContabilidad As New ClsContPAQi(UsuarioActual.Empresa) + 'UsuarioActual.Empresa.Funcionalidad(208).ToEntero + If ObjContabilidad.GetCuentasRecursiva(UsuarioActual.Empresa.Funcionalidad(208).ToEntero, 1) Then + DtCuentasContables = ObjContabilidad.DtResultados + Else + DtCuentasContables = Nothing + End If + End Using + + DdlCuentasContables.DataSource = DtCuentasContables + DdlCuentasContables.DataBind() + End If + End If UpAddAlmacen.Update() @@ -156,9 +159,9 @@ Partial Class Inventarios_CatAlmacenes 'e.Row.Cells(7).HorizontalAlign = HorizontalAlign.Center If e.Row.DBCampo("IdCtaContable").ToEntero > 0 Then - e.Row.FCLiteral("LtlCuentaContable").Text = DtCuentasContables.FiltroPrimeroValor("CtaCodigo", $"Id = {e.Row.DBCampo("IdCtaContable")}") - Else - e.Row.FCLiteral("LtlCuentaContable").Text = "Sin Cuenta" + e.Row.FCLiteral("LtlCuentaContable").Text = DtCuentasContables.FiltroPrimeroValor("CtaCodigo", $"Id = {e.Row.DBCampo("IdCtaContable")}") + 'Else + ' e.Row.FCLiteral("LtlCuentaContable").Text = "Sin Cuenta" End If End If @@ -181,15 +184,14 @@ Partial Class Inventarios_CatAlmacenes e.Row.FCDropDownList("DdlTipoAlmacen").DataSource = GlobalDTTipoAlmacen(-1) e.Row.FCDropDownList("DdlTipoAlmacen").DataBind() - e.Row.FCDropDownList("DdlTipoAlmacen").SelectedValue = e.Row.DBCampo("CveTipoAlmacen") - - e.Row.FCDropDownList("DdlCuentasContables").DataSource = DtCuentasContables - e.Row.FCDropDownList("DdlCuentasContables").DataBind() - e.Row.FCDropDownList("DdlCuentasContables").Items.Add(New ListItem("Seleccione", "-1")) - e.Row.FCDropDownList("DdlCuentasContables").SelectedValue = e.Row.DBCampo("IdCtaContable") - - 'e.Row.FCDropDownList("DdlModalidad").DataSource = - 'e.Row.FCDropDownList("DdlModalidad").DataBind() + e.Row.FCDropDownList("DdlTipoAlmacen").SelectedValue = e.Row.DBCampo("CveTipoAlmacen") + + + + + + 'e.Row.FCDropDownList("DdlModalidad").DataSource = + 'e.Row.FCDropDownList("DdlModalidad").DataBind() e.Row.FCDropDownList("DdlModalidad").Items.Add(New ListItem("Solo Existencia", "0")) e.Row.FCDropDownList("DdlModalidad").Items.Add(New ListItem("Contable", "1")) e.Row.FCDropDownList("DdlModalidad").SelectedValue = If(e.Row.DBCampo("Modalidad").ToString = "Contable", "1", "0") @@ -197,26 +199,27 @@ Partial Class Inventarios_CatAlmacenes End If End If - End Sub - + End Sub + #End Region - + #Region "O R D E N A M I E N T O" - 'Private Sub OrdenaDatos() - ' If (GvDatos.Rows.Count > 0) Then - ' GvDatos.UseAccessibleHeader = True - ' GvDatos.HeaderRow.TableSection = TableRowSection.TableHeader - ' RegistraScript("OrdenarGV();") - ' End If - 'End Sub + 'Private Sub OrdenaDatos() + ' If (GvDatos.Rows.Count > 0) Then + ' GvDatos.UseAccessibleHeader = True + ' GvDatos.HeaderRow.TableSection = TableRowSection.TableHeader + ' RegistraScript("OrdenarGV();") + ' End If + 'End Sub #End Region - + Private Sub RecargaGlobalAlmacenes() - Dim ObjAlmacen As New ClsInventarios - If ObjAlmacen.GetAlmacenes(-1, -1, -1, -1) Then - GlobalDTAlmacen(-1) = ObjAlmacen.DtResultados - End If - ObjAlmacen.Dispose() + GlobalDTAlmacen(UsuarioActual.CveEmpresa) = Nothing + 'Dim ObjAlmacen As New ClsInventarios + 'If ObjAlmacen.GetAlmacenes(-1, -1, -1, -1) Then + ' GlobalDTAlmacen(-1) = ObjAlmacen.DtResultados + 'End If + 'ObjAlmacen.Dispose() End Sub Private Sub RecargaGlobalAlmacenesUsuarios() @@ -238,14 +241,15 @@ Partial Class Inventarios_CatAlmacenes Dim CuentaContable As Integer = 0 Dim CveCuenta As Integer = 0 - If divddlcc.Visible Then - If pnlCuentassig.Visible Then - CveCuenta = DdlCuentasSig.SelectedValue.ToEntero() - Else - CuentaContable = DdlCuentasContables.SelectedValue.ToEntero() - End If - End If - + + If pnlCuentassig.Visible Then + CveCuenta = DdlCuentasSig.SelectedValue.ToEntero() + End If + If divCuentasCompac.Visible Then + CuentaContable = DdlCuentasContables.SelectedValue.ToEntero() + End If + + If HdnModalidad.Value = "A" Then If ObjAlmacen.AddAlmacen(TxtAlmacen.Text.Trim, DdlTipoAlmacen.SelectedValue.ToEntero, CuentaContable, DdlModalidad.SelectedValue.ToEntero, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CByte(DdlInventariable.SelectedValue), DdlSubProyecto.SelectedValue.ToEntero, TxtOrden.Text.ToEntero, CveCuenta, CveUsuarioAutoriza:=DdlUsuariosAutoriza.SelectedValue.ToEntero) Then Alert("El nuevo Almacen se guardó correctamente.", TipoMensaje.MsgInformacion) diff --git a/Inventarios/Consignaciones.aspx.vb b/Inventarios/Consignaciones.aspx.vb index e414a0e36..e6886a8f2 100644 --- a/Inventarios/Consignaciones.aspx.vb +++ b/Inventarios/Consignaciones.aspx.vb @@ -1153,8 +1153,8 @@ Partial Class Inventarios_Consignaciones End If Next IdCtaContable = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCtaContable", $"CveAlmacen={CveAlmacenCI}").ToEntero - CveCuenta = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCtaContableSIG", $"CveAlmacen={CveAlmacenCI}").ToEntero - If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, DtCostos.SUM("Total").ToDecimal * TipoMovto, Concepto, 68, Concepto, TxtFecha.Text.ToDate, IdCtaContable, -1, CveMovimientoAlmacen:=CveMovimientoCI, ImporteMX:=DtCostos.SUM("Total").ToDecimal * TipoMovto, CveCuenta:=CveCuenta) Then + 'CveCuenta = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCtaContableSIG", $"CveAlmacen={CveAlmacenCI}").ToEntero + If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, DtCostos.SUM("Total").ToDecimal * TipoMovto, Concepto, 68, Concepto, TxtFecha.Text.ToDate, IdCtaContable, -1, CveMovimientoAlmacen:=CveMovimientoCI, ImporteMX:=DtCostos.SUM("Total").ToDecimal * TipoMovto) Then ErrorMovInv = True End If Else diff --git a/Inventarios/EntregaAlmacen.aspx.vb b/Inventarios/EntregaAlmacen.aspx.vb index b3997b144..ec68fe2b0 100644 --- a/Inventarios/EntregaAlmacen.aspx.vb +++ b/Inventarios/EntregaAlmacen.aspx.vb @@ -2816,7 +2816,7 @@ Partial Class Inventarios_EntregaAlmacen Dim tmpCostos As DataTable = DtCostos.FiltraParametros("", "", {"CveClasificacion"}) Dim IdCtaContableAlmacen As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCtaContable", $"CveAlmacen = {DdlAlmacen.SelectedValue}").ToEntero - Dim CveCuentaAlmacen As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCtaContableSIG", $"CveAlmacen = {DdlAlmacen.SelectedValue}").ToEntero + 'Dim CveCuentaAlmacen As Integer = 0 'GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCtaContableSIG", $"CveAlmacen = {DdlAlmacen.SelectedValue}").ToEntero Dim IdCtaContable As Integer = 0 Dim CveCuenta As Integer = 0 If tmpCostos.Rows.Count > 0 Then @@ -2868,7 +2868,7 @@ Partial Class Inventarios_EntregaAlmacen cont += 1 Next - If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, ValorMultiplicador * TotalCosto, Serie, 68, Serie, Fecha, IdCtaContableAlmacen, -1, CveVenta:=CveVentaSurtir, CveCliente:=CveCliente, CveMovimientoAlmacen:=CveMovimiento, CveSubProyecto:=CveSubProyecto, ImporteMX:=ValorMultiplicador * TotalCosto, CveCuenta:=CveCuentaAlmacen) Then + If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, ValorMultiplicador * TotalCosto, Serie, 68, Serie, Fecha, IdCtaContableAlmacen, -1, CveVenta:=CveVentaSurtir, CveCliente:=CveCliente, CveMovimientoAlmacen:=CveMovimiento, CveSubProyecto:=CveSubProyecto, ImporteMX:=ValorMultiplicador * TotalCosto) Then ErrorMovInv = True End If diff --git a/Inventarios/RecepcionAlmacen.aspx.vb b/Inventarios/RecepcionAlmacen.aspx.vb index ba9bcf526..819e9bf71 100644 --- a/Inventarios/RecepcionAlmacen.aspx.vb +++ b/Inventarios/RecepcionAlmacen.aspx.vb @@ -2863,7 +2863,7 @@ Partial Class Inventarios_RecepcionAlmacen 'ACTUALIZA ESTATUS ALMACEN If TipoMovimiento = 2 Then - If Not ObjCompras.UpdateEstatusAlmacen(CveCompraSurtir, 0) Then + If Not ObjCompras.UpdateEstatusAlmacen(CveCompraSurtir, 0, UsuarioActual.CveUsuario) Then ErrorMovInv = True End If End If @@ -2885,7 +2885,7 @@ Partial Class Inventarios_RecepcionAlmacen 'VARIABLES Dim IdCtaContableAlmacen As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCtaContable", $"CveAlmacen = {DdlAlmacen.SelectedValue}").ToEntero - Dim CveCuentaAlmacen As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCtaContableSIG", $"CveAlmacen = {DdlAlmacen.SelectedValue}").ToEntero + ' Dim CveCuentaAlmacen As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCtaContableSIG", $"CveAlmacen = {DdlAlmacen.SelectedValue}").ToEntero Dim IdCtaContableRecepcion = -1 Dim IdCtaContableRecepcionME = -1 Dim IdCtaContableRecepcionComplementaria = -1 @@ -2959,7 +2959,7 @@ Partial Class Inventarios_RecepcionAlmacen Dim CveSubProyecto As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("CveSubProyecto", $"CveAlmacen= {DdlAlmacen.SelectedValue}").ToEntero CvePrePoliza = ObjConta.AddPrePolizas("Inventario/RecepcionAlmacen", 74, TotalCosto, TotalCosto, 1, Fecha, ProveedorNombre, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa) If CvePrePoliza > 0 Then - If ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, TotalCosto, SerieFolio, 68, SerieFolio, Fecha, IdCtaContableAlmacen, -1, CveCompra:=CveCompraSurtir, CveSubProyecto:=CveSubProyecto, CveOC:=CveOCSurtir, CveProveedor:=CveProveedor, CveMovimientoAlmacen:=CveMovimiento, ImporteMX:=TotalCosto, CveCuenta:=CveCuentaAlmacen, Contabilizable:=If(CveTipoCompra = 10, False, EsContabilizable)) Then + If ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, TotalCosto, SerieFolio, 68, SerieFolio, Fecha, IdCtaContableAlmacen, -1, CveCompra:=CveCompraSurtir, CveSubProyecto:=CveSubProyecto, CveOC:=CveOCSurtir, CveProveedor:=CveProveedor, CveMovimientoAlmacen:=CveMovimiento, ImporteMX:=TotalCosto, Contabilizable:=If(CveTipoCompra = 10, False, EsContabilizable)) Then 'AGREGA POR CONCEPTO POR CVEOCDETALLE If CveOCSurtir > 0 Then @@ -3099,7 +3099,7 @@ Partial Class Inventarios_RecepcionAlmacen 'VARIABLES Dim IdCtaContableAlmacen As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCtaContable", $"CveAlmacen = {DdlAlmacen.SelectedValue}").ToEntero - Dim CveCuentaAlmacen As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCtaContableSIG", $"CveAlmacen = {DdlAlmacen.SelectedValue}").ToEntero + 'Dim CveCuentaAlmacen As Integer = 0 'GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCtaContableSIG", $"CveAlmacen = {DdlAlmacen.SelectedValue}").ToEntero Dim Fecha As Date = TxtFecha.Text.ToDate Dim CveProveedor As Integer = -1 Dim ProveedorNombre As String = "" @@ -3132,7 +3132,7 @@ Partial Class Inventarios_RecepcionAlmacen CvePrePoliza = ObjConta.AddPrePolizas("Inventario/RecepcionAlmacen-NC", 74, TotalCosto, TotalCosto, 1, Fecha, ProveedorNombre, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa) If CvePrePoliza > 0 Then If ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, TotalNC, SerieFolio, CveConceptoContableNC, SerieFolio, Fecha, IdCtaContableNC, -1, CveCompra:=CveCompraSurtir, CveProveedor:=CveProveedor, CveMovimientoAlmacen:=CveMovimiento, ImporteMX:=TotalNC, Contabilizable:=EsContabilizable) Then - If ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, TotalCosto * -1, SerieFolio, 68, SerieFolio, Fecha, IdCtaContableAlmacen, -1, CveCompra:=CveCompraSurtir, CveProveedor:=CveProveedor, CveMovimientoAlmacen:=CveMovimiento, ImporteMX:=TotalCosto * -1, CveCuenta:=CveCuentaAlmacen, Contabilizable:=If(CveTipoCompra = 10, False, EsContabilizable)) Then + If ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, TotalCosto * -1, SerieFolio, 68, SerieFolio, Fecha, IdCtaContableAlmacen, -1, CveCompra:=CveCompraSurtir, CveProveedor:=CveProveedor, CveMovimientoAlmacen:=CveMovimiento, ImporteMX:=TotalCosto * -1, Contabilizable:=If(CveTipoCompra = 10, False, EsContabilizable)) Then If DifCostoNC <> 0 Then If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, DifCostoNC * -1, SerieFolio, 69, SerieFolio, Fecha, IdCtaContableClasificacion, -1, CveClasificacion:=CveClasificacionDifCostoNC, CveCompra:=CveCompraSurtir, CveProveedor:=CveProveedor, CveMovimientoAlmacen:=CveMovimiento, ImporteMX:=DifCostoNC * -1, CveCuenta:=CveCuentaClasificacion, Contabilizable:=EsContabilizable, CveSubProyecto:=CveSubProyecto) Then ErrorMovInv = True @@ -3542,7 +3542,7 @@ Partial Class Inventarios_RecepcionAlmacen End If If CvePrePoliza > 0 Then Dim IdCtaContableAlmacen As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCtaContable", $"CveAlmacen = {DdlAlmacen.SelectedValue}").ToEntero - Dim CveCuentaAlmacen As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCtaContableSIG", $"CveAlmacen = {DdlAlmacen.SelectedValue}").ToEntero + ObjInventario.GetMovimientosDetalle(CveMovimiento, UsuarioActual.CveEmpresa) Dim TotalCosto As Decimal = ObjInventario.DtResultados.SUMD("Total").RoundSQL() Dim IdCtaContableCostoInd As Integer = 0 @@ -3550,7 +3550,7 @@ Partial Class Inventarios_RecepcionAlmacen Dim PorcentajeRecepcionCompras As Decimal = TotalCosto / DtTempCompras.SUMD("SubTotalTC") Dim ConceptoPartida As String = String.Format("{0}- Inv#{1}", HLFolio.Text, InvFolio) - If ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, TotalCosto, InvFolio, 68, InvFolio, FechaMovto, IdCtaContableAlmacen, -1, CveCompra:=CveCompraSurtir, CveMovimientoAlmacen:=CveMovimiento, ImporteMX:=TotalCosto, CveCuenta:=CveCuentaAlmacen, Contabilizable:=If(CveTipoCompra = 10, False, True)) Then + If ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, TotalCosto, InvFolio, 68, InvFolio, FechaMovto, IdCtaContableAlmacen, -1, CveCompra:=CveCompraSurtir, CveMovimientoAlmacen:=CveMovimiento, ImporteMX:=TotalCosto, Contabilizable:=If(CveTipoCompra = 10, False, True)) Then 'se recorren las facturas a descontar el recepción If DtTempCompras IsNot Nothing AndAlso DtTempCompras.Rows.Count > 0 Then diff --git a/Inventarios/TraspasoAlmacen.aspx.vb b/Inventarios/TraspasoAlmacen.aspx.vb index efb17de68..58ddb7411 100644 --- a/Inventarios/TraspasoAlmacen.aspx.vb +++ b/Inventarios/TraspasoAlmacen.aspx.vb @@ -1125,8 +1125,8 @@ Partial Class Inventarios_TraspasoAlmacen Next IdCtaContable = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCtaContable", $"CveAlmacen={CveAlmacenCI}").ToEntero - CveCuenta = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCtaContableSIG", $"CveAlmacen={CveAlmacenCI}").ToEntero - If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, DtCostos.SUM("Total").ToDecimal * TipoMovto, Concepto, 68, Concepto, TxtFecha.Text.ToDate, IdCtaContable, -1, CveMovimientoAlmacen:=CveMovimiento, ImporteMX:=DtCostos.SUM("Total").ToDecimal * TipoMovto, CveCuenta:=CveCuenta) Then + + If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, DtCostos.SUM("Total").ToDecimal * TipoMovto, Concepto, 68, Concepto, TxtFecha.Text.ToDate, IdCtaContable, -1, CveMovimientoAlmacen:=CveMovimiento, ImporteMX:=DtCostos.SUM("Total").ToDecimal * TipoMovto) Then ErrorMovInv = True End If diff --git a/OC/OC.aspx.vb b/OC/OC.aspx.vb index 146939ec4..dc0d4a830 100644 --- a/OC/OC.aspx.vb +++ b/OC/OC.aspx.vb @@ -2747,7 +2747,6 @@ Partial Class OC Dim CveOCDetalle = -1 Dim CveAlmacen = -1 Dim IdCtaContableAlmacen As Integer = -1 - Dim CveCuentaAlmacen As Integer = -1 Dim IdCtaContableRecepcionOC = -1 Dim IdCtaContableRecepcionOCME = -1 Dim IdCtaContableRecepcionOCComplementaria = -1 @@ -2813,7 +2812,6 @@ Partial Class OC DiferenciaInvOC = DrDiferencias("Diferencia").ToString.ToDecimal ' DtInvOCDiferencias.SUMD("Diferencia", $"CveAlmacen = {CveAlmacen} AND CveMovimiento = {CveMovimientoAlmacen} AND ConceptoSalida = {ConceptoSalida}") TCInvOC = DrDiferencias("TipoCambioAjuste").ToString.ToDecimal ' DtInvOCDiferencias.FiltroPrimeroValor("TipoCambioAjuste", $"CveAlmacen = {CveAlmacen} AND CveMovimiento = {CveMovimientoAlmacen} AND ConceptoSalida = {ConceptoSalida}").ToDecimal IdCtaContableAlmacen = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCtaContable", $"CveAlmacen = {DrDiferencias("CveAlmacen").ToString.ToEntero}").ToEntero - CveCuentaAlmacen = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCtaContableSIG", $"CveAlmacen = {DrDiferencias("CveAlmacen").ToString.ToEntero}").ToEntero If DiferenciaInvOC.RoundSQL() <> 0 Then @@ -2858,7 +2856,7 @@ Partial Class OC '2018.11.24 se cambia concepto 176, de cargo a abono negativo., petición MALL '2019.03.26 se cambia concepto 177, de abono a cargo., petición MALL '2019.04.10 se cambia concepto 177, de cargo a abono., petición MALL - If ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, -DiferenciaInvOC, SerieFolio, If(ConceptoSalida = 0, 177, 177), SerieFolio, Fecha, IdCtaContableRecepcionOCER, -1, CveProveedor:=CveProveedor, CveMovimientoAlmacen:=CveMovimientoAlmacen, CveOC:=CveOrdenCompra, ImporteMX:=-DiferenciaInvOC, CveCuenta:=CveCuentaAlmacen, CveOCDetalle:=CveOCDetalle, CveSubProyecto:=DdlSubProyecto.SelectedValue.ToEntero) Then + If ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, -DiferenciaInvOC, SerieFolio, If(ConceptoSalida = 0, 177, 177), SerieFolio, Fecha, IdCtaContableRecepcionOCER, -1, CveProveedor:=CveProveedor, CveMovimientoAlmacen:=CveMovimientoAlmacen, CveOC:=CveOrdenCompra, ImporteMX:=-DiferenciaInvOC, CveOCDetalle:=CveOCDetalle, CveSubProyecto:=DdlSubProyecto.SelectedValue.ToEntero) Then If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, DiferenciaInvOC, SerieFolio, 176, SerieFolio, Fecha, IdCtaContableRecepcionOC, -1, CveProveedor:=CveProveedor, CveMovimientoAlmacen:=CveMovimientoAlmacen, CveOC:=CveOrdenCompra, ImporteMX:=DiferenciaInvOC, CveOCDetalle:=CveOCDetalle) Then TieneError = True Exit For @@ -2896,7 +2894,6 @@ Partial Class OC ' DiferenciaInvOC = DtInvOCDiferencias.SUMD("Diferencia", $"CveAlmacen = {CveAlmacen} And CveMovimiento = {CveMovimientoAlmacen} And ConceptoSalida = {ConceptoSalida}") ' TCInvOC = DtInvOCDiferencias.FiltroPrimeroValor("TipoCambioAjuste", $"CveAlmacen = {CveAlmacen} And CveMovimiento = {CveMovimientoAlmacen} And ConceptoSalida = {ConceptoSalida}").ToDecimal ' IdCtaContableAlmacen = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCtaContable", $"CveAlmacen = {DrDiferencias("CveAlmacen").ToString.ToEntero}").ToEntero - ' CveCuentaAlmacen = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCtaContableSIG", $"CveAlmacen = {DrDiferencias("CveAlmacen").ToString.ToEntero}").ToEntero ' 'MODIFICACIÓN CONCEPTO ' If ConceptoSalida = 0 Then diff --git a/Ventas/CatClasificaciones.aspx.vb b/Ventas/CatClasificaciones.aspx.vb index d23b8bc90..eb1ea5c8c 100644 --- a/Ventas/CatClasificaciones.aspx.vb +++ b/Ventas/CatClasificaciones.aspx.vb @@ -109,7 +109,7 @@ Partial Class CatClasificaciones End If UpModalClasif.Update() - If UsuarioActual.Empresa.UsaContabilidad Then + If UsuarioActual.Empresa.TipoContabilizacion = 1 Then ''COMENTADO DF 30 JUNIO 2017 'Dim Cuenta As New ClsContPAQi(UsuarioActual.Empresa) @@ -118,13 +118,16 @@ Partial Class CatClasificaciones 'End If 'Cuenta.Dispose() Else - DivCuentaIngresos.Visible = False - DivCuentaCostos.Visible = False - DivCuentaGasto.Visible = False + If UsuarioActual.Empresa.TipoContabilizacion = 2 Then + DivCuentaIngresos.Visible = False + DivCuentaCostos.Visible = False + DivCuentaGasto.Visible = False + + GvDatos.Columns(1).Visible = False + GvDatos.Columns(2).Visible = False + GvDatos.Columns(3).Visible = False + End If - GvDatos.Columns(1).Visible = False - GvDatos.Columns(2).Visible = False - GvDatos.Columns(3).Visible = False End If DdlCuentaGasto.Items.Insert(0, New ListItem("-", "-1")) From 1ec0c8613d12cff087322b4bdac4f68076419987 Mon Sep 17 00:00:00 2001 From: rrene Date: Sat, 10 Oct 2020 17:57:00 -0700 Subject: [PATCH 06/36] -- cambios en e lcambio de cuenta de contabilidad --- Ventas/Ventas.aspx.vb | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/Ventas/Ventas.aspx.vb b/Ventas/Ventas.aspx.vb index 81c0b9d88..20d6b1a1b 100644 --- a/Ventas/Ventas.aspx.vb +++ b/Ventas/Ventas.aspx.vb @@ -14252,14 +14252,13 @@ Partial Class Ventas End If IdCtaContable = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCtaContable", $"CveAlmacen = {ddlAlmacen.SelectedValue}").ToEntero() - CveCuenta = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCtaContableSIG", $"CveAlmacen = {ddlAlmacen.SelectedValue}").ToEntero() ValorInventario = DTMovimientosDetalles.SUMD("Total", $"CveMovimiento = {Mov("CveMovimiento")}").RoundSQL() If ValorInventario <> 0 Then 'Entrada - If ObjConta.AddPrePolizasDetalle(ObjFactura.CvePrePoliza, False, ValorInventario, ObjFactura.SerieFolio, 68, ObjFactura.SerieFolio, ObjFactura.Fecha, IdCtaContable, -1, CveVenta:=CveDevolucion, CveCliente:=ObjFactura.CveCliente, CveClasificacion:=-1, CveMovimientoAlmacen:=CveMovimientoInventarioEntrada, ImporteMX:=ValorInventario, CveCuenta:=CveCuenta) Then + If ObjConta.AddPrePolizasDetalle(ObjFactura.CvePrePoliza, False, ValorInventario, ObjFactura.SerieFolio, 68, ObjFactura.SerieFolio, ObjFactura.Fecha, IdCtaContable, -1, CveVenta:=CveDevolucion, CveCliente:=ObjFactura.CveCliente, CveClasificacion:=-1, CveMovimientoAlmacen:=CveMovimientoInventarioEntrada, ImporteMX:=ValorInventario) Then 'Salida - If Not ObjConta.AddPrePolizasDetalle(ObjFactura.CvePrePoliza, True, ValorInventario, ObjFactura.SerieFolio, 68, ObjFactura.SerieFolio, ObjFactura.Fecha, IdCtaContable, -1, CveVenta:=ObjFactura.CveVenta, CveCliente:=ObjFactura.CveCliente, CveClasificacion:=-1, CveMovimientoAlmacen:=CveMovimientoInventarioSalida, ImporteMX:=ValorInventario, CveCuenta:=CveCuenta) Then + If Not ObjConta.AddPrePolizasDetalle(ObjFactura.CvePrePoliza, True, ValorInventario, ObjFactura.SerieFolio, 68, ObjFactura.SerieFolio, ObjFactura.Fecha, IdCtaContable, -1, CveVenta:=ObjFactura.CveVenta, CveCliente:=ObjFactura.CveCliente, CveClasificacion:=-1, CveMovimientoAlmacen:=CveMovimientoInventarioSalida, ImporteMX:=ValorInventario) Then OcurrioError = True Exit For End If From 478dfb6780949612194ce71bf25c91c46993101f Mon Sep 17 00:00:00 2001 From: rrene Date: Sat, 10 Oct 2020 18:02:24 -0700 Subject: [PATCH 07/36] - parametro de envio de esatus --- Compras/Compras.aspx.vb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Compras/Compras.aspx.vb b/Compras/Compras.aspx.vb index a81131917..86ede1ae8 100644 --- a/Compras/Compras.aspx.vb +++ b/Compras/Compras.aspx.vb @@ -19485,7 +19485,7 @@ Partial Class Compras_Compras ErrorTrans = True End If 'actualiza la compra para que no se surta en almacen. sino por el flete o importación - If Not ObjCompras.UpdateEstatusAlmacen(CveCompra, 2) Then + If Not ObjCompras.UpdateEstatusAlmacen(CveCompra, 2, UsuarioActual.CveUsuario) Then ErrorTrans = True End If End Select @@ -19500,7 +19500,7 @@ Partial Class Compras_Compras ErrorTrans = True End If 'actualiza la compra para que no se surta en almacen. sino por el flete o importación - If Not ObjCompras.UpdateEstatusAlmacen(CveCompra, 2) Then + If Not ObjCompras.UpdateEstatusAlmacen(CveCompra, 2, UsuarioActual.CveUsuario) Then ErrorTrans = True End If End Select From 2f25a6b2b22a6882388e6e504b4f8e465e09c0cb Mon Sep 17 00:00:00 2001 From: rrene Date: Sun, 11 Oct 2020 10:53:09 -0700 Subject: [PATCH 08/36] -- parametro de usuarioactual --- Sistemas/PopUpAddUsuario.aspx.vb | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Sistemas/PopUpAddUsuario.aspx.vb b/Sistemas/PopUpAddUsuario.aspx.vb index 22ed375a3..9380667be 100644 --- a/Sistemas/PopUpAddUsuario.aspx.vb +++ b/Sistemas/PopUpAddUsuario.aspx.vb @@ -263,14 +263,14 @@ Partial Class Sistemas_PopUpAddUsuario 'Nota, permitir, tiene 3 valores, ''(Vacio), no se ha estipulado, '0' que se denego, '1' permitido(aplicado solo cuando no viene del rol If Row.DataKey("CveModuloAcceso") <> "" Then If Row.DataKey("Permitir") = "" AndAlso Row.FCCheckBox("ChkDenegar").Checked OrElse Row.DataKey("Permitir") = "0" AndAlso Row.FCCheckBox("ChkDenegar").Checked = False Then - If Not ObjUsuarios.UpdateUsuariosModulos(CveUsuario, Row.DataKey("CveModulo").ToEntero, Not Row.FCCheckBox("ChkDenegar").Checked) Then + If Not ObjUsuarios.UpdateUsuariosModulos(CveUsuario, Row.DataKey("CveModulo").ToEntero, Not Row.FCCheckBox("ChkDenegar").Checked, UsuarioActual.CveUsuario) Then HuboError = True Exit For End If End If Else If Row.DataKey("Permitir") = "" AndAlso Row.FCCheckBox("ChkPermitir").Checked OrElse Row.DataKey("Permitir") = "1" AndAlso Row.FCCheckBox("ChkPermitir").Checked = False Then - If Not ObjUsuarios.UpdateUsuariosModulos(CveUsuario, Row.DataKey("CveModulo").ToEntero, Row.FCCheckBox("ChkPermitir").Checked) Then + If Not ObjUsuarios.UpdateUsuariosModulos(CveUsuario, Row.DataKey("CveModulo").ToEntero, Row.FCCheckBox("ChkPermitir").Checked, UsuarioActual.CveUsuario) Then HuboError = True Exit For End If @@ -417,14 +417,14 @@ Partial Class Sistemas_PopUpAddUsuario 'Nota, permitir, tiene 3 valores, ''(Vacio), no se ha estipulado, '0' que se denego, '1' permitido(aplicado solo cuando no viene del rol If Row.DataKey("CveModuloAcceso") <> "" Then If Row.DataKey("Permitir") = "" AndAlso Row.FCCheckBox("ChkDenegar").Checked OrElse Row.DataKey("Permitir") = "0" AndAlso Row.FCCheckBox("ChkDenegar").Checked = False Then - If Not ObjUsuarios.UpdateUsuariosModulos(CveUsuario, Row.DataKey("CveModulo").ToEntero, Not Row.FCCheckBox("ChkDenegar").Checked) Then + If Not ObjUsuarios.UpdateUsuariosModulos(CveUsuario, Row.DataKey("CveModulo").ToEntero, Not Row.FCCheckBox("ChkDenegar").Checked, UsuarioActual.CveUsuario) Then HuboError = True Exit For End If End If Else If Row.DataKey("Permitir") = "" AndAlso Row.FCCheckBox("ChkPermitir").Checked OrElse Row.DataKey("Permitir") = "1" AndAlso Row.FCCheckBox("ChkPermitir").Checked = False Then - If Not ObjUsuarios.UpdateUsuariosModulos(CveUsuario, Row.DataKey("CveModulo").ToEntero, Row.FCCheckBox("ChkPermitir").Checked) Then + If Not ObjUsuarios.UpdateUsuariosModulos(CveUsuario, Row.DataKey("CveModulo").ToEntero, Row.FCCheckBox("ChkPermitir").Checked, UsuarioActual.CveUsuario) Then HuboError = True Exit For End If @@ -435,14 +435,14 @@ Partial Class Sistemas_PopUpAddUsuario 'Nota, permitir, tiene 3 valores, ''(Vacio), no se ha estipulado, '0' que se denego, '1' permitido(aplicado solo cuando no viene del rol If Row.DataKey("CveModuloAcceso") <> "" Then If Row.DataKey("Permitir") = "" AndAlso Row.FCCheckBox("ChkDenegar").Checked OrElse Row.DataKey("Permitir") = "0" AndAlso Row.FCCheckBox("ChkDenegar").Checked = False Then - If Not ObjUsuarios.UpdateUsuariosModulos(CveUsuario, Row.DataKey("CveModulo").ToEntero, Not Row.FCCheckBox("ChkDenegar").Checked) Then + If Not ObjUsuarios.UpdateUsuariosModulos(CveUsuario, Row.DataKey("CveModulo").ToEntero, Not Row.FCCheckBox("ChkDenegar").Checked, UsuarioActual.CveUsuario) Then HuboError = True Exit For End If End If Else If Row.DataKey("Permitir") = "" AndAlso Row.FCCheckBox("ChkPermitir").Checked OrElse Row.DataKey("Permitir") = "1" AndAlso Row.FCCheckBox("ChkPermitir").Checked = False Then - If Not ObjUsuarios.UpdateUsuariosModulos(CveUsuario, Row.DataKey("CveModulo").ToEntero, Row.FCCheckBox("ChkPermitir").Checked) Then + If Not ObjUsuarios.UpdateUsuariosModulos(CveUsuario, Row.DataKey("CveModulo").ToEntero, Row.FCCheckBox("ChkPermitir").Checked, UsuarioActual.CveUsuario) Then HuboError = True Exit For End If From 72c0ae360c6fbda88d6193f430b7c0879fe61bb5 Mon Sep 17 00:00:00 2001 From: rrene Date: Sun, 11 Oct 2020 10:53:37 -0700 Subject: [PATCH 09/36] - cambio en parametro de marcar la factura para surtir --- Inventarios/RepNotasSinAlmacen.aspx.vb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Inventarios/RepNotasSinAlmacen.aspx.vb b/Inventarios/RepNotasSinAlmacen.aspx.vb index d558f6498..af54ebcf6 100644 --- a/Inventarios/RepNotasSinAlmacen.aspx.vb +++ b/Inventarios/RepNotasSinAlmacen.aspx.vb @@ -300,7 +300,7 @@ Partial Class RepNotasSinAlmacen Dim ObjCompras As New ClsCompras Dim ObjEventos As New ClsOIEventos - If ObjCompras.UpdateEstatusAlmacenDetalle(CveCompraDetalle, 1) Then + If ObjCompras.UpdateEstatusAlmacenDetalle(CveCompraDetalle, 1, Usuarioactual.CveUsuario) Then If ObjEventos.AddEventoBitacora(String.Format("El producto: {0} se marcó como no recibido", PS), "", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveCompra:=CveCompra) Then Alert("El producto se marcó como 'no recibido' correctamente.") End If From 6baa2b002e903c3120aa53fb75ca33c8afa1755e Mon Sep 17 00:00:00 2001 From: rrene Date: Sun, 11 Oct 2020 10:53:52 -0700 Subject: [PATCH 10/36] -- cambios de contabilidad --- App_Code/ClsBancos.vb | 4 +- App_Code/ClsContabilidad.vb | 2 +- Bancos/CuentasBancariasDetalle.aspx.vb | 106 +++++++++++++++++-------- 3 files changed, 74 insertions(+), 38 deletions(-) diff --git a/App_Code/ClsBancos.vb b/App_Code/ClsBancos.vb index 41a2511cb..eacb04c20 100644 --- a/App_Code/ClsBancos.vb +++ b/App_Code/ClsBancos.vb @@ -417,8 +417,8 @@ Public Class ClsBancos Me.FFinal = Data.Rows(0)("FFinal").ToString.ToEntero Me.IdCtaContable = Data.Rows(0)("IdCtaContable").ToString.ToEntero Me.IdCtaContableComplementaria = Data.Rows(0)("IdCtaContableComplementaria").ToString.ToEntero - Me.CveCuentaConta = Data.Rows(0)("IdCtaContableSIG").ToString.ToEntero - Me.CveCuentaContaComplementaria = Data.Rows(0)("IdCtaContableComplementariaSIG").ToString.ToEntero + Me.CveCuentaConta = Data.Rows(0)("CveCuentaContable").ToString.ToEntero + Me.CveCuentaContaComplementaria = Data.Rows(0)("CveCuentaComplementaria").ToString.ToEntero Me.FormatoCheque = Data.Rows(0)("FormatoCheque").ToString Me.Estatus = Data.Rows(0)("Estatus").ToString Me.Fecha = Data.Rows(0)("Fecha").ToString.ToDate diff --git a/App_Code/ClsContabilidad.vb b/App_Code/ClsContabilidad.vb index c175d592d..a3e36c05a 100644 --- a/App_Code/ClsContabilidad.vb +++ b/App_Code/ClsContabilidad.vb @@ -62,7 +62,7 @@ Public Class ClsContabilidad Public Property CveEmpresa As Integer Public Property CveTipoPlantillaPoliza As Integer - Public Property ContaIdPoliza As Integer + Public Property ContaIdPoliza As Integer = 0 Public Property ContaFolio As Integer Public Property ValorPolizaDescuadre As Integer diff --git a/Bancos/CuentasBancariasDetalle.aspx.vb b/Bancos/CuentasBancariasDetalle.aspx.vb index 2b4c1f02f..656a2aa10 100644 --- a/Bancos/CuentasBancariasDetalle.aspx.vb +++ b/Bancos/CuentasBancariasDetalle.aspx.vb @@ -41,9 +41,8 @@ Partial Class Bancos_CuentasBancariasDetalle ViewState("CveCuenta") = Request("CveCuenta") - If UsuarioActual.Empresa.UsaContabilidad Or UsuarioActual.Empresa.UsaAC Then - trCuentaContable.Visible = True - trCuentaContableComplementaria.Visible = True + If UsuarioActual.Empresa.UsaContabilidad Or UsuarioActual.Empresa.UsaAC Then + CargaCuentasContables() End If @@ -60,9 +59,8 @@ Partial Class Bancos_CuentasBancariasDetalle ViewState("CveCuenta") = -1 BtnEliminar.Visible = False CreaDTUsuarios() - If UsuarioActual.Empresa.UsaContabilidad Or UsuarioActual.Empresa.UsaAC Then - trCuentaContable.Visible = True - trCuentaContableComplementaria.Visible = True + If UsuarioActual.Empresa.UsaContabilidad Or UsuarioActual.Empresa.UsaAC Then + CargaCuentasContables() End If 'LbAgregarSucursal.Enabled = False @@ -98,37 +96,69 @@ Partial Class Bancos_CuentasBancariasDetalle DdlMoneda.DataSource = GlobalDTMonedas DdlMoneda.DataBind() End Sub - Private Sub CargaCuentasContables() - Dim IdPadre As Integer - Dim Conta As New ClsContPAQi(UsuarioActual.Empresa) - - If DdlTipoCuenta.SelectedValue.ToEntero = 1 Then 'Caja Chica - IdPadre = UsuarioActual.Empresa.Funcionalidad(218).ToEntero - Else - Dim tesstr = UsuarioActual.Empresa.Funcionalidad(209) - IdPadre = UsuarioActual.Empresa.Funcionalidad(209).ToEntero - End If - - If IdPadre = 0 Then IdPadre = -1 + Private Sub CargaCuentasContables() Dim dt As DataTable = Nothing - If Conta.GetCuentasRecursiva(IdPadre, 1) Then - dt = Conta.DtResultados - End If - Conta.Dispose() - DDlCuentaContable.DataSource = dt - DDlCuentaContable.DataBind() - DDlCuentaContable.Items.Insert(0, New ListItem("-", "-1")) - DdlCuentaContableComplementaria.DataSource = dt - DdlCuentaContableComplementaria.DataBind() - DdlCuentaContableComplementaria.Items.Insert(0, New ListItem("-", "-1")) - If dt IsNot Nothing Then dt.Dispose() - End Sub + If UsuarioActual.Empresa.TipoContabilizacion = 1 Then + Using ObjContabilidad As New ClsContabilidad + 'UsuarioActual.Empresa.Funcionalidad(208).ToEntero + If ObjContabilidad.GetCuentas(-1, "-1", 1, UsuarioActual.CveEmpresa) Then + DDlCuentaContable.DataSource = ObjContabilidad.DtResultados + DDlCuentaContable.DataBind() + DDlCuentaContable.Items.Insert(0, New ListItem("Selecione", "-1")) + DDlCuentaContable.DataTextField = "Cuenta" + DDlCuentaContable.DataValueField = "CveCuenta" + End If + End Using + + DDlCuentaContable.DataSource = dt + DDlCuentaContable.DataBind() + DDlCuentaContable.Items.Insert(0, New ListItem("-", "-1")) + DdlCuentaContableComplementaria.DataSource = dt + DdlCuentaContableComplementaria.DataBind() + DdlCuentaContableComplementaria.Items.Insert(0, New ListItem("-", "-1")) + If dt IsNot Nothing Then dt.Dispose() + trCuentaContable.Visible = True + trCuentaContableComplementaria.Visible = True + + Else + If UsuarioActual.Empresa.UsaContabilidad Or UsuarioActual.Empresa.UsaAC Then + Dim IdPadre As Integer + Dim Conta As New ClsContPAQi(UsuarioActual.Empresa) + + If DdlTipoCuenta.SelectedValue.ToEntero = 1 Then 'Caja Chica + IdPadre = UsuarioActual.Empresa.Funcionalidad(218).ToEntero + Else + Dim tesstr = UsuarioActual.Empresa.Funcionalidad(209) + IdPadre = UsuarioActual.Empresa.Funcionalidad(209).ToEntero + End If + + If IdPadre = 0 Then IdPadre = -1 + + If Conta.GetCuentasRecursiva(IdPadre, 1) Then + dt = Conta.DtResultados + End If + + Conta.Dispose() + DDlCuentaContable.DataSource = dt + DDlCuentaContable.DataBind() + DDlCuentaContable.Items.Insert(0, New ListItem("-", "-1")) + DdlCuentaContableComplementaria.DataSource = dt + DdlCuentaContableComplementaria.DataBind() + DdlCuentaContableComplementaria.Items.Insert(0, New ListItem("-", "-1")) + If dt IsNot Nothing Then dt.Dispose() + trCuentaContable.Visible = True + trCuentaContableComplementaria.Visible = True + End If + End If + + + End Sub #End Region - + #End Region - - + + #Region " CARGA DATOS " Private Sub CargaDatos() Dim ObjCuentasBancariasDetalle As New ClsBancos() @@ -164,8 +194,14 @@ Partial Class Bancos_CuentasBancariasDetalle DdlTipoCuenta.SelectedValue = ObjCuentasBancariasDetalle.CveTipoCuenta.ToString DdlTipoCuenta_SelectedIndexChanged(DdlTipoCuenta, EventArgs.Empty) - DDlCuentaContable.SelectedValueExist(ObjCuentasBancariasDetalle.IdCtaContable.ToString) - DdlCuentaContableComplementaria.SelectedValueExist(ObjCuentasBancariasDetalle.IdCtaContableComplementaria.ToString) + If UsuarioActual.Empresa.TipoContabilizacion = 1 Then + DDlCuentaContable.SelectedValueExist(ObjCuentasBancariasDetalle.CveCuentaConta.ToString) + DdlCuentaContableComplementaria.SelectedValueExist(ObjCuentasBancariasDetalle.CveCuentaContaComplementaria.ToString) + Else + DDlCuentaContable.SelectedValueExist(ObjCuentasBancariasDetalle.IdCtaContable.ToString) + DdlCuentaContableComplementaria.SelectedValueExist(ObjCuentasBancariasDetalle.IdCtaContableComplementaria.ToString) + End If + Else Alert("El Banco Solicitado no existe, por favor revise su búsqueda.", TipoMensaje.MsgAdvertencia) BtnGuardar.Enabled = False From 4a4da7703f24623c8112b446c808a3d82082ee56 Mon Sep 17 00:00:00 2001 From: Jonathan Alexis Perez Morales Date: Mon, 12 Oct 2020 09:46:40 -0700 Subject: [PATCH 11/36] Folios virtuales en PDF E140 --- Compras/PopUpVerFactura.aspx.vb | 153 +-- Empresas/140/Formatos/Salidas.rdlc | 1358 +++++++++++++++++++++++++++ Empresas/140/Formatos/Traslado.rdlc | 81 ++ 3 files changed, 1539 insertions(+), 53 deletions(-) create mode 100644 Empresas/140/Formatos/Salidas.rdlc diff --git a/Compras/PopUpVerFactura.aspx.vb b/Compras/PopUpVerFactura.aspx.vb index 25b566e4d..ebb9a654f 100644 --- a/Compras/PopUpVerFactura.aspx.vb +++ b/Compras/PopUpVerFactura.aspx.vb @@ -1275,10 +1275,23 @@ Partial Class PopUpVerFactura Dim FechaMovimiento As Date = ObjInventarios.FechaRegistro Dim CveMovimientoRelacionado As Integer = -1 + Dim FolioRelacionado As String = "" + Dim CveConceptoMovtoRelacionado As Integer = -1 + + 'VERIFICA SI TIENE MOVIMIENTO VIRTUAL RELACIONADO If UsuarioActual.CveEmpresa = 140 AndAlso ObjInventarios.DtResultados.Rows.Count > 0 Then CveMovimientoRelacionado = ObjInventarios.DtResultados.Rows(0)("CveMtoRel").ToString().ToEntero() - End If - + If CveConcepto.Contiene(3, 26) AndAlso ObjInventarios.DtResultados.FiltroPrimeroValor("CveMovimientoVirtual").ToEntero() > 0 Then + FolioRelacionado = ObjInventarios.DtResultados.FiltroPrimeroValor("FolioVirtual") + CveConceptoMovtoRelacionado = 37 + ElseIf CveConcepto = 37 Then + FolioRelacionado = ObjInventarios.DtResultados.FiltroPrimeroValor("FolioRelacionado") + CveConceptoMovtoRelacionado = 3 + End If + End If + + + Dim CantidadProductos As Decimal = 0 Dim CantidadUsados As Decimal = 0 @@ -1345,7 +1358,8 @@ Partial Class PopUpVerFactura EstadoOrigen, PaisOrigen, CPOrigen, CalleDestino, NoExtDestino, ColoniaDestino, LocalidadDestino, MunicipioDestino, EstadoDestino, PaisDestino, CPDestino, FechaMovimiento, NombreCapturo, PuestoRecibio, PuestoEnrego, RazonSocial, ResponsableCarga, ResponsableRecibio, NombreCliente, - CantidadProductos:=CantidadProductos, CantidadUsados:=CantidadUsados, CveTipoAlmacen:=CveTipoAlmacen, NombreEntrego:=NombreEntrego) + CantidadProductos:=CantidadProductos, CantidadUsados:=CantidadUsados, CveTipoAlmacen:=CveTipoAlmacen, NombreEntrego:=NombreEntrego, + CveConceptoMovRelacionado:=CveConceptoMovtoRelacionado, FolioRelacionado:=FolioRelacionado) End Sub Private Sub PUanacExtr(CveMoneda As Integer) 'preciounitario a moneda nacional o extranjera @@ -1362,7 +1376,8 @@ Partial Class PopUpVerFactura Remision As String, Proveedor As String, CalleOrigen As String, NoExtOrigen As String, ColoniaOrigen As String, LocalidadOrigen As String, MunicipioOrigen As String, EstadoOrigen As String, PaisOrigen As String, CPOrigen As String, CalleDestino As String, NoExtDestino As String, ColoniaDestino As String, LocalidadDestino As String, MunicipioDestino As String, EstadoDestino As String, PaisDestino As String, CPDestino As String, FechaMovimiento As Date, NombreCapturo As String, PuestoRecibio As String, PuestoEntrego As String, - RazonSocial As String, ResponsableCarga As String, ResponsableRecibio As String, NombreCliente As String, Optional CantidadProductos As Decimal = 0, Optional CantidadUsados As Decimal = 0, Optional CveTipoAlmacen As Integer = -1, Optional NombreEntrego As String = "") + RazonSocial As String, ResponsableCarga As String, ResponsableRecibio As String, NombreCliente As String, Optional CantidadProductos As Decimal = 0, Optional CantidadUsados As Decimal = 0, + Optional CveTipoAlmacen As Integer = -1, Optional NombreEntrego As String = "", Optional CveConceptoMovRelacionado As Integer = -1, Optional FolioRelacionado As String = "") Select Case CveConcepto @@ -1542,7 +1557,7 @@ Partial Class PopUpVerFactura ImprimirPDF("Empresas/Grales/Formatos/EntradaSalida.rdlc", DtMovimientos, params, String.Format("Entrada de Almacen - {0}", Folio.ToString), RDSName:="DsInventarios") End If - Case 3, 16 ' S A L I D A S + Case 3, 16, 37 ' S A L I D A S 'Dim Archivo As New System.IO.FileInfo(String.Format("Empresas/{0}/Formatos/Salidas.rdlc", 72)) 'Dim Imagen As New System.IO.FileInfo(String.Format("Empresas/{0}/Logo.png", 72)) Dim Archivo As New System.IO.FileInfo(String.Format("{0}Formatos/Salidas.rdlc", UsuarioActual.Empresa.Ruta)) @@ -1552,6 +1567,8 @@ Partial Class PopUpVerFactura Dim concepto As String = "" If CveConcepto = 3 Then concepto = "SALIDA DE ALMACÉN" + ElseIf CveConcepto = 37 Then + concepto = "SALIDA VIRTUAL" Else concepto = "SALIDA DE ALMACÉN POR RECONSTRUCCIÓN" End If @@ -1688,6 +1705,34 @@ Partial Class PopUpVerFactura 'ImprimirPDF(String.Format("Empresas/{0}/Formatos/Salidas.rdlc", 72), DtMovimientos, params, "ReporteSalidas", RDSName:="DsInventarios") ImprimirPDF(UsuarioActual.Empresa.Ruta & "Formatos/Salidas.rdlc", DtMovimientos, params, String.Format("Salida de Almacen - {0}", Folio.ToString), RDSName:="DsInventarios") + ElseIf UsuarioActual.CveEmpresa = 140 Then + + Dim logouri = String.Format("{0}://{1}:{2}/Empresas/{3}/Logo.png", Request.Url.Scheme, Request.Url.Host, Request.Url.Port, UsuarioActual.CveEmpresa) + If Imagen.Exists Then + params.Add(New ReportParameter("LogoPath", logouri)) + Else + params.Add(New ReportParameter("LogoPath", "")) + End If + + params.Add(New ReportParameter("Empresa", UsuarioActual.Empresa.Empresa)) + params.Add(New ReportParameter("Concepto", concepto)) + params.Add(New ReportParameter("Almacen", Almacen)) + params.Add(New ReportParameter("Fecha", Fecha)) + params.Add(New ReportParameter("FacturaProveedor", FolioVenta)) + params.Add(New ReportParameter("FacturadoA", If(DtMovimientos(0)("Nombre").ToString <> "", DtMovimientos(0)("Nombre").ToString, NombreCliente))) + params.Add(New ReportParameter("Observaciones", Observaciones)) + params.Add(New ReportParameter("FechaImpresion", DateTime.Now.ToString("dd/MM/yyyy"))) + params.Add(New ReportParameter("Folio", Folio)) + params.Add(New ReportParameter("Descuentos", "")) + params.Add(New ReportParameter("IVA", "")) + params.Add(New ReportParameter("Total", "")) + 'params.Add(New ReportParameter("NombreEntrego", String.Format("ENTREGÓ{0}{1}", vbCrLf, Capturo))) + params.Add(New ReportParameter("NombreRecibio", Recibio)) + params.Add(New ReportParameter("UsuarioImprimio", UsuarioActual.Nombre)) + params.Add(New ReportParameter("CveConceptoMovRelacionado", CveConceptoMovRelacionado.ToString())) + params.Add(New ReportParameter("FolioRelacionado", FolioRelacionado)) + + ImprimirPDF(UsuarioActual.Empresa.Ruta & "Formatos/Salidas.rdlc", DtMovimientos, params, String.Format("Salida de Almacen - {0}", Folio.ToString), RDSName:="DsInventarios") Else params.Add(New ReportParameter("Folio", Folio)) params.Add(New ReportParameter("Fecha", Fecha)) @@ -2124,7 +2169,9 @@ Partial Class PopUpVerFactura params.Add(New ReportParameter("UsuarioImprimio", UsuarioActual.Nombre)) params.Add(New ReportParameter("Empresa", UsuarioActual.Empresa.Empresa)) params.Add(New ReportParameter("CantidadProductos", CantidadProductos.ToString())) - params.Add(New ReportParameter("CantidadUsados", CantidadUsados.ToString())) + params.Add(New ReportParameter("CantidadUsados", CantidadUsados.ToString())) + params.Add(New ReportParameter("CveConceptoMovRelacionado", CveConceptoMovRelacionado.ToString())) + params.Add(New ReportParameter("FolioRelacionado", FolioRelacionado)) Else params.Add(New ReportParameter("Observaciones", Observaciones)) 'TxtObservaciones.Text params.Add(New ReportParameter("CveAlmacen", DtMovimientos(0)("CveTipoAlmacen").ToString)) @@ -2469,19 +2516,19 @@ Partial Class PopUpVerFactura If (UsuarioActual.CveEmpresa = 72) Then params.Add(New ReportParameter("DomicilioFiscal", DomicilioFiscalCompu)) End If - ImprimirPDF(UsuarioActual.Empresa.Ruta & "Formatos/SalidasGarantia.rdlc", DtMovimientos, params, String.Format("SalidaGarantia{0}", Folio.ToString), RDSName:="DsInventarios") - 'Else - ' params.Add(New ReportParameter("Folio", Folio)) - ' params.Add(New ReportParameter("Fecha", Fecha)) - ' params.Add(New ReportParameter("Almacen", Almacen)) - ' params.Add(New ReportParameter("SubProyecto", SubProyecto)) - ' params.Add(New ReportParameter("Observaciones", Observaciones)) - ' params.Add(New ReportParameter("NombreEntrego", String.Format("ENTREGÓ{0}{1}", vbCrLf, Capturo))) - ' params.Add(New ReportParameter("NombreRecibio", String.Format("RECIBIÓ{0}{1}", vbCrLf, Recibio))) - ' ImprimirPDF(UsuarioActual.Empresa.Ruta & "Formatos/Salidas.rdlc", DtMovimientos, params, String.Format("Salida de Almacen - {0}", Folio.ToString), RDSName:="DsInventarios") - 'End If - - + ImprimirPDF(UsuarioActual.Empresa.Ruta & "Formatos/SalidasGarantia.rdlc", DtMovimientos, params, String.Format("SalidaGarantia{0}", Folio.ToString), RDSName:="DsInventarios") + 'Else + ' params.Add(New ReportParameter("Folio", Folio)) + ' params.Add(New ReportParameter("Fecha", Fecha)) + ' params.Add(New ReportParameter("Almacen", Almacen)) + ' params.Add(New ReportParameter("SubProyecto", SubProyecto)) + ' params.Add(New ReportParameter("Observaciones", Observaciones)) + ' params.Add(New ReportParameter("NombreEntrego", String.Format("ENTREGÓ{0}{1}", vbCrLf, Capturo))) + ' params.Add(New ReportParameter("NombreRecibio", String.Format("RECIBIÓ{0}{1}", vbCrLf, Recibio))) + ' ImprimirPDF(UsuarioActual.Empresa.Ruta & "Formatos/Salidas.rdlc", DtMovimientos, params, String.Format("Salida de Almacen - {0}", Folio.ToString), RDSName:="DsInventarios") + 'End If + + Case 18 'D E V O L U C I O N D E L C L I E N T E Dim Archivo As New System.IO.FileInfo(String.Format("{0}Formatos/DevolucionCliente.rdlc", UsuarioActual.Empresa.Ruta)) Dim Imagen As New System.IO.FileInfo(String.Format("{0}/Logo.png", UsuarioActual.Empresa.Ruta)) @@ -2658,36 +2705,36 @@ Partial Class PopUpVerFactura ImprimirPDF(Archivo, DtMovimientos, params, String.Format("Salida por Prestamo - {0}", Folio.ToString), RDSName:="DsInventarios") ElseIf CveConcepto = 22 Then ImprimirPDF(Archivo, DtMovimientos, params, String.Format("Entrada por Prestamo - {0}", Folio.ToString), RDSName:="DsInventarios") - End If - - 'Case 22 'ENTRADA POR PRESTAMO - ' Dim Imagen As New System.IO.FileInfo(String.Format("{0}/Logo.png", UsuarioActual.Empresa.Ruta)) - ' Dim params As New List(Of ReportParameter) - - ' Dim logouri = String.Format("{0}://{1}:{2}/Empresas/{3}/Logo.png", Request.Url.Scheme, Request.Url.Host, Request.Url.Port, UsuarioActual.CveEmpresa) - ' If Imagen.Exists Then - ' params.Add(New ReportParameter("LogoPath", logouri)) - ' Else - ' params.Add(New ReportParameter("LogoPath", "")) - ' End If - - ' params.Add(New ReportParameter("Empresa", UsuarioActual.Empresa.Empresa)) - ' params.Add(New ReportParameter("Concepto", "Entrada por Prestamo")) - ' params.Add(New ReportParameter("Almacen", Almacen)) - ' params.Add(New ReportParameter("Fecha", Fecha)) - ' params.Add(New ReportParameter("FechaImpresion", DateTime.Now.ToString("dd/MM/yyyy"))) - ' params.Add(New ReportParameter("Folio", Folio)) - ' params.Add(New ReportParameter("Descuentos", "")) - ' params.Add(New ReportParameter("IVA", "")) - ' params.Add(New ReportParameter("Total", "")) - ' 'params.Add(New ReportParameter("NombreEntrego", String.Format("ENTREGÓ{0}{1}", vbCrLf, Capturo))) - ' params.Add(New ReportParameter("NombreRecibio", String.Format("RECIBIÓ{0}{1}", vbCrLf, Recibio))) - ' params.Add(New ReportParameter("FacturadoA", NombreCliente)) - ' If (UsuarioActual.CveEmpresa = 72) Then - ' params.Add(New ReportParameter("DomicilioFiscal", DomicilioFiscalCompu)) - ' End If - ' ImprimirPDF("Empresas/Grales/Formatos/EntradaSalida.rdlc", DtMovimientos, params, String.Format("Entrada por Prestamo - {0}", Folio.ToString), RDSName:="DsInventarios") - + End If + + 'Case 22 'ENTRADA POR PRESTAMO + ' Dim Imagen As New System.IO.FileInfo(String.Format("{0}/Logo.png", UsuarioActual.Empresa.Ruta)) + ' Dim params As New List(Of ReportParameter) + + ' Dim logouri = String.Format("{0}://{1}:{2}/Empresas/{3}/Logo.png", Request.Url.Scheme, Request.Url.Host, Request.Url.Port, UsuarioActual.CveEmpresa) + ' If Imagen.Exists Then + ' params.Add(New ReportParameter("LogoPath", logouri)) + ' Else + ' params.Add(New ReportParameter("LogoPath", "")) + ' End If + + ' params.Add(New ReportParameter("Empresa", UsuarioActual.Empresa.Empresa)) + ' params.Add(New ReportParameter("Concepto", "Entrada por Prestamo")) + ' params.Add(New ReportParameter("Almacen", Almacen)) + ' params.Add(New ReportParameter("Fecha", Fecha)) + ' params.Add(New ReportParameter("FechaImpresion", DateTime.Now.ToString("dd/MM/yyyy"))) + ' params.Add(New ReportParameter("Folio", Folio)) + ' params.Add(New ReportParameter("Descuentos", "")) + ' params.Add(New ReportParameter("IVA", "")) + ' params.Add(New ReportParameter("Total", "")) + ' 'params.Add(New ReportParameter("NombreEntrego", String.Format("ENTREGÓ{0}{1}", vbCrLf, Capturo))) + ' params.Add(New ReportParameter("NombreRecibio", String.Format("RECIBIÓ{0}{1}", vbCrLf, Recibio))) + ' params.Add(New ReportParameter("FacturadoA", NombreCliente)) + ' If (UsuarioActual.CveEmpresa = 72) Then + ' params.Add(New ReportParameter("DomicilioFiscal", DomicilioFiscalCompu)) + ' End If + ' ImprimirPDF("Empresas/Grales/Formatos/EntradaSalida.rdlc", DtMovimientos, params, String.Format("Entrada por Prestamo - {0}", Folio.ToString), RDSName:="DsInventarios") + Case 24 'SALIDA POR RESGUARDO If DtMovimientos(0)("CveTipoAlmacen").ToString.ToEntero = 20 Or DtMovimientos(0)("CveTipoAlmacen").ToString.ToEntero = 19 Then Dim Imagen As New System.IO.FileInfo(String.Format("{0}/Logo.png", UsuarioActual.Empresa.Ruta)) @@ -3170,11 +3217,11 @@ Partial Class PopUpVerFactura If CveConcepto = 2 Then ElseIf CveConcepto = 3 Then End If - End Sub - - + End Sub + + #End Region - + #Region "OP = 'OC' - IMPRIME PDF OC" Private Sub ImprimePDFOC(CveOrdenCompra As Integer) Dim reporte As Byte() = NewGeneraBytesOC(CveOrdenCompra, ConBitacora:=(UsuarioActual.Empresa.Funcionalidad(119) = "1")) diff --git a/Empresas/140/Formatos/Salidas.rdlc b/Empresas/140/Formatos/Salidas.rdlc new file mode 100644 index 000000000..ff50a2ecb --- /dev/null +++ b/Empresas/140/Formatos/Salidas.rdlc @@ -0,0 +1,1358 @@ + + + + + + + + + 1.14223cm + + + 3.14766cm + + + 11.67011cm + + + 2.70027cm + + + 1.73945cm + + + + + 0.42054cm + + + + + true + true + + + + + Cant. + + + + + + + Textbox7 + + + + Black + + 1pt + + + Black + + 1pt + + White + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + Código + + + + + + + Textbox9 + + + + Black + + 1pt + + + Black + + 1pt + + White + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + Descripción + + + + + + + Textbox11 + + + + Black + + 1pt + + + Black + + 1pt + + White + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + Serie + + + + + + + Textbox6 + + + + Black + + 1pt + + + Black + + 1pt + + White + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + Lote + + + + + + + Textbox5 + + + + Black + + 1pt + + + Black + + 1pt + + White + 2pt + 2pt + 2pt + 2pt + + + + + + + + 0.69042cm + + + + + true + true + + + + + =Fields!Cantidad.Value + + + + + + + Cantidad + + + 2pt + 2pt + =IIf(RowNumber(Nothing)=1,"1pt","0pt") + + + + + + + + true + true + + + + + =Fields!Codigo.Value + + + + + + + Codigo + + + 2pt + 2pt + =IIf(RowNumber(Nothing)=1,"1pt","0pt") + + + + + + + + true + true + + + + + =Fields!PS.Value + + + + + + 2pt + 2pt + =IIf(RowNumber(Nothing)=1,"1pt","0pt") + + + + + + + + true + true + + + + + =Fields!SerieLote.Value + + + + + + 2pt + 2pt + =IIf(RowNumber(Nothing)=1,"1pt","0pt") + + + + + + + + true + true + + + + + =Fields!Lote.Value + + + + + + 2pt + 2pt + =IIf(RowNumber(Nothing)=1,"1pt","0pt") + + + + + + + + + + + + + + + + + =IIF(String.IsNullOrEmpty(Fields!Lote.Value), True,False) + + + + + + + + After + + + + + + + DsInventarios + 0.17639cm + 0.22456cm + 1.11096cm + 20.39972cm + + + + + + true + true + + + + + =Parameters!Observaciones.Value + + + + + + 2pt + 2pt + 2pt + 2pt + + + + 0.82291in + + + + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + =Parameters!Concepto.Value + + + + + + 2pt + 2pt + 2pt + 2pt + + + + External + =Parameters!LogoPath.Value + FitProportional + 0.3175cm + 0.19987cm + 1.66316cm + 3.43141cm + 2 + + + + + + true + true + + + + + =Parameters!FacturaProveedor.Value + + + 2pt + 2pt + 2pt + 2pt + + + + true + + + + + =Parameters!FacturadoA.Value + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + Proveedor: + + + + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + Factura: + + + + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + Folio: + + + + + + + Textbox3 + 0.22328cm + 13.63291cm + 0.89103cm + 4.09693cm + 7 + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + =Parameters!Folio.Value + + + + + + + Textbox31 + 0.1905cm + 17.72984cm + 0.9263cm + 2.57165cm + 8 + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + Fecha: + + + + + + 2pt + 2pt + 2pt + 2pt + + + + true + + + + + =Parameters!Almacen.Value + + + + + + + Textbox6 + 2.40855cm + 14.4575cm + 0.56824cm + 5.9022cm + 10 + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + =Parameters!Fecha.Value + + + + + + + Textbox32 + 3.12876cm + 14.4575cm + 0.58913cm + 5.9022cm + 11 + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + Almacén: + + + + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + =IIF(Parameters!CveConceptoMovRelacionado.Value = 37,"Folio Virtual:","Folio Relacionado:") + + + + + + + Textbox3 + 1.27306cm + 13.63291cm + 0.47477cm + 4.09693cm + 13 + + =IIF(Parameters!FolioRelacionado.Value = "",true,false) + + + + 2pt + 2pt + 2pt + 2pt + + + + true + + + + + =Parameters!FolioRelacionado.Value + + + + + + + Textbox31 + 1.27306cm + 17.72984cm + 0.47477cm + 2.57165cm + 14 + + =IIF(Parameters!FolioRelacionado.Value = "",true,false) + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + + 2.22251cm + true + true + + + 0.28886cm + 2.22221cm + 0cm + 4.95004cm + + + + + + true + true + + + + + =Parameters!NombreRecibio.Value + + + + Textbox31 + 0.46525cm + 1.74387cm + 0.6cm + 5.95755cm + 1 + + + 2pt + 2pt + 2pt + 2pt + + + + 0.28886cm + 12.20081cm + 0cm + 4.95004cm + 2 + + + + + + true + true + + + + + =Parameters!Almacen.Value + + + + Textbox31 + 0.42997cm + 11.80394cm + 0.6cm + 5.95755cm + 3 + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + Fecha Impresion: + + + + + + + Textbox5 + 1.49022cm + 11.96388cm + 0.6cm + 2.90426cm + 4 + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + =Parameters!FechaImpresion.Value + + + + + + + Textbox33 + 1.49022cm + 14.86814cm + 0.6cm + 2.89335cm + 5 + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + 29.7cm + 21cm + 0.5cm + 1.5cm + 2cm + 2cm + 0.13cm + + + true + true + + + + + =Parameters!FolioRelacionado.Value + + + + + + 2pt + 2pt + + + + true + true + + + + + =IIF(Parameters!CveConceptoMovRelacionado.Value = 37,"Folio Virtual:","Folio Relacionado:") + + + + + + + Textbox5 + 1.34386cm + 17.07518cm + 0.6cm + 2.07667cm + 10 + + =IIF(Parameters!FolioRelacionado.Value = "",true,false) + + + + Bottom + 2pt + 2pt + + @@ -183,11 +184,12 @@ - Jesús Julían Moreno Quintana, R.F.C MOQJ851214HK4 + Jesús Julían Moreno Quintana @@ -198,11 +200,64 @@ - |www.adssistemas.mx | julian@adssistemas.mx| + R.F.C MOQJ851214HK4 + + + + + + + + Paseo Florido, 62-A, Col.: Nueva Galicia, C.P.: 83245, + + + + + + + + + Hermosillo, Sonora, México. Tel.: (662) 216-2270 + + + + + + + + + |www.adsistemas.mx | julian@adsistemas.mx| + @@ -213,9 +268,9 @@ Textbox4 0.03532cm - 1.80916in - 0.66099in - 3.62386in + 1.58787in + 1.10377in + 4.01898in 4 - - Embedded - Logo1 - FitProportional - 0.13016cm - 2.88998cm - 3.43694cm - 6 - - - - true @@ -267,6 +308,7 @@ Calibri 9pt Normal + DimGray @@ -280,7 +322,7 @@ 5.662in 0.25114in 2.24597in - 7 + 6 @@ -317,7 +360,7 @@ 5.662in 0.25635in 2.24597in - 8 + 7 - - true - - - - - Domicilio Fiscal - - - - - - - - - Paseo Florido, 62-A, Col.: Nueva Galicia, C.P.: 83245, Hermosillo, Sonora, México. Tel.: (662) 216-2270 - - - - - - - Textbox10 - 0.52493in - 1.53781in - 0.65513in - 2.06754in - 9 - - - 2pt - 2pt - 2pt - 2pt - - - - true - - - - - Lugar de Expedición - - - - - - - - - =Parameters!DomicilioSucursal.Value - - - - - - - Textbox10 - 0.52493in - 3.69748in - 0.65513in - 1.93674in - 10 - - - Top - - true true @@ -436,9 +379,11 @@ - Nombre + Nombre: @@ -450,7 +395,7 @@ 0.14361cm 0.22222in 0.81128in - 11 + 8 @@ -492,7 +438,7 @@ 0.86782in 0.22222in 4.79418in - 12 + 9 @@ -535,7 +483,7 @@ 0.05654in 0.23611in 0.81128in - 13 + 10 @@ -578,7 +527,7 @@ 0.86782in 0.2309in 7.0427in - 14 + 11 @@ -621,7 +572,7 @@ 0.05654in 0.23611in 0.81128in - 15 + 12 @@ -663,7 +616,7 @@ 0.86782in 0.23611in 4.79418in - 16 + 13 @@ -867,11 +821,11 @@ Textbox58 - 5.82498in - 5.71166in + 5.01023in + 5.70142in 0.18056in 2.22448in - 21 + 18 @@ -894,6 +848,7 @@ calibri 7.5pt Normal + DimGray @@ -901,11 +856,11 @@ Textbox59 - 6.02214in - 5.70646in + 5.20739in + 5.69622in 0.16667in 2.22969in - 22 + 19 @@ -927,6 +882,7 @@ @@ -934,11 +890,11 @@ Textbox60 - 6.22915in - 5.70646in + 5.4144in + 5.69622in 0.16939in 2.22714in - 23 + 20 @@ -960,6 +916,7 @@ @@ -967,11 +924,11 @@ Textbox61 - 6.4388in - 5.71166in + 5.62405in + 5.70142in 0.17784in 2.22193in - 24 + 21 @@ -989,10 +946,11 @@ - Régimen: Régimen General de Ley Personas Morales; Condiciones de pago: + Regímen: Regímen General de Ley Personas Morales; Condiciones de pago: @@ -1000,6 +958,7 @@ @@ -1007,6 +966,7 @@ @@ -1014,6 +974,7 @@ @@ -1021,6 +982,7 @@ @@ -1028,6 +990,7 @@ @@ -1035,11 +998,11 @@ Textbox62 - 6.63726in - 1.54805in + 5.82251in + 1.53781in 0.29498in 6.38809in - 25 + 22 @@ -1057,9 +1020,10 @@ - Éste documento es una representación impresa de un CFDi + Éste documento es una representacion impresa de un CFDi @@ -1067,11 +1031,11 @@ Textbox63 - 6.8506in - 2.55254in + 6.03585in + 2.5423in 0.25in 3.69856in - 26 + 23 @@ -1099,7 +1063,7 @@ Normal dd/MM/yyyy None - #000000 + DimGray @@ -1109,6 +1073,7 @@ 7.5pt Normal dd/MM/yyyy + DimGray @@ -1118,6 +1083,7 @@ 7.5pt Normal dd/MM/yyyy + DimGray @@ -1127,6 +1093,7 @@ 7.5pt Normal dd/MM/yyyy + DimGray @@ -1138,7 +1105,7 @@ Normal dd/MM/yyyy None - #000000 + DimGray @@ -1150,7 +1117,7 @@ Normal dd/MM/yyyy None - #000000 + DimGray @@ -1162,7 +1129,7 @@ Normal dd/MM/yyyy None - #000000 + DimGray @@ -1174,7 +1141,7 @@ Normal dd/MM/yyyy None - #000000 + DimGray @@ -1186,7 +1153,7 @@ Normal dd/MM/yyyy None - #000000 + DimGray @@ -1198,11 +1165,11 @@ Normal dd/MM/yyyy None - #000000 + DimGray - ). Valor recibido a mi (nuestra) entera satisfacción. La falta de pago de éste documento a su vencimiento dará derecho a AD Sistemas, Análisis y Diseño de Sistemas o tenedor, desde el día siguiente a cobrar el 10% mensual de interes moratorios hasta su total liquidación y los gastos judiciales que se ocasionen. Lugar y Fecha de Suscripción: Hermosillo, Sonora a + ). Valor recibido a mi (nuestra) entera satisfacción. la falta de pago de éste documento a su vencimiento dará derecho a AD Sistemas, Análisis y Diseño de Sistemas o tenedor, desde el día siguiente a cobrar el 10% mensual de interes moratorios hasta su total liquidación y los gastos judiciales que se ocasionen. Lugar y Fecha de Suscripción: Hermosillo, Sonora a @@ -1222,7 +1189,7 @@ Normal dd/MM/yyyy None - #000000 + DimGray @@ -1234,7 +1201,7 @@ Normal dd/MM/yyyy None - #000000 + DimGray @@ -1251,7 +1218,7 @@ Normal dd/MM/yyyy None - #000000 + DimGray @@ -1268,7 +1235,7 @@ Normal dd/MM/yyyy None - #000000 + DimGray @@ -1297,7 +1264,16 @@ - Nombre: + Nombre: + + + + @@ -1316,7 +1293,16 @@ - Dirección: + Dirección: + + + + @@ -1360,6 +1347,7 @@ @@ -1825,11 +1813,11 @@ true - 21.55897cm - 0.0728cm + 16.20868cm + 0.13016cm 4.04843cm 20.06179cm - 27 + 24 = (Parameters!AplicaPagare.Value="0" ORelse Parameters!AplicaPagare.Value="") @@ -2465,7 +2453,7 @@ 0.11468cm 1.01949cm 20.01064cm - 28 + 25 @@ -2504,7 +2492,7 @@ 5.662in 0.20317in 2.26391in - 29 + 26 @@ -2707,6 +2696,7 @@ Myriad Pro 9pt Normal + DimGray @@ -2743,6 +2733,7 @@ 9pt Normal #,0.00 + DimGray @@ -2790,7 +2781,7 @@ 5.73412in 0.34081in 2.19818in - 30 + 27 @@ -2822,6 +2813,7 @@ Calibri 9pt '$'#,0.00;('$'#,0.00) + DimGray @@ -2880,7 +2872,9 @@ - ImpuestoLocal @@ -2906,7 +2900,7 @@ 14.56464cm 0.6cm 5.58343cm - 31 + 28 @@ -2940,6 +2934,7 @@ @@ -2952,19 +2947,9 @@ + - - - - - - - - - - 1pt 2pt @@ -3000,7 +2985,7 @@ @@ -3042,6 +3027,7 @@ @@ -3086,7 +3072,7 @@ @@ -3135,6 +3121,7 @@ @@ -3179,7 +3166,7 @@ @@ -3228,6 +3215,7 @@ @@ -3273,7 +3261,7 @@ @@ -3322,6 +3310,7 @@ @@ -3367,7 +3356,7 @@ @@ -3416,6 +3405,7 @@ @@ -3440,64 +3430,6 @@ - - 0.6cm - - - - - true - true - - - - - Cadena original del complemento de certificación digital del SAT: - - - - - - - Textbox136 - - - - - - - - - - - - - - 1pt - - #eb831f - Middle - 2pt - 2pt - 2pt - 2pt - - - 2 - - - - - @@ -3514,15 +3446,14 @@ - DsOC 5.75282cm 0.11468cm - 5.76188cm + 5.16188cm 14.34413cm - 32 + 29 @@ -3541,6 +3472,7 @@ calibri 7pt Normal + DimGray @@ -3554,6 +3486,7 @@ calibri 7pt Bold + DimGray @@ -3561,11 +3494,11 @@ Textbox18 - 4.54585in + 4.59585in 0.04404in 0.36457in 7.87931in - 33 + 30 @@ -3576,507 +3509,6 @@ 2pt - - - - true - true - - - - - CFDI Relacionados - - - - - - - Textbox5 - 0.11382cm - 0.05336cm - 0.54004cm - 20.00281cm - - - #eb831f - 2pt - 2pt - 2pt - 2pt - - - - true - true - - - - - Tipo Relación: - - - - - - - Textbox29 - 0.83025cm - 4.33636cm - 0.41981cm - 5.31841cm - 1 - - - 2pt - 2pt - 2pt - 2pt - - - - true - true - - - - - =Parameters!TipoRelacionTexto.Value - - - - - - 2pt - 2pt - 2pt - 2pt - - - - - - - 2.42456cm - - - 2.05585cm - - - 3.03631cm - - - 7.7847cm - - - - - 0.44125cm - - - - - true - true - - - - - Folio - - - - - - - Textbox10 - - - #eb831f - 2pt - 2pt - 2pt - 2pt - - - - - - - - true - true - - - - - Fecha - - - - - - - Textbox12 - - - #eb831f - 2pt - 2pt - 2pt - 2pt - - - - - - - - true - true - - - - - Importe - - - - - - - Textbox21 - - - #eb831f - 2pt - 2pt - 2pt - 2pt - - - - - - - - true - true - - - - - Folio Fiscal - - - - - - - Textbox11 - - - #eb831f - 2pt - 2pt - 2pt - 2pt - - - - - - - - 0.41479cm - - - - - true - true - - - - - =Fields!SerieFolio.Value - - - - - - 2pt - 2pt - 2pt - 2pt - - - - - - - - true - true - - - - - =Fields!Fecha.Value - - - - - - - Fecha - - - 2pt - 2pt - 2pt - 2pt - - - - - - - - true - true - - - - - =Fields!Importe.Value - - - - - - - Importe1 - - - 2pt - 2pt - 2pt - 2pt - - - - - - - - true - true - - - - - =Fields!FolioFiscal.Value - - - - - - 2pt - 2pt - 2pt - 2pt - - - - - - - - - - - - - - - - - - - - After - - - - - - - DataSet4 - 1.39643cm - 2.83462cm - 0.85604cm - 15.30142cm - 3 - - - - - - true - true - - - - - VERSION 3.3 - - - - - - - Textbox5 - 2.28775cm - 17.08931cm - 0.6cm - 3.06609cm - 4 - - - 2pt - 2pt - 2pt - 2pt - - - - true - 18.31666cm - 0.0585cm - 2.97096cm - 20.1554cm - 34 - - =Microsoft.VisualBasic.Interaction.IIF(First(Fields!SerieFolio.Value, "DataSet4") <> "", False, True) - - - - - true true @@ -4084,264 +3516,57 @@ - Nombre Comercial: + Cadena original del complemento de certificación digital del SAT: - - - - - Beneficiario: - - - - - - - - - - - - - Banco: - - - - - - - - - - - - - Clabe: - - - - - - - - - Cuenta: - - - - - - - - Textbox1 - 12.65668cm - 0.09631cm - 2.03294cm - 10.03331cm - 35 + 10.95026cm + 0.13016cm + 0.6cm + 19.96256cm + 31 + #eb831f 2pt 2pt 2pt 2pt - - true - true - - - - - JESUS JULIAN MORENO QUINTANA - - - - - - - - - Jesús Julián Moreno Quintana - - - - - - - - - BBVA Bancomer - - - - - - - - - 01 2760 0261 1276 8759 - - - - - - - - - 26 1127 6875 - - - - - - - Textbox1 - 12.65667cm - 10.12962cm - 2.03294cm - 10.08428cm - 36 + + Embedded + Logo + FitProportional + 0.07652cm + 0.13016cm + 2.76239cm + 3.72665cm + 32 - 2pt - 2pt - 2pt - 2pt - + - 25.6074cm + 20.41057cm - - - - - - - =Today - - - - - - 2pt - 2pt - 2pt - 2pt - - - - - - - 27.94cm 21.59cm 0.5cm @@ -4381,20 +3606,6 @@ c220a38d-e45b-4e04-917e-7dfd9cc3345f - - - System.Data.DataSet - /* Local Connection */ - - c220a38d-e45b-4e04-917e-7dfd9cc3345f - - - - System.Data.DataSet - /* Local Connection */ - - c220a38d-e45b-4e04-917e-7dfd9cc3345f - @@ -4609,74 +3820,6 @@ - - - DsDesgloseImpuestos - /* Local Query */ - - - - SerieFolio - System.String - - - Fecha - System.String - - - Importe - System.String - - - FolioFiscal - System.String - - - - DsDocumentosRelacionados - C:\Users\Jesus Murua\Documents\Visual Studio 2015\WebSites\WebSite2\App_Code\DsFirmas.xsd - DataTable1 - - - - - - - - DsDesgloseImpuestos - /* Local Query */ - - - - SerieFolio - System.String - - - Fecha - System.String - - - SubTotal - System.String - - - Importe - System.String - - - Moneda - System.String - - - - DsNCVinculadas - C:\Users\Jesus Murua\Documents\Visual Studio 2015\WebSites\WebSite2\App_Code\DsFirmas.xsd - DataTable1 - - - - - @@ -5219,6 +4362,57 @@ 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 + + image/png + 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 + Cm ce050101-4530-4332-90ec-6ac094336e40 diff --git a/Empresas/70/Formatos/Factura.rdlc b/Empresas/70/Formatos/Factura.rdlc index 7fb9bb4e8..9345e93cb 100644 --- a/Empresas/70/Formatos/Factura.rdlc +++ b/Empresas/70/Formatos/Factura.rdlc @@ -172,8 +172,10 @@ @@ -188,9 +190,10 @@ @@ -203,13 +206,74 @@ - www.adssistemas.mx|facturacion@adssistemas.mx + Paseo Florido 62A. Col. Nueva Galicia. C.P. 83245 + + + 0cm + 0cm + + + + + + Hermosillo, Sonora, México. + + + + 0cm + 0cm + + + + + + Tel. (662)2.16.22.70 + + + + 0cm + 0cm + + + + + + www.adssistemas.mx|compras@adssistemas.mx + @@ -221,9 +285,10 @@ Textbox4 - 1.93416in - 0.50583in - 3.62386in + 0.0635cm + 1.41912in + 1.04333in + 4.18732in 4 @@ -259,6 +325,7 @@ calibri 7pt Bold + DimGray @@ -266,7 +333,7 @@ Textbox18 - 4.66779in + 4.69279in 0.04515in 0.64582in 7.86282in @@ -285,7 +352,7 @@ External =Parameters!QR.Value FitProportional - 5.38305in + 6.38305in 0.04026in 1.3497in 1.5531in @@ -296,21 +363,6 @@ - - Embedded - logo - FitProportional - 0.07204cm - 1.40623cm - 2.88998cm - 2.5499cm - 7 - - - - true @@ -322,6 +374,7 @@ Calibri 9pt Normal + DimGray @@ -335,7 +388,7 @@ 5.662in 0.25114in 2.24597in - 8 + 7 @@ -372,7 +426,7 @@ 5.662in 0.25635in 2.24597in - 9 + 8 - - true - - - - - Domicilio Fiscal - - - - - - - - - Paseo Florido, 62 A, Col Nueva Galicia, - - - - 0cm - 0cm - - - - - - C.P.: 83240, Hermosillo, Sonora, México. - - - - 0cm - 0cm - - - - - - Tel.: (662) 216-2270 - - - - 0cm - 0cm - - - - Textbox10 - 0.51102in - 1.93416in - 0.65513in - 1.79619in - 10 - - - 2pt - 2pt - 2pt - 2pt - - - - true - - - - - Lugar de Expedición - - - - - - - - - =Parameters!DomicilioSucursal.Value - - - - - - - Textbox10 - 0.51102in - 3.77202in - 0.65513in - 1.786in - 11 - - - Top - - true true @@ -536,6 +449,8 @@ @@ -547,7 +462,7 @@ 0.14361cm 0.22222in 0.81128in - 12 + 9 @@ -589,7 +505,7 @@ 0.86782in 0.22222in 4.79418in - 13 + 10 @@ -632,7 +550,7 @@ 0.05654in 0.23611in 0.81128in - 14 + 11 @@ -675,7 +594,7 @@ 0.86782in 0.2309in 7.0427in - 15 + 12 @@ -718,7 +639,7 @@ 0.05654in 0.23611in 0.81128in - 16 + 13 @@ -743,12 +664,14 @@ =Parameters!ClienteLugar.Value @@ -760,7 +683,7 @@ 0.86782in 0.23611in 4.79418in - 17 + 14 @@ -961,11 +885,11 @@ Textbox58 - 5.38382in + 6.38382in 5.70142in 0.18056in 2.22448in - 22 + 19 @@ -988,6 +912,7 @@ calibri 7.5pt Normal + DimGray @@ -995,11 +920,11 @@ Textbox59 - 5.58098in + 6.58098in 5.69622in 0.16667in 2.22969in - 23 + 20 @@ -1021,6 +946,7 @@ @@ -1028,11 +954,11 @@ Textbox60 - 5.80049in + 6.80049in 5.69622in 0.16939in 2.22714in - 24 + 21 @@ -1054,6 +980,7 @@ @@ -1061,11 +988,11 @@ Textbox61 - 5.99764in + 6.99764in 5.70142in 0.17784in 2.22193in - 25 + 22 @@ -1087,6 +1014,7 @@ @@ -1094,6 +1022,7 @@ @@ -1101,6 +1030,7 @@ @@ -1108,6 +1038,7 @@ @@ -1115,6 +1046,7 @@ @@ -1122,6 +1054,7 @@ @@ -1129,11 +1062,11 @@ Textbox62 - 6.21987in + 7.21987in 1.60725in 0.29498in 6.31865in - 26 + 23 @@ -1154,6 +1087,7 @@ Éste documento es una representacion impresa de un CFDi @@ -1161,11 +1095,11 @@ Textbox63 - 6.51485in + 7.51485in 2.5423in 0.25in 3.69856in - 27 + 24 @@ -1193,7 +1127,7 @@ Normal dd/MM/yyyy None - #000000 + DimGray @@ -1203,6 +1137,7 @@ 7.5pt Normal dd/MM/yyyy + DimGray @@ -1212,6 +1147,7 @@ 7.5pt Normal dd/MM/yyyy + DimGray @@ -1221,6 +1157,7 @@ 7.5pt Normal dd/MM/yyyy + DimGray @@ -1232,7 +1169,7 @@ Normal dd/MM/yyyy None - #000000 + DimGray @@ -1244,7 +1181,7 @@ Normal dd/MM/yyyy None - #000000 + DimGray @@ -1256,7 +1193,7 @@ Normal dd/MM/yyyy None - #000000 + DimGray @@ -1268,7 +1205,7 @@ Normal dd/MM/yyyy None - #000000 + DimGray @@ -1280,7 +1217,7 @@ Normal dd/MM/yyyy None - #000000 + DimGray @@ -1292,7 +1229,7 @@ Normal dd/MM/yyyy None - #000000 + DimGray @@ -1304,7 +1241,7 @@ Normal dd/MM/yyyy None - #000000 + DimGray @@ -1316,7 +1253,7 @@ Normal dd/MM/yyyy None - #000000 + DimGray @@ -1328,7 +1265,7 @@ Normal dd/MM/yyyy None - #000000 + DimGray @@ -1345,7 +1282,7 @@ Normal dd/MM/yyyy None - #000000 + DimGray @@ -1362,7 +1299,7 @@ Normal dd/MM/yyyy None - #000000 + DimGray @@ -1395,6 +1332,8 @@ @@ -1427,6 +1366,8 @@ @@ -1567,6 +1508,7 @@ @@ -1987,11 +1929,11 @@ true - 20.23207cm + 22.77207cm 0.0019cm 4.14042cm 20.06179cm - 28 + 25 = (Parameters!AplicaPagare.Value="0") @@ -2663,7 +2605,7 @@ 0.11468cm 1.25761cm 20.01064cm - 29 + 26 @@ -2676,21 +2618,32 @@ - RFC: + RFC: + + + + =Parameters!ClienteRFC.Value @@ -2702,7 +2655,7 @@ 5.662in 0.23611in 2.26391in - 30 + 27 @@ -2905,6 +2859,7 @@ calibri 9pt Normal + DimGray @@ -2941,6 +2896,7 @@ 9pt Normal #,0.00 + DimGray @@ -2988,7 +2944,7 @@ 5.68499in 0.34081in 2.23334in - 31 + 28 @@ -3020,6 +2976,7 @@ Calibri 9pt '$'#,0.00;('$'#,0.00) + DimGray @@ -3078,7 +3035,9 @@ - ImpuestoLocal @@ -3104,7 +3063,7 @@ 14.4684cm 0.6cm 5.60381cm - 32 + 29 @@ -3138,6 +3097,7 @@ @@ -3150,19 +3110,9 @@ + - - - - - - - - - - 1pt 2pt @@ -3198,7 +3148,7 @@ @@ -3206,24 +3156,8 @@ + - - - 1pt - - - - 1pt - - - - 1pt - - - - 1pt - #eb831f Middle 2pt @@ -3247,6 +3181,7 @@ @@ -3291,7 +3226,7 @@ @@ -3299,24 +3234,8 @@ + - - - 1pt - - - - 1pt - - - - 1pt - - - - 1pt - #eb831f Middle 2pt @@ -3340,6 +3259,7 @@ @@ -3384,7 +3304,7 @@ @@ -3392,24 +3312,8 @@ + - - - 1pt - - - - 1pt - - - - 1pt - - - - 1pt - #eb831f Middle 2pt @@ -3433,6 +3337,7 @@ @@ -3478,7 +3383,7 @@ @@ -3486,24 +3391,8 @@ + - - - 1pt - - - - 1pt - - - - 1pt - - - - 1pt - #eb831f Middle 2pt @@ -3527,6 +3416,7 @@ @@ -3572,7 +3462,7 @@ @@ -3580,24 +3470,8 @@ + - - - 1pt - - - - 1pt - - - - 1pt - - - - 1pt - #eb831f Middle 2pt @@ -3621,6 +3495,7 @@ @@ -3645,64 +3520,6 @@ - - 0.6cm - - - - - true - true - - - - - Cadena original del complemento de certificación digital del SAT: - - - - - - - Textbox136 - - - - - - - - - - - - - - 1pt - - #eb831f - Middle - 2pt - 2pt - 2pt - 2pt - - - 2 - - - - - @@ -3719,15 +3536,14 @@ - DsOC 5.84979cm 0.14053cm - 6cm + 5.4cm 14.32787cm - 33 + 30 @@ -3785,6 +3601,7 @@ Myriad Pro 8pt Bold + DimGray @@ -3820,6 +3637,7 @@ @@ -4028,6 +3846,7 @@ @@ -4061,6 +3880,7 @@ myriad pro 7.5pt dd/MM/yyyy + DimGray @@ -4096,6 +3916,7 @@ myriad pro 7.5pt #,0.00;-#,0.00;'-' + DimGray @@ -4130,6 +3951,7 @@ @@ -4195,6 +4017,7 @@ MYRiad Pro 9.16pt Bold + DimGray @@ -4221,11 +4044,11 @@ true - 17.18306cm + 19.72306cm 0.04112cm 2.97096cm 20.1554cm - 34 + 31 =Microsoft.VisualBasic.Interaction.IIF(First(Fields!SerieFolio.Value, "DataSet4") <> "", False, True) @@ -4235,8 +4058,242 @@ + + true + true + + + + + Cadena original del complemento de certificación digital del SAT: + + + + + + + Textbox1 + 11.26418cm + 0.14053cm + 0.6cm + 19.93168cm + 32 + + + #eb831f + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + Nombre Comercial + + + + + + + + + Beneficiario + + + + + + + + + Banco + + + + + + + + + Clabe + + + + + + + + + Cuenta + + + + + + + Textbox5 + 13.70118cm + 0.14361cm + 2.37271cm + 9.55228cm + 33 + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + AD Sistemas Soluciones en TI S.A. de C.V + + + + + + + + + AD Sistemas Soluciones en TI S.A. de C.V + + + + + + + + + BBVA Bancomer + + + + + + + + + 01 2760 0010 3031 6240 + + + + + + + + + 01 0303 1624 + + + + + + + Textbox5 + 13.70118cm + 9.7982cm + 2.37271cm + 9.55228cm + 34 + + + 2pt + 2pt + 2pt + 2pt + + + + Embedded + Logo + FitProportional + 0.0635cm + 0.14361cm + 2.6818cm + 3.32767cm + 35 + + + + - 24.37249cm + 27.07124cm @@ -4269,6 +4327,7 @@ =Today @@ -5178,6 +5237,57 @@ OD7vW1kNMHB6w4ebT6+4cBNw7u7uJCOeS3RPEVCkIejo6KApqFHXxGygOAMvqGE+eBaCxXnMmDHjpVEj wDra2lAbPXr0mDGjScCmTZsqLgbHiyiukRHLHt9WfAGLt7f38ePH/8JuUCkaHhzHdub0qeDAgFHWVrCrDM7QSJ+RS1+XZgo4hgQmqmbvvgs1xSiqrDVBjYZ77NixV0RrIhoeHHHr1q24DesdxttDrRI4I0ND5vxhQ4cCTlBTLBYJamiNURSt0UAV1I4cOfLqaE1Eo4Cj5Z05fTooIADBWSiBGzhA9hdEhpiZDRs2lHmUIZS5StQ1QU0se9BDkRspLKhR1141akSjgCMQ3brYdQ724/74U8iDBw0yNpb9QYzBgzp3/r558+ZojR4KNbHERkOAGloDGdZEX18fY3z48OFXKkMV0Vjg0Ej2yZMBfn6/gzMzMzExNTEZYGT47TffCK2J83uAEwuTCI3BwNjYmIGBcSo2NpYG/de63BqiscARJYhuzRrbMaPIU1mympnhQhAUtgNqsKMboDVUxiw1fPhwnO38+fOTkpLIzdzc3Hp/7efLiUYEh+gwEH4+PkNMTEjV/lpan37aAaNLtGjRgilKS0sLq0c+xsTEpKWlXbhwgQTnWa8yL0U0IjiipOR27Nq1o6ytmbA6fv4ZHYCqT/FycHCIiIiIj48X4rp///7fApZyNC648idPsrOzg4OCZP5jxAis/4oVK/bt26cQl3y7v2E0LjiiuLg4JSVl48aNiEtSscb9txNXldHo4Bj7sa9ZWVm5N2+iMrLyVRjRXzwaOVXLyn755ZfNmzahuIMZGdmnTpGkN27cgObdu3exGq+mR6tNNC643+7cQW6AS9iyZe/evYcOHRK/Wn7+/PkrV67QFgoLC+/cufPw4cO/SzNVRCOCIyVzb9zIPHhw7549KRVf7XTs6NGz52Qh+/qRs2d//vnnixcv5uTk3Lx5UxCkAv6/HXn66OHDy5cuoTiCyYk4ceLEzxVaIy7/HuKfV69evX79ukQiURBk4H2VCTYWOI6ZyeHSxYuoC1gEQuN/ITEYVYpfK4IfqIDi u/dEHXxli2BjgSt7/LhAKr129eq1K1dktxX/5Vy7xi1oUJYENtWE7NGKQH2vbBduFHDIjQMuKCjIy8uTM/g94JInyZNKpQgKi0fwQ6UQd0KN25KSkleTXaOA4zjJMlxblQEL4vbvQUWrOZj2X8GO0SjgOE6qO0qpMgAhHhU/iBAPVRfC8b1C7J4+/T+bHvWpPSfVSAAAAABJRU5ErkJggg== + + image/png + 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 + Cm ce050101-4530-4332-90ec-6ac094336e40 From 2bdc38c08052f4c42e9429432472f995354dd9b4 Mon Sep 17 00:00:00 2001 From: Antonio Gonzalez Date: Mon, 12 Oct 2020 19:26:28 -0700 Subject: [PATCH 16/36] - --- Compras/Compras.aspx.vb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Compras/Compras.aspx.vb b/Compras/Compras.aspx.vb index f17632a17..6109d4080 100644 --- a/Compras/Compras.aspx.vb +++ b/Compras/Compras.aspx.vb @@ -20306,9 +20306,9 @@ Partial Class Compras_Compras ' Return False 'End If - Return True + 'Return True - End Function + 'End Function Private Function VerificarProductosCompraConOC() As Boolean From db6a7abb5028808fa2bfa50d8a17927570889483 Mon Sep 17 00:00:00 2001 From: Jonathan Alexis Perez Morales Date: Mon, 12 Oct 2020 19:28:45 -0700 Subject: [PATCH 17/36] funcionalidad de lista de precios en punto de venta --- Ventas/PV.aspx.vb | 67 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) diff --git a/Ventas/PV.aspx.vb b/Ventas/PV.aspx.vb index 5793ea5e6..7c837c409 100644 --- a/Ventas/PV.aspx.vb +++ b/Ventas/PV.aspx.vb @@ -3668,6 +3668,73 @@ Partial Class PV End If End If End If + + If UsuarioActual.CveEmpresa.Contiene(1) Then + Dim ObjPS As New ClsProductosServicios + If ObjPS.GetPorcentajeProductos(CveCliente) Then + Dim PrecioAplicado = ObjPS.DtResultados.FiltraParametros($"CvePS = {CvePSParametro}").FiltroPrimeroValor("PrecioA").ToDouble + If PrecioAplicado > 0 Then + PrecioSugerido = PrecioAplicado + End If + End If + ObjPS.Dispose() + End If + + If UsuarioActual.Empresa.Funcionalidad(404).ToEntero > 0 Then 'cuando el valor es 10.- secuencia Cliente/Sucursal, 20 - sucursal/cliente + Dim TipoPrecioLista As Integer = UsuarioActual.Empresa.Funcionalidad(404).ToEntero + ' si es 10. primero el cliente + Dim CvePrecioListaPS As Integer + Dim PorcentajePrecio As Double = 0 + + If TipoPrecioLista = 10 Then + CvePrecioListaPS = GlobalDTCliente(UsuarioActual.CveEmpresa, Estatus:=-1, CveCliente:=CveCliente).FiltroPrimeroValor("CvePrecioLista").ToEntero() + If CvePrecioListaPS <= 0 Then + CvePrecioListaPS = GlobalDTSubProyectos(-1, CveSubProyecto:=DdlSubProyectoDatos.SelectedValue.ToEntero(), CveEmpresa:=UsuarioActual.CveEmpresa).FiltroPrimeroValor("CvePrecioLista", "").ToEntero() + End If + Else + CvePrecioListaPS = GlobalDTSubProyectos(-1, CveSubProyecto:=DdlSubProyectoDatos.SelectedValue.ToEntero(), CveEmpresa:=UsuarioActual.CveEmpresa).FiltroPrimeroValor("CvePrecioLista", "").ToEntero() + If CvePrecioListaPS <= 0 Then + CvePrecioListaPS = GlobalDTCliente(UsuarioActual.CveEmpresa, Estatus:=-1, CveCliente:=CveCliente).FiltroPrimeroValor("CvePrecioLista").ToEntero() + End If + End If + + If CvePrecioListaPS > 0 Then + Dim ObjPS As New ClsProductosServicios + If ObjPS.GetPSPreciosLista(UsuarioActual.CveEmpresa, CvePrecioListaPS, CvePS:=CvePSParametro) Then + PrecioSugerido = ObjPS.DtResultados.FiltroPrimeroValor("PrecioLista").ToDouble + PorcentajePrecio = ObjPS.DtResultados.FiltroPrimeroValor("Porcentaje").ToDouble + End If + ObjPS.Dispose() + End If + + If PrecioSugerido = 0 Then + Dim ObjInventarios As New ClsInventarios + Dim CostoPS = ObjInventarios.GetCostoPS(CvePSParametro, TxtCantidad.Text.Trim.ToDouble, -1, "-1", TxtFecha.Text.ToDate, DdlSubProyectoDatos.SelectedValue.ToEntero(), CveTipoAlmacen:=1) + 'si el costo es cero, puede ser que no halla movimientos del producto, en esa sucursal. y se volverá a sacar sin especificar sucursal + If CostoPS = 0 Then CostoPS = ObjInventarios.GetCostoPS(CvePSParametro, TxtCantidad.Text.Trim.ToDouble, -1, "-1", TxtFecha.Text.ToDate, -1, CveTipoAlmacen:=1) + ObjInventarios.Dispose() + If CostoPS > 0 And PorcentajePrecio > 0 Then + PrecioSugerido = ((PorcentajePrecio / 100) + 1) * CostoPS + End If + End If + 'CvePrecioLista = CvePrecioListaPS + End If + + + 'Dim ObjClasificaciones As New ClsClasificaciones + 'If ObjClasificaciones.GetClasificaciones() Then + ' PrecioBaseCosto = ObjClasificaciones.DtResultados.FiltroPrimeroValor("PrecioBaseCosto", $"CveEmpresa = {UsuarioActual.CveEmpresa} AND CveClasificacion = {drPS("CveClasificacion")}").ToDecimal + 'End If + + If PrecioSugerido > 0 Then + Dim PrecioBaseCosto As Decimal = 0 + PrecioBaseCosto = GlobalDTClasificaciones(UsuarioActual.CveEmpresa, CveClasificacion:=drPS("CveClasificacion").ToString().ToEntero()).FiltroPrimeroValor("PrecioBaseCosto", "").ToDecimal + + If PrecioBaseCosto > 0 Then + PrecioSugerido = PrecioSugerido * ((PrecioBaseCosto / 100) + 1) + End If + End If + If PrecioSugerido > 0 Then TxtPrecio.Text = PrecioSugerido.FormatoNumero() RegistraScript("$get('LblPrecio1').innerText = formato_numero(" + PrecioSugerido.ToString + ", 2, '.', ',');") From 9925e1b51e12d6018a752cb6354e024195bd37de Mon Sep 17 00:00:00 2001 From: Jonathan Alexis Perez Morales Date: Mon, 12 Oct 2020 19:31:11 -0700 Subject: [PATCH 18/36] No generar movimiento virtuales en motobaterias --- Inventarios/RecepcionAlmacen.aspx.vb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Inventarios/RecepcionAlmacen.aspx.vb b/Inventarios/RecepcionAlmacen.aspx.vb index 59c4fb6bc..b6f55b9e9 100644 --- a/Inventarios/RecepcionAlmacen.aspx.vb +++ b/Inventarios/RecepcionAlmacen.aspx.vb @@ -971,7 +971,8 @@ Partial Class Inventarios_RecepcionAlmacen CveAlmacenDevolucionProveedor = DtRecepcion.Rows(0)("CveAlmacenDevolucionProveedor").ToString.ToEntero - If UsuarioActual.Empresa.Funcionalidad(573) = "1" AndAlso (DtRecepcion.COUNT("CveTamaño", "CveTamaño > 0") > 0 OrElse CargaSoloUsados) Then + 'SI ES MOTOBATERIA NO GENERA MOVIMIENTO VIRTUAL + If UsuarioActual.Empresa.Funcionalidad(573) = "1" AndAlso (DtRecepcion.COUNT("CveTamaño", "CveTamaño > 0 AND CveTamaño <> 16") > 0 OrElse CargaSoloUsados) Then RealizarMovimientoVirtual = True DivVirtualAdvertencia.Visible = True End If From e30c356fc153d01ec3050f4375f917ade011f556 Mon Sep 17 00:00:00 2001 From: Jonathan Alexis Perez Morales Date: Mon, 12 Oct 2020 19:31:37 -0700 Subject: [PATCH 19/36] Permite Editar datos de cliente de acumuladores --- Ventas/Clientes.aspx.vb | 39 ++++++++++++++++++++++++++++++--------- 1 file changed, 30 insertions(+), 9 deletions(-) diff --git a/Ventas/Clientes.aspx.vb b/Ventas/Clientes.aspx.vb index ad9f29627..ca113dc39 100644 --- a/Ventas/Clientes.aspx.vb +++ b/Ventas/Clientes.aspx.vb @@ -771,6 +771,11 @@ Partial Class Clientes VerificaVinculacion() UpAccionesCRM.Update() End If + + If UsuarioActual.Empresa.Funcionalidad(531) = "1" AndAlso Not UsuarioActual.TienePermisoProceso(309) Then + DeshabilitarDatosClienteCajas() + End If + End If 'End If HlEvento.Visible = True @@ -901,17 +906,33 @@ Partial Class Clientes End Function Private Function PermiteEliminar() As Boolean Return UsuarioActual.TienePermisoProceso(194) - End Function - + End Function + + Private Sub DeshabilitarDatosClienteCajas() + DdlSubProyecto.Enabled = False + DdlPrecioLista.Enabled = False + DdlClasificacion.Enabled = False + DdlVendedor.Enabled = False + DdlCorporativo.Enabled = False + ChkRequiereOC.Enabled = False + ChkEsDistribuidor.Enabled = False + DdlTipoCliente.Enabled = False + TxtCorreoEntregaCompras.Enabled = False + TxtCorreoEntregaAlmacen.Enabled = False + ChkCargoUsado.Enabled = False + ChkBonificacionUsado.Enabled = False + End Sub + + #End Region - - + + #Region "C A R G A S" - - - - - + + + + + Private Sub CreaDtPago() DtPagos = New DataTable DtPagos.Columns.Add("CveTipoMovimiento", GetType(String)) From 30eebdb2da79fe886ca1002f5bd11c868a9f9374 Mon Sep 17 00:00:00 2001 From: Jonathan Alexis Perez Morales Date: Mon, 12 Oct 2020 19:32:03 -0700 Subject: [PATCH 20/36] Error al enviar correo de factura al obtener el serie folio --- Ventas/Ventas.aspx.vb | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/Ventas/Ventas.aspx.vb b/Ventas/Ventas.aspx.vb index c34bd0649..abb3ba8e9 100644 --- a/Ventas/Ventas.aspx.vb +++ b/Ventas/Ventas.aspx.vb @@ -12625,7 +12625,7 @@ Partial Class Ventas Try ' BytesPdfCotizacion(CveVenta) - Dim Hilo As New System.Threading.Thread(Sub() MandaMails(CveVenta, ChkEnviarFactura.Checked, ArchivoXML, ArchivoPDF)) + Dim Hilo As New System.Threading.Thread(Sub() MandaMails(CveVenta, DdlTipoComprobante.SelectedValue.ToString(), LocalSerieFolio, ChkEnviarFactura.Checked, ArchivoXML, ArchivoPDF)) Hilo.Start() Catch ex As Exception OnError("Ocurrió error al mandar Mail", ex) @@ -12667,7 +12667,7 @@ Partial Class Ventas Try ' BytesPdfCotizacion(CveVenta) - Dim Hilo As New System.Threading.Thread(Sub() MandaMails(CveVenta, ChkEnviarFactura.Checked, ArchivoXML, ArchivoPDF)) + Dim Hilo As New System.Threading.Thread(Sub() MandaMails(CveVenta, DdlTipoComprobante.SelectedValue.ToString(), LocalSerieFolio, ChkEnviarFactura.Checked, ArchivoXML, ArchivoPDF)) Hilo.Start() Catch ex As Exception OnError("Ocurrió error al mandar Mail", ex) @@ -12706,7 +12706,7 @@ Partial Class Ventas Try ' BytesPdfCotizacion(CveVenta) - Dim Hilo As New System.Threading.Thread(Sub() MandaMails(CveVenta, ChkEnviarFactura.Checked, ArchivoXML, ArchivoPDF)) + Dim Hilo As New System.Threading.Thread(Sub() MandaMails(CveVenta, DdlTipoComprobante.SelectedValue.ToString(), LocalSerieFolio, ChkEnviarFactura.Checked, ArchivoXML, ArchivoPDF)) Hilo.Start() Catch ex As Exception OnError("Ocurrió error al mandar Mail", ex) @@ -17757,7 +17757,7 @@ Partial Class Ventas #End Region #Region " MANDA CORREO " - Private Sub MandaMails(CveVenta As Integer, EnviarFactura As Boolean, XML As String, PDF As String) + Private Sub MandaMails(CveVenta As Integer, TipoDocto As String, SerieFolio As String, EnviarFactura As Boolean, XML As String, PDF As String) Dim ObjMail As New ClsSisMail() Dim ObjVentas As New ClsVentas @@ -17770,12 +17770,12 @@ Partial Class Ventas Dim TipoComprobante = "" - If DdlTipoComprobante.SelectedValue.ToString() = "Ing" Then TipoComprobante = "Factura" - If DdlTipoComprobante.SelectedValue.ToString() = "Egs" Then TipoComprobante = "Nota de Crédito" - If DdlTipoComprobante.SelectedValue.ToString() = "Dev" Then TipoComprobante = "Nota de Devolución" - If DdlTipoComprobante.SelectedValue.ToString() = "Rem" Then TipoComprobante = "Remisión" - If DdlTipoComprobante.SelectedValue.ToString() = "Cot" Then TipoComprobante = "Cotización" - If DdlTipoComprobante.SelectedValue.ToString() = "Ant" Then TipoComprobante = "Anticipo" + If TipoDocto = "Ing" Then TipoComprobante = "Factura" + If TipoDocto = "Egs" Then TipoComprobante = "Nota de Crédito" + If TipoDocto = "Dev" Then TipoComprobante = "Nota de Devolución" + If TipoDocto = "Rem" Then TipoComprobante = "Remisión" + If TipoDocto = "Cot" Then TipoComprobante = "Cotización" + If TipoDocto = "Ant" Then TipoComprobante = "Anticipo" If UsuarioActual.Empresa.PlantillaMailVenta.Trim.Length > 0 Then Cuerpo = UsuarioActual.Empresa.PlantillaMailVenta @@ -17785,14 +17785,14 @@ Partial Class Ventas Cuerpo = Cuerpo.Replace("{""Fecha""}", TxtFecha.Text) Cuerpo = Cuerpo.Replace("{""Total""}", TxtTotal.Text) Cuerpo = Cuerpo.Replace("{""FechaVencimiento""}", TxtFechaPago.Text) - Cuerpo = Cuerpo.Replace("{""SerieFolio""}", ObjFactura.SerieFolio) + Cuerpo = Cuerpo.Replace("{""SerieFolio""}", SerieFolio) End If If UsuarioActual.Empresa.AsuntoPlantillaMailVenta.Trim.Length > 0 Then Asunto = UsuarioActual.Empresa.AsuntoPlantillaMailVenta Asunto = Asunto.Replace("{""TipoDocumento""}", TipoComprobante) Asunto = Asunto.Replace("{""Sucursal""}", DdlSubProyectoDatos.SelectedItem.Text) - Asunto = Asunto.Replace("{""SerieFolio""}", ObjFactura.SerieFolio) + Asunto = Asunto.Replace("{""SerieFolio""}", SerieFolio) End If If Not EnviarFactura Then From a169286b3dea6ac2e4a42537a33ba3a86f1525c9 Mon Sep 17 00:00:00 2001 From: rrene Date: Tue, 13 Oct 2020 13:28:10 -0700 Subject: [PATCH 21/36] - cambios para el usuario luz del mar y celia --- Inventarios/EntradasSalidas.aspx.vb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Inventarios/EntradasSalidas.aspx.vb b/Inventarios/EntradasSalidas.aspx.vb index 059f71e5b..5da863d9d 100644 --- a/Inventarios/EntradasSalidas.aspx.vb +++ b/Inventarios/EntradasSalidas.aspx.vb @@ -2083,7 +2083,7 @@ Partial Class Inventarios_EntradasSalidas ''condicion de limpieza si es el usuario 1490, se dejan sino If UsuarioActual.CveEmpresa.Contiene(72, 80, 146) Then - If UsuarioActual.CveUsuario <> 1490 Then + If Not UsuarioActual.CveUsuario.Contiene(1490, 2185) Then 'luz del mar(1490), y celia(2185) DdlConcepto.Items.Remove(DdlConcepto.Items.FindByValue("1")) DdlConcepto.Items.Remove(DdlConcepto.Items.FindByValue("2")) DdlConcepto.Items.Remove(DdlConcepto.Items.FindByValue("3")) From e85652587c0fc827db4ee2226ab2e7a82c8945a4 Mon Sep 17 00:00:00 2001 From: rrene Date: Tue, 13 Oct 2020 13:28:20 -0700 Subject: [PATCH 22/36] -- liga de conceptos --- Contabilidad/ContabilizacionVentas.aspx.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Contabilidad/ContabilizacionVentas.aspx.cs b/Contabilidad/ContabilizacionVentas.aspx.cs index 93878626d..ab77c72da 100644 --- a/Contabilidad/ContabilizacionVentas.aspx.cs +++ b/Contabilidad/ContabilizacionVentas.aspx.cs @@ -336,7 +336,7 @@ public partial class Contabilidad_ContabilizacionVentas : ClsPaginas int cvecuenta = e.Row.DataKey("CveCuenta").ToString().ToEntero(); int CveConcepto = e.Row.DBCampo("CveConceptoContable").ToEntero(); - if (CveConcepto.Contiene(5, 6, 14, 19, 17, 206, 25, 26)) + if (CveConcepto.Contiene(5, 6, 14, 19, 17, 206, 25, 26,272,275, 305,306,307,308,309,310,311,312 )) { e.Row.FCHyperLink("HplC").NavigateUrl = string.Format("/Compras/Compras.aspx?CveCompra={0}", e.Row.DBCampo("CveCompra")); } @@ -344,7 +344,7 @@ public partial class Contabilidad_ContabilizacionVentas : ClsPaginas { e.Row.FCHyperLink("HplC").NavigateUrl = string.Format("/Bancos/IE.aspx?CveIE={0}", e.Row.DBCampo("CveIE")); } - if (CveConcepto.Contiene(1, 2, 4, 13, 61, 38, 39, 150, 203, 207, 251)) + if (CveConcepto.Contiene(1, 2, 4, 12, 13, 61, 38, 39, 91, 150, 203, 207, 251, 291, 292, 293, 294)) { e.Row.FCHyperLink("HplC").NavigateUrl = string.Format("/Ventas/Ventas.aspx?CveVenta={0}", e.Row.DBCampo("CveVenta")); } From a5e9dcf8c46c7703073ea73cec13f9550198362e Mon Sep 17 00:00:00 2001 From: rrene Date: Tue, 13 Oct 2020 13:28:33 -0700 Subject: [PATCH 23/36] - tc cuando son dolares --- Bancos/Devoluciones.aspx.cs | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/Bancos/Devoluciones.aspx.cs b/Bancos/Devoluciones.aspx.cs index 991e48ded..65a91d93d 100644 --- a/Bancos/Devoluciones.aspx.cs +++ b/Bancos/Devoluciones.aspx.cs @@ -339,6 +339,7 @@ public partial class Bancos_Devoluciones : ClsPaginas int cvePersonal = (DdlPersonal.SelectedValue.ToEntero() > 0) ? DdlPersonal.SelectedValue.ToEntero() : -1; int cveCliente = (DdlCliente.SelectedValue.ToEntero() > 0) ? DdlCliente.SelectedValue.ToEntero() : -1; bool TipoMovoDevolucion = false; + double TC = 1; StringBuilder Msg = new StringBuilder(); switch (OpcionDevolucion.SelectedValue) @@ -369,6 +370,11 @@ public partial class Bancos_Devoluciones : ClsPaginas break; } + if (CveMoneda != 1) + { + TC = get_GlobalTipoCambio(TxtFechaDocumento.Text.ToDate()); + } + // DATOS PREPOLIZA if ( DdlTipoTransanccion.SelectedValue == "1" && UsuarioActual.CveEmpresa != 119) FolioFijo = TxtFolio.Text.ToEntero(); CvePrePoliza = ObjMov.AddPrePolizas("Bancos/IE Devoluciones", CvePlantillaPoliza, TxtImporte.Text.Trim().ToDouble(), TxtImporte.Text.Trim().ToDouble(), CveMoneda, TxtFechaDocumento.Text.ToDate(), TxtObservaciones.Text.Trim(), UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, FolioFijo: FolioFijo, ReglaFolioPoliza: ObjComp.ObtenerReglaFolio(DdlTipoTransanccion.SelectedValue, null, UsuarioActual.CveEmpresa), CveTipoPoliza: ObjMov.ObtenerTipoPoliza(DdlTipoTransanccion.SelectedValue, "-1", UsuarioActual.CveEmpresa)); @@ -379,7 +385,7 @@ public partial class Bancos_Devoluciones : ClsPaginas string Ref = TxtObservaciones.Text == "" ? TxtFolio.Text : TxtObservaciones.Text; CveIE = ObjIE.AddBancos_IE(DdlCuenta.SelectedValue.ToEntero(), DdlTipoTransanccion.SelectedValue.ToEntero(), TxtFechaDocumento.Text.Trim().ToDate(), TxtFolio.Text.Trim(), PagueseA, TxtImporte.Text.Trim().ToDouble(), CveMoneda, - 1, TxtObservaciones.Text.Trim(), "", false, false, -1, CvePrePoliza, "", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa); + TC, TxtObservaciones.Text.Trim(), "", false, false, -1, CvePrePoliza, "", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa); if (CveIE > 0) { //GUARDA PREPOLIZAS DETALLE DEVOLUCION From c68f7d3285c728e6e3a46ec5fc17916c2a2dfce4 Mon Sep 17 00:00:00 2001 From: rrene Date: Tue, 13 Oct 2020 13:29:17 -0700 Subject: [PATCH 24/36] - cambio de mejora --- Bancos/DepositosCaja.aspx.vb | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Bancos/DepositosCaja.aspx.vb b/Bancos/DepositosCaja.aspx.vb index fec2b767e..3ed466c16 100644 --- a/Bancos/DepositosCaja.aspx.vb +++ b/Bancos/DepositosCaja.aspx.vb @@ -26,13 +26,13 @@ Partial Class Bancos_DepositosCaja End Sub Private Sub CargaCuentas() - DdlCuentaDeposito.DataSource = GlobalDTBancosCuentas(-1, CveEmpresa:=UsuarioActual.CveEmpresa).FiltraParametros($"CveEmpresa = {UsuarioActual.CveEmpresa} AND CveTipoCuenta <> 1", "", {"CveCuenta", "NumCuentaMoneda"}) + DdlCuentaDeposito.DataSource = GlobalDTBancosCuentas(-1, CveEmpresa:=UsuarioActual.CveEmpresa).FiltraParametros(" CveTipoCuenta <> 1", "", {"CveCuenta", "NumCuentaMoneda"}) DdlCuentaDeposito.DataBind() - DdlCajaChica.DataSource = GlobalDTBancosCuentas(-1, CveEmpresa:=UsuarioActual.CveEmpresa).FiltraParametros($"CveEmpresa = {UsuarioActual.CveEmpresa} AND CveTipoCuenta = 1", "", {"CveCuenta", "NumCuentaMoneda"}) + DdlCajaChica.DataSource = GlobalDTBancosCuentas(-1, CveEmpresa:=UsuarioActual.CveEmpresa).FiltraParametros(" CveTipoCuenta = 1", "", {"CveCuenta", "NumCuentaMoneda"}) DdlCajaChica.DataBind() - DdlSubProyectos.DataSource = GlobalDTSubProyectosUsuarios(UsuarioActual.CveEmpresa, -1, UsuarioActual.CveEmpresa) + DdlSubProyectos.DataSource = GlobalDTSubProyectosUsuarios(UsuarioActual.CveUsuario, -1, UsuarioActual.CveEmpresa) DdlSubProyectos.DataBind() DdlSubProyectos.Items.Insert(0, New ListItem("Todos", "-1")) End Sub @@ -86,8 +86,8 @@ Partial Class Bancos_DepositosCaja Dim IdCuentaBancariaDestino As Integer = 0 Dim CveCuentaBancariaOrigen As Integer = 0 Dim CveCuentaBancariaDestino As Integer = 0 - Dim drOrigen As DataRow = GlobalDTBancosCuentas(UsuarioActual.CveUsuario, CveEmpresa:=UsuarioActual.CveEmpresa).FiltroPrimero($"CveCuenta = {DdlCajaChica.SelectedValue}") - Dim drDestino As DataRow = GlobalDTBancosCuentas(UsuarioActual.CveUsuario, CveEmpresa:=UsuarioActual.CveEmpresa).FiltroPrimero($"CveCuenta = {DdlCuentaDeposito.SelectedValue}") + Dim drOrigen As DataRow = GlobalDTBancosCuentas(UsuarioActual.CveUsuario, CveCuenta:=DdlCajaChica.SelectedValue.ToEntero, CveEmpresa:=UsuarioActual.CveEmpresa).FiltroPrimero("") + Dim drDestino As DataRow = GlobalDTBancosCuentas(UsuarioActual.CveUsuario, CveCuenta:=DdlCuentaDeposito.SelectedValue.ToEntero, CveEmpresa:=UsuarioActual.CveEmpresa).FiltroPrimero("") If drOrigen IsNot Nothing Then CveMoneda = drOrigen("CveMoneda").ToString.ToEntero From 3110ed3b1f86e07fb945021eb7d79c3ae5db941a Mon Sep 17 00:00:00 2001 From: rrene Date: Tue, 13 Oct 2020 13:29:43 -0700 Subject: [PATCH 25/36] -- se debe de validar la prepoliza antes de contabilizarla --- Bancos/IE.aspx.vb | 45 ++++++++++++++++++++++++--------------------- 1 file changed, 24 insertions(+), 21 deletions(-) diff --git a/Bancos/IE.aspx.vb b/Bancos/IE.aspx.vb index 663b0e342..716f86cfc 100644 --- a/Bancos/IE.aspx.vb +++ b/Bancos/IE.aspx.vb @@ -3671,27 +3671,7 @@ Partial Class Bancos_IE End If End Select - - 'El movimiento 1 es el de Venta - - 'Conta ContPAQ - If UsuarioActual.Empresa.Funcionalidad(200) = "1" AndAlso MsgError = "" Then - If IDCtaBeneficiario > 0 And IDCtaContable > 0 Then - If ObjMov.ContabilizarPrePoliza(CvePrePoliza, UsuarioActual.CveUsuario, UsuarioActual.Empresa) Then - IDPoliza = ObjMov.ContaIdPoliza - 'Alert(alertaContabilizacion & ObjMov.AlertaMensaje, ModExtensiones.TipoMensaje.MsgInformacion) - Else - Alert("Ocurrio un error al contabilizar, pongase en contacto con Soporte Técnico", TipoMensaje.MsgError) - End If - Else - If IDCtaContable < 1 Then - Alert("No se puede contabilizar la Prepoliza debido a que la cuenta de Bancos es invalida", TipoMensaje.MsgAdvertencia) - End If - If IDCtaBeneficiario < 1 Then - Alert("No se puede contabilizar la Prepoliza debido a que las cuenta del Beneficiario es invalida", TipoMensaje.MsgAdvertencia) - End If - End If - End If + If UsuarioActual.Empresa.UsaAC Then Dim ConceptoRenglon, Referencia As String @@ -3783,6 +3763,29 @@ Partial Class Bancos_IE Else MsgError = "No se pudo validar la prepoliza de cuadre." End If + End If + + + 'El movimiento 1 es el de Venta + + 'Conta ContPAQ + If UsuarioActual.Empresa.Funcionalidad(200) = "1" AndAlso MsgError = "" Then + If IDCtaBeneficiario > 0 And IDCtaContable > 0 Then + If ObjMov.ContabilizarPrePoliza(CvePrePoliza, UsuarioActual.CveUsuario, UsuarioActual.Empresa) Then + IDPoliza = ObjMov.ContaIdPoliza + 'Alert(alertaContabilizacion & ObjMov.AlertaMensaje, ModExtensiones.TipoMensaje.MsgInformacion) + Else + Alert("Ocurrio un error al contabilizar, pongase en contacto con Soporte Técnico", TipoMensaje.MsgError) + MsgError = "Error al contabilizar." + End If + Else + If IDCtaContable < 1 Then + Alert("No se puede contabilizar la Prepoliza debido a que la cuenta de Bancos es invalida", TipoMensaje.MsgAdvertencia) + End If + If IDCtaBeneficiario < 1 Then + Alert("No se puede contabilizar la Prepoliza debido a que las cuenta del Beneficiario es invalida", TipoMensaje.MsgAdvertencia) + End If + End If End If If MsgError = "" Then From 4c8c395ca4e8373f41f1a38bc36cdb8e9192e548 Mon Sep 17 00:00:00 2001 From: rrene Date: Tue, 13 Oct 2020 13:29:56 -0700 Subject: [PATCH 26/36] nuevo global --- Sistemas/CatSesiones.aspx | 3 ++- Sistemas/CatSesiones.aspx.vb | 16 ++++++++++++++-- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/Sistemas/CatSesiones.aspx b/Sistemas/CatSesiones.aspx index 0f9885da8..7b5ce4727 100644 --- a/Sistemas/CatSesiones.aspx +++ b/Sistemas/CatSesiones.aspx @@ -56,7 +56,8 @@ - + +    diff --git a/Sistemas/CatSesiones.aspx.vb b/Sistemas/CatSesiones.aspx.vb index d37d08cc2..0d7a489d3 100644 --- a/Sistemas/CatSesiones.aspx.vb +++ b/Sistemas/CatSesiones.aspx.vb @@ -92,13 +92,25 @@ Partial Class Sistemas_CatSesiones ElseIf DdlVariable.SelectedItem.Value = "GlobalDTClasificacionPorcentaje" Then CargaDTClasificacionPorcentaje() ElseIf DdlVariable.SelectedItem.Value = "GlobalDTInvPSSeccionesAlmacen" Then - CargaDTInvPSSeccionesAlmacen() + CargaDTInvPSSeccionesAlmacen() + ElseIf DdlVariable.SelectedItem.Value = "GlobalDTTipoTransacciones" Then + CargaGlobalDTTipoTransacciones() End If - End Sub + End Sub + Private Sub CargaGlobalDTTipoTransacciones() + Using ObjBancos As New ClsBancos + If ObjBancos.GetBancos_TiposTransaccion(-1) Then Application("GlobalDTTipoTransacciones") = ObjBancos.DtResultados Else Application("GlobalDTTipoTransacciones") = Nothing + If ObjBancos.GetBancos_EstatusIE() Then Application("GlobalDTBancosEstatusIE") = ObjBancos.DtResultados Else Application("GlobalDTBancosEstatusIE") = Nothing + If ObjBancos.GetBancos() Then Application("GlobalDTBancos") = ObjBancos.DtResultados Else Application("GlobalDTBancos") = Nothing + If ObjBancos.GetBancos_TiposCuenta() Then Application("GlobalDTTipoCuenta") = ObjBancos.DtResultados Else Application("GlobalDTTipoCuenta") = Nothing + End Using + End Sub + + Private Sub CargaConceptosContables() Dim ObjContabilidad As New ClsContabilidad If ObjContabilidad.GetConta_ConceptosContables() Then Application("GlobalDTContaConceptosContables") = ObjContabilidad.DtResultados Else Application("GlobalDTContaConceptosContables") = Nothing From e79d5ccace2dec9106cd8679f81191c191f64d0c Mon Sep 17 00:00:00 2001 From: rrene Date: Tue, 13 Oct 2020 13:33:24 -0700 Subject: [PATCH 27/36] -- candado de bloqueo de generar NC, cuando E119, rfc XAXX --- Ventas/Ventas.aspx.vb | 1 + 1 file changed, 1 insertion(+) diff --git a/Ventas/Ventas.aspx.vb b/Ventas/Ventas.aspx.vb index 20d6b1a1b..67b3653a7 100644 --- a/Ventas/Ventas.aspx.vb +++ b/Ventas/Ventas.aspx.vb @@ -22991,6 +22991,7 @@ Partial Class Ventas AplicaNC = False LBNotaCredito.Visible = True 'LkNotaCredito.Visible = False + DeshabilitarAplicarNotaDeCredito(LblRFC.Text) TxtNCPorcentaje.Attributes.Add("onkeyup", "CalculaImporteNC();") TxtNCImporte.Attributes.Add("onkeyup", "CalculaPorcentajeNC();") From 577c76e6918c84ee41a78889720d94b94311fc88 Mon Sep 17 00:00:00 2001 From: rrene Date: Tue, 13 Oct 2020 13:34:41 -0700 Subject: [PATCH 28/36] - --- Contabilidad/RegPrePoliza.aspx.vb | 61 +++++++++++++++++-------------- 1 file changed, 34 insertions(+), 27 deletions(-) diff --git a/Contabilidad/RegPrePoliza.aspx.vb b/Contabilidad/RegPrePoliza.aspx.vb index 28d7b8831..c5b0c6618 100644 --- a/Contabilidad/RegPrePoliza.aspx.vb +++ b/Contabilidad/RegPrePoliza.aspx.vb @@ -171,7 +171,7 @@ Partial Class ContabilidadC_RegPrePoliza Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load If Not Page.IsPostBack Then - If UsuarioActual.Empresa.TipoContabilidad = 1 Then + If UsuarioActual.Empresa.TipoContabilizacion = 1 Then Response.Redirect(Request.Url.PathAndQuery.Replace("RegPrePoliza", "RegPrePolizaS")) End If @@ -190,14 +190,17 @@ Partial Class ContabilidadC_RegPrePoliza Dim dt As DataTable = Nothing ' If UsuarioActual.Empresa.UsaContabilidad Then - Dim Conta As New ClsContPAQi(UsuarioActual.Empresa) + If UsuarioActual.Empresa.TipoContabilidad = 2 Then + Dim Conta As New ClsContPAQi(UsuarioActual.Empresa) - If Conta.GetCuentas(-1, "-1", 1) Then - dt = Conta.DtResultados - DtCuentasContables = Conta.DtResultados - Session("DtCuentas") = Conta.DtResultados + If Conta.GetCuentas(-1, "-1", 1) Then + dt = Conta.DtResultados + DtCuentasContables = Conta.DtResultados + Session("DtCuentas") = Conta.DtResultados + End If + Conta.Dispose() End If - Conta.Dispose() + If IfNull(Request("Tipo"), "").ToString = "NOMPROV" Then DivTipoGasto.Visible = True @@ -949,24 +952,9 @@ Partial Class ContabilidadC_RegPrePoliza Exit For End If End If - Next - - 'El movimiento 2 es el de Pago - If ChkAutoConta.Checked AndAlso MsgError = "" Or UsuarioActual.Empresa.Funcionalidad(200) = "1" And MsgError = "" Then - If idCuentaContabilizacion > 0 Then - If ObjMov.ContabilizarPrePoliza(CvePrePoliza, UsuarioActual.CveUsuario, UsuarioActual.Empresa) Then - - 'MENSAJE PRINCIPAL - MensajeAlert.AppendFormat("

Folio de Salida: {1}", ObjMov.ContaIdPoliza, ObjMov.ContaFolio) - MensajeAlert.AppendFormat("

Prepóliza: {1}", CvePrePoliza, ObjMov.ContaFolio) - 'Alert(MensajeAlert.ToString, ModExtensiones.TipoMensaje.MsgInformacion) - Else - Alert("Ocurrio un error al contabilizar, pongase en contacto con Soporte Técnico") - End If - Else - Alert("No se puede contabilizar la Prepoliza debido a que una o mas cuentas son inválidas") - End If - End If + Next + + If CvePeriodo > 0 Then If Not ObjNom.UpdateProvisionNomina(CvePeriodo, CvePrePoliza, UsuarioActual.CveEmpresa) Then MsgError = "No se pudo actualizar el periodo de la nómina" @@ -978,6 +966,23 @@ Partial Class ContabilidadC_RegPrePoliza GuardaLogAD($"Contabilidad/RegPrePolizas | Error:{ObjMov.MensajePolizaDescuadre} Diferencia:{ObjMov.ValorDiferencia} | CvePrePoliza:{CvePrePoliza}", "LogPrePolizas") MsgError = ObjMov.MensajePolizaDescuadre & "-" End If + End If + + 'El movimiento 2 es el de Pago + If ChkAutoConta.Checked AndAlso MsgError = "" Or UsuarioActual.Empresa.Funcionalidad(200) = "1" And MsgError = "" Then + If idCuentaContabilizacion > 0 Then + If ObjMov.ContabilizarPrePoliza(CvePrePoliza, UsuarioActual.CveUsuario, UsuarioActual.Empresa) Then + + 'MENSAJE PRINCIPAL + MensajeAlert.AppendFormat("

Folio de Póliza: {1}", ObjMov.ContaIdPoliza, ObjMov.ContaFolio) + MensajeAlert.AppendFormat("

Prepóliza: {1}", CvePrePoliza, ObjMov.ContaFolio) + 'Alert(MensajeAlert.ToString, ModExtensiones.TipoMensaje.MsgInformacion) + Else + Alert("Ocurrio un error al contabilizar, pongase en contacto con Soporte Técnico") + End If + Else + Alert("No se puede contabilizar la Prepoliza debido a que una o mas cuentas son inválidas") + End If End If Else @@ -1003,14 +1008,16 @@ Partial Class ContabilidadC_RegPrePoliza 'TxtFecha.Text = "" 'TxtObservaciones.Text = "" Else + MsgError.GuardaLogAD() ObjIE.RollBack() If Conta IsNot Nothing Then Conta.RollBack() End If Catch ex As Exception + ex.GuardaLog(ex.Message) ObjIE.RollBack() If Conta IsNot Nothing Then Conta.RollBack() - Alert("Ocurrio un error al registrar el movimiento", TipoMensaje.MsgInformacion) - ex.GuardaLog(ex.Message) + Alert("Ocurrio un error al registrar el movimiento", TipoMensaje.MsgInformacion) + End Try From 4320558b59518fe65851c2bf00662b2e3b53e6ca Mon Sep 17 00:00:00 2001 From: rrene Date: Tue, 13 Oct 2020 13:35:15 -0700 Subject: [PATCH 29/36] -- candado de cantidad de precio venta sea mayor a cero --- Ventas/ProductosServicios.aspx.vb | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/Ventas/ProductosServicios.aspx.vb b/Ventas/ProductosServicios.aspx.vb index 6a56b6f1a..a086596c8 100644 --- a/Ventas/ProductosServicios.aspx.vb +++ b/Ventas/ProductosServicios.aspx.vb @@ -1162,6 +1162,16 @@ Partial Class ProductosyServicios Return End If + If UsuarioActual.CveEmpresa = 119 Then + If TxtVentaMinima.Text.ToDecimal < 1 Then + Alert("La cantidad de venta mínima debe de ser especificada(mayor a 1)", TipoMensaje.MsgAdvertencia) + Return + End If + + End If + + + Dim ObjProductosServicios As New ClsProductosServicios() Dim ObjInv As New ClsInventarios(ObjProductosServicios.IniciaTransacSQL()) @@ -1176,6 +1186,7 @@ Partial Class ProductosyServicios CveProveedor = DdlProveedor.txtValue.Value.ToEntero End If + Dim CveMarca As Integer = 0 If UsuarioActual.CveEmpresa.Contiene(1, 72, 80) And CvePS = -1 Then CveMarca = DdlMarcaPSDes.SelectedValue.ToEntero Else CveMarca = DdlMarca.SelectedValue.ToEntero From 4c3487d8e39e3df9822cae3798714568d47b1f92 Mon Sep 17 00:00:00 2001 From: rrene Date: Tue, 13 Oct 2020 13:36:48 -0700 Subject: [PATCH 30/36] -- venta minima --- Ventas/ProductosServicios.aspx.vb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Ventas/ProductosServicios.aspx.vb b/Ventas/ProductosServicios.aspx.vb index a086596c8..6838ee505 100644 --- a/Ventas/ProductosServicios.aspx.vb +++ b/Ventas/ProductosServicios.aspx.vb @@ -1163,7 +1163,7 @@ Partial Class ProductosyServicios End If If UsuarioActual.CveEmpresa = 119 Then - If TxtVentaMinima.Text.ToDecimal < 1 Then + If TxtVentaMinima.Text.ToDecimal <= 0 Then Alert("La cantidad de venta mínima debe de ser especificada(mayor a 1)", TipoMensaje.MsgAdvertencia) Return End If From 2f31faf641bcb12619bf80caaec3f07eface832b Mon Sep 17 00:00:00 2001 From: rrene Date: Tue, 13 Oct 2020 13:46:27 -0700 Subject: [PATCH 31/36] - ventaminima --- Ventas/ProductosServicios.aspx.vb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Ventas/ProductosServicios.aspx.vb b/Ventas/ProductosServicios.aspx.vb index 6425d62e4..ae6e57cc4 100644 --- a/Ventas/ProductosServicios.aspx.vb +++ b/Ventas/ProductosServicios.aspx.vb @@ -1162,9 +1162,9 @@ Partial Class ProductosyServicios Return End If - If UsuarioActual.CveEmpresa = 119 Then + If UsuarioActual.CveEmpresa = 119 AndAlso DdlTipoPS.SelectedValue = "2" Then If TxtVentaMinima.Text.ToDecimal <= 0 Then - Alert("La cantidad de venta mínima debe de ser especificada(mayor a 1)", TipoMensaje.MsgAdvertencia) + Alert("La cantidad de venta mínima debe de ser especificada (mayor a cero)", TipoMensaje.MsgAdvertencia) Return End If From fdce588151cea04735e0a956340f70a7dcc376e1 Mon Sep 17 00:00:00 2001 From: Antonio Gonzalez Date: Tue, 13 Oct 2020 18:36:03 -0700 Subject: [PATCH 32/36] acomodo de layout en reportes --- Compras/ProveedoresAuxiliar.aspx.vb | 26 ++-- Empresas/Grales/Formatos/EntradasSalidas.rdlc | 113 ++++++------------ Empresas/Grales/Formatos/RepAlmacen.rdlc | 49 ++++---- Inventarios/RepAlmacen.aspx.vb | 11 +- Ventas/Ventas.aspx | 1 + Ventas/Ventas.aspx.vb | 14 ++- 6 files changed, 94 insertions(+), 120 deletions(-) diff --git a/Compras/ProveedoresAuxiliar.aspx.vb b/Compras/ProveedoresAuxiliar.aspx.vb index 26f320e35..529a6887d 100644 --- a/Compras/ProveedoresAuxiliar.aspx.vb +++ b/Compras/ProveedoresAuxiliar.aspx.vb @@ -118,23 +118,19 @@ Partial Class Compras_ProveedoresAuxiliar Dim OpcionP = If(DdlOpcion.SelectedValue = "-1", "", $" Opción: {DdlOpcion.SelectedItem.Text}") Dim TipoProv = If(DdlTipoProveedor.SelectedValue = "-1", "", $" Tipo Proveedor: {DdlTipoProveedor.SelectedItem.Text}") Dim ContaP = If(DdlOpcionContabilizable.SelectedValue = "-1", "", $" Contabilizable: {DdlOpcionContabilizable.SelectedItem.Text}") - If DtDatos IsNot Nothing AndAlso DtDatos.Rows.Count > 0 Then - 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 params As New List(Of ReportParameter) - params.Add(New ReportParameter("NombreEmpresa", UsuarioActual.Empresa.Empresa)) - params.Add(New ReportParameter("UsuarioImprimio", UsuarioActual.Nombre)) - params.Add(New ReportParameter("FechaImpresion", Now.ToString)) - params.Add(New ReportParameter("Filtros", $"Filtros: {Proveedor}{FechaIn}{FechaFn}{OpcionP}{TipoProv}{ContaP}")) - If Imagen.Exists Then - params.Add(New ReportParameter("LogoPath", logouri)) - Else - params.Add(New ReportParameter("LogoPath", "")) - End If - ImprimirPDF("Empresas/Grales/Formatos/AuxiliarProveedor.rdlc", DtDatos, params, "AuxiliarProveedor", Opcion) + 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 params As New List(Of ReportParameter) + params.Add(New ReportParameter("NombreEmpresa", UsuarioActual.Empresa.Empresa)) + params.Add(New ReportParameter("UsuarioImprimio", UsuarioActual.Nombre)) + params.Add(New ReportParameter("FechaImpresion", Now.ToString)) + params.Add(New ReportParameter("Filtros", $"Filtros: {Proveedor}{FechaIn}{FechaFn}{OpcionP}{TipoProv}{ContaP}")) + If Imagen.Exists Then + params.Add(New ReportParameter("LogoPath", logouri)) Else - Alert("No hay datos consultados", TipoMensaje.MsgAdvertencia) + params.Add(New ReportParameter("LogoPath", "")) End If + ImprimirPDF("Empresas/Grales/Formatos/AuxiliarProveedor.rdlc", DtDatos, params, "AuxiliarProveedor", Opcion) End Sub Protected Sub LnkPdf_Click(sender As Object, e As EventArgs) Handles LnkPdf.Click GenerarPDF("PDF") diff --git a/Empresas/Grales/Formatos/EntradasSalidas.rdlc b/Empresas/Grales/Formatos/EntradasSalidas.rdlc index 176b0a50e..edfdd2cda 100644 --- a/Empresas/Grales/Formatos/EntradasSalidas.rdlc +++ b/Empresas/Grales/Formatos/EntradasSalidas.rdlc @@ -108,34 +108,34 @@ - 1.82858cm + 3.4316cm - 5.84308cm + 3.4316cm - 1.40241cm + 1.7158cm - 1.59046cm + 1.7158cm - 1.59046cm + 1.7158cm - 1.3846cm + 1.7158cm - 1.62687cm + 1.7158cm - 1.99138cm + 1.7158cm - 1.7797cm + 1.7158cm - 1.865cm + 1.7158cm @@ -193,7 +193,7 @@ - + true true @@ -211,7 +211,7 @@ - Textbox9 + Textbox1 @@ -266,26 +266,9 @@ White - - White - - 1pt - - - White - - 1pt - - White - - 1pt + - - White - - 1pt - #d3d3d3 2pt 2pt @@ -308,7 +291,7 @@ - Importe + @@ -422,7 +405,7 @@ - Articulos + Artículos - White - 1pt - White - 1pt - White - - 1pt + - White - 1pt #d3d3d3 @@ -1763,9 +1738,8 @@ DataSet1 0.20849cm - 0.00415cm 2.52171cm - 20.90254cm + 20.5896cm @@ -1776,7 +1750,7 @@ 1.16692in - Textbox1 0.22049cm - 2.78201cm 0.6cm - 12.60299cm + 20.5896cm @@ -1850,9 +1825,8 @@ Textbox2 1.13799cm - 4.68157cm 0.52945cm - 9.98771cm + 20.5896cm 1 @@ -1988,9 +1959,8 @@ Textbox8 0.28575cm - 0.6059cm 0.44125cm - 1.60042cm + 1.7158cm 1 @@ -379,7 +379,7 @@ Filtros 0.20788cm 0.6cm - 18.70841cm + 20cm 1 @@ -470,9 +470,9 @@ Textbox2 1.10271cm - 3.59188cm + 5cm 0.52945cm - 12.60299cm + 10cm 1 @@ -597,7 +595,7 @@ 0.06cm 1.60042cm 0.68085cm - 5.14936cm + 2.6852cm 2 - Textbox10 0.06cm - 7.24367cm + 5cm 0.68085cm - 2.92333cm + 5cm 3 - 0cm 0cm 19.26933cm 5 @@ -707,7 +706,7 @@ Textbox13 0.48502cm 0.45889cm - 6.74978cm + 4.28563cm 6