From 40b328ff5dbef2d594be304fc15c2113475d43da Mon Sep 17 00:00:00 2001 From: Rene Molina Date: Fri, 23 Aug 2019 16:10:09 -0700 Subject: [PATCH 01/38] que sugiera el mes siguiente despues de agregar --- Acumuladores/CatGarantiasMeses.aspx.vb | 6 ++++-- Compras/Proveedores.aspx.vb | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/Acumuladores/CatGarantiasMeses.aspx.vb b/Acumuladores/CatGarantiasMeses.aspx.vb index b4023f7e4..3e71a5f47 100644 --- a/Acumuladores/CatGarantiasMeses.aspx.vb +++ b/Acumuladores/CatGarantiasMeses.aspx.vb @@ -97,8 +97,9 @@ Partial Class Acumuladores_CatFoliosGarantia If DdlMarca.SelectedValue <> -1 Then DdlMarcaM.SelectedValueExist(DdlMarca.SelectedValue.ToEntero) If DdlTipoUso.SelectedValue <> -1 Then DdlTipoUsoM.SelectedValueExist(DdlTipoUso.SelectedValue.ToEntero) - TxtMes.Text = "" + TxtMes.Text = TxtMes.Text.ToEntero + 1 TxtValor.Text = "" + TxtMes.Focus() Actualizar = False UpGral.Update() @@ -129,8 +130,9 @@ Partial Class Acumuladores_CatFoliosGarantia If Not Actualizar Then If ObjAcum.GarantiasMesesAdd(DdlMarcaM.SelectedValue.ToEntero, DdlTipoUsoM.SelectedValue.ToEntero, TxtMes.Text.ToEntero, TxtValor.Text.ToDecimal, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa) Then - TxtMes.Text = "" + TxtMes.Text = TxtMes.Text.ToEntero + 1 TxtValor.Text = "" + TxtMes.Focus() CargadatosGvFolioGarantia() diff --git a/Compras/Proveedores.aspx.vb b/Compras/Proveedores.aspx.vb index 06cf44aa7..085417382 100644 --- a/Compras/Proveedores.aspx.vb +++ b/Compras/Proveedores.aspx.vb @@ -1144,7 +1144,7 @@ Partial Class Compras_Proveedores 'VA POR EL CATALOGO DE CUENTAS If Ddl.Attributes("onclick") <> "" Then - CargaCuentasContables(If(UsuarioActual.Empresa.Funcionalidad(CveFuncionalidad).ToEntero > 0, UsuarioActual.Empresa.Funcionalidad(CveFuncionalidad).ToEntero, -1)) + CargaCuentasContables(If(UsuarioActual.Empresa.Funcionalidad(CveFuncionalidad).ToEntero > 0, UsuarioActual.Empresa.Funcionalidad(CveFuncionalidad).ToEntero, 1)) End If 'RECARGA EL DDL From 1a0cc20bc9dd7b1fdd336cd4b6afa8ff9bba4c3b Mon Sep 17 00:00:00 2001 From: Raul Pimienta Date: Sat, 24 Aug 2019 09:52:38 -0700 Subject: [PATCH 02/38] Cambios en PV en el modal de ajustes. Cancelacion de NC en Campras. --- App_Code/ClsCompras.vb | 25 ++++++++++++++++++---- Compras/Compras.aspx.vb | 41 +++++++++++++++++++++++++++++------- Ventas/PV.aspx | 17 +++++++++++---- Ventas/PV.aspx.vb | 46 ++++++++++++++++++++++++++++++++++------- 4 files changed, 107 insertions(+), 22 deletions(-) diff --git a/App_Code/ClsCompras.vb b/App_Code/ClsCompras.vb index dfda922b1..1da48e7a6 100644 --- a/App_Code/ClsCompras.vb +++ b/App_Code/ClsCompras.vb @@ -2886,8 +2886,8 @@ Public Class ClsCompras OnError("Ocurrió un error al obtener el reporte de anticipos - nc - exc detalle .", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo) End Try Return Retorno - End Function - + End Function + #End Region Public Function GetCxPProgramado(CveCompra As Integer, CveEmpresa As Integer) As Boolean Dim Retorno As Boolean = False @@ -2903,9 +2903,26 @@ Public Class ClsCompras OnError("Ocurrió un error al obtener la información de la compra programada.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo) End Try Return Retorno - End Function + End Function + + Public Function GetCancelarNC(CveCompra As Integer, CveEmpresa As Integer) As Boolean + Dim Retorno As Boolean = False + DataAdapter("PA_Conta_CancelarNCGet") + With SqlAdapter.SelectCommand.Parameters + .Add("@CveCompra", SqlDbType.Int).Value = CveCompra + .Add("@CveEmpresa", SqlDbType.Int).Value = CveEmpresa + End With + Try + SqlAdapter.Fill(Data) + Retorno = True + Catch ex As Exception + OnError("Ocurrió un error al obtener los datos para cancelar la nc.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo) + End Try + Return Retorno + End Function + #Region "REPORTE PUE SIN PAGO" - + Public Function GetPUESinPago(FI As DateTime, FF As DateTime, CveProveedor As Integer, CveSubProyecto As Integer, CveEmpresa As Integer, Optional CveUsuario As Integer = -1) As Boolean Dim retorno As Boolean = False DataAdapter("PA_Comp_PUESinPagoGet", CommandType.StoredProcedure) diff --git a/Compras/Compras.aspx.vb b/Compras/Compras.aspx.vb index fea2e0d27..69fe82bf1 100644 --- a/Compras/Compras.aspx.vb +++ b/Compras/Compras.aspx.vb @@ -2800,7 +2800,9 @@ Partial Class Compras_Compras 'TIENE AMORTIZACIÓN If GvAnticiposSel.Rows.Count > 0 Then BtnEliminarCompra.Visible = False - BtnCancelarCompra.Visible = False + If Not DdlTipoComprobante.SelectedValue.Contiene("NC") Then + BtnCancelarCompra.Visible = False + End If End If CargaComplementosPago() @@ -13638,7 +13640,7 @@ Partial Class Compras_Compras RegistraScript("$('#DivCancelarCompra').modal('hide');") Dim ObjAC As ClsContPAQi = Nothing - If UsuarioActual.Empresa.UsaAC Then + If UsuarioActual.Empresa.UsaAC Or UsuarioActual.Empresa.Funcionalidad(200).ToString = "1" Then ObjAC = New ClsContPAQi(UsuarioActual.Empresa) ObjAC.IniciaTransacSQL() End If @@ -13654,7 +13656,7 @@ Partial Class Compras_Compras ' MES ANTERIOR, MOVIMIENTOS CONTRARIOS (NEGATIVOS) - If TxtFecha.Text.ToDate.Month < TxtFechaCancelacion.Text.ToDate.Month Or TxtFecha.Text.ToDate.Year < TxtFechaCancelacion.Text.ToDate.Year Then + If TxtFecha.Text.ToDate.Month < TxtFechaCancelacion.Text.ToDate.Month Or TxtFecha.Text.ToDate.Year < TxtFechaCancelacion.Text.ToDate.Year Or DdlTipoComprobante.SelectedValue.Contiene("NC") Then 'CREA POLIZA NEGATIVA If IdPoliza > 0 AndAlso ObjAC IsNot Nothing Then @@ -13685,9 +13687,9 @@ Partial Class Compras_Compras End If 'CREA PRE-POLIZA NEGATIVA - If CvePrePoliza > 0 Then - If ObjContabilidad.GetPrePolizasDetalle(CvePrePoliza) Then - dt = ObjContabilidad.DtResultados + If DdlTipoComprobante.SelectedValue.Contiene("NC") Then + If ObjCompras.GetCancelarNC(CveCompra, UsuarioActual.CveEmpresa) Then + dt = ObjCompras.DtResultados CvePrePolizaNueva = ObjContabilidad.AddPrePolizas("Compras/Cancelar", dt.Rows(0)("CvePlantillaPoliza").ToString.ToEntero, dt.Rows(0)("Cargos").ToString.ToDouble * -1, dt.Rows(0)("Abonos").ToString.ToDouble * -1, dt.Rows(0)("CveMoneda").ToString.ToEntero, TxtFechaCancelacion.Text.ToDate, String.Format("Cancelación: {0}", dt.Rows(0)("Concepto").ToString), UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa) If CvePrePolizaNueva > 0 Then @@ -13696,7 +13698,8 @@ Partial Class Compras_Compras dr("Concepto").ToString, TxtFechaCancelacion.Text.ToDate, dr("IdCtaContable").ToString.ToEntero, dr("IdSegmentoNegocio").ToString.ToEntero, dr("CveIE").ToString.ToEntero, dr("CveVenta").ToString.ToEntero, dr("CveCompra").ToString.ToEntero, dr("CveSubProyecto").ToString.ToEntero, dr("CveCliente").ToString.ToEntero, dr("CveProveedor").ToString.ToEntero, dr("CvePersonal").ToString.ToEntero, dr("CveMovimientoAlmacen").ToString.ToEntero, dr("CveActivoFijo").ToString.ToEntero, dr("CveAcreedor").ToString.ToEntero, dr("CveColectiva").ToString.ToEntero, dr("CveCreditoDetalle").ToString.ToEntero, CveCuenta:=dr("CveCuenta").ToString.ToEntero, - ImporteMX:=dr("Importe").ToString.ToDecimal * -1, ImporteME:=dr("Importe").ToString.ToDecimal * -1, CveTipoGasto:=dr("CveTipoGasto").ToString.ToEntero, CveClasificacion:=dr("CveClasificacion").ToString.ToEntero, CveOCDetalle:=dr("CveOCDetalle").ToString.ToEntero) Then + ImporteMX:=dr("Importe").ToString.ToDecimal * -1, ImporteME:=dr("Importe").ToString.ToDecimal * -1, CveTipoGasto:=dr("CveTipoGasto").ToString.ToEntero, CveClasificacion:=dr("CveClasificacion").ToString.ToEntero, CveOCDetalle:=dr("CveOCDetalle").ToString.ToEntero, + CveCompraAmortizacion:=dr("CveCompraAmortizacion").ToString.ToEntero) Then ErrorCancelar = True Exit For End If @@ -13707,6 +13710,30 @@ Partial Class Compras_Compras Else ErrorCancelar = True End If + Else + If CvePrePoliza > 0 Then + If ObjContabilidad.GetPrePolizasDetalle(CvePrePoliza) Then + dt = ObjContabilidad.DtResultados + + CvePrePolizaNueva = ObjContabilidad.AddPrePolizas("Compras/Cancelar", dt.Rows(0)("CvePlantillaPoliza").ToString.ToEntero, dt.Rows(0)("Cargos").ToString.ToDouble * -1, dt.Rows(0)("Abonos").ToString.ToDouble * -1, dt.Rows(0)("CveMoneda").ToString.ToEntero, TxtFechaCancelacion.Text.ToDate, String.Format("Cancelación: {0}", dt.Rows(0)("Concepto").ToString), UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa) + If CvePrePolizaNueva > 0 Then + For Each dr As DataRow In dt.Rows + If Not ObjContabilidad.AddPrePolizasDetalle(CvePrePolizaNueva, CBool(dr("TipoMovto").ToString), dr("Importe").ToString.ToDecimal * -1, dr("Referencia").ToString, dr("CveConceptoContable").ToString.ToEntero, + dr("Concepto").ToString, TxtFechaCancelacion.Text.ToDate, dr("IdCtaContable").ToString.ToEntero, dr("IdSegmentoNegocio").ToString.ToEntero, dr("CveIE").ToString.ToEntero, + dr("CveVenta").ToString.ToEntero, dr("CveCompra").ToString.ToEntero, dr("CveSubProyecto").ToString.ToEntero, dr("CveCliente").ToString.ToEntero, dr("CveProveedor").ToString.ToEntero, dr("CvePersonal").ToString.ToEntero, + dr("CveMovimientoAlmacen").ToString.ToEntero, dr("CveActivoFijo").ToString.ToEntero, dr("CveAcreedor").ToString.ToEntero, dr("CveColectiva").ToString.ToEntero, dr("CveCreditoDetalle").ToString.ToEntero, CveCuenta:=dr("CveCuenta").ToString.ToEntero, + ImporteMX:=dr("Importe").ToString.ToDecimal * -1, ImporteME:=dr("Importe").ToString.ToDecimal * -1, CveTipoGasto:=dr("CveTipoGasto").ToString.ToEntero, CveClasificacion:=dr("CveClasificacion").ToString.ToEntero, CveOCDetalle:=dr("CveOCDetalle").ToString.ToEntero) Then + ErrorCancelar = True + Exit For + End If + Next + Else + ErrorCancelar = True + End If + Else + ErrorCancelar = True + End If + End If End If 'MES ACTUAL diff --git a/Ventas/PV.aspx b/Ventas/PV.aspx index cb144a769..29036f542 100644 --- a/Ventas/PV.aspx +++ b/Ventas/PV.aspx @@ -2719,8 +2719,8 @@ - - + + @@ -2830,7 +2830,7 @@
-
+
<%----%> @@ -2838,7 +2838,7 @@
-
+
@@ -2847,6 +2847,15 @@
+
+
+ + + + + +
+
diff --git a/Ventas/PV.aspx.vb b/Ventas/PV.aspx.vb index 4ede39ae1..4e27af4bd 100644 --- a/Ventas/PV.aspx.vb +++ b/Ventas/PV.aspx.vb @@ -4853,7 +4853,7 @@ Partial Class PV TmpDTAjustes.Columns.Add("CodigoInspeccion", GetType(String)) TmpDTAjustes.Columns.Add("Consecutivo", GetType(String)) TmpDTAjustes.Columns.Add("ConsecutivoVenta", GetType(Integer)) - TmpDTAjustes.Columns.Add("FechaAjuste", GetType(String)) + TmpDTAjustes.Columns.Add("FechaAjuste", GetType(Date)) TmpDTAjustes.Columns.Add("Meses", GetType(String)) TmpDTAjustes.Columns.Add("PorcentajeAjuste", GetType(Double)) TmpDTAjustes.Columns.Add("NumPoliza", GetType(String)) @@ -4925,6 +4925,7 @@ Partial Class PV If ObjVenta.GetVentaDetalle(DdlFacturas.SelectedValue.ToEntero) Then DdlPSAjuste.DataSource = ObjVenta.DtResultados DtPUFacturas = ObjVenta.DtResultados + TxtFechaAjuste.Text = ObjVenta.DtResultados.Rows(0)("Fecha").ToString.ToDate.ToShortDateString End If ObjVenta.Dispose() Else @@ -4936,6 +4937,7 @@ Partial Class PV DdlPSAjuste.Items.Insert(0, New ListItem("Seleccione", "-1")) DtPUFacturas.AcceptChanges() UpAjuste.Update() + CalculaPorcentajeAjuste() End Sub Private Sub Ajuste() @@ -4987,7 +4989,6 @@ Partial Class PV TxtCodEnsamble.Text = Dr("CodigoEnsamble").ToString DdlTipoUso.SelectedValueExist(Dr("CveTipoUso").ToString) TxtCodLinea.Text = Dr("CodigoLinea").ToString - TxtFechaAjuste.Text = Dr("FechaAjuste").ToString TxtCodInspeccion.Text = Dr("CodigoInspeccion").ToString TxtMesesUso.Text = Dr("Meses").ToString DdlTipoDefecto.SelectedValueExist(Dr("CveTipoDefecto").ToString) @@ -4997,7 +4998,8 @@ Partial Class PV DdlFacturas.SelectedValueExist(Dr("CveVenta").ToString) CargaPSAjuste() DdlPSAjuste.SelectedValueExist(Dr("CvePS").ToString) - TxtPUFactura.Text = Dr("PUFactura").ToString.ToDecimal.FormatoNumero(4) + TxtFechaAjuste.Text = Dr("FechaAjuste").ToString.ToDate.ToShortDateString + TxtPUFactura.Text = Dr("PUFactura").ToString.ToDecimal.FormatoNumero(2) TxtPUFactura.Enabled = Not Dr("CveVenta").ToString.ToEntero > 0 End If End Sub @@ -5021,7 +5023,7 @@ Partial Class PV End If Contador += 1 Next - TxtPUFactura.Text = PUFactura.FormatoNumero(4) + TxtPUFactura.Text = PUFactura.FormatoNumero(2) End If If Not DdlPSAjuste.SelectedValue.ToEntero > 0 AndAlso DdlFacturas.SelectedValue.ToEntero > 0 Then @@ -5040,7 +5042,7 @@ Partial Class PV End Sub Private Sub CalculaPorcentajeAjuste() - If DdlTipoUso.SelectedValue.ToEntero > 0 AndAlso DdlPSAjuste.SelectedValue.ToEntero > 0 AndAlso TxtMesesUso.Text <> "" Then + If DdlTipoUso.SelectedValue.ToEntero > 0 AndAlso DdlPSAjuste.SelectedValue.ToEntero > 0 AndAlso TxtMesesUso.Text <> "" AndAlso DdlPS.SelectedValue.ToEntero > 0 Then Dim CveMarca As Integer = -1 If GlobalDTPS(UsuarioActual.CveEmpresa, DdlPSAjuste.SelectedValue.ToEntero).Rows.Count > 0 Then CveMarca = GlobalDTPS(UsuarioActual.CveEmpresa, DdlPSAjuste.SelectedValue.ToEntero).Rows(0)("CveMarca").ToString.ToEntero @@ -5050,6 +5052,36 @@ Partial Class PV If ObjAcum.DtResultados.Rows.Count > 0 Then TxtPorcentajeAjuste.Text = (ObjAcum.DtResultados.Rows(0)("Valor").ToString.ToDouble / 100).ToString TxtImporteAjuste.Text = (TxtPorcentajeAjuste.Text.ToDouble * TxtPUFactura.Text.ToDouble).FormatoNumero + + Dim CargoActual As Decimal = 0 + Dim CargoAnterior As Decimal = 0 + Dim CveTamaño As Integer = 0 + + If DdlPSAjuste.SelectedValue.ToEntero > 0 Then + Dim Dr As DataRow = GlobalDTPS(UsuarioActual.CveEmpresa, DdlPSAjuste.SelectedValue.ToEntero).Rows(0) + If Dr IsNot Nothing Then + CargoAnterior = Dr("Cargo").ToString.ToDecimal + End If + End If + + If DdlPS.SelectedValue.ToEntero > 0 Then + Dim Dr As DataRow = GlobalDTPS(UsuarioActual.CveEmpresa, DdlPS.SelectedValue.ToEntero).Rows(0) + If Dr IsNot Nothing Then + CveTamaño = Dr("CveTamaño").ToString.ToEntero + End If + End If + + + + If GlobalDTAcumTamaños.FiltraParametros($"CveEmpresa = {UsuarioActual.CveEmpresa} AND CveTamaño = {CveTamaño}").Rows(0) IsNot Nothing AndAlso GlobalDTAcumTamaños.FiltraParametros($"CveEmpresa = {UsuarioActual.CveEmpresa} AND CveTamaño = {CveTamaño}").Rows.Count > 0 Then + Dim DrCargo As DataRow = GlobalDTAcumTamaños.FiltraParametros($"CveEmpresa = {UsuarioActual.CveEmpresa} AND CveTamaño = {CveTamaño}").Rows(0) + If DrCargo IsNot Nothing Then + CargoActual = DrCargo("Cargo").ToString.ToDecimal + End If + End If + + TxtDescuentoAjuste.Text = ((TxtPUFactura.Text.ToDouble - TxtImporteAjuste.Text.ToDouble) - (CargoActual - CargoAnterior)).FormatoNumero + TxtDescuentoAjuste.ToolTip = $"La diferencia de ajuste fue: {(TxtPUFactura.Text.ToDouble - TxtImporteAjuste.Text.ToDouble).FormatoNumero()}. La diferencia de tamaños fue: {(CargoActual - CargoAnterior).FormatoNumero}." End If End If ObjAcum.Dispose() @@ -5095,7 +5127,7 @@ Partial Class PV Row("CodigoLinea") = TxtCodLinea.Text Row("CodigoInspeccion") = TxtCodInspeccion.Text Row("Consecutivo") = TxtConsecutivoAjuste.Text - Row("FechaAjuste") = TxtFechaAjuste.Text + Row("FechaAjuste") = TxtFechaAjuste.Text.ToDate Row("Meses") = TxtMesesUso.Text.ToEntero Row("PorcentajeAjuste") = TxtPorcentajeAjuste.Text.ToDouble Row("NumPoliza") = TxtPoliza.Text @@ -5125,7 +5157,7 @@ Partial Class PV TmpDTAjustes.Rows(IndexAjuste)("CodigoLinea") = TxtCodLinea.Text TmpDTAjustes.Rows(IndexAjuste)("CodigoInspeccion") = TxtCodInspeccion.Text TmpDTAjustes.Rows(IndexAjuste)("Consecutivo") = TxtConsecutivoAjuste.Text - TmpDTAjustes.Rows(IndexAjuste)("FechaAjuste") = TxtFechaAjuste.Text.ToEntero + TmpDTAjustes.Rows(IndexAjuste)("FechaAjuste") = TxtFechaAjuste.Text.ToDate TmpDTAjustes.Rows(IndexAjuste)("Meses") = TxtMesesUso.Text.ToDouble TmpDTAjustes.Rows(IndexAjuste)("PorcentajeAjuste") = TxtPorcentajeAjuste.Text TmpDTAjustes.Rows(IndexAjuste)("NumPoliza") = TxtPoliza.Text.ToDouble From cf181b293eb329547801fc6ad9842abcabd8e2b3 Mon Sep 17 00:00:00 2001 From: JORGE LUIS CAUDILLO ESPARZA Date: Sat, 24 Aug 2019 12:13:37 -0700 Subject: [PATCH 03/38] --- Bancos/IE.aspx.vb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Bancos/IE.aspx.vb b/Bancos/IE.aspx.vb index e83e9f36d..fe5ce8ef2 100644 --- a/Bancos/IE.aspx.vb +++ b/Bancos/IE.aspx.vb @@ -689,7 +689,7 @@ Partial Class Bancos_IE LnkAjustarMovimiento.Visible = True End If - If Not VerificaComplementos(True) Then + If UsuarioActual.CveEmpresa = 72 OrElse Not VerificaComplementos(True) Then 'No entrara para la empresa 72 porque tarda mucho el load LnkCancelarComplemento.Visible = False LnkCancelarComplementoImporte.Visible = False From afcaec9e7be375f4b73d0b454e4b7d523af5ebc7 Mon Sep 17 00:00:00 2001 From: Antonio Gonzalez Date: Sat, 24 Aug 2019 14:15:00 -0500 Subject: [PATCH 04/38] =?UTF-8?q?agregando=20validaci=C3=B3n=20al=20IE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Bancos/IE.aspx.vb | 10520 ++++++++++++++++++++++---------------------- 1 file changed, 5267 insertions(+), 5253 deletions(-) diff --git a/Bancos/IE.aspx.vb b/Bancos/IE.aspx.vb index e83e9f36d..907e60fe4 100644 --- a/Bancos/IE.aspx.vb +++ b/Bancos/IE.aspx.vb @@ -1,413 +1,413 @@ -Option Explicit On -Option Strict On - -Imports System.Data -Imports Extensiones -Imports System.Web.Services -Imports System.IO -Imports Microsoft.Reporting.WebForms - -Partial Class Bancos_IE - Inherits ClsPaginas - -#Region "Propiedades" - - 'Configuración - Private Property CveIE As Integer - Get - Return ViewState("CveIE").ToString.ToEntero - End Get - Set(value As Integer) - ViewState("CveIE") = value - End Set - End Property - Private Property CveIEDeposito As Integer - Get - Return ViewState("CveIEDeposito").ToString.ToEntero - End Get - Set(value As Integer) - ViewState("CveIEDeposito") = value - End Set - End Property - Private Property CveIEDeposito2 As Integer - Get - Return ViewState("CveIEDeposito2").ToString.ToEntero - End Get - Set(value As Integer) - ViewState("CveIEDeposito2") = value - End Set - End Property - Private Property Cuenta As String - Get - Return ViewState("Cuenta").ToString - End Get - Set(value As String) - ViewState("Cuenta") = value - End Set - End Property - Private Property Folio As String - Get - Return ViewState("Folio").ToString - End Get - Set(value As String) - ViewState("Folio") = value - End Set - End Property - Private Property CuentaDepositoPadre As String - Get - Return ViewState("CuentaDepositoPadre").ToString - End Get - Set(value As String) - ViewState("CuentaDepositoPadre") = value - End Set - End Property - Private Property CveCuenta As Integer - Get - Return ViewState("CveCuenta").ToString.ToEntero - End Get - Set(value As Integer) - ViewState("CveCuenta") = value - End Set - End Property - Private Property CveCompra As Integer - Get - Return If(IsNothing(ViewState("CveCompra")), -1, ViewState("CveCompra").ToString.ToEntero) - End Get - Set(value As Integer) - ViewState("CveCompra") = value - End Set - End Property - Private Property CveProveedor As Integer - Get - Return If(IsNothing(ViewState("CveProveedor")), -1, ViewState("CveProveedor").ToString.ToEntero) - End Get - Set(value As Integer) - ViewState("CveProveedor") = value - End Set - End Property - Private Property CveOrdenCompra As Integer - Get - Return If(IsNothing(ViewState("CveOrdenCompra")), -1, ViewState("CveOrdenCompra").ToString.ToEntero) - End Get - Set(value As Integer) - ViewState("CveOrdenCompra") = value - End Set - End Property - Private Property CvePersonal As Integer - Get - Return If(IsNothing(ViewState("CvePersonal")), -1, ViewState("CvePersonal").ToString.ToEntero) - End Get - Set(value As Integer) - ViewState("CvePersonal") = value - End Set - End Property - Private Property CveCliente As Integer - Get - Return If(ViewState("CveCliente") IsNot Nothing, ViewState("CveCliente").ToString.ToEntero, -1) - End Get - Set(value As Integer) - ViewState("CveCliente") = value - End Set - End Property - - - Private Property CveVentaDevDin As Integer - Get - Return ViewState("CveVentaDevDin").ToString.ToEntero - End Get - Set(value As Integer) - ViewState("CveVentaDevDin") = value - End Set - End Property - Private Property SerieFolioDevDin As String - Get - Return ViewState("SerieFolioDevDin").ToString - End Get - Set(value As String) - ViewState("SerieFolioDevDin") = value - End Set - End Property - Private Property CvePrePolizaDevDin As Integer - Get - Return ViewState("CvePrePolizaDevDin").ToString.ToEntero - End Get - Set(value As Integer) - ViewState("CvePrePolizaDevDin") = value - End Set - End Property - - - - Private Property CveCompraDeCDin As Integer - Get - Return ViewState("CveCompraDeCDin").ToString.ToEntero - End Get - Set(value As Integer) - ViewState("CveCompraDeCDin") = value - End Set - End Property - Private Property SerieFolioDeCDin As String - Get - Return ViewState("SerieFolioDeCDin").ToString - End Get - Set(value As String) - ViewState("SerieFolioDeCDin") = value - End Set - End Property - Private Property CvePrePolizaDeCDin As Integer - Get - Return ViewState("CvePrePolizaDeCDin").ToString.ToEntero - End Get - Set(value As Integer) - ViewState("CvePrePolizaDeCDin") = value - End Set - End Property - - - Private Property FechaCompra As Date - Get - Return ViewState("FechaCompra").ToString.ToDate - End Get - Set(value As Date) - ViewState("FechaCompra") = value - End Set - End Property - - - - - - Private Property ImporteOriginalDevDin As Decimal - Get - Return ViewState("ImporteOriginalDevDin").ToString.ToDecimal - End Get - Set(value As Decimal) - ViewState("ImporteOriginalDevDin") = value - End Set - End Property - Private Property IDPoliza As Integer - Get - Return ViewState("IDPoliza").ToString.ToEntero - End Get - Set(value As Integer) - ViewState("IDPoliza") = value - End Set - End Property - Private Property Opcion As String - Get - Return ViewState("Opcion").ToString - End Get - Set(value As String) - ViewState("Opcion") = value - End Set - End Property - Private Property IDCtaContable As Integer - Get - Return ViewState("IDCtaContable").ToString.ToEntero - End Get - Set(value As Integer) - ViewState("IDCtaContable") = value - End Set - End Property - Private Property IDCtaContableComplementaria As Integer - Get - Return ViewState("IDCtaContableComplementaria").ToString.ToEntero - End Get - Set(value As Integer) - ViewState("IDCtaContableComplementaria") = value - End Set - End Property - Private Property IDCtaBeneficiario As Integer - Get - Return ViewState("IDCtaBeneficiario").ToString.ToEntero - End Get - Set(value As Integer) - ViewState("IDCtaBeneficiario") = value - End Set - End Property - Private Property IDCtaBeneficiarioComplementaria As Integer - Get - Return ViewState("IDCtaBeneficiarioComplementaria").ToString.ToEntero - End Get - Set(value As Integer) - ViewState("IDCtaBeneficiarioComplementaria") = value - End Set - End Property - Private Property CveCuentaConta As Integer - Get - Return ViewState("CveCuentaConta").ToString.ToEntero - End Get - Set(value As Integer) - ViewState("CveCuentaConta") = value - End Set - End Property - Private Property CveCuentaBeneficiario As Integer - Get - Return ViewState("CveCuentaBeneficiario").ToString.ToEntero - End Get - Set(value As Integer) - ViewState("CveCuentaBeneficiario") = value - End Set - End Property - Private Property CvePrePoliza As Integer - Get - Return ViewState("CvePrePoliza").ToString.ToEntero - End Get - Set(value As Integer) - ViewState("CvePrePoliza") = value - End Set - End Property - Private Property DtIEDevolucion As DataTable - Get - DtIEDevolucion = DirectCast(ViewState("DtIEDevolucion"), DataTable) - End Get - - Set(ByVal value As DataTable) - ViewState("DtIEDevolucion") = value - End Set - End Property - Private Property Borrar As Boolean - Get - Return CBool(ViewState("Borrar")) - End Get - Set(value As Boolean) - ViewState("Borrar") = value - End Set - End Property - Private Property CveMoneda As Integer - Get - Return ViewState("CveMoneda").ToString.ToEntero - End Get - Set(value As Integer) - ViewState("CveMoneda") = value - End Set - End Property - Private Property CveOCSolicitudAnticipo As Integer - Get - Return ViewState("CveOCSolicitudAnticipo").ToString.ToEntero - End Get - Set(value As Integer) - ViewState("CveOCSolicitudAnticipo") = value - End Set - End Property - Private Property EstaContabilizado As Boolean - Get - Return CBool(ViewState("EstaContabilizado")) - End Get - Set(value As Boolean) - ViewState("EstaContabilizado") = value - End Set - End Property - Private Property CveSolicitudViatico As Integer - Get - Return ViewState("CveSolicitudViatico").ToString.ToEntero - End Get - Set(value As Integer) - ViewState("CveSolicitudViatico") = value - End Set - End Property - Private Property CFDIRelacionadoSustitucion As String - Get - If ViewState("CFDIRelacionadoSustitucion") Is Nothing Then - Return "-1" - Else - Return ViewState("CFDIRelacionadoSustitucion").ToString - End If - End Get - Set(value As String) - ViewState("CFDIRelacionadoSustitucion") = value - End Set - End Property - Private Property ComplementoSerieFolio As String - Get - Return ViewState("ComplementoSerieFolio").ToString - End Get - Set(value As String) - ViewState("ComplementoSerieFolio") = value - End Set - End Property - Private Property CorreoCobranzaCliente As String - Get - If ViewState("CorreoCobranzaCliente") Is Nothing Then - Return "" - Else - Return ViewState("CorreoCobranzaCliente").ToString - End If - - End Get - Set(value As String) - ViewState("CorreoCobranzaCliente") = value - End Set - End Property - - Private Property Tipo As String - Get - If ViewState("Tipo") Is Nothing Then - Return "" - Else - Return ViewState("Tipo").ToString - End If - - End Get - Set(value As String) - ViewState("Tipo") = value - End Set - End Property - Private Property RazonSocial As String - Get - If ViewState("RazonSocial") Is Nothing Then - Return "" - Else - Return ViewState("RazonSocial").ToString - End If - - End Get - Set(value As String) - ViewState("RazonSocial") = value - End Set - End Property - Private Property DtGvRH As DataTable - Get - DtGvRH = DirectCast(ViewState("DtGvRH"), DataTable) - End Get - - Set(ByVal value As DataTable) - ViewState("DtGvRH") = value - End Set - End Property - Private Property ComprobanteIE As String - Get - Return ViewState("ComprobanteIE").ToString - End Get - Set(value As String) - ViewState("ComprobanteIE") = value - End Set - End Property - - - Private Property PorcentajeCompraDevDinC As Decimal - Get - Return ViewState("PorcentajeCompraDevDinC").ToString.ToDecimal - End Get - Set(value As Decimal) - ViewState("PorcentajeCompraDevDinC") = value - End Set - End Property - Private Property IdCtaAnticipoComplementaria As Integer - Get - Return ViewState("IdCtaAnticipoComplementaria").ToString.ToEntero - End Get - Set(value As Integer) - ViewState("IdCtaAnticipoComplementaria") = value - End Set - End Property - Private Property IdCtaAnticipoExtranjera As Integer - Get - Return ViewState("IdCtaAnticipoExtranjera").ToString.ToEntero - End Get - Set(value As Integer) - ViewState("IdCtaAnticipoExtranjera") = value - End Set +Option Explicit On +Option Strict On + +Imports System.Data +Imports Extensiones +Imports System.Web.Services +Imports System.IO +Imports Microsoft.Reporting.WebForms + +Partial Class Bancos_IE + Inherits ClsPaginas + +#Region "Propiedades" + + 'Configuración + Private Property CveIE As Integer + Get + Return ViewState("CveIE").ToString.ToEntero + End Get + Set(value As Integer) + ViewState("CveIE") = value + End Set + End Property + Private Property CveIEDeposito As Integer + Get + Return ViewState("CveIEDeposito").ToString.ToEntero + End Get + Set(value As Integer) + ViewState("CveIEDeposito") = value + End Set + End Property + Private Property CveIEDeposito2 As Integer + Get + Return ViewState("CveIEDeposito2").ToString.ToEntero + End Get + Set(value As Integer) + ViewState("CveIEDeposito2") = value + End Set + End Property + Private Property Cuenta As String + Get + Return ViewState("Cuenta").ToString + End Get + Set(value As String) + ViewState("Cuenta") = value + End Set + End Property + Private Property Folio As String + Get + Return ViewState("Folio").ToString + End Get + Set(value As String) + ViewState("Folio") = value + End Set + End Property + Private Property CuentaDepositoPadre As String + Get + Return ViewState("CuentaDepositoPadre").ToString + End Get + Set(value As String) + ViewState("CuentaDepositoPadre") = value + End Set + End Property + Private Property CveCuenta As Integer + Get + Return ViewState("CveCuenta").ToString.ToEntero + End Get + Set(value As Integer) + ViewState("CveCuenta") = value + End Set + End Property + Private Property CveCompra As Integer + Get + Return If(IsNothing(ViewState("CveCompra")), -1, ViewState("CveCompra").ToString.ToEntero) + End Get + Set(value As Integer) + ViewState("CveCompra") = value + End Set + End Property + Private Property CveProveedor As Integer + Get + Return If(IsNothing(ViewState("CveProveedor")), -1, ViewState("CveProveedor").ToString.ToEntero) + End Get + Set(value As Integer) + ViewState("CveProveedor") = value + End Set + End Property + Private Property CveOrdenCompra As Integer + Get + Return If(IsNothing(ViewState("CveOrdenCompra")), -1, ViewState("CveOrdenCompra").ToString.ToEntero) + End Get + Set(value As Integer) + ViewState("CveOrdenCompra") = value + End Set + End Property + Private Property CvePersonal As Integer + Get + Return If(IsNothing(ViewState("CvePersonal")), -1, ViewState("CvePersonal").ToString.ToEntero) + End Get + Set(value As Integer) + ViewState("CvePersonal") = value + End Set + End Property + Private Property CveCliente As Integer + Get + Return If(ViewState("CveCliente") IsNot Nothing, ViewState("CveCliente").ToString.ToEntero, -1) + End Get + Set(value As Integer) + ViewState("CveCliente") = value + End Set + End Property + + + Private Property CveVentaDevDin As Integer + Get + Return ViewState("CveVentaDevDin").ToString.ToEntero + End Get + Set(value As Integer) + ViewState("CveVentaDevDin") = value + End Set + End Property + Private Property SerieFolioDevDin As String + Get + Return ViewState("SerieFolioDevDin").ToString + End Get + Set(value As String) + ViewState("SerieFolioDevDin") = value + End Set + End Property + Private Property CvePrePolizaDevDin As Integer + Get + Return ViewState("CvePrePolizaDevDin").ToString.ToEntero + End Get + Set(value As Integer) + ViewState("CvePrePolizaDevDin") = value + End Set + End Property + + + + Private Property CveCompraDeCDin As Integer + Get + Return ViewState("CveCompraDeCDin").ToString.ToEntero + End Get + Set(value As Integer) + ViewState("CveCompraDeCDin") = value + End Set + End Property + Private Property SerieFolioDeCDin As String + Get + Return ViewState("SerieFolioDeCDin").ToString + End Get + Set(value As String) + ViewState("SerieFolioDeCDin") = value + End Set + End Property + Private Property CvePrePolizaDeCDin As Integer + Get + Return ViewState("CvePrePolizaDeCDin").ToString.ToEntero + End Get + Set(value As Integer) + ViewState("CvePrePolizaDeCDin") = value + End Set + End Property + + + Private Property FechaCompra As Date + Get + Return ViewState("FechaCompra").ToString.ToDate + End Get + Set(value As Date) + ViewState("FechaCompra") = value + End Set + End Property + + + + + + Private Property ImporteOriginalDevDin As Decimal + Get + Return ViewState("ImporteOriginalDevDin").ToString.ToDecimal + End Get + Set(value As Decimal) + ViewState("ImporteOriginalDevDin") = value + End Set + End Property + Private Property IDPoliza As Integer + Get + Return ViewState("IDPoliza").ToString.ToEntero + End Get + Set(value As Integer) + ViewState("IDPoliza") = value + End Set + End Property + Private Property Opcion As String + Get + Return ViewState("Opcion").ToString + End Get + Set(value As String) + ViewState("Opcion") = value + End Set + End Property + Private Property IDCtaContable As Integer + Get + Return ViewState("IDCtaContable").ToString.ToEntero + End Get + Set(value As Integer) + ViewState("IDCtaContable") = value + End Set + End Property + Private Property IDCtaContableComplementaria As Integer + Get + Return ViewState("IDCtaContableComplementaria").ToString.ToEntero + End Get + Set(value As Integer) + ViewState("IDCtaContableComplementaria") = value + End Set + End Property + Private Property IDCtaBeneficiario As Integer + Get + Return ViewState("IDCtaBeneficiario").ToString.ToEntero + End Get + Set(value As Integer) + ViewState("IDCtaBeneficiario") = value + End Set + End Property + Private Property IDCtaBeneficiarioComplementaria As Integer + Get + Return ViewState("IDCtaBeneficiarioComplementaria").ToString.ToEntero + End Get + Set(value As Integer) + ViewState("IDCtaBeneficiarioComplementaria") = value + End Set + End Property + Private Property CveCuentaConta As Integer + Get + Return ViewState("CveCuentaConta").ToString.ToEntero + End Get + Set(value As Integer) + ViewState("CveCuentaConta") = value + End Set + End Property + Private Property CveCuentaBeneficiario As Integer + Get + Return ViewState("CveCuentaBeneficiario").ToString.ToEntero + End Get + Set(value As Integer) + ViewState("CveCuentaBeneficiario") = value + End Set + End Property + Private Property CvePrePoliza As Integer + Get + Return ViewState("CvePrePoliza").ToString.ToEntero + End Get + Set(value As Integer) + ViewState("CvePrePoliza") = value + End Set + End Property + Private Property DtIEDevolucion As DataTable + Get + DtIEDevolucion = DirectCast(ViewState("DtIEDevolucion"), DataTable) + End Get + + Set(ByVal value As DataTable) + ViewState("DtIEDevolucion") = value + End Set + End Property + Private Property Borrar As Boolean + Get + Return CBool(ViewState("Borrar")) + End Get + Set(value As Boolean) + ViewState("Borrar") = value + End Set + End Property + Private Property CveMoneda As Integer + Get + Return ViewState("CveMoneda").ToString.ToEntero + End Get + Set(value As Integer) + ViewState("CveMoneda") = value + End Set + End Property + Private Property CveOCSolicitudAnticipo As Integer + Get + Return ViewState("CveOCSolicitudAnticipo").ToString.ToEntero + End Get + Set(value As Integer) + ViewState("CveOCSolicitudAnticipo") = value + End Set + End Property + Private Property EstaContabilizado As Boolean + Get + Return CBool(ViewState("EstaContabilizado")) + End Get + Set(value As Boolean) + ViewState("EstaContabilizado") = value + End Set + End Property + Private Property CveSolicitudViatico As Integer + Get + Return ViewState("CveSolicitudViatico").ToString.ToEntero + End Get + Set(value As Integer) + ViewState("CveSolicitudViatico") = value + End Set + End Property + Private Property CFDIRelacionadoSustitucion As String + Get + If ViewState("CFDIRelacionadoSustitucion") Is Nothing Then + Return "-1" + Else + Return ViewState("CFDIRelacionadoSustitucion").ToString + End If + End Get + Set(value As String) + ViewState("CFDIRelacionadoSustitucion") = value + End Set + End Property + Private Property ComplementoSerieFolio As String + Get + Return ViewState("ComplementoSerieFolio").ToString + End Get + Set(value As String) + ViewState("ComplementoSerieFolio") = value + End Set + End Property + Private Property CorreoCobranzaCliente As String + Get + If ViewState("CorreoCobranzaCliente") Is Nothing Then + Return "" + Else + Return ViewState("CorreoCobranzaCliente").ToString + End If + + End Get + Set(value As String) + ViewState("CorreoCobranzaCliente") = value + End Set + End Property + + Private Property Tipo As String + Get + If ViewState("Tipo") Is Nothing Then + Return "" + Else + Return ViewState("Tipo").ToString + End If + + End Get + Set(value As String) + ViewState("Tipo") = value + End Set + End Property + Private Property RazonSocial As String + Get + If ViewState("RazonSocial") Is Nothing Then + Return "" + Else + Return ViewState("RazonSocial").ToString + End If + + End Get + Set(value As String) + ViewState("RazonSocial") = value + End Set + End Property + Private Property DtGvRH As DataTable + Get + DtGvRH = DirectCast(ViewState("DtGvRH"), DataTable) + End Get + + Set(ByVal value As DataTable) + ViewState("DtGvRH") = value + End Set + End Property + Private Property ComprobanteIE As String + Get + Return ViewState("ComprobanteIE").ToString + End Get + Set(value As String) + ViewState("ComprobanteIE") = value + End Set + End Property + + + Private Property PorcentajeCompraDevDinC As Decimal + Get + Return ViewState("PorcentajeCompraDevDinC").ToString.ToDecimal + End Get + Set(value As Decimal) + ViewState("PorcentajeCompraDevDinC") = value + End Set + End Property + Private Property IdCtaAnticipoComplementaria As Integer + Get + Return ViewState("IdCtaAnticipoComplementaria").ToString.ToEntero + End Get + Set(value As Integer) + ViewState("IdCtaAnticipoComplementaria") = value + End Set + End Property + Private Property IdCtaAnticipoExtranjera As Integer + Get + Return ViewState("IdCtaAnticipoExtranjera").ToString.ToEntero + End Get + Set(value As Integer) + ViewState("IdCtaAnticipoExtranjera") = value + End Set End Property Private Property CveEstatusIE As Integer @@ -423,272 +423,284 @@ Partial Class Bancos_IE End Set End Property + Private Property PermisoComplementoVigente As Boolean + Get + If ViewState("PermisoComplementoVigente") Is Nothing Then + Return False + Else + Return CBool(ViewState("PermisoComplementoVigente")) + End If + End Get + Set(value As Boolean) + ViewState("PermisoComplementoVigente") = value + End Set + + End Property + + +#Region "CANCELACIÓN COMPLEMENTO MODAL V2" + + Property CveComplementoPagoCancelar As Integer + Get + If ViewState("CveComplementoPagoCancelar") Is Nothing Then + Return -1 + Else + Return ViewState("CveComplementoPagoCancelar").ToString.ToEntero + End If + End Get + Set(value As Integer) + ViewState("CveComplementoPagoCancelar") = value + End Set + End Property + + Property FolioFiscalCancelar As String + Get + If ViewState("FolioFiscalCancelar") Is Nothing Then + Return "" + Else + Return ViewState("FolioFiscalCancelar").ToString + End If + End Get + Set(value As String) + ViewState("FolioFiscalCancelar") = value + End Set + End Property + + + Property RFCReceptorCancelar As String + Get + If ViewState("RFCReceptorCancelar") Is Nothing Then + Return "" + Else + Return ViewState("RFCReceptorCancelar").ToString + End If + End Get + Set(value As String) + ViewState("RFCReceptorCancelar") = value + End Set + End Property + + Property CvePACCancelacion As Integer + Get + If ViewState("CvePACCancelacion") Is Nothing Then + Return -1 + Else + Return ViewState("CvePACCancelacion").ToString.ToEntero + End If + End Get + Set(value As Integer) + ViewState("CvePACCancelacion") = value + End Set + End Property + +#End Region -#Region "CANCELACIÓN COMPLEMENTO MODAL V2" - Property CveComplementoPagoCancelar As Integer - Get - If ViewState("CveComplementoPagoCancelar") Is Nothing Then - Return -1 - Else - Return ViewState("CveComplementoPagoCancelar").ToString.ToEntero - End If - End Get - Set(value As Integer) - ViewState("CveComplementoPagoCancelar") = value - End Set - End Property - - Property FolioFiscalCancelar As String - Get - If ViewState("FolioFiscalCancelar") Is Nothing Then - Return "" - Else - Return ViewState("FolioFiscalCancelar").ToString - End If - End Get - Set(value As String) - ViewState("FolioFiscalCancelar") = value - End Set - End Property - - - Property RFCReceptorCancelar As String - Get - If ViewState("RFCReceptorCancelar") Is Nothing Then - Return "" - Else - Return ViewState("RFCReceptorCancelar").ToString - End If - End Get - Set(value As String) - ViewState("RFCReceptorCancelar") = value - End Set - End Property - - Property CvePACCancelacion As Integer - Get - If ViewState("CvePACCancelacion") Is Nothing Then - Return -1 - Else - Return ViewState("CvePACCancelacion").ToString.ToEntero - End If - End Get - Set(value As Integer) - ViewState("CvePACCancelacion") = value - End Set - End Property - -#End Region - - - - -#End Region - - Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load - If Not IsPostBack Then - - Folio = "" - IDCtaBeneficiario = 0 - IDCtaBeneficiarioComplementaria = 0 - IDCtaContable = 0 - IdCtaAnticipoComplementaria = 0 - IdCtaAnticipoExtranjera = 0 - CveCuentaBeneficiario = 0 - CveCuentaConta = 0 - DirectCast(Master.FindControl("TSM"), ScriptManager).EnablePageMethods = True - TxtImporte.Attributes.Add("onblur", "upIE(this);FncImporteCuenta(this);") - 'Calendario.StartDate = Now.AddMonths(-2).FirstDayOfMonth() - ViewState("IDPoliza") = "-1" - CveIEDeposito = -1 - CveIEDeposito2 = -1 - CveOCSolicitudAnticipo = -1 - CveMoneda = -1 'SOLO SE UTILIZA PARA SOLICITUD DE ANTICIPO DE OC - CUANDO SE USE PARA ALGO MAS, INDIQUENLO AQUI - CvePrePoliza = -1 - CveSolicitudViatico = -1 - ComplementoSerieFolio = "" - TxtFechaDevuelto.Text = Now.ToShortDateString - TxtFechaCancelacion.Text = Now.ToShortDateString - CveCompraDeCDin = -1 - 'If UsuarioActual.CveEmpresa.Contiene(66) Then trNotificar.Visible = True - - 'Guarda el modo actual de la pagina - Opcion = If(Request("Opcion") IsNot Nothing, Request("Opcion").ToString, "-1") - - Session("FileUpload") = "" - TRCveIE.Visible = False - - CargaTipoTransaccion() - CargaMoneda() - CargaCuenta() - CargaDDLPersonal() - - DdlProveedores.setEsWebService(True) - DdlProveedores.Attributes.Add("data-metodo", "getproveedores") - - DdlCliente.setEsWebService(True) - DdlCliente.Attributes.Add("data-metodo", "getcliente") - - Dim ObjIE As New ClsBancos - 'Carga Estatus IE - If ObjIE.GetBancos_EstatusIE() Then - DdlEstatusIE.DataSource = ObjIE.DtResultados - DdlEstatusIE.DataBind() - End If - ObjIE.Dispose() - - If Request("CveOrdenCompra") IsNot Nothing AndAlso IsNumeric(Request("CveOrdenCompra")) AndAlso Request("CveOrdenCompra").ToEntero > 0 Then - CveOrdenCompra = Request("CveOrdenCompra").ToEntero - End If - - If Request("CveProveedor") IsNot Nothing AndAlso IsNumeric(Request("CveProveedor")) AndAlso Request("CveProveedor").ToEntero > 0 Then - CveProveedor = Request("CveProveedor").ToEntero - - CargaProveedor(CveProveedor, "-1") - End If - - If Request("Opcion") IsNot Nothing AndAlso Request("Opcion").ToString.Contiene("EGSCREDITO") Then - LblPagueseA.Text = "" - LblPagueseA.Visible = False - Dim Dt As DataTable = Nothing - Dim Banc As New ClsBancos - Dim CveCredito As Integer = -1 - Dim CveCreditoDetalle As Integer = -1 - CveCredito = IfNull(Request("CveCredito"), "-1").ToString.ToEntero - CveCreditoDetalle = IfNull(Request("CveCreditoDetalle"), "-1").ToString.ToEntero - LtlTitulo.Text = "Pago de Créditos" - - DVInteresMoratorio.Visible = True - - If Banc.GetCreditos(CveCredito, -1, -1, -1, -1, UsuarioActual.CveEmpresa) Then - Dt = Banc.DtResultados - - End If - - Banc.Dispose() - PnlFyE.Visible = False - - PnlCredito.Visible = True - - DdlFinanciera.DataSource = Dt.FiltraParametros("", DistinctColumns:={"CveProveedor", "Proveedor"}, Orderby:="Proveedor") - DdlFinanciera.DataBind() - - If DdlFinanciera.SelectedValue.ToEntero > 0 Then - CargaProveedor(DdlFinanciera.SelectedValue.ToEntero, "-1") - Else - Alert("No se pudieron cargar los datos del proveedor", TipoMensaje.MsgAdvertencia) - End If - - - If DdlFinanciera.SelectedValue.ToEntero > 0 Then - DdlCredito.DataSource = Dt.FiltraParametros(String.Format("CveProveedor = {0} And EstatusNum In (1,2,101,102)", DdlFinanciera.SelectedValue), DistinctColumns:={"CveCredito", "ReferenciaCredito"}, Orderby:="ReferenciaCredito") - DdlCredito.DataBind() - End If - DdlCredito.Items.Insert(0, New ListItem("Seleccione", "-1")) - - If CveCredito > 0 Then - 'le asigno el valor - DdlCredito.SelectedValue = CveCredito.ToString - If CveCreditoDetalle > 0 Then - - CargaCreditosDetalle(CveCreditoDetalle) - - End If - End If - - End If - - If Request("CveIE") IsNot Nothing AndAlso IsNumeric(Request("CveIE")) AndAlso Request("CveIE").ToEntero > 0 Then - ViewState("CveIE") = Request("CveIE") - 'Configuración de Modalidad Update - TxtFolio.Enabled = False - TxtFechaDocumento.Enabled = False - Calendario.Enabled = False - TxtImporte.Enabled = False - TxtImporteLetra.Enabled = False - DdlMoneda.Enabled = False - TxtTipoCambio.Enabled = False - DdlCuenta.Enabled = False - 'DdlTipo.Enabled = False - DdlTipoTransaccion.Enabled = False - TxtObservaciones.Enabled = False - ChkAplicaImpuestos.Enabled = False - ChkAbonoCuenta.Enabled = False - Anexo.Visible = False - DdlCliente.Enabled = False - DdlProveedores.Enabled = False +#End Region + + Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load + If Not IsPostBack Then + + Folio = "" + IDCtaBeneficiario = 0 + IDCtaBeneficiarioComplementaria = 0 + IDCtaContable = 0 + IdCtaAnticipoComplementaria = 0 + IdCtaAnticipoExtranjera = 0 + CveCuentaBeneficiario = 0 + CveCuentaConta = 0 + DirectCast(Master.FindControl("TSM"), ScriptManager).EnablePageMethods = True + TxtImporte.Attributes.Add("onblur", "upIE(this);FncImporteCuenta(this);") + 'Calendario.StartDate = Now.AddMonths(-2).FirstDayOfMonth() + ViewState("IDPoliza") = "-1" + CveIEDeposito = -1 + CveIEDeposito2 = -1 + CveOCSolicitudAnticipo = -1 + CveMoneda = -1 'SOLO SE UTILIZA PARA SOLICITUD DE ANTICIPO DE OC - CUANDO SE USE PARA ALGO MAS, INDIQUENLO AQUI + CvePrePoliza = -1 + CveSolicitudViatico = -1 + ComplementoSerieFolio = "" + TxtFechaDevuelto.Text = Now.ToShortDateString + TxtFechaCancelacion.Text = Now.ToShortDateString + CveCompraDeCDin = -1 + 'If UsuarioActual.CveEmpresa.Contiene(66) Then trNotificar.Visible = True + + 'Guarda el modo actual de la pagina + Opcion = If(Request("Opcion") IsNot Nothing, Request("Opcion").ToString, "-1") + + Session("FileUpload") = "" + TRCveIE.Visible = False + + CargaTipoTransaccion() + CargaMoneda() + CargaCuenta() + CargaDDLPersonal() + + DdlProveedores.setEsWebService(True) + DdlProveedores.Attributes.Add("data-metodo", "getproveedores") + + DdlCliente.setEsWebService(True) + DdlCliente.Attributes.Add("data-metodo", "getcliente") + + Dim ObjIE As New ClsBancos + 'Carga Estatus IE + If ObjIE.GetBancos_EstatusIE() Then + DdlEstatusIE.DataSource = ObjIE.DtResultados + DdlEstatusIE.DataBind() + End If + ObjIE.Dispose() + + If Request("CveOrdenCompra") IsNot Nothing AndAlso IsNumeric(Request("CveOrdenCompra")) AndAlso Request("CveOrdenCompra").ToEntero > 0 Then + CveOrdenCompra = Request("CveOrdenCompra").ToEntero + End If + + If Request("CveProveedor") IsNot Nothing AndAlso IsNumeric(Request("CveProveedor")) AndAlso Request("CveProveedor").ToEntero > 0 Then + CveProveedor = Request("CveProveedor").ToEntero + + CargaProveedor(CveProveedor, "-1") + End If + + If Request("Opcion") IsNot Nothing AndAlso Request("Opcion").ToString.Contiene("EGSCREDITO") Then + LblPagueseA.Text = "" + LblPagueseA.Visible = False + Dim Dt As DataTable = Nothing + Dim Banc As New ClsBancos + Dim CveCredito As Integer = -1 + Dim CveCreditoDetalle As Integer = -1 + CveCredito = IfNull(Request("CveCredito"), "-1").ToString.ToEntero + CveCreditoDetalle = IfNull(Request("CveCreditoDetalle"), "-1").ToString.ToEntero + LtlTitulo.Text = "Pago de Créditos" + + DVInteresMoratorio.Visible = True + + If Banc.GetCreditos(CveCredito, -1, -1, -1, -1, UsuarioActual.CveEmpresa) Then + Dt = Banc.DtResultados + + End If + + Banc.Dispose() + PnlFyE.Visible = False + + PnlCredito.Visible = True + + DdlFinanciera.DataSource = Dt.FiltraParametros("", DistinctColumns:={"CveProveedor", "Proveedor"}, Orderby:="Proveedor") + DdlFinanciera.DataBind() + + If DdlFinanciera.SelectedValue.ToEntero > 0 Then + CargaProveedor(DdlFinanciera.SelectedValue.ToEntero, "-1") + Else + Alert("No se pudieron cargar los datos del proveedor", TipoMensaje.MsgAdvertencia) + End If + + + If DdlFinanciera.SelectedValue.ToEntero > 0 Then + DdlCredito.DataSource = Dt.FiltraParametros(String.Format("CveProveedor = {0} And EstatusNum In (1,2,101,102)", DdlFinanciera.SelectedValue), DistinctColumns:={"CveCredito", "ReferenciaCredito"}, Orderby:="ReferenciaCredito") + DdlCredito.DataBind() + End If + DdlCredito.Items.Insert(0, New ListItem("Seleccione", "-1")) + + If CveCredito > 0 Then + 'le asigno el valor + DdlCredito.SelectedValue = CveCredito.ToString + If CveCreditoDetalle > 0 Then + + CargaCreditosDetalle(CveCreditoDetalle) + + End If + End If + + End If + + If Request("CveIE") IsNot Nothing AndAlso IsNumeric(Request("CveIE")) AndAlso Request("CveIE").ToEntero > 0 Then + ViewState("CveIE") = Request("CveIE") + 'Configuración de Modalidad Update + TxtFolio.Enabled = False + TxtFechaDocumento.Enabled = False + Calendario.Enabled = False + TxtImporte.Enabled = False + TxtImporteLetra.Enabled = False + DdlMoneda.Enabled = False + TxtTipoCambio.Enabled = False + DdlCuenta.Enabled = False + 'DdlTipo.Enabled = False + DdlTipoTransaccion.Enabled = False + TxtObservaciones.Enabled = False + ChkAplicaImpuestos.Enabled = False + ChkAbonoCuenta.Enabled = False + Anexo.Visible = False + DdlCliente.Enabled = False + DdlProveedores.Enabled = False DdlPersonal.Visible = False - CargaDatos() - - BtnGuardar.Visible = False - LtlTitulo.Text = "Consulta del Ingreso/Egreso:" - 'ImgAddObs.Attributes.Add("onclick", "javascript:PosicionaObjeto(this.id,'DivEventoBitacora',null,-250,-250); $('#DivEventoBitacora').show(1000); ") - HlEvento.Visible = True - HlEvento.NavigateUrl = "/OI/PopUpAgenda.aspx?CveTipoEvento=2&CveIE=" & CveIE & "&TB_iframe=true&height=370&width=600;" - - Else - 'Configuración de Modalidad Insert - ImgAddObs.Visible = False - CveIE = -1 - TxtFechaDocumento.Text = Now.ToShortDateString - ImgUpdateCuentaDeposito.Visible = False - End If - - InicializaSolicitudAnticipoOC() - If Request("Opcion") IsNot Nothing AndAlso Request("Opcion").ToString.Contiene("EGSSINFACT") AndAlso UsuarioActual.CveEmpresa = 119 Then - RBL.Items.Add(New ListItem("Acreedores Diversos", "AC")) - End If - - '08/05/2018 - Se deshabilita opcion Eliminar IE si tiene un complemento de pago relacionado - If CveIE = -1 Or (CveIE > 0 AndAlso VerificaComplementos(False)) Then - LnkEliminar.Visible = False - If CveIE > 0 Then - LnkCancelar.Visible = False - - If UsuarioActual.TienePermisoProceso(85) Then - LnkCancelarComplemento.Visible = True - LnkCancelarComplementoImporte.Visible = True - End If - 'LnkEliminarComplemento.NavigateUrl = String.Format("/Ventas/ClientesAbonar.aspx?CveIESustitucion={0}&CveCliente={1}", CveIE, CveCliente) - End If - Else - LnkEliminar.Visible = True - LnkCancelarComplemento.Visible = False - LnkCancelarComplementoImporte.Visible = False - End If - - If TabCancelacion.Visible Then - LnkCancelar.Visible = False - LnkCancelarComplemento.Visible = False - LnkEliminar.Visible = False - LnkCancelarComplementoImporte.Visible = False - End If - - UppEliminarIE.Update() - - InicializaActualizarTC() - - '22/06/2018 - VIATICOS - If Request("CveSolicitudViatico") IsNot Nothing AndAlso IsNumeric(Request("CveSolicitudViatico")) AndAlso Request("CveSolicitudViatico").ToEntero > 0 Then - CargaDatosViaticos() - End If - - '14/08/2018- PERMISO PARA EDITAR FOLIO - If UsuarioActual.TienePermisoProceso(246) Then - TxtFolio.Enabled = True - End If - - InicializaDevolverDinero() - - If UsuarioActual.TienePermisoProceso(275) And CveIE > 0 Then - LnkAjustarMovimiento.Visible = True - End If - + CargaDatos() + + BtnGuardar.Visible = False + LtlTitulo.Text = "Consulta del Ingreso/Egreso:" + 'ImgAddObs.Attributes.Add("onclick", "javascript:PosicionaObjeto(this.id,'DivEventoBitacora',null,-250,-250); $('#DivEventoBitacora').show(1000); ") + HlEvento.Visible = True + HlEvento.NavigateUrl = "/OI/PopUpAgenda.aspx?CveTipoEvento=2&CveIE=" & CveIE & "&TB_iframe=true&height=370&width=600;" + + Else + 'Configuración de Modalidad Insert + ImgAddObs.Visible = False + CveIE = -1 + TxtFechaDocumento.Text = Now.ToShortDateString + ImgUpdateCuentaDeposito.Visible = False + End If + + InicializaSolicitudAnticipoOC() + If Request("Opcion") IsNot Nothing AndAlso Request("Opcion").ToString.Contiene("EGSSINFACT") AndAlso UsuarioActual.CveEmpresa = 119 Then + RBL.Items.Add(New ListItem("Acreedores Diversos", "AC")) + End If + + '08/05/2018 - Se deshabilita opcion Eliminar IE si tiene un complemento de pago relacionado + If CveIE = -1 Or (CveIE > 0 AndAlso VerificaComplementos(False)) Then + LnkEliminar.Visible = False + If CveIE > 0 Then + LnkCancelar.Visible = False + + If UsuarioActual.TienePermisoProceso(85) Then + LnkCancelarComplemento.Visible = True + LnkCancelarComplementoImporte.Visible = True + End If + 'LnkEliminarComplemento.NavigateUrl = String.Format("/Ventas/ClientesAbonar.aspx?CveIESustitucion={0}&CveCliente={1}", CveIE, CveCliente) + End If + Else + LnkEliminar.Visible = True + LnkCancelarComplemento.Visible = False + LnkCancelarComplementoImporte.Visible = False + End If + + If TabCancelacion.Visible Then + LnkCancelar.Visible = False + LnkCancelarComplemento.Visible = False + LnkEliminar.Visible = False + LnkCancelarComplementoImporte.Visible = False + End If + + UppEliminarIE.Update() + + InicializaActualizarTC() + + '22/06/2018 - VIATICOS + If Request("CveSolicitudViatico") IsNot Nothing AndAlso IsNumeric(Request("CveSolicitudViatico")) AndAlso Request("CveSolicitudViatico").ToEntero > 0 Then + CargaDatosViaticos() + End If + + '14/08/2018- PERMISO PARA EDITAR FOLIO + If UsuarioActual.TienePermisoProceso(246) Then + TxtFolio.Enabled = True + End If + + InicializaDevolverDinero() + + If UsuarioActual.TienePermisoProceso(275) And CveIE > 0 Then + LnkAjustarMovimiento.Visible = True + End If + If Not VerificaComplementos(True) Then LnkCancelarComplemento.Visible = False @@ -698,398 +710,401 @@ Partial Class Bancos_IE UppEliminarIE.Update() - End If - - End If + End If + + End If End Sub -#Region " CARGA DATOS " - Private Sub CargaDatos() - Dim ObjIE As New ClsBancos() - Dim ObjIE2 As New ClsBancos() - If ObjIE.GetBancosIE(CveIE, UsuarioActual.CveEmpresa) Then - If ObjIE.DtResultados.Rows.Count > 0 Then - - Try - Tipo = ObjIE.DtResultados.Rows(0)("Tipo").ToString - Catch ex As Exception - - End Try - - CveIEDeposito = ObjIE.DtResultados(0)("CveIEDepositoPadre").ToString.ToEntero - CuentaDepositoPadre = ObjIE.DtResultados(0)("CuentaDepositoPadre").ToString - Cuenta = ObjIE.DtResultados(0)("NumCuenta").ToString - - CveIEDeposito2 = ObjIE.DtResultados(0)("CveIEDeposito2").ToString.ToEntero - - If UsuarioActual.TienePermisoProceso(99) Then - 'BtnActualizar.Visible = True - TxtFechaDocumento.Enabled = True - Calendario.Enabled = True - End If - - If ObjIE.CveEstatusNotificacion > 0 Then - trNotificacion.Visible = True - LtNotificacion.Text = If(ObjIE.CveEstatusNotificacion = 1, "Notificado", String.Format("Entregado el {0} - {1}", ObjIE.FechaEntrega, ObjIE.ObservacionEntrega)) - End If - - 'Pestaña Datos Generales - TxtCveIE.Text = ObjIE.CveIE.ToString - CveCuenta = ObjIE.CveCuenta - RBL.Visible = False - RegistraScript("if($get('imgBuscarProveedor')) $get('imgBuscarProveedor').style.display='none';") - 'DdlBanco.SelectedValue = ObjIE.CveBanco.ToString - - DdlTipoTransaccion.SelectedValue = ObjIE.CveTipoTransaccion.ToString - - - DdlCuenta.SelectedValueExist(ObjIE.CveCuenta.ToString) - DdlCuenta.Visible = False - - If ObjIE.DtResultados.Rows(0)("CveCuentaTarjeta").ToString.ToEntero > 0 Then - DivTarjetaCredito.Visible = True - LblInfoTarjeta.Text = ObjIE.DtResultados.Rows(0)("NumeroTarjeta").ToString - LblInfoTarjeta.Font.Bold = True - - UpInfoTarjeta.Update() - End If - - LblCuenta.Text = ObjIE.BancoNumCuentaMoneda - ViewState("CvePrePoliza") = ObjIE.DtResultados.Rows(0)("CvePrePoliza").ToString.ToEntero - TxtFechaDocumento.Text = ObjIE.FechaDocumento.ToShortDateString - TxtFolio.Text = ObjIE.Folio - LblBeneficiario.Text = ObjIE.PagueseA - TxtImporte.Text = ObjIE.Importe.FormatoNumero - TxtImporteLetra.Text = ObjIE.Importe.Texto2Letras(ObjIE.CveMoneda) - DdlMoneda.SelectedValue = ObjIE.CveMoneda.ToString - If ObjIE.TipoCambio > 0 Then - TrTipoCambio.Visible = True - Else - TrTipoCambio.Visible = False - End If - TxtTipoCambio.Text = ObjIE.TipoCambio.ToString - TxtObservaciones.Text = ObjIE.Observaciones - If Year(ObjIE.FechaAplicado) > 1 Then TxtFechaAplicado.Text = ObjIE.FechaAplicado.ToShortDateString - - ChkAbonoCuenta.Checked = ObjIE.EsAbonoEnCuenta - 'ChkAplicaImpuestos.Checked = ObjIE.AplicaImpuestos - 'ChkImpreso.Checked = ObjIE.FueImpreso - ChkConciliado.Checked = ObjIE.FueConciliado - - DdlEstatusIE.SelectedValue = ObjIE.CveEstatusIE.ToString - DdlEstatusIE.Visible = False - LblEstatusIE.Visible = True - LblEstatusIE.Text = ObjIE.EstatusIE.ToString - - If ObjIE.CveTipoTransaccion.Contiene(3, 4) Then 'cuando es cheque recibido - LnkChqDevuelto.Visible = True - End If - - 'saco el tipo de transaccion - Dim dr As DataRow = GlobalDTTipoTransacciones.FiltroPrimero(String.Format("CveTipoTransaccion = {0}", ObjIE.CveTipoTransaccion)) 'Egs o Ing - If dr IsNot Nothing Then - If dr("Tipo").ToString = "Egs" Then - LblPagueseA.Text = "Beneficiario" - Else - LblPagueseA.Text = "Pagador" - End If - - 'Detectamos a quien se le hizo el cobro (Cliente, proveedor, Funcionario/Empleado, etc.) - If ObjIE2.GetPrePolizasDetalle(-1, CveIE) Then - If ObjIE2.DtResultados.Rows.Count > 0 Then - - Dim CveConceptoContable As Integer = ObjIE2.DtResultados.FiltroPrimeroValor("CveConceptoContable", "CveConceptoContable <> 30 and CveConceptoContable <> 61").ToEntero - CveCliente = ObjIE2.DtResultados.Rows(0)("CveCliente").ToString.ToEntero - CvePersonal = ObjIE2.DtResultados.Rows(0)("CvePersonal").ToString.ToEntero - CveProveedor = ObjIE2.DtResultados.Rows(0)("CveProveedor").ToString.ToEntero - - Select Case CveConceptoContable - Case 66 - If ObjIE2.DtResultados.FiltraParametros("CveConceptoContable <> 30 and CveConceptoContable <> 60").Rows(0)("CveCliente").ToString.ToEntero > 0 Then - LblRecibidoPorNombre.Text = "Clientes" - PnlRecibidoPor.Visible = True - End If - Case 37 - '' ElseIf ObjIE2.DtResultados.FiltraParametros("CveConceptoContable <> 30 and CveConceptoContable <> 60").Item(0)("CveProveedor").ToString.ToEntero > 0 Then - LblRecibidoPorNombre.Text = "Deudores Diversos" - PnlRecibidoPor.Visible = True - - End Select - End If - End If - End If - - If CveCliente > 0 Then - DdlCliente.SelectedText = ObjIE.PagueseA +#Region " CARGA DATOS " + Private Sub CargaDatos() + Dim ObjIE As New ClsBancos() + Dim ObjIE2 As New ClsBancos() + If ObjIE.GetBancosIE(CveIE, UsuarioActual.CveEmpresa) Then + If ObjIE.DtResultados.Rows.Count > 0 Then + + Try + Tipo = ObjIE.DtResultados.Rows(0)("Tipo").ToString + Catch ex As Exception + + End Try + + CveIEDeposito = ObjIE.DtResultados(0)("CveIEDepositoPadre").ToString.ToEntero + CuentaDepositoPadre = ObjIE.DtResultados(0)("CuentaDepositoPadre").ToString + Cuenta = ObjIE.DtResultados(0)("NumCuenta").ToString + + CveIEDeposito2 = ObjIE.DtResultados(0)("CveIEDeposito2").ToString.ToEntero + + If UsuarioActual.TienePermisoProceso(99) Then + 'BtnActualizar.Visible = True + TxtFechaDocumento.Enabled = True + Calendario.Enabled = True + End If + + If ObjIE.CveEstatusNotificacion > 0 Then + trNotificacion.Visible = True + LtNotificacion.Text = If(ObjIE.CveEstatusNotificacion = 1, "Notificado", String.Format("Entregado el {0} - {1}", ObjIE.FechaEntrega, ObjIE.ObservacionEntrega)) + End If + + 'Pestaña Datos Generales + TxtCveIE.Text = ObjIE.CveIE.ToString + CveCuenta = ObjIE.CveCuenta + RBL.Visible = False + RegistraScript("if($get('imgBuscarProveedor')) $get('imgBuscarProveedor').style.display='none';") + 'DdlBanco.SelectedValue = ObjIE.CveBanco.ToString + + DdlTipoTransaccion.SelectedValue = ObjIE.CveTipoTransaccion.ToString + + + DdlCuenta.SelectedValueExist(ObjIE.CveCuenta.ToString) + DdlCuenta.Visible = False + + If ObjIE.DtResultados.Rows(0)("CveCuentaTarjeta").ToString.ToEntero > 0 Then + DivTarjetaCredito.Visible = True + LblInfoTarjeta.Text = ObjIE.DtResultados.Rows(0)("NumeroTarjeta").ToString + LblInfoTarjeta.Font.Bold = True + + UpInfoTarjeta.Update() + End If + + LblCuenta.Text = ObjIE.BancoNumCuentaMoneda + ViewState("CvePrePoliza") = ObjIE.DtResultados.Rows(0)("CvePrePoliza").ToString.ToEntero + TxtFechaDocumento.Text = ObjIE.FechaDocumento.ToShortDateString + TxtFolio.Text = ObjIE.Folio + LblBeneficiario.Text = ObjIE.PagueseA + TxtImporte.Text = ObjIE.Importe.FormatoNumero + TxtImporteLetra.Text = ObjIE.Importe.Texto2Letras(ObjIE.CveMoneda) + DdlMoneda.SelectedValue = ObjIE.CveMoneda.ToString + If ObjIE.TipoCambio > 0 Then + TrTipoCambio.Visible = True + Else + TrTipoCambio.Visible = False + End If + TxtTipoCambio.Text = ObjIE.TipoCambio.ToString + TxtObservaciones.Text = ObjIE.Observaciones + If Year(ObjIE.FechaAplicado) > 1 Then TxtFechaAplicado.Text = ObjIE.FechaAplicado.ToShortDateString + + ChkAbonoCuenta.Checked = ObjIE.EsAbonoEnCuenta + 'ChkAplicaImpuestos.Checked = ObjIE.AplicaImpuestos + 'ChkImpreso.Checked = ObjIE.FueImpreso + ChkConciliado.Checked = ObjIE.FueConciliado + + DdlEstatusIE.SelectedValue = ObjIE.CveEstatusIE.ToString + DdlEstatusIE.Visible = False + LblEstatusIE.Visible = True + LblEstatusIE.Text = ObjIE.EstatusIE.ToString + + If ObjIE.CveTipoTransaccion.Contiene(3, 4) Then 'cuando es cheque recibido + LnkChqDevuelto.Visible = True + End If + + 'saco el tipo de transaccion + Dim dr As DataRow = GlobalDTTipoTransacciones.FiltroPrimero(String.Format("CveTipoTransaccion = {0}", ObjIE.CveTipoTransaccion)) 'Egs o Ing + If dr IsNot Nothing Then + If dr("Tipo").ToString = "Egs" Then + LblPagueseA.Text = "Beneficiario" + Else + LblPagueseA.Text = "Pagador" + End If + + 'Detectamos a quien se le hizo el cobro (Cliente, proveedor, Funcionario/Empleado, etc.) + If ObjIE2.GetPrePolizasDetalle(-1, CveIE) Then + If ObjIE2.DtResultados.Rows.Count > 0 Then + + Dim CveConceptoContable As Integer = ObjIE2.DtResultados.FiltroPrimeroValor("CveConceptoContable", "CveConceptoContable <> 30 and CveConceptoContable <> 61").ToEntero + CveCliente = ObjIE2.DtResultados.Rows(0)("CveCliente").ToString.ToEntero + CvePersonal = ObjIE2.DtResultados.Rows(0)("CvePersonal").ToString.ToEntero + CveProveedor = ObjIE2.DtResultados.Rows(0)("CveProveedor").ToString.ToEntero + + Select Case CveConceptoContable + Case 66 + If ObjIE2.DtResultados.FiltraParametros("CveConceptoContable <> 30 and CveConceptoContable <> 60").Rows(0)("CveCliente").ToString.ToEntero > 0 Then + LblRecibidoPorNombre.Text = "Clientes" + PnlRecibidoPor.Visible = True + End If + Case 37 + '' ElseIf ObjIE2.DtResultados.FiltraParametros("CveConceptoContable <> 30 and CveConceptoContable <> 60").Item(0)("CveProveedor").ToString.ToEntero > 0 Then + LblRecibidoPorNombre.Text = "Deudores Diversos" + PnlRecibidoPor.Visible = True + + End Select + End If + End If + End If + + If CveCliente > 0 Then + DdlCliente.SelectedText = ObjIE.PagueseA DdlCliente.SelectedValue = CveCliente.ToString - DdlCliente.Visible = False - DdlCliente.Enabled = False - + DdlCliente.Visible = False + DdlCliente.Enabled = False + LblPagarA.Visible = True - LblPagarA.Text = ObjIE.PagueseA - - ' LnkEmitirComplemento.Visible = True - ElseIf CveProveedor > 0 Then - DdlProveedores.SelectedText = ObjIE.PagueseA - DdlProveedores.SelectedValue = CveProveedor.ToString + LblPagarA.Text = ObjIE.PagueseA + + ' LnkEmitirComplemento.Visible = True + ElseIf CveProveedor > 0 Then + DdlProveedores.SelectedText = ObjIE.PagueseA + DdlProveedores.SelectedValue = CveProveedor.ToString DdlProveedores.Visible = False - DdlProveedores.Enabled = False - + DdlProveedores.Enabled = False + LblPagarA.Visible = True - LblPagarA.Text = ObjIE.PagueseA - - - 'Se prepara para la generacion del envio de correo con notificacion de pago - LnkEnviarMailPago.Attributes.Add("onclick", "$('#ModalDivMail').modal();") - LnkEnviarMailPago.Visible = True - CargaProveedor(CveProveedor, "-1") - ElseIf CvePersonal > 0 Then - PersonalIndexChange(CvePersonal) - DdlPersonal.Visible = True - DdlPersonal.Enabled = False - End If - - IDPoliza = ObjIE.IDPoliza - IDCtaContable = ObjIE.IdCtaContable - CveCuentaConta = ObjIE.CveCuentaConta - - - If ObjIE.IDPoliza > 0 Then - - If UsuarioActual.TienePermisoProceso(107) Then - BtnDescontabilizar.Visible = True - End If - BtnContabilizar.Visible = False - HplIrPoliza.Visible = True - HplIrPoliza.NavigateUrl = String.Format("/Contabilidad/RegPoliza.aspx?IdPoliza={0}", ObjIE.IDPoliza) - 'ImgEliminarMovimiento.OnClientClick = "return confirm('Esta seguro de eliminar el documento y su póliza?');" - LnkEliminar.OnClientClick = "return confirm('¿Está seguro de eliminar el documento y su póliza?');" - - EstaContabilizado = True - Else - BtnContabilizar.Visible = True - BtnDescontabilizar.Visible = False - HplIrPoliza.Visible = False - - EstaContabilizado = False - End If - UPPDesContabilizar.Update() - - 'ImgImprimir.Visible = True - LblRegistroFecha.Text = ObjIE.FechaIng.ToShortDateString - LblRegistroUsuario.Text = ObjIE.Usuario - + LblPagarA.Text = ObjIE.PagueseA + + + 'Se prepara para la generacion del envio de correo con notificacion de pago + LnkEnviarMailPago.Attributes.Add("onclick", "$('#ModalDivMail').modal();") + LnkEnviarMailPago.Visible = True + CargaProveedor(CveProveedor, "-1") + ElseIf CvePersonal > 0 Then + PersonalIndexChange(CvePersonal) + DdlPersonal.Visible = True + DdlPersonal.Enabled = False + End If + + IDPoliza = ObjIE.IDPoliza + IDCtaContable = ObjIE.IdCtaContable + CveCuentaConta = ObjIE.CveCuentaConta + + + If ObjIE.IDPoliza > 0 Then + + If UsuarioActual.TienePermisoProceso(107) Then + BtnDescontabilizar.Visible = True + End If + BtnContabilizar.Visible = False + HplIrPoliza.Visible = True + HplIrPoliza.NavigateUrl = String.Format("/Contabilidad/RegPoliza.aspx?IdPoliza={0}", ObjIE.IDPoliza) + 'ImgEliminarMovimiento.OnClientClick = "return confirm('Esta seguro de eliminar el documento y su póliza?');" + LnkEliminar.OnClientClick = "return confirm('¿Está seguro de eliminar el documento y su póliza?');" + + EstaContabilizado = True + Else + BtnContabilizar.Visible = True + BtnDescontabilizar.Visible = False + HplIrPoliza.Visible = False + + EstaContabilizado = False + End If + UPPDesContabilizar.Update() + + 'ImgImprimir.Visible = True + LblRegistroFecha.Text = ObjIE.FechaIng.ToShortDateString + LblRegistroUsuario.Text = ObjIE.Usuario + CveEstatusIE = ObjIE.CveEstatusIE - Select Case ObjIE.CveEstatusIE - Case 1 - If Not ObjIE.FueConciliado Then - 'If UsuarioActual.TienePermisoProceso(85) Then ImgCancelarMovimiento.Visible = True - If UsuarioActual.TienePermisoProceso(85) Then LnkCancelar.Visible = True - - 'ELIMINAR IE SIN VALIDACIONES - If UsuarioActual.TienePermisoProceso(80) Then LnkEliminar.Visible = True - - 'ELIMINA IE CUANDO ES EL MISMO USUARIO QUE LO CREO Y QUE NO ESTE CONTABILIZADO NI CONCILIADO - If UsuarioActual.TienePermisoProceso(154) AndAlso ObjIE.CveUsuario = UsuarioActual.CveUsuario And Not ObjIE.IDPoliza > 0 Then - LnkEliminar.Visible = True - End If - End If - - ''COMENTAR - solo para pruebas - 'If UsuarioActual.TienePermisoProceso(85) Then LnkCancelar.Visible = True - 'If UsuarioActual.TienePermisoProceso(80) Then LnkEliminar.Visible = True - - ImprimirIEPDF(ObjIE.CveTipoTransaccion) - - Case 2 - LblEstatus.Text = ObjIE.EstatusIE - LblEstatus.ForeColor = Drawing.Color.Red - - 'ELIMINAR IE SIN VALIDACIONES - If UsuarioActual.TienePermisoProceso(80) Then LnkEliminar.Visible = True - - 'ELIMINA IE CUANDO ES EL MISMO USUARIO QUE LO CREO Y QUE NO ESTE CONTABILIZADO NI CONCILIADO - If UsuarioActual.TienePermisoProceso(154) AndAlso ObjIE.CveUsuario = UsuarioActual.CveUsuario And Not ObjIE.IDPoliza > 0 Then - LnkEliminar.Visible = True - End If - - If UsuarioActual.CveUsuario = 100 Then - ImprimirIEPDF(ObjIE.CveTipoTransaccion) - End If - 'FALTA AFECTAR POLIZA NEGATIVA - 'If UsuarioActual.TienePermisoProceso(136) Then LnkEliminar.Visible = True - End Select - - 'Mostramos seccion cargar comprobante si no tiene estatus cancelado - If ObjIE.CveEstatusIE <> 2 Then - DivCargaComprobante.Visible = True - If ObjIE.Comprobante <> "" Then - TdNotaComprobante.Visible = True - End If - End If - - If ObjIE.Comprobante <> "" Then - HplComprobante.Visible = True - HplComprobante.NavigateUrl = String.Format("/Empresas/{0}/IE/{1}", UsuarioActual.CveEmpresa, ObjIE.Comprobante) - End If - - If CveIEDeposito > 0 Then - Dim SbMensaje As New StringBuilder() - Dim StrEncript As String = Encripta($"OP=DC&CveIE={CveIE}&CuentaCaja={CuentaDepositoPadre}&CuentaDepo={Cuenta}") - HplListaProveedores.NavigateUrl = $"/Compras/PopUpVerFactura.aspx?P={StrEncript}" - - Else - HplListaProveedores.NavigateUrl = String.Format("/Bancos/Reportes.aspx?Opcion=ImprimeMov&CveIE={0}", ObjIE.CveIE) - End If - If CveIEDeposito2 > 0 Then - divDepositado.Visible = True - HplDepositado.NavigateUrl = $"/Bancos/IE.aspx?CveIE={CveIEDeposito2}" - End If - - - CargaEventoBitacora() - CargaGvBitacora() - 'Carga Cuenta Deposito o activa para seleccionar una - If ObjIE.CuentaDepositado <> "" Then - TrCuentaDepositado.Visible = True - LitDepositado.Text = ObjIE.CuentaDepositado - Else - - If DdlTipoTransaccion.SelectedValue = "9" Then - Dim Dep As New ClsGenerales - If Dep.GetCuentasDepositos(CveProveedor:=ObjIE.CveProveedor) Then - DdlCuentaDeposito.DataSource = Dep.DtResultados - If Dep.DtResultados.Rows.Count > 0 Then - trCuentaDeposito.Visible = True - DdlCuentaDeposito.Items.Insert(0, New ListItem("Seleccione una cuenta", "-1")) - 'ElseIf Dep.DtResultados.Rows.Count = 1 Then - ' TrCuentaDepositado.Visible = True - ' LitTextoDepositado.Text = "Cuenta Depósito" - ' LitDepositado.Text = Dep.DtResultados.Rows(0)("CuentaDeposito").ToString - 'End If - End If - End If - Dep.Dispose() - DdlCuentaDeposito.DataBind() - UpCuentaDeposito.Update() - End If - - End If - - LnkComplementoPago.Visible = True - - - - If ObjIE.CveEstatusIE = 1 AndAlso ObjIE.CveIECancelado > 0 Then - 'cuando es cheque devuelto - TabCancelacion.Visible = True - LbUsuarioCancelacion.Text = ObjIE.UsuarioCancelacion - LbFechaCancelacion.Text = If(ObjIE.FechaCancelacion.ToShortDateString = "01/01/0001", "", ObjIE.FechaCancelacion.ToShortDateString) - LbFechaIngCancelacion.Text = "" ' If(ObjIE.FechaIngCancelacion.ToShortDateString = "01/01/0001", "", ObjIE.FechaIngCancelacion.ToShortDateString) - - TrIECancelacion.Visible = True - LbMovimientoCancelado.Text = "Movimiento:" - HLIECancelacion.NavigateUrl = String.Format("/Bancos/IE.aspx?CveIE={0}", ObjIE.CveIECancelado) - HLIECancelacion.Text = ObjIE.FolioIECancelado - LnkCancelar.Visible = False - - End If - - - 'DATOS DE CANCELACION - If ObjIE.CveEstatusIE = 2 Then - TabCancelacion.Visible = True - LbUsuarioCancelacion.Text = ObjIE.UsuarioCancelacion - LbFechaCancelacion.Text = ObjIE.FechaCancelacion.ToShortDateString - LbFechaIngCancelacion.Text = If(ObjIE.FechaIngCancelacion.ToShortDateString = "01/01/0001", "", ObjIE.FechaIngCancelacion.ToShortDateString) - - 'MOVIMIENTO CANCELACION - If ObjIE.CveIECancelacion > 0 Then - TrIECancelacion.Visible = True - LbMovimientoCancelado.Text = "Movimiento de Cancelación:" - HLIECancelacion.NavigateUrl = String.Format("/Bancos/IE.aspx?CveIE={0}", ObjIE.CveIECancelacion) - HLIECancelacion.Text = ObjIE.FolioIECancelacion - End If - - 'MOVIMIENTO CANCELADO - If ObjIE.CveIECancelado > 0 Then - TrIECancelacion.Visible = True - LbMovimientoCancelado.Text = "Movimiento Cancelado:" - HLIECancelacion.NavigateUrl = String.Format("/Bancos/IE.aspx?CveIE={0}", ObjIE.CveIECancelado) - HLIECancelacion.Text = ObjIE.FolioIECancelado - End If - - 'Esconde datos que no tenemos - If ObjIE.UsuarioCancelacion = "" Then TrUsuarioCancelacion.Visible = False - If ObjIE.FechaCancelacion.ToShortDateString = "01/01/0001" Then TrFechaCancelacion.Visible = False - If ObjIE.FechaIngCancelacion.ToShortDateString = "01/01/0001" Then TrFechaIngCancelacion.Visible = False - - End If - UpCancelacion.Update() - - 'OTROS DATOS - DATOS COMPLEMENTO SUSTITUCION - Dim CveIESustitucion As Integer = ObjIE.DtResultados(0)("CveIESustitucion").ToString.ToEntero - If CveIESustitucion > 0 Then - TRComplementoSustitucion.Visible = True - - If ObjIE.GetBancosIE(CveIESustitucion, UsuarioActual.CveEmpresa) And ObjIE.DtResultados.Rows.Count > 0 Then - ARefIESustitucion.HRef = String.Format("/Bancos/IE.aspx?CveIE={0}", CveIESustitucion) - ARefIESustitucion.InnerText = ObjIE.Folio - End If - - End If - - - 'DETALLES - MOVIMIENTOS - If ObjIE.GetBancosIEMovimientos(CveIE, UsuarioActual.CveEmpresa) Then - GvM.DataSource = ObjIE.DtResultados - - If UsuarioActual.TienePermisoProceso(277) AndAlso Not TabCancelacion.Visible Then - GvM.Columns(8).Visible = True - End If - - If ObjIE.DtResultados.FiltraParametros("TCPago > 1").Rows.Count.ToEntero() > 0 Then - GvM.Columns(7).Visible = True - End If - - If ObjIE.DtResultados.FiltraParametros("CveMonedaIE <> CveMoneda").Rows.Count.ToEntero > 0 Then - GvM.Columns(5).Visible = True - GvM.Columns(6).Visible = True - End If - - GvM.DataBind() - - End If - - 'Movimientos Relacionados Padre - If ObjIE.GetBancosIEMovimientosPadre(CveIE, UsuarioActual.CveEmpresa) Then - If ObjIE.DtResultados.FiltraParametros("TCPago > 1").Rows.Count.ToEntero() > 0 Then - GvRP.Columns(5).Visible = True - End If - - GvRP.DataSource = ObjIE.DtResultados - GvRP.DataBind() - End If - - 'Movimientos Relacionados Hijo - If ObjIE.GetBancosIEMovimientosHijo(CveIE, UsuarioActual.CveEmpresa) Then - DtGvRH = ObjIE.DtResultados - CargaGvRH() - If UsuarioActual.TienePermisoProceso(80) Then GvRH.Columns(5).Visible = True - End If - + Select Case ObjIE.CveEstatusIE + Case 1 + If Not ObjIE.FueConciliado Then + 'If UsuarioActual.TienePermisoProceso(85) Then ImgCancelarMovimiento.Visible = True + If UsuarioActual.TienePermisoProceso(85) Then LnkCancelar.Visible = True + + 'ELIMINAR IE SIN VALIDACIONES + If UsuarioActual.TienePermisoProceso(80) Then LnkEliminar.Visible = True + + 'ELIMINA IE CUANDO ES EL MISMO USUARIO QUE LO CREO Y QUE NO ESTE CONTABILIZADO NI CONCILIADO + If UsuarioActual.TienePermisoProceso(154) AndAlso ObjIE.CveUsuario = UsuarioActual.CveUsuario And Not ObjIE.IDPoliza > 0 Then + LnkEliminar.Visible = True + End If + End If + + ''COMENTAR - solo para pruebas + 'If UsuarioActual.TienePermisoProceso(85) Then LnkCancelar.Visible = True + 'If UsuarioActual.TienePermisoProceso(80) Then LnkEliminar.Visible = True + + ImprimirIEPDF(ObjIE.CveTipoTransaccion) + + Case 2 + LblEstatus.Text = ObjIE.EstatusIE + LblEstatus.ForeColor = Drawing.Color.Red + + 'ELIMINAR IE SIN VALIDACIONES + If UsuarioActual.TienePermisoProceso(80) Then LnkEliminar.Visible = True + + 'ELIMINA IE CUANDO ES EL MISMO USUARIO QUE LO CREO Y QUE NO ESTE CONTABILIZADO NI CONCILIADO + If UsuarioActual.TienePermisoProceso(154) AndAlso ObjIE.CveUsuario = UsuarioActual.CveUsuario And Not ObjIE.IDPoliza > 0 Then + LnkEliminar.Visible = True + End If + + If UsuarioActual.CveUsuario = 100 Then + ImprimirIEPDF(ObjIE.CveTipoTransaccion) + End If + 'FALTA AFECTAR POLIZA NEGATIVA + 'If UsuarioActual.TienePermisoProceso(136) Then LnkEliminar.Visible = True + End Select + + 'Mostramos seccion cargar comprobante si no tiene estatus cancelado + If ObjIE.CveEstatusIE <> 2 Then + DivCargaComprobante.Visible = True + If ObjIE.Comprobante <> "" Then + TdNotaComprobante.Visible = True + End If + End If + + If ObjIE.Comprobante <> "" Then + HplComprobante.Visible = True + HplComprobante.NavigateUrl = String.Format("/Empresas/{0}/IE/{1}", UsuarioActual.CveEmpresa, ObjIE.Comprobante) + End If + + If CveIEDeposito > 0 Then + Dim SbMensaje As New StringBuilder() + Dim StrEncript As String = Encripta($"OP=DC&CveIE={CveIE}&CuentaCaja={CuentaDepositoPadre}&CuentaDepo={Cuenta}") + HplListaProveedores.NavigateUrl = $"/Compras/PopUpVerFactura.aspx?P={StrEncript}" + + Else + HplListaProveedores.NavigateUrl = String.Format("/Bancos/Reportes.aspx?Opcion=ImprimeMov&CveIE={0}", ObjIE.CveIE) + End If + If CveIEDeposito2 > 0 Then + divDepositado.Visible = True + HplDepositado.NavigateUrl = $"/Bancos/IE.aspx?CveIE={CveIEDeposito2}" + End If + + + CargaEventoBitacora() + CargaGvBitacora() + 'Carga Cuenta Deposito o activa para seleccionar una + If ObjIE.CuentaDepositado <> "" Then + TrCuentaDepositado.Visible = True + LitDepositado.Text = ObjIE.CuentaDepositado + Else + + If DdlTipoTransaccion.SelectedValue = "9" Then + Dim Dep As New ClsGenerales + If Dep.GetCuentasDepositos(CveProveedor:=ObjIE.CveProveedor) Then + DdlCuentaDeposito.DataSource = Dep.DtResultados + If Dep.DtResultados.Rows.Count > 0 Then + trCuentaDeposito.Visible = True + DdlCuentaDeposito.Items.Insert(0, New ListItem("Seleccione una cuenta", "-1")) + 'ElseIf Dep.DtResultados.Rows.Count = 1 Then + ' TrCuentaDepositado.Visible = True + ' LitTextoDepositado.Text = "Cuenta Depósito" + ' LitDepositado.Text = Dep.DtResultados.Rows(0)("CuentaDeposito").ToString + 'End If + End If + End If + Dep.Dispose() + DdlCuentaDeposito.DataBind() + UpCuentaDeposito.Update() + End If + + End If + + LnkComplementoPago.Visible = True + + + + If ObjIE.CveEstatusIE = 1 AndAlso ObjIE.CveIECancelado > 0 Then + 'cuando es cheque devuelto + TabCancelacion.Visible = True + LbUsuarioCancelacion.Text = ObjIE.UsuarioCancelacion + LbFechaCancelacion.Text = If(ObjIE.FechaCancelacion.ToShortDateString = "01/01/0001", "", ObjIE.FechaCancelacion.ToShortDateString) + LbFechaIngCancelacion.Text = "" ' If(ObjIE.FechaIngCancelacion.ToShortDateString = "01/01/0001", "", ObjIE.FechaIngCancelacion.ToShortDateString) + + TrIECancelacion.Visible = True + LbMovimientoCancelado.Text = "Movimiento:" + HLIECancelacion.NavigateUrl = String.Format("/Bancos/IE.aspx?CveIE={0}", ObjIE.CveIECancelado) + HLIECancelacion.Text = ObjIE.FolioIECancelado + LnkCancelar.Visible = False + + End If + + + 'DATOS DE CANCELACION + If ObjIE.CveEstatusIE = 2 Then + TabCancelacion.Visible = True + LbUsuarioCancelacion.Text = ObjIE.UsuarioCancelacion + LbFechaCancelacion.Text = ObjIE.FechaCancelacion.ToShortDateString + LbFechaIngCancelacion.Text = If(ObjIE.FechaIngCancelacion.ToShortDateString = "01/01/0001", "", ObjIE.FechaIngCancelacion.ToShortDateString) + + 'MOVIMIENTO CANCELACION + If ObjIE.CveIECancelacion > 0 Then + TrIECancelacion.Visible = True + LbMovimientoCancelado.Text = "Movimiento de Cancelación:" + HLIECancelacion.NavigateUrl = String.Format("/Bancos/IE.aspx?CveIE={0}", ObjIE.CveIECancelacion) + HLIECancelacion.Text = ObjIE.FolioIECancelacion + End If + + 'MOVIMIENTO CANCELADO + If ObjIE.CveIECancelado > 0 Then + TrIECancelacion.Visible = True + LbMovimientoCancelado.Text = "Movimiento Cancelado:" + HLIECancelacion.NavigateUrl = String.Format("/Bancos/IE.aspx?CveIE={0}", ObjIE.CveIECancelado) + HLIECancelacion.Text = ObjIE.FolioIECancelado + End If + + 'Esconde datos que no tenemos + If ObjIE.UsuarioCancelacion = "" Then TrUsuarioCancelacion.Visible = False + If ObjIE.FechaCancelacion.ToShortDateString = "01/01/0001" Then TrFechaCancelacion.Visible = False + If ObjIE.FechaIngCancelacion.ToShortDateString = "01/01/0001" Then TrFechaIngCancelacion.Visible = False + + End If + UpCancelacion.Update() + + 'OTROS DATOS - DATOS COMPLEMENTO SUSTITUCION + Dim CveIESustitucion As Integer = ObjIE.DtResultados(0)("CveIESustitucion").ToString.ToEntero + If CveIESustitucion > 0 Then + TRComplementoSustitucion.Visible = True + + If ObjIE.GetBancosIE(CveIESustitucion, UsuarioActual.CveEmpresa) And ObjIE.DtResultados.Rows.Count > 0 Then + ARefIESustitucion.HRef = String.Format("/Bancos/IE.aspx?CveIE={0}", CveIESustitucion) + ARefIESustitucion.InnerText = ObjIE.Folio + End If + + End If + + + 'DETALLES - MOVIMIENTOS + If ObjIE.GetBancosIEMovimientos(CveIE, UsuarioActual.CveEmpresa) Then + GvM.DataSource = ObjIE.DtResultados + + If UsuarioActual.TienePermisoProceso(277) AndAlso Not TabCancelacion.Visible Then + GvM.Columns(8).Visible = True + End If + + If ObjIE.DtResultados.FiltraParametros("TCPago > 1").Rows.Count.ToEntero() > 0 Then + GvM.Columns(7).Visible = True + End If + + If ObjIE.DtResultados.FiltraParametros("CveMonedaIE <> CveMoneda").Rows.Count.ToEntero > 0 Then + GvM.Columns(5).Visible = True + GvM.Columns(6).Visible = True + End If + + GvM.DataBind() + + End If + + 'Movimientos Relacionados Padre + If ObjIE.GetBancosIEMovimientosPadre(CveIE, UsuarioActual.CveEmpresa) Then + If ObjIE.DtResultados.FiltraParametros("TCPago > 1").Rows.Count.ToEntero() > 0 Then + GvRP.Columns(5).Visible = True + End If + + GvRP.DataSource = ObjIE.DtResultados + GvRP.DataBind() + End If + + 'Movimientos Relacionados Hijo + If ObjIE.GetBancosIEMovimientosHijo(CveIE, UsuarioActual.CveEmpresa) Then + DtGvRH = ObjIE.DtResultados + CargaGvRH() + If UsuarioActual.TienePermisoProceso(80) Then GvRH.Columns(5).Visible = True + End If + Else - Alert("El Documento solicitado no existe, por favor revise su búsqueda.", TipoMensaje.MsgAdvertencia) + Alert("El Documento solicitado no existe, por favor revise su búsqueda.", TipoMensaje.MsgAdvertencia) BtnGuardar.Enabled = False - End If - - + End If + + If Not ChkConciliado.Checked Then If (Not VerificaComplementos(True)) And UsuarioActual.TienePermisoProceso(99) And ObjIE.CveEstatusIE <> 2 Then BtnEditar.Visible = True + PermisoComplementoVigente = True + Else + BtnEditar.Visible = True End If UpGuardar.Update() @@ -1097,2413 +1112,2413 @@ Partial Class Bancos_IE End If - End If - - 'If CveIE > 0 Then - ' DdlProveedores.Visible = False - ' LblBeneficiario.Visible = True - ' LblBeneficiario.Text = GlobalDTCompProveedores(UsuarioActual.CveEmpresa).FiltraParametros($"CveProveedor = {CveProveedor}")(0)("RazonSocial").ToString - 'End If - - - - - RecargaGlobalCuentasBancarias() - ObjIE.Dispose() - ObjIE2.Dispose() - UPPP.Update() - End Sub - Private Sub CargaGvRH() - GvRH.DataSource = DtGvRH - GvRH.DataBind() - UpGvRH.Update() - End Sub - -#Region " CARGA PROVEEDOR " - Protected Sub DdlProveedores_selectedindexchange(sender As Object, e As EventArgs) - HdnCveProveedor.Value = DdlProveedores.SelectedValue - HdnCvePersonal.Value = "-1" - ViewState("CveProveedor") = HdnCveProveedor.Value.ToEntero - ViewState("CvePersonal") = "-1" - ViewState("CveCliente") = "-1" - - CargaProveedor(HdnCveProveedor.Value.ToEntero, "-1") - End Sub - - Private Sub CargaProveedor(ByVal CveProveedor As Integer, RFC As String) - Dim ObjProveedor As New ClsCompProveedores() - - If ObjProveedor.GetProveedores(ClsCompProveedores.TipoConsulta.ParaUsoEnEmpresa, CveProveedor, "-1", "-1", "-1", "-1", RFC, "-1", "-1", -1, UsuarioActual.CveEmpresa) Then - If ObjProveedor.DtResultados.Rows.Count > 0 Then - TxtNotificarA.Text = ObjProveedor.NotificarA.Trim - TxtParaMail.Text = ObjProveedor.CorreoCobranza - TxtCC.Text = ObjProveedor.NotificarA.Trim - RazonSocial = ObjProveedor.DtResultados(0)("RazonSocial").ToString - HdnProvPorIVA.Value = ObjProveedor.IVA.ToString - HdnProvPorRetIVA.Value = ObjProveedor.RetIVA.ToString - HdnProvPorRetISR.Value = ObjProveedor.RetISR.ToString - Dim EsDevolucion As Boolean = False - - If Request("Opcion") IsNot Nothing AndAlso Request("Opcion") = "DevDinC" Then - EsDevolucion = True - RBL.SelectedValue = "P" - RBL.Enabled = False - DdlProveedores.Visible = True - DdlProveedores.Enabled = True - - IDCtaBeneficiarioComplementaria = ObjProveedor.IdCtaContProveedoresComplementaria - - DdlProveedores.SelectedText = ObjProveedor.NombreComercial - DdlProveedores.SelectedValue = ObjProveedor.CveProveedor.ToString - - End If - - Select Case RBL.SelectedValue - Case "P" - IDCtaBeneficiario = ObjProveedor.IdCtaContAnticipos : CveCuentaBeneficiario = ObjProveedor.CveCuentaAnticipos - IdCtaAnticipoExtranjera = ObjProveedor.IdCtaContAnticiposExtranjera : IdCtaAnticipoComplementaria = ObjProveedor.IdCtaContAnticiposComplementaria - If EsDevolucion Then - IDCtaBeneficiario = ObjProveedor.IdCtaContProveedores : CveCuentaBeneficiario = ObjProveedor.CveCuentaProveedores - End If - Case "DD" : IDCtaBeneficiario = ObjProveedor.IdCtaContDeudor : CveCuentaBeneficiario = ObjProveedor.CveCuentaDeudor - Case "AC" : IDCtaBeneficiario = ObjProveedor.IdCtaContAcreedor : CveCuentaBeneficiario = ObjProveedor.CveCuentaAcreedor - Case "DP" : IDCtaBeneficiario = ObjProveedor.IdCtaContDocsXPagar : CveCuentaBeneficiario = ObjProveedor.CveCuentaDocsXPagar - Case Else - IDCtaBeneficiario = ObjProveedor.IdCtaContProveedores - CveCuentaBeneficiario = ObjProveedor.CveCuentaProveedores - End Select - - - If Request("Opcion") IsNot Nothing AndAlso Request("Opcion").ToString.Contiene("EGSCREDITO") Then - - IDCtaBeneficiario = ObjProveedor.IdCtaContAcreedor - CveCuentaBeneficiario = ObjProveedor.CveCuentaAcreedor - - If Not IDCtaBeneficiario > 0 Then - Alert("No se pudo cargar IDCtaBeneficiario", TipoMensaje.MsgAdvertencia) - End If - - End If - - - If UsuarioActual.Empresa.UsaAC OrElse UsuarioActual.Empresa.Funcionalidad(200) = "1" Then - If IDCtaBeneficiario = 0 And UsuarioActual.Empresa.UsaContabilidad Then - Alert("El Beneficiario no tiene cuenta contable vinculada. Por favor rectifique y vuelva a intentar.", TipoMensaje.MsgAdvertencia) - BtnGuardar.Enabled = False - ElseIf CveCuentaBeneficiario = 0 And UsuarioActual.Empresa.UsaContabilidadSIG Then - Alert("El Beneficiario no tiene cuenta contable vinculada en SIG. Por favor rectifique y vuelva a intentar.", TipoMensaje.MsgAdvertencia) - BtnGuardar.Enabled = False - Else - BtnGuardar.Enabled = True - End If - UpGuardar.Update() - End If - - CargaCuentasDepositos() - Else - Alert("El Proveedor solicitado no existe, por favor intente de nuevo.", TipoMensaje.MsgAdvertencia) - End If - End If - ObjProveedor.Dispose() - End Sub -#End Region - -#Region " CARGA CLIENTE " - Protected Sub DdlCliente_selectedindexchange(sender As Object, e As EventArgs) - HdnCveCliente.Value = DdlCliente.SelectedValue - HdnCveProveedor.Value = "-1" - ViewState("CveCliente") = HdnCveCliente.Value.ToEntero - ViewState("CveProveedor") = -1 - ViewState("CvePersonal") = -1 - CargaCliente(HdnCveCliente.Value.ToEntero) - End Sub - - Private Sub CargaCliente(ByVal CveCliente As Integer) - Dim ObjCliente As New ClsClientes - - If ObjCliente.GetClientes(CveCliente, "-1", "-1", "-1", "-1", "-1", "-1", -1, UsuarioActual.CveEmpresa) Then - If ObjCliente.DtResultados.Rows.Count > 0 Then - - HdnProvPorIVA.Value = "0" 'ObjProveedor.IVA.ToString - HdnProvPorRetIVA.Value = "0" 'ObjProveedor.RetIVA.ToString - HdnProvPorRetISR.Value = "0" 'ObjProveedor.RetISR.ToString - IDCtaBeneficiario = ObjCliente.IdCtaContAnticipos - IDCtaBeneficiarioComplementaria = ObjCliente.IdCtaContCompAnticipos - CveCuentaBeneficiario = ObjCliente.CveCuentaAnticipos - CorreoCobranzaCliente = ObjCliente.CobranzaCorreo - - If Request("Opcion") IsNot Nothing AndAlso Request("Opcion") = "DevDinV" Then - IDCtaBeneficiario = ObjCliente.IdCtaContClientes - IDCtaBeneficiarioComplementaria = ObjCliente.IdCtaContCompClientes - DdlCliente.SelectedText = ObjCliente.NombreComercial - DdlCliente.SelectedValue = ObjCliente.CveCliente.ToString - End If - - If UsuarioActual.Empresa.UsaAC OrElse UsuarioActual.Empresa.Funcionalidad(200) = "1" Then - If IDCtaBeneficiario = 0 AndAlso UsuarioActual.Empresa.UsaContabilidad Then - Alert("El Beneficiario no tiene cuenta contable vinculada. Por favor rectifique y vuelva a intentar.", TipoMensaje.MsgAdvertencia) - BtnGuardar.Enabled = False - ElseIf CveCuentaBeneficiario = 0 AndAlso UsuarioActual.Empresa.UsaContabilidadSIG Then - Alert("El Beneficiario no tiene cuenta contable vinculada en SIG. Por favor rectifique y vuelva a intentar.", TipoMensaje.MsgAdvertencia) - BtnGuardar.Enabled = False - Else - BtnGuardar.Enabled = True - End If - UpGuardar.Update() - End If - - CargaCuentasDepositos() - - Else - Alert("El Cliente solicitado no existe, por favor intente de nuevo.", TipoMensaje.MsgAdvertencia) - End If - End If - ObjCliente.Dispose() - End Sub -#End Region - -#Region " CARGA PERSONAL " - Protected Sub CargaDDLPersonal() - Dim ObjPersonal As New ClsRH - If ObjPersonal.GetPersonal(-1, UsuarioActual.CveEmpresa) Then - If ObjPersonal.DtResultados.Rows.Count > 0 Then - DdlPersonal.DataSource = ObjPersonal.DtResultados - DdlPersonal.DataBind() - DdlPersonal.Items.Insert(0, New ListItem("Seleccione Personal", "-1")) - End If - End If - ObjPersonal.Dispose() - End Sub - - Protected Sub DdlPersonal_SelectedIndexChanged(sender As Object, e As EventArgs) - HdnCveProveedor.Value = "-1" - HdnCvePersonal.Value = DdlPersonal.SelectedValue - - ViewState("CveProveedor") = "-1" - ViewState("CvePersonal") = HdnCvePersonal.Value - ViewState("CveCliente") = "-1" - - PersonalIndexChange(HdnCvePersonal.Value.ToEntero) - End Sub - - Private Sub PersonalIndexChange(ByVal CvePersonal As Integer) - Dim ObjPersonal As New ClsRH - - If ObjPersonal.GetPersonal(CvePersonal, UsuarioActual.CveEmpresa) Then - If ObjPersonal.DtResultados.Rows.Count > 0 Then - DdlPersonal.SelectedValue = CvePersonal.ToString - - HdnProvPorIVA.Value = "0" 'ObjProveedor.IVA.ToString - HdnProvPorRetIVA.Value = "0" 'ObjProveedor.RetIVA.ToString - HdnProvPorRetISR.Value = "0" 'ObjProveedor.RetISR.ToString - IDCtaBeneficiario = ObjPersonal.IdCtaContPersonal - CveCuentaBeneficiario = ObjPersonal.CveCuentaPersonal - - If UsuarioActual.Empresa.UsaAC OrElse UsuarioActual.Empresa.Funcionalidad(200) = "1" Then - If IDCtaBeneficiario = 0 AndAlso UsuarioActual.Empresa.UsaContabilidad Then - Alert("El Beneficiario no tiene cuenta contable vinculada. Por favor rectifique y vuelva a intentar.", TipoMensaje.MsgAdvertencia) - BtnGuardar.Enabled = False - ElseIf CveCuentaBeneficiario = 0 AndAlso UsuarioActual.Empresa.UsaContabilidadSIG Then - Alert("El Beneficiario no tiene cuenta contable vinculada en SIG. Por favor rectifique y vuelva a intentar.", TipoMensaje.MsgAdvertencia) - BtnGuardar.Enabled = False - Else - BtnGuardar.Enabled = True - End If - UpGuardar.Update() - End If - - CargaCuentasDepositos() - Else - Alert("El Personal solicitado no existe, por favor intente de nuevo.", TipoMensaje.MsgAdvertencia) - End If - End If - ObjPersonal.Dispose() - End Sub -#End Region - -#Region " CARGA CUENTAS DEPOSITOS " - Protected Sub DdlTipoTransaccion_SelectedIndexChanged(sender As Object, e As EventArgs) Handles DdlTipoTransaccion.SelectedIndexChanged - Dim valor As Integer = DirectCast(sender, DropDownList).SelectedValue.ToEntero - Dim dr As DataRow = GlobalDTTipoTransacciones.FiltroPrimero(String.Format("CveTipoTransaccion = {0}", DdlTipoTransaccion.SelectedValue)) 'Egs o Ing - - If dr IsNot Nothing Then - HdnTipoTransaccion.Value = dr("Tipo").ToString - End If - - Select Case valor - Case 1 - LblPagueseA.Text = "Páguese a" - Case 2 - LblPagueseA.Text = "Beneficiario" - End Select - - 'RecargaCuentas - CargaCuenta(CveMoneda) - RecargaCuentasDepositos() - - UpDatos.Update() - BtnGuardar.Enabled = True - End Sub - - Protected Sub DdlCuenta_SelectedIndexChanged(sender As Object, e As EventArgs) Handles DdlCuenta.SelectedIndexChanged - 'si solo es de egreso el movimiento debe de generar el siguiente folio. - - If HdnTipoTransaccion.Value = "Egs" AndAlso UsuarioActual.Empresa.Funcionalidad(505) <> "1" Or Opcion = "DevDinC" Then - - Dim Folio As Long - Dim Banco As New ClsBancos - Folio = Banco.GetNextFolio(DdlCuenta.SelectedValue.ToEntero, DdlTipoTransaccion.SelectedValue.ToEntero) - Banco.Dispose() - TxtFolio.Text = Folio.ToString - - If Opcion = "DevDinC" Then - TxtFolio.Enabled = False - End If - Else - TxtFolio.Text = "" - End If - - Dim dr As DataRow = GlobalDTBancosCuentas(UsuarioActual.CveUsuario).FiltroPrimero(String.Format("CveCuenta={0}", DdlCuenta.SelectedValue)) - If dr IsNot Nothing Then - - - DdlMoneda.SelectedValue = dr("CveMoneda").ToString - IDCtaContable = dr("IdCtaContable").ToString.ToEntero - IDCtaContableComplementaria = dr("IDCtaContableComplementaria").ToString.ToEntero - CveCuentaConta = dr("IdCtaContableSIG").ToString.ToEntero - CambiaTipoMoneda() - - If Opcion IsNot Nothing AndAlso Opcion.Contiene("EGSSINFACT") Then - If dr("CveTipoCuenta").ToString.ToEntero = 1 Then - Dim ObjMovtos As New ClsMovimientos - If DdlCuenta.SelectedValue.ToEntero > 0 Then - ObjMovtos.GetCajaChicaDetalle(DdlCuenta.SelectedValue.ToEntero, UsuarioActual.CveEmpresa) - - If ObjMovtos.DtResultados.FiltraParametros("CveIE > 0", "FechaDocumento, FolioFecha").Rows.Count > 0 Then - DDlCheques.DataSource = ObjMovtos.DtResultados.FiltraParametros("CveIE > 0", "FechaDocumento, FolioFecha") - DDlCheques.DataBind() - DDlCheques.Items.Insert(0, New ListItem("-", "-1")) - DivCheques.Visible = True - End If - End If - ObjMovtos.Dispose() - Else - DivCheques.Visible = False - End If - - End If - - If dr("UsaTarjeta").ToString = "True" Then - CargaGridTarjetas() - Else - DivTarjeta.Visible = False - End If - - If Not IDCtaContable > 0 AndAlso UsuarioActual.Empresa.UsaContabilidad Then - Alert("La Cuenta Bancaria no tiene asignada una cuenta contable", TipoMensaje.MsgAdvertencia) - End If - - If Not CveCuentaConta > 0 AndAlso UsuarioActual.Empresa.UsaContabilidadSIG Then - Alert("La Cuenta Bancaria no tiene asignada una cuenta contable en SIG", TipoMensaje.MsgAdvertencia) - End If - End If - - If trIEDevolucion.Visible And RBL.SelectedValue <> "C" Then - CargaIEDevoluciones() - End If - End Sub -#End Region - -#Region " CARGA CREDITOS - DETALLE " - Protected Sub DdlFinanciera_SelectedIndexChanged(sender As Object, e As EventArgs) Handles DdlFinanciera.SelectedIndexChanged - CargaCreditos(DdlFinanciera.SelectedValue.ToEntero) - - End Sub - - Private Sub CargaCreditos(CveProveedor As Integer) - If CveProveedor < 1 Then Exit Sub - - Dim Cred As New ClsBancos - Dim dt As DataTable = Nothing - - If Cred.GetCreditos(-1, -1, -1, CveProveedor, -1, UsuarioActual.CveEmpresa) Then - CveProveedor = Cred.CveProveedor - DdlCredito.DataSource = Cred.DtResultados.FiltraParametros(String.Format("CveProveedor = {0} AND EstatusNum in (1,2,101,102)", DdlFinanciera.SelectedValue), DistinctColumns:={"CveCredito", "ReferenciaCredito"}, Orderby:="ReferenciaCredito") - DdlCredito.DataBind() - DdlCredito.Items.Insert(0, New ListItem("Seleccione", "-1")) - - - End If - - Cred.Dispose() - - DdlCreditoDetalle.Items.Clear() - DdlCreditoDetalle.DataSource = Nothing - DdlCreditoDetalle.DataBind() - - - - End Sub - - Protected Sub DdlCredito_SelectedIndexChanged(sender As Object, e As EventArgs) Handles DdlCredito.SelectedIndexChanged - CargaCreditosDetalle() - End Sub - - Protected Sub DdlCreditoDetalle_SelectedIndexChanged(sender As Object, e As EventArgs) - CargaCreditosDetalle(DdlCreditoDetalle.SelectedValue.ToEntero) - End Sub - - Private Sub CargaCreditosDetalle(Optional CveCreditoDetalle As Integer = -1) - Dim Cred As New ClsBancos - Dim dt As DataTable = Nothing - Dim dt2 As DataTable = Nothing - - If DdlCredito.SelectedValue.ToEntero > 0 AndAlso Cred.GetCreditos(DdlCredito.SelectedValue.ToEntero, -1, -1, -1, -1, UsuarioActual.CveEmpresa) Then - CveProveedor = Cred.CveProveedor - HdnCveTipoCredito.Value = Cred.CveTipoCredito.ToString - - If Cred.GetCreditosDetalle(DdlCredito.SelectedValue.ToEntero, -1) Then - dt = Cred.DtResultados.FiltraParametros("Estatus IN (1,101,102)") - - Dim Importe As Decimal = 0 - If CveCreditoDetalle > 0 Then - Dim drt As DataRow = Cred.DtResultados.FiltroPrimero(String.Format("CveCreditoDetalle = {0}", CveCreditoDetalle)) - If drt IsNot Nothing Then - 'verifico si es credito está activo - If Not drt("Estatus").ToString.Contiene("1", "101", "102") Then - Alert("La Mensualidad no está vigente para pago", TipoMensaje.MsgError) - End If - Importe = dt.FiltroPrimeroValor("Mensualidad", String.Format("CveCreditoDetalle = {0}", CveCreditoDetalle)).ToDecimal - End If - - - End If - - - TxtImporte.Text = Importe.ToString - HdnImporteCredito.Value = Importe.ToString - RegistraScript(String.Format("$get('TxtImporte').value = '{0}';", Importe.FormatoNumero)) - TxtImporte.Attributes.Remove("onkeyup") - TxtImporte.Attributes.Add("onkeyup", String.Format("ValidaCantidad({0},{1});", TxtImporte.ClientID, Importe)) - - End If - - End If - - Cred.Dispose() - - DdlCreditoDetalle.Items.Clear() - - If dt IsNot Nothing Then - DdlCreditoDetalle.DataSource = dt - End If - DdlCreditoDetalle.DataBind() - - If CveCreditoDetalle = -1 Then - DdlCreditoDetalle.Items.Insert(0, New ListItem("Seleccione", "-1")) - DdlCreditoDetalle.SelectedValue = "-1" - Else - DdlCreditoDetalle.SelectedValueExist(CveCreditoDetalle.ToString) - Try - TxtObservaciones.Text = String.Format("{0} {1} {2}", DdlFinanciera.SelectedItem.Text, DdlCredito.SelectedItem.Text, DdlCreditoDetalle.SelectedItem.Text) - Catch ex As Exception - - End Try - - End If - - - UpDatos.Update() - End Sub -#End Region -#End Region - -#Region "PESTAÑA INFORMACION GENERAL DE BANCO IE" - - Private Sub CargaCuenta(Optional pCveMoneda As Integer = -1) - DdlCuenta.Items.Clear() - Dim dt As DataTable - - If UsuarioActual.Empresa.Funcionalidad(127) = "1" Then - dt = GlobalDTBancosCuentas(UsuarioActual.CveUsuario) - Else - dt = GlobalDTBancosCuentas(UsuarioActual.CveUsuario).FiltraParametros("CveTipoCuenta <> 1") ' quito las cajas chicas - End If - - - If pCveMoneda > 0 Then - dt = dt.FiltraParametros(String.Format("CveMoneda = {0}", pCveMoneda)) - End If - - 'cuando es layout - If DdlTipoTransaccion.SelectedValue.ToEntero = 9 Then - dt = dt.FiltraParametros("UsaLayout = 1") - End If - - DdlCuenta.DataSource = dt - DdlCuenta.DataBind() - DdlCuenta.Items.Insert(0, New ListItem("Seleccione", "-1")) - End Sub - - Private Sub CargaTipoTransaccion() - Dim dt As DataTable - If Request("Opcion") IsNot Nothing AndAlso Request("Opcion").ToString.Contiene("EGSSINFACT", "EGSCREDITO") Then - dt = GlobalDTTipoTransacciones.FiltraParametros("Tipo='Egs'") - LtlTitulo.Text = "Egreso Por Comprobar" - - RBL.Items.Remove(RBL.Items.FindByValue("C")) - ElseIf Request("Opcion") IsNot Nothing AndAlso Request("Opcion").ToString = "DEV" Then - dt = GlobalDTTipoTransacciones.FiltraParametros("Tipo='Ing'") - LtlTitulo.Text = If(Request("Opcion").ToString = "INGPC", "Ingreso por comprobar", "Devolución") - LblPagueseA.Text = "Recibido de:" - RBL.SelectedValue = "C" - Anexo.Visible = True - ElseIf Request("Opcion") IsNot Nothing AndAlso Request("Opcion").ToString = "INGPC" Then - dt = GlobalDTTipoTransacciones.FiltraParametros("Tipo='Ing'") - LtlTitulo.Text = If(Request("Opcion").ToString = "INGPC", "Ingreso por comprobar", "Devolución") - LblPagueseA.Text = "Recibido de:" - RBL.SelectedValue = "C" - Anexo.Visible = True - - RBL.Items.Remove(RBL.Items.FindByValue("P")) - RBL.Items.Remove(RBL.Items.FindByValue("FE")) - - ElseIf Request("Opcion") IsNot Nothing AndAlso Request("Opcion").ToString = "ANTC" Then - dt = GlobalDTTipoTransacciones.FiltraParametros("Tipo='Ing'") - LtlTitulo.Text = "Anticipo de Cliente" - LblPagueseA.Text = "Recibido de:" - Anexo.Visible = True - RBL.Items.Remove(RBL.Items.FindByValue("P")) : RBL.Items.Remove(RBL.Items.FindByValue("FE")) : RBL.Items.Remove(RBL.Items.FindByValue("DD")) : RBL.Items.Remove(RBL.Items.FindByValue("AC")) : RBL.Items.Remove(RBL.Items.FindByValue("DP")) - ElseIf Opcion = "DevDinV" Then ' DEVOLUCION DINERO NC-VENTAS - dt = GlobalDTTipoTransacciones.FiltraParametros("Tipo='Egs'") - LtlTitulo.Text = "Devolución dinero" - RBL.SelectedValue = "C" - RBL.Enabled = False - Else - dt = GlobalDTTipoTransacciones - End If - - - - If Opcion = "DevDinC" AndAlso Request("P") IsNot Nothing AndAlso Request("P").Length > 0 Then - DdlTipoTransaccion.DataSource = dt.FiltraParametros("Tipo = 'Ing' ") - Else - DdlTipoTransaccion.DataSource = dt - End If - - - DdlTipoTransaccion.DataBind() - DdlTipoTransaccion.Items.Insert(0, New ListItem("Seleccione Tipo Movimiento", "-1")) - RBL_SelectedIndexChanged(RBL, Nothing) - - End Sub - - Private Sub CargaMoneda() - DdlMoneda.DataSource = GlobalDTMonedas - DdlMoneda.DataBind() - End Sub -#End Region - -#Region "VIATICOS" - - Private Function TimbrarNomina12(CvePersonal As Integer) As String - - Dim Retorno As String = "" - UsuarioActual.Empresa.CvePAC = 2 - Dim sw As New Diagnostics.Stopwatch - sw.Start() - Select Case UsuarioActual.Empresa.CvePAC - Case 1 - 'Retorno = TimbrarBIInformNomina12(CveNomina, CvePersonal, CvePeriodo) - Case 2, 4 - Dim cfdi As CFDITimbre = PreTimbrar(CvePersonal) - If cfdi Is Nothing Then - sw.Stop() - Return "No tiene asignado un folio de viaticos" - End If - If cfdi IsNot Nothing AndAlso cfdi.Mensaje = "" Then - Dim ObjTimbrado As New Timbrado - Dim ObjFactura As New Modelos.Factura - ObjFactura.TipoDocto = "Viaticos" - ObjFactura.Folio = cfdi.Comprobante.Folio.ToEntero - ObjFactura.Serie = cfdi.Comprobante.Serie - ObjFactura.Timbre = cfdi - If Not ObjTimbrado.TimbrarFactura(UsuarioActual, ObjFactura) Then - Retorno = ObjTimbrado.MensajeErrorCFDI - End If - - 'Retorno = TimbrarFacturaRealVirtual(cfdi, UsuarioActual) - If Retorno <> "" Then - Retorno = $"{Retorno} - {cfdi.Receptor.Nombre}" - Else - 'Genero la addenda Ford - ' GeneraPDFNuevo(String.Format("{0}XML\Nomina\{1}.xml", Ruta, NominaFolio), CvePersonal, CvePeriodo) - End If - Else - Retorno = $"No se pudo generar el pretimbre:
{cfdi.Mensaje}" - End If - End Select - sw.Stop() - GuardaLogTimbrado(sw.ElapsedMilliseconds.ToString, UsuarioActual.Empresa.CvePAC, "Nomina") - - Return Retorno - - End Function - - - - - Private Function PreTimbrar(CvePersonal As Integer) As CFDITimbre - Dim cfdi As New CFDITimbre - Dim ObjFolio As New ClsGralFolios - If ObjFolio.GetFolios("VIA", UsuarioActual.CveEmpresa) Then - If ObjFolio.DtResultados.Rows.Count > 0 Then - Folio = ObjFolio.DtResultados.Rows(0)("FActual").ToString - Else - ObjFolio.Dispose() - Return Nothing - End If - End If - ObjFolio.Dispose() - - Dim objPersonal As New ClsRH - objPersonal.GetPersonal(CvePersonal, UsuarioActual.CveEmpresa) - - Dim AntiguedadSemanas As Integer = DateDiff(DateInterval.Weekday, objPersonal.FechaIngreso, Now).ToEntero - - cfdi.Nomina = New CFDINomina - cfdi.Nomina.Version = "1.2" - cfdi.Nomina.TipoNomina = "E" - cfdi.Nomina.FechaPago = TxtFechaDocumento.Text.ToDate - cfdi.Nomina.FechaInicio = TxtFechaDocumento.Text - cfdi.Nomina.FechaFin = TxtFechaDocumento.Text - cfdi.Nomina.NumDiasPagados = 1 - cfdi.Emisor.Nombre = UsuarioActual.Empresa.Empresa - cfdi.Emisor.RFC = UsuarioActual.Empresa.RFC - cfdi.Emisor.RegistroPatronal = UsuarioActual.Empresa.RegistroPatronal - cfdi.Emisor.RegimenFiscal = UsuarioActual.Empresa.CodigoRegimenFiscal - - 'aplica persona fisica debe de tener CURP - If cfdi.Emisor.RegimenFiscal.Contiene("605", "606", "608", "611", "612", "614", "616", "621", "622", "629", "630", "615") Then - cfdi.Emisor.CURP = UsuarioActual.Empresa.CURP - End If - - - cfdi.Receptor.UsoCFDI = "P01" - cfdi.Receptor.RFC = objPersonal.RFC - cfdi.Receptor.Nombre = objPersonal.NombreCompleto - - Dim ObjOtrosPagos As New List(Of CFDINominaOtrosPagos) - ObjOtrosPagos.Add(New CFDINominaOtrosPagos With {.TipoOtroPago = "003", - .Clave = "003", - .Concepto = "Viáticos (entregados al trabajador).", - .Importe = TxtImporte.Text.ToString.ToDouble - } - ) - If ObjOtrosPagos IsNot Nothing AndAlso ObjOtrosPagos.Count > 0 Then cfdi.Nomina.OtrosPagos = ObjOtrosPagos - - cfdi.Comprobante.Version = "3.3" - cfdi.Comprobante.Serie = "VIA" - cfdi.Comprobante.Folio = Folio - cfdi.Comprobante.Fecha = Now - cfdi.Comprobante.Subtotal = TxtImporte.Text.ToDecimal - cfdi.Comprobante.Descuentos = 0 - cfdi.Comprobante.Total = TxtImporte.Text.ToDecimal - cfdi.Comprobante.MotivoDescuento = "" - cfdi.Comprobante.Moneda = "MXN" - cfdi.Comprobante.TipoComprobante = "N" - cfdi.Comprobante.TipoDocto = "Egs" - cfdi.Comprobante.MetodoPago = "PUE" - cfdi.Comprobante.CondicionesdePago = "" - cfdi.Comprobante.FormadePago = "99" - cfdi.Comprobante.LugarExpedicion = UsuarioActual.Empresa.CP.ToString - cfdi.Comprobante.NumCuentaPago = "" - - - cfdi.Nomina.Receptor.CURP = objPersonal.CURP - cfdi.Nomina.Receptor.NSS = objPersonal.NumeroSS - cfdi.Nomina.Receptor.FechaInicioContrato = objPersonal.FechaInicioContrato.ToShortDateString - cfdi.Nomina.Receptor.Antiguedad = $"P{AntiguedadSemanas}W" - cfdi.Nomina.Receptor.TipoContrato = objPersonal.CodigoTipoContrato - cfdi.Nomina.Receptor.CodigoTipoJornada = objPersonal.ClaveTipoJornada - cfdi.Nomina.Receptor.CodigoRegimenContratacion = If(objPersonal.CveRegimenContratacion = "", "99", objPersonal.CveRegimenContratacion) - cfdi.Nomina.Receptor.CodigoEmpleado = objPersonal.Codigo - cfdi.Nomina.Receptor.Departamento = objPersonal.Departamento - cfdi.Nomina.Receptor.Puesto = objPersonal.Puesto - cfdi.Nomina.Receptor.CodigoRiesgoPuesto = If(objPersonal.CveSATRiesgoPuesto.ToString = "0", "99", objPersonal.CveSATRiesgoPuesto.ToString) - cfdi.Nomina.Receptor.TipoPeriodo = objPersonal.TipoPeriodoPago - cfdi.Nomina.Receptor.CodigoBanco = objPersonal.ClaveBanco - cfdi.Nomina.Receptor.NumeroCuenta = objPersonal.BancoNumCuenta - cfdi.Nomina.Receptor.SDI = objPersonal.SDI - cfdi.Nomina.Receptor.SBC = objPersonal.SDI - cfdi.Nomina.Receptor.Sindicalizado = "" - cfdi.Nomina.Receptor.CodigoEntidadFederativa = objPersonal.ClaveEstado - - - cfdi.Conceptos.Add(New CFDIConceptos With {.Cantidad = 1, .ClaveUnidad = "ACT", .ClaveProdServ = "84111505", .Descripcion = "Pago de nómina", .ValorUnitario = cfdi.Comprobante.Subtotal, .Importe = cfdi.Comprobante.Subtotal, .Descuento = cfdi.Nomina.TotalDeducciones.ToDecimal}) - - objPersonal.Dispose() - Return cfdi - End Function - - 'Private Function TimbrarBIInformNomina12(CveNomina As Integer, CvePersonal As Integer, CvePeriodo As Integer) As String - - ' If UsuarioActual.CveEmpresa = 8 Then - ' UsuarioActual.Empresa.FacturaProduccion = True - ' End If - ' 'UsuarioActual.Empresa.FacturaProduccion = False - - ' Dim MsgError As String = String.Empty - - ' Dim CFDi As New ClbNegBICFDv3_2.ClsNegEDI - ' CFDi.ObjCompNomina12 = New ClbNegBICFDv3_2.ClsNegComplementoNomina12() - ' 'CFDi.ObjCompNomina = New ClbNegBICFDv3_2.ClsNegCompNomina - - ' Dim objPersonal As New ClsRH - ' 'Dim objNomina As New ClsNominas - ' objPersonal.GetPersonal(CvePersonal, UsuarioActual.CveEmpresa) - ' 'objNomina.GetNom_Nominas(CveNomina, CvePersonal, CvePeriodo, -1, UsuarioActual.CveEmpresa) - - - ' Dim Total As Decimal = 0 - ' Dim SubTotal As Decimal = 0 - ' Dim Descuentos As Decimal = 0 - ' Dim RetISR As Decimal = 0 - ' Dim TotalExcento As Decimal = 0 - ' Dim TotalGravado As Decimal = 0 - ' Dim TotalPercepciones As Decimal = 0 - ' Dim TotalDeducciones As Decimal = 0 - ' Dim TotalOtrosPagos As Decimal = 0 - - ' Dim Serie As String = "" - ' Dim Folio As String = "" - ' Dim NominaFolio As String = Serie & "-" & Folio - ' Dim RFC As String = objPersonal.RFC.Trim - ' Dim Nombre As String = objPersonal.NombreCompleto.Trim - ' Dim Direccion As String = String.Format("{0} {1} {2}", objPersonal.Calle.Trim, objPersonal.NumExt.Trim, objPersonal.NumInt.Trim).Trim - ' Dim Ciudad As String = objPersonal.Ciudad.Trim - ' Dim Estado As String = objPersonal.Estado.Trim - ' Dim CP As String = objPersonal.CP.Trim - - - - ' 'Dim TipoContrato As String = GlobalDTTiposContrato.FiltraParametros("CveTipoContrato = " + objPersonal.CveTipoContrato.ToString)(0)("TipoContrato").ToString - ' 'Dim TipoPeriodo As String = GlobalDTTipoPeriodo.FiltraParametros("CveTipoPeriodo = " + objPersonal.CveTipoPeriodo.ToString)(0)("TipoPeriodo").ToString - ' Dim AntiguedadSemanas As Integer = DateDiff(DateInterval.Weekday, objPersonal.FechaIngreso, Now).ToEntero - ' Dim FormatoReciboCFDi As String = objPersonal.FormatoReciboCFDi - - ' Dim FechaInicio, FechaFin, FechaPago As Date - ' Dim DiasPagados As Integer = 0 - ' Dim Msg As String = String.Empty - ' Dim DiasIncapacitados As Integer = 0 - ' Dim DrPeriodo As DataRow = Nothing - - ' Dim ObjFolio As New ClsGralFolios - ' If ObjFolio.GetFolios("VIA", UsuarioActual.CveEmpresa) Then - ' If ObjFolio.DtResultados.Rows.Count > 0 Then - ' Folio = ObjFolio.DtResultados.Rows(0)("FActual").ToString - ' End If - ' End If - - - ' 'If objNomina.GetPeriodos(-1, -1, -1, -1, CvePeriodo) Then - ' ' If objNomina.DtResultados.Rows().Count > 0 Then - ' ' DrPeriodo = objNomina.DtResultados.Rows(0) - ' ' End If - ' 'End If - ' 'Dim DrPeriodo As DataRow = GlobalDTNominasPeriodos(-1, CvePeriodo, -1).FiltroPrimero("") - ' If DrPeriodo IsNot Nothing Then - ' FechaInicio = DrPeriodo("FechaInicio").ToString.ToDate - ' FechaFin = DrPeriodo("FechaFin").ToString.ToDate - ' FechaPago = DrPeriodo("FechaPago").ToString.ToDate - ' If objPersonal.GetAsistencias(CvePersonal, -1, -1, -1, -1, -1, FechaInicio, FechaFin, UsuarioActual.CveEmpresa) Then - - ' Dim Asistencias As Integer = objPersonal.DtResultados.SUM("AplicaAsistencia").ToEntero - ' Dim Vacaciones As Integer = objPersonal.DtResultados.SUM("AplicaVacacion").ToEntero - ' DiasIncapacitados = objPersonal.DtResultados.SUM("AplicaIncapacidad").ToEntero - ' DiasPagados = Asistencias - Vacaciones - ' If DiasPagados < 0 Then DiasPagados = 0 - - ' End If - - ' End If - - ' Dim DtPercepciones As Data.DataTable = Nothing - ' Dim DtDeducciones As Data.DataTable = Nothing - ' Dim DtOtrosPagos As Data.DataTable = Nothing - ' 'If objNomina.GetNom_NominasDetalles(CveNomina, CvePersonal, CvePeriodo, "-1") Then - ' ' If objNomina.DtResultados.Rows.Count > 0 Then - ' ' DtPercepciones = objNomina.DtResultados.FiltraParametros("Tipo = 'P' AND EsPadre = 1 ") - ' ' DtDeducciones = objNomina.DtResultados.FiltraParametros("Tipo = 'D' AND EsPadre = 1 ") - ' ' TotalPercepciones = DtPercepciones.SUM("Importe") - ' ' TotalDeducciones = DtDeducciones.SUM("Importe") - ' ' Total = CType((Total + DtPercepciones.SUM("Importe")), Decimal) - ' ' End If - ' 'End If - - ' 'Tipo Nomina O de Ordinaria o E de extraordinaria - ' 'Dim FechaPago As Date = Now - ' Dim TotalSueldos As Decimal = 0 - ' Dim TotalIndemnizacion As Decimal = 0 - ' Dim TotalJubilacion As Decimal = 0 - ' Msg = CFDi.ObjCompNomina12.Cargar("O", FechaPago, FechaInicio, FechaFin, DiasPagados, TotalPercepciones, TotalDeducciones, 0) - - - - ' If Msg = String.Empty Then - ' If DtPercepciones IsNot Nothing Then - ' If DtPercepciones.Rows.Count > 0 Then - ' TotalSueldos = DtPercepciones.SUM("Importe", "SATCveConcepto = '001'") - ' TotalIndemnizacion = DtPercepciones.SUM("Importe", "SATCveConcepto IN ('022','023','025')") ' https://www.ccpm.org.mx/avisos/nuevo-complemento-de-nomina-version-1.2-puntos-finos-diciembre-2016.pdf - ' TotalJubilacion = DtPercepciones.SUM("Importe", "SATCveConcepto IN ('039','044')") 'https://www.ccpm.org.mx/avisos/nuevo-complemento-de-nomina-version-1.2-puntos-finos-diciembre-2016.pdf - ' Msg = CFDi.ObjCompNomina12.CargarPercepciones(TotalSueldos, TotalIndemnizacion, TotalJubilacion, DtPercepciones.SUM("ImporteGravado").ToDecimal, DtPercepciones.SUM("ImporteExento").ToDecimal) - ' End If - ' For Each Row As DataRow In DtPercepciones.Rows - ' If Row("Importe").ToString.ToDecimal > 0 Then - ' If Row("CveSATConcepto").ToString = "" Then - ' Msg = String.Format("Concepto No registrado ({0})", Row("Concepto").ToString) - ' Else - ' Msg = CFDi.ObjCompNomina12.AgregarPercepcion(Row("SATCveConcepto").ToString, Row("Codigo").ToString, Row("Concepto").ToString, Row("ImporteGravado").ToString.ToDecimal, Row("ImporteExento").ToString.ToDecimal) - ' TotalExcento = TotalExcento + Row("ImporteExento").ToString.ToDecimal - ' TotalGravado = TotalGravado + Row("ImporteGravado").ToString.ToDecimal - ' SubTotal = SubTotal + Row("Importe").ToString.ToDecimal - ' End If - - ' If Msg <> String.Empty Then - ' Me.OnError("El SAT regresó el siguiente mensaje: " & Msg & ". Objeto: Percepcion", New Exception) - ' Exit For - ' End If - ' End If - ' 'RMF, falta poner el numero de horas pagadas - ' If Row("CveSATConcepto").ToString.ToEntero = 19 Then 'cuando son horas extras - - ' 'Obtengo el desglose de horas extras - - ' If objNomina.GetHorasExtras(CvePersonal, CvePeriodo, UsuarioActual.CveEmpresa) Then - - ' Dim dr As DataRow = objNomina.DtResultados.FiltroPrimero("") - ' If dr IsNot Nothing Then - - ' If dr("HorasDobles").ToString.ToDouble > 0 Then CFDi.ObjCompNomina12.AgregarHorasExtra(dr("DiasHorasDobles").ToString.ToEntero, ClbNegBICFDv3_2.TipoHoras.Dobles, dr("HorasDobles").ToString.ToEntero, Row("Importe").ToString.ToDecimal) - ' If dr("HorasTriples").ToString.ToDouble > 0 Then CFDi.ObjCompNomina12.AgregarHorasExtra(dr("DiasHorasTriples").ToString.ToEntero, ClbNegBICFDv3_2.TipoHoras.Triples, dr("HorasTriples").ToString.ToEntero, Row("Importe").ToString.ToDecimal) - - - ' End If - - - ' End If - - ' End If - ' Next - ' If Msg = "" Then - ' CFDi.ObjCompNomina12.ObjPercepciones.TotalExento = TotalExcento - ' CFDi.ObjCompNomina12.ObjPercepciones.TotalGravado = TotalGravado - ' End If - - ' End If - - ' 'cargo las incapacidades - ' If DiasIncapacitados > 0 Then - - ' If objNomina.GetIncapacidades(CvePersonal, CvePeriodo, UsuarioActual.CveEmpresa) Then - - ' CFDi.ObjCompNomina12.CargarIncapacidades() - ' For Each dr As DataRow In objNomina.DtResultados.Rows - ' CFDi.ObjCompNomina12.AgregarIncapacidad(dr("Dias").ToString.ToDecimal, dr("ClaveTipoIncapacidad").ToString.ToEntero, dr("Descuento").ToString.ToDecimal) - ' Next - - ' End If - - ' End If - - - - ' TotalExcento = 0 - ' TotalGravado = 0 - - ' If Msg = String.Empty Then - ' If DtDeducciones IsNot Nothing Then - ' If DtDeducciones.Rows.Count > 0 Then - ' Total = CType((Total - DtDeducciones.SUM("Importe")), Decimal) - ' CFDi.ObjCompNomina12.CargarDeducciones(CType(DtDeducciones.SUM("ImporteGravado"), Decimal), CType(DtDeducciones.SUM("ImporteExento"), Decimal)) - ' End If - ' For Each Row As DataRow In DtDeducciones.Rows - - ' If Row("Importe").ToString.ToDecimal > 0 Then - ' If Row("CveSATConcepto").ToString = "" Then - ' Msg = String.Format("Concepto No registrado ({0})", Row("Concepto").ToString) - ' Else - - ' Msg = CFDi.ObjCompNomina12.AgregarDeduccion(Row("SATCveConcepto").ToString, Row("Codigo").ToString, Row("Concepto").ToString, 0) - ' TotalExcento = TotalExcento + Row("ImporteExento").ToString.ToDecimal - ' TotalGravado = TotalGravado + Row("ImporteGravado").ToString.ToDecimal - - ' If Row("CveSATConcepto").ToString.ToEntero = 3 Then - ' RetISR = RetISR + Row("Importe").ToString.ToDecimal - ' Else - ' Descuentos = Descuentos + Row("Importe").ToString.ToDecimal - ' End If - ' End If - - ' If Msg <> String.Empty Then - ' Me.OnError("El SAT regresó el siguiente mensaje: " & Msg & ". Objeto: Deduccion", New Exception) - ' Exit For - ' End If - ' End If - ' Next - ' If Msg = "" Then - ' If CFDi.ObjCompNomina12.ObjDeducciones IsNot Nothing Then - ' CFDi.ObjCompNomina12.ObjDeducciones.TotalOtrasDeducciones = Descuentos - ' CFDi.ObjCompNomina12.ObjDeducciones.TotalImpuestosRetenidos = RetISR - ' End If - - ' End If - ' End If - - ' If Msg = String.Empty Then - ' If DtOtrosPagos IsNot Nothing Then - ' If DtOtrosPagos.Rows.Count > 0 Then - ' Total = CType((Total - DtOtrosPagos.SUM("Importe")), Decimal) - ' CFDi.ObjCompNomina12.CargarOtrosPagos() - ' End If - - ' For Each Row As DataRow In DtOtrosPagos.Rows - ' If Row("Importe").ToString.ToDecimal > 0 Then - ' If Row("CveSATConcepto").ToString = "" Then - ' Msg = String.Format("Concepto No registrado ({0})", Row("Concepto").ToString) - ' Else - ' Msg = CFDi.ObjCompNomina12.AgregarOtroPago(Row("SATCveConcepto").ToString, Row("Codigo").ToString, Row("Concepto").ToString, 0) - ' 'Msg = CFDi.ObjCompNomina12.CargarSubsidioAlEmpleo(0) - ' 'Msg = CFDi.ObjCompNomina12.CargarCompensacionSaldosAFavor(0, 0, 0) - ' End If - - ' If Msg <> String.Empty Then - ' Me.OnError("El SAT regresó el siguiente mensaje: " & Msg & ". Objeto: Otros Pagos", New Exception) - ' Exit For - ' End If - ' End If - ' Next - - ' End If - - ' If Msg = String.Empty Then - ' Dim x As Integer = 0 - - ' Dim Moneda As String = "MXN" - ' Dim LugarExp As String = String.Format("{0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}, {8} ", SucCalle, SucNoExt, SucNoInt, SucColonia, SucLocalidad, SucMunicipio, SucEstado, SucPais, SucCP) - ' Dim FechaFactura As DateTime = Now - ' 'Nodo Comprobante - - ' Dim TipoComprobante As ClbNegBICFDv3_2.TipoDeComprobante = ClbNegBICFDv3_2.TipoDeComprobante.egreso - ' Msg = CFDi.comprobantecfd(0, 0, Serie, Folio, FechaFactura, "PAGO EN UNA SOLA EXHIBICION", "CONTADO", SubTotal, Descuentos, "Deducciones nómina", "1", Moneda, Total, objPersonal.MetodoPagoSAT, ClbNegBICFDv3_2.TipoDeComprobante.egreso, LugarExp, "", "", "", New Date(1900, 1, 1), 0) - - ' If Msg = String.Empty Then - ' 'Nodo emisor - ' Msg = CFDi.ObjCompNomina12.CargarEmisor("", UsuarioActual.Empresa.RegistroPatronal, UsuarioActual.Empresa.RFC) - ' 'If Msg = String.Empty Then Msg = CFDi.EmisorRegimen(UsuarioActual.Empresa.CodigoRegimenFiscal) - ' If Msg = String.Empty Then - ' 'Nodo Entidad SNCF - ' If 1 = 2 Then 'cuando es gobierno - ' Msg = CFDi.ObjCompNomina12.CargarEntidadSNCF("", 0) - ' End If - - ' If Msg = String.Empty Then - ' 'Nodo Receptor - ' Msg = CFDi.ObjCompNomina12.CargarReceptor(objPersonal.CURP, objPersonal.NumeroSS, objPersonal.FechaInicioContrato, AntiguedadSemanas, objPersonal.TipoContrato, "", objPersonal.ClaveTipoJornada, objPersonal.CveRegimenContratacion, objPersonal.Codigo.ToString, - ' objPersonal.Departamento, objPersonal.Puesto, objPersonal.CveRiesgoPuesto, objPersonal.TipoPeriodo, objPersonal.ClaveBanco, objPersonal.BancoNumCuenta, Total, objPersonal.SDI.ToString.ToDecimal, objPersonal.ClaveEstado) - ' If Msg = String.Empty Then - ' 'Nodo SubContratacion - ' If 1 = 2 Then Msg = CFDi.ObjCompNomina12.AgregarSubContratacion("", 0) - ' If Msg = String.Empty Then - - ' CFDi.LstCompNomina12.Add(CFDi.ObjCompNomina12) - - ' Dim HasErrorConceptos As Boolean = False - ' 'Dim Importe As Decimal = 0 - - - ' Msg = CFDi.ConceptosCfd(1, "ACT", "", "Pago de nómina", SubTotal, SubTotal) - - ' 'Timbrado - - ' 'Web Services de producción: http://biinform.com.mx/srvCFDi/service1.asmx - ' 'Web Services de pruebasd: http://biinform.com.mx/srvCFDiPrueba/service1.asmx - - - ' Dim WS As String = String.Empty - ' If UsuarioActual.Empresa.FacturaProduccion Then - ' WS = "http://portalbiinform.com.mx/srvCFDiPrueba/service1.asmx" - ' Else - ' WS = "http://portalbiinform.com.mx/srvCFDiPrueba/service1.asmx" - ' End If - - ' If Not System.IO.Directory.Exists(Ruta & "XML\") Then System.IO.Directory.CreateDirectory(Ruta & "XML\") - ' If Not System.IO.Directory.Exists(Ruta & "XML\Nomina\") Then System.IO.Directory.CreateDirectory(Ruta & "XML\Nomina\") - - ' 'Generar Timbre - ' 'If UsuarioActual.Empresa.FacturaProduccion Then - ' If 1 = 2 Then - ' CFDi.Generar(String.Format("{0}Certificados\{1}", Ruta, UsuarioActual.Empresa.ArchivoPfx), - ' UsuarioActual.Empresa.ContraseñaKey, - ' String.Format("{0}Certificados\{1}", Ruta, UsuarioActual.Empresa.ArchivoCer), - ' String.Format("{0}XML\Nomina\{1}.xml", Ruta, NominaFolio), - ' String.Format("{0}Certificados\", Ruta), - ' UsuarioActual.Empresa.BIUsuario, - ' UsuarioActual.Empresa.BIContraseña, - ' WS, - ' True) - ' Else - ' If Not System.IO.Directory.Exists(Ruta & "XML\Nomina\Demo\") Then System.IO.Directory.CreateDirectory(Ruta & "XML\Nomina\Demo\") - ' 'RutaPruebas & "XML\Demo\" & NominaFolio & ".xml", - ' CFDi.Generar(String.Format("{0}Certificados\aaa010101aaa__csd_01.pfx", RutaPruebas), - ' "12345678a", - ' String.Format("{0}Certificados\aaa010101aaa__csd_01.cer", RutaPruebas), - ' String.Format("{0}XML\Nomina\Demo\{1}.xml", Ruta, NominaFolio), - ' String.Format("{0}Certificados\", RutaPruebas), - ' "prueba", - ' "123", - ' WS, - ' True) - ' End If - - - ' If CFDi.MsgError <> String.Empty Then - - ' 'OnError("Ocurrió un error al generar el timbre: " & CFDi.MsgError, New Exception) - - ' Dim params As New ActualizaTimbre - ' params.Estatus = False - ' params.CveNomina = CveNomina - ' params.CvePAC = 1 - - ' 'Dim Hilo As New System.Threading.Thread(AddressOf ActualizaTimbrado) - ' 'Hilo.Start(params) - ' BtnAutorizar.Enabled = False - ' MsgError = "Nombre: " & Nombre & ". Error: " & CFDi.MsgError - ' Else - ' 'Actualiza Estatus Timbrado - ' Dim params As New ActualizaTimbre - ' params.Estatus = True - ' params.CveNomina = CveNomina - ' params.CvePAC = 1 - - ' 'Dim Hilo As New System.Threading.Thread(AddressOf ActualizaTimbrado) - ' 'Hilo.Start(params) - - ' Dim CBB As New ClbNegBICFDv3_2.ClsNegCBBGenerar() - ' Dim FechaCertificacion As DateTime - ' Dim FolioFiscal, NoSerieCertificado, NoSerieCertificadoContribuyente, SelloCFDi, SelloSAT As String - - ' FolioFiscal = CFDi.Timbrado.UUDI 'XmlDoc.DocumentElement("cfdi:Complemento").FirstChild.Attributes("UUID").InnerText - ' NoSerieCertificado = CFDi.Timbrado.NoCertificadoSAT - ' FechaCertificacion = CFDi.Timbrado.FechaTimbrado - ' SelloCFDi = CFDi.Timbrado.SelloCFD - ' SelloSAT = CFDi.Timbrado.SelloSAT - ' NoSerieCertificadoContribuyente = CFDi.Timbrado.NoCertificado - ' ViewState("FolioFiscal") = FolioFiscal - - ' 'Actualiza Estatus Factura - ' CveNominaT = CveNomina - - ' Dim Rastro As String = String.Format("Nomina: CvePeriodo:{0}, CvePersonal:{1}, UUID: {2}, RFC:{3}", CvePeriodo, CvePersonal, FolioFiscal, objPersonal.RFC) - ' Rastro.GuardaLog() - - ' If FolioFiscal <> "" Then - - ' 'If UsuarioActual.Empresa.FacturaProduccion Then - ' ' Dim ObjNomina2 As New ClsNominas() - ' ' ObjNomina2.UpdateEstatusNomNominas(3, UsuarioActual.Empresa.CvePAC, FolioFiscal, "", ("01/01/2000").ToDate, CveNomina, SubTotal, Descuentos, RetISR, Total, DiasPagados) - ' ' ObjNomina2.Dispose() - ' 'End If - ' Rastro = "--Estatus" & Rastro - ' Rastro.GuardaLog() - ' 'Dim Hilo1 As New System.Threading.Thread(AddressOf ActualizaEstatus) - ' 'Hilo1.Start(3) - ' End If - - - ' Dim RutaCBB As String = String.Empty - ' If Not System.IO.Directory.Exists(Ruta & "CBB\") Then System.IO.Directory.CreateDirectory(Ruta & "CBB\") - ' If Not System.IO.Directory.Exists(Ruta & "CBB\Nomina\") Then System.IO.Directory.CreateDirectory(Ruta & "CBB\Nomina\") - - ' If UsuarioActual.Empresa.FacturaProduccion Then - ' RutaCBB = Ruta & "CBB\Nomina\" & NominaFolio & ".jpg" - ' Else - ' If Not System.IO.Directory.Exists(Ruta & "CBB\Nomina\Demo\") Then System.IO.Directory.CreateDirectory(Ruta & "CBB\Nomina\Demo\") - ' RutaCBB = Ruta & "CBB\Nomina\Demo\" & NominaFolio & ".jpg" - ' End If - ' CBB.GenerarCBB(UsuarioActual.Empresa.RFC, RFC, Total, FolioFiscal, RutaCBB) - - - ' 'GeneraPDF(FechaFactura, FolioFiscal, NoSerieCertificado, FechaCertificacion, NoSerieCertificadoContribuyente, TmpDT, SelloCFDi, SelloSAT, RutaCBB, VentaFolio, Ruta & "XML\" & VentaFolio & ".xml", False, CFDi.CadenaOriginal) - ' 'GeneraPDF(CveNomina, CvePersonal, CvePeriodo, FechaFactura, FolioFiscal, NoSerieCertificado, FechaCertificacion, NoSerieCertificadoContribuyente, SelloCFDi, SelloSAT, RutaCBB, Ruta & "Nomina\XML\" & NominaFolio & ".xml", False, CFDi.Timbrado.CadenaOriginal, FormatoReciboCFDi) - ' GeneraPDFNuevo(String.Format("{0}XML\Nomina\{1}.xml", Ruta, NominaFolio), CvePersonal, CvePeriodo) - ' End If - ' Else - ' 'Me.OnError(String.Format("El SAT regresó el siguiente mensaje: {0} Nombre: {1}. Objeto: EmisorRegimen", Msg, Nombre), New Exception) - ' MsgError = String.Format("El SAT regresó el siguiente mensaje: {0} Nombre: {1}. Objeto: EmisorRegimen", Msg, Nombre) - ' End If - ' Else - ' 'Me.OnError(String.Format("El SAT regresó el siguiente mensaje: {0} Nombre: {1}. Objeto: EmisorDomicilioExpedidoEn", Msg, Nombre), New Exception) - ' MsgError = String.Format("El SAT regresó el siguiente mensaje: {0} Nombre: {1}. Objeto: EmisorDomicilioExpedidoEn", Msg, Nombre) - ' End If - ' Else - ' 'Me.OnError(String.Format("El SAT regresó el siguiente mensaje: {0} Nombre: {1}. Objeto: EmisorDomicilioFiscalCfd", Msg, Nombre), New Exception) - ' MsgError = String.Format("El SAT regresó el siguiente mensaje: {0} Nombre: {1}. Objeto: EmisorDomicilioFiscalCfd", Msg, Nombre) - ' End If - ' Else - ' 'Me.OnError(String.Format("El SAT regresó el siguiente mensaje: {0} Nombre: {1}. Objeto: EmisorCfd", Msg, Nombre), New Exception) - ' MsgError = String.Format("El SAT regresó el siguiente mensaje: {0} Nombre: {1}. Objeto: EmisorCfd", Msg, Nombre) - ' End If - ' Else - ' 'Me.OnError(String.Format("El SAT regresó el siguiente mensaje: {0} Nombre: {1}. Objeto: Comprobante", Msg, Nombre), New Exception) - ' MsgError = String.Format("El SAT regresó el siguiente mensaje: {0} Nombre: {1}. Objeto: Comprobante", Msg, Nombre) - ' End If - ' Else - ' 'Me.OnError(String.Format("El SAT regresó el siguiente mensaje: {0} Nombre: {1}. Objeto: Comprobante", Msg, Nombre), New Exception) - ' MsgError = String.Format("El SAT regresó el siguiente mensaje: {0} Nombre: {1}. Objeto: Comprobante", Msg, Nombre) - ' End If - ' Else - ' 'Me.OnError(String.Format("El SAT regresó el siguiente mensaje: {0} Nombre: {1}. Objeto: Comprobante", Msg, Nombre), New Exception) - ' MsgError = String.Format("El SAT regresó el siguiente mensaje: {0} Nombre: {1}. Objeto: Comprobante", Msg, Nombre) - ' End If - ' Else - ' 'Me.OnError(String.Format("El SAT regresó el siguiente mensaje: {0} Nombre: {1}. Objeto: Comprobante", Msg, Nombre), New Exception) - ' MsgError = String.Format("El SAT regresó el siguiente mensaje: {0} Nombre: {1}. Objeto: Comprobante", Msg, Nombre) - ' End If - ' Else - ' 'Me.OnError(String.Format("El SAT regresó el siguiente mensaje: {0} Nombre: {1}. Objeto: Comprobante", Msg, Nombre), New Exception) - ' MsgError = String.Format("El SAT regresó el siguiente mensaje: {0} Nombre: {1}. Objeto: Comprobante", Msg, Nombre) - ' End If - ' objPersonal.Dispose() - ' objNomina.Dispose() - - ' Return MsgError - 'End Function - - -#End Region - -#Region " GUARDAR - ACTUALIZAR " - Private Function ValidaGuardar() As Boolean - Dim EsValido = True - Dim PagueseA = "" - If HdnCveCliente.Value.ToEntero > 0 Then - PagueseA = DdlCliente.SelectedText.ToString() - ElseIf HdnCveProveedor.Value.ToEntero > 0 Then - PagueseA = DdlProveedores.SelectedText.ToString() - ElseIf HdnCvePersonal.Value.ToEntero > 0 Then - PagueseA = DdlPersonal.SelectedItem.ToString - End If - - If DdlEstatusIE.SelectedValue = "2" AndAlso TxtImporte.Text.ToDouble > 0 Then - Alert("Un movimiento Cancelado debe tener importe = 0", TipoMensaje.MsgAdvertencia) - EsValido = False - End If - - If DdlEstatusIE.SelectedValue <> "2" AndAlso TxtImporte.Text.ToDouble <= 0 Then - Alert("Debe ingresar un importe", TipoMensaje.MsgAdvertencia) - EsValido = False - End If - - 'cuando sea activo es requerido proveedor o personal - If DdlEstatusIE.SelectedValue = "1" AndAlso (CveProveedor <= 0 And CvePersonal <= 0) AndAlso HdnTipoTransaccion.Value = "Egs" And RBL.SelectedValue <> "C" Then - Alert("Debe de seleccionar un Proveedor o un Funcionario Empleado", TipoMensaje.MsgAdvertencia) - EsValido = False - End If - - If DdlEstatusIE.SelectedValue = "1" AndAlso PagueseA = "" AndAlso Not Opcion = "EGSCREDITO" Then - Alert("Ingrese Beneficiario", TipoMensaje.MsgAdvertencia) - EsValido = False - End If - - Dim Dep As New ClsGenerales - If Dep.GetCuentasDepositos(CveProveedor:=CveProveedor) Then - Dim Row = Dep.DtResultados.FiltroPrimero(String.Format("CveCuentaDeposito = {0}", DdlCuentaDeposito.SelectedValue.ToEntero)) - If Row IsNot Nothing AndAlso Row("Estatus").ToString = "False" Then - Alert("La cuenta depósito del proveedor esta inactiva.", TipoMensaje.MsgAdvertencia) - EsValido = False - End If - End If - Dep.Dispose() - - Return EsValido - End Function - - Protected Sub BtnGuardar_Click(sender As Object, e As System.EventArgs) Handles BtnGuardar.Click - - If Not ValidaGuardar() Then - Exit Sub - End If - - 'PARA QUE TOME EL TIPO DE CAMBIO DEL DIA - TxtTipoCambio.Text = GlobalTipoCambio(TxtFechaDocumento.Text.ToDate).ToString - UpTipoCambio.Update() - - - Dim ObjIE As New ClsBancos() - Dim ObjMov As New ClsContabilidad(ObjIE.IniciaTransacSQL) - Dim ObjComp As New ClsCompras(ObjIE.IniciaTransacSQL) - Dim ObjOC As New ClsOC(ObjIE.IniciaTransacSQL) - - ' Dim ObjContabilidad As New ClsContabilidad(ObjIE.IniciaTransacSQL) - - Dim MsgError As String = "" - Dim CveConceptoContable As Integer = 30 - Dim CveConceptoCompra As Integer = 10 - Dim CveCreditoDetalle As Integer = -1 - Dim CIF As Decimal = 0 - Dim CvePlantillaPoliza As Integer = 3 - Dim CvePrePoliza As Integer = 0 - Dim alertaContabilizacion As String = "Se enviaron correctamente las siguientes pólizas:

" - Dim Msg As New StringBuilder - - If CveIE = -1 Then - - Dim CveCuentaDeposito As Integer = 0 - If DdlCuentaDeposito.Items.Count > 0 Then - CveCuentaDeposito = DdlCuentaDeposito.SelectedValue.ToEntero - End If - - 'OBTIENE COMPROBANTE!! - ComprobanteIE = "" - Dim Comprobante As String = "" - Dim filesgral As List(Of Archivo) = Anexo.getfiles().Archivos - Dim filemove As String = "" - For Each fileItem As Archivo In filesgral - Comprobante = IO.Path.GetExtension(String.Format("{0}Temp\{1}", AppDomain.CurrentDomain.BaseDirectory, fileItem.filename)).Replace(".", "") - filemove = fileItem.filename - Next - - - '*****-_- INICIA: CONFIGURACION REGISTRO -_-***** - If CvePersonal > 0 Then - If Opcion IsNot Nothing AndAlso Opcion.Contiene("EGSSINFACT") And DDlCheques.SelectedValue.ToEntero > 0 Then - CveConceptoCompra = 29 'Comprobación Personal - Else - CveConceptoCompra = 28 'Prestamo Personal - End If - CveConceptoContable = 30 'Banco - CvePlantillaPoliza = 8 - End If - - If Request("Opcion") IsNot Nothing AndAlso Request("Opcion").ToString = "DEV" Then - If CvePersonal > 0 Then - CveConceptoCompra = 29 'Comprobacion Personal - CveConceptoContable = 30 'Bancos - CvePlantillaPoliza = 9 - ElseIf CveProveedor > 0 Then - CveConceptoCompra = 21 'Pago a Proveedor/CAncelacion Anticipos - CveConceptoContable = 30 'Bancos - CvePlantillaPoliza = 7 - End If - End If - - If Request("Opcion") IsNot Nothing AndAlso Request("Opcion").ToString = "ANTC" Then - If CveCliente > 0 Then - CveConceptoCompra = 3 'Clientes - CveConceptoContable = 30 'Bancos - CvePlantillaPoliza = 12 - End If - End If - - 'Cuando es Egreso sin factura, se registra una compra tipo anticipo - If Request("Opcion") IsNot Nothing AndAlso Request("Opcion").ToString = "EGSCREDITO" Then - CveConceptoCompra = 48 'Anticipo Acreedores - CveConceptoContable = 30 'Bancos - CveCreditoDetalle = DdlCreditoDetalle.SelectedValue.ToEntero - Dim Estatus As Integer = 2 - If HdnCveTipoCredito.Value = "1" Then - Estatus = 103 - 'cuando es crediproveedores es, pago a documentos por pagar - CveConceptoCompra = 57 - End If - ObjIE.UpdateCreditosDetalle(Estatus, CveCreditoDetalle) - - If HdnImporteCredito.Value.ToDouble > 0 AndAlso TxtImporte.Text.ToDouble > HdnImporteCredito.Value.ToDouble Then - CIF = TxtImporte.Text.ToDecimal - HdnImporteCredito.Value.ToDecimal - Else - CIF = 0 - End If - - CvePlantillaPoliza = 92 - - End If - Dim AgregaPolizaSaldoInicial As Boolean = False - 'Cuando es Egreso sin factura, se registra una compra tipo anticipo - If Request("Opcion") IsNot Nothing AndAlso Request("Opcion").ToString = "EGSSINFACT" Then - Select Case RBL.SelectedValue - Case "P" 'Proveedores - If CveProveedor > 0 Then - CveConceptoCompra = 10 'Anticipo a proveedor - CveConceptoContable = 30 'Pago a Proveedor - CvePlantillaPoliza = 3 - End If - Case "DD" ' Deudores Diversos - If CveProveedor > 0 Then - CveConceptoCompra = 43 'Prestamo a deudor diverso - CveConceptoContable = 30 'Bancos - 'limpio el iva - HdnProvPorIVA.Value = "0" - CvePlantillaPoliza = 6 - End If - Case "AC" ' Acreedores Diversos - If CveProveedor > 0 Then - CveConceptoCompra = 42 'Prestamo a acreedor diverso - CveConceptoContable = 30 'Bancos - 'limpio el iva - HdnProvPorIVA.Value = "0" - CvePlantillaPoliza = 21 - End If - Case "DP" ' Documentos por pagar - If CveProveedor > 0 Then - CveConceptoCompra = 50 'Anticipo doc por pagar - CveConceptoContable = 30 'Bancos - 'limpio el iva - HdnProvPorIVA.Value = "0" - CvePlantillaPoliza = 22 - End If - Case "FE" - AgregaPolizaSaldoInicial = True - End Select - End If - - 'Nuevo Formato Charlie - If Request("Opcion") IsNot Nothing AndAlso Request("Opcion").ToString = "INGPC" Then - HdnProvPorIVA.Value = "0" - CvePlantillaPoliza = 6 - Select Case RBL.SelectedValue - Case "DD" ' Deudores Diversos - If CveProveedor > 0 Then - CveConceptoCompra = 37 'Prestamo a deudor diverso - CveConceptoContable = 30 'Bancos - 'limpio el iva - HdnProvPorIVA.Value = "0" - CvePlantillaPoliza = 45 - End If - Case "C" ' Clientes - If CveCliente > 0 Then - CveConceptoCompra = 66 'Anticipo doc por pagar - CveConceptoContable = 30 'Bancos - 'limpio el iva - HdnProvPorIVA.Value = "0" - End If - Case "AC" ' Acreedores Diversos - If CveCliente > 0 Then - CveConceptoCompra = 41 - CveConceptoContable = 30 'Bancos - 'limpio el iva - HdnProvPorIVA.Value = "0" - End If - End Select - End If - - '*****-_- TERMINA: CONFIGURACION REGISTRO -_-***** - - - Dim FolioFijo As Integer = 0 - Dim tCveMoneda As Integer = DdlMoneda.SelectedValue.ToEntero - Dim tImporteMonedaExtranjera As Decimal = 0 - If tCveMoneda <> 1 Then tImporteMonedaExtranjera = TxtImporte.Text.ToDecimal * GlobalTipoCambio(TxtFechaDocumento.Text.Trim.ToDate).ToString.ToDecimal - Dim PagueseA = "" - - If HdnCveCliente.Value.ToEntero > 0 Then - PagueseA = DdlCliente.SelectedText.ToString() - ElseIf HdnCveProveedor.Value.ToEntero > 0 Then - PagueseA = DdlProveedores.SelectedText.ToString() - ElseIf HdnCvePersonal.Value.ToEntero > 0 Then - PagueseA = DdlPersonal.SelectedItem.ToString - ElseIf DdlCreditoDetalle.SelectedValue.ToEntero > 0 Then - PagueseA = String.Format("{0} {1} {2}", DdlFinanciera.SelectedItem.Text, DdlCredito.SelectedItem.Text, DdlCreditoDetalle.SelectedItem.Text) - End If - - If AgregaPolizaSaldoInicial Then - If AgregarSaldoInicial(TxtImporte.Text.ToDouble(), TxtFechaDocumento.Text.ToDateTime(), DdlMoneda.SelectedValue.ToEntero(), ObjMov) <= 0 Then - MsgError = "No se pudo insertar la póliza de saldo inicial." - End If - End If - - If MsgError = "" Then - - - - CveIE = ObjIE.AddBancos_IE(DdlCuenta.SelectedValue.ToEntero, DdlTipoTransaccion.SelectedValue.ToEntero, TxtFechaDocumento.Text.Trim.ToDate, TxtFolio.Text.Trim, PagueseA, TxtImporte.Text.Trim.ToDouble, DdlMoneda.SelectedValue.ToEntero, - TxtTipoCambio.Text.Trim.ToDouble, TxtObservaciones.Text.Trim, TxtNotificarA.Text.Trim, ChkAbonoCuenta.Checked, ChkAplicaImpuestos.Checked, -1, CvePrePoliza, Comprobante, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveCuentaDeposito:=CveCuentaDeposito, CveEstatusIE:=DdlEstatusIE.SelectedValue.ToString.ToEntero, Referencia:=If(TxtReferenciaCIE.Visible, TxtReferenciaCIE.Text, "-1"), CveCuentaTarjeta:=If(DivTarjeta.Visible, DdlTarjeta.SelectedValue.ToEntero, -1)) - - If CveIE > 0 Then - - If DdlTipoTransaccion.SelectedValue = "1" Then FolioFijo = ObjIE.Folio.ToEntero 'cheque - CvePrePoliza = ObjMov.AddPrePolizas("Bancos/IE " + If(Request("Opcion") IsNot Nothing, Request("Opcion").ToString, "") + " " + RBL.SelectedValue, CvePlantillaPoliza, TxtImporte.Text.Trim.ToDouble, TxtImporte.Text.Trim.ToDouble, tCveMoneda, TxtFechaDocumento.Text.ToDate, PagueseA, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, FolioFijo:=FolioFijo, ReglaFolioPoliza:=ObjComp.ObtenerReglaFolio(DdlTipoTransaccion.SelectedValue, Nothing, UsuarioActual.CveEmpresa), CveTipoPoliza:=ObjMov.ObtenerTipoPoliza(DdlTipoTransaccion.SelectedValue, "-1", UsuarioActual.CveEmpresa)) - - 'valida prepoliza - If CvePrePoliza > 0 Then - - If Not ObjIE.UpdateIEPrePoliza(MinFecha, "", -1, CvePrePoliza, CveIE, -1) Then - MsgError = "Ocurrio un error al agregar la prepoliza al IE." - End If - - Dim Conc As String = If(TxtObservaciones.Text = "", ObjIE.Folio, TxtObservaciones.Text) - Dim Ref As String = If(TxtObservaciones.Text = "", ObjIE.Folio, TxtObservaciones.Text) - - If Comprobante <> "" Then - ComprobanteIE = $"{CveIE}.{Comprobante}" - End If - - 'GUARDA COMPROBANTE - If filemove <> "" Then - filemove.FilesMove(CveIE.ToString, String.Format("Empresas\{0}\IE", UsuarioActual.CveEmpresa, UsuarioActual.Empresa.Ruta)) - End If - - 'GUARDA PREPOLIZAS DETALLE [PRIMERO SON LOS CASOS ESPECIALES, AL FINAL (ELSE) LOS CASOS NORMALES] --REEMPLAZA IFs - Select Case Opcion - Case "DEV" - Dim CveIEOtro As Integer = If(CveProveedor > 0 Or CvePersonal > 0, DdlIEDevolucion.SelectedValue.ToEntero, CveIE) - - If CveCliente > 0 AndAlso Not DivIvaIxC.Visible AndAlso TxtIvaIxC.Text.ToDouble = 0 Then - 'RMF- CASO DONDE HAY UNA DEVOLUCION Y TENGO QUE AFECTAR LAS FACTURAS QUE SE HABIAN MARCADO COMO PAGADAS TENGO QUE REGRESARLAS A PENDIENTES - Dim Mov As New ClsMovimientos - If Mov.GetMovimientosIE(2, DdlIEDevolucion.SelectedValue.ToEntero, -1, Now, Now, 1, 0, UsuarioActual.CveEmpresa) Then - Dim DtIE As DataTable = Mov.DtResultados - For Each dr As DataRow In DtIE.Rows - - If MsgError = "" AndAlso Not ObjMov.AddPrePolizasDetalle(CvePrePoliza, If(dr("TipoMovto").ToString.ToEntero = 1, False, True), If(dr("CveConceptoContable").ToString.ToEntero.Contiene(66), -TxtImporte.Text.ToDecimal, dr("Importe").ToString.ToDecimal), "", dr("CveConceptoContable").ToString.ToEntero, "", Now, IDCtaBeneficiario, -1, CveIE, CveCliente:=dr("CveCliente").ToString.ToEntero, CveVenta:=dr("CveVenta").ToString.ToEntero, ImporteMX:=If(dr("CveConceptoContable").ToString.ToEntero.Contiene(66), -TxtImporte.Text.ToDecimal, -dr("Importe").ToString.ToDecimal), ImporteME:=tImporteMonedaExtranjera, CveCuenta:=CveCuentaBeneficiario) Then - MsgError = "no se pudo insertar el detalle de la póliza 2" - End If - Next - ObjMov.AddPrePolizasDetalle(CvePrePoliza, True, TxtImporte.Text.ToDecimal, Ref, CveConceptoContable, Conc, Now, IDCtaContable, -1, CveIE, CveCompra:=CveCompra, CveProveedor:=CveProveedor, CvePersonal:=CvePersonal, CveCreditoDetalle:=CveCreditoDetalle, CveCliente:=CveCliente, ImporteMX:=TxtImporte.Text.ToDecimal, ImporteME:=tImporteMonedaExtranjera, CveCuenta:=CveCuentaConta) - - End If - Mov.Dispose() - - 'Devolucion de INGxC Formato Charlie - ElseIf CveCliente > 0 AndAlso DivIvaIxC.Visible Then - - Dim Mov As New ClsMovimientos - 'INGxC - ObjMov.AddPrePolizasDetalle(CvePrePoliza, True, -(TxtImporte.Text.ToDecimal - TxtIvaIxC.Text.ToDecimal), Ref, 66, Conc, Now, IDCtaContable, -1, CveIE, CveIEDevolucion:=DdlIEDevolucion.SelectedValue.ToEntero, CveCompra:=CveCompra, CveProveedor:=CveProveedor, CvePersonal:=CvePersonal, CveCreditoDetalle:=CveCreditoDetalle, CveCliente:=CveCliente, ImporteMX:=-(TxtImporte.Text.ToDecimal - TxtIvaIxC.Text.ToDecimal), ImporteME:=tImporteMonedaExtranjera, CveCuenta:=CveCuentaConta) - - If TxtIvaIxC.Text.ToDouble > 0 Then - 'Iva - ObjMov.AddPrePolizasDetalle(CvePrePoliza, True, -TxtIvaIxC.Text.ToDecimal, Ref, 61, Conc, Now, UsuarioActual.Empresa.IdCuentaIVAxTrasladar, -1, CveIE, CveIEDevolucion:=DdlIEDevolucion.SelectedValue.ToEntero, CveCompra:=CveCompra, CveProveedor:=CveProveedor, CvePersonal:=CvePersonal, CveCreditoDetalle:=CveCreditoDetalle, CveCliente:=CveCliente, ImporteMX:=-TxtIvaIxC.Text.ToDecimal, ImporteME:=tImporteMonedaExtranjera, CveCuenta:=UsuarioActual.Empresa.CveCuentaIVAxTrasladar) - End If - - 'Bancos - ObjMov.AddPrePolizasDetalle(CvePrePoliza, False, -TxtImporte.Text.ToDecimal, Ref, 30, Conc, Now, IDCtaBeneficiario, -1, CveIE, CveIEDevolucion:=DdlIEDevolucion.SelectedValue.ToEntero, CveCompra:=CveCompra, CveProveedor:=CveProveedor, CvePersonal:=CvePersonal, CveCreditoDetalle:=CveCreditoDetalle, CveCliente:=CveCliente, ImporteMX:=-TxtImporte.Text.ToDecimal, ImporteME:=tImporteMonedaExtranjera, CveCuenta:=CveCuentaBeneficiario) - Mov.Dispose() - - Else - If ObjMov.AddPrePolizasDetalle(CvePrePoliza, False, TxtImporte.Text.ToDecimal, Ref, CveConceptoContable, Conc, Now, IDCtaContable, -1, CveIE, CveCompra:=CveCompra, CveProveedor:=CveProveedor, CvePersonal:=CvePersonal, CveCreditoDetalle:=CveCreditoDetalle, CveCliente:=CveCliente, ImporteMX:=TxtImporte.Text.ToDecimal, ImporteME:=tImporteMonedaExtranjera, CveCuenta:=CveCuentaConta) Then - If Not ObjMov.AddPrePolizasDetalle(CvePrePoliza, True, TxtImporte.Text.ToDecimal, Ref, CveConceptoCompra, Conc, Now, IDCtaBeneficiario, -1, CveIE:=If(CveIEOtro < 0, CveIE, CveIEOtro), CveCompra:=CveCompra, CveProveedor:=CveProveedor, CvePersonal:=CvePersonal, CveCreditoDetalle:=CveCreditoDetalle, CveCliente:=CveCliente, ImporteMX:=TxtImporte.Text.ToDecimal, ImporteME:=tImporteMonedaExtranjera, CveCuenta:=CveCuentaBeneficiario) Then - MsgError = "no se pudo insertar el detalle de la póliza 2" - End If - Else - MsgError = "no se pudo insertar el detalle de la póliza" - End If - - End If - - - Case "INGPC" - Dim ConceptoContable As Integer - Dim TipoMovimiento As Boolean - Dim importeMovimiento As Decimal - Dim FechaMovimiento As Date = Now - Dim Concepto As String = "" - Dim Referencia As String = PagueseA - - Dim importeMX As Decimal - Dim Multiplicador As Integer - - If ObjMov.GetPlantillaConceptos(UsuarioActual.CveEmpresa, CvePlantillaPoliza) Then - - For Each Row As DataRow In ObjMov.DtResultados.Rows - - ConceptoContable = Row("CveConcepto").ToString.ToEntero - TipoMovimiento = If(Row("TipoMovto").ToString = "True", True, False) - importeMovimiento = 0 - Multiplicador = (Row("Multiplicador").ToString.ToEntero) - Concepto = ObjMov.ObtenerConceptoEmpresa(UsuarioActual.CveEmpresa, ConceptoContable, PagueseA, "", ObjIE.Folio) - - Select Case ConceptoContable - - Case 10 - If RBL.SelectedValue = "P" AndAlso CveProveedor > 0 Then - importeMovimiento = TxtImporte.Text.ToDecimal - importeMX = importeMovimiento - End If - - Case 28 - If RBL.SelectedValue = "FE" AndAlso CvePersonal > 0 Then - importeMovimiento = TxtImporte.Text.ToDecimal - importeMX = importeMovimiento - End If - - Case 37 - If RBL.SelectedValue = "DD" AndAlso CveProveedor > 0 Then - importeMovimiento = TxtImporte.Text.ToDecimal - importeMX = importeMovimiento - End If - - Case 41 - If RBL.SelectedValue = "AC" AndAlso CveProveedor > 0 Then - importeMovimiento = TxtImporte.Text.ToDecimal - importeMX = importeMovimiento - End If - - Case 46 - - If TxtInteresMoratorio.Text.ToDecimal > 0 Then - importeMovimiento = TxtInteresMoratorio.Text.ToDecimal - importeMX = importeMovimiento - Else - importeMovimiento = 0 - importeMX = 0 - End If - - - Case 50 - If RBL.SelectedValue = "DP" AndAlso CveProveedor > 0 Then - importeMovimiento = TxtImporte.Text.ToDecimal - importeMX = importeMovimiento - End If - - Case 66 - If RBL.SelectedValue = "C" AndAlso CveCliente > 0 Then - importeMovimiento = TxtImporte.Text.ToDecimal - TxtIvaIxC.Text.ToDecimal - importeMX = importeMovimiento - - 'Agregamos el IVA - If DivIvaIxC.Visible AndAlso TxtIvaIxC.Text.ToDecimal <> 0 Then - If Not ObjMov.AddPrePolizasDetalle(CvePrePoliza, TipoMovimiento, TxtIvaIxC.Text.ToDecimal, Concepto, 61, Concepto, FechaMovimiento, UsuarioActual.Empresa.IdCuentaIVAxTrasladar, -1, CveIE:=CveIE, CveCompra:=CveCompra, CveProveedor:=CveProveedor, CvePersonal:=CvePersonal, CveCreditoDetalle:=CveCreditoDetalle, CveCliente:=CveCliente, ImporteMX:=TxtIvaIxC.Text.ToDecimal, ImporteME:=tImporteMonedaExtranjera, CveCuenta:=UsuarioActual.Empresa.CveCuentaIVAxTrasladar) Then - MsgError = "Ocurrió un error al registrar el asiento del ingreso." - End If - End If - If tCveMoneda > 1 AndAlso UsuarioActual.CveEmpresa = 119 Then - 'Agregamos complementaria - Dim TC As Decimal = TxtTipoCambio.Text.ToDecimal - - If Not ObjMov.AddPrePolizasDetalle(CvePrePoliza, TipoMovimiento, 0, Concepto, 226, Concepto, FechaMovimiento, IDCtaBeneficiarioComplementaria, -1, CveIE:=CveIE, CveCompra:=CveCompra, CveProveedor:=CveProveedor, CvePersonal:=CvePersonal, CveCreditoDetalle:=CveCreditoDetalle, CveCliente:=CveCliente, ImporteMX:=(importeMovimiento * TC - importeMovimiento).RoundSQL, ImporteME:=importeMovimiento, TipoCambio:=TC, CveCuenta:=0) Then - MsgError = "Ocurrió un error al registrar el asiento del ingreso." - End If - - End If - - End If - - Case 30 - importeMovimiento = TxtImporte.Text.ToDecimal - importeMX = importeMovimiento - - If tCveMoneda > 1 AndAlso UsuarioActual.CveEmpresa = 119 Then - 'Agregamos complementaria - Dim TC As Decimal = TxtTipoCambio.Text.ToDecimal - - If Not ObjMov.AddPrePolizasDetalle(CvePrePoliza, TipoMovimiento, 0, Concepto, 204, Concepto, FechaMovimiento, IDCtaContableComplementaria, -1, CveIE:=CveIE, CveCompra:=CveCompra, CveProveedor:=CveProveedor, CvePersonal:=CvePersonal, CveCreditoDetalle:=CveCreditoDetalle, CveCliente:=CveCliente, ImporteMX:=(importeMovimiento * TC - importeMovimiento).RoundSQL, ImporteME:=importeMovimiento, TipoCambio:=TC, CveCuenta:=UsuarioActual.Empresa.CveCuentaIVAxTrasladar) Then - MsgError = "Ocurrió un error al registrar el asiento del ingreso." - End If - - End If - - End Select - - If importeMovimiento <> 0 Then - If Not ObjMov.AddPrePolizasDetalle(CvePrePoliza, TipoMovimiento, importeMovimiento, Concepto, ConceptoContable, Concepto, FechaMovimiento, If(ConceptoContable = 30, IDCtaContable, IDCtaBeneficiario), -1, CveIE:=CveIE, CveCompra:=CveCompra, CveProveedor:=CveProveedor, CvePersonal:=CvePersonal, CveCreditoDetalle:=CveCreditoDetalle, CveCliente:=CveCliente, ImporteMX:=importeMovimiento, ImporteME:=tImporteMonedaExtranjera, TipoCambio:=TxtTipoCambio.Text.ToDecimal, CveCuenta:=If(ConceptoContable = 30, CveCuentaConta, CveCuentaBeneficiario)) Then - MsgError = "Ocurrió un error al registrar el asiento del ingreso." - End If - End If - - Next - - End If - - - Case "DevDinV" - Dim IdCtaContableAplicar = -1 - Dim ImporteAplicar = 0.0D - Dim ImporteAplicarMN = 0.0D - Dim ImporteAplicarME = 0.0D - Dim ReferenciaAplicar = ObjIE.Folio - Dim ConceptoAplicar = $"Devolución al cliente {PagueseA} {TxtImporte.Text} NC:{SerieFolioDevDin}" - - ImporteAplicar = TxtImporte.Text.ToDecimal - ImporteAplicarME = ImporteAplicar - - 'CONSIDERA COMPLEMENTARIA - If DdlMoneda.SelectedValue.ToEntero > 1 AndAlso UsuarioActual.CveEmpresa.Contiene(1, 119) Then - ImporteAplicarMN = ImporteAplicar - Else - ImporteAplicarMN = (ImporteAplicar * If(DdlMoneda.SelectedValue.ToEntero = 1, 1, TxtTipoCambio.Text.ToDecimal)).RoundSQL() - End If - - 'BANCOS - IdCtaContableAplicar = If(IDCtaContable > 0, IDCtaContable, 0) - If Not ObjMov.AddPrePolizasDetalle(CvePrePoliza, True, ImporteAplicar, ReferenciaAplicar, 30, ConceptoAplicar, Now, IdCtaContableAplicar, -1, CveIE, CveVenta:=CveVentaDevDin, CveCliente:=CveCliente, ImporteMX:=ImporteAplicarMN, ImporteME:=ImporteAplicarME, CveCuenta:=CveCuentaConta) Then - MsgError = "Ocurrió un error al registrar el asiento de bancos de devolución" - Exit Select - End If - - 'BANCOS COMPLEMENTARIA - If DdlMoneda.SelectedValue.ToEntero > 1 AndAlso UsuarioActual.CveEmpresa.Contiene(1, 119) Then - ImporteAplicarMN = ((ImporteAplicar * If(DdlMoneda.SelectedValue.ToEntero = 1, 1, TxtTipoCambio.Text.ToDecimal)) - ImporteAplicar).RoundSQL() - If Not ObjMov.AddPrePolizasDetalle(CvePrePoliza, True, ImporteAplicar, ReferenciaAplicar, 204, ConceptoAplicar, Now, IdCtaContableAplicar, -1, CveIE, CveVenta:=CveVentaDevDin, CveCliente:=CveCliente, ImporteMX:=ImporteAplicarMN, ImporteME:=ImporteAplicarME, CveCuenta:=CveCuentaConta) Then - MsgError = "Ocurrió un error al registrar el asiento de bancos complementaria de devolución" - End If - End If - - 'CANCELA NC - IdCtaContableAplicar = IDCtaBeneficiario - ImporteAplicarMN = (ImporteAplicar * If(DdlMoneda.SelectedValue.ToEntero = 1, 1, TxtTipoCambio.Text.ToDecimal)).RoundSQL() - If Not ObjMov.AddPrePolizasDetalle(CvePrePoliza, True, -(ImporteAplicar), ReferenciaAplicar, 12, ConceptoAplicar, Now, IdCtaContableAplicar, -1, CveIE, CveVenta:=CveVentaDevDin, CveCliente:=CveCliente, ImporteMX:=-(ImporteAplicarMN), ImporteME:=ImporteAplicarME) Then - MsgError = "Ocurrió un error al registrar el asiento de pago de devolución" - Exit Select - End If - - 'IMPUESTOS - If ObjMov.GetPrePolizasDetalle(CvePrePolizaDevDin) Then - Dim PorcentajePagoDevDin = (TxtImporte.Text.ToDecimal / ImporteOriginalDevDin).RoundSQL(6) - Dim CveConceptoContableAplciar = -1 - Dim TipoMovtoAplicar = False - - For Each Dr As DataRow In ObjMov.DtResultados.FiltraParametros("CveConceptoContable IN (13,8,9,38)").Rows - CveConceptoContableAplciar = Dr("CveConceptoContable").ToString.ToEntero - TipoMovtoAplicar = Not CBool(Dr("TipoMovto").ToString) - ImporteAplicar = (Dr("Importe").ToString.ToDecimal * PorcentajePagoDevDin).RoundSQL() - ImporteAplicarMN = (Dr("ImporteMN").ToString.ToDecimal * PorcentajePagoDevDin).RoundSQL() - ImporteAplicarME = (Dr("ImporteME").ToString.ToDecimal * PorcentajePagoDevDin).RoundSQL() - IdCtaContableAplicar = Dr("IdCtaContable").ToString.ToEntero - - If ObjMov.AddPrePolizasDetalle(CvePrePoliza, TipoMovtoAplicar, ImporteAplicar, ReferenciaAplicar, CveConceptoContableAplciar, ConceptoAplicar, Now, IdCtaContableAplicar, -1, CveIE, CveVenta:=CveVentaDevDin, CveCliente:=CveCliente, ImporteMX:=ImporteAplicarMN, ImporteME:=ImporteAplicarME) Then - Select Case CveConceptoContableAplciar - Case 13 - CveConceptoContableAplciar = 61 - Case 8 - CveConceptoContableAplciar = 62 - Case 9 - CveConceptoContableAplciar = 63 - Case 38 - CveConceptoContableAplciar = 39 - End Select - TipoMovtoAplicar = Not TipoMovtoAplicar - If Not ObjMov.AddPrePolizasDetalle(CvePrePoliza, TipoMovtoAplicar, ImporteAplicar, ReferenciaAplicar, CveConceptoContableAplciar, ConceptoAplicar, Now, IdCtaContableAplicar, -1, CveIE, CveVenta:=CveVentaDevDin, CveCliente:=CveCliente, ImporteMX:=ImporteAplicarMN, ImporteME:=ImporteAplicarME) Then - MsgError = "Ocurrió un error al registrar el asiento de impuestos de devolución" - Exit Select - End If - Else - MsgError = "Ocurrió un error al registrar el asiento de impuestos de devolución" - Exit Select - End If - - Next - End If - - Case "DevDinC" - 'asdasdasd - 'asdasdasdasd - Dim IdCtaContableAplicar = -1 - Dim ImporteAplicar = 0.0D - Dim ImporteAplicarMN = 0.0D - Dim ImporteAplicarME = 0.0D - Dim ReferenciaAplicar = ObjIE.Folio - - Dim ConceptoAplicar = $"Devolución de Proveedor {PagueseA} {TxtImporte.Text} NC:{SerieFolioDeCDin}" - - ImporteAplicar = TxtImporte.Text.ToDecimal - ImporteAplicarME = ImporteAplicar - - - 'CONSIDERA COMPLEMENTARIA - If DdlMoneda.SelectedValue.ToEntero > 1 AndAlso UsuarioActual.CveEmpresa.Contiene(1, 119) Then - ImporteAplicarMN = ImporteAplicar - Else - ImporteAplicarMN = (ImporteAplicar * If(DdlMoneda.SelectedValue.ToEntero = 1, 1, TxtTipoCambio.Text.ToDecimal)).RoundSQL() - End If - - Dim TCCompra As Decimal = 1 - Dim TCDocumento As Decimal = 1 - - If DdlMoneda.SelectedValue.ToEntero > 1 AndAlso UsuarioActual.CveEmpresa.Contiene(1, 119) Then - - TCCompra = GlobalTipoCambio(FechaCompra).ToDecimal - TCDocumento = GlobalTipoCambio(TxtFechaDocumento.Text.ToDate).ToDecimal - - If TCCompra <= 0 Then - Alert("No se pudo obtener el tipo de cambio de la nota de crédito.", TipoMensaje.MsgAdvertencia) - End If - - If TCCompra <= 0 Then - Alert("No se pudo obtener el tipo de cambio del documentpo.", TipoMensaje.MsgAdvertencia) - End If - - End If - - - - 'BANCOS - IdCtaContableAplicar = If(IDCtaContable > 0, IDCtaContable, 0) - If Not ObjMov.AddPrePolizasDetalle(CvePrePoliza, False, ImporteAplicar, ReferenciaAplicar, 30, ConceptoAplicar, Now, IdCtaContableAplicar, -1, CveIE, CveCompra:=CveCompraDeCDin, CveProveedor:=CveProveedor, ImporteMX:=ImporteAplicarMN, ImporteME:=ImporteAplicarME, CveCuenta:=CveCuentaConta, TipoCambio:=TCDocumento) Then - MsgError = "Ocurrió un error al registrar el asiento de bancos de devolución" - Exit Select - End If - - - 'BANCOS COMPLEMENTARIA - If DdlMoneda.SelectedValue.ToEntero > 1 AndAlso UsuarioActual.CveEmpresa.Contiene(1, 119) Then - ImporteAplicarMN = ((ImporteAplicar * If(DdlMoneda.SelectedValue.ToEntero = 1, 1, TCDocumento)) - ImporteAplicar).RoundSQL() - If Not ObjMov.AddPrePolizasDetalle(CvePrePoliza, False, ImporteAplicar, ReferenciaAplicar, 204, ConceptoAplicar, Now, IdCtaContableAplicar, -1, CveIE, CveCompra:=CveCompraDeCDin, CveProveedor:=CveProveedor, ImporteMX:=ImporteAplicarMN, ImporteME:=ImporteAplicarME, CveCuenta:=CveCuentaConta, TipoCambio:=TCDocumento) Then - MsgError = "Ocurrió un error al registrar el asiento de bancos complementaria de devolución" - End If - End If - - 'CANCELA NC - IdCtaContableAplicar = IDCtaBeneficiario - ImporteAplicarMN = ImporteAplicar ' (ImporteAplicar * If(DdlMoneda.SelectedValue.ToEntero = 1, 1, TxtTipoCambio.Text.ToDecimal)).RoundSQL() - - If Not ObjMov.AddPrePolizasDetalle(CvePrePoliza, True, (ImporteAplicar), ReferenciaAplicar, 18, ConceptoAplicar, Now, IdCtaContableAplicar, -1, CveIE, CveCompra:=CveCompraDeCDin, CveProveedor:=CveProveedor, ImporteMX:=(ImporteAplicarMN), ImporteME:=ImporteAplicarME, TipoCambio:=TCCompra) Then - MsgError = "Ocurrió un error al registrar el asiento de pago de devolución" - Exit Select - End If - - - 'NC COMPLEMENTARIA - If DdlMoneda.SelectedValue.ToEntero > 1 AndAlso UsuarioActual.CveEmpresa.Contiene(1, 119) Then - - ImporteAplicarMN = ((ImporteAplicar * If(DdlMoneda.SelectedValue.ToEntero = 1, 1, TCCompra)) - ImporteAplicar).RoundSQL() - - If Not ObjMov.AddPrePolizasDetalle(CvePrePoliza, False, -(ImporteAplicar), ReferenciaAplicar, 201, ConceptoAplicar, Now, IdCtaContableAplicar, -1, CveIE, CveCompra:=CveCompraDeCDin, CveProveedor:=CveProveedor, ImporteMX:=-(ImporteAplicarMN), ImporteME:=-(ImporteAplicarME), CveCuenta:=CveCuentaConta, TipoCambio:=TCCompra) Then - MsgError = "Ocurrió un error al registrar el asiento de bancos complementaria de devolución" - End If - - End If - - If TCCompra <> TCDocumento Then - - Dim DiferenciaTC As Decimal = TCCompra - TCDocumento - - Dim DiferenciaImportes As Decimal = Math.Abs((ImporteAplicar * TCCompra) - (ImporteAplicar * TCDocumento)) - - If DiferenciaTC < 0 Then - '64 - If Not ObjMov.AddPrePolizasDetalle(CvePrePoliza, True, DiferenciaImportes, ReferenciaAplicar, 64, ConceptoAplicar, Now, UsuarioActual.Empresa.IdCuentaGananciaCambiaria, -1, CveIE, CveCompra:=CveCompraDeCDin, CveProveedor:=CveProveedor, ImporteMX:=DiferenciaImportes, ImporteME:=0, CveCuenta:=CveCuentaConta, TipoCambio:=TCCompra) Then - MsgError = "Ocurrió un error al registrar el asiento de ganancia cambiaria" - Exit Select - End If - - Else - '65 - If Not ObjMov.AddPrePolizasDetalle(CvePrePoliza, False, DiferenciaImportes, ReferenciaAplicar, 65, ConceptoAplicar, Now, UsuarioActual.Empresa.IdCuentaPerdidaCambiaria, -1, CveIE, CveCompra:=CveCompraDeCDin, CveProveedor:=CveProveedor, ImporteMX:=DiferenciaImportes, ImporteME:=0, CveCuenta:=CveCuentaConta, TipoCambio:=TCCompra) Then - MsgError = "Ocurrió un error al registrar el asiento de perdidada cfambiaria" - Exit Select - End If - - End If - - - - End If - - 'IMPUESTOS - - Dim PorcentajePagoDevDin = (TxtImporte.Text.ToDecimal / ImporteOriginalDevDin).RoundSQL(6) - Dim CveConceptoContableAplciar = -1 - Dim TipoMovtoAplicar = False - - - Dim ObjCompras As New ClsCompras() - If ObjCompras.GetCompras(CveCompraDeCDin, "-1", "-1", -1, -1, UsuarioActual.CveEmpresa) Then - - Dim dr As DataRow = ObjCompras.DtResultados.Rows(0) - If dr IsNot Nothing Then - - Dim CveMonedaDev As Integer = dr("CveMoneda").ToString.ToEntero - Dim TotalCompraDev As Decimal = dr("Total").ToString.ToDecimal - - Dim IVADev As Decimal = dr("IVA").ToString.ToDecimal - Dim IEPSDev As Decimal = dr("IEPS").ToString.ToDecimal - PorcentajeCompraDevDinC = ObjCompras.DtResultados.Rows(0)("PorcentajeIVA").ToString.ToDecimal - - Dim DTCuentas As DataTable = GlobalDTClasificacionPorcentaje(UsuarioActual.CveEmpresa, PorcentajeIVA:=PorcentajeCompraDevDinC) - Dim CveCuentaIVAxAcreditarDevDinC = 0 - Dim CveCuentaIVAAcreditableDevDinC = 0 - Dim IdCtaIVAXAcreditarDevDinC = DTCuentas.Rows(0)("IdCtaIVAXAcreditar").ToString.ToEntero - Dim IdCtaIVAAcreditableDevDinC = DTCuentas.Rows(0)("IdCtaIVAAcreditable").ToString.ToEntero - - - Dim IVADevMN As Decimal = 0 - Dim IEPSDevMN As Decimal = 0 - - - Dim PorcentajeDevolucion As Decimal = ((TxtImporte.Text.ToDecimal * 100D / TotalCompraDev) / 100).RoundSQL(2) - - IVADev = Math.Round(IVADev * PorcentajeDevolucion, 2) - IEPSDev = Math.Round(IEPSDev * PorcentajeDevolucion, 2) - - Dim CveCuentaDevolucionIMPUESTOS As Integer = -1 - Dim IdCtaIVADevolucionIMPUESTOS As Integer = -1 - - - If DdlMoneda.SelectedValue.ToEntero > 1 AndAlso UsuarioActual.CveEmpresa.Contiene(1, 119) Then - IVADevMN = IVADev - IEPSDevMN = IEPSDev - Else - IVADevMN = (IVADev * If(CveMonedaDev = 1, 1, TxtTipoCambio.Text.ToDecimal)).RoundSQL(2) - IEPSDevMN = (IEPSDev * If(CveMonedaDev = 1, 1, TxtTipoCambio.Text.ToDecimal)).RoundSQL(2) - End If - - - Dim ErrorDevolucionImpuestos As Boolean = False - - If IVADev > 0 Then - - CveCuentaDevolucionIMPUESTOS = CveCuentaIVAxAcreditarDevDinC - IdCtaIVADevolucionIMPUESTOS = IdCtaIVAXAcreditarDevDinC - - If ObjMov.AddPrePolizasDetalle(CvePrePoliza, Not TipoMovtoAplicar, -IVADev, ReferenciaAplicar, 14, ConceptoAplicar, Now, IdCtaIVADevolucionIMPUESTOS, -1, CveIE, CveCompra:=CveCompraDeCDin, CveProveedor:=CveProveedor, ImporteMX:=-IVADevMN, ImporteME:=-IVADev, CveCuenta:=CveCuentaDevolucionIMPUESTOS) Then - - CveCuentaDevolucionIMPUESTOS = CveCuentaIVAAcreditableDevDinC - IdCtaIVADevolucionIMPUESTOS = IdCtaIVAAcreditableDevDinC - - If Not ObjMov.AddPrePolizasDetalle(CvePrePoliza, TipoMovtoAplicar, -IVADev, ReferenciaAplicar, 19, ConceptoAplicar, Now, IdCtaIVADevolucionIMPUESTOS, -1, CveIE, CveCompra:=CveCompraDeCDin, CveProveedor:=CveProveedor, ImporteMX:=-IVADevMN, ImporteME:=-IVADev, CveCuenta:=CveCuentaDevolucionIMPUESTOS) Then - MsgError = "Ocurrió un error al registrar el asiento de impuestos de devolución" - ErrorDevolucionImpuestos = True - End If - Else - MsgError = "Ocurrió un error al registrar el asiento de impuestos de devolución" - ErrorDevolucionImpuestos = True - - End If - End If - - - If IEPSDev > 0 Then - 'Dim ObjContabilidad As New ClsContabilidad - If ObjMov.GetRetCuenta(25, UsuarioActual.CveEmpresa) Then - Try - CveCuentaDevolucionIMPUESTOS = ObjMov.DtResultados.Rows(0)("IdCuentaIEPSxAcreditarSIG").ToString.ToEntero - IdCtaIVADevolucionIMPUESTOS = ObjMov.DtResultados.Rows(0)("IdCuentaIEPSxAcreditar").ToString.ToEntero - - If ObjMov.AddPrePolizasDetalle(CvePrePoliza, TipoMovtoAplicar, -IEPSDev, ReferenciaAplicar, 25, ConceptoAplicar, Now, IdCtaIVADevolucionIMPUESTOS, -1, CveIE, CveCompra:=CveCompraDeCDin, CveProveedor:=CveProveedor, ImporteMX:=-IEPSDevMN, ImporteME:=-IEPSDev, CveCuenta:=CveCuentaDevolucionIMPUESTOS) Then - - If ObjMov.GetRetCuenta(26, UsuarioActual.CveEmpresa) Then - Try - CveCuentaDevolucionIMPUESTOS = ObjMov.DtResultados.Rows(0)("IdCuentaIEPSAcreditableSIG").ToString.ToEntero - IdCtaIVADevolucionIMPUESTOS = ObjMov.DtResultados.Rows(0)("IdCuentaIEPSAcreditable").ToString.ToEntero - - If Not ObjMov.AddPrePolizasDetalle(CvePrePoliza, TipoMovtoAplicar, -IEPSDev, ReferenciaAplicar, 26, ConceptoAplicar, Now, IdCtaIVADevolucionIMPUESTOS, -1, CveIE, CveCompra:=CveCompraDeCDin, CveProveedor:=CveProveedor, ImporteMX:=-IEPSDevMN, ImporteME:=-IEPSDev, CveCuenta:=CveCuentaDevolucionIMPUESTOS) Then - MsgError = "Ocurrió un error al registrar el asiento de impuestos de devolución" - ErrorDevolucionImpuestos = True - End If - - - Catch ex As Exception - Alert("Se presento un error al obtener las cuentas de IEPS acreditable.") - ErrorDevolucionImpuestos = True - End Try - - End If - - Else - MsgError = "Ocurrió un error al registrar el asiento de impuestos de devolución" - ErrorDevolucionImpuestos = True - End If - - Catch ex As Exception - Alert("Se presento un error al obtener las cuentas de IEPS acreditable.") - ErrorDevolucionImpuestos = True - End Try - End If - End If - - If ErrorDevolucionImpuestos Then - MsgError = MsgError & " Error en devolución compra." - End If - - - End If - End If - - - - Case "EGSCREDITO" - - Dim ConceptoContable As Integer - Dim TipoMovimiento As Boolean - Dim importeMovimiento As Decimal - Dim FechaMovimiento As Date = Now - Dim Concepto As String = "" - Dim Referencia As String = PagueseA - - Dim importeMX As Decimal - Dim Multiplicador As Integer - - If ObjMov.GetPlantillaConceptos(UsuarioActual.CveEmpresa, CvePlantillaPoliza) Then - - For Each Row As DataRow In ObjMov.DtResultados.Rows - - ConceptoContable = Row("CveConcepto").ToString.ToEntero - TipoMovimiento = If(Row("TipoMovto").ToString = "True", True, False) - importeMovimiento = 0 - Multiplicador = (Row("Multiplicador").ToString.ToEntero) - Concepto = ObjMov.ObtenerConceptoEmpresa(UsuarioActual.CveEmpresa, ConceptoContable, PagueseA, "", ObjIE.Folio) - - Select Case ConceptoContable - - Case 30 - importeMovimiento = TxtImporte.Text.ToDecimal - importeMX = importeMovimiento - If tCveMoneda > 1 AndAlso UsuarioActual.CveEmpresa = 119 Then - 'Agregamos complementaria - Dim TC As Decimal = TxtTipoCambio.Text.ToDecimal - - If Not ObjMov.AddPrePolizasDetalle(CvePrePoliza, TipoMovimiento, 0, Concepto, 204, Concepto, FechaMovimiento, IDCtaContableComplementaria, -1, CveIE:=CveIE, CveCompra:=CveCompra, CveProveedor:=CveProveedor, CvePersonal:=CvePersonal, CveCreditoDetalle:=CveCreditoDetalle, CveCliente:=CveCliente, ImporteMX:=(importeMovimiento * TC - importeMovimiento).RoundSQL, ImporteME:=importeMovimiento, TipoCambio:=TC, CveCuenta:=UsuarioActual.Empresa.CveCuentaIVAxTrasladar) Then - MsgError = "Ocurrió un error al registrar el asiento del ingreso." - End If - End If - Case 42 - - importeMovimiento = TxtImporte.Text.ToDecimal - importeMX = importeMovimiento - - - - Case 46 - If TxtInteresMoratorio.Text.ToDecimal > 0 Then - importeMovimiento = TxtInteresMoratorio.Text.ToDecimal - importeMX = importeMovimiento - Else - importeMovimiento = 0 - importeMX = 0 - End If - Case 48 - - importeMovimiento = TxtImporte.Text.ToDecimal - importeMX = importeMovimiento - - End Select - - If importeMovimiento <> 0 Then - If Not ObjMov.AddPrePolizasDetalle(CvePrePoliza, TipoMovimiento, importeMovimiento, Concepto, ConceptoContable, Concepto, FechaMovimiento, If(ConceptoContable = 30, IDCtaContable, IDCtaBeneficiario), -1, CveIE:=CveIE, CveCompra:=CveCompra, CveProveedor:=CveProveedor, CvePersonal:=CvePersonal, CveCreditoDetalle:=CveCreditoDetalle, CveCliente:=CveCliente, ImporteMX:=importeMovimiento, ImporteME:=tImporteMonedaExtranjera, TipoCambio:=TxtTipoCambio.Text.ToDecimal, CveCuenta:=If(ConceptoContable = 30, CveCuentaConta, CveCuentaBeneficiario)) Then - MsgError = "Ocurrió un error al registrar el asiento del ingreso." - End If - End If - - Next - End If - - Case Else - Dim TipoMovimiento As Boolean = True - - If Opcion.Contiene("ANTC") Then - TipoMovimiento = False - End If - - If CveConceptoCompra = 10 AndAlso DdlMoneda.SelectedValue.ToEntero > 1 AndAlso UsuarioActual.CveEmpresa.Contiene(1, 119) Then - IDCtaBeneficiario = IdCtaAnticipoExtranjera - CveCuentaConta = 0 - End If - - 'MOVIMIENTOS EGRESOS - If ObjMov.AddPrePolizasDetalle(CvePrePoliza, TipoMovimiento, TxtImporte.Text.ToDecimal, Ref, CveConceptoContable, Conc, Now, IDCtaContable, -1, CveIE, CveCompra:=CveCompra, CveProveedor:=CveProveedor, CveOC:=CveOrdenCompra, CvePersonal:=CvePersonal, CveCreditoDetalle:=CveCreditoDetalle, CveCliente:=CveCliente, ImporteMX:=TxtImporte.Text.ToDecimal, ImporteME:=tImporteMonedaExtranjera, CveCuenta:=CveCuentaConta, CveIEDevolucion:=DDlCheques.SelectedValue.ToEntero) Then - Dim IVA As Decimal = 0 ' TxtImporte.Text.ToDouble * HdnProvPorIVA.Value.ToDouble - If ObjMov.AddPrePolizasDetalle(CvePrePoliza, Not TipoMovimiento, TxtImporte.Text.ToDecimal - IVA - CIF, Ref, CveConceptoCompra, Conc, Now, IDCtaBeneficiario, -1, CveIE, CveCompra:=CveCompra, CveProveedor:=CveProveedor, CveOC:=CveOrdenCompra, CvePersonal:=CvePersonal, CveCreditoDetalle:=CveCreditoDetalle, CveCliente:=CveCliente, ImporteMX:=TxtImporte.Text.ToDecimal, ImporteME:=tImporteMonedaExtranjera, CveCuenta:=CveCuentaBeneficiario, CveIEDevolucion:=DdlIEAcreedor.SelectedValue.ToEntero) Then - If IVA > 0 AndAlso Not ObjMov.AddPrePolizasDetalle(CvePrePoliza, False, IVA, Ref, 19, Conc, Now, IDCtaBeneficiario, -1, CveIE, CveCompra:=CveCompra, CveProveedor:=CveProveedor, CveOC:=CveOrdenCompra, CvePersonal:=CvePersonal, CveCreditoDetalle:=CveCreditoDetalle, CveCliente:=CveCliente, ImporteMX:=TxtImporte.Text.ToDecimal, ImporteME:=tImporteMonedaExtranjera, CveCuenta:=CveCuentaBeneficiario, CveIEDevolucion:=DDlCheques.SelectedValue.ToEntero) Then - MsgError = "Detalle" - End If - 'intereses pagados - If CIF > 0 AndAlso Not ObjMov.AddPrePolizasDetalle(CvePrePoliza, False, CIF, Ref, 46, Conc, Now, IDCtaBeneficiario, -1, CveIE, CveCompra:=CveCompra, CveProveedor:=CveProveedor, CveOC:=CveOrdenCompra, CvePersonal:=CvePersonal, CveCreditoDetalle:=CveCreditoDetalle, CveCliente:=CveCliente, ImporteMX:=CIF, ImporteME:=tImporteMonedaExtranjera, CveCuenta:=CveCuentaBeneficiario, CveIEDevolucion:=DDlCheques.SelectedValue.ToEntero) Then - MsgError = "Detalle" - End If - Else - MsgError = "no se pudo insertar el detalle de la póliza2" - End If - Else - MsgError = "no se pudo insertar el detalle de la póliza" - End If - - 'BANCOS COMPLEMENTARIA - If DdlMoneda.SelectedValue.ToEntero > 1 AndAlso UsuarioActual.CveEmpresa.Contiene(1, 119) Then - Dim ImporteAplicar As Decimal = TxtImporte.Text.ToDecimal - Dim TCPago As Decimal = GlobalTipoCambio(TxtFechaDocumento.Text.ToDate).ToDecimal - Dim ImporteAplicarMN = (ImporteAplicar * TCPago - ImporteAplicar).RoundSQL() - If Not ObjMov.AddPrePolizasDetalle(CvePrePoliza, TipoMovimiento, ImporteAplicar, Ref, 204, Conc, Now, IDCtaContableComplementaria, -1, CveIE, CveCompra:=CveCompraDeCDin, CveProveedor:=CveProveedor, ImporteMX:=ImporteAplicarMN, ImporteME:=ImporteAplicar, CveCuenta:=CveCuentaConta, TipoCambio:=TCPago) Then - MsgError = "Ocurrió un error al registrar el asiento de bancos complementaria de devolución" - End If - - If CveConceptoCompra = 10 Then - If Not ObjMov.AddPrePolizasDetalle(CvePrePoliza, Not TipoMovimiento, ImporteAplicar, Ref, 266, Conc, Now, IdCtaAnticipoComplementaria, -1, CveIE, CveCompra:=CveCompraDeCDin, CveProveedor:=CveProveedor, ImporteMX:=ImporteAplicarMN, ImporteME:=ImporteAplicar, CveCuenta:=0, TipoCambio:=TCPago) Then - MsgError = "Ocurrió un error al registrar el asiento de bancos complementaria de devolución" - End If - End If - - - End If - - - - If Opcion.Contiene("EGSSINFACT") AndAlso CveSolicitudViatico > 0 AndAlso MsgError = "" Then - If Not ObjIE.UpdateSolicitudesViaticosIE(CveSolicitudViatico, CveIE) Then - MsgError = "Ocurrió un error al vincular el egreso con la solicitud de viatico." - End If - End If - - End Select - - 'El movimiento 1 es el de Venta - 'Conta SIG - If UsuarioActual.Empresa.Funcionalidad(200) = "1" And MsgError = "" And UsuarioActual.Empresa.UsaContabilidadSIG Then - If CveCuentaBeneficiario > 0 And CveCuentaConta > 0 Then - If ObjMov.ContabilizarPrePolizaSIG(CvePrePoliza, UsuarioActual.CveUsuario, UsuarioActual.Empresa) Then - IDPoliza = ObjMov.ContaIdPoliza - Else - Alert("Ocurrio un error al contabilizar en SIG, pongase en contacto con Soporte Técnico", TipoMensaje.MsgError) - End If - Else - If CveCuentaConta < 1 Then - Alert("No se puede contabilizar la Prepoliza en SIG debido a que la cuenta de Bancos es invalida", TipoMensaje.MsgAdvertencia) - End If - If CveCuentaBeneficiario < 1 Then - Alert("No se puede contabilizar la Prepoliza en SIG debido a que las cuenta del Beneficiario es invalida", TipoMensaje.MsgAdvertencia) - End If - End If - End If - - 'Conta ContPAQ - If UsuarioActual.Empresa.Funcionalidad(200) = "1" And MsgError = "" And UsuarioActual.Empresa.UsaContabilidad 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 - Dim FolioPoliza As Integer - Dim Fecha As Date = TxtFechaDocumento.Text.ToDate - Dim TipoChq As String = "" - Dim Total As Double = TxtImporte.Text.ToDouble - - Dim Conta As New ClsContPAQi(UsuarioActual.Empresa) - Conta.IniciaTransacSQL() - - If DdlTipoTransaccion.SelectedValue = "1" Then TipoChq = "CHQ" - ConceptoRenglon = String.Format("Anticipo {0}", PagueseA) - - IDPoliza = Conta.AddPoliza(2, ConceptoRenglon, Total, Total, UsuarioActual.CveUsuario, Fecha, ObjIE.Folio, TipoChq) - - If IDPoliza > 0 Then - FolioPoliza = Conta.Folio - Referencia = ObjIE.Folio - ConceptoRenglon = String.Format("Anticipo {0} {1}", PagueseA, TxtObservaciones.Text) - - Total = TxtImporte.Text.ToDouble - - If Not Conta.AddMovimiento(IDPoliza, IDCtaContable, True, Total, Referencia, ConceptoRenglon, 0, Fecha, "") Then MsgError = "No se insertó el movimiento" - - If Not Conta.AddMovimiento(IDPoliza, IDCtaBeneficiario, False, Total, Referencia, ConceptoRenglon, 0, Fecha, "") Then MsgError = "No se insertó el movimiento" - - Else - MsgError = "No se insertó el encabezado" - End If - - If MsgError = "" Then - Conta.Commit() - - Conta.AjustaPoliza(IDPoliza) - 'actualizar la conta del IE - ObjIE.UpdateIEPrePoliza(Fecha, FolioPoliza.ToString, IDPoliza, CvePrePoliza, CveIE, 0) - Else - Conta.RollBack() - IDPoliza = 0 - End If - - Conta.Dispose() - End If - - 'Notificación de Pago - If TxtNotificarA.Text.Trim <> "" Then - NotificacionPago(CveIE, TxtNotificarA.Text.Trim) - End If - - Else - MsgError = "No se pudo insertar la póliza" - End If - - Else - MsgError = "No se insertó el encabezado" - End If - - End If - - Else - Msg.Append("El Documento se guardó correctamente.") - - End If - - 'SOLICITUD DE ANTICIPO OC - If MsgError = "" Then - MsgError = GuardaSolicitudAnticipoOC(ObjOC) - End If - - If MsgError = "" Then - 'VIATICOS - If ChkAplicaViatico.Checked Then - Dim Retorno As String = TimbrarNomina12(CvePersonal) - If Retorno <> "" Then MsgError = $"{MsgError} {Retorno}" : Msg.Clear() : CveIE = -1 - If Retorno <> "" Then - Alert(Retorno, TipoMensaje.MsgError) - End If - End If - End If - - If MsgError = "" Then - If ObjMov.ValidacionPrePolizaCuadre(CvePrePoliza, -1) Then - If ObjMov.ValorPolizaDescuadre > 0 Then - ' MsgError = ObjMov.MensajePolizaDescuadre - GuardaLogAD($"Bancos/IE | Error:{ObjMov.MensajePolizaDescuadre} Diferencia:{ObjMov.ValorDiferencia} | CvePrePoliza:{CvePrePoliza}", "LogPrePolizas") - End If - Else - MsgError = "No se pudo validar la prepoliza de cuadre." - End If - End If - - If MsgError = "" Then - 'IMPRIME CHEQUE - 'GeneraChequePDF(CveIE, UsuarioActual.Empresa, IDPoliza) - If Msg.ToString = "" Then - Msg.Append("El Documento se guardo correctamente") - End If - Dim Archivo As System.IO.FileInfo = Nothing - 'VERIFICA SI EXISTE EL FORMATO - If DdlTipoTransaccion.SelectedValue.ToEntero.Contiene(2, 8, 9) Then - Archivo = New System.IO.FileInfo(String.Format("{0}Formatos/Transferencia.rdlc", UsuarioActual.Empresa.Ruta)) - ElseIf DdlTipoTransaccion.SelectedValue.ToEntero.Contiene(1) Then - Archivo = New System.IO.FileInfo(String.Format("{0}Formatos/CHQ-{1}.rdlc", UsuarioActual.Empresa.Ruta, DdlCuenta.SelectedValue.ToEntero)) - If Not Archivo.Exists Then - Archivo = New System.IO.FileInfo(String.Format("{0}\Empresas\Grales\Formatos\CHQ.rdlc", AppDomain.CurrentDomain.BaseDirectory)) - End If - ElseIf DdlTipoTransaccion.SelectedValue.ToEntero.Contiene(6) And UsuarioActual.CveEmpresa = 72 Then - Archivo = New System.IO.FileInfo(String.Format("{0}Formatos/ComprobanteEgreso.rdlc", UsuarioActual.Empresa.Ruta, DdlCuenta.SelectedValue.ToEntero)) - End If - - If Archivo IsNot Nothing Then - If Archivo.Exists Then - Msg.AppendFormat("

{1} ", Encripta(String.Format("OP=IECHEQUE&CVEIE={0}", CveIE)), String.Format("Imprimir {0}", DdlTipoTransaccion.SelectedItem)) - End If - End If - - If IDPoliza > 0 Then - Msg.AppendFormat("

Ver Póliza", IDPoliza) - End If - - 'AUTO DESCARGAR PDF PARA COMPU - If UsuarioActual.CveEmpresa.Contiene(72, 1, 2) And CveSolicitudViatico > 0 Then - If DdlTipoTransaccion.SelectedValue.ToEntero.Contiene(1, 2, 6, 8, 9) Then - RegistraScript($"window.location.href = '/Compras/PopUpVerFactura.aspx?P={Encripta(String.Format("OP=IE&CVEIE={0}", CveIE))}'", String.Format("Imprimir {0}", DdlTipoTransaccion.SelectedItem)) - End If - End If - ObjIE.Commit() - - Else - ObjIE.RollBack() - End If - - If Msg.ToString <> "" Then - If CveOCSolicitudAnticipo > 0 Then - Alert("El Documento se guardo correctamente", TipoMensaje.MsgInformacion, "document.location.href=""../Inicio.aspx""") - Else - If ChkAplicaViatico.Checked Then - Dim SerieFolio = $"VIA-{Folio}" - Msg.Clear() - Msg.AppendFormat("", Encripta(String.Format("OP=DesXmlVIA&SERIEFOLIO={0}&TIPO={1}", SerieFolio, "Viaticos"))) - End If - - Dim AccionJS = "" - - If Opcion = "DevDinV" Then - AccionJS = $"document.location.href=""/Ventas/Clientes.aspx?CveCliente={CveCliente}"";" - - AccionJS = String.Format("document.location.href=""{0}"";", HttpContext.Current.Request.Url.AbsolutePath) - Else - AccionJS = String.Format("document.location.href=""{0}"";", HttpContext.Current.Request.Url.PathAndQuery) - End If - - - If Request("Opcion") IsNot Nothing AndAlso Request("Opcion").ToString.Contiene("EGSCREDITO") Then - AccionJS = $"document.location.href=""/Bancos/Creditos.aspx?CveCredito={Request("CveCredito")}"";" - Alert(Msg.ToString, TipoMensaje.MsgInformacion, AccionJS) - Else - Alert(Msg.ToString, TipoMensaje.MsgInformacion, String.Format("document.location.href=""{0}"";", HttpContext.Current.Request.Url.PathAndQuery)) - End If - - - - - End If - End If - - RecargaGlobalCuentasBancarias() - ObjIE.Dispose() - ObjMov.Dispose() - If ObjComp IsNot Nothing Then ObjComp.Dispose() - - - End Sub - -#Region " NOTIFICACION PAGO " - Private Sub NotificacionPago(CveIE As Integer, CorreoNotificarA As String) - Dim Param As New List(Of String) - - Param.Add(CorreoNotificarA) 'Para - Param.Add("Notificaciones de pago") 'Asunto - Param.Add(GeneraCorreo2(CveIE)) 'Body - Param.Add(CveIE.ToString) 'CveIE - Param.Add(If(ComprobanteIE <> "", String.Format("{0}IE\{1}", UsuarioActual.Empresa.Ruta, ComprobanteIE), "")) 'Archivo Adjunto - - Dim Hilo As New Threading.Thread(AddressOf MandaCorreo) - Hilo.Start(Param) - End Sub - Private Sub MandaCorreo(data As Object) - Dim Parametros As List(Of String) = DirectCast(data, List(Of String)) - - Dim Mail As New ClsSisMail() - Dim Para As String = If(Parametros(0) IsNot Nothing, Parametros(0), "") - Dim Asunto As String = If(Parametros(1) IsNot Nothing, Parametros(1), "") - Dim Body As String = If(Parametros(2) IsNot Nothing, Parametros(2), "") - Dim CveIE As Integer = If(Parametros(3) IsNot Nothing, Parametros(3).ToEntero, 0) - - Dim ListaArchivos As New List(Of ClsSisMail.ArchivoMail) - If Parametros(4) IsNot Nothing AndAlso Parametros(4) <> "" Then - ListaArchivos.Add(New ClsSisMail.ArchivoMail With {.Ruta = Parametros(4).ToString}) - End If - - If Mail.SendMail(ClsPaginas.EmpresaNotificaciones, Para, Asunto, Body, Archivos:=ListaArchivos) Then - Dim objIE As New ClsBancos - objIE.UpdateBancos_IENotificaciones(1, "-1", "-1", CveIE) - objIE.Dispose() - End If - End Sub - - Private Function GeneraCorreo2(CveIE As Integer) As String - Dim strBody As New StringBuilder - Dim objIE As New ClsBancos - - If objIE.GetBancosIE(CveIE, UsuarioActual.CveEmpresa) Then - strBody.Append(" ") - strBody.Append(" ") - strBody.Append(" ") - strBody.Append(" ") - strBody.Append(" ") - strBody.AppendFormat("
") - strBody.AppendFormat("
") - strBody.AppendFormat(" {0}", UsuarioActual.Empresa.Empresa) - strBody.AppendFormat(" ") - strBody.AppendFormat(" ") - strBody.AppendFormat(" ", UsuarioActual.Empresa.Direccion) - strBody.AppendFormat(" ") - strBody.AppendFormat(" ") - strBody.AppendFormat(" ", UsuarioActual.Empresa.Colonia) - strBody.AppendFormat(" ") - strBody.AppendFormat(" ") - strBody.AppendFormat(" ", UsuarioActual.Empresa.Ciudad, UsuarioActual.Empresa.Estado, UsuarioActual.Empresa.CP) - strBody.AppendFormat(" ") - strBody.AppendFormat(" ") - strBody.AppendFormat(" ", UsuarioActual.Empresa.RFC) - strBody.AppendFormat(" ") - strBody.AppendFormat("
{0}
Col. {0}
{0}, {1}, C.P.{2}
RFC {0}
") - strBody.AppendFormat("
") - strBody.AppendFormat("


") - - 'strBody.AppendFormat("
") - 'strBody.AppendFormat("
") - 'strBody.AppendFormat(" ") - 'strBody.AppendFormat(" ") - - 'If objIE.CveTipoTransaccion = 1 Then ' cuando es cheque - ' strBody.Append(" ") - ' strBody.Append(" ") - ' strBody.Append(" ") - 'End If - - 'If objIE.CveTipoTransaccion = 2 Then ' cuando es transf - ' strBody.Append(" ") - ' strBody.Append(" ") - ' strBody.Append(" ") - 'End If - - 'strBody.Append(" ") - 'strBody.AppendFormat(" ") - 'strBody.Append(" ") - 'strBody.Append("
Favor de pasar a nuestras oficinas por el cheque con la siguientes instrucciones.
Notificación de transferencia de pago realizada.
 
") - 'strBody.AppendFormat("
") - 'strBody.Append("
") - - - strBody.AppendFormat("
") - strBody.AppendFormat(" ") - strBody.AppendFormat(" ") - strBody.AppendFormat(" ") - strBody.AppendFormat(" ") - strBody.AppendFormat("
") - strBody.AppendFormat("
") - strBody.AppendFormat(" Beneficiario:{0} ", objIE.PagueseA) - strBody.AppendFormat(" ") - strBody.AppendFormat(" ") - strBody.AppendFormat(" ") - strBody.AppendFormat(" ") - strBody.AppendFormat(" ") - strBody.AppendFormat(" ") - strBody.AppendFormat(" ") - strBody.AppendFormat(" ", objIE.TipoTransaccion) - strBody.AppendFormat(" ") - strBody.AppendFormat(" ") - strBody.AppendFormat(" ") - strBody.AppendFormat(" ", objIE.Banco) - strBody.AppendFormat(" ") - strBody.AppendFormat(" ") - strBody.AppendFormat(" ") - strBody.AppendFormat(" ", objIE.NumCuenta) - strBody.AppendFormat(" ") - If objIE.CuentaDepositado.ToString <> "" Then - strBody.AppendFormat(" ") - strBody.AppendFormat(" ") - strBody.AppendFormat(" ", objIE.CuentaDepositado) - strBody.AppendFormat(" ") - End If - strBody.AppendFormat(" ") - strBody.AppendFormat(" ") - strBody.AppendFormat(" ", objIE.FechaDocumento.ToString("dd/MM/yyyy")) - strBody.AppendFormat(" ") - strBody.AppendFormat(" ") - strBody.AppendFormat(" ") - strBody.AppendFormat(" ", objIE.Importe.FormatoNumero, objIE.Moneda) - strBody.AppendFormat(" ") - strBody.AppendFormat(" ") - strBody.AppendFormat(" ") - strBody.AppendFormat(" ", objIE.Observaciones) - strBody.AppendFormat(" ") - strBody.AppendFormat(" ") - strBody.AppendFormat(" ") - strBody.AppendFormat(" ") - strBody.AppendFormat("
Movimiento:{0}
Banco:{0}
Cuenta:{0}
Cuenta Destino:{0}
Fecha:{0}
Importe:$ {0} {1}
Observaciones:{0}
") - strBody.AppendFormat("
") - strBody.AppendFormat("
") - strBody.AppendFormat("
") - strBody.AppendFormat("
") - strBody.AppendFormat("
") - - - 'MOVIMIENTOS CHEQUE - 'If objIE.GetBancosIEMovimientos(CveIE, UsuarioActual.CveEmpresa) Then - ' Dim Textov33 As String = "" - ' If UsuarioActual.Empresa.Funcionalidad(520) = "1" Then - ' Textov33 = "Favor de emitir complemento de pago de los siguientes documentos" - ' End If - - ' strBody.AppendFormat("
") - ' strBody.AppendFormat(" ") - ' strBody.AppendFormat(" ") - ' strBody.AppendFormat(" ") - ' strBody.AppendFormat(" ") - ' strBody.AppendFormat("
") - ' strBody.AppendFormat("
") - ' strBody.AppendFormat(" Documentos abonados o pagados
{0}
", Textov33) - ' strBody.AppendFormat(" ") - ' strBody.AppendFormat(" ") - ' strBody.AppendFormat(" ") - ' strBody.AppendFormat(" ") - ' strBody.AppendFormat(" ") - ' strBody.AppendFormat(" ") - ' strBody.AppendFormat(" ") - - - ' For Each dr As DataRow In objIE.DtResultados.FiltraParametros("CveConceptoContable IN (17) AND CveCompra > 0").Rows - ' strBody.AppendFormat(" ") - ' strBody.AppendFormat(" ", dr("Fecha").ToString.ToDate.ToShortDateString()) - ' strBody.AppendFormat(" ", dr("SerieFolio").ToString) - ' strBody.AppendFormat(" ", dr("Importe").ToString.FormatoNumero) - ' strBody.AppendFormat(" ", dr("FolioFiscal")) - ' strBody.AppendFormat(" ") - ' Next - - - ' strBody.AppendFormat(" ") - ' strBody.AppendFormat(" ") - ' strBody.AppendFormat(" ") - ' strBody.AppendFormat("
FechaFacturaImporte ($)Folio Fiscal
{0}{0}$ {0}{0}
") - ' strBody.AppendFormat("
") - ' strBody.AppendFormat("
") - ' strBody.AppendFormat("
") - ' strBody.AppendFormat("
") - ' strBody.AppendFormat("
") - 'End If - - strBody.Append("
Favor de no responder a este correo.
") - - strBody.Append("") - End If - - objIE.Dispose() - Return strBody.ToString + End If + + 'If CveIE > 0 Then + ' DdlProveedores.Visible = False + ' LblBeneficiario.Visible = True + ' LblBeneficiario.Text = GlobalDTCompProveedores(UsuarioActual.CveEmpresa).FiltraParametros($"CveProveedor = {CveProveedor}")(0)("RazonSocial").ToString + 'End If + + + + + RecargaGlobalCuentasBancarias() + ObjIE.Dispose() + ObjIE2.Dispose() + UPPP.Update() + End Sub + Private Sub CargaGvRH() + GvRH.DataSource = DtGvRH + GvRH.DataBind() + UpGvRH.Update() + End Sub + +#Region " CARGA PROVEEDOR " + Protected Sub DdlProveedores_selectedindexchange(sender As Object, e As EventArgs) + HdnCveProveedor.Value = DdlProveedores.SelectedValue + HdnCvePersonal.Value = "-1" + ViewState("CveProveedor") = HdnCveProveedor.Value.ToEntero + ViewState("CvePersonal") = "-1" + ViewState("CveCliente") = "-1" + + CargaProveedor(HdnCveProveedor.Value.ToEntero, "-1") + End Sub + + Private Sub CargaProveedor(ByVal CveProveedor As Integer, RFC As String) + Dim ObjProveedor As New ClsCompProveedores() + + If ObjProveedor.GetProveedores(ClsCompProveedores.TipoConsulta.ParaUsoEnEmpresa, CveProveedor, "-1", "-1", "-1", "-1", RFC, "-1", "-1", -1, UsuarioActual.CveEmpresa) Then + If ObjProveedor.DtResultados.Rows.Count > 0 Then + TxtNotificarA.Text = ObjProveedor.NotificarA.Trim + TxtParaMail.Text = ObjProveedor.CorreoCobranza + TxtCC.Text = ObjProveedor.NotificarA.Trim + RazonSocial = ObjProveedor.DtResultados(0)("RazonSocial").ToString + HdnProvPorIVA.Value = ObjProveedor.IVA.ToString + HdnProvPorRetIVA.Value = ObjProveedor.RetIVA.ToString + HdnProvPorRetISR.Value = ObjProveedor.RetISR.ToString + Dim EsDevolucion As Boolean = False + + If Request("Opcion") IsNot Nothing AndAlso Request("Opcion") = "DevDinC" Then + EsDevolucion = True + RBL.SelectedValue = "P" + RBL.Enabled = False + DdlProveedores.Visible = True + DdlProveedores.Enabled = True + + IDCtaBeneficiarioComplementaria = ObjProveedor.IdCtaContProveedoresComplementaria + + DdlProveedores.SelectedText = ObjProveedor.NombreComercial + DdlProveedores.SelectedValue = ObjProveedor.CveProveedor.ToString + + End If + + Select Case RBL.SelectedValue + Case "P" + IDCtaBeneficiario = ObjProveedor.IdCtaContAnticipos : CveCuentaBeneficiario = ObjProveedor.CveCuentaAnticipos + IdCtaAnticipoExtranjera = ObjProveedor.IdCtaContAnticiposExtranjera : IdCtaAnticipoComplementaria = ObjProveedor.IdCtaContAnticiposComplementaria + If EsDevolucion Then + IDCtaBeneficiario = ObjProveedor.IdCtaContProveedores : CveCuentaBeneficiario = ObjProveedor.CveCuentaProveedores + End If + Case "DD" : IDCtaBeneficiario = ObjProveedor.IdCtaContDeudor : CveCuentaBeneficiario = ObjProveedor.CveCuentaDeudor + Case "AC" : IDCtaBeneficiario = ObjProveedor.IdCtaContAcreedor : CveCuentaBeneficiario = ObjProveedor.CveCuentaAcreedor + Case "DP" : IDCtaBeneficiario = ObjProveedor.IdCtaContDocsXPagar : CveCuentaBeneficiario = ObjProveedor.CveCuentaDocsXPagar + Case Else + IDCtaBeneficiario = ObjProveedor.IdCtaContProveedores + CveCuentaBeneficiario = ObjProveedor.CveCuentaProveedores + End Select + + + If Request("Opcion") IsNot Nothing AndAlso Request("Opcion").ToString.Contiene("EGSCREDITO") Then + + IDCtaBeneficiario = ObjProveedor.IdCtaContAcreedor + CveCuentaBeneficiario = ObjProveedor.CveCuentaAcreedor + + If Not IDCtaBeneficiario > 0 Then + Alert("No se pudo cargar IDCtaBeneficiario", TipoMensaje.MsgAdvertencia) + End If + + End If + + + If UsuarioActual.Empresa.UsaAC OrElse UsuarioActual.Empresa.Funcionalidad(200) = "1" Then + If IDCtaBeneficiario = 0 And UsuarioActual.Empresa.UsaContabilidad Then + Alert("El Beneficiario no tiene cuenta contable vinculada. Por favor rectifique y vuelva a intentar.", TipoMensaje.MsgAdvertencia) + BtnGuardar.Enabled = False + ElseIf CveCuentaBeneficiario = 0 And UsuarioActual.Empresa.UsaContabilidadSIG Then + Alert("El Beneficiario no tiene cuenta contable vinculada en SIG. Por favor rectifique y vuelva a intentar.", TipoMensaje.MsgAdvertencia) + BtnGuardar.Enabled = False + Else + BtnGuardar.Enabled = True + End If + UpGuardar.Update() + End If + + CargaCuentasDepositos() + Else + Alert("El Proveedor solicitado no existe, por favor intente de nuevo.", TipoMensaje.MsgAdvertencia) + End If + End If + ObjProveedor.Dispose() + End Sub +#End Region + +#Region " CARGA CLIENTE " + Protected Sub DdlCliente_selectedindexchange(sender As Object, e As EventArgs) + HdnCveCliente.Value = DdlCliente.SelectedValue + HdnCveProveedor.Value = "-1" + ViewState("CveCliente") = HdnCveCliente.Value.ToEntero + ViewState("CveProveedor") = -1 + ViewState("CvePersonal") = -1 + CargaCliente(HdnCveCliente.Value.ToEntero) + End Sub + + Private Sub CargaCliente(ByVal CveCliente As Integer) + Dim ObjCliente As New ClsClientes + + If ObjCliente.GetClientes(CveCliente, "-1", "-1", "-1", "-1", "-1", "-1", -1, UsuarioActual.CveEmpresa) Then + If ObjCliente.DtResultados.Rows.Count > 0 Then + + HdnProvPorIVA.Value = "0" 'ObjProveedor.IVA.ToString + HdnProvPorRetIVA.Value = "0" 'ObjProveedor.RetIVA.ToString + HdnProvPorRetISR.Value = "0" 'ObjProveedor.RetISR.ToString + IDCtaBeneficiario = ObjCliente.IdCtaContAnticipos + IDCtaBeneficiarioComplementaria = ObjCliente.IdCtaContCompAnticipos + CveCuentaBeneficiario = ObjCliente.CveCuentaAnticipos + CorreoCobranzaCliente = ObjCliente.CobranzaCorreo + + If Request("Opcion") IsNot Nothing AndAlso Request("Opcion") = "DevDinV" Then + IDCtaBeneficiario = ObjCliente.IdCtaContClientes + IDCtaBeneficiarioComplementaria = ObjCliente.IdCtaContCompClientes + DdlCliente.SelectedText = ObjCliente.NombreComercial + DdlCliente.SelectedValue = ObjCliente.CveCliente.ToString + End If + + If UsuarioActual.Empresa.UsaAC OrElse UsuarioActual.Empresa.Funcionalidad(200) = "1" Then + If IDCtaBeneficiario = 0 AndAlso UsuarioActual.Empresa.UsaContabilidad Then + Alert("El Beneficiario no tiene cuenta contable vinculada. Por favor rectifique y vuelva a intentar.", TipoMensaje.MsgAdvertencia) + BtnGuardar.Enabled = False + ElseIf CveCuentaBeneficiario = 0 AndAlso UsuarioActual.Empresa.UsaContabilidadSIG Then + Alert("El Beneficiario no tiene cuenta contable vinculada en SIG. Por favor rectifique y vuelva a intentar.", TipoMensaje.MsgAdvertencia) + BtnGuardar.Enabled = False + Else + BtnGuardar.Enabled = True + End If + UpGuardar.Update() + End If + + CargaCuentasDepositos() + + Else + Alert("El Cliente solicitado no existe, por favor intente de nuevo.", TipoMensaje.MsgAdvertencia) + End If + End If + ObjCliente.Dispose() + End Sub +#End Region + +#Region " CARGA PERSONAL " + Protected Sub CargaDDLPersonal() + Dim ObjPersonal As New ClsRH + If ObjPersonal.GetPersonal(-1, UsuarioActual.CveEmpresa) Then + If ObjPersonal.DtResultados.Rows.Count > 0 Then + DdlPersonal.DataSource = ObjPersonal.DtResultados + DdlPersonal.DataBind() + DdlPersonal.Items.Insert(0, New ListItem("Seleccione Personal", "-1")) + End If + End If + ObjPersonal.Dispose() + End Sub + + Protected Sub DdlPersonal_SelectedIndexChanged(sender As Object, e As EventArgs) + HdnCveProveedor.Value = "-1" + HdnCvePersonal.Value = DdlPersonal.SelectedValue + + ViewState("CveProveedor") = "-1" + ViewState("CvePersonal") = HdnCvePersonal.Value + ViewState("CveCliente") = "-1" + + PersonalIndexChange(HdnCvePersonal.Value.ToEntero) + End Sub + + Private Sub PersonalIndexChange(ByVal CvePersonal As Integer) + Dim ObjPersonal As New ClsRH + + If ObjPersonal.GetPersonal(CvePersonal, UsuarioActual.CveEmpresa) Then + If ObjPersonal.DtResultados.Rows.Count > 0 Then + DdlPersonal.SelectedValue = CvePersonal.ToString + + HdnProvPorIVA.Value = "0" 'ObjProveedor.IVA.ToString + HdnProvPorRetIVA.Value = "0" 'ObjProveedor.RetIVA.ToString + HdnProvPorRetISR.Value = "0" 'ObjProveedor.RetISR.ToString + IDCtaBeneficiario = ObjPersonal.IdCtaContPersonal + CveCuentaBeneficiario = ObjPersonal.CveCuentaPersonal + + If UsuarioActual.Empresa.UsaAC OrElse UsuarioActual.Empresa.Funcionalidad(200) = "1" Then + If IDCtaBeneficiario = 0 AndAlso UsuarioActual.Empresa.UsaContabilidad Then + Alert("El Beneficiario no tiene cuenta contable vinculada. Por favor rectifique y vuelva a intentar.", TipoMensaje.MsgAdvertencia) + BtnGuardar.Enabled = False + ElseIf CveCuentaBeneficiario = 0 AndAlso UsuarioActual.Empresa.UsaContabilidadSIG Then + Alert("El Beneficiario no tiene cuenta contable vinculada en SIG. Por favor rectifique y vuelva a intentar.", TipoMensaje.MsgAdvertencia) + BtnGuardar.Enabled = False + Else + BtnGuardar.Enabled = True + End If + UpGuardar.Update() + End If + + CargaCuentasDepositos() + Else + Alert("El Personal solicitado no existe, por favor intente de nuevo.", TipoMensaje.MsgAdvertencia) + End If + End If + ObjPersonal.Dispose() + End Sub +#End Region + +#Region " CARGA CUENTAS DEPOSITOS " + Protected Sub DdlTipoTransaccion_SelectedIndexChanged(sender As Object, e As EventArgs) Handles DdlTipoTransaccion.SelectedIndexChanged + Dim valor As Integer = DirectCast(sender, DropDownList).SelectedValue.ToEntero + Dim dr As DataRow = GlobalDTTipoTransacciones.FiltroPrimero(String.Format("CveTipoTransaccion = {0}", DdlTipoTransaccion.SelectedValue)) 'Egs o Ing + + If dr IsNot Nothing Then + HdnTipoTransaccion.Value = dr("Tipo").ToString + End If + + Select Case valor + Case 1 + LblPagueseA.Text = "Páguese a" + Case 2 + LblPagueseA.Text = "Beneficiario" + End Select + + 'RecargaCuentas + CargaCuenta(CveMoneda) + RecargaCuentasDepositos() + + UpDatos.Update() + BtnGuardar.Enabled = True + End Sub + + Protected Sub DdlCuenta_SelectedIndexChanged(sender As Object, e As EventArgs) Handles DdlCuenta.SelectedIndexChanged + 'si solo es de egreso el movimiento debe de generar el siguiente folio. + + If HdnTipoTransaccion.Value = "Egs" AndAlso UsuarioActual.Empresa.Funcionalidad(505) <> "1" Or Opcion = "DevDinC" Then + + Dim Folio As Long + Dim Banco As New ClsBancos + Folio = Banco.GetNextFolio(DdlCuenta.SelectedValue.ToEntero, DdlTipoTransaccion.SelectedValue.ToEntero) + Banco.Dispose() + TxtFolio.Text = Folio.ToString + + If Opcion = "DevDinC" Then + TxtFolio.Enabled = False + End If + Else + TxtFolio.Text = "" + End If + + Dim dr As DataRow = GlobalDTBancosCuentas(UsuarioActual.CveUsuario).FiltroPrimero(String.Format("CveCuenta={0}", DdlCuenta.SelectedValue)) + If dr IsNot Nothing Then + + + DdlMoneda.SelectedValue = dr("CveMoneda").ToString + IDCtaContable = dr("IdCtaContable").ToString.ToEntero + IDCtaContableComplementaria = dr("IDCtaContableComplementaria").ToString.ToEntero + CveCuentaConta = dr("IdCtaContableSIG").ToString.ToEntero + CambiaTipoMoneda() + + If Opcion IsNot Nothing AndAlso Opcion.Contiene("EGSSINFACT") Then + If dr("CveTipoCuenta").ToString.ToEntero = 1 Then + Dim ObjMovtos As New ClsMovimientos + If DdlCuenta.SelectedValue.ToEntero > 0 Then + ObjMovtos.GetCajaChicaDetalle(DdlCuenta.SelectedValue.ToEntero, UsuarioActual.CveEmpresa) + + If ObjMovtos.DtResultados.FiltraParametros("CveIE > 0", "FechaDocumento, FolioFecha").Rows.Count > 0 Then + DDlCheques.DataSource = ObjMovtos.DtResultados.FiltraParametros("CveIE > 0", "FechaDocumento, FolioFecha") + DDlCheques.DataBind() + DDlCheques.Items.Insert(0, New ListItem("-", "-1")) + DivCheques.Visible = True + End If + End If + ObjMovtos.Dispose() + Else + DivCheques.Visible = False + End If + + End If + + If dr("UsaTarjeta").ToString = "True" Then + CargaGridTarjetas() + Else + DivTarjeta.Visible = False + End If + + If Not IDCtaContable > 0 AndAlso UsuarioActual.Empresa.UsaContabilidad Then + Alert("La Cuenta Bancaria no tiene asignada una cuenta contable", TipoMensaje.MsgAdvertencia) + End If + + If Not CveCuentaConta > 0 AndAlso UsuarioActual.Empresa.UsaContabilidadSIG Then + Alert("La Cuenta Bancaria no tiene asignada una cuenta contable en SIG", TipoMensaje.MsgAdvertencia) + End If + End If + + If trIEDevolucion.Visible And RBL.SelectedValue <> "C" Then + CargaIEDevoluciones() + End If + End Sub +#End Region + +#Region " CARGA CREDITOS - DETALLE " + Protected Sub DdlFinanciera_SelectedIndexChanged(sender As Object, e As EventArgs) Handles DdlFinanciera.SelectedIndexChanged + CargaCreditos(DdlFinanciera.SelectedValue.ToEntero) + + End Sub + + Private Sub CargaCreditos(CveProveedor As Integer) + If CveProveedor < 1 Then Exit Sub + + Dim Cred As New ClsBancos + Dim dt As DataTable = Nothing + + If Cred.GetCreditos(-1, -1, -1, CveProveedor, -1, UsuarioActual.CveEmpresa) Then + CveProveedor = Cred.CveProveedor + DdlCredito.DataSource = Cred.DtResultados.FiltraParametros(String.Format("CveProveedor = {0} AND EstatusNum in (1,2,101,102)", DdlFinanciera.SelectedValue), DistinctColumns:={"CveCredito", "ReferenciaCredito"}, Orderby:="ReferenciaCredito") + DdlCredito.DataBind() + DdlCredito.Items.Insert(0, New ListItem("Seleccione", "-1")) + + + End If + + Cred.Dispose() + + DdlCreditoDetalle.Items.Clear() + DdlCreditoDetalle.DataSource = Nothing + DdlCreditoDetalle.DataBind() + + + + End Sub + + Protected Sub DdlCredito_SelectedIndexChanged(sender As Object, e As EventArgs) Handles DdlCredito.SelectedIndexChanged + CargaCreditosDetalle() + End Sub + + Protected Sub DdlCreditoDetalle_SelectedIndexChanged(sender As Object, e As EventArgs) + CargaCreditosDetalle(DdlCreditoDetalle.SelectedValue.ToEntero) + End Sub + + Private Sub CargaCreditosDetalle(Optional CveCreditoDetalle As Integer = -1) + Dim Cred As New ClsBancos + Dim dt As DataTable = Nothing + Dim dt2 As DataTable = Nothing + + If DdlCredito.SelectedValue.ToEntero > 0 AndAlso Cred.GetCreditos(DdlCredito.SelectedValue.ToEntero, -1, -1, -1, -1, UsuarioActual.CveEmpresa) Then + CveProveedor = Cred.CveProveedor + HdnCveTipoCredito.Value = Cred.CveTipoCredito.ToString + + If Cred.GetCreditosDetalle(DdlCredito.SelectedValue.ToEntero, -1) Then + dt = Cred.DtResultados.FiltraParametros("Estatus IN (1,101,102)") + + Dim Importe As Decimal = 0 + If CveCreditoDetalle > 0 Then + Dim drt As DataRow = Cred.DtResultados.FiltroPrimero(String.Format("CveCreditoDetalle = {0}", CveCreditoDetalle)) + If drt IsNot Nothing Then + 'verifico si es credito está activo + If Not drt("Estatus").ToString.Contiene("1", "101", "102") Then + Alert("La Mensualidad no está vigente para pago", TipoMensaje.MsgError) + End If + Importe = dt.FiltroPrimeroValor("Mensualidad", String.Format("CveCreditoDetalle = {0}", CveCreditoDetalle)).ToDecimal + End If + + + End If + + + TxtImporte.Text = Importe.ToString + HdnImporteCredito.Value = Importe.ToString + RegistraScript(String.Format("$get('TxtImporte').value = '{0}';", Importe.FormatoNumero)) + TxtImporte.Attributes.Remove("onkeyup") + TxtImporte.Attributes.Add("onkeyup", String.Format("ValidaCantidad({0},{1});", TxtImporte.ClientID, Importe)) + + End If + + End If + + Cred.Dispose() + + DdlCreditoDetalle.Items.Clear() + + If dt IsNot Nothing Then + DdlCreditoDetalle.DataSource = dt + End If + DdlCreditoDetalle.DataBind() + + If CveCreditoDetalle = -1 Then + DdlCreditoDetalle.Items.Insert(0, New ListItem("Seleccione", "-1")) + DdlCreditoDetalle.SelectedValue = "-1" + Else + DdlCreditoDetalle.SelectedValueExist(CveCreditoDetalle.ToString) + Try + TxtObservaciones.Text = String.Format("{0} {1} {2}", DdlFinanciera.SelectedItem.Text, DdlCredito.SelectedItem.Text, DdlCreditoDetalle.SelectedItem.Text) + Catch ex As Exception + + End Try + + End If + + + UpDatos.Update() + End Sub +#End Region +#End Region + +#Region "PESTAÑA INFORMACION GENERAL DE BANCO IE" + + Private Sub CargaCuenta(Optional pCveMoneda As Integer = -1) + DdlCuenta.Items.Clear() + Dim dt As DataTable + + If UsuarioActual.Empresa.Funcionalidad(127) = "1" Then + dt = GlobalDTBancosCuentas(UsuarioActual.CveUsuario) + Else + dt = GlobalDTBancosCuentas(UsuarioActual.CveUsuario).FiltraParametros("CveTipoCuenta <> 1") ' quito las cajas chicas + End If + + + If pCveMoneda > 0 Then + dt = dt.FiltraParametros(String.Format("CveMoneda = {0}", pCveMoneda)) + End If + + 'cuando es layout + If DdlTipoTransaccion.SelectedValue.ToEntero = 9 Then + dt = dt.FiltraParametros("UsaLayout = 1") + End If + + DdlCuenta.DataSource = dt + DdlCuenta.DataBind() + DdlCuenta.Items.Insert(0, New ListItem("Seleccione", "-1")) + End Sub + + Private Sub CargaTipoTransaccion() + Dim dt As DataTable + If Request("Opcion") IsNot Nothing AndAlso Request("Opcion").ToString.Contiene("EGSSINFACT", "EGSCREDITO") Then + dt = GlobalDTTipoTransacciones.FiltraParametros("Tipo='Egs'") + LtlTitulo.Text = "Egreso Por Comprobar" + + RBL.Items.Remove(RBL.Items.FindByValue("C")) + ElseIf Request("Opcion") IsNot Nothing AndAlso Request("Opcion").ToString = "DEV" Then + dt = GlobalDTTipoTransacciones.FiltraParametros("Tipo='Ing'") + LtlTitulo.Text = If(Request("Opcion").ToString = "INGPC", "Ingreso por comprobar", "Devolución") + LblPagueseA.Text = "Recibido de:" + RBL.SelectedValue = "C" + Anexo.Visible = True + ElseIf Request("Opcion") IsNot Nothing AndAlso Request("Opcion").ToString = "INGPC" Then + dt = GlobalDTTipoTransacciones.FiltraParametros("Tipo='Ing'") + LtlTitulo.Text = If(Request("Opcion").ToString = "INGPC", "Ingreso por comprobar", "Devolución") + LblPagueseA.Text = "Recibido de:" + RBL.SelectedValue = "C" + Anexo.Visible = True + + RBL.Items.Remove(RBL.Items.FindByValue("P")) + RBL.Items.Remove(RBL.Items.FindByValue("FE")) + + ElseIf Request("Opcion") IsNot Nothing AndAlso Request("Opcion").ToString = "ANTC" Then + dt = GlobalDTTipoTransacciones.FiltraParametros("Tipo='Ing'") + LtlTitulo.Text = "Anticipo de Cliente" + LblPagueseA.Text = "Recibido de:" + Anexo.Visible = True + RBL.Items.Remove(RBL.Items.FindByValue("P")) : RBL.Items.Remove(RBL.Items.FindByValue("FE")) : RBL.Items.Remove(RBL.Items.FindByValue("DD")) : RBL.Items.Remove(RBL.Items.FindByValue("AC")) : RBL.Items.Remove(RBL.Items.FindByValue("DP")) + ElseIf Opcion = "DevDinV" Then ' DEVOLUCION DINERO NC-VENTAS + dt = GlobalDTTipoTransacciones.FiltraParametros("Tipo='Egs'") + LtlTitulo.Text = "Devolución dinero" + RBL.SelectedValue = "C" + RBL.Enabled = False + Else + dt = GlobalDTTipoTransacciones + End If + + + + If Opcion = "DevDinC" AndAlso Request("P") IsNot Nothing AndAlso Request("P").Length > 0 Then + DdlTipoTransaccion.DataSource = dt.FiltraParametros("Tipo = 'Ing' ") + Else + DdlTipoTransaccion.DataSource = dt + End If + + + DdlTipoTransaccion.DataBind() + DdlTipoTransaccion.Items.Insert(0, New ListItem("Seleccione Tipo Movimiento", "-1")) + RBL_SelectedIndexChanged(RBL, Nothing) + + End Sub + + Private Sub CargaMoneda() + DdlMoneda.DataSource = GlobalDTMonedas + DdlMoneda.DataBind() + End Sub +#End Region + +#Region "VIATICOS" + + Private Function TimbrarNomina12(CvePersonal As Integer) As String + + Dim Retorno As String = "" + UsuarioActual.Empresa.CvePAC = 2 + Dim sw As New Diagnostics.Stopwatch + sw.Start() + Select Case UsuarioActual.Empresa.CvePAC + Case 1 + 'Retorno = TimbrarBIInformNomina12(CveNomina, CvePersonal, CvePeriodo) + Case 2, 4 + Dim cfdi As CFDITimbre = PreTimbrar(CvePersonal) + If cfdi Is Nothing Then + sw.Stop() + Return "No tiene asignado un folio de viaticos" + End If + If cfdi IsNot Nothing AndAlso cfdi.Mensaje = "" Then + Dim ObjTimbrado As New Timbrado + Dim ObjFactura As New Modelos.Factura + ObjFactura.TipoDocto = "Viaticos" + ObjFactura.Folio = cfdi.Comprobante.Folio.ToEntero + ObjFactura.Serie = cfdi.Comprobante.Serie + ObjFactura.Timbre = cfdi + If Not ObjTimbrado.TimbrarFactura(UsuarioActual, ObjFactura) Then + Retorno = ObjTimbrado.MensajeErrorCFDI + End If + + 'Retorno = TimbrarFacturaRealVirtual(cfdi, UsuarioActual) + If Retorno <> "" Then + Retorno = $"{Retorno} - {cfdi.Receptor.Nombre}" + Else + 'Genero la addenda Ford + ' GeneraPDFNuevo(String.Format("{0}XML\Nomina\{1}.xml", Ruta, NominaFolio), CvePersonal, CvePeriodo) + End If + Else + Retorno = $"No se pudo generar el pretimbre:
{cfdi.Mensaje}" + End If + End Select + sw.Stop() + GuardaLogTimbrado(sw.ElapsedMilliseconds.ToString, UsuarioActual.Empresa.CvePAC, "Nomina") + + Return Retorno + End Function -#End Region + Private Function PreTimbrar(CvePersonal As Integer) As CFDITimbre + Dim cfdi As New CFDITimbre + Dim ObjFolio As New ClsGralFolios + If ObjFolio.GetFolios("VIA", UsuarioActual.CveEmpresa) Then + If ObjFolio.DtResultados.Rows.Count > 0 Then + Folio = ObjFolio.DtResultados.Rows(0)("FActual").ToString + Else + ObjFolio.Dispose() + Return Nothing + End If + End If + ObjFolio.Dispose() + + Dim objPersonal As New ClsRH + objPersonal.GetPersonal(CvePersonal, UsuarioActual.CveEmpresa) + + Dim AntiguedadSemanas As Integer = DateDiff(DateInterval.Weekday, objPersonal.FechaIngreso, Now).ToEntero + + cfdi.Nomina = New CFDINomina + cfdi.Nomina.Version = "1.2" + cfdi.Nomina.TipoNomina = "E" + cfdi.Nomina.FechaPago = TxtFechaDocumento.Text.ToDate + cfdi.Nomina.FechaInicio = TxtFechaDocumento.Text + cfdi.Nomina.FechaFin = TxtFechaDocumento.Text + cfdi.Nomina.NumDiasPagados = 1 + cfdi.Emisor.Nombre = UsuarioActual.Empresa.Empresa + cfdi.Emisor.RFC = UsuarioActual.Empresa.RFC + cfdi.Emisor.RegistroPatronal = UsuarioActual.Empresa.RegistroPatronal + cfdi.Emisor.RegimenFiscal = UsuarioActual.Empresa.CodigoRegimenFiscal + + 'aplica persona fisica debe de tener CURP + If cfdi.Emisor.RegimenFiscal.Contiene("605", "606", "608", "611", "612", "614", "616", "621", "622", "629", "630", "615") Then + cfdi.Emisor.CURP = UsuarioActual.Empresa.CURP + End If + + + cfdi.Receptor.UsoCFDI = "P01" + cfdi.Receptor.RFC = objPersonal.RFC + cfdi.Receptor.Nombre = objPersonal.NombreCompleto + + Dim ObjOtrosPagos As New List(Of CFDINominaOtrosPagos) + ObjOtrosPagos.Add(New CFDINominaOtrosPagos With {.TipoOtroPago = "003", + .Clave = "003", + .Concepto = "Viáticos (entregados al trabajador).", + .Importe = TxtImporte.Text.ToString.ToDouble + } + ) + If ObjOtrosPagos IsNot Nothing AndAlso ObjOtrosPagos.Count > 0 Then cfdi.Nomina.OtrosPagos = ObjOtrosPagos + + cfdi.Comprobante.Version = "3.3" + cfdi.Comprobante.Serie = "VIA" + cfdi.Comprobante.Folio = Folio + cfdi.Comprobante.Fecha = Now + cfdi.Comprobante.Subtotal = TxtImporte.Text.ToDecimal + cfdi.Comprobante.Descuentos = 0 + cfdi.Comprobante.Total = TxtImporte.Text.ToDecimal + cfdi.Comprobante.MotivoDescuento = "" + cfdi.Comprobante.Moneda = "MXN" + cfdi.Comprobante.TipoComprobante = "N" + cfdi.Comprobante.TipoDocto = "Egs" + cfdi.Comprobante.MetodoPago = "PUE" + cfdi.Comprobante.CondicionesdePago = "" + cfdi.Comprobante.FormadePago = "99" + cfdi.Comprobante.LugarExpedicion = UsuarioActual.Empresa.CP.ToString + cfdi.Comprobante.NumCuentaPago = "" + + + cfdi.Nomina.Receptor.CURP = objPersonal.CURP + cfdi.Nomina.Receptor.NSS = objPersonal.NumeroSS + cfdi.Nomina.Receptor.FechaInicioContrato = objPersonal.FechaInicioContrato.ToShortDateString + cfdi.Nomina.Receptor.Antiguedad = $"P{AntiguedadSemanas}W" + cfdi.Nomina.Receptor.TipoContrato = objPersonal.CodigoTipoContrato + cfdi.Nomina.Receptor.CodigoTipoJornada = objPersonal.ClaveTipoJornada + cfdi.Nomina.Receptor.CodigoRegimenContratacion = If(objPersonal.CveRegimenContratacion = "", "99", objPersonal.CveRegimenContratacion) + cfdi.Nomina.Receptor.CodigoEmpleado = objPersonal.Codigo + cfdi.Nomina.Receptor.Departamento = objPersonal.Departamento + cfdi.Nomina.Receptor.Puesto = objPersonal.Puesto + cfdi.Nomina.Receptor.CodigoRiesgoPuesto = If(objPersonal.CveSATRiesgoPuesto.ToString = "0", "99", objPersonal.CveSATRiesgoPuesto.ToString) + cfdi.Nomina.Receptor.TipoPeriodo = objPersonal.TipoPeriodoPago + cfdi.Nomina.Receptor.CodigoBanco = objPersonal.ClaveBanco + cfdi.Nomina.Receptor.NumeroCuenta = objPersonal.BancoNumCuenta + cfdi.Nomina.Receptor.SDI = objPersonal.SDI + cfdi.Nomina.Receptor.SBC = objPersonal.SDI + cfdi.Nomina.Receptor.Sindicalizado = "" + cfdi.Nomina.Receptor.CodigoEntidadFederativa = objPersonal.ClaveEstado + + + cfdi.Conceptos.Add(New CFDIConceptos With {.Cantidad = 1, .ClaveUnidad = "ACT", .ClaveProdServ = "84111505", .Descripcion = "Pago de nómina", .ValorUnitario = cfdi.Comprobante.Subtotal, .Importe = cfdi.Comprobante.Subtotal, .Descuento = cfdi.Nomina.TotalDeducciones.ToDecimal}) + + objPersonal.Dispose() + Return cfdi + End Function + + 'Private Function TimbrarBIInformNomina12(CveNomina As Integer, CvePersonal As Integer, CvePeriodo As Integer) As String + + ' If UsuarioActual.CveEmpresa = 8 Then + ' UsuarioActual.Empresa.FacturaProduccion = True + ' End If + ' 'UsuarioActual.Empresa.FacturaProduccion = False + + ' Dim MsgError As String = String.Empty + + ' Dim CFDi As New ClbNegBICFDv3_2.ClsNegEDI + ' CFDi.ObjCompNomina12 = New ClbNegBICFDv3_2.ClsNegComplementoNomina12() + ' 'CFDi.ObjCompNomina = New ClbNegBICFDv3_2.ClsNegCompNomina + + ' Dim objPersonal As New ClsRH + ' 'Dim objNomina As New ClsNominas + ' objPersonal.GetPersonal(CvePersonal, UsuarioActual.CveEmpresa) + ' 'objNomina.GetNom_Nominas(CveNomina, CvePersonal, CvePeriodo, -1, UsuarioActual.CveEmpresa) + + + ' Dim Total As Decimal = 0 + ' Dim SubTotal As Decimal = 0 + ' Dim Descuentos As Decimal = 0 + ' Dim RetISR As Decimal = 0 + ' Dim TotalExcento As Decimal = 0 + ' Dim TotalGravado As Decimal = 0 + ' Dim TotalPercepciones As Decimal = 0 + ' Dim TotalDeducciones As Decimal = 0 + ' Dim TotalOtrosPagos As Decimal = 0 + + ' Dim Serie As String = "" + ' Dim Folio As String = "" + ' Dim NominaFolio As String = Serie & "-" & Folio + ' Dim RFC As String = objPersonal.RFC.Trim + ' Dim Nombre As String = objPersonal.NombreCompleto.Trim + ' Dim Direccion As String = String.Format("{0} {1} {2}", objPersonal.Calle.Trim, objPersonal.NumExt.Trim, objPersonal.NumInt.Trim).Trim + ' Dim Ciudad As String = objPersonal.Ciudad.Trim + ' Dim Estado As String = objPersonal.Estado.Trim + ' Dim CP As String = objPersonal.CP.Trim + + + + ' 'Dim TipoContrato As String = GlobalDTTiposContrato.FiltraParametros("CveTipoContrato = " + objPersonal.CveTipoContrato.ToString)(0)("TipoContrato").ToString + ' 'Dim TipoPeriodo As String = GlobalDTTipoPeriodo.FiltraParametros("CveTipoPeriodo = " + objPersonal.CveTipoPeriodo.ToString)(0)("TipoPeriodo").ToString + ' Dim AntiguedadSemanas As Integer = DateDiff(DateInterval.Weekday, objPersonal.FechaIngreso, Now).ToEntero + ' Dim FormatoReciboCFDi As String = objPersonal.FormatoReciboCFDi + + ' Dim FechaInicio, FechaFin, FechaPago As Date + ' Dim DiasPagados As Integer = 0 + ' Dim Msg As String = String.Empty + ' Dim DiasIncapacitados As Integer = 0 + ' Dim DrPeriodo As DataRow = Nothing + + ' Dim ObjFolio As New ClsGralFolios + ' If ObjFolio.GetFolios("VIA", UsuarioActual.CveEmpresa) Then + ' If ObjFolio.DtResultados.Rows.Count > 0 Then + ' Folio = ObjFolio.DtResultados.Rows(0)("FActual").ToString + ' End If + ' End If + + + ' 'If objNomina.GetPeriodos(-1, -1, -1, -1, CvePeriodo) Then + ' ' If objNomina.DtResultados.Rows().Count > 0 Then + ' ' DrPeriodo = objNomina.DtResultados.Rows(0) + ' ' End If + ' 'End If + ' 'Dim DrPeriodo As DataRow = GlobalDTNominasPeriodos(-1, CvePeriodo, -1).FiltroPrimero("") + ' If DrPeriodo IsNot Nothing Then + ' FechaInicio = DrPeriodo("FechaInicio").ToString.ToDate + ' FechaFin = DrPeriodo("FechaFin").ToString.ToDate + ' FechaPago = DrPeriodo("FechaPago").ToString.ToDate + ' If objPersonal.GetAsistencias(CvePersonal, -1, -1, -1, -1, -1, FechaInicio, FechaFin, UsuarioActual.CveEmpresa) Then + + ' Dim Asistencias As Integer = objPersonal.DtResultados.SUM("AplicaAsistencia").ToEntero + ' Dim Vacaciones As Integer = objPersonal.DtResultados.SUM("AplicaVacacion").ToEntero + ' DiasIncapacitados = objPersonal.DtResultados.SUM("AplicaIncapacidad").ToEntero + ' DiasPagados = Asistencias - Vacaciones + ' If DiasPagados < 0 Then DiasPagados = 0 + + ' End If + + ' End If + + ' Dim DtPercepciones As Data.DataTable = Nothing + ' Dim DtDeducciones As Data.DataTable = Nothing + ' Dim DtOtrosPagos As Data.DataTable = Nothing + ' 'If objNomina.GetNom_NominasDetalles(CveNomina, CvePersonal, CvePeriodo, "-1") Then + ' ' If objNomina.DtResultados.Rows.Count > 0 Then + ' ' DtPercepciones = objNomina.DtResultados.FiltraParametros("Tipo = 'P' AND EsPadre = 1 ") + ' ' DtDeducciones = objNomina.DtResultados.FiltraParametros("Tipo = 'D' AND EsPadre = 1 ") + ' ' TotalPercepciones = DtPercepciones.SUM("Importe") + ' ' TotalDeducciones = DtDeducciones.SUM("Importe") + ' ' Total = CType((Total + DtPercepciones.SUM("Importe")), Decimal) + ' ' End If + ' 'End If + + ' 'Tipo Nomina O de Ordinaria o E de extraordinaria + ' 'Dim FechaPago As Date = Now + ' Dim TotalSueldos As Decimal = 0 + ' Dim TotalIndemnizacion As Decimal = 0 + ' Dim TotalJubilacion As Decimal = 0 + ' Msg = CFDi.ObjCompNomina12.Cargar("O", FechaPago, FechaInicio, FechaFin, DiasPagados, TotalPercepciones, TotalDeducciones, 0) + + + + ' If Msg = String.Empty Then + ' If DtPercepciones IsNot Nothing Then + ' If DtPercepciones.Rows.Count > 0 Then + ' TotalSueldos = DtPercepciones.SUM("Importe", "SATCveConcepto = '001'") + ' TotalIndemnizacion = DtPercepciones.SUM("Importe", "SATCveConcepto IN ('022','023','025')") ' https://www.ccpm.org.mx/avisos/nuevo-complemento-de-nomina-version-1.2-puntos-finos-diciembre-2016.pdf + ' TotalJubilacion = DtPercepciones.SUM("Importe", "SATCveConcepto IN ('039','044')") 'https://www.ccpm.org.mx/avisos/nuevo-complemento-de-nomina-version-1.2-puntos-finos-diciembre-2016.pdf + ' Msg = CFDi.ObjCompNomina12.CargarPercepciones(TotalSueldos, TotalIndemnizacion, TotalJubilacion, DtPercepciones.SUM("ImporteGravado").ToDecimal, DtPercepciones.SUM("ImporteExento").ToDecimal) + ' End If + ' For Each Row As DataRow In DtPercepciones.Rows + ' If Row("Importe").ToString.ToDecimal > 0 Then + ' If Row("CveSATConcepto").ToString = "" Then + ' Msg = String.Format("Concepto No registrado ({0})", Row("Concepto").ToString) + ' Else + ' Msg = CFDi.ObjCompNomina12.AgregarPercepcion(Row("SATCveConcepto").ToString, Row("Codigo").ToString, Row("Concepto").ToString, Row("ImporteGravado").ToString.ToDecimal, Row("ImporteExento").ToString.ToDecimal) + ' TotalExcento = TotalExcento + Row("ImporteExento").ToString.ToDecimal + ' TotalGravado = TotalGravado + Row("ImporteGravado").ToString.ToDecimal + ' SubTotal = SubTotal + Row("Importe").ToString.ToDecimal + ' End If + + ' If Msg <> String.Empty Then + ' Me.OnError("El SAT regresó el siguiente mensaje: " & Msg & ". Objeto: Percepcion", New Exception) + ' Exit For + ' End If + ' End If + ' 'RMF, falta poner el numero de horas pagadas + ' If Row("CveSATConcepto").ToString.ToEntero = 19 Then 'cuando son horas extras + + ' 'Obtengo el desglose de horas extras + + ' If objNomina.GetHorasExtras(CvePersonal, CvePeriodo, UsuarioActual.CveEmpresa) Then + + ' Dim dr As DataRow = objNomina.DtResultados.FiltroPrimero("") + ' If dr IsNot Nothing Then + + ' If dr("HorasDobles").ToString.ToDouble > 0 Then CFDi.ObjCompNomina12.AgregarHorasExtra(dr("DiasHorasDobles").ToString.ToEntero, ClbNegBICFDv3_2.TipoHoras.Dobles, dr("HorasDobles").ToString.ToEntero, Row("Importe").ToString.ToDecimal) + ' If dr("HorasTriples").ToString.ToDouble > 0 Then CFDi.ObjCompNomina12.AgregarHorasExtra(dr("DiasHorasTriples").ToString.ToEntero, ClbNegBICFDv3_2.TipoHoras.Triples, dr("HorasTriples").ToString.ToEntero, Row("Importe").ToString.ToDecimal) + + + ' End If + + + ' End If + + ' End If + ' Next + ' If Msg = "" Then + ' CFDi.ObjCompNomina12.ObjPercepciones.TotalExento = TotalExcento + ' CFDi.ObjCompNomina12.ObjPercepciones.TotalGravado = TotalGravado + ' End If + + ' End If + + ' 'cargo las incapacidades + ' If DiasIncapacitados > 0 Then + + ' If objNomina.GetIncapacidades(CvePersonal, CvePeriodo, UsuarioActual.CveEmpresa) Then + + ' CFDi.ObjCompNomina12.CargarIncapacidades() + ' For Each dr As DataRow In objNomina.DtResultados.Rows + ' CFDi.ObjCompNomina12.AgregarIncapacidad(dr("Dias").ToString.ToDecimal, dr("ClaveTipoIncapacidad").ToString.ToEntero, dr("Descuento").ToString.ToDecimal) + ' Next + + ' End If + + ' End If + + + + ' TotalExcento = 0 + ' TotalGravado = 0 + + ' If Msg = String.Empty Then + ' If DtDeducciones IsNot Nothing Then + ' If DtDeducciones.Rows.Count > 0 Then + ' Total = CType((Total - DtDeducciones.SUM("Importe")), Decimal) + ' CFDi.ObjCompNomina12.CargarDeducciones(CType(DtDeducciones.SUM("ImporteGravado"), Decimal), CType(DtDeducciones.SUM("ImporteExento"), Decimal)) + ' End If + ' For Each Row As DataRow In DtDeducciones.Rows + + ' If Row("Importe").ToString.ToDecimal > 0 Then + ' If Row("CveSATConcepto").ToString = "" Then + ' Msg = String.Format("Concepto No registrado ({0})", Row("Concepto").ToString) + ' Else + + ' Msg = CFDi.ObjCompNomina12.AgregarDeduccion(Row("SATCveConcepto").ToString, Row("Codigo").ToString, Row("Concepto").ToString, 0) + ' TotalExcento = TotalExcento + Row("ImporteExento").ToString.ToDecimal + ' TotalGravado = TotalGravado + Row("ImporteGravado").ToString.ToDecimal + + ' If Row("CveSATConcepto").ToString.ToEntero = 3 Then + ' RetISR = RetISR + Row("Importe").ToString.ToDecimal + ' Else + ' Descuentos = Descuentos + Row("Importe").ToString.ToDecimal + ' End If + ' End If + + ' If Msg <> String.Empty Then + ' Me.OnError("El SAT regresó el siguiente mensaje: " & Msg & ". Objeto: Deduccion", New Exception) + ' Exit For + ' End If + ' End If + ' Next + ' If Msg = "" Then + ' If CFDi.ObjCompNomina12.ObjDeducciones IsNot Nothing Then + ' CFDi.ObjCompNomina12.ObjDeducciones.TotalOtrasDeducciones = Descuentos + ' CFDi.ObjCompNomina12.ObjDeducciones.TotalImpuestosRetenidos = RetISR + ' End If + + ' End If + ' End If + + ' If Msg = String.Empty Then + ' If DtOtrosPagos IsNot Nothing Then + ' If DtOtrosPagos.Rows.Count > 0 Then + ' Total = CType((Total - DtOtrosPagos.SUM("Importe")), Decimal) + ' CFDi.ObjCompNomina12.CargarOtrosPagos() + ' End If + + ' For Each Row As DataRow In DtOtrosPagos.Rows + ' If Row("Importe").ToString.ToDecimal > 0 Then + ' If Row("CveSATConcepto").ToString = "" Then + ' Msg = String.Format("Concepto No registrado ({0})", Row("Concepto").ToString) + ' Else + ' Msg = CFDi.ObjCompNomina12.AgregarOtroPago(Row("SATCveConcepto").ToString, Row("Codigo").ToString, Row("Concepto").ToString, 0) + ' 'Msg = CFDi.ObjCompNomina12.CargarSubsidioAlEmpleo(0) + ' 'Msg = CFDi.ObjCompNomina12.CargarCompensacionSaldosAFavor(0, 0, 0) + ' End If + + ' If Msg <> String.Empty Then + ' Me.OnError("El SAT regresó el siguiente mensaje: " & Msg & ". Objeto: Otros Pagos", New Exception) + ' Exit For + ' End If + ' End If + ' Next + + ' End If + + ' If Msg = String.Empty Then + ' Dim x As Integer = 0 + + ' Dim Moneda As String = "MXN" + ' Dim LugarExp As String = String.Format("{0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}, {8} ", SucCalle, SucNoExt, SucNoInt, SucColonia, SucLocalidad, SucMunicipio, SucEstado, SucPais, SucCP) + ' Dim FechaFactura As DateTime = Now + ' 'Nodo Comprobante + + ' Dim TipoComprobante As ClbNegBICFDv3_2.TipoDeComprobante = ClbNegBICFDv3_2.TipoDeComprobante.egreso + ' Msg = CFDi.comprobantecfd(0, 0, Serie, Folio, FechaFactura, "PAGO EN UNA SOLA EXHIBICION", "CONTADO", SubTotal, Descuentos, "Deducciones nómina", "1", Moneda, Total, objPersonal.MetodoPagoSAT, ClbNegBICFDv3_2.TipoDeComprobante.egreso, LugarExp, "", "", "", New Date(1900, 1, 1), 0) + + ' If Msg = String.Empty Then + ' 'Nodo emisor + ' Msg = CFDi.ObjCompNomina12.CargarEmisor("", UsuarioActual.Empresa.RegistroPatronal, UsuarioActual.Empresa.RFC) + ' 'If Msg = String.Empty Then Msg = CFDi.EmisorRegimen(UsuarioActual.Empresa.CodigoRegimenFiscal) + ' If Msg = String.Empty Then + ' 'Nodo Entidad SNCF + ' If 1 = 2 Then 'cuando es gobierno + ' Msg = CFDi.ObjCompNomina12.CargarEntidadSNCF("", 0) + ' End If + + ' If Msg = String.Empty Then + ' 'Nodo Receptor + ' Msg = CFDi.ObjCompNomina12.CargarReceptor(objPersonal.CURP, objPersonal.NumeroSS, objPersonal.FechaInicioContrato, AntiguedadSemanas, objPersonal.TipoContrato, "", objPersonal.ClaveTipoJornada, objPersonal.CveRegimenContratacion, objPersonal.Codigo.ToString, + ' objPersonal.Departamento, objPersonal.Puesto, objPersonal.CveRiesgoPuesto, objPersonal.TipoPeriodo, objPersonal.ClaveBanco, objPersonal.BancoNumCuenta, Total, objPersonal.SDI.ToString.ToDecimal, objPersonal.ClaveEstado) + ' If Msg = String.Empty Then + ' 'Nodo SubContratacion + ' If 1 = 2 Then Msg = CFDi.ObjCompNomina12.AgregarSubContratacion("", 0) + ' If Msg = String.Empty Then + + ' CFDi.LstCompNomina12.Add(CFDi.ObjCompNomina12) + + ' Dim HasErrorConceptos As Boolean = False + ' 'Dim Importe As Decimal = 0 + + + ' Msg = CFDi.ConceptosCfd(1, "ACT", "", "Pago de nómina", SubTotal, SubTotal) + + ' 'Timbrado + + ' 'Web Services de producción: http://biinform.com.mx/srvCFDi/service1.asmx + ' 'Web Services de pruebasd: http://biinform.com.mx/srvCFDiPrueba/service1.asmx + + + ' Dim WS As String = String.Empty + ' If UsuarioActual.Empresa.FacturaProduccion Then + ' WS = "http://portalbiinform.com.mx/srvCFDiPrueba/service1.asmx" + ' Else + ' WS = "http://portalbiinform.com.mx/srvCFDiPrueba/service1.asmx" + ' End If + + ' If Not System.IO.Directory.Exists(Ruta & "XML\") Then System.IO.Directory.CreateDirectory(Ruta & "XML\") + ' If Not System.IO.Directory.Exists(Ruta & "XML\Nomina\") Then System.IO.Directory.CreateDirectory(Ruta & "XML\Nomina\") + + ' 'Generar Timbre + ' 'If UsuarioActual.Empresa.FacturaProduccion Then + ' If 1 = 2 Then + ' CFDi.Generar(String.Format("{0}Certificados\{1}", Ruta, UsuarioActual.Empresa.ArchivoPfx), + ' UsuarioActual.Empresa.ContraseñaKey, + ' String.Format("{0}Certificados\{1}", Ruta, UsuarioActual.Empresa.ArchivoCer), + ' String.Format("{0}XML\Nomina\{1}.xml", Ruta, NominaFolio), + ' String.Format("{0}Certificados\", Ruta), + ' UsuarioActual.Empresa.BIUsuario, + ' UsuarioActual.Empresa.BIContraseña, + ' WS, + ' True) + ' Else + ' If Not System.IO.Directory.Exists(Ruta & "XML\Nomina\Demo\") Then System.IO.Directory.CreateDirectory(Ruta & "XML\Nomina\Demo\") + ' 'RutaPruebas & "XML\Demo\" & NominaFolio & ".xml", + ' CFDi.Generar(String.Format("{0}Certificados\aaa010101aaa__csd_01.pfx", RutaPruebas), + ' "12345678a", + ' String.Format("{0}Certificados\aaa010101aaa__csd_01.cer", RutaPruebas), + ' String.Format("{0}XML\Nomina\Demo\{1}.xml", Ruta, NominaFolio), + ' String.Format("{0}Certificados\", RutaPruebas), + ' "prueba", + ' "123", + ' WS, + ' True) + ' End If + + + ' If CFDi.MsgError <> String.Empty Then + + ' 'OnError("Ocurrió un error al generar el timbre: " & CFDi.MsgError, New Exception) + + ' Dim params As New ActualizaTimbre + ' params.Estatus = False + ' params.CveNomina = CveNomina + ' params.CvePAC = 1 + + ' 'Dim Hilo As New System.Threading.Thread(AddressOf ActualizaTimbrado) + ' 'Hilo.Start(params) + ' BtnAutorizar.Enabled = False + ' MsgError = "Nombre: " & Nombre & ". Error: " & CFDi.MsgError + ' Else + ' 'Actualiza Estatus Timbrado + ' Dim params As New ActualizaTimbre + ' params.Estatus = True + ' params.CveNomina = CveNomina + ' params.CvePAC = 1 + + ' 'Dim Hilo As New System.Threading.Thread(AddressOf ActualizaTimbrado) + ' 'Hilo.Start(params) + + ' Dim CBB As New ClbNegBICFDv3_2.ClsNegCBBGenerar() + ' Dim FechaCertificacion As DateTime + ' Dim FolioFiscal, NoSerieCertificado, NoSerieCertificadoContribuyente, SelloCFDi, SelloSAT As String + + ' FolioFiscal = CFDi.Timbrado.UUDI 'XmlDoc.DocumentElement("cfdi:Complemento").FirstChild.Attributes("UUID").InnerText + ' NoSerieCertificado = CFDi.Timbrado.NoCertificadoSAT + ' FechaCertificacion = CFDi.Timbrado.FechaTimbrado + ' SelloCFDi = CFDi.Timbrado.SelloCFD + ' SelloSAT = CFDi.Timbrado.SelloSAT + ' NoSerieCertificadoContribuyente = CFDi.Timbrado.NoCertificado + ' ViewState("FolioFiscal") = FolioFiscal + + ' 'Actualiza Estatus Factura + ' CveNominaT = CveNomina + + ' Dim Rastro As String = String.Format("Nomina: CvePeriodo:{0}, CvePersonal:{1}, UUID: {2}, RFC:{3}", CvePeriodo, CvePersonal, FolioFiscal, objPersonal.RFC) + ' Rastro.GuardaLog() + + ' If FolioFiscal <> "" Then + + ' 'If UsuarioActual.Empresa.FacturaProduccion Then + ' ' Dim ObjNomina2 As New ClsNominas() + ' ' ObjNomina2.UpdateEstatusNomNominas(3, UsuarioActual.Empresa.CvePAC, FolioFiscal, "", ("01/01/2000").ToDate, CveNomina, SubTotal, Descuentos, RetISR, Total, DiasPagados) + ' ' ObjNomina2.Dispose() + ' 'End If + ' Rastro = "--Estatus" & Rastro + ' Rastro.GuardaLog() + ' 'Dim Hilo1 As New System.Threading.Thread(AddressOf ActualizaEstatus) + ' 'Hilo1.Start(3) + ' End If + + + ' Dim RutaCBB As String = String.Empty + ' If Not System.IO.Directory.Exists(Ruta & "CBB\") Then System.IO.Directory.CreateDirectory(Ruta & "CBB\") + ' If Not System.IO.Directory.Exists(Ruta & "CBB\Nomina\") Then System.IO.Directory.CreateDirectory(Ruta & "CBB\Nomina\") + + ' If UsuarioActual.Empresa.FacturaProduccion Then + ' RutaCBB = Ruta & "CBB\Nomina\" & NominaFolio & ".jpg" + ' Else + ' If Not System.IO.Directory.Exists(Ruta & "CBB\Nomina\Demo\") Then System.IO.Directory.CreateDirectory(Ruta & "CBB\Nomina\Demo\") + ' RutaCBB = Ruta & "CBB\Nomina\Demo\" & NominaFolio & ".jpg" + ' End If + ' CBB.GenerarCBB(UsuarioActual.Empresa.RFC, RFC, Total, FolioFiscal, RutaCBB) + + + ' 'GeneraPDF(FechaFactura, FolioFiscal, NoSerieCertificado, FechaCertificacion, NoSerieCertificadoContribuyente, TmpDT, SelloCFDi, SelloSAT, RutaCBB, VentaFolio, Ruta & "XML\" & VentaFolio & ".xml", False, CFDi.CadenaOriginal) + ' 'GeneraPDF(CveNomina, CvePersonal, CvePeriodo, FechaFactura, FolioFiscal, NoSerieCertificado, FechaCertificacion, NoSerieCertificadoContribuyente, SelloCFDi, SelloSAT, RutaCBB, Ruta & "Nomina\XML\" & NominaFolio & ".xml", False, CFDi.Timbrado.CadenaOriginal, FormatoReciboCFDi) + ' GeneraPDFNuevo(String.Format("{0}XML\Nomina\{1}.xml", Ruta, NominaFolio), CvePersonal, CvePeriodo) + ' End If + ' Else + ' 'Me.OnError(String.Format("El SAT regresó el siguiente mensaje: {0} Nombre: {1}. Objeto: EmisorRegimen", Msg, Nombre), New Exception) + ' MsgError = String.Format("El SAT regresó el siguiente mensaje: {0} Nombre: {1}. Objeto: EmisorRegimen", Msg, Nombre) + ' End If + ' Else + ' 'Me.OnError(String.Format("El SAT regresó el siguiente mensaje: {0} Nombre: {1}. Objeto: EmisorDomicilioExpedidoEn", Msg, Nombre), New Exception) + ' MsgError = String.Format("El SAT regresó el siguiente mensaje: {0} Nombre: {1}. Objeto: EmisorDomicilioExpedidoEn", Msg, Nombre) + ' End If + ' Else + ' 'Me.OnError(String.Format("El SAT regresó el siguiente mensaje: {0} Nombre: {1}. Objeto: EmisorDomicilioFiscalCfd", Msg, Nombre), New Exception) + ' MsgError = String.Format("El SAT regresó el siguiente mensaje: {0} Nombre: {1}. Objeto: EmisorDomicilioFiscalCfd", Msg, Nombre) + ' End If + ' Else + ' 'Me.OnError(String.Format("El SAT regresó el siguiente mensaje: {0} Nombre: {1}. Objeto: EmisorCfd", Msg, Nombre), New Exception) + ' MsgError = String.Format("El SAT regresó el siguiente mensaje: {0} Nombre: {1}. Objeto: EmisorCfd", Msg, Nombre) + ' End If + ' Else + ' 'Me.OnError(String.Format("El SAT regresó el siguiente mensaje: {0} Nombre: {1}. Objeto: Comprobante", Msg, Nombre), New Exception) + ' MsgError = String.Format("El SAT regresó el siguiente mensaje: {0} Nombre: {1}. Objeto: Comprobante", Msg, Nombre) + ' End If + ' Else + ' 'Me.OnError(String.Format("El SAT regresó el siguiente mensaje: {0} Nombre: {1}. Objeto: Comprobante", Msg, Nombre), New Exception) + ' MsgError = String.Format("El SAT regresó el siguiente mensaje: {0} Nombre: {1}. Objeto: Comprobante", Msg, Nombre) + ' End If + ' Else + ' 'Me.OnError(String.Format("El SAT regresó el siguiente mensaje: {0} Nombre: {1}. Objeto: Comprobante", Msg, Nombre), New Exception) + ' MsgError = String.Format("El SAT regresó el siguiente mensaje: {0} Nombre: {1}. Objeto: Comprobante", Msg, Nombre) + ' End If + ' Else + ' 'Me.OnError(String.Format("El SAT regresó el siguiente mensaje: {0} Nombre: {1}. Objeto: Comprobante", Msg, Nombre), New Exception) + ' MsgError = String.Format("El SAT regresó el siguiente mensaje: {0} Nombre: {1}. Objeto: Comprobante", Msg, Nombre) + ' End If + ' Else + ' 'Me.OnError(String.Format("El SAT regresó el siguiente mensaje: {0} Nombre: {1}. Objeto: Comprobante", Msg, Nombre), New Exception) + ' MsgError = String.Format("El SAT regresó el siguiente mensaje: {0} Nombre: {1}. Objeto: Comprobante", Msg, Nombre) + ' End If + ' objPersonal.Dispose() + ' objNomina.Dispose() + + ' Return MsgError + 'End Function + + +#End Region + +#Region " GUARDAR - ACTUALIZAR " + Private Function ValidaGuardar() As Boolean + Dim EsValido = True + Dim PagueseA = "" + If HdnCveCliente.Value.ToEntero > 0 Then + PagueseA = DdlCliente.SelectedText.ToString() + ElseIf HdnCveProveedor.Value.ToEntero > 0 Then + PagueseA = DdlProveedores.SelectedText.ToString() + ElseIf HdnCvePersonal.Value.ToEntero > 0 Then + PagueseA = DdlPersonal.SelectedItem.ToString + End If + + If DdlEstatusIE.SelectedValue = "2" AndAlso TxtImporte.Text.ToDouble > 0 Then + Alert("Un movimiento Cancelado debe tener importe = 0", TipoMensaje.MsgAdvertencia) + EsValido = False + End If + + If DdlEstatusIE.SelectedValue <> "2" AndAlso TxtImporte.Text.ToDouble <= 0 Then + Alert("Debe ingresar un importe", TipoMensaje.MsgAdvertencia) + EsValido = False + End If + + 'cuando sea activo es requerido proveedor o personal + If DdlEstatusIE.SelectedValue = "1" AndAlso (CveProveedor <= 0 And CvePersonal <= 0) AndAlso HdnTipoTransaccion.Value = "Egs" And RBL.SelectedValue <> "C" Then + Alert("Debe de seleccionar un Proveedor o un Funcionario Empleado", TipoMensaje.MsgAdvertencia) + EsValido = False + End If + + If DdlEstatusIE.SelectedValue = "1" AndAlso PagueseA = "" AndAlso Not Opcion = "EGSCREDITO" Then + Alert("Ingrese Beneficiario", TipoMensaje.MsgAdvertencia) + EsValido = False + End If + + Dim Dep As New ClsGenerales + If Dep.GetCuentasDepositos(CveProveedor:=CveProveedor) Then + Dim Row = Dep.DtResultados.FiltroPrimero(String.Format("CveCuentaDeposito = {0}", DdlCuentaDeposito.SelectedValue.ToEntero)) + If Row IsNot Nothing AndAlso Row("Estatus").ToString = "False" Then + Alert("La cuenta depósito del proveedor esta inactiva.", TipoMensaje.MsgAdvertencia) + EsValido = False + End If + End If + Dep.Dispose() + + Return EsValido + End Function + + Protected Sub BtnGuardar_Click(sender As Object, e As System.EventArgs) Handles BtnGuardar.Click + + If Not ValidaGuardar() Then + Exit Sub + End If + + 'PARA QUE TOME EL TIPO DE CAMBIO DEL DIA + TxtTipoCambio.Text = GlobalTipoCambio(TxtFechaDocumento.Text.ToDate).ToString + UpTipoCambio.Update() + + + Dim ObjIE As New ClsBancos() + Dim ObjMov As New ClsContabilidad(ObjIE.IniciaTransacSQL) + Dim ObjComp As New ClsCompras(ObjIE.IniciaTransacSQL) + Dim ObjOC As New ClsOC(ObjIE.IniciaTransacSQL) + + ' Dim ObjContabilidad As New ClsContabilidad(ObjIE.IniciaTransacSQL) + + Dim MsgError As String = "" + Dim CveConceptoContable As Integer = 30 + Dim CveConceptoCompra As Integer = 10 + Dim CveCreditoDetalle As Integer = -1 + Dim CIF As Decimal = 0 + Dim CvePlantillaPoliza As Integer = 3 + Dim CvePrePoliza As Integer = 0 + Dim alertaContabilizacion As String = "Se enviaron correctamente las siguientes pólizas:

" + Dim Msg As New StringBuilder + + If CveIE = -1 Then + + Dim CveCuentaDeposito As Integer = 0 + If DdlCuentaDeposito.Items.Count > 0 Then + CveCuentaDeposito = DdlCuentaDeposito.SelectedValue.ToEntero + End If + + 'OBTIENE COMPROBANTE!! + ComprobanteIE = "" + Dim Comprobante As String = "" + Dim filesgral As List(Of Archivo) = Anexo.getfiles().Archivos + Dim filemove As String = "" + For Each fileItem As Archivo In filesgral + Comprobante = IO.Path.GetExtension(String.Format("{0}Temp\{1}", AppDomain.CurrentDomain.BaseDirectory, fileItem.filename)).Replace(".", "") + filemove = fileItem.filename + Next + + + '*****-_- INICIA: CONFIGURACION REGISTRO -_-***** + If CvePersonal > 0 Then + If Opcion IsNot Nothing AndAlso Opcion.Contiene("EGSSINFACT") And DDlCheques.SelectedValue.ToEntero > 0 Then + CveConceptoCompra = 29 'Comprobación Personal + Else + CveConceptoCompra = 28 'Prestamo Personal + End If + CveConceptoContable = 30 'Banco + CvePlantillaPoliza = 8 + End If + + If Request("Opcion") IsNot Nothing AndAlso Request("Opcion").ToString = "DEV" Then + If CvePersonal > 0 Then + CveConceptoCompra = 29 'Comprobacion Personal + CveConceptoContable = 30 'Bancos + CvePlantillaPoliza = 9 + ElseIf CveProveedor > 0 Then + CveConceptoCompra = 21 'Pago a Proveedor/CAncelacion Anticipos + CveConceptoContable = 30 'Bancos + CvePlantillaPoliza = 7 + End If + End If + + If Request("Opcion") IsNot Nothing AndAlso Request("Opcion").ToString = "ANTC" Then + If CveCliente > 0 Then + CveConceptoCompra = 3 'Clientes + CveConceptoContable = 30 'Bancos + CvePlantillaPoliza = 12 + End If + End If + + 'Cuando es Egreso sin factura, se registra una compra tipo anticipo + If Request("Opcion") IsNot Nothing AndAlso Request("Opcion").ToString = "EGSCREDITO" Then + CveConceptoCompra = 48 'Anticipo Acreedores + CveConceptoContable = 30 'Bancos + CveCreditoDetalle = DdlCreditoDetalle.SelectedValue.ToEntero + Dim Estatus As Integer = 2 + If HdnCveTipoCredito.Value = "1" Then + Estatus = 103 + 'cuando es crediproveedores es, pago a documentos por pagar + CveConceptoCompra = 57 + End If + ObjIE.UpdateCreditosDetalle(Estatus, CveCreditoDetalle) + + If HdnImporteCredito.Value.ToDouble > 0 AndAlso TxtImporte.Text.ToDouble > HdnImporteCredito.Value.ToDouble Then + CIF = TxtImporte.Text.ToDecimal - HdnImporteCredito.Value.ToDecimal + Else + CIF = 0 + End If + + CvePlantillaPoliza = 92 + + End If + Dim AgregaPolizaSaldoInicial As Boolean = False + 'Cuando es Egreso sin factura, se registra una compra tipo anticipo + If Request("Opcion") IsNot Nothing AndAlso Request("Opcion").ToString = "EGSSINFACT" Then + Select Case RBL.SelectedValue + Case "P" 'Proveedores + If CveProveedor > 0 Then + CveConceptoCompra = 10 'Anticipo a proveedor + CveConceptoContable = 30 'Pago a Proveedor + CvePlantillaPoliza = 3 + End If + Case "DD" ' Deudores Diversos + If CveProveedor > 0 Then + CveConceptoCompra = 43 'Prestamo a deudor diverso + CveConceptoContable = 30 'Bancos + 'limpio el iva + HdnProvPorIVA.Value = "0" + CvePlantillaPoliza = 6 + End If + Case "AC" ' Acreedores Diversos + If CveProveedor > 0 Then + CveConceptoCompra = 42 'Prestamo a acreedor diverso + CveConceptoContable = 30 'Bancos + 'limpio el iva + HdnProvPorIVA.Value = "0" + CvePlantillaPoliza = 21 + End If + Case "DP" ' Documentos por pagar + If CveProveedor > 0 Then + CveConceptoCompra = 50 'Anticipo doc por pagar + CveConceptoContable = 30 'Bancos + 'limpio el iva + HdnProvPorIVA.Value = "0" + CvePlantillaPoliza = 22 + End If + Case "FE" + AgregaPolizaSaldoInicial = True + End Select + End If + + 'Nuevo Formato Charlie + If Request("Opcion") IsNot Nothing AndAlso Request("Opcion").ToString = "INGPC" Then + HdnProvPorIVA.Value = "0" + CvePlantillaPoliza = 6 + Select Case RBL.SelectedValue + Case "DD" ' Deudores Diversos + If CveProveedor > 0 Then + CveConceptoCompra = 37 'Prestamo a deudor diverso + CveConceptoContable = 30 'Bancos + 'limpio el iva + HdnProvPorIVA.Value = "0" + CvePlantillaPoliza = 45 + End If + Case "C" ' Clientes + If CveCliente > 0 Then + CveConceptoCompra = 66 'Anticipo doc por pagar + CveConceptoContable = 30 'Bancos + 'limpio el iva + HdnProvPorIVA.Value = "0" + End If + Case "AC" ' Acreedores Diversos + If CveCliente > 0 Then + CveConceptoCompra = 41 + CveConceptoContable = 30 'Bancos + 'limpio el iva + HdnProvPorIVA.Value = "0" + End If + End Select + End If + + '*****-_- TERMINA: CONFIGURACION REGISTRO -_-***** + + + Dim FolioFijo As Integer = 0 + Dim tCveMoneda As Integer = DdlMoneda.SelectedValue.ToEntero + Dim tImporteMonedaExtranjera As Decimal = 0 + If tCveMoneda <> 1 Then tImporteMonedaExtranjera = TxtImporte.Text.ToDecimal * GlobalTipoCambio(TxtFechaDocumento.Text.Trim.ToDate).ToString.ToDecimal + Dim PagueseA = "" + + If HdnCveCliente.Value.ToEntero > 0 Then + PagueseA = DdlCliente.SelectedText.ToString() + ElseIf HdnCveProveedor.Value.ToEntero > 0 Then + PagueseA = DdlProveedores.SelectedText.ToString() + ElseIf HdnCvePersonal.Value.ToEntero > 0 Then + PagueseA = DdlPersonal.SelectedItem.ToString + ElseIf DdlCreditoDetalle.SelectedValue.ToEntero > 0 Then + PagueseA = String.Format("{0} {1} {2}", DdlFinanciera.SelectedItem.Text, DdlCredito.SelectedItem.Text, DdlCreditoDetalle.SelectedItem.Text) + End If + + If AgregaPolizaSaldoInicial Then + If AgregarSaldoInicial(TxtImporte.Text.ToDouble(), TxtFechaDocumento.Text.ToDateTime(), DdlMoneda.SelectedValue.ToEntero(), ObjMov) <= 0 Then + MsgError = "No se pudo insertar la póliza de saldo inicial." + End If + End If + + If MsgError = "" Then + + + + CveIE = ObjIE.AddBancos_IE(DdlCuenta.SelectedValue.ToEntero, DdlTipoTransaccion.SelectedValue.ToEntero, TxtFechaDocumento.Text.Trim.ToDate, TxtFolio.Text.Trim, PagueseA, TxtImporte.Text.Trim.ToDouble, DdlMoneda.SelectedValue.ToEntero, + TxtTipoCambio.Text.Trim.ToDouble, TxtObservaciones.Text.Trim, TxtNotificarA.Text.Trim, ChkAbonoCuenta.Checked, ChkAplicaImpuestos.Checked, -1, CvePrePoliza, Comprobante, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveCuentaDeposito:=CveCuentaDeposito, CveEstatusIE:=DdlEstatusIE.SelectedValue.ToString.ToEntero, Referencia:=If(TxtReferenciaCIE.Visible, TxtReferenciaCIE.Text, "-1"), CveCuentaTarjeta:=If(DivTarjeta.Visible, DdlTarjeta.SelectedValue.ToEntero, -1)) + + If CveIE > 0 Then + + If DdlTipoTransaccion.SelectedValue = "1" Then FolioFijo = ObjIE.Folio.ToEntero 'cheque + CvePrePoliza = ObjMov.AddPrePolizas("Bancos/IE " + If(Request("Opcion") IsNot Nothing, Request("Opcion").ToString, "") + " " + RBL.SelectedValue, CvePlantillaPoliza, TxtImporte.Text.Trim.ToDouble, TxtImporte.Text.Trim.ToDouble, tCveMoneda, TxtFechaDocumento.Text.ToDate, PagueseA, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, FolioFijo:=FolioFijo, ReglaFolioPoliza:=ObjComp.ObtenerReglaFolio(DdlTipoTransaccion.SelectedValue, Nothing, UsuarioActual.CveEmpresa), CveTipoPoliza:=ObjMov.ObtenerTipoPoliza(DdlTipoTransaccion.SelectedValue, "-1", UsuarioActual.CveEmpresa)) + + 'valida prepoliza + If CvePrePoliza > 0 Then + + If Not ObjIE.UpdateIEPrePoliza(MinFecha, "", -1, CvePrePoliza, CveIE, -1) Then + MsgError = "Ocurrio un error al agregar la prepoliza al IE." + End If + + Dim Conc As String = If(TxtObservaciones.Text = "", ObjIE.Folio, TxtObservaciones.Text) + Dim Ref As String = If(TxtObservaciones.Text = "", ObjIE.Folio, TxtObservaciones.Text) + + If Comprobante <> "" Then + ComprobanteIE = $"{CveIE}.{Comprobante}" + End If + + 'GUARDA COMPROBANTE + If filemove <> "" Then + filemove.FilesMove(CveIE.ToString, String.Format("Empresas\{0}\IE", UsuarioActual.CveEmpresa, UsuarioActual.Empresa.Ruta)) + End If + + 'GUARDA PREPOLIZAS DETALLE [PRIMERO SON LOS CASOS ESPECIALES, AL FINAL (ELSE) LOS CASOS NORMALES] --REEMPLAZA IFs + Select Case Opcion + Case "DEV" + Dim CveIEOtro As Integer = If(CveProveedor > 0 Or CvePersonal > 0, DdlIEDevolucion.SelectedValue.ToEntero, CveIE) + + If CveCliente > 0 AndAlso Not DivIvaIxC.Visible AndAlso TxtIvaIxC.Text.ToDouble = 0 Then + 'RMF- CASO DONDE HAY UNA DEVOLUCION Y TENGO QUE AFECTAR LAS FACTURAS QUE SE HABIAN MARCADO COMO PAGADAS TENGO QUE REGRESARLAS A PENDIENTES + Dim Mov As New ClsMovimientos + If Mov.GetMovimientosIE(2, DdlIEDevolucion.SelectedValue.ToEntero, -1, Now, Now, 1, 0, UsuarioActual.CveEmpresa) Then + Dim DtIE As DataTable = Mov.DtResultados + For Each dr As DataRow In DtIE.Rows + + If MsgError = "" AndAlso Not ObjMov.AddPrePolizasDetalle(CvePrePoliza, If(dr("TipoMovto").ToString.ToEntero = 1, False, True), If(dr("CveConceptoContable").ToString.ToEntero.Contiene(66), -TxtImporte.Text.ToDecimal, dr("Importe").ToString.ToDecimal), "", dr("CveConceptoContable").ToString.ToEntero, "", Now, IDCtaBeneficiario, -1, CveIE, CveCliente:=dr("CveCliente").ToString.ToEntero, CveVenta:=dr("CveVenta").ToString.ToEntero, ImporteMX:=If(dr("CveConceptoContable").ToString.ToEntero.Contiene(66), -TxtImporte.Text.ToDecimal, -dr("Importe").ToString.ToDecimal), ImporteME:=tImporteMonedaExtranjera, CveCuenta:=CveCuentaBeneficiario) Then + MsgError = "no se pudo insertar el detalle de la póliza 2" + End If + Next + ObjMov.AddPrePolizasDetalle(CvePrePoliza, True, TxtImporte.Text.ToDecimal, Ref, CveConceptoContable, Conc, Now, IDCtaContable, -1, CveIE, CveCompra:=CveCompra, CveProveedor:=CveProveedor, CvePersonal:=CvePersonal, CveCreditoDetalle:=CveCreditoDetalle, CveCliente:=CveCliente, ImporteMX:=TxtImporte.Text.ToDecimal, ImporteME:=tImporteMonedaExtranjera, CveCuenta:=CveCuentaConta) + + End If + Mov.Dispose() + + 'Devolucion de INGxC Formato Charlie + ElseIf CveCliente > 0 AndAlso DivIvaIxC.Visible Then + + Dim Mov As New ClsMovimientos + 'INGxC + ObjMov.AddPrePolizasDetalle(CvePrePoliza, True, -(TxtImporte.Text.ToDecimal - TxtIvaIxC.Text.ToDecimal), Ref, 66, Conc, Now, IDCtaContable, -1, CveIE, CveIEDevolucion:=DdlIEDevolucion.SelectedValue.ToEntero, CveCompra:=CveCompra, CveProveedor:=CveProveedor, CvePersonal:=CvePersonal, CveCreditoDetalle:=CveCreditoDetalle, CveCliente:=CveCliente, ImporteMX:=-(TxtImporte.Text.ToDecimal - TxtIvaIxC.Text.ToDecimal), ImporteME:=tImporteMonedaExtranjera, CveCuenta:=CveCuentaConta) + + If TxtIvaIxC.Text.ToDouble > 0 Then + 'Iva + ObjMov.AddPrePolizasDetalle(CvePrePoliza, True, -TxtIvaIxC.Text.ToDecimal, Ref, 61, Conc, Now, UsuarioActual.Empresa.IdCuentaIVAxTrasladar, -1, CveIE, CveIEDevolucion:=DdlIEDevolucion.SelectedValue.ToEntero, CveCompra:=CveCompra, CveProveedor:=CveProveedor, CvePersonal:=CvePersonal, CveCreditoDetalle:=CveCreditoDetalle, CveCliente:=CveCliente, ImporteMX:=-TxtIvaIxC.Text.ToDecimal, ImporteME:=tImporteMonedaExtranjera, CveCuenta:=UsuarioActual.Empresa.CveCuentaIVAxTrasladar) + End If + + 'Bancos + ObjMov.AddPrePolizasDetalle(CvePrePoliza, False, -TxtImporte.Text.ToDecimal, Ref, 30, Conc, Now, IDCtaBeneficiario, -1, CveIE, CveIEDevolucion:=DdlIEDevolucion.SelectedValue.ToEntero, CveCompra:=CveCompra, CveProveedor:=CveProveedor, CvePersonal:=CvePersonal, CveCreditoDetalle:=CveCreditoDetalle, CveCliente:=CveCliente, ImporteMX:=-TxtImporte.Text.ToDecimal, ImporteME:=tImporteMonedaExtranjera, CveCuenta:=CveCuentaBeneficiario) + Mov.Dispose() + + Else + If ObjMov.AddPrePolizasDetalle(CvePrePoliza, False, TxtImporte.Text.ToDecimal, Ref, CveConceptoContable, Conc, Now, IDCtaContable, -1, CveIE, CveCompra:=CveCompra, CveProveedor:=CveProveedor, CvePersonal:=CvePersonal, CveCreditoDetalle:=CveCreditoDetalle, CveCliente:=CveCliente, ImporteMX:=TxtImporte.Text.ToDecimal, ImporteME:=tImporteMonedaExtranjera, CveCuenta:=CveCuentaConta) Then + If Not ObjMov.AddPrePolizasDetalle(CvePrePoliza, True, TxtImporte.Text.ToDecimal, Ref, CveConceptoCompra, Conc, Now, IDCtaBeneficiario, -1, CveIE:=If(CveIEOtro < 0, CveIE, CveIEOtro), CveCompra:=CveCompra, CveProveedor:=CveProveedor, CvePersonal:=CvePersonal, CveCreditoDetalle:=CveCreditoDetalle, CveCliente:=CveCliente, ImporteMX:=TxtImporte.Text.ToDecimal, ImporteME:=tImporteMonedaExtranjera, CveCuenta:=CveCuentaBeneficiario) Then + MsgError = "no se pudo insertar el detalle de la póliza 2" + End If + Else + MsgError = "no se pudo insertar el detalle de la póliza" + End If + + End If + + + Case "INGPC" + Dim ConceptoContable As Integer + Dim TipoMovimiento As Boolean + Dim importeMovimiento As Decimal + Dim FechaMovimiento As Date = Now + Dim Concepto As String = "" + Dim Referencia As String = PagueseA + + Dim importeMX As Decimal + Dim Multiplicador As Integer + + If ObjMov.GetPlantillaConceptos(UsuarioActual.CveEmpresa, CvePlantillaPoliza) Then + + For Each Row As DataRow In ObjMov.DtResultados.Rows + + ConceptoContable = Row("CveConcepto").ToString.ToEntero + TipoMovimiento = If(Row("TipoMovto").ToString = "True", True, False) + importeMovimiento = 0 + Multiplicador = (Row("Multiplicador").ToString.ToEntero) + Concepto = ObjMov.ObtenerConceptoEmpresa(UsuarioActual.CveEmpresa, ConceptoContable, PagueseA, "", ObjIE.Folio) + + Select Case ConceptoContable + + Case 10 + If RBL.SelectedValue = "P" AndAlso CveProveedor > 0 Then + importeMovimiento = TxtImporte.Text.ToDecimal + importeMX = importeMovimiento + End If + + Case 28 + If RBL.SelectedValue = "FE" AndAlso CvePersonal > 0 Then + importeMovimiento = TxtImporte.Text.ToDecimal + importeMX = importeMovimiento + End If + + Case 37 + If RBL.SelectedValue = "DD" AndAlso CveProveedor > 0 Then + importeMovimiento = TxtImporte.Text.ToDecimal + importeMX = importeMovimiento + End If + + Case 41 + If RBL.SelectedValue = "AC" AndAlso CveProveedor > 0 Then + importeMovimiento = TxtImporte.Text.ToDecimal + importeMX = importeMovimiento + End If + + Case 46 + + If TxtInteresMoratorio.Text.ToDecimal > 0 Then + importeMovimiento = TxtInteresMoratorio.Text.ToDecimal + importeMX = importeMovimiento + Else + importeMovimiento = 0 + importeMX = 0 + End If + + + Case 50 + If RBL.SelectedValue = "DP" AndAlso CveProveedor > 0 Then + importeMovimiento = TxtImporte.Text.ToDecimal + importeMX = importeMovimiento + End If + + Case 66 + If RBL.SelectedValue = "C" AndAlso CveCliente > 0 Then + importeMovimiento = TxtImporte.Text.ToDecimal - TxtIvaIxC.Text.ToDecimal + importeMX = importeMovimiento + + 'Agregamos el IVA + If DivIvaIxC.Visible AndAlso TxtIvaIxC.Text.ToDecimal <> 0 Then + If Not ObjMov.AddPrePolizasDetalle(CvePrePoliza, TipoMovimiento, TxtIvaIxC.Text.ToDecimal, Concepto, 61, Concepto, FechaMovimiento, UsuarioActual.Empresa.IdCuentaIVAxTrasladar, -1, CveIE:=CveIE, CveCompra:=CveCompra, CveProveedor:=CveProveedor, CvePersonal:=CvePersonal, CveCreditoDetalle:=CveCreditoDetalle, CveCliente:=CveCliente, ImporteMX:=TxtIvaIxC.Text.ToDecimal, ImporteME:=tImporteMonedaExtranjera, CveCuenta:=UsuarioActual.Empresa.CveCuentaIVAxTrasladar) Then + MsgError = "Ocurrió un error al registrar el asiento del ingreso." + End If + End If + If tCveMoneda > 1 AndAlso UsuarioActual.CveEmpresa = 119 Then + 'Agregamos complementaria + Dim TC As Decimal = TxtTipoCambio.Text.ToDecimal + + If Not ObjMov.AddPrePolizasDetalle(CvePrePoliza, TipoMovimiento, 0, Concepto, 226, Concepto, FechaMovimiento, IDCtaBeneficiarioComplementaria, -1, CveIE:=CveIE, CveCompra:=CveCompra, CveProveedor:=CveProveedor, CvePersonal:=CvePersonal, CveCreditoDetalle:=CveCreditoDetalle, CveCliente:=CveCliente, ImporteMX:=(importeMovimiento * TC - importeMovimiento).RoundSQL, ImporteME:=importeMovimiento, TipoCambio:=TC, CveCuenta:=0) Then + MsgError = "Ocurrió un error al registrar el asiento del ingreso." + End If + + End If + + End If + + Case 30 + importeMovimiento = TxtImporte.Text.ToDecimal + importeMX = importeMovimiento + + If tCveMoneda > 1 AndAlso UsuarioActual.CveEmpresa = 119 Then + 'Agregamos complementaria + Dim TC As Decimal = TxtTipoCambio.Text.ToDecimal + + If Not ObjMov.AddPrePolizasDetalle(CvePrePoliza, TipoMovimiento, 0, Concepto, 204, Concepto, FechaMovimiento, IDCtaContableComplementaria, -1, CveIE:=CveIE, CveCompra:=CveCompra, CveProveedor:=CveProveedor, CvePersonal:=CvePersonal, CveCreditoDetalle:=CveCreditoDetalle, CveCliente:=CveCliente, ImporteMX:=(importeMovimiento * TC - importeMovimiento).RoundSQL, ImporteME:=importeMovimiento, TipoCambio:=TC, CveCuenta:=UsuarioActual.Empresa.CveCuentaIVAxTrasladar) Then + MsgError = "Ocurrió un error al registrar el asiento del ingreso." + End If + + End If + + End Select + + If importeMovimiento <> 0 Then + If Not ObjMov.AddPrePolizasDetalle(CvePrePoliza, TipoMovimiento, importeMovimiento, Concepto, ConceptoContable, Concepto, FechaMovimiento, If(ConceptoContable = 30, IDCtaContable, IDCtaBeneficiario), -1, CveIE:=CveIE, CveCompra:=CveCompra, CveProveedor:=CveProveedor, CvePersonal:=CvePersonal, CveCreditoDetalle:=CveCreditoDetalle, CveCliente:=CveCliente, ImporteMX:=importeMovimiento, ImporteME:=tImporteMonedaExtranjera, TipoCambio:=TxtTipoCambio.Text.ToDecimal, CveCuenta:=If(ConceptoContable = 30, CveCuentaConta, CveCuentaBeneficiario)) Then + MsgError = "Ocurrió un error al registrar el asiento del ingreso." + End If + End If + + Next + + End If + + + Case "DevDinV" + Dim IdCtaContableAplicar = -1 + Dim ImporteAplicar = 0.0D + Dim ImporteAplicarMN = 0.0D + Dim ImporteAplicarME = 0.0D + Dim ReferenciaAplicar = ObjIE.Folio + Dim ConceptoAplicar = $"Devolución al cliente {PagueseA} {TxtImporte.Text} NC:{SerieFolioDevDin}" + + ImporteAplicar = TxtImporte.Text.ToDecimal + ImporteAplicarME = ImporteAplicar + + 'CONSIDERA COMPLEMENTARIA + If DdlMoneda.SelectedValue.ToEntero > 1 AndAlso UsuarioActual.CveEmpresa.Contiene(1, 119) Then + ImporteAplicarMN = ImporteAplicar + Else + ImporteAplicarMN = (ImporteAplicar * If(DdlMoneda.SelectedValue.ToEntero = 1, 1, TxtTipoCambio.Text.ToDecimal)).RoundSQL() + End If + + 'BANCOS + IdCtaContableAplicar = If(IDCtaContable > 0, IDCtaContable, 0) + If Not ObjMov.AddPrePolizasDetalle(CvePrePoliza, True, ImporteAplicar, ReferenciaAplicar, 30, ConceptoAplicar, Now, IdCtaContableAplicar, -1, CveIE, CveVenta:=CveVentaDevDin, CveCliente:=CveCliente, ImporteMX:=ImporteAplicarMN, ImporteME:=ImporteAplicarME, CveCuenta:=CveCuentaConta) Then + MsgError = "Ocurrió un error al registrar el asiento de bancos de devolución" + Exit Select + End If + + 'BANCOS COMPLEMENTARIA + If DdlMoneda.SelectedValue.ToEntero > 1 AndAlso UsuarioActual.CveEmpresa.Contiene(1, 119) Then + ImporteAplicarMN = ((ImporteAplicar * If(DdlMoneda.SelectedValue.ToEntero = 1, 1, TxtTipoCambio.Text.ToDecimal)) - ImporteAplicar).RoundSQL() + If Not ObjMov.AddPrePolizasDetalle(CvePrePoliza, True, ImporteAplicar, ReferenciaAplicar, 204, ConceptoAplicar, Now, IdCtaContableAplicar, -1, CveIE, CveVenta:=CveVentaDevDin, CveCliente:=CveCliente, ImporteMX:=ImporteAplicarMN, ImporteME:=ImporteAplicarME, CveCuenta:=CveCuentaConta) Then + MsgError = "Ocurrió un error al registrar el asiento de bancos complementaria de devolución" + End If + End If + + 'CANCELA NC + IdCtaContableAplicar = IDCtaBeneficiario + ImporteAplicarMN = (ImporteAplicar * If(DdlMoneda.SelectedValue.ToEntero = 1, 1, TxtTipoCambio.Text.ToDecimal)).RoundSQL() + If Not ObjMov.AddPrePolizasDetalle(CvePrePoliza, True, -(ImporteAplicar), ReferenciaAplicar, 12, ConceptoAplicar, Now, IdCtaContableAplicar, -1, CveIE, CveVenta:=CveVentaDevDin, CveCliente:=CveCliente, ImporteMX:=-(ImporteAplicarMN), ImporteME:=ImporteAplicarME) Then + MsgError = "Ocurrió un error al registrar el asiento de pago de devolución" + Exit Select + End If + + 'IMPUESTOS + If ObjMov.GetPrePolizasDetalle(CvePrePolizaDevDin) Then + Dim PorcentajePagoDevDin = (TxtImporte.Text.ToDecimal / ImporteOriginalDevDin).RoundSQL(6) + Dim CveConceptoContableAplciar = -1 + Dim TipoMovtoAplicar = False + + For Each Dr As DataRow In ObjMov.DtResultados.FiltraParametros("CveConceptoContable IN (13,8,9,38)").Rows + CveConceptoContableAplciar = Dr("CveConceptoContable").ToString.ToEntero + TipoMovtoAplicar = Not CBool(Dr("TipoMovto").ToString) + ImporteAplicar = (Dr("Importe").ToString.ToDecimal * PorcentajePagoDevDin).RoundSQL() + ImporteAplicarMN = (Dr("ImporteMN").ToString.ToDecimal * PorcentajePagoDevDin).RoundSQL() + ImporteAplicarME = (Dr("ImporteME").ToString.ToDecimal * PorcentajePagoDevDin).RoundSQL() + IdCtaContableAplicar = Dr("IdCtaContable").ToString.ToEntero + + If ObjMov.AddPrePolizasDetalle(CvePrePoliza, TipoMovtoAplicar, ImporteAplicar, ReferenciaAplicar, CveConceptoContableAplciar, ConceptoAplicar, Now, IdCtaContableAplicar, -1, CveIE, CveVenta:=CveVentaDevDin, CveCliente:=CveCliente, ImporteMX:=ImporteAplicarMN, ImporteME:=ImporteAplicarME) Then + Select Case CveConceptoContableAplciar + Case 13 + CveConceptoContableAplciar = 61 + Case 8 + CveConceptoContableAplciar = 62 + Case 9 + CveConceptoContableAplciar = 63 + Case 38 + CveConceptoContableAplciar = 39 + End Select + TipoMovtoAplicar = Not TipoMovtoAplicar + If Not ObjMov.AddPrePolizasDetalle(CvePrePoliza, TipoMovtoAplicar, ImporteAplicar, ReferenciaAplicar, CveConceptoContableAplciar, ConceptoAplicar, Now, IdCtaContableAplicar, -1, CveIE, CveVenta:=CveVentaDevDin, CveCliente:=CveCliente, ImporteMX:=ImporteAplicarMN, ImporteME:=ImporteAplicarME) Then + MsgError = "Ocurrió un error al registrar el asiento de impuestos de devolución" + Exit Select + End If + Else + MsgError = "Ocurrió un error al registrar el asiento de impuestos de devolución" + Exit Select + End If + + Next + End If + + Case "DevDinC" + 'asdasdasd + 'asdasdasdasd + Dim IdCtaContableAplicar = -1 + Dim ImporteAplicar = 0.0D + Dim ImporteAplicarMN = 0.0D + Dim ImporteAplicarME = 0.0D + Dim ReferenciaAplicar = ObjIE.Folio + + Dim ConceptoAplicar = $"Devolución de Proveedor {PagueseA} {TxtImporte.Text} NC:{SerieFolioDeCDin}" + + ImporteAplicar = TxtImporte.Text.ToDecimal + ImporteAplicarME = ImporteAplicar + + + 'CONSIDERA COMPLEMENTARIA + If DdlMoneda.SelectedValue.ToEntero > 1 AndAlso UsuarioActual.CveEmpresa.Contiene(1, 119) Then + ImporteAplicarMN = ImporteAplicar + Else + ImporteAplicarMN = (ImporteAplicar * If(DdlMoneda.SelectedValue.ToEntero = 1, 1, TxtTipoCambio.Text.ToDecimal)).RoundSQL() + End If + + Dim TCCompra As Decimal = 1 + Dim TCDocumento As Decimal = 1 + + If DdlMoneda.SelectedValue.ToEntero > 1 AndAlso UsuarioActual.CveEmpresa.Contiene(1, 119) Then + + TCCompra = GlobalTipoCambio(FechaCompra).ToDecimal + TCDocumento = GlobalTipoCambio(TxtFechaDocumento.Text.ToDate).ToDecimal + + If TCCompra <= 0 Then + Alert("No se pudo obtener el tipo de cambio de la nota de crédito.", TipoMensaje.MsgAdvertencia) + End If + + If TCCompra <= 0 Then + Alert("No se pudo obtener el tipo de cambio del documentpo.", TipoMensaje.MsgAdvertencia) + End If + + End If + + + + 'BANCOS + IdCtaContableAplicar = If(IDCtaContable > 0, IDCtaContable, 0) + If Not ObjMov.AddPrePolizasDetalle(CvePrePoliza, False, ImporteAplicar, ReferenciaAplicar, 30, ConceptoAplicar, Now, IdCtaContableAplicar, -1, CveIE, CveCompra:=CveCompraDeCDin, CveProveedor:=CveProveedor, ImporteMX:=ImporteAplicarMN, ImporteME:=ImporteAplicarME, CveCuenta:=CveCuentaConta, TipoCambio:=TCDocumento) Then + MsgError = "Ocurrió un error al registrar el asiento de bancos de devolución" + Exit Select + End If + + + 'BANCOS COMPLEMENTARIA + If DdlMoneda.SelectedValue.ToEntero > 1 AndAlso UsuarioActual.CveEmpresa.Contiene(1, 119) Then + ImporteAplicarMN = ((ImporteAplicar * If(DdlMoneda.SelectedValue.ToEntero = 1, 1, TCDocumento)) - ImporteAplicar).RoundSQL() + If Not ObjMov.AddPrePolizasDetalle(CvePrePoliza, False, ImporteAplicar, ReferenciaAplicar, 204, ConceptoAplicar, Now, IdCtaContableAplicar, -1, CveIE, CveCompra:=CveCompraDeCDin, CveProveedor:=CveProveedor, ImporteMX:=ImporteAplicarMN, ImporteME:=ImporteAplicarME, CveCuenta:=CveCuentaConta, TipoCambio:=TCDocumento) Then + MsgError = "Ocurrió un error al registrar el asiento de bancos complementaria de devolución" + End If + End If + + 'CANCELA NC + IdCtaContableAplicar = IDCtaBeneficiario + ImporteAplicarMN = ImporteAplicar ' (ImporteAplicar * If(DdlMoneda.SelectedValue.ToEntero = 1, 1, TxtTipoCambio.Text.ToDecimal)).RoundSQL() + + If Not ObjMov.AddPrePolizasDetalle(CvePrePoliza, True, (ImporteAplicar), ReferenciaAplicar, 18, ConceptoAplicar, Now, IdCtaContableAplicar, -1, CveIE, CveCompra:=CveCompraDeCDin, CveProveedor:=CveProveedor, ImporteMX:=(ImporteAplicarMN), ImporteME:=ImporteAplicarME, TipoCambio:=TCCompra) Then + MsgError = "Ocurrió un error al registrar el asiento de pago de devolución" + Exit Select + End If + + + 'NC COMPLEMENTARIA + If DdlMoneda.SelectedValue.ToEntero > 1 AndAlso UsuarioActual.CveEmpresa.Contiene(1, 119) Then + + ImporteAplicarMN = ((ImporteAplicar * If(DdlMoneda.SelectedValue.ToEntero = 1, 1, TCCompra)) - ImporteAplicar).RoundSQL() + + If Not ObjMov.AddPrePolizasDetalle(CvePrePoliza, False, -(ImporteAplicar), ReferenciaAplicar, 201, ConceptoAplicar, Now, IdCtaContableAplicar, -1, CveIE, CveCompra:=CveCompraDeCDin, CveProveedor:=CveProveedor, ImporteMX:=-(ImporteAplicarMN), ImporteME:=-(ImporteAplicarME), CveCuenta:=CveCuentaConta, TipoCambio:=TCCompra) Then + MsgError = "Ocurrió un error al registrar el asiento de bancos complementaria de devolución" + End If + + End If + + If TCCompra <> TCDocumento Then + + Dim DiferenciaTC As Decimal = TCCompra - TCDocumento + + Dim DiferenciaImportes As Decimal = Math.Abs((ImporteAplicar * TCCompra) - (ImporteAplicar * TCDocumento)) + + If DiferenciaTC < 0 Then + '64 + If Not ObjMov.AddPrePolizasDetalle(CvePrePoliza, True, DiferenciaImportes, ReferenciaAplicar, 64, ConceptoAplicar, Now, UsuarioActual.Empresa.IdCuentaGananciaCambiaria, -1, CveIE, CveCompra:=CveCompraDeCDin, CveProveedor:=CveProveedor, ImporteMX:=DiferenciaImportes, ImporteME:=0, CveCuenta:=CveCuentaConta, TipoCambio:=TCCompra) Then + MsgError = "Ocurrió un error al registrar el asiento de ganancia cambiaria" + Exit Select + End If + + Else + '65 + If Not ObjMov.AddPrePolizasDetalle(CvePrePoliza, False, DiferenciaImportes, ReferenciaAplicar, 65, ConceptoAplicar, Now, UsuarioActual.Empresa.IdCuentaPerdidaCambiaria, -1, CveIE, CveCompra:=CveCompraDeCDin, CveProveedor:=CveProveedor, ImporteMX:=DiferenciaImportes, ImporteME:=0, CveCuenta:=CveCuentaConta, TipoCambio:=TCCompra) Then + MsgError = "Ocurrió un error al registrar el asiento de perdidada cfambiaria" + Exit Select + End If + + End If + + + + End If + + 'IMPUESTOS + + Dim PorcentajePagoDevDin = (TxtImporte.Text.ToDecimal / ImporteOriginalDevDin).RoundSQL(6) + Dim CveConceptoContableAplciar = -1 + Dim TipoMovtoAplicar = False + + + Dim ObjCompras As New ClsCompras() + If ObjCompras.GetCompras(CveCompraDeCDin, "-1", "-1", -1, -1, UsuarioActual.CveEmpresa) Then + + Dim dr As DataRow = ObjCompras.DtResultados.Rows(0) + If dr IsNot Nothing Then + + Dim CveMonedaDev As Integer = dr("CveMoneda").ToString.ToEntero + Dim TotalCompraDev As Decimal = dr("Total").ToString.ToDecimal + + Dim IVADev As Decimal = dr("IVA").ToString.ToDecimal + Dim IEPSDev As Decimal = dr("IEPS").ToString.ToDecimal + PorcentajeCompraDevDinC = ObjCompras.DtResultados.Rows(0)("PorcentajeIVA").ToString.ToDecimal + + Dim DTCuentas As DataTable = GlobalDTClasificacionPorcentaje(UsuarioActual.CveEmpresa, PorcentajeIVA:=PorcentajeCompraDevDinC) + Dim CveCuentaIVAxAcreditarDevDinC = 0 + Dim CveCuentaIVAAcreditableDevDinC = 0 + Dim IdCtaIVAXAcreditarDevDinC = DTCuentas.Rows(0)("IdCtaIVAXAcreditar").ToString.ToEntero + Dim IdCtaIVAAcreditableDevDinC = DTCuentas.Rows(0)("IdCtaIVAAcreditable").ToString.ToEntero + + + Dim IVADevMN As Decimal = 0 + Dim IEPSDevMN As Decimal = 0 + + + Dim PorcentajeDevolucion As Decimal = ((TxtImporte.Text.ToDecimal * 100D / TotalCompraDev) / 100).RoundSQL(2) + + IVADev = Math.Round(IVADev * PorcentajeDevolucion, 2) + IEPSDev = Math.Round(IEPSDev * PorcentajeDevolucion, 2) + + Dim CveCuentaDevolucionIMPUESTOS As Integer = -1 + Dim IdCtaIVADevolucionIMPUESTOS As Integer = -1 + + + If DdlMoneda.SelectedValue.ToEntero > 1 AndAlso UsuarioActual.CveEmpresa.Contiene(1, 119) Then + IVADevMN = IVADev + IEPSDevMN = IEPSDev + Else + IVADevMN = (IVADev * If(CveMonedaDev = 1, 1, TxtTipoCambio.Text.ToDecimal)).RoundSQL(2) + IEPSDevMN = (IEPSDev * If(CveMonedaDev = 1, 1, TxtTipoCambio.Text.ToDecimal)).RoundSQL(2) + End If + + + Dim ErrorDevolucionImpuestos As Boolean = False + + If IVADev > 0 Then + + CveCuentaDevolucionIMPUESTOS = CveCuentaIVAxAcreditarDevDinC + IdCtaIVADevolucionIMPUESTOS = IdCtaIVAXAcreditarDevDinC + + If ObjMov.AddPrePolizasDetalle(CvePrePoliza, Not TipoMovtoAplicar, -IVADev, ReferenciaAplicar, 14, ConceptoAplicar, Now, IdCtaIVADevolucionIMPUESTOS, -1, CveIE, CveCompra:=CveCompraDeCDin, CveProveedor:=CveProveedor, ImporteMX:=-IVADevMN, ImporteME:=-IVADev, CveCuenta:=CveCuentaDevolucionIMPUESTOS) Then + + CveCuentaDevolucionIMPUESTOS = CveCuentaIVAAcreditableDevDinC + IdCtaIVADevolucionIMPUESTOS = IdCtaIVAAcreditableDevDinC + + If Not ObjMov.AddPrePolizasDetalle(CvePrePoliza, TipoMovtoAplicar, -IVADev, ReferenciaAplicar, 19, ConceptoAplicar, Now, IdCtaIVADevolucionIMPUESTOS, -1, CveIE, CveCompra:=CveCompraDeCDin, CveProveedor:=CveProveedor, ImporteMX:=-IVADevMN, ImporteME:=-IVADev, CveCuenta:=CveCuentaDevolucionIMPUESTOS) Then + MsgError = "Ocurrió un error al registrar el asiento de impuestos de devolución" + ErrorDevolucionImpuestos = True + End If + Else + MsgError = "Ocurrió un error al registrar el asiento de impuestos de devolución" + ErrorDevolucionImpuestos = True + + End If + End If + + + If IEPSDev > 0 Then + 'Dim ObjContabilidad As New ClsContabilidad + If ObjMov.GetRetCuenta(25, UsuarioActual.CveEmpresa) Then + Try + CveCuentaDevolucionIMPUESTOS = ObjMov.DtResultados.Rows(0)("IdCuentaIEPSxAcreditarSIG").ToString.ToEntero + IdCtaIVADevolucionIMPUESTOS = ObjMov.DtResultados.Rows(0)("IdCuentaIEPSxAcreditar").ToString.ToEntero + + If ObjMov.AddPrePolizasDetalle(CvePrePoliza, TipoMovtoAplicar, -IEPSDev, ReferenciaAplicar, 25, ConceptoAplicar, Now, IdCtaIVADevolucionIMPUESTOS, -1, CveIE, CveCompra:=CveCompraDeCDin, CveProveedor:=CveProveedor, ImporteMX:=-IEPSDevMN, ImporteME:=-IEPSDev, CveCuenta:=CveCuentaDevolucionIMPUESTOS) Then + + If ObjMov.GetRetCuenta(26, UsuarioActual.CveEmpresa) Then + Try + CveCuentaDevolucionIMPUESTOS = ObjMov.DtResultados.Rows(0)("IdCuentaIEPSAcreditableSIG").ToString.ToEntero + IdCtaIVADevolucionIMPUESTOS = ObjMov.DtResultados.Rows(0)("IdCuentaIEPSAcreditable").ToString.ToEntero + + If Not ObjMov.AddPrePolizasDetalle(CvePrePoliza, TipoMovtoAplicar, -IEPSDev, ReferenciaAplicar, 26, ConceptoAplicar, Now, IdCtaIVADevolucionIMPUESTOS, -1, CveIE, CveCompra:=CveCompraDeCDin, CveProveedor:=CveProveedor, ImporteMX:=-IEPSDevMN, ImporteME:=-IEPSDev, CveCuenta:=CveCuentaDevolucionIMPUESTOS) Then + MsgError = "Ocurrió un error al registrar el asiento de impuestos de devolución" + ErrorDevolucionImpuestos = True + End If + + + Catch ex As Exception + Alert("Se presento un error al obtener las cuentas de IEPS acreditable.") + ErrorDevolucionImpuestos = True + End Try + + End If + + Else + MsgError = "Ocurrió un error al registrar el asiento de impuestos de devolución" + ErrorDevolucionImpuestos = True + End If + + Catch ex As Exception + Alert("Se presento un error al obtener las cuentas de IEPS acreditable.") + ErrorDevolucionImpuestos = True + End Try + End If + End If + + If ErrorDevolucionImpuestos Then + MsgError = MsgError & " Error en devolución compra." + End If + + + End If + End If + + + + Case "EGSCREDITO" + + Dim ConceptoContable As Integer + Dim TipoMovimiento As Boolean + Dim importeMovimiento As Decimal + Dim FechaMovimiento As Date = Now + Dim Concepto As String = "" + Dim Referencia As String = PagueseA + + Dim importeMX As Decimal + Dim Multiplicador As Integer + + If ObjMov.GetPlantillaConceptos(UsuarioActual.CveEmpresa, CvePlantillaPoliza) Then + + For Each Row As DataRow In ObjMov.DtResultados.Rows + + ConceptoContable = Row("CveConcepto").ToString.ToEntero + TipoMovimiento = If(Row("TipoMovto").ToString = "True", True, False) + importeMovimiento = 0 + Multiplicador = (Row("Multiplicador").ToString.ToEntero) + Concepto = ObjMov.ObtenerConceptoEmpresa(UsuarioActual.CveEmpresa, ConceptoContable, PagueseA, "", ObjIE.Folio) + + Select Case ConceptoContable + + Case 30 + importeMovimiento = TxtImporte.Text.ToDecimal + importeMX = importeMovimiento + If tCveMoneda > 1 AndAlso UsuarioActual.CveEmpresa = 119 Then + 'Agregamos complementaria + Dim TC As Decimal = TxtTipoCambio.Text.ToDecimal + + If Not ObjMov.AddPrePolizasDetalle(CvePrePoliza, TipoMovimiento, 0, Concepto, 204, Concepto, FechaMovimiento, IDCtaContableComplementaria, -1, CveIE:=CveIE, CveCompra:=CveCompra, CveProveedor:=CveProveedor, CvePersonal:=CvePersonal, CveCreditoDetalle:=CveCreditoDetalle, CveCliente:=CveCliente, ImporteMX:=(importeMovimiento * TC - importeMovimiento).RoundSQL, ImporteME:=importeMovimiento, TipoCambio:=TC, CveCuenta:=UsuarioActual.Empresa.CveCuentaIVAxTrasladar) Then + MsgError = "Ocurrió un error al registrar el asiento del ingreso." + End If + End If + Case 42 + + importeMovimiento = TxtImporte.Text.ToDecimal + importeMX = importeMovimiento + + + + Case 46 + If TxtInteresMoratorio.Text.ToDecimal > 0 Then + importeMovimiento = TxtInteresMoratorio.Text.ToDecimal + importeMX = importeMovimiento + Else + importeMovimiento = 0 + importeMX = 0 + End If + Case 48 + + importeMovimiento = TxtImporte.Text.ToDecimal + importeMX = importeMovimiento + + End Select + + If importeMovimiento <> 0 Then + If Not ObjMov.AddPrePolizasDetalle(CvePrePoliza, TipoMovimiento, importeMovimiento, Concepto, ConceptoContable, Concepto, FechaMovimiento, If(ConceptoContable = 30, IDCtaContable, IDCtaBeneficiario), -1, CveIE:=CveIE, CveCompra:=CveCompra, CveProveedor:=CveProveedor, CvePersonal:=CvePersonal, CveCreditoDetalle:=CveCreditoDetalle, CveCliente:=CveCliente, ImporteMX:=importeMovimiento, ImporteME:=tImporteMonedaExtranjera, TipoCambio:=TxtTipoCambio.Text.ToDecimal, CveCuenta:=If(ConceptoContable = 30, CveCuentaConta, CveCuentaBeneficiario)) Then + MsgError = "Ocurrió un error al registrar el asiento del ingreso." + End If + End If + + Next + End If + + Case Else + Dim TipoMovimiento As Boolean = True + + If Opcion.Contiene("ANTC") Then + TipoMovimiento = False + End If + + If CveConceptoCompra = 10 AndAlso DdlMoneda.SelectedValue.ToEntero > 1 AndAlso UsuarioActual.CveEmpresa.Contiene(1, 119) Then + IDCtaBeneficiario = IdCtaAnticipoExtranjera + CveCuentaConta = 0 + End If + + 'MOVIMIENTOS EGRESOS + If ObjMov.AddPrePolizasDetalle(CvePrePoliza, TipoMovimiento, TxtImporte.Text.ToDecimal, Ref, CveConceptoContable, Conc, Now, IDCtaContable, -1, CveIE, CveCompra:=CveCompra, CveProveedor:=CveProveedor, CveOC:=CveOrdenCompra, CvePersonal:=CvePersonal, CveCreditoDetalle:=CveCreditoDetalle, CveCliente:=CveCliente, ImporteMX:=TxtImporte.Text.ToDecimal, ImporteME:=tImporteMonedaExtranjera, CveCuenta:=CveCuentaConta, CveIEDevolucion:=DDlCheques.SelectedValue.ToEntero) Then + Dim IVA As Decimal = 0 ' TxtImporte.Text.ToDouble * HdnProvPorIVA.Value.ToDouble + If ObjMov.AddPrePolizasDetalle(CvePrePoliza, Not TipoMovimiento, TxtImporte.Text.ToDecimal - IVA - CIF, Ref, CveConceptoCompra, Conc, Now, IDCtaBeneficiario, -1, CveIE, CveCompra:=CveCompra, CveProveedor:=CveProveedor, CveOC:=CveOrdenCompra, CvePersonal:=CvePersonal, CveCreditoDetalle:=CveCreditoDetalle, CveCliente:=CveCliente, ImporteMX:=TxtImporte.Text.ToDecimal, ImporteME:=tImporteMonedaExtranjera, CveCuenta:=CveCuentaBeneficiario, CveIEDevolucion:=DdlIEAcreedor.SelectedValue.ToEntero) Then + If IVA > 0 AndAlso Not ObjMov.AddPrePolizasDetalle(CvePrePoliza, False, IVA, Ref, 19, Conc, Now, IDCtaBeneficiario, -1, CveIE, CveCompra:=CveCompra, CveProveedor:=CveProveedor, CveOC:=CveOrdenCompra, CvePersonal:=CvePersonal, CveCreditoDetalle:=CveCreditoDetalle, CveCliente:=CveCliente, ImporteMX:=TxtImporte.Text.ToDecimal, ImporteME:=tImporteMonedaExtranjera, CveCuenta:=CveCuentaBeneficiario, CveIEDevolucion:=DDlCheques.SelectedValue.ToEntero) Then + MsgError = "Detalle" + End If + 'intereses pagados + If CIF > 0 AndAlso Not ObjMov.AddPrePolizasDetalle(CvePrePoliza, False, CIF, Ref, 46, Conc, Now, IDCtaBeneficiario, -1, CveIE, CveCompra:=CveCompra, CveProveedor:=CveProveedor, CveOC:=CveOrdenCompra, CvePersonal:=CvePersonal, CveCreditoDetalle:=CveCreditoDetalle, CveCliente:=CveCliente, ImporteMX:=CIF, ImporteME:=tImporteMonedaExtranjera, CveCuenta:=CveCuentaBeneficiario, CveIEDevolucion:=DDlCheques.SelectedValue.ToEntero) Then + MsgError = "Detalle" + End If + Else + MsgError = "no se pudo insertar el detalle de la póliza2" + End If + Else + MsgError = "no se pudo insertar el detalle de la póliza" + End If + + 'BANCOS COMPLEMENTARIA + If DdlMoneda.SelectedValue.ToEntero > 1 AndAlso UsuarioActual.CveEmpresa.Contiene(1, 119) Then + Dim ImporteAplicar As Decimal = TxtImporte.Text.ToDecimal + Dim TCPago As Decimal = GlobalTipoCambio(TxtFechaDocumento.Text.ToDate).ToDecimal + Dim ImporteAplicarMN = (ImporteAplicar * TCPago - ImporteAplicar).RoundSQL() + If Not ObjMov.AddPrePolizasDetalle(CvePrePoliza, TipoMovimiento, ImporteAplicar, Ref, 204, Conc, Now, IDCtaContableComplementaria, -1, CveIE, CveCompra:=CveCompraDeCDin, CveProveedor:=CveProveedor, ImporteMX:=ImporteAplicarMN, ImporteME:=ImporteAplicar, CveCuenta:=CveCuentaConta, TipoCambio:=TCPago) Then + MsgError = "Ocurrió un error al registrar el asiento de bancos complementaria de devolución" + End If + + If CveConceptoCompra = 10 Then + If Not ObjMov.AddPrePolizasDetalle(CvePrePoliza, Not TipoMovimiento, ImporteAplicar, Ref, 266, Conc, Now, IdCtaAnticipoComplementaria, -1, CveIE, CveCompra:=CveCompraDeCDin, CveProveedor:=CveProveedor, ImporteMX:=ImporteAplicarMN, ImporteME:=ImporteAplicar, CveCuenta:=0, TipoCambio:=TCPago) Then + MsgError = "Ocurrió un error al registrar el asiento de bancos complementaria de devolución" + End If + End If + + + End If + + + + If Opcion.Contiene("EGSSINFACT") AndAlso CveSolicitudViatico > 0 AndAlso MsgError = "" Then + If Not ObjIE.UpdateSolicitudesViaticosIE(CveSolicitudViatico, CveIE) Then + MsgError = "Ocurrió un error al vincular el egreso con la solicitud de viatico." + End If + End If + + End Select + + 'El movimiento 1 es el de Venta + 'Conta SIG + If UsuarioActual.Empresa.Funcionalidad(200) = "1" And MsgError = "" And UsuarioActual.Empresa.UsaContabilidadSIG Then + If CveCuentaBeneficiario > 0 And CveCuentaConta > 0 Then + If ObjMov.ContabilizarPrePolizaSIG(CvePrePoliza, UsuarioActual.CveUsuario, UsuarioActual.Empresa) Then + IDPoliza = ObjMov.ContaIdPoliza + Else + Alert("Ocurrio un error al contabilizar en SIG, pongase en contacto con Soporte Técnico", TipoMensaje.MsgError) + End If + Else + If CveCuentaConta < 1 Then + Alert("No se puede contabilizar la Prepoliza en SIG debido a que la cuenta de Bancos es invalida", TipoMensaje.MsgAdvertencia) + End If + If CveCuentaBeneficiario < 1 Then + Alert("No se puede contabilizar la Prepoliza en SIG debido a que las cuenta del Beneficiario es invalida", TipoMensaje.MsgAdvertencia) + End If + End If + End If + + 'Conta ContPAQ + If UsuarioActual.Empresa.Funcionalidad(200) = "1" And MsgError = "" And UsuarioActual.Empresa.UsaContabilidad 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 + Dim FolioPoliza As Integer + Dim Fecha As Date = TxtFechaDocumento.Text.ToDate + Dim TipoChq As String = "" + Dim Total As Double = TxtImporte.Text.ToDouble + + Dim Conta As New ClsContPAQi(UsuarioActual.Empresa) + Conta.IniciaTransacSQL() + + If DdlTipoTransaccion.SelectedValue = "1" Then TipoChq = "CHQ" + ConceptoRenglon = String.Format("Anticipo {0}", PagueseA) + + IDPoliza = Conta.AddPoliza(2, ConceptoRenglon, Total, Total, UsuarioActual.CveUsuario, Fecha, ObjIE.Folio, TipoChq) + + If IDPoliza > 0 Then + FolioPoliza = Conta.Folio + Referencia = ObjIE.Folio + ConceptoRenglon = String.Format("Anticipo {0} {1}", PagueseA, TxtObservaciones.Text) + + Total = TxtImporte.Text.ToDouble + + If Not Conta.AddMovimiento(IDPoliza, IDCtaContable, True, Total, Referencia, ConceptoRenglon, 0, Fecha, "") Then MsgError = "No se insertó el movimiento" + + If Not Conta.AddMovimiento(IDPoliza, IDCtaBeneficiario, False, Total, Referencia, ConceptoRenglon, 0, Fecha, "") Then MsgError = "No se insertó el movimiento" + + Else + MsgError = "No se insertó el encabezado" + End If + + If MsgError = "" Then + Conta.Commit() + + Conta.AjustaPoliza(IDPoliza) + 'actualizar la conta del IE + ObjIE.UpdateIEPrePoliza(Fecha, FolioPoliza.ToString, IDPoliza, CvePrePoliza, CveIE, 0) + Else + Conta.RollBack() + IDPoliza = 0 + End If + + Conta.Dispose() + End If + + 'Notificación de Pago + If TxtNotificarA.Text.Trim <> "" Then + NotificacionPago(CveIE, TxtNotificarA.Text.Trim) + End If + + Else + MsgError = "No se pudo insertar la póliza" + End If + + Else + MsgError = "No se insertó el encabezado" + End If + + End If + + Else + Msg.Append("El Documento se guardó correctamente.") + + End If + + 'SOLICITUD DE ANTICIPO OC + If MsgError = "" Then + MsgError = GuardaSolicitudAnticipoOC(ObjOC) + End If + + If MsgError = "" Then + 'VIATICOS + If ChkAplicaViatico.Checked Then + Dim Retorno As String = TimbrarNomina12(CvePersonal) + If Retorno <> "" Then MsgError = $"{MsgError} {Retorno}" : Msg.Clear() : CveIE = -1 + If Retorno <> "" Then + Alert(Retorno, TipoMensaje.MsgError) + End If + End If + End If + + If MsgError = "" Then + If ObjMov.ValidacionPrePolizaCuadre(CvePrePoliza, -1) Then + If ObjMov.ValorPolizaDescuadre > 0 Then + ' MsgError = ObjMov.MensajePolizaDescuadre + GuardaLogAD($"Bancos/IE | Error:{ObjMov.MensajePolizaDescuadre} Diferencia:{ObjMov.ValorDiferencia} | CvePrePoliza:{CvePrePoliza}", "LogPrePolizas") + End If + Else + MsgError = "No se pudo validar la prepoliza de cuadre." + End If + End If + + If MsgError = "" Then + 'IMPRIME CHEQUE + 'GeneraChequePDF(CveIE, UsuarioActual.Empresa, IDPoliza) + If Msg.ToString = "" Then + Msg.Append("El Documento se guardo correctamente") + End If + Dim Archivo As System.IO.FileInfo = Nothing + 'VERIFICA SI EXISTE EL FORMATO + If DdlTipoTransaccion.SelectedValue.ToEntero.Contiene(2, 8, 9) Then + Archivo = New System.IO.FileInfo(String.Format("{0}Formatos/Transferencia.rdlc", UsuarioActual.Empresa.Ruta)) + ElseIf DdlTipoTransaccion.SelectedValue.ToEntero.Contiene(1) Then + Archivo = New System.IO.FileInfo(String.Format("{0}Formatos/CHQ-{1}.rdlc", UsuarioActual.Empresa.Ruta, DdlCuenta.SelectedValue.ToEntero)) + If Not Archivo.Exists Then + Archivo = New System.IO.FileInfo(String.Format("{0}\Empresas\Grales\Formatos\CHQ.rdlc", AppDomain.CurrentDomain.BaseDirectory)) + End If + ElseIf DdlTipoTransaccion.SelectedValue.ToEntero.Contiene(6) And UsuarioActual.CveEmpresa = 72 Then + Archivo = New System.IO.FileInfo(String.Format("{0}Formatos/ComprobanteEgreso.rdlc", UsuarioActual.Empresa.Ruta, DdlCuenta.SelectedValue.ToEntero)) + End If + + If Archivo IsNot Nothing Then + If Archivo.Exists Then + Msg.AppendFormat("

{1} ", Encripta(String.Format("OP=IECHEQUE&CVEIE={0}", CveIE)), String.Format("Imprimir {0}", DdlTipoTransaccion.SelectedItem)) + End If + End If + + If IDPoliza > 0 Then + Msg.AppendFormat("

Ver Póliza", IDPoliza) + End If + + 'AUTO DESCARGAR PDF PARA COMPU + If UsuarioActual.CveEmpresa.Contiene(72, 1, 2) And CveSolicitudViatico > 0 Then + If DdlTipoTransaccion.SelectedValue.ToEntero.Contiene(1, 2, 6, 8, 9) Then + RegistraScript($"window.location.href = '/Compras/PopUpVerFactura.aspx?P={Encripta(String.Format("OP=IE&CVEIE={0}", CveIE))}'", String.Format("Imprimir {0}", DdlTipoTransaccion.SelectedItem)) + End If + End If + ObjIE.Commit() + + Else + ObjIE.RollBack() + End If + + If Msg.ToString <> "" Then + If CveOCSolicitudAnticipo > 0 Then + Alert("El Documento se guardo correctamente", TipoMensaje.MsgInformacion, "document.location.href=""../Inicio.aspx""") + Else + If ChkAplicaViatico.Checked Then + Dim SerieFolio = $"VIA-{Folio}" + Msg.Clear() + Msg.AppendFormat("", Encripta(String.Format("OP=DesXmlVIA&SERIEFOLIO={0}&TIPO={1}", SerieFolio, "Viaticos"))) + End If + + Dim AccionJS = "" + + If Opcion = "DevDinV" Then + AccionJS = $"document.location.href=""/Ventas/Clientes.aspx?CveCliente={CveCliente}"";" + + AccionJS = String.Format("document.location.href=""{0}"";", HttpContext.Current.Request.Url.AbsolutePath) + Else + AccionJS = String.Format("document.location.href=""{0}"";", HttpContext.Current.Request.Url.PathAndQuery) + End If + + + If Request("Opcion") IsNot Nothing AndAlso Request("Opcion").ToString.Contiene("EGSCREDITO") Then + AccionJS = $"document.location.href=""/Bancos/Creditos.aspx?CveCredito={Request("CveCredito")}"";" + Alert(Msg.ToString, TipoMensaje.MsgInformacion, AccionJS) + Else + Alert(Msg.ToString, TipoMensaje.MsgInformacion, String.Format("document.location.href=""{0}"";", HttpContext.Current.Request.Url.PathAndQuery)) + End If + + + + + End If + End If + + RecargaGlobalCuentasBancarias() + ObjIE.Dispose() + ObjMov.Dispose() + If ObjComp IsNot Nothing Then ObjComp.Dispose() + + + End Sub + +#Region " NOTIFICACION PAGO " + Private Sub NotificacionPago(CveIE As Integer, CorreoNotificarA As String) + Dim Param As New List(Of String) + + Param.Add(CorreoNotificarA) 'Para + Param.Add("Notificaciones de pago") 'Asunto + Param.Add(GeneraCorreo2(CveIE)) 'Body + Param.Add(CveIE.ToString) 'CveIE + Param.Add(If(ComprobanteIE <> "", String.Format("{0}IE\{1}", UsuarioActual.Empresa.Ruta, ComprobanteIE), "")) 'Archivo Adjunto + + Dim Hilo As New Threading.Thread(AddressOf MandaCorreo) + Hilo.Start(Param) + End Sub + Private Sub MandaCorreo(data As Object) + Dim Parametros As List(Of String) = DirectCast(data, List(Of String)) + + Dim Mail As New ClsSisMail() + Dim Para As String = If(Parametros(0) IsNot Nothing, Parametros(0), "") + Dim Asunto As String = If(Parametros(1) IsNot Nothing, Parametros(1), "") + Dim Body As String = If(Parametros(2) IsNot Nothing, Parametros(2), "") + Dim CveIE As Integer = If(Parametros(3) IsNot Nothing, Parametros(3).ToEntero, 0) + + Dim ListaArchivos As New List(Of ClsSisMail.ArchivoMail) + If Parametros(4) IsNot Nothing AndAlso Parametros(4) <> "" Then + ListaArchivos.Add(New ClsSisMail.ArchivoMail With {.Ruta = Parametros(4).ToString}) + End If + + If Mail.SendMail(ClsPaginas.EmpresaNotificaciones, Para, Asunto, Body, Archivos:=ListaArchivos) Then + Dim objIE As New ClsBancos + objIE.UpdateBancos_IENotificaciones(1, "-1", "-1", CveIE) + objIE.Dispose() + End If + End Sub + + Private Function GeneraCorreo2(CveIE As Integer) As String + Dim strBody As New StringBuilder + Dim objIE As New ClsBancos + + If objIE.GetBancosIE(CveIE, UsuarioActual.CveEmpresa) Then + strBody.Append(" ") + strBody.Append(" ") + strBody.Append(" ") + strBody.Append(" ") + strBody.Append(" ") + strBody.AppendFormat("
") + strBody.AppendFormat("
") + strBody.AppendFormat(" {0}", UsuarioActual.Empresa.Empresa) + strBody.AppendFormat(" ") + strBody.AppendFormat(" ") + strBody.AppendFormat(" ", UsuarioActual.Empresa.Direccion) + strBody.AppendFormat(" ") + strBody.AppendFormat(" ") + strBody.AppendFormat(" ", UsuarioActual.Empresa.Colonia) + strBody.AppendFormat(" ") + strBody.AppendFormat(" ") + strBody.AppendFormat(" ", UsuarioActual.Empresa.Ciudad, UsuarioActual.Empresa.Estado, UsuarioActual.Empresa.CP) + strBody.AppendFormat(" ") + strBody.AppendFormat(" ") + strBody.AppendFormat(" ", UsuarioActual.Empresa.RFC) + strBody.AppendFormat(" ") + strBody.AppendFormat("
{0}
Col. {0}
{0}, {1}, C.P.{2}
RFC {0}
") + strBody.AppendFormat("
") + strBody.AppendFormat("


") + + 'strBody.AppendFormat("
") + 'strBody.AppendFormat("
") + 'strBody.AppendFormat(" ") + 'strBody.AppendFormat(" ") + + 'If objIE.CveTipoTransaccion = 1 Then ' cuando es cheque + ' strBody.Append(" ") + ' strBody.Append(" ") + ' strBody.Append(" ") + 'End If + + 'If objIE.CveTipoTransaccion = 2 Then ' cuando es transf + ' strBody.Append(" ") + ' strBody.Append(" ") + ' strBody.Append(" ") + 'End If + + 'strBody.Append(" ") + 'strBody.AppendFormat(" ") + 'strBody.Append(" ") + 'strBody.Append("
Favor de pasar a nuestras oficinas por el cheque con la siguientes instrucciones.
Notificación de transferencia de pago realizada.
 
") + 'strBody.AppendFormat("
") + 'strBody.Append("
") + + + strBody.AppendFormat("
") + strBody.AppendFormat(" ") + strBody.AppendFormat(" ") + strBody.AppendFormat(" ") + strBody.AppendFormat(" ") + strBody.AppendFormat("
") + strBody.AppendFormat("
") + strBody.AppendFormat(" Beneficiario:{0} ", objIE.PagueseA) + strBody.AppendFormat(" ") + strBody.AppendFormat(" ") + strBody.AppendFormat(" ") + strBody.AppendFormat(" ") + strBody.AppendFormat(" ") + strBody.AppendFormat(" ") + strBody.AppendFormat(" ") + strBody.AppendFormat(" ", objIE.TipoTransaccion) + strBody.AppendFormat(" ") + strBody.AppendFormat(" ") + strBody.AppendFormat(" ") + strBody.AppendFormat(" ", objIE.Banco) + strBody.AppendFormat(" ") + strBody.AppendFormat(" ") + strBody.AppendFormat(" ") + strBody.AppendFormat(" ", objIE.NumCuenta) + strBody.AppendFormat(" ") + If objIE.CuentaDepositado.ToString <> "" Then + strBody.AppendFormat(" ") + strBody.AppendFormat(" ") + strBody.AppendFormat(" ", objIE.CuentaDepositado) + strBody.AppendFormat(" ") + End If + strBody.AppendFormat(" ") + strBody.AppendFormat(" ") + strBody.AppendFormat(" ", objIE.FechaDocumento.ToString("dd/MM/yyyy")) + strBody.AppendFormat(" ") + strBody.AppendFormat(" ") + strBody.AppendFormat(" ") + strBody.AppendFormat(" ", objIE.Importe.FormatoNumero, objIE.Moneda) + strBody.AppendFormat(" ") + strBody.AppendFormat(" ") + strBody.AppendFormat(" ") + strBody.AppendFormat(" ", objIE.Observaciones) + strBody.AppendFormat(" ") + strBody.AppendFormat(" ") + strBody.AppendFormat(" ") + strBody.AppendFormat(" ") + strBody.AppendFormat("
Movimiento:{0}
Banco:{0}
Cuenta:{0}
Cuenta Destino:{0}
Fecha:{0}
Importe:$ {0} {1}
Observaciones:{0}
") + strBody.AppendFormat("
") + strBody.AppendFormat("
") + strBody.AppendFormat("
") + strBody.AppendFormat("
") + strBody.AppendFormat("
") + + + 'MOVIMIENTOS CHEQUE + 'If objIE.GetBancosIEMovimientos(CveIE, UsuarioActual.CveEmpresa) Then + ' Dim Textov33 As String = "" + ' If UsuarioActual.Empresa.Funcionalidad(520) = "1" Then + ' Textov33 = "Favor de emitir complemento de pago de los siguientes documentos" + ' End If + + ' strBody.AppendFormat("
") + ' strBody.AppendFormat(" ") + ' strBody.AppendFormat(" ") + ' strBody.AppendFormat(" ") + ' strBody.AppendFormat(" ") + ' strBody.AppendFormat("
") + ' strBody.AppendFormat("
") + ' strBody.AppendFormat(" Documentos abonados o pagados
{0}
", Textov33) + ' strBody.AppendFormat(" ") + ' strBody.AppendFormat(" ") + ' strBody.AppendFormat(" ") + ' strBody.AppendFormat(" ") + ' strBody.AppendFormat(" ") + ' strBody.AppendFormat(" ") + ' strBody.AppendFormat(" ") + + + ' For Each dr As DataRow In objIE.DtResultados.FiltraParametros("CveConceptoContable IN (17) AND CveCompra > 0").Rows + ' strBody.AppendFormat(" ") + ' strBody.AppendFormat(" ", dr("Fecha").ToString.ToDate.ToShortDateString()) + ' strBody.AppendFormat(" ", dr("SerieFolio").ToString) + ' strBody.AppendFormat(" ", dr("Importe").ToString.FormatoNumero) + ' strBody.AppendFormat(" ", dr("FolioFiscal")) + ' strBody.AppendFormat(" ") + ' Next + + + ' strBody.AppendFormat(" ") + ' strBody.AppendFormat(" ") + ' strBody.AppendFormat(" ") + ' strBody.AppendFormat("
FechaFacturaImporte ($)Folio Fiscal
{0}{0}$ {0}{0}
") + ' strBody.AppendFormat("
") + ' strBody.AppendFormat("
") + ' strBody.AppendFormat("
") + ' strBody.AppendFormat("
") + ' strBody.AppendFormat("
") + 'End If + + strBody.Append("
Favor de no responder a este correo.
") + + strBody.Append("") + End If + + objIE.Dispose() + Return strBody.ToString + End Function + + + + +#End Region ''[IPP] IFs REEMPLAZADOS - MIRAS DE ELIMINAR 2018/08/15 'If Not Opcion.Contiene("DEV", "INGPC", "DevDinV") AndAlso MsgError = "" Then @@ -3692,16 +3707,16 @@ Partial Class Bancos_IE Protected Sub BtnActualizar_Click(sender As Object, e As EventArgs) Handles BtnActualizar.Click - Dim IE As New ClsBancos - IE.IniciaTransacSQL() + Dim IE As New ClsBancos + IE.IniciaTransacSQL() Dim FechaAplicado As DateTime? = Nothing Dim OcurrioError As Boolean = False Dim CveCuentaDepositoUpdate As Integer = If(DdlCuentaDeposito.SelectedValue.ToEntero.ToEntero = 0, -1, DdlCuentaDeposito.SelectedValue.ToEntero.ToEntero) - If Not IE.UpdateBancos_IE(TxtFechaDocumento.Text.ToDate, FechaAplicado, CveIE, TxtFolio.Text, CveCuentaDeposito:=CveCuentaDepositoUpdate, CveCuenta:=DdlCuenta.SelectedValue.ToEntero, - Observaciones:=TxtObservaciones.Text, CveUsuarioModifico:=UsuarioActual.CveUsuario) Then - OcurrioError = True + If Not IE.UpdateBancos_IE(TxtFechaDocumento.Text.ToDate, FechaAplicado, CveIE, TxtFolio.Text, CveCuentaDeposito:=CveCuentaDepositoUpdate, CveCuenta:=DdlCuenta.SelectedValue.ToEntero, + Observaciones:=TxtObservaciones.Text, CveUsuarioModifico:=UsuarioActual.CveUsuario) Then + OcurrioError = True End If If OcurrioError Then @@ -3711,1832 +3726,1832 @@ Partial Class Bancos_IE Alert("La Actualización del documento se realizó correctamente", TipoMensaje.MsgInformacion, $"document.location.href=""IE.aspx?CveIE={CveIE}""") End If IE.Dispose() - End Sub - - Protected Sub ImgUpdateCuentaDeposito_Click(sender As Object, e As ImageClickEventArgs) - Dim IE As New ClsBancos - - If IE.UpdateBancos_IECuentaDeposito(DdlCuentaDeposito.SelectedValue.ToEntero, CveIE) Then - Alert("Se vinculó con exito la cuenta deposito", TipoMensaje.MsgInformacion) - Else - Alert("Ocurrió un Error al vincular la cuenta deposito al IE", TipoMensaje.MsgError) - End If - - IE.Dispose() - End Sub - -#End Region - -#Region " ELIMINAR/CANCELAR - MOVIMIENTO " - - Protected Sub BtnCancelarIE_Click(sender As Object, e As EventArgs) - RegistraScript("$('#DivCancelarIE').modal('hide');") - - CancelarIE() - End Sub - - Private Sub CancelarIE(Optional CancelarComplemento As Boolean = False) - - If Not IsDate(TxtFechaCancelacion.Text.ToDate) Then - Alert("El campo fecha cancelación es incorrecto. Por favor verifique y vuelva a intentar") - Exit Sub - End If - - If ChkConciliado.Checked Then - Alert("El documento seleccionado no se puede eliminar porque se encuentra conciliado.", TipoMensaje.MsgError) - Exit Sub - End If - - Dim Banc As New ClsBancos - Banc.IniciaTransacSQL() - - Dim ObjAC As ClsContPAQi = Nothing - If UsuarioActual.Empresa.UsaAC Or UsuarioActual.Empresa.UsaContabilidad Then - ObjAC = New ClsContPAQi(UsuarioActual.Empresa) - ObjAC.IniciaTransacSQL() - End If - - - Dim ErrorCancelar = False - Dim MensajeError = "" - Dim IdPolizaNueva = -1 - Dim FolioPolizaNueva = -1 - - If (IDPoliza > 0 AndAlso (UsuarioActual.Empresa.UsaAC Or UsuarioActual.Empresa.UsaContabilidad)) Then - - If ObjAC Is Nothing Then - ErrorCancelar = True - End If - - If Not ErrorCancelar Then - Dim dt As DataTable - If ObjAC.GetPoliza(IDPoliza, -1, -1, -1, -1) AndAlso ObjAC.DtResultados.Rows.Count > 0 Then - dt = ObjAC.DtResultados - - ' MES ANTERIOR, MOVIMIENTOS CONTRARIOS (NEGATIVOS) - If dt.Rows(0)("FechaPol").ToString.ToDate < TxtFechaCancelacion.Text.ToDate.FirstDayOfMonth Then 'dt.Rows(0)("FechaPol").ToString.ToDate.Month < TxtFechaCancelacion.Text.ToDate.Month Or dt.Rows(0)("FechaPol").ToString.ToDate.Year < TxtFechaCancelacion.Text.ToDate.Year Then - IdPolizaNueva = ObjAC.AddPoliza(dt.Rows(0)("CodigoTipoPoliza").ToString.ToEntero, String.Format("Cancelacion: {0}", dt.Rows(0)("Concepto").ToString), 0, 0, UsuarioActual.CveUsuario, TxtFechaCancelacion.Text.ToDate) - - If IdPolizaNueva > 0 Then - FolioPolizaNueva = ObjAC.Folio - - 'CREA POLIZA NEGATIVA - For Each dr As DataRow In dt.Rows - If Not ObjAC.AddMovimiento(IdPolizaNueva, dr("IdCuenta").ToString.ToEntero, dr("TipoMovto").ToString = "True", dr("Importe").ToString.ToDecimal * -1, dr("Referencia").ToString, String.Format("Cancelacion: {0}", dt.Rows(0)("Concepto").ToString), dr("IdSegNeg").ToString.ToEntero, TxtFechaCancelacion.Text.ToDate, "") Then - ErrorCancelar = True - MensajeError = "Error al crear poliza negativa" - Exit For - End If - Next - - 'AJUSTA POLIZA - If Not ErrorCancelar Then - If Not ObjAC.AjustaPoliza(IdPolizaNueva) Then - ErrorCancelar = True - MensajeError = "Error al ajustar poliza negativa" - End If - End If - - 'CANCELA IE - If Not ErrorCancelar Then - If Not Banc.CancelarBancos_IE(UsuarioActual.CveUsuario, CveIE, True, IdPolizaNueva, TxtFechaCancelacion.Text.ToDate) Then - ErrorCancelar = True - MensajeError = "Error al cancelar IE" - End If - End If - - Else - ErrorCancelar = True - End If - - Else - - 'LIMPIA POLIZA PONIENDO IMPORTE EN CEROS - For Each dr As DataRow In dt.Rows - If Not ObjAC.UpdateMovimiento(dr("Id").ToString.ToEntero, dr("IdCuenta").ToString.ToEntero, dr("TipoMovto").ToString = "1", 0, dr("Referencia").ToString, dr("Concepto").ToString, dr("IdSegNeg").ToString.ToEntero, dr("Fecha").ToString.ToDate) Then - ErrorCancelar = True - MensajeError = "Error al actualizar Movimientos con importe 0" - Exit For - End If - Next - - 'AJUSTA POLIZA - If Not ErrorCancelar Then - If Not ObjAC.AjustaPoliza(IDPoliza) Then - ErrorCancelar = True - MensajeError = "Error al ajustar poliza negativa" - End If - End If - - 'CANCELA IE - If Not ErrorCancelar Then - If Not Banc.CancelarBancos_IE(UsuarioActual.CveUsuario, CveIE, False, IdPolizaNueva, TxtFechaCancelacion.Text.ToDate) Then - ErrorCancelar = True - MensajeError = "Error al cancelar IE" - End If - End If - - End If - - End If - End If - - Else - - ' If TxtFechaDocumento.Text.ToDate.Month < TxtFechaCancelacion.Text.ToDate.Month Or TxtFechaDocumento.Text.ToDate.Year < TxtFechaCancelacion.Text.ToDate.Year Then - If TxtFechaDocumento.Text.ToDate < TxtFechaCancelacion.Text.ToDate.FirstDayOfMonth Then - 'CANCELA IE MES ANTERIOR - If Not Banc.CancelarBancos_IE(UsuarioActual.CveUsuario, CveIE, True, IdPolizaNueva, TxtFechaCancelacion.Text.ToDate) Then - ErrorCancelar = True - MensajeError = "Error al cancelar IE MES ANTERIOR" - End If - Else - 'CANCELA IE MES ACTUAL - If Not Banc.CancelarBancos_IE(UsuarioActual.CveUsuario, CveIE, False, IdPolizaNueva, TxtFechaCancelacion.Text.ToDate) Then - ErrorCancelar = True - MensajeError = "Error al cancelar IE MES ACTUAL" - End If - End If - End If - - If Not ErrorCancelar Then - If Banc.GetComplementoPagos(-1, CveIE, -1, UsuarioActual.CveEmpresa) Then - If Banc.DtResultados.FiltraParametros("", DistinctColumns:={"CveComplementoPago", "SerieFolio", "Fecha", "CveIE"}).Rows.Count > 0 Then - If Not Banc.GetFoliosCancelados(UsuarioActual.CveEmpresa) Then - ErrorCancelar = True - MensajeError = "Error al cancelar complemento de pago" - Else - Dim FolioCancelado = $"{TxtFolio.Text}_C_{Banc.DtResultados(0)("Cantidad").ToString().ToEntero + 1}" - If Not Banc.UpdateFolioCancelado(CveIE.ToEntero, Folio:=FolioCancelado) Then - ErrorCancelar = True - MensajeError = "Error al actualizar complemento de pago" - End If - End If - End If - End If - End If - - If Not ErrorCancelar Then - - Dim ErrorCancelarComplemento As Boolean = True - - If CancelarComplemento Then - Dim ObjCancelacion As New Timbrado - 'Dim ObjBanco As New ClsBancos - If ObjCancelacion.CFDICancelar(UsuarioActual.Empresa, FolioFiscalCancelar, 0, RFCReceptorCancelar, UsuarioActual.Empresa.RFC, CvePACCancelacion) Then - - If Banc.UpdateComplementoPago(CveComplementoPagoCancelar, "-1", -1, UsuarioActual.CveEmpresa, 2, CvePACCancelacion, FechaCancelacion:=ObjCancelacion.CancelacionFecha, SelloCancelacion:=ObjCancelacion.CancelacionAcuse) Then - CargaComplementosPago() - RegistraScript("$('#ModalCancelarComplemetno').modal('hide');") - ErrorCancelarComplemento = False - Alert("El complemento se cancelo correctamente.") - End If - - Else - Alert("Se presento un error al cancelar el complemento.") - End If - Else - ErrorCancelarComplemento = False - End If - - - If Not ErrorCancelarComplemento Then - - If ObjAC IsNot Nothing Then ObjAC.Commit() - Banc.Commit() - Dim Msg As New StringBuilder - - If CancelarComplemento Then - Msg.Append("El movimiento bancario y su complemento quedaron cancelados exitosamente.") - Else - Msg.Append("El movimiento bancario quedó cancelado exitosamente.") - End If - - - If IdPolizaNueva > 0 Then Msg.AppendFormat("

Ver Póliza de cancelación", IdPolizaNueva) - Alert(Msg.ToString, TipoMensaje.MsgInformacion, "document.location.href=""/Bancos/RepIE.aspx""") - - Else - - If ObjAC IsNot Nothing Then ObjAC.RollBack() - Banc.RollBack() - Alert("El movimiento bancario no se pudo cancelar. Por favor vuelva a intentar.", TipoMensaje.MsgError) - GuardaLog(MensajeError + " | CANCELAR IE") - - End If - - - Else - If ObjAC IsNot Nothing Then ObjAC.RollBack() - Banc.RollBack() - Alert("El movimiento bancario no se pudo cancelar. Por favor vuelva a intentar.", TipoMensaje.MsgError) - GuardaLog(MensajeError + " | CANCELAR IE") - End If - - If ObjAC IsNot Nothing Then ObjAC.Dispose() - Banc.Dispose() - End Sub - - Protected Sub BtnDevueltoIE_Click(sender As Object, e As EventArgs) - RegistraScript("$('#DivChqDevueltoIE').modal('hide');") - - ChequeDevuelto() - - - End Sub - - Private Sub ChequeDevuelto() - If Not IsDate(TxtFechaDevuelto.Text.ToDate) Then - Alert("El campo fecha cancelación es incorrecto. Por favor verifique y vuelva a intentar") - Exit Sub - End If - - If ChkConciliado.Checked Then - Alert("El documento seleccionado no se puede eliminar porque se encuentra conciliado.", TipoMensaje.MsgError) - Exit Sub - End If - - Dim Banc As New ClsBancos - Banc.IniciaTransacSQL() - Dim ObjConta As New ClsContabilidad(Banc.IniciaTransacSQL) - - Dim ObjAC As ClsContPAQi = Nothing - If UsuarioActual.Empresa.UsaAC Or UsuarioActual.Empresa.UsaContabilidad Then - ObjAC = New ClsContPAQi(UsuarioActual.Empresa) - ObjAC.IniciaTransacSQL() - End If - - - Dim ErrorCancelar = False - Dim IdPolizaNueva = -1 - Dim FolioPolizaNueva = -1 - - If (IDPoliza > 0 AndAlso (UsuarioActual.Empresa.UsaAC Or UsuarioActual.Empresa.UsaContabilidad)) Then - - If ObjAC Is Nothing Then - ErrorCancelar = True - End If - - If Not ErrorCancelar Then - Dim dt As DataTable - If ObjAC.GetPoliza(IDPoliza, -1, -1, -1, -1) AndAlso ObjAC.DtResultados.Rows.Count > 0 Then - dt = ObjAC.DtResultados - - ' MES ANTERIOR, MOVIMIENTOS CONTRARIOS (NEGATIVOS) - - IdPolizaNueva = ObjAC.AddPoliza(1, String.Format("Cheque Devuelto: {0}", dt.Rows(0)("Concepto").ToString), 0, 0, UsuarioActual.CveUsuario, TxtFechaDevuelto.Text.ToDate) - - If IdPolizaNueva > 0 Then - FolioPolizaNueva = ObjAC.Folio - - 'CREA POLIZA NEGATIVA - For Each dr As DataRow In dt.Rows - If Not ObjAC.AddMovimiento(IdPolizaNueva, dr("IdCuenta").ToString.ToEntero, dr("TipoMovto").ToString = "True", dr("Importe").ToString.ToDecimal * -1, dr("Referencia").ToString, String.Format("Cancelacion: {0}", dt.Rows(0)("Concepto").ToString), dr("IdSegNeg").ToString.ToEntero, TxtFechaDevuelto.Text.ToDate, "") Then - ErrorCancelar = True : Exit For - End If - Next - - 'AJUSTA POLIZA - If Not ErrorCancelar Then - If Not ObjAC.AjustaPoliza(IdPolizaNueva) Then - ErrorCancelar = True - End If - End If - - 'genera nuevo IE contrario - If Not ErrorCancelar Then - If Not Banc.CancelarBancos_IE(UsuarioActual.CveUsuario, CveIE, True, IdPolizaNueva, TxtFechaDevuelto.Text.ToDate, 2) Then - ErrorCancelar = True - End If - End If - - Else - ErrorCancelar = True - End If - - - End If - End If - - Else - - 'siempre se hace una cancelación - If Not Banc.CancelarBancos_IE(UsuarioActual.CveUsuario, CveIE, True, IdPolizaNueva, TxtFechaDevuelto.Text.ToDate, 2) Then - ErrorCancelar = True - End If - - If UsuarioActual.Empresa.Funcionalidad(200) = "1" Then - If ObjConta.ContabilizarPrePoliza(CvePrePoliza, UsuarioActual.CveUsuario, UsuarioActual.Empresa) Then - - IDPoliza = ObjConta.ContaIdPoliza - Else - ErrorCancelar = True - Alert($"Ocurrio un error al contabilizar {ObjConta.AlertaMensaje}", TipoMensaje.MsgAdvertencia) - End If - End If - - End If - - - If Not ErrorCancelar Then - If ObjAC IsNot Nothing Then ObjAC.Commit() - Banc.Commit() - Dim Msg As New StringBuilder - Msg.Append("El movimiento bancario quedó devuelto exitosamente.") - - If IdPolizaNueva > 0 Then Msg.AppendFormat("

Ver Póliza de cancelación", IdPolizaNueva) - Alert(Msg.ToString, TipoMensaje.MsgInformacion, "document.location.href=""/Bancos/RepIE.aspx""") - Else - If ObjAC IsNot Nothing Then ObjAC.RollBack() - Banc.RollBack() - Alert("El movimiento bancario no se pudo registrar. Por favor vuelva a intentar.", TipoMensaje.MsgError) - End If - - If ObjAC IsNot Nothing Then ObjAC.Dispose() - Banc.Dispose() - - End Sub - - Protected Sub LnkEliminar_Click(sender As Object, e As EventArgs) Handles LnkEliminar.Click - RegistraScript(String.Format("$('#{0}').modal('show');", "divDescripcion")) - End Sub -#End Region - - - Protected Sub DdlMoneda_SelectedIndexChanged(sender As Object, e As System.EventArgs) Handles DdlMoneda.SelectedIndexChanged - CambiaTipoMoneda() - End Sub - - Private Sub CambiaTipoMoneda() - If DdlMoneda.SelectedValue.ToEntero > 1 Then - TrTipoCambio.Visible = True - TxtTipoCambio.Text = GlobalTipoCambio(TxtFechaDocumento.Text.Trim.ToDate).ToString - Else - TrTipoCambio.Visible = False - End If - UpTipoCambio.Update() - End Sub - - - Public Shared Function wsImporteLetra(ByVal contextKey As System.String, ByVal tCveMoneda As Integer) As System.String - Dim Retorno As String = "" - - If contextKey.ToDouble >= 0 Then - Retorno = String.Format("---{0}---", contextKey.ToDouble.Texto2Letras(tCveMoneda)) - End If - - Return Retorno - End Function - - Protected Sub RBL_SelectedIndexChanged(sender As Object, e As EventArgs) Handles RBL.SelectedIndexChanged - ChkAplicaViatico.Visible = False - If RBL.SelectedValue = "FE" Then - If UsuarioActual.CveRol = 1 Then ChkAplicaViatico.Visible = True - - DdlPersonal.Visible = True - DdlProveedores.Visible = False - DdlCliente.Visible = False - ElseIf RBL.SelectedValue = "P" Then - DdlPersonal.Visible = False - DdlProveedores.Visible = True - DdlCliente.Visible = False - ElseIf RBL.SelectedValue = "C" Then - DdlPersonal.Visible = False - DdlProveedores.Visible = False - DdlCliente.Visible = True - ElseIf RBL.SelectedValue = "AC" Then - DdlPersonal.Visible = False - DdlProveedores.Visible = True - DdlCliente.Visible = False - Else - - End If - - If RBL.SelectedValue = "C" AndAlso Request("Opcion") IsNot Nothing AndAlso Request("Opcion").ToString.Contiene("DEV") Then - DdlTipoTransaccion.Items.Clear() - DdlTipoTransaccion.DataSource = GlobalDTTipoTransacciones.FiltraParametros("Tipo='Egs'") - DdlTipoTransaccion.DataBind() - DdlTipoTransaccion.Items.Insert(0, New ListItem("Seleccione Tipo Movimiento", "-1")) - ElseIf RBL.SelectedValue = "P" AndAlso Request("Opcion") IsNot Nothing AndAlso Request("Opcion").ToString.Contiene("DEV") Then - DdlTipoTransaccion.Items.Clear() - DdlTipoTransaccion.DataSource = GlobalDTTipoTransacciones() - DdlTipoTransaccion.DataBind() - DdlTipoTransaccion.Items.Insert(0, New ListItem("Seleccione Tipo Movimiento", "-1")) - ElseIf RBL.SelectedValue = "DD" AndAlso Request("Opcion") IsNot Nothing AndAlso Request("Opcion").ToString.Contiene("DEV") Then - DdlTipoTransaccion.Items.Clear() - DdlTipoTransaccion.DataSource = GlobalDTTipoTransacciones() - DdlTipoTransaccion.DataBind() - DdlTipoTransaccion.Items.Insert(0, New ListItem("Seleccione Tipo Movimiento", "-1")) - ElseIf Request("Opcion") IsNot Nothing AndAlso Request("Opcion").ToString.Contiene("DEV") Then - - DdlTipoTransaccion.Items.Clear() - DdlTipoTransaccion.DataSource = GlobalDTTipoTransacciones.FiltraParametros("Tipo='Ing'") - DdlTipoTransaccion.DataBind() - DdlTipoTransaccion.Items.Insert(0, New ListItem("Seleccione Tipo Movimiento", "-1")) - End If - - 'Apartado Nueva Modalidad de INGPC Charlie - If RBL.SelectedValue = "C" AndAlso Request("Opcion") IsNot Nothing AndAlso Request("Opcion").ToString.Contiene("INGPC", "DEV") Then - DivIvaIxC.Visible = True - End If - - UpDatos.Update() - - End Sub - -#Region " IMPRIMIR " - Protected Sub BtnImprimir_Click(sender As Object, e As EventArgs) Handles BtnImprimir.Click - If CveIE > 0 Then GeneraChequePDF(CveIE, UsuarioActual.Empresa) - End Sub -#End Region - -#Region "E V E N T O - B I T A C O R A" - Protected Sub GVEventoBitacora_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles GvEB.RowDataBound - If e.Row.RowType = DataControlRowType.DataRow Then - If e.Row.RowIndex = 0 Then - e.Row.Cells(0).Width = Unit.Pixel(200) - e.Row.Cells(1).Width = Unit.Pixel(200) - e.Row.Cells(2).Width = Unit.Pixel(100) - e.Row.Cells(3).Width = Unit.Pixel(500) - End If - - If e.Row.DBCampo("Archivo").ToString <> "" Then - e.Row.FCLinkButton("LinkArchivo").Visible = True - e.Row.FCLinkButton("LinkArchivo").CommandArgument = String.Format("OI\{0}", e.Row.DBCampo("Archivo").ToString) - ScriptManager.GetCurrent(Me).RegisterPostBackControl(e.Row.FCLinkButton("LinkArchivo")) 'Registro un evento Postbacktrigger, que recargue toda la pagina para que funcione - End If - - e.Row.Cells(3).HorizontalAlign = HorizontalAlign.Left - End If - End Sub - Protected Sub BtnGuardarEventoBitacora_Click(sender As Object, e As EventArgs) Handles BtnGuardarEventoBitacora.Click - Dim ObjEventoBitacora As New ClsOIEventos - - Dim FileExtension As String = "" 'Anteriormente -1 - Dim filesgral As List(Of Archivo) = Anexo2.getfiles().Archivos - Dim filemove As String = "" - - For Each fileItem As Archivo In filesgral - FileExtension = IO.Path.GetExtension(String.Format("{0}Temp\{1}", AppDomain.CurrentDomain.BaseDirectory, fileItem.filename)).Replace(".", "") - filemove = fileItem.filename - Next - - If ObjEventoBitacora.AddEventoBitacora(TxtEventoDescripcion.Text.Trim, String.Format("{0}", FileExtension), UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveIE:=CveIE) Then - If filemove <> "" Then - filemove.FilesMove(String.Format("OI{0}", ObjEventoBitacora.CveEvento.ToString), String.Format("Empresas\{0}\OI", UsuarioActual.CveEmpresa)) - End If - - GvEB.DataSource = ObjEventoBitacora.DtResultados - TxtEventoDescripcion.Text = "" - Anexo2.Text = "[]" - Alert("La bitácora/observación se guardó correctamente", TipoMensaje.MsgInformacion) - RegistraScript("$('#ModalBitacora').modal('hide')", "hidemodal") - End If - ObjEventoBitacora.Dispose() - GvEB.DataBind() - - UPEventoBitacora.Update() - CargaEventoBitacora() - UPAddEventoBitacora.Update() - End Sub - Private Sub CargaEventoBitacora() - - Dim ObjEventoBitacora As New ClsOIEventos() - If ObjEventoBitacora.GetAgendaBitacora(UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveIE:=CveIE) Then - 'GVEventoBitacora.DataSource = ObjEventoBitacora.DtResultados - GvEB.DataSource = ObjEventoBitacora.DtResultados.FiltraParametros("CveTipoEvento = 6 OR CveTipoEvento = 2") - Else - GvEB.DataSource = Nothing - End If - ObjEventoBitacora.Dispose() - GvEB.DataBind() - End Sub - - Protected Sub DownloadFile(ByVal sender As Object, ByVal e As EventArgs) - Dim filePath As String = String.Format("{0}{1}", UsuarioActual.Empresa.Ruta, CType(sender, LinkButton).CommandArgument) - If IO.File.Exists(filePath) Then - Dim Archivo As New System.IO.FileInfo(filePath) - - HttpContext.Current.Response.Clear() - HttpContext.Current.Response.ClearContent() - HttpContext.Current.Response.ContentType = "application/octet-stream" - HttpContext.Current.Response.AppendHeader("Content-disposition", "attachment; filename=" + Path.GetFileName(filePath)) - HttpContext.Current.Response.AddHeader("Content-Length", Archivo.Length.ToString()) - HttpContext.Current.Response.TransmitFile(filePath) - HttpContext.Current.Response.Flush() - HttpContext.Current.Response.End() - - Archivo = Nothing - End If - - End Sub -#End Region - -#Region " C O N T A B I L I D A D DESASOCIAR POLIZA " - Protected Sub BtnContabilizar_Click(sender As Object, e As EventArgs) - - Dim ObjMov As New ClsContabilidad - Dim alertaContabilizacion As String = "Se enviaron correctamente las siguientes pólizas:

" - - - If ObjMov.ContabilizarPrePoliza(CvePrePoliza, UsuarioActual.CveUsuario, UsuarioActual.Empresa) Then - Alert(alertaContabilizacion & ObjMov.AlertaMensaje, ModExtensiones.TipoMensaje.MsgInformacion) - Else - Alert(String.Format("Ocurrio un error al contabilizar {0}", ObjMov.AlertaMensaje)) - End If - - ObjMov.Dispose() - - End Sub - Protected Sub BtnDescontabilizar_Click(sender As Object, e As EventArgs) - Dim ObjConta As New ClsContabilidad - Dim Movimientos = ObjConta.GetMovimientosPoliza(IDPoliza, UsuarioActual.CveEmpresa) - - 'Verifica que solo exista 1 compra asociada - If Movimientos = 1 Then - EliminaPoliza() - Else - RegistraScript("ConfirmEliminarPoliza();") - End If - - ObjConta.Dispose() - End Sub - 'Protected Sub BtnEliminarMov_Click(sender As Object, e As EventArgs) Handles BtnEliminarMov.Click - - ' Dim ObjBancos As New ClsBancos - ' ObjBancos.IniciaTransacSQL() - - ' If ObjBancos.EliminarBancos_IEComprobacion(UsuarioActual.CveUsuario, CveIE) Then - - ' Alert("Los Movimientos Bancarios se eliminaron correctamente.", TipoMensaje.MsgInformacion) - ' GvRH.Visible = False - ' DivEliminar.Visible = False - ' ObjBancos.Commit() - ' Else - ' ObjBancos.RollBack() - ' End If - - ' ObjBancos.Dispose() - - 'End Sub - Protected Sub BtnEliminarPoliza_Click(sender As Object, e As EventArgs) - EliminaPoliza() - End Sub - Private Sub EliminaPoliza() - Dim ObjAC As New ClsContPAQi(UsuarioActual.Empresa) - ObjAC.IniciaTransacSQL() - Dim ObjConta As New ClsContabilidad - ObjConta.IniciaTransacSQL() - - Dim ErrorCompra = False - - 'Elimina la poliza - If (UsuarioActual.Empresa.UsaAC Or UsuarioActual.Empresa.UsaContabilidad) AndAlso IDPoliza > 0 Then - If Not ObjAC.RemovePoliza(IDPoliza) Then - ErrorCompra = True - End If - End If - - 'Desasocia la poliza - If Not ErrorCompra Then - If Not ObjConta.DesasociarPoliza(IDPoliza, UsuarioActual.CveEmpresa) Then - ErrorCompra = True - End If - End If - + End Sub + + Protected Sub ImgUpdateCuentaDeposito_Click(sender As Object, e As ImageClickEventArgs) + Dim IE As New ClsBancos + + If IE.UpdateBancos_IECuentaDeposito(DdlCuentaDeposito.SelectedValue.ToEntero, CveIE) Then + Alert("Se vinculó con exito la cuenta deposito", TipoMensaje.MsgInformacion) + Else + Alert("Ocurrió un Error al vincular la cuenta deposito al IE", TipoMensaje.MsgError) + End If + + IE.Dispose() + End Sub + +#End Region + +#Region " ELIMINAR/CANCELAR - MOVIMIENTO " + + Protected Sub BtnCancelarIE_Click(sender As Object, e As EventArgs) + RegistraScript("$('#DivCancelarIE').modal('hide');") + + CancelarIE() + End Sub + + Private Sub CancelarIE(Optional CancelarComplemento As Boolean = False) + + If Not IsDate(TxtFechaCancelacion.Text.ToDate) Then + Alert("El campo fecha cancelación es incorrecto. Por favor verifique y vuelva a intentar") + Exit Sub + End If + + If ChkConciliado.Checked Then + Alert("El documento seleccionado no se puede eliminar porque se encuentra conciliado.", TipoMensaje.MsgError) + Exit Sub + End If + + Dim Banc As New ClsBancos + Banc.IniciaTransacSQL() + + Dim ObjAC As ClsContPAQi = Nothing + If UsuarioActual.Empresa.UsaAC Or UsuarioActual.Empresa.UsaContabilidad Then + ObjAC = New ClsContPAQi(UsuarioActual.Empresa) + ObjAC.IniciaTransacSQL() + End If + + + Dim ErrorCancelar = False + Dim MensajeError = "" + Dim IdPolizaNueva = -1 + Dim FolioPolizaNueva = -1 + + If (IDPoliza > 0 AndAlso (UsuarioActual.Empresa.UsaAC Or UsuarioActual.Empresa.UsaContabilidad)) Then + + If ObjAC Is Nothing Then + ErrorCancelar = True + End If + + If Not ErrorCancelar Then + Dim dt As DataTable + If ObjAC.GetPoliza(IDPoliza, -1, -1, -1, -1) AndAlso ObjAC.DtResultados.Rows.Count > 0 Then + dt = ObjAC.DtResultados + + ' MES ANTERIOR, MOVIMIENTOS CONTRARIOS (NEGATIVOS) + If dt.Rows(0)("FechaPol").ToString.ToDate < TxtFechaCancelacion.Text.ToDate.FirstDayOfMonth Then 'dt.Rows(0)("FechaPol").ToString.ToDate.Month < TxtFechaCancelacion.Text.ToDate.Month Or dt.Rows(0)("FechaPol").ToString.ToDate.Year < TxtFechaCancelacion.Text.ToDate.Year Then + IdPolizaNueva = ObjAC.AddPoliza(dt.Rows(0)("CodigoTipoPoliza").ToString.ToEntero, String.Format("Cancelacion: {0}", dt.Rows(0)("Concepto").ToString), 0, 0, UsuarioActual.CveUsuario, TxtFechaCancelacion.Text.ToDate) + + If IdPolizaNueva > 0 Then + FolioPolizaNueva = ObjAC.Folio + + 'CREA POLIZA NEGATIVA + For Each dr As DataRow In dt.Rows + If Not ObjAC.AddMovimiento(IdPolizaNueva, dr("IdCuenta").ToString.ToEntero, dr("TipoMovto").ToString = "True", dr("Importe").ToString.ToDecimal * -1, dr("Referencia").ToString, String.Format("Cancelacion: {0}", dt.Rows(0)("Concepto").ToString), dr("IdSegNeg").ToString.ToEntero, TxtFechaCancelacion.Text.ToDate, "") Then + ErrorCancelar = True + MensajeError = "Error al crear poliza negativa" + Exit For + End If + Next + + 'AJUSTA POLIZA + If Not ErrorCancelar Then + If Not ObjAC.AjustaPoliza(IdPolizaNueva) Then + ErrorCancelar = True + MensajeError = "Error al ajustar poliza negativa" + End If + End If + + 'CANCELA IE + If Not ErrorCancelar Then + If Not Banc.CancelarBancos_IE(UsuarioActual.CveUsuario, CveIE, True, IdPolizaNueva, TxtFechaCancelacion.Text.ToDate) Then + ErrorCancelar = True + MensajeError = "Error al cancelar IE" + End If + End If + + Else + ErrorCancelar = True + End If + + Else + + 'LIMPIA POLIZA PONIENDO IMPORTE EN CEROS + For Each dr As DataRow In dt.Rows + If Not ObjAC.UpdateMovimiento(dr("Id").ToString.ToEntero, dr("IdCuenta").ToString.ToEntero, dr("TipoMovto").ToString = "1", 0, dr("Referencia").ToString, dr("Concepto").ToString, dr("IdSegNeg").ToString.ToEntero, dr("Fecha").ToString.ToDate) Then + ErrorCancelar = True + MensajeError = "Error al actualizar Movimientos con importe 0" + Exit For + End If + Next + + 'AJUSTA POLIZA + If Not ErrorCancelar Then + If Not ObjAC.AjustaPoliza(IDPoliza) Then + ErrorCancelar = True + MensajeError = "Error al ajustar poliza negativa" + End If + End If + + 'CANCELA IE + If Not ErrorCancelar Then + If Not Banc.CancelarBancos_IE(UsuarioActual.CveUsuario, CveIE, False, IdPolizaNueva, TxtFechaCancelacion.Text.ToDate) Then + ErrorCancelar = True + MensajeError = "Error al cancelar IE" + End If + End If + + End If + + End If + End If + + Else + + ' If TxtFechaDocumento.Text.ToDate.Month < TxtFechaCancelacion.Text.ToDate.Month Or TxtFechaDocumento.Text.ToDate.Year < TxtFechaCancelacion.Text.ToDate.Year Then + If TxtFechaDocumento.Text.ToDate < TxtFechaCancelacion.Text.ToDate.FirstDayOfMonth Then + 'CANCELA IE MES ANTERIOR + If Not Banc.CancelarBancos_IE(UsuarioActual.CveUsuario, CveIE, True, IdPolizaNueva, TxtFechaCancelacion.Text.ToDate) Then + ErrorCancelar = True + MensajeError = "Error al cancelar IE MES ANTERIOR" + End If + Else + 'CANCELA IE MES ACTUAL + If Not Banc.CancelarBancos_IE(UsuarioActual.CveUsuario, CveIE, False, IdPolizaNueva, TxtFechaCancelacion.Text.ToDate) Then + ErrorCancelar = True + MensajeError = "Error al cancelar IE MES ACTUAL" + End If + End If + End If + + If Not ErrorCancelar Then + If Banc.GetComplementoPagos(-1, CveIE, -1, UsuarioActual.CveEmpresa) Then + If Banc.DtResultados.FiltraParametros("", DistinctColumns:={"CveComplementoPago", "SerieFolio", "Fecha", "CveIE"}).Rows.Count > 0 Then + If Not Banc.GetFoliosCancelados(UsuarioActual.CveEmpresa) Then + ErrorCancelar = True + MensajeError = "Error al cancelar complemento de pago" + Else + Dim FolioCancelado = $"{TxtFolio.Text}_C_{Banc.DtResultados(0)("Cantidad").ToString().ToEntero + 1}" + If Not Banc.UpdateFolioCancelado(CveIE.ToEntero, Folio:=FolioCancelado) Then + ErrorCancelar = True + MensajeError = "Error al actualizar complemento de pago" + End If + End If + End If + End If + End If + + If Not ErrorCancelar Then + + Dim ErrorCancelarComplemento As Boolean = True + + If CancelarComplemento Then + Dim ObjCancelacion As New Timbrado + 'Dim ObjBanco As New ClsBancos + If ObjCancelacion.CFDICancelar(UsuarioActual.Empresa, FolioFiscalCancelar, 0, RFCReceptorCancelar, UsuarioActual.Empresa.RFC, CvePACCancelacion) Then + + If Banc.UpdateComplementoPago(CveComplementoPagoCancelar, "-1", -1, UsuarioActual.CveEmpresa, 2, CvePACCancelacion, FechaCancelacion:=ObjCancelacion.CancelacionFecha, SelloCancelacion:=ObjCancelacion.CancelacionAcuse) Then + CargaComplementosPago() + RegistraScript("$('#ModalCancelarComplemetno').modal('hide');") + ErrorCancelarComplemento = False + Alert("El complemento se cancelo correctamente.") + End If + + Else + Alert("Se presento un error al cancelar el complemento.") + End If + Else + ErrorCancelarComplemento = False + End If + + + If Not ErrorCancelarComplemento Then + + If ObjAC IsNot Nothing Then ObjAC.Commit() + Banc.Commit() + Dim Msg As New StringBuilder + + If CancelarComplemento Then + Msg.Append("El movimiento bancario y su complemento quedaron cancelados exitosamente.") + Else + Msg.Append("El movimiento bancario quedó cancelado exitosamente.") + End If + + + If IdPolizaNueva > 0 Then Msg.AppendFormat("

Ver Póliza de cancelación", IdPolizaNueva) + Alert(Msg.ToString, TipoMensaje.MsgInformacion, "document.location.href=""/Bancos/RepIE.aspx""") + + Else + + If ObjAC IsNot Nothing Then ObjAC.RollBack() + Banc.RollBack() + Alert("El movimiento bancario no se pudo cancelar. Por favor vuelva a intentar.", TipoMensaje.MsgError) + GuardaLog(MensajeError + " | CANCELAR IE") + + End If + + + Else + If ObjAC IsNot Nothing Then ObjAC.RollBack() + Banc.RollBack() + Alert("El movimiento bancario no se pudo cancelar. Por favor vuelva a intentar.", TipoMensaje.MsgError) + GuardaLog(MensajeError + " | CANCELAR IE") + End If + + If ObjAC IsNot Nothing Then ObjAC.Dispose() + Banc.Dispose() + End Sub + + Protected Sub BtnDevueltoIE_Click(sender As Object, e As EventArgs) + RegistraScript("$('#DivChqDevueltoIE').modal('hide');") + + ChequeDevuelto() + + + End Sub + + Private Sub ChequeDevuelto() + If Not IsDate(TxtFechaDevuelto.Text.ToDate) Then + Alert("El campo fecha cancelación es incorrecto. Por favor verifique y vuelva a intentar") + Exit Sub + End If + + If ChkConciliado.Checked Then + Alert("El documento seleccionado no se puede eliminar porque se encuentra conciliado.", TipoMensaje.MsgError) + Exit Sub + End If + + Dim Banc As New ClsBancos + Banc.IniciaTransacSQL() + Dim ObjConta As New ClsContabilidad(Banc.IniciaTransacSQL) + + Dim ObjAC As ClsContPAQi = Nothing + If UsuarioActual.Empresa.UsaAC Or UsuarioActual.Empresa.UsaContabilidad Then + ObjAC = New ClsContPAQi(UsuarioActual.Empresa) + ObjAC.IniciaTransacSQL() + End If + + + Dim ErrorCancelar = False + Dim IdPolizaNueva = -1 + Dim FolioPolizaNueva = -1 + + If (IDPoliza > 0 AndAlso (UsuarioActual.Empresa.UsaAC Or UsuarioActual.Empresa.UsaContabilidad)) Then + + If ObjAC Is Nothing Then + ErrorCancelar = True + End If + + If Not ErrorCancelar Then + Dim dt As DataTable + If ObjAC.GetPoliza(IDPoliza, -1, -1, -1, -1) AndAlso ObjAC.DtResultados.Rows.Count > 0 Then + dt = ObjAC.DtResultados + + ' MES ANTERIOR, MOVIMIENTOS CONTRARIOS (NEGATIVOS) + + IdPolizaNueva = ObjAC.AddPoliza(1, String.Format("Cheque Devuelto: {0}", dt.Rows(0)("Concepto").ToString), 0, 0, UsuarioActual.CveUsuario, TxtFechaDevuelto.Text.ToDate) + + If IdPolizaNueva > 0 Then + FolioPolizaNueva = ObjAC.Folio + + 'CREA POLIZA NEGATIVA + For Each dr As DataRow In dt.Rows + If Not ObjAC.AddMovimiento(IdPolizaNueva, dr("IdCuenta").ToString.ToEntero, dr("TipoMovto").ToString = "True", dr("Importe").ToString.ToDecimal * -1, dr("Referencia").ToString, String.Format("Cancelacion: {0}", dt.Rows(0)("Concepto").ToString), dr("IdSegNeg").ToString.ToEntero, TxtFechaDevuelto.Text.ToDate, "") Then + ErrorCancelar = True : Exit For + End If + Next + + 'AJUSTA POLIZA + If Not ErrorCancelar Then + If Not ObjAC.AjustaPoliza(IdPolizaNueva) Then + ErrorCancelar = True + End If + End If + + 'genera nuevo IE contrario + If Not ErrorCancelar Then + If Not Banc.CancelarBancos_IE(UsuarioActual.CveUsuario, CveIE, True, IdPolizaNueva, TxtFechaDevuelto.Text.ToDate, 2) Then + ErrorCancelar = True + End If + End If + + Else + ErrorCancelar = True + End If + + + End If + End If + + Else + + 'siempre se hace una cancelación + If Not Banc.CancelarBancos_IE(UsuarioActual.CveUsuario, CveIE, True, IdPolizaNueva, TxtFechaDevuelto.Text.ToDate, 2) Then + ErrorCancelar = True + End If + + If UsuarioActual.Empresa.Funcionalidad(200) = "1" Then + If ObjConta.ContabilizarPrePoliza(CvePrePoliza, UsuarioActual.CveUsuario, UsuarioActual.Empresa) Then + + IDPoliza = ObjConta.ContaIdPoliza + Else + ErrorCancelar = True + Alert($"Ocurrio un error al contabilizar {ObjConta.AlertaMensaje}", TipoMensaje.MsgAdvertencia) + End If + End If + + End If + + + If Not ErrorCancelar Then + If ObjAC IsNot Nothing Then ObjAC.Commit() + Banc.Commit() + Dim Msg As New StringBuilder + Msg.Append("El movimiento bancario quedó devuelto exitosamente.") + + If IdPolizaNueva > 0 Then Msg.AppendFormat("

Ver Póliza de cancelación", IdPolizaNueva) + Alert(Msg.ToString, TipoMensaje.MsgInformacion, "document.location.href=""/Bancos/RepIE.aspx""") + Else + If ObjAC IsNot Nothing Then ObjAC.RollBack() + Banc.RollBack() + Alert("El movimiento bancario no se pudo registrar. Por favor vuelva a intentar.", TipoMensaje.MsgError) + End If + + If ObjAC IsNot Nothing Then ObjAC.Dispose() + Banc.Dispose() + + End Sub + + Protected Sub LnkEliminar_Click(sender As Object, e As EventArgs) Handles LnkEliminar.Click + RegistraScript(String.Format("$('#{0}').modal('show');", "divDescripcion")) + End Sub +#End Region + + + Protected Sub DdlMoneda_SelectedIndexChanged(sender As Object, e As System.EventArgs) Handles DdlMoneda.SelectedIndexChanged + CambiaTipoMoneda() + End Sub + + Private Sub CambiaTipoMoneda() + If DdlMoneda.SelectedValue.ToEntero > 1 Then + TrTipoCambio.Visible = True + TxtTipoCambio.Text = GlobalTipoCambio(TxtFechaDocumento.Text.Trim.ToDate).ToString + Else + TrTipoCambio.Visible = False + End If + UpTipoCambio.Update() + End Sub + + + Public Shared Function wsImporteLetra(ByVal contextKey As System.String, ByVal tCveMoneda As Integer) As System.String + Dim Retorno As String = "" + + If contextKey.ToDouble >= 0 Then + Retorno = String.Format("---{0}---", contextKey.ToDouble.Texto2Letras(tCveMoneda)) + End If + + Return Retorno + End Function + + Protected Sub RBL_SelectedIndexChanged(sender As Object, e As EventArgs) Handles RBL.SelectedIndexChanged + ChkAplicaViatico.Visible = False + If RBL.SelectedValue = "FE" Then + If UsuarioActual.CveRol = 1 Then ChkAplicaViatico.Visible = True + + DdlPersonal.Visible = True + DdlProveedores.Visible = False + DdlCliente.Visible = False + ElseIf RBL.SelectedValue = "P" Then + DdlPersonal.Visible = False + DdlProveedores.Visible = True + DdlCliente.Visible = False + ElseIf RBL.SelectedValue = "C" Then + DdlPersonal.Visible = False + DdlProveedores.Visible = False + DdlCliente.Visible = True + ElseIf RBL.SelectedValue = "AC" Then + DdlPersonal.Visible = False + DdlProveedores.Visible = True + DdlCliente.Visible = False + Else + + End If + + If RBL.SelectedValue = "C" AndAlso Request("Opcion") IsNot Nothing AndAlso Request("Opcion").ToString.Contiene("DEV") Then + DdlTipoTransaccion.Items.Clear() + DdlTipoTransaccion.DataSource = GlobalDTTipoTransacciones.FiltraParametros("Tipo='Egs'") + DdlTipoTransaccion.DataBind() + DdlTipoTransaccion.Items.Insert(0, New ListItem("Seleccione Tipo Movimiento", "-1")) + ElseIf RBL.SelectedValue = "P" AndAlso Request("Opcion") IsNot Nothing AndAlso Request("Opcion").ToString.Contiene("DEV") Then + DdlTipoTransaccion.Items.Clear() + DdlTipoTransaccion.DataSource = GlobalDTTipoTransacciones() + DdlTipoTransaccion.DataBind() + DdlTipoTransaccion.Items.Insert(0, New ListItem("Seleccione Tipo Movimiento", "-1")) + ElseIf RBL.SelectedValue = "DD" AndAlso Request("Opcion") IsNot Nothing AndAlso Request("Opcion").ToString.Contiene("DEV") Then + DdlTipoTransaccion.Items.Clear() + DdlTipoTransaccion.DataSource = GlobalDTTipoTransacciones() + DdlTipoTransaccion.DataBind() + DdlTipoTransaccion.Items.Insert(0, New ListItem("Seleccione Tipo Movimiento", "-1")) + ElseIf Request("Opcion") IsNot Nothing AndAlso Request("Opcion").ToString.Contiene("DEV") Then + + DdlTipoTransaccion.Items.Clear() + DdlTipoTransaccion.DataSource = GlobalDTTipoTransacciones.FiltraParametros("Tipo='Ing'") + DdlTipoTransaccion.DataBind() + DdlTipoTransaccion.Items.Insert(0, New ListItem("Seleccione Tipo Movimiento", "-1")) + End If + + 'Apartado Nueva Modalidad de INGPC Charlie + If RBL.SelectedValue = "C" AndAlso Request("Opcion") IsNot Nothing AndAlso Request("Opcion").ToString.Contiene("INGPC", "DEV") Then + DivIvaIxC.Visible = True + End If + + UpDatos.Update() + + End Sub + +#Region " IMPRIMIR " + Protected Sub BtnImprimir_Click(sender As Object, e As EventArgs) Handles BtnImprimir.Click + If CveIE > 0 Then GeneraChequePDF(CveIE, UsuarioActual.Empresa) + End Sub +#End Region + +#Region "E V E N T O - B I T A C O R A" + Protected Sub GVEventoBitacora_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles GvEB.RowDataBound + If e.Row.RowType = DataControlRowType.DataRow Then + If e.Row.RowIndex = 0 Then + e.Row.Cells(0).Width = Unit.Pixel(200) + e.Row.Cells(1).Width = Unit.Pixel(200) + e.Row.Cells(2).Width = Unit.Pixel(100) + e.Row.Cells(3).Width = Unit.Pixel(500) + End If + + If e.Row.DBCampo("Archivo").ToString <> "" Then + e.Row.FCLinkButton("LinkArchivo").Visible = True + e.Row.FCLinkButton("LinkArchivo").CommandArgument = String.Format("OI\{0}", e.Row.DBCampo("Archivo").ToString) + ScriptManager.GetCurrent(Me).RegisterPostBackControl(e.Row.FCLinkButton("LinkArchivo")) 'Registro un evento Postbacktrigger, que recargue toda la pagina para que funcione + End If + + e.Row.Cells(3).HorizontalAlign = HorizontalAlign.Left + End If + End Sub + Protected Sub BtnGuardarEventoBitacora_Click(sender As Object, e As EventArgs) Handles BtnGuardarEventoBitacora.Click + Dim ObjEventoBitacora As New ClsOIEventos + + Dim FileExtension As String = "" 'Anteriormente -1 + Dim filesgral As List(Of Archivo) = Anexo2.getfiles().Archivos + Dim filemove As String = "" + + For Each fileItem As Archivo In filesgral + FileExtension = IO.Path.GetExtension(String.Format("{0}Temp\{1}", AppDomain.CurrentDomain.BaseDirectory, fileItem.filename)).Replace(".", "") + filemove = fileItem.filename + Next + + If ObjEventoBitacora.AddEventoBitacora(TxtEventoDescripcion.Text.Trim, String.Format("{0}", FileExtension), UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveIE:=CveIE) Then + If filemove <> "" Then + filemove.FilesMove(String.Format("OI{0}", ObjEventoBitacora.CveEvento.ToString), String.Format("Empresas\{0}\OI", UsuarioActual.CveEmpresa)) + End If + + GvEB.DataSource = ObjEventoBitacora.DtResultados + TxtEventoDescripcion.Text = "" + Anexo2.Text = "[]" + Alert("La bitácora/observación se guardó correctamente", TipoMensaje.MsgInformacion) + RegistraScript("$('#ModalBitacora').modal('hide')", "hidemodal") + End If + ObjEventoBitacora.Dispose() + GvEB.DataBind() + + UPEventoBitacora.Update() + CargaEventoBitacora() + UPAddEventoBitacora.Update() + End Sub + Private Sub CargaEventoBitacora() + + Dim ObjEventoBitacora As New ClsOIEventos() + If ObjEventoBitacora.GetAgendaBitacora(UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveIE:=CveIE) Then + 'GVEventoBitacora.DataSource = ObjEventoBitacora.DtResultados + GvEB.DataSource = ObjEventoBitacora.DtResultados.FiltraParametros("CveTipoEvento = 6 OR CveTipoEvento = 2") + Else + GvEB.DataSource = Nothing + End If + ObjEventoBitacora.Dispose() + GvEB.DataBind() + End Sub + + Protected Sub DownloadFile(ByVal sender As Object, ByVal e As EventArgs) + Dim filePath As String = String.Format("{0}{1}", UsuarioActual.Empresa.Ruta, CType(sender, LinkButton).CommandArgument) + If IO.File.Exists(filePath) Then + Dim Archivo As New System.IO.FileInfo(filePath) + + HttpContext.Current.Response.Clear() + HttpContext.Current.Response.ClearContent() + HttpContext.Current.Response.ContentType = "application/octet-stream" + HttpContext.Current.Response.AppendHeader("Content-disposition", "attachment; filename=" + Path.GetFileName(filePath)) + HttpContext.Current.Response.AddHeader("Content-Length", Archivo.Length.ToString()) + HttpContext.Current.Response.TransmitFile(filePath) + HttpContext.Current.Response.Flush() + HttpContext.Current.Response.End() + + Archivo = Nothing + End If + + End Sub +#End Region + +#Region " C O N T A B I L I D A D DESASOCIAR POLIZA " + Protected Sub BtnContabilizar_Click(sender As Object, e As EventArgs) + + Dim ObjMov As New ClsContabilidad + Dim alertaContabilizacion As String = "Se enviaron correctamente las siguientes pólizas:

" + + + If ObjMov.ContabilizarPrePoliza(CvePrePoliza, UsuarioActual.CveUsuario, UsuarioActual.Empresa) Then + Alert(alertaContabilizacion & ObjMov.AlertaMensaje, ModExtensiones.TipoMensaje.MsgInformacion) + Else + Alert(String.Format("Ocurrio un error al contabilizar {0}", ObjMov.AlertaMensaje)) + End If + + ObjMov.Dispose() + + End Sub + Protected Sub BtnDescontabilizar_Click(sender As Object, e As EventArgs) + Dim ObjConta As New ClsContabilidad + Dim Movimientos = ObjConta.GetMovimientosPoliza(IDPoliza, UsuarioActual.CveEmpresa) + + 'Verifica que solo exista 1 compra asociada + If Movimientos = 1 Then + EliminaPoliza() + Else + RegistraScript("ConfirmEliminarPoliza();") + End If + + ObjConta.Dispose() + End Sub + 'Protected Sub BtnEliminarMov_Click(sender As Object, e As EventArgs) Handles BtnEliminarMov.Click + + ' Dim ObjBancos As New ClsBancos + ' ObjBancos.IniciaTransacSQL() + + ' If ObjBancos.EliminarBancos_IEComprobacion(UsuarioActual.CveUsuario, CveIE) Then + + ' Alert("Los Movimientos Bancarios se eliminaron correctamente.", TipoMensaje.MsgInformacion) + ' GvRH.Visible = False + ' DivEliminar.Visible = False + ' ObjBancos.Commit() + ' Else + ' ObjBancos.RollBack() + ' End If + + ' ObjBancos.Dispose() + + 'End Sub + Protected Sub BtnEliminarPoliza_Click(sender As Object, e As EventArgs) + EliminaPoliza() + End Sub + Private Sub EliminaPoliza() + Dim ObjAC As New ClsContPAQi(UsuarioActual.Empresa) + ObjAC.IniciaTransacSQL() + Dim ObjConta As New ClsContabilidad + ObjConta.IniciaTransacSQL() + + Dim ErrorCompra = False + + 'Elimina la poliza + If (UsuarioActual.Empresa.UsaAC Or UsuarioActual.Empresa.UsaContabilidad) AndAlso IDPoliza > 0 Then + If Not ObjAC.RemovePoliza(IDPoliza) Then + ErrorCompra = True + End If + End If + + 'Desasocia la poliza + If Not ErrorCompra Then + If Not ObjConta.DesasociarPoliza(IDPoliza, UsuarioActual.CveEmpresa) Then + ErrorCompra = True + End If + End If + If Not ErrorCompra Then If Not ObjConta.UpdatePrePolizasDetalleBloquear(CvePrePoliza, False) Then ErrorCompra = True End If - End If - - If Not ErrorCompra Then - Alert("La poliza ha sido desvinculada y eliminada con exito.", TipoMensaje.MsgInformacion) - ObjAC.Commit() - ObjConta.Commit() - Else - Alert("Ocurrió un error al desvincular y/o eliminar la poliza. Por favor intente de nuevo ", TipoMensaje.MsgError) - ObjAC.RollBack() - ObjConta.RollBack() - End If - - ObjAC.Dispose() - ObjConta.Dispose() - - If Not ErrorCompra Then - CargaDatos() - End If - End Sub -#End Region - -#Region " CARGAR - COMPROBANTE " - Protected Sub BtnConfirmaComprobante_Click(sender As Object, e As EventArgs) - Dim DirectorioGuardar = String.Format("{0}Empresas\{1}\IE", Request.PhysicalApplicationPath, UsuarioActual.CveEmpresa) - Dim ArchivoTemporal = String.Format("{0}Empresas\{1}\Temp\{2}", Request.PhysicalApplicationPath, UsuarioActual.CveEmpresa, Session("FileUpload").ToString) - - If Session("FileUpload").ToString <> String.Empty AndAlso File.Exists(ArchivoTemporal) Then - Dim Extension As String = Path.GetExtension(ArchivoTemporal) - - Dim ObjIE As New ClsBancos - ObjIE.IniciaTransacSQL() - Dim TieneError = False - - If ObjIE.UpdateComprobanteIE(Extension.Replace("."c, ""), CveIE) Then - If Not Directory.Exists(DirectorioGuardar) Then Directory.CreateDirectory(DirectorioGuardar) - - 'Si ya existe el archivo lo eliminamos, para evitar error - If File.Exists(String.Format("{0}\{1}{2}", DirectorioGuardar, CveIE, Extension)) Then - File.Delete(String.Format("{0}\{1}{2}", DirectorioGuardar, CveIE, Extension)) - End If - - File.Move(ArchivoTemporal, String.Format("{0}\{1}{2}", DirectorioGuardar, CveIE, Extension)) - - If Not File.Exists(String.Format("{0}\{1}{2}", DirectorioGuardar, CveIE, Extension)) Then - TieneError = True - End If - Else - TieneError = True - End If - - If Not TieneError Then - ObjIE.Commit() - Alert("El Comprobante se guardo exitosamente.", TipoMensaje.MsgInformacion) - - If HplComprobante.Visible = False Then - HplComprobante.Visible = True - HplComprobante.NavigateUrl = String.Format("/Empresas/{0}/IE/{1}{2}", UsuarioActual.CveEmpresa, CveIE, Extension) - UpDatos.Update() - End If - Else - ObjIE.RollBack() - Alert("Ocurrió un error al guardar el comprobante. Por favor vuelta a intentar.", TipoMensaje.MsgError) - End If - - Session("FileUpload") = "" - ObjIE.Dispose() - End If - End Sub - - Protected Sub BtnGuardarArchivo_Click(sender As Object, e As EventArgs) Handles BtnGuardarArchivo.Click - Dim ObjIE As New ClsBancos - Dim Comprobante As String = "" - - Dim Filesgral As List(Of Archivo) = TxtCargarArchivo.getfiles().Archivos - If Filesgral.Count > 0 Then - Dim fileItem As Archivo = Filesgral(0) - Dim Path As String = HttpContext.Current.Request.ApplicationPath - Comprobante = IO.Path.GetExtension(String.Format("{0}Temp\{1}", AppDomain.CurrentDomain.BaseDirectory, fileItem.filename)).Replace(".", "") - Path = HttpContext.Current.Request.MapPath(Path) - Path += String.Format("Empresas/{0}/IE", UsuarioActual.CveEmpresa) - If Not Directory.Exists(Path) Then - Directory.CreateDirectory(Path) - End If - Path += $"/{CveIE}.{Comprobante}" - If File.Exists(Path) Then - File.Delete(Path) - End If - My.Computer.FileSystem.MoveFile(fileItem.FileUrl, Path) - End If - TxtCargarArchivo.Text = "" - RegistraScript("$('#ModalUpload').modal('hide')", "hidemodal1") - - If ObjIE.UpdateComprobanteIE(Comprobante.Replace("."c, ""), CveIE) Then - Alert("El Comprobante se guardo exitosamente.", TipoMensaje.MsgInformacion) - End If - - ObjIE.Dispose() - - End Sub - -#End Region - -#Region " DEVOLUCIONES " - Private Sub CargaIEDevoluciones() - Dim ObjMov As New ClsMovimientos - - If HdnCveProveedor.Value.ToEntero > 0 Or HdnCvePersonal.Value.ToEntero > 0 Then - trIEDevolucion.Visible = True - - If ObjMov.GetEgresosSinComprobar("-1", "-1", HdnCveProveedor.Value.ToEntero, HdnCvePersonal.Value.ToEntero, -1, -1, -1, DdlMoneda.SelectedValue.ToEntero, -1, UsuarioActual.CveEmpresa) Then - DtIEDevolucion = ObjMov.DtResultados.FiltraParametros("CveIE > 0 AND Saldo > 0 ", "", {"CveIE", "IEDevolucion", "Saldo"}) - - Else - Alert("Ocurrió un error al cargar los Egresos del Proveedor seleccionado. Por favor vuelva a intetar.", TipoMensaje.MsgError) - End If - - End If - ObjMov.Dispose() - - 'CARGAMOS LOS IE EN EL DLL - DdlIEDevolucion.Items.Clear() - DdlIEDevolucion.DataSource = DtIEDevolucion - DdlIEDevolucion.DataBind() - DdlIEDevolucion.Items.Insert(0, New ListItem("Seleccione", "-1")) - UpIEDevolucion.Update() - - End Sub - - Private Sub CargaIEDevolucionesClientes() - Dim ObjMov As New ClsMovimientos - - If HdnCveCliente.Value.ToEntero > 0 Then - trIEDevolucion.Visible = True - - If ObjMov.GetMovimientosIE(1, HdnCveCliente.Value.ToEntero, DdlCuenta.SelectedValue.ToEntero, Now.AddMonths(-24), Now, DdlMoneda.SelectedValue.ToEntero, -1, UsuarioActual.CveEmpresa) Then - DtIEDevolucion = ObjMov.DtResultados.FiltraParametros("Saldo > 0 ") - Else - Alert("Ocurrió un error al cargar los Egresos del Proveedor seleccionado. Por favor vuelva a intetar.", TipoMensaje.MsgError) - End If - - End If - ObjMov.Dispose() - - 'CARGAMOS LOS IE EN EL DLL - DdlIEDevolucion.Items.Clear() - DdlIEDevolucion.DataSource = DtIEDevolucion - DdlIEDevolucion.DataBind() - DdlIEDevolucion.Items.Insert(0, New ListItem("Seleccione", "-1")) - UpIEDevolucion.Update() - - End Sub - - Private Sub DdlIEDevolucion_SelectedIndexChanged(sender As Object, e As EventArgs) Handles DdlIEDevolucion.SelectedIndexChanged - If DtIEDevolucion.Rows.Count > 0 Then - TxtImporte.Text = DtIEDevolucion.FiltroPrimeroValor("Saldo", String.Format("CveIE = {0}", DdlIEDevolucion.SelectedValue.ToEntero)).FormatoNumero() - End If - UpDatos.Update() - End Sub - - Private Sub CargaGridTarjetas() - Dim ObjCreditos As New ClsBancos - ObjCreditos.GetTarjetasCreditos(DdlCuenta.SelectedValue.ToEntero) - - DdlTarjeta.Items.Clear() - DdlTarjeta.DataSource = ObjCreditos.DtResultados - DdlTarjeta.DataBind() - DdlTarjeta.Items.Insert(0, New ListItem("Seleccione", "-1")) - - ObjCreditos.Dispose() - DivTarjeta.Visible = True - End Sub - -#End Region - -#Region "PAGO ACREEDORES" - Private Sub CargaIEIngresos() - Dim ObjMov As New ClsMovimientos - - - If HdnCveProveedor.Value.ToEntero > 0 Then - DivIEAcreedor.Visible = True - DdlIEDevolucion.Items.Clear() - - If ObjMov.GetIngresosAcreedorXSaldar(HdnCveProveedor.Value.ToEntero, DdlMoneda.SelectedValue.ToEntero, UsuarioActual.CveEmpresa) Then - DdlIEAcreedor.DataSource = ObjMov.DtResultados.FiltraParametros("CveIE > 0 AND Saldo > 0 ", "", {"CveIE", "IEAcreedor", "Saldo"}) - DdlIEAcreedor.DataBind() - DdlIEAcreedor.Items.Insert(0, New ListItem("Seleccione", "-1")) - End If - End If - ObjMov.Dispose() - UpIEAcreedor.Update() - End Sub -#End Region - -#Region "I M P R I M E P D F - N U E V O -" - Private Sub ImprimirIEPDF(CveTipoTransaccion As Integer) - Dim Archivo As System.IO.FileInfo = Nothing - - 'VERIFICA SI EXISTE EL FORMATO - If CveTipoTransaccion.Contiene(2, 8, 9, 10) Then - Archivo = New System.IO.FileInfo(String.Format("{0}Formatos/Transferencia.rdlc", UsuarioActual.Empresa.Ruta)) - ElseIf CveTipoTransaccion.Contiene(1) Then - Archivo = New System.IO.FileInfo(String.Format("{0}Formatos/CHQ-{1}.rdlc", UsuarioActual.Empresa.Ruta, CveCuenta)) - End If - - ''PRUEBAS AD-TEAM - 'LnkImprimir.Visible = False - 'If UsuarioActual.CveUsuario = 100 Then - ' LnkImprimir.Visible = True - 'End If - - If Archivo IsNot Nothing AndAlso Archivo.Exists Then - HLImprimir.NavigateUrl = String.Format("/Compras/PopUpVerFactura.aspx?P={0}", Encripta(String.Format("OP=IE&CVEIE={0}", CveIE))) - HLImprimir.Visible = True - Else - HLImprimir.Visible = False - End If - - End Sub -#End Region - -#Region " CUENTAS DEPOSITOS " - 'Si la cuenta no esta activa, no la muestra. - Private Sub CargaCuentasDepositos() - DdlCuentaDeposito.Items.Clear() - 'If DdlTipoTransaccion.SelectedValue.Contiene("2", "9") Then ' transferencias y layout - trCuentaDeposito.Visible = False - - - Dim Dep As New ClsGenerales - If Dep.GetCuentasDepositos(CveProveedor:=CveProveedor, CveCliente:=CveCliente, CvePersonal:=CvePersonal) Then - - If DdlTipoTransaccion.SelectedValue = "9" Then - - DdlCuentaDeposito.DataSource = Dep.DtResultados.FiltraParametros("EstatusPagoElectronico = 'True' AND Estatus ='True'") - - If Dep.DtResultados.FiltraParametros("EstatusPagoElectronico = 'True' AND Estatus ='True'").Rows.Count > 0 Then - trCuentaDeposito.Visible = True - DdlCuentaDeposito.Items.Insert(0, New ListItem("Seleccione una cuenta", "-1")) - Else - Alert("El proveedor no tiene ninguna cuenta deposito registrada ante el sistema BBVA BANCOMER", TipoMensaje.MsgAdvertencia) - End If - - Else - DdlCuentaDeposito.DataSource = Dep.DtResultados.FiltraParametros("Estatus ='True'") - If Dep.DtResultados.Rows.Count > 0 Then - trCuentaDeposito.Visible = True - DdlCuentaDeposito.Items.Insert(0, New ListItem("Seleccione una cuenta", "-1")) - End If - End If - - - ''ANTIGUO - 'GVCuentasPago.DataSource = Dep.DtResultados - 'If Dep.DtResultados.Rows.Count > 1 Then - ' trCuentaDeposito.Visible = True - ' DdlCuentaDeposito.Items.Insert(0, New ListItem("Seleccione una cuenta", "-1")) - - ' 'Si tiene seleccionado Tipo Mov: Layout y no tiene cuenta deposito - 'ElseIf DdlTipoTransaccion.SelectedValue = "9" AndAlso Not Dep.DtResultados.Rows.Count > 0 Then - ' trCuentaDeposito.Visible = True - ' DdlCuentaDeposito.Items.Insert(0, New ListItem("Seleccione una cuenta", "-1")) - - ' BtnIEGuardar.Enabled = False - ' UpGuardar.Update() - ' Alert("El proveedor no tiene ninguna cuenta deposito registrada ante el sistema BBVA BANCOMER", TipoMensaje.MsgAdvertencia) - 'End If - - End If - Dep.Dispose() - - 'If DdlTipoTransaccion.SelectedValue = "9" AndAlso DdlCuentaDeposito.Items.Count = 0 Then - ' BtnIEGuardar.Enabled = False - 'End If - - 'GVCuentasPago.DataBind() - DdlCuentaDeposito.DataBind() - - 'Else - ' trCuentaDeposito.Visible = False - ' DdlCuentaDeposito.Items.Clear() - 'End If - RecargaGlobalCuentasBancarias() - UpCuentaDeposito.Update() - UpDatos.Update() - End Sub + End If + + If Not ErrorCompra Then + Alert("La poliza ha sido desvinculada y eliminada con exito.", TipoMensaje.MsgInformacion) + ObjAC.Commit() + ObjConta.Commit() + Else + Alert("Ocurrió un error al desvincular y/o eliminar la poliza. Por favor intente de nuevo ", TipoMensaje.MsgError) + ObjAC.RollBack() + ObjConta.RollBack() + End If + + ObjAC.Dispose() + ObjConta.Dispose() + + If Not ErrorCompra Then + CargaDatos() + End If + End Sub +#End Region + +#Region " CARGAR - COMPROBANTE " + Protected Sub BtnConfirmaComprobante_Click(sender As Object, e As EventArgs) + Dim DirectorioGuardar = String.Format("{0}Empresas\{1}\IE", Request.PhysicalApplicationPath, UsuarioActual.CveEmpresa) + Dim ArchivoTemporal = String.Format("{0}Empresas\{1}\Temp\{2}", Request.PhysicalApplicationPath, UsuarioActual.CveEmpresa, Session("FileUpload").ToString) + + If Session("FileUpload").ToString <> String.Empty AndAlso File.Exists(ArchivoTemporal) Then + Dim Extension As String = Path.GetExtension(ArchivoTemporal) + + Dim ObjIE As New ClsBancos + ObjIE.IniciaTransacSQL() + Dim TieneError = False + + If ObjIE.UpdateComprobanteIE(Extension.Replace("."c, ""), CveIE) Then + If Not Directory.Exists(DirectorioGuardar) Then Directory.CreateDirectory(DirectorioGuardar) + + 'Si ya existe el archivo lo eliminamos, para evitar error + If File.Exists(String.Format("{0}\{1}{2}", DirectorioGuardar, CveIE, Extension)) Then + File.Delete(String.Format("{0}\{1}{2}", DirectorioGuardar, CveIE, Extension)) + End If + + File.Move(ArchivoTemporal, String.Format("{0}\{1}{2}", DirectorioGuardar, CveIE, Extension)) + + If Not File.Exists(String.Format("{0}\{1}{2}", DirectorioGuardar, CveIE, Extension)) Then + TieneError = True + End If + Else + TieneError = True + End If + + If Not TieneError Then + ObjIE.Commit() + Alert("El Comprobante se guardo exitosamente.", TipoMensaje.MsgInformacion) + + If HplComprobante.Visible = False Then + HplComprobante.Visible = True + HplComprobante.NavigateUrl = String.Format("/Empresas/{0}/IE/{1}{2}", UsuarioActual.CveEmpresa, CveIE, Extension) + UpDatos.Update() + End If + Else + ObjIE.RollBack() + Alert("Ocurrió un error al guardar el comprobante. Por favor vuelta a intentar.", TipoMensaje.MsgError) + End If + + Session("FileUpload") = "" + ObjIE.Dispose() + End If + End Sub + + Protected Sub BtnGuardarArchivo_Click(sender As Object, e As EventArgs) Handles BtnGuardarArchivo.Click + Dim ObjIE As New ClsBancos + Dim Comprobante As String = "" + + Dim Filesgral As List(Of Archivo) = TxtCargarArchivo.getfiles().Archivos + If Filesgral.Count > 0 Then + Dim fileItem As Archivo = Filesgral(0) + Dim Path As String = HttpContext.Current.Request.ApplicationPath + Comprobante = IO.Path.GetExtension(String.Format("{0}Temp\{1}", AppDomain.CurrentDomain.BaseDirectory, fileItem.filename)).Replace(".", "") + Path = HttpContext.Current.Request.MapPath(Path) + Path += String.Format("Empresas/{0}/IE", UsuarioActual.CveEmpresa) + If Not Directory.Exists(Path) Then + Directory.CreateDirectory(Path) + End If + Path += $"/{CveIE}.{Comprobante}" + If File.Exists(Path) Then + File.Delete(Path) + End If + My.Computer.FileSystem.MoveFile(fileItem.FileUrl, Path) + End If + TxtCargarArchivo.Text = "" + RegistraScript("$('#ModalUpload').modal('hide')", "hidemodal1") + + If ObjIE.UpdateComprobanteIE(Comprobante.Replace("."c, ""), CveIE) Then + Alert("El Comprobante se guardo exitosamente.", TipoMensaje.MsgInformacion) + End If + + ObjIE.Dispose() + + End Sub + +#End Region + +#Region " DEVOLUCIONES " + Private Sub CargaIEDevoluciones() + Dim ObjMov As New ClsMovimientos + + If HdnCveProveedor.Value.ToEntero > 0 Or HdnCvePersonal.Value.ToEntero > 0 Then + trIEDevolucion.Visible = True + + If ObjMov.GetEgresosSinComprobar("-1", "-1", HdnCveProveedor.Value.ToEntero, HdnCvePersonal.Value.ToEntero, -1, -1, -1, DdlMoneda.SelectedValue.ToEntero, -1, UsuarioActual.CveEmpresa) Then + DtIEDevolucion = ObjMov.DtResultados.FiltraParametros("CveIE > 0 AND Saldo > 0 ", "", {"CveIE", "IEDevolucion", "Saldo"}) + + Else + Alert("Ocurrió un error al cargar los Egresos del Proveedor seleccionado. Por favor vuelva a intetar.", TipoMensaje.MsgError) + End If + + End If + ObjMov.Dispose() + + 'CARGAMOS LOS IE EN EL DLL + DdlIEDevolucion.Items.Clear() + DdlIEDevolucion.DataSource = DtIEDevolucion + DdlIEDevolucion.DataBind() + DdlIEDevolucion.Items.Insert(0, New ListItem("Seleccione", "-1")) + UpIEDevolucion.Update() + + End Sub + + Private Sub CargaIEDevolucionesClientes() + Dim ObjMov As New ClsMovimientos + + If HdnCveCliente.Value.ToEntero > 0 Then + trIEDevolucion.Visible = True + + If ObjMov.GetMovimientosIE(1, HdnCveCliente.Value.ToEntero, DdlCuenta.SelectedValue.ToEntero, Now.AddMonths(-24), Now, DdlMoneda.SelectedValue.ToEntero, -1, UsuarioActual.CveEmpresa) Then + DtIEDevolucion = ObjMov.DtResultados.FiltraParametros("Saldo > 0 ") + Else + Alert("Ocurrió un error al cargar los Egresos del Proveedor seleccionado. Por favor vuelva a intetar.", TipoMensaje.MsgError) + End If + + End If + ObjMov.Dispose() + + 'CARGAMOS LOS IE EN EL DLL + DdlIEDevolucion.Items.Clear() + DdlIEDevolucion.DataSource = DtIEDevolucion + DdlIEDevolucion.DataBind() + DdlIEDevolucion.Items.Insert(0, New ListItem("Seleccione", "-1")) + UpIEDevolucion.Update() + + End Sub + + Private Sub DdlIEDevolucion_SelectedIndexChanged(sender As Object, e As EventArgs) Handles DdlIEDevolucion.SelectedIndexChanged + If DtIEDevolucion.Rows.Count > 0 Then + TxtImporte.Text = DtIEDevolucion.FiltroPrimeroValor("Saldo", String.Format("CveIE = {0}", DdlIEDevolucion.SelectedValue.ToEntero)).FormatoNumero() + End If + UpDatos.Update() + End Sub + + Private Sub CargaGridTarjetas() + Dim ObjCreditos As New ClsBancos + ObjCreditos.GetTarjetasCreditos(DdlCuenta.SelectedValue.ToEntero) + + DdlTarjeta.Items.Clear() + DdlTarjeta.DataSource = ObjCreditos.DtResultados + DdlTarjeta.DataBind() + DdlTarjeta.Items.Insert(0, New ListItem("Seleccione", "-1")) + + ObjCreditos.Dispose() + DivTarjeta.Visible = True + End Sub + +#End Region + +#Region "PAGO ACREEDORES" + Private Sub CargaIEIngresos() + Dim ObjMov As New ClsMovimientos + + + If HdnCveProveedor.Value.ToEntero > 0 Then + DivIEAcreedor.Visible = True + DdlIEDevolucion.Items.Clear() + + If ObjMov.GetIngresosAcreedorXSaldar(HdnCveProveedor.Value.ToEntero, DdlMoneda.SelectedValue.ToEntero, UsuarioActual.CveEmpresa) Then + DdlIEAcreedor.DataSource = ObjMov.DtResultados.FiltraParametros("CveIE > 0 AND Saldo > 0 ", "", {"CveIE", "IEAcreedor", "Saldo"}) + DdlIEAcreedor.DataBind() + DdlIEAcreedor.Items.Insert(0, New ListItem("Seleccione", "-1")) + End If + End If + ObjMov.Dispose() + UpIEAcreedor.Update() + End Sub +#End Region + +#Region "I M P R I M E P D F - N U E V O -" + Private Sub ImprimirIEPDF(CveTipoTransaccion As Integer) + Dim Archivo As System.IO.FileInfo = Nothing + + 'VERIFICA SI EXISTE EL FORMATO + If CveTipoTransaccion.Contiene(2, 8, 9, 10) Then + Archivo = New System.IO.FileInfo(String.Format("{0}Formatos/Transferencia.rdlc", UsuarioActual.Empresa.Ruta)) + ElseIf CveTipoTransaccion.Contiene(1) Then + Archivo = New System.IO.FileInfo(String.Format("{0}Formatos/CHQ-{1}.rdlc", UsuarioActual.Empresa.Ruta, CveCuenta)) + End If + + ''PRUEBAS AD-TEAM + 'LnkImprimir.Visible = False + 'If UsuarioActual.CveUsuario = 100 Then + ' LnkImprimir.Visible = True + 'End If + + If Archivo IsNot Nothing AndAlso Archivo.Exists Then + HLImprimir.NavigateUrl = String.Format("/Compras/PopUpVerFactura.aspx?P={0}", Encripta(String.Format("OP=IE&CVEIE={0}", CveIE))) + HLImprimir.Visible = True + Else + HLImprimir.Visible = False + End If + + End Sub +#End Region + +#Region " CUENTAS DEPOSITOS " + 'Si la cuenta no esta activa, no la muestra. + Private Sub CargaCuentasDepositos() + DdlCuentaDeposito.Items.Clear() + 'If DdlTipoTransaccion.SelectedValue.Contiene("2", "9") Then ' transferencias y layout + trCuentaDeposito.Visible = False + + + Dim Dep As New ClsGenerales + If Dep.GetCuentasDepositos(CveProveedor:=CveProveedor, CveCliente:=CveCliente, CvePersonal:=CvePersonal) Then + + If DdlTipoTransaccion.SelectedValue = "9" Then + + DdlCuentaDeposito.DataSource = Dep.DtResultados.FiltraParametros("EstatusPagoElectronico = 'True' AND Estatus ='True'") + + If Dep.DtResultados.FiltraParametros("EstatusPagoElectronico = 'True' AND Estatus ='True'").Rows.Count > 0 Then + trCuentaDeposito.Visible = True + DdlCuentaDeposito.Items.Insert(0, New ListItem("Seleccione una cuenta", "-1")) + Else + Alert("El proveedor no tiene ninguna cuenta deposito registrada ante el sistema BBVA BANCOMER", TipoMensaje.MsgAdvertencia) + End If + + Else + DdlCuentaDeposito.DataSource = Dep.DtResultados.FiltraParametros("Estatus ='True'") + If Dep.DtResultados.Rows.Count > 0 Then + trCuentaDeposito.Visible = True + DdlCuentaDeposito.Items.Insert(0, New ListItem("Seleccione una cuenta", "-1")) + End If + End If + + + ''ANTIGUO + 'GVCuentasPago.DataSource = Dep.DtResultados + 'If Dep.DtResultados.Rows.Count > 1 Then + ' trCuentaDeposito.Visible = True + ' DdlCuentaDeposito.Items.Insert(0, New ListItem("Seleccione una cuenta", "-1")) + + ' 'Si tiene seleccionado Tipo Mov: Layout y no tiene cuenta deposito + 'ElseIf DdlTipoTransaccion.SelectedValue = "9" AndAlso Not Dep.DtResultados.Rows.Count > 0 Then + ' trCuentaDeposito.Visible = True + ' DdlCuentaDeposito.Items.Insert(0, New ListItem("Seleccione una cuenta", "-1")) + + ' BtnIEGuardar.Enabled = False + ' UpGuardar.Update() + ' Alert("El proveedor no tiene ninguna cuenta deposito registrada ante el sistema BBVA BANCOMER", TipoMensaje.MsgAdvertencia) + 'End If + + End If + Dep.Dispose() + + 'If DdlTipoTransaccion.SelectedValue = "9" AndAlso DdlCuentaDeposito.Items.Count = 0 Then + ' BtnIEGuardar.Enabled = False + 'End If + + 'GVCuentasPago.DataBind() + DdlCuentaDeposito.DataBind() + + 'Else + ' trCuentaDeposito.Visible = False + ' DdlCuentaDeposito.Items.Clear() + 'End If + RecargaGlobalCuentasBancarias() + UpCuentaDeposito.Update() + UpDatos.Update() + End Sub Private Sub RecargaCuentasDepositos() - If CveProveedor > 0 Then - - Dim dr As DataRow = GlobalDTTipoTransacciones.FiltroPrimero(String.Format("CveTipoTransaccion = {0}", DdlTipoTransaccion.SelectedValue)) 'Egs o Ing - If dr IsNot Nothing Then - HdnTipoTransaccion.Value = dr("Tipo").ToString - End If - 'cuando es transferencia bancaria, debe de solicitar a que cuenta se va a depositar - CargaCuentasDepositos() - - End If - - + If CveProveedor > 0 Then + + Dim dr As DataRow = GlobalDTTipoTransacciones.FiltroPrimero(String.Format("CveTipoTransaccion = {0}", DdlTipoTransaccion.SelectedValue)) 'Egs o Ing + If dr IsNot Nothing Then + HdnTipoTransaccion.Value = dr("Tipo").ToString + End If + 'cuando es transferencia bancaria, debe de solicitar a que cuenta se va a depositar + CargaCuentasDepositos() + + End If + + If CveCliente > 0 Then CargaCuentasDepositoClientes() - End If - - End Sub - - 'Recaga CuentasBancarias de Proveedor - Private Sub RecargaGlobalCuentasBancarias(Optional ByVal CveCuenta As Integer = -1) - If CveProveedor > 0 Then - Dim ObjCuentasBancos As New ClsGenerales - - If ObjCuentasBancos.GetCuentasDepositos() Then - GlobalDTProveedoresCuentas(-1, True) = ObjCuentasBancos.DtResultados - End If - ObjCuentasBancos.Dispose() - End If - End Sub - Protected Sub DdlCuentaDeposito_SelectedIndexChanged(sender As Object, e As EventArgs) - Dim Dep As New ClsGenerales - If Dep.GetCuentasDepositos(CveProveedor:=CveProveedor, CveCuentaDeposito:=DdlCuentaDeposito.SelectedValue.ToEntero) AndAlso Dep.DtResultados.Rows.Count = 1 Then - If Dep.DtResultados.Rows(0)("TieneCIE").ToString.ToEntero = 1 Then - TrReferenciaCIE.Visible = True - TxtReferenciaCIE.Text = Dep.DtResultados.Rows(0)("Referencia").ToString - Else - TrReferenciaCIE.Visible = False - End If - End If - Dep.Dispose() - UpCuentaDeposito.Update() - End Sub -#End Region - -#Region "Historial de Modificacion" - - Private Sub CargaGvBitacora() - Dim ObjGral As New ClsGenerales() - If ObjGral.GetHistorialBitacora(-1, -1, -1, -1, -1, -1, CveIE, UsuarioActual.CveEmpresa) Then - GvBitacora.DataSource = ObjGral.DtResultados - GvBitacora.DataBind() - End If - ObjGral.Dispose() - UpDatos.Update() - End Sub - - Private Sub BtnRemove_Click(sender As Object, e As EventArgs) Handles BtnRemove.Click - If Not TxtDescripcion.Text = "" Then - If ChkConciliado.Checked Then - Alert("El documento seleccionado no se puede eliminar porque se encuentra conciliado.", TipoMensaje.MsgError) - Exit Sub - End If - Dim ObjGral As New ClsGenerales - If ObjGral.AddHistorialBitacora(Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, "", "", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, 1, TxtDescripcion.Text, "Banco", TxtFolio.Text + " / " + Cuenta) Then - Borrar = True - End If - ObjGral.Dispose() - If Borrar = True Then - Dim ObjAC As ClsContPAQi = Nothing + End If + + End Sub + + 'Recaga CuentasBancarias de Proveedor + Private Sub RecargaGlobalCuentasBancarias(Optional ByVal CveCuenta As Integer = -1) + If CveProveedor > 0 Then + Dim ObjCuentasBancos As New ClsGenerales + + If ObjCuentasBancos.GetCuentasDepositos() Then + GlobalDTProveedoresCuentas(-1, True) = ObjCuentasBancos.DtResultados + End If + ObjCuentasBancos.Dispose() + End If + End Sub + Protected Sub DdlCuentaDeposito_SelectedIndexChanged(sender As Object, e As EventArgs) + Dim Dep As New ClsGenerales + If Dep.GetCuentasDepositos(CveProveedor:=CveProveedor, CveCuentaDeposito:=DdlCuentaDeposito.SelectedValue.ToEntero) AndAlso Dep.DtResultados.Rows.Count = 1 Then + If Dep.DtResultados.Rows(0)("TieneCIE").ToString.ToEntero = 1 Then + TrReferenciaCIE.Visible = True + TxtReferenciaCIE.Text = Dep.DtResultados.Rows(0)("Referencia").ToString + Else + TrReferenciaCIE.Visible = False + End If + End If + Dep.Dispose() + UpCuentaDeposito.Update() + End Sub +#End Region + +#Region "Historial de Modificacion" + + Private Sub CargaGvBitacora() + Dim ObjGral As New ClsGenerales() + If ObjGral.GetHistorialBitacora(-1, -1, -1, -1, -1, -1, CveIE, UsuarioActual.CveEmpresa) Then + GvBitacora.DataSource = ObjGral.DtResultados + GvBitacora.DataBind() + End If + ObjGral.Dispose() + UpDatos.Update() + End Sub + + Private Sub BtnRemove_Click(sender As Object, e As EventArgs) Handles BtnRemove.Click + If Not TxtDescripcion.Text = "" Then + If ChkConciliado.Checked Then + Alert("El documento seleccionado no se puede eliminar porque se encuentra conciliado.", TipoMensaje.MsgError) + Exit Sub + End If + Dim ObjGral As New ClsGenerales + If ObjGral.AddHistorialBitacora(Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, "", "", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, 1, TxtDescripcion.Text, "Banco", TxtFolio.Text + " / " + Cuenta) Then + Borrar = True + End If + ObjGral.Dispose() + If Borrar = True Then + Dim ObjAC As ClsContPAQi = Nothing Dim Banc As New ClsBancos - Dim ObjConta As New ClsContabilidad(Banc.IniciaTransacSQL()) - - Dim ErrorCompra = False - - 'VERIFICA SI EL IES ESTA VINCULADO A UNA SOLICITUD VIATICO - If Banc.GetSolicitudesViaticos(-1, UsuarioActual.CveEmpresa, CveIE:=CveIE) AndAlso Banc.DtResultados.Rows.Count > 0 Then - If Not Banc.UpdateSolicitudesViaticosIE(Banc.DtResultados.FiltroPrimeroValor("CveSolicitudViatico").ToEntero(), -1) Then - ErrorCompra = True - End If - End If - - If (UsuarioActual.Empresa.UsaAC Or UsuarioActual.Empresa.UsaContabilidad) AndAlso IDPoliza > 0 Then - ObjAC = New ClsContPAQi(UsuarioActual.Empresa) - ObjAC.IniciaTransacSQL() - If Not ObjAC.RemovePoliza(IDPoliza) Then - ErrorCompra = True - End If - End If - + Dim ObjConta As New ClsContabilidad(Banc.IniciaTransacSQL()) + + Dim ErrorCompra = False + + 'VERIFICA SI EL IES ESTA VINCULADO A UNA SOLICITUD VIATICO + If Banc.GetSolicitudesViaticos(-1, UsuarioActual.CveEmpresa, CveIE:=CveIE) AndAlso Banc.DtResultados.Rows.Count > 0 Then + If Not Banc.UpdateSolicitudesViaticosIE(Banc.DtResultados.FiltroPrimeroValor("CveSolicitudViatico").ToEntero(), -1) Then + ErrorCompra = True + End If + End If + + If (UsuarioActual.Empresa.UsaAC Or UsuarioActual.Empresa.UsaContabilidad) AndAlso IDPoliza > 0 Then + ObjAC = New ClsContPAQi(UsuarioActual.Empresa) + ObjAC.IniciaTransacSQL() + If Not ObjAC.RemovePoliza(IDPoliza) Then + ErrorCompra = True + End If + End If + If Not ErrorCompra Then If Not ObjConta.UpdatePrePolizasDetalleBloquear(CvePrePoliza, False) Then ErrorCompra = True End If - End If - - - If Not ErrorCompra Then - If Not Banc.EliminarBancos_IE(UsuarioActual.CveUsuario, CveIE) Then - ErrorCompra = True - End If - End If - - If Not ErrorCompra Then - Alert("El documento bancario quedó eliminado.", TipoMensaje.MsgInformacion, "document.location.href=""/Bancos/RepIE.aspx""") - If ObjAC IsNot Nothing Then ObjAC.Commit() - Banc.Commit() - Else - Alert("El documento no ha sido eliminado.", TipoMensaje.MsgAdvertencia) - If ObjAC IsNot Nothing Then ObjAC.RollBack() - Banc.RollBack() - End If - - If ObjAC IsNot Nothing Then ObjAC.Dispose() - Banc.Dispose() - ObjConta.Dispose() - End If - Else - Alert("Tiene que decir el motivo de su eliminacion.", TipoMensaje.MsgInformacion) - End If - End Sub -#End Region - -#Region " SOLICITUD DE ANTICIPO OC " - Private Sub InicializaSolicitudAnticipoOC() - If Request("Opcion") IsNot Nothing AndAlso Request("Opcion").ToString = "EGSSINFACT" Then - If Request("CveOC") IsNot Nothing AndAlso Request("CveOC").ToString.ToEntero > 0 Then - CveOCSolicitudAnticipo = Request("CveOC").ToString.ToEntero - End If - End If - - If CveOCSolicitudAnticipo > 0 Then - - Dim ObjOC As New ClsOC - If ObjOC.GetSolicitudAnticipo(CveOCSolicitudAnticipo, UsuarioActual.CveEmpresa) AndAlso ObjOC.DtResultados.Rows.Count > 0 Then - Dim DrOC = ObjOC.DtResultados.FiltroPrimero("") - If DrOC("TipoTermino").ToString.ToEntero.Contiene(0, 3) AndAlso DrOC("CveIEAnticipo").ToString = "" Then - TxtObservaciones.Text = DrOC("Descripcion").ToString - TxtImporte.Text = DrOC("ImporteAnticipo").ToString.FormatoNumero - TxtImporteLetra.Text = DrOC("ImporteAnticipo").ToString.ToDouble.Texto2Letras(DrOC("CveMoneda").ToString.ToEntero) - DdlMoneda.SelectedValue = DrOC("CveMoneda").ToString - CveMoneda = DrOC("CveMoneda").ToString.ToEntero - CargaCuenta(DrOC("CveMoneda").ToString.ToEntero) - UpCuentaDeposito.Update() - If DrOC("CveProveedor").ToString.ToEntero > 0 Then - HdnCveProveedor.Value = DrOC("CveProveedor").ToString - RBL.SelectedValue = "P" - RBL_SelectedIndexChanged(RBL, Nothing) - DdlProveedores.SelectedValue = HdnCveProveedor.Value - DdlProveedores_selectedindexchange(DdlProveedores, Nothing) - DdlProveedores.SelectedText = RazonSocial - ' BuscaCargaProveedor() - End If - CveOCSolicitudAnticipo = DrOC("CveOC").ToString.ToEntero - Else - If DrOC("CveIEAnticipo").ToString <> "" Then - Alert($"La {DrOC("Tipo")} #{DrOC("Folio")} ya se le ha generado un anticipo.", TipoMensaje.MsgError) - End If - If DrOC("TipoTermino").ToString = "3" Then ' cuando es tipo rechazado - Alert($"La {DrOC("Tipo")} #{DrOC("Folio")} ha sido cancelada.", TipoMensaje.MsgError) - End If - - CveOCSolicitudAnticipo = -1 - BtnGuardar.Enabled = False - End If - Else - Alert("Ocurrió un error al actualizar el estatus de anticipo de la OC/REQ. Por favor actualice y vuelva a intentar.", TipoMensaje.MsgError) - End If - ObjOC.Dispose() - - End If - End Sub - Private Function GuardaSolicitudAnticipoOC(ByRef ObjOC As ClsOC) As String - Dim ObjOI As New ClsOIEventos - Dim CveEvento As Integer = 0 - Dim CveEventoPrincipal As Integer = 0 - - If CveOCSolicitudAnticipo > 0 Then - If Not ObjOC.AddSolicitudAnticipoPago(CveOCSolicitudAnticipo, CveIE, UsuarioActual.CveEmpresa) Then - ObjOI.Dispose() - Return "Ocurrió un error al actualizar el estatus de anticipo de la OC/REQ. Por favor actualice y vuelva a intentar." - End If - - If ObjOI.GetEventos(-1, 6, -1, "-1", "-1", -1, -1, -1, -1, -1, -1, "-1", -1, -1, -1, -1, -1, CveOCSolicitudAnticipo, -1, -1, -1, -1, -1, -1, -1, UsuarioActual.CveEmpresa) Then - CveEvento = ObjOI.CveEvento - End If - - If ObjOI.GetEventos(-1, 1, -1, "-1", "-1", -1, -1, -1, -1, -1, -1, "-1", -1, -1, -1, -1, -1, Request("CveOC").ToString.ToEntero, -1, -1, -1, -1, -1, -1, -1, UsuarioActual.CveEmpresa) Then - CveEventoPrincipal = ObjOI.CveEvento - End If - - If Not ObjOI.UpdateEstatusEvento(3, -1, CveEvento, UsuarioActual.CveUsuario) Then - ObjOI.Dispose() - Return "Ocurrió un error al actualizar el estatus de anticipo de la OC/REQ. Por favor actualice y vuelva a intentar." - End If - - If Request("CveOC").ToString.ToEntero > 0 Then - If Not ObjOI.UpdateEstatusEvento(3, -1, CveEventoPrincipal, UsuarioActual.CveUsuario) Then - ObjOI.Dispose() - Return "Ocurrió un error al actualizar el estatus de anticipo de la OC/REQ. Por favor actualice y vuelva a intentar." - End If - End If - End If - ObjOI.Dispose() - Return "" - End Function -#End Region + End If -#Region " COMPLEMENTOS PAGO " + + If Not ErrorCompra Then + If Not Banc.EliminarBancos_IE(UsuarioActual.CveUsuario, CveIE) Then + ErrorCompra = True + End If + End If + + If Not ErrorCompra Then + Alert("El documento bancario quedó eliminado.", TipoMensaje.MsgInformacion, "document.location.href=""/Bancos/RepIE.aspx""") + If ObjAC IsNot Nothing Then ObjAC.Commit() + Banc.Commit() + Else + Alert("El documento no ha sido eliminado.", TipoMensaje.MsgAdvertencia) + If ObjAC IsNot Nothing Then ObjAC.RollBack() + Banc.RollBack() + End If + + If ObjAC IsNot Nothing Then ObjAC.Dispose() + Banc.Dispose() + ObjConta.Dispose() + End If + Else + Alert("Tiene que decir el motivo de su eliminacion.", TipoMensaje.MsgInformacion) + End If + End Sub +#End Region + +#Region " SOLICITUD DE ANTICIPO OC " + Private Sub InicializaSolicitudAnticipoOC() + If Request("Opcion") IsNot Nothing AndAlso Request("Opcion").ToString = "EGSSINFACT" Then + If Request("CveOC") IsNot Nothing AndAlso Request("CveOC").ToString.ToEntero > 0 Then + CveOCSolicitudAnticipo = Request("CveOC").ToString.ToEntero + End If + End If + + If CveOCSolicitudAnticipo > 0 Then + + Dim ObjOC As New ClsOC + If ObjOC.GetSolicitudAnticipo(CveOCSolicitudAnticipo, UsuarioActual.CveEmpresa) AndAlso ObjOC.DtResultados.Rows.Count > 0 Then + Dim DrOC = ObjOC.DtResultados.FiltroPrimero("") + If DrOC("TipoTermino").ToString.ToEntero.Contiene(0, 3) AndAlso DrOC("CveIEAnticipo").ToString = "" Then + TxtObservaciones.Text = DrOC("Descripcion").ToString + TxtImporte.Text = DrOC("ImporteAnticipo").ToString.FormatoNumero + TxtImporteLetra.Text = DrOC("ImporteAnticipo").ToString.ToDouble.Texto2Letras(DrOC("CveMoneda").ToString.ToEntero) + DdlMoneda.SelectedValue = DrOC("CveMoneda").ToString + CveMoneda = DrOC("CveMoneda").ToString.ToEntero + CargaCuenta(DrOC("CveMoneda").ToString.ToEntero) + UpCuentaDeposito.Update() + If DrOC("CveProveedor").ToString.ToEntero > 0 Then + HdnCveProveedor.Value = DrOC("CveProveedor").ToString + RBL.SelectedValue = "P" + RBL_SelectedIndexChanged(RBL, Nothing) + DdlProveedores.SelectedValue = HdnCveProveedor.Value + DdlProveedores_selectedindexchange(DdlProveedores, Nothing) + DdlProveedores.SelectedText = RazonSocial + ' BuscaCargaProveedor() + End If + CveOCSolicitudAnticipo = DrOC("CveOC").ToString.ToEntero + Else + If DrOC("CveIEAnticipo").ToString <> "" Then + Alert($"La {DrOC("Tipo")} #{DrOC("Folio")} ya se le ha generado un anticipo.", TipoMensaje.MsgError) + End If + If DrOC("TipoTermino").ToString = "3" Then ' cuando es tipo rechazado + Alert($"La {DrOC("Tipo")} #{DrOC("Folio")} ha sido cancelada.", TipoMensaje.MsgError) + End If + + CveOCSolicitudAnticipo = -1 + BtnGuardar.Enabled = False + End If + Else + Alert("Ocurrió un error al actualizar el estatus de anticipo de la OC/REQ. Por favor actualice y vuelva a intentar.", TipoMensaje.MsgError) + End If + ObjOC.Dispose() + + End If + End Sub + Private Function GuardaSolicitudAnticipoOC(ByRef ObjOC As ClsOC) As String + Dim ObjOI As New ClsOIEventos + Dim CveEvento As Integer = 0 + Dim CveEventoPrincipal As Integer = 0 + + If CveOCSolicitudAnticipo > 0 Then + If Not ObjOC.AddSolicitudAnticipoPago(CveOCSolicitudAnticipo, CveIE, UsuarioActual.CveEmpresa) Then + ObjOI.Dispose() + Return "Ocurrió un error al actualizar el estatus de anticipo de la OC/REQ. Por favor actualice y vuelva a intentar." + End If + + If ObjOI.GetEventos(-1, 6, -1, "-1", "-1", -1, -1, -1, -1, -1, -1, "-1", -1, -1, -1, -1, -1, CveOCSolicitudAnticipo, -1, -1, -1, -1, -1, -1, -1, UsuarioActual.CveEmpresa) Then + CveEvento = ObjOI.CveEvento + End If + + If ObjOI.GetEventos(-1, 1, -1, "-1", "-1", -1, -1, -1, -1, -1, -1, "-1", -1, -1, -1, -1, -1, Request("CveOC").ToString.ToEntero, -1, -1, -1, -1, -1, -1, -1, UsuarioActual.CveEmpresa) Then + CveEventoPrincipal = ObjOI.CveEvento + End If + + If Not ObjOI.UpdateEstatusEvento(3, -1, CveEvento, UsuarioActual.CveUsuario) Then + ObjOI.Dispose() + Return "Ocurrió un error al actualizar el estatus de anticipo de la OC/REQ. Por favor actualice y vuelva a intentar." + End If + + If Request("CveOC").ToString.ToEntero > 0 Then + If Not ObjOI.UpdateEstatusEvento(3, -1, CveEventoPrincipal, UsuarioActual.CveUsuario) Then + ObjOI.Dispose() + Return "Ocurrió un error al actualizar el estatus de anticipo de la OC/REQ. Por favor actualice y vuelva a intentar." + End If + End If + End If + ObjOI.Dispose() + Return "" + End Function +#End Region + +#Region " COMPLEMENTOS PAGO " Private Sub CargaComplementosPago() - Dim ObjBancos As New ClsBancos - - If UsuarioActual.CveRol = 1 Then - GvComplementoPagos.Columns(7).Visible = True + Dim ObjBancos As New ClsBancos + + If UsuarioActual.CveRol = 1 Then + GvComplementoPagos.Columns(7).Visible = True End If - DVGenerarComplementoModal.Visible = False - - If ObjBancos.GetVincularPago(CveProveedor, CveCompra, 2, MinFecha, MaxFecha, UsuarioActual.CveEmpresa, CveIE) Then - + DVGenerarComplementoModal.Visible = False + + If ObjBancos.GetVincularPago(CveProveedor, CveCompra, 2, MinFecha, MaxFecha, UsuarioActual.CveEmpresa, CveIE) Then + GvComplementoPagos.DataSource = ObjBancos.DtResultados If ObjBancos.DtResultados.FiltraParametros(" Estatus IN (1,3) ").Rows.Count = 0 And Tipo.ToUpper = "CARGO" And CveCliente > 0 And UsuarioActual.CveRol = 1 And CveEstatusIE <> 2 Then DVGenerarComplementoModal.Visible = True - End If + End If Else - GvComplementoPagos.DataSource = Nothing - End If - - ObjBancos.Dispose() - GvComplementoPagos.DataBind() - UpComplementoPagos.Update() - - 'If ObjBancos.GetComplementoPagos(-1, CveIE, -1, UsuarioActual.CveEmpresa) Then - ' GvComplementoPagos.DataSource = ObjBancos.DtResultados.FiltraParametros("", DistinctColumns:={"CveComplementoPago", "SerieFolio", "Fecha", "CveIE"}) - 'End If - - 'ObjBancos.Dispose() - 'GvComplementoPagos.DataBind() - 'UpComplementoPagos.Update() - End Sub - - Protected Sub GvComplementoPagos_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles GvComplementoPagos.RowDataBound - - If e.Row.RowType = DataControlRowType.DataRow Then - e.Row.Cells(3).Text = String.Format("", Encripta(String.Format("OP=CompP&EXT=xml&SerieFolio={0}&CVECOMPLEMENTOPAGO={1}&CVEIE={2}", e.Row.DBCampo("SerieFolio"), e.Row.DBCampo("CveComplementoPago"), e.Row.DBCampo("CveIE")))) - e.Row.Cells(4).Text = String.Format("", Encripta(String.Format("OP=CompP&EXT=pdf&SerieFolio={0}&CVECOMPLEMENTOPAGO={1}&CVEIE={2}", e.Row.DBCampo("SerieFolio"), e.Row.DBCampo("CveComplementoPago"), e.Row.DBCampo("CveIE")))) - - If e.Row.DataKey("Estatus").Contiene("1", "3") Then + GvComplementoPagos.DataSource = Nothing + End If + + ObjBancos.Dispose() + GvComplementoPagos.DataBind() + UpComplementoPagos.Update() + + 'If ObjBancos.GetComplementoPagos(-1, CveIE, -1, UsuarioActual.CveEmpresa) Then + ' GvComplementoPagos.DataSource = ObjBancos.DtResultados.FiltraParametros("", DistinctColumns:={"CveComplementoPago", "SerieFolio", "Fecha", "CveIE"}) + 'End If + + 'ObjBancos.Dispose() + 'GvComplementoPagos.DataBind() + 'UpComplementoPagos.Update() + End Sub + + Protected Sub GvComplementoPagos_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles GvComplementoPagos.RowDataBound + + If e.Row.RowType = DataControlRowType.DataRow Then + e.Row.Cells(3).Text = String.Format("", Encripta(String.Format("OP=CompP&EXT=xml&SerieFolio={0}&CVECOMPLEMENTOPAGO={1}&CVEIE={2}", e.Row.DBCampo("SerieFolio"), e.Row.DBCampo("CveComplementoPago"), e.Row.DBCampo("CveIE")))) + e.Row.Cells(4).Text = String.Format("", Encripta(String.Format("OP=CompP&EXT=pdf&SerieFolio={0}&CVECOMPLEMENTOPAGO={1}&CVEIE={2}", e.Row.DBCampo("SerieFolio"), e.Row.DBCampo("CveComplementoPago"), e.Row.DBCampo("CveIE")))) + + If e.Row.DataKey("Estatus").Contiene("1", "3") Then e.Row.FCLinkButton("LnkCancelarComplemetno").Visible = True - Else + Else e.Row.FCLinkButton("LnkCancelarComplemetno").Visible = False - End If - - End If - - End Sub - - Private Sub LnkComplementoPago_Click(sender As Object, e As EventArgs) Handles LnkComplementoPago.Click - CargaComplementosPago() - RegistraScript("$('#ModalComplementoPagos').modal('show');") - End Sub - - - Protected Sub imgRegenerar_Click(sender As Object, e As EventArgs) - Dim gvr As GridViewRow = DirectCast(DirectCast(sender, LinkButton).BindingContainer, GridViewRow) - Dim FolioFiscalPadre As String = gvr.DataKey("FolioFiscal") - - If FolioFiscalPadre <> "" Then - Dim Str As New StringBuilder - Dim ObjBanco As New ClsBancos - ObjBanco.IniciaTransacSQL() - - If ObjBanco.GeneraTimbrePago(CveIE, -1, UsuarioActual, -1, FolioFiscalPadre, EsRegeneracion:=True) Then - ObjBanco.Commit() - Str.AppendFormat("Folio: {0}  ", ObjBanco.ComplementoSerieFolio) - Str.AppendFormat("XML    ", Encripta(String.Format("OP=Pag&EXT=xml&CveIE={0}&SerieFolio={1}", gvr.DataKey("CveIE").ToEntero, ObjBanco.ComplementoSerieFolio.Replace("&", "%26%")))) - Str.AppendFormat("PDF   ", Encripta(String.Format("OP=Pag&EXT=pdf&CveIE={0}&SerieFolio={1}", gvr.DataKey("CveIE").ToEntero, ObjBanco.ComplementoSerieFolio.Replace("&", "%26%")))) - 'Str.Append($"{gvr.DataKey("Folio")}   {gvr.DataKey("NombreCliente")}
") - PDFReciboDePagos(-1, gvr.DataKey("CveIE").ToEntero, ObjBanco.CveComplementoPago, False) - Alert(Str.ToString, TipoMensaje.MsgInformacion) - CargaComplementosPago() - Else - Str.AppendFormat("No se genero complemento del Folio {0} por el siguiente motivo: {1}", gvr.DataKey("Folio"), ObjBanco.Mensaje) - Alert(Str.ToString, TipoMensaje.MsgError) - ObjBanco.RollBack() - End If - - ObjBanco.Dispose() - Else - Alert("El complemento no tiene Folio Fiscal", TipoMensaje.MsgError) - End If - - End Sub - - - - - - Private Function VerificaComplementos(Validos As Boolean) As Boolean - Dim ObjBancos As New ClsBancos - Dim Retorno As Boolean = False - Dim Filtro As String = "" - - + End If + + End If + + End Sub + + Private Sub LnkComplementoPago_Click(sender As Object, e As EventArgs) Handles LnkComplementoPago.Click + CargaComplementosPago() + RegistraScript("$('#ModalComplementoPagos').modal('show');") + End Sub + + + Protected Sub imgRegenerar_Click(sender As Object, e As EventArgs) + Dim gvr As GridViewRow = DirectCast(DirectCast(sender, LinkButton).BindingContainer, GridViewRow) + Dim FolioFiscalPadre As String = gvr.DataKey("FolioFiscal") + + If FolioFiscalPadre <> "" Then + Dim Str As New StringBuilder + Dim ObjBanco As New ClsBancos + ObjBanco.IniciaTransacSQL() + + If ObjBanco.GeneraTimbrePago(CveIE, -1, UsuarioActual, -1, FolioFiscalPadre, EsRegeneracion:=True) Then + ObjBanco.Commit() + Str.AppendFormat("Folio: {0}  ", ObjBanco.ComplementoSerieFolio) + Str.AppendFormat("XML    ", Encripta(String.Format("OP=Pag&EXT=xml&CveIE={0}&SerieFolio={1}", gvr.DataKey("CveIE").ToEntero, ObjBanco.ComplementoSerieFolio.Replace("&", "%26%")))) + Str.AppendFormat("PDF   ", Encripta(String.Format("OP=Pag&EXT=pdf&CveIE={0}&SerieFolio={1}", gvr.DataKey("CveIE").ToEntero, ObjBanco.ComplementoSerieFolio.Replace("&", "%26%")))) + 'Str.Append($"{gvr.DataKey("Folio")}   {gvr.DataKey("NombreCliente")}
") + PDFReciboDePagos(-1, gvr.DataKey("CveIE").ToEntero, ObjBanco.CveComplementoPago, False) + Alert(Str.ToString, TipoMensaje.MsgInformacion) + CargaComplementosPago() + Else + Str.AppendFormat("No se genero complemento del Folio {0} por el siguiente motivo: {1}", gvr.DataKey("Folio"), ObjBanco.Mensaje) + Alert(Str.ToString, TipoMensaje.MsgError) + ObjBanco.RollBack() + End If + + ObjBanco.Dispose() + Else + Alert("El complemento no tiene Folio Fiscal", TipoMensaje.MsgError) + End If + + End Sub + + + + + + Private Function VerificaComplementos(Validos As Boolean) As Boolean + Dim ObjBancos As New ClsBancos + Dim Retorno As Boolean = False + Dim Filtro As String = "" + + If Validos Then Filtro = " Estatus IN(1,3) " Else Filtro = "" - End If - - If ObjBancos.GetComplementoPagos(-1, CveIE, -1, UsuarioActual.CveEmpresa) And ObjBancos.DtResultados.FiltraParametros(Filtro).Rows.Count > 0 Then - Retorno = True - Else - Retorno = False - End If - - - ObjBancos.Dispose() - Return Retorno - End Function - - Protected Sub LnkCancelarComplemento_Click(sender As Object, e As EventArgs) - If ChkConciliado.Checked Then - Alert("El documento seleccionado no se puede eliminar porque se encuentra conciliado.", TipoMensaje.MsgError) - Exit Sub - End If - Confirmacion("¿Seguro que desea Cancelar el documento por Sustitución?", "", String.Format("document.location.href=""/Ventas/ClientesAbonar.aspx?CveIESustitucion={0}&CveCliente={1}&CveMoneda={2}""", CveIE, CveCliente, CveMoneda), "") + End If + + If ObjBancos.GetComplementoPagos(-1, CveIE, -1, UsuarioActual.CveEmpresa) And ObjBancos.DtResultados.FiltraParametros(Filtro).Rows.Count > 0 Then + Retorno = True + Else + Retorno = False + End If + + + ObjBancos.Dispose() + Return Retorno + End Function + + Protected Sub LnkCancelarComplemento_Click(sender As Object, e As EventArgs) + If ChkConciliado.Checked Then + Alert("El documento seleccionado no se puede eliminar porque se encuentra conciliado.", TipoMensaje.MsgError) + Exit Sub + End If + Confirmacion("¿Seguro que desea Cancelar el documento por Sustitución?", "", String.Format("document.location.href=""/Ventas/ClientesAbonar.aspx?CveIESustitucion={0}&CveCliente={1}&CveMoneda={2}""", CveIE, CveCliente, CveMoneda), "") End Sub -#End Region +#End Region + +#Region " ACTUALIZAR TIPO CAMBIO PREPOLIZA " + Private Sub InicializaActualizarTC() + If CveIE > 0 And DdlMoneda.SelectedValue.ToEntero = 2 And CvePrePoliza > 0 Then + TxtActualizarTC_TCActual.Text = TxtTipoCambio.Text + TxtActualizarTC_TCActualizar.Text = GlobalTipoCambio(TxtFechaDocumento.Text.ToDate).FormatoNumero(4) + HLModalActualizarTC.Visible = True + End If + End Sub + Protected Sub BtnActualizarTC_Click(sender As Object, e As EventArgs) + Dim ObjContabilidad As New ClsContabilidad + Dim ObjBancos As New ClsBancos(ObjContabilidad.IniciaTransacSQL()) + Dim ObjEventos As New ClsOIEventos(ObjContabilidad.IniciaTransacSQL()) + Dim TieneError = False + Dim MensajeError = "" + + If ObjEventos.AddEventoBitacora($"Se actualizó el Tipo de Cambio de la compra. TC anterior: {TxtActualizarTC_TCActual.Text.FormatoNumero(4)} | TC actual: {TxtActualizarTC_TCActualizar.Text.FormatoNumero(4)}", "", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveIE:=CveIE) Then + If ObjBancos.UpdateBancos_IETipoCambio(TxtActualizarTC_TCActualizar.Text.ToDouble, CveIE, CvePrePoliza, UsuarioActual.CveEmpresa) Then + If Not ObjContabilidad.ReconstruirPP_PagoCompraVenta(CveIE) Then + TieneError = True + MensajeError = "Ocurrió un error al actualizar el asiento contable" + End If + Else + TieneError = True + MensajeError = "Ocurrió un error al actualizar el Tipo de Cambio al documento" + End If + Else + TieneError = True + MensajeError = "Ocurrió un error al guardar el historal al actualizar el Tipo de Cambio al documento" + End If + + If Not TieneError Then + ObjContabilidad.Commit() + Alert("Se actualizó correctamente el tipo de cambio del documento.", TipoMensaje.MsgInformacion) + RegistraScript("$('#ModalActualizarTC').modal('hide');") + Else + ObjContabilidad.RollBack() + Alert(MensajeError, TipoMensaje.MsgError) + End If + + ObjContabilidad.Dispose() + End Sub +#End Region + +#Region "SOLICITAR VIATICOS VIATICOS" + + Protected Sub CargaDatosViaticos() + ViewState("CveSolicitudViatico") = Request("CveSolicitudViatico") + RBL.SelectedValue = "FE" + If Request("CvePersonal") IsNot Nothing AndAlso IsNumeric(Request("CvePersonal")) AndAlso Request("CvePersonal").ToEntero > 0 Then + ViewState("CvePersonal") = Request("CvePersonal") + PersonalIndexChange(CvePersonal) + + Dim ObjBancos As New ClsBancos + + If ObjBancos.GetSolicitudesViaticos(CveSolicitudViatico, UsuarioActual.CveEmpresa) AndAlso ObjBancos.DtResultados.Rows.Count > 0 Then + TxtImporte.Text = ObjBancos.DtResultados.FiltroPrimeroValor("Importe").ToString.FormatoNumero + TxtImporteLetra.Text = ObjBancos.DtResultados.FiltroPrimeroValor("Importe").ToString.ToDouble.Texto2Letras() + TxtObservaciones.Text = $"SOLICITUD DE VIÁTICOS - FOLIO {ObjBancos.DtResultados.FiltroPrimeroValor("Folio").ToString()}: {ObjBancos.DtResultados.FiltroPrimeroValor("Asunto").ToString()}." + End If + ObjBancos.Dispose() + End If + End Sub +#End Region + +#Region " DEVOLVER DINERO ANT/NC " + Private Sub InicializaDevolverDinero() + + If Opcion = "DevDinV" AndAlso Request("P") IsNot Nothing AndAlso Request("P").Length > 0 Then + + Dim ParametrosTexto As String = Decripta(Request("P")) + + If ParametrosTexto <> "" Then + CargaParametros(ParametrosTexto) + + HdnCveCliente.Value = UrlParametros("CVECLIENTE").ToString + CveCliente = UrlParametros("CVECLIENTE").ToString.ToEntero + CveVentaDevDin = UrlParametros("CVEVENTA").ToString.ToEntero + + SerieFolioDevDin = UrlParametros("SERIEFOLIO").ToString + CvePrePolizaDevDin = UrlParametros("CVEPREPOLIZA").ToString.ToEntero + ImporteOriginalDevDin = UrlParametros("ORIGINAL").ToString.ToDecimal.RoundSQL(6) + TxtImporte.Text = UrlParametros("SALDO").ToString.FormatoNumero() + TxtImporte.Attributes.Add("onkeyup", $"FormatoMoneda(this);ValidarCantidad(this,{UrlParametros("SALDO").ToString});") + TxtImporteLetra.Text = UrlParametros("SALDO").ToString.ToDouble.Texto2Letras(UrlParametros("CVEMONEDA").ToString.ToEntero) + CargaCliente(CveCliente) + 'BuscarCliente() + + DdlMoneda.SelectedValue = UrlParametros("CVEMONEDA").ToString + CveMoneda = DdlMoneda.SelectedValue.ToEntero + CargaCuenta(DdlMoneda.SelectedValue.ToEntero) + CambiaTipoMoneda() + UpCuentaDeposito.Update() + + End If + End If + + If Opcion = "DevDinC" AndAlso Request("P") IsNot Nothing AndAlso Request("P").Length > 0 Then + + Dim ParametrosTexto As String = Decripta(Request("P")) + + + If ParametrosTexto <> "" Then + CargaParametros(ParametrosTexto) + + HdnCveProveedor.Value = UrlParametros("CVEPROVEEDOR").ToString + CveProveedor = UrlParametros("CVEPROVEEDOR").ToString.ToEntero + + CveCompraDeCDin = UrlParametros("CVECOMPRA").ToString.ToEntero + SerieFolioDeCDin = UrlParametros("SERIEFOLIO").ToString + CvePrePolizaDeCDin = UrlParametros("CVEPREPOLIZA").ToString.ToEntero + FechaCompra = UrlParametros("FECHACOMPRA").ToString.ToDate + + ImporteOriginalDevDin = UrlParametros("ORIGINAL").ToString.ToDecimal.RoundSQL(6) + TxtImporte.Text = UrlParametros("SALDO").ToString.FormatoNumero() + TxtImporte.Attributes.Add("onkeyup", $"FormatoMoneda(this);ValidarCantidad(this,{UrlParametros("SALDO").ToString});") + TxtImporteLetra.Text = UrlParametros("SALDO").ToString.ToDouble.Texto2Letras(UrlParametros("CVEMONEDA").ToString.ToEntero) + + CargaProveedor(CveProveedor, "-1") + 'BuscarCliente() + + DdlMoneda.SelectedValue = UrlParametros("CVEMONEDA").ToString + CveMoneda = DdlMoneda.SelectedValue.ToEntero + CargaCuenta(DdlMoneda.SelectedValue.ToEntero) + CambiaTipoMoneda() + UpCuentaDeposito.Update() + + + End If + + End If + + + End Sub +#End Region + + +#Region "S A L D O - I N I C I A L" + Private Function AgregarSaldoInicial(SaldoInicial As Double, Fecha As DateTime, CveMoneda As Integer, ObjMov As ClsContabilidad) As Integer + Return ObjMov.AddPrePolizas("Bancos/IE", 13, SaldoInicial, SaldoInicial, CveMoneda, Fecha, "Saldo Inicial", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa) + End Function +#End Region + + Protected Sub LnkChqDevuelto_Click(sender As Object, e As EventArgs) + If ChkConciliado.Checked Then + Alert("El documento seleccionado no se puede eliminar porque se encuentra conciliado.", TipoMensaje.MsgError) + Exit Sub + End If + RegistraScript("ShowDivDevueltoIE();") + End Sub + + Protected Sub LnkCancelar_Click(sender As Object, e As EventArgs) + If ChkConciliado.Checked Then + Alert("El documento seleccionado no se puede eliminar porque se encuentra conciliado.", TipoMensaje.MsgError) + Exit Sub + End If + RegistraScript("ShowDivCancelarIE();") + End Sub + + Private Sub LnkEmitirComplemento_Click(sender As Object, e As EventArgs) Handles LnkEmitirComplemento.Click + GeneraTimbre() + CargaComplementosPago() + End Sub + + Private Sub GeneraTimbre() + + Dim Str As New StringBuilder + + Dim Banco As New ClsBancos + Banco.IniciaTransacSQL() + + + If Banco.GeneraTimbrePago(CveIE, -1, UsuarioActual) Then + If Banco.Mensaje = "" Then + Banco.Commit() + PDFReciboDePagos(-1, -1, Banco.CveComplementoPago, False) + Str.AppendFormat("Folio: {0}  ", Banco.ComplementoSerieFolio) + Str.AppendFormat("XML    ", Encripta(String.Format("OP=CompP&EXT=xml&SerieFolio={0}&CveComplementoPago={1}", Banco.ComplementoSerieFolio, Banco.CveComplementoPago))) + Str.AppendFormat("PDF   ", Encripta(String.Format("OP=CompP&EXT=pdf&SerieFolio={0}&CveComplementoPago={1}", Banco.ComplementoSerieFolio, Banco.CveComplementoPago))) + Str.AppendFormat("{1}   {2}
", CveIE, Folio, DdlCliente.SelectedText.ToString()) + MandaCorreo(Banco.ComplementoSerieFolio, CorreoCobranzaCliente) + End If + + Else + Str.AppendFormat("No se genero complemento del Folio {0} por el siguiente motivo: {1}", Folio, Banco.Mensaje) + Banco.RollBack() + End If + + + Banco.Dispose() + CargaDatos() + Alert(Str.ToString) + End Sub + + Private Sub MandaCorreo(NombreArchivo As String, Correo As String, Optional ConAlerta As Boolean = True) + Try + Dim Msg As String = "" + If NombreArchivo <> "-1" Then ' + + Dim ObjMail As New ClsSisMail() + Dim RutaXML As String = String.Format("{0}\XML\Pag\{1}.xml", UsuarioActual.Empresa.Ruta, NombreArchivo) + Dim RutaPDF As String = String.Format("{0}\PDF\Pag\{1}.pdf", UsuarioActual.Empresa.Ruta, NombreArchivo) + + Dim Cuerpo As String = "Se hace entrega del comprobante de pago" + Dim Asunto As String = "Entrega de comprobante de pago" + + If IO.File.Exists(RutaPDF) AndAlso IO.File.Exists(RutaXML) Then + + Dim LSRutasMail As New List(Of ClsSisMail.ArchivoMail) + + LSRutasMail.Add(New ClsSisMail.ArchivoMail With {.Ruta = RutaPDF}) + LSRutasMail.Add(New ClsSisMail.ArchivoMail With {.Ruta = RutaXML}) + + If ObjMail.SendMail(UsuarioActual.Empresa, Correo, Asunto, Cuerpo, "", LSRutasMail) Then + + If ConAlerta Then + RegistraScript("$('#ModalDivMail').modal('hide');") + Alert("El correo se envió correctamente", TipoMensaje.MsgInformacion) + End If + + Else + Msg = "No se pudo enviar el correo electrónico." + End If + + Else + Msg = "No se pudo adjuntar el correo electrónico." + End If + + End If + + If ConAlerta AndAlso Msg <> "" Then + Alert(Msg, TipoMensaje.MsgError) + End If + + + Catch ex As Exception + OnError("Ocurrió error al mandar MAIL", ex) + + End Try + End Sub + + + Protected Sub LnkEliminaMovComprobacion_Click(sender As Object, e As EventArgs) + Dim gvRow As GridViewRow = DirectCast((DirectCast(sender, LinkButton)).NamingContainer, GridViewRow) + Dim TieneError = False + If GvRH.Rows(gvRow.RowIndex).DataKey("CveIE").ToEntero > 0 Then + Dim ObjBancos As New ClsBancos + ObjBancos.IniciaTransacSQL() + + If Not ObjBancos.EliminarBancos_IEComprobacion(UsuarioActual.CveUsuario, GvRH.Rows(gvRow.RowIndex).DataKey("CveIE").ToEntero) Then + TieneError = True + Alert("Ocurrió un error al eliminar los Movimientos Bancarios. Por favor intente de nuevo", TipoMensaje.MsgError) + ObjBancos.RollBack() + Else + Alert("Los Movimientos Bancarios se eliminaron correctamente.", TipoMensaje.MsgInformacion) + ObjBancos.Commit() + End If + ObjBancos.Dispose() + End If + + If Not TieneError Then + DtGvRH.Rows.RemoveAt(gvRow.RowIndex) + DtGvRH.AcceptChanges() + End If + + CargaGvRH() + End Sub + + Private Function GeneraCorreo(CveIE As Integer) As String + Dim strBody As New StringBuilder + Dim objIE As New ClsBancos + + If objIE.GetBancosIE(CveIE, UsuarioActual.CveEmpresa) Then + strBody.Append(" ") + strBody.Append(" ") + strBody.Append(" ") + strBody.Append(" ") + strBody.Append(" ") + strBody.AppendFormat("
") + strBody.AppendFormat("
") + strBody.AppendFormat(" {0}", UsuarioActual.Empresa.Empresa) + strBody.AppendFormat(" ") + strBody.AppendFormat(" ") + strBody.AppendFormat(" ", UsuarioActual.Empresa.Direccion) + strBody.AppendFormat(" ") + strBody.AppendFormat(" ") + strBody.AppendFormat(" ", UsuarioActual.Empresa.Colonia) + strBody.AppendFormat(" ") + strBody.AppendFormat(" ") + strBody.AppendFormat(" ", UsuarioActual.Empresa.Ciudad, UsuarioActual.Empresa.Estado, UsuarioActual.Empresa.CP) + strBody.AppendFormat(" ") + strBody.AppendFormat(" ") + strBody.AppendFormat(" ", UsuarioActual.Empresa.RFC) + strBody.AppendFormat(" ") + strBody.AppendFormat("
{0}
Col. {0}
{0}, {1}, C.P.{2}
RFC {0}
") + strBody.AppendFormat("
") + strBody.AppendFormat("


") + + strBody.AppendFormat("
") + strBody.AppendFormat("
") + strBody.AppendFormat(" ") + strBody.AppendFormat(" ") + + If objIE.CveTipoTransaccion = 1 Then ' cuando es cheque + strBody.Append(" ") + strBody.Append(" ") + strBody.Append(" ") + End If + + If objIE.CveTipoTransaccion = 2 Then ' cuando es transf + strBody.Append(" ") + strBody.Append(" ") + strBody.Append(" ") + End If + + strBody.Append(" ") + strBody.AppendFormat(" ") + strBody.Append(" ") + strBody.Append("
Favor de pasar a nuestras oficinas por el cheque con la siguientes instrucciones.
Notificación de transferencia de pago realizada.
 
") + strBody.AppendFormat("
") + strBody.Append("
") + + + strBody.AppendFormat("
") + strBody.AppendFormat(" ") + strBody.AppendFormat(" ") + strBody.AppendFormat(" ") + strBody.AppendFormat(" ") + strBody.AppendFormat("
") + strBody.AppendFormat("
") + strBody.AppendFormat(" Beneficiario:{0} ", objIE.PagueseA) + strBody.AppendFormat(" ") + strBody.AppendFormat(" ") + strBody.AppendFormat(" ") + strBody.AppendFormat(" ") + strBody.AppendFormat(" ") + strBody.AppendFormat(" ") + strBody.AppendFormat(" ") + strBody.AppendFormat(" ", objIE.TipoTransaccion) + strBody.AppendFormat(" ") + strBody.AppendFormat(" ") + strBody.AppendFormat(" ") + strBody.AppendFormat(" ", objIE.Banco) + strBody.AppendFormat(" ") + strBody.AppendFormat(" ") + strBody.AppendFormat(" ") + strBody.AppendFormat(" ", objIE.NumCuenta) + strBody.AppendFormat(" ") + If objIE.CuentaDepositado.ToString <> "" Then + strBody.AppendFormat(" ") + strBody.AppendFormat(" ") + strBody.AppendFormat(" ", objIE.CuentaDepositado) + strBody.AppendFormat(" ") + End If + strBody.AppendFormat(" ") + strBody.AppendFormat(" ") + strBody.AppendFormat(" ", objIE.FechaDocumento.ToString("dd/MM/yyyy")) + strBody.AppendFormat(" ") + strBody.AppendFormat(" ") + strBody.AppendFormat(" ") + strBody.AppendFormat(" ", objIE.Importe.FormatoNumero, objIE.Moneda) + strBody.AppendFormat(" ") + strBody.AppendFormat(" ") + strBody.AppendFormat(" ") + strBody.AppendFormat(" ", objIE.Observaciones) + strBody.AppendFormat(" ") + strBody.AppendFormat(" ") + strBody.AppendFormat(" ") + strBody.AppendFormat(" ") + strBody.AppendFormat("
Movimiento:{0}
Banco:{0}
Cuenta:{0}
Cuenta Destino:{0}
Fecha:{0}
Importe:$ {0} {1}
Observaciones:{0}
") + strBody.AppendFormat("
") + strBody.AppendFormat("
") + strBody.AppendFormat("
") + strBody.AppendFormat("
") + strBody.AppendFormat("
") + + + 'MOVIMIENTOS CHEQUE + If objIE.GetBancosIEMovimientos(CveIE, UsuarioActual.CveEmpresa) Then + Dim Textov33 As String = "" + If UsuarioActual.Empresa.Funcionalidad(520) = "1" Then + Textov33 = "Favor de emitir complemento de pago de los siguientes documentos" + End If + + strBody.AppendFormat("
") + strBody.AppendFormat(" ") + strBody.AppendFormat(" ") + strBody.AppendFormat(" ") + strBody.AppendFormat(" ") + strBody.AppendFormat("
") + strBody.AppendFormat("
") + strBody.AppendFormat(" Documentos abonados o pagados
{0}
", Textov33) + strBody.AppendFormat(" ") + strBody.AppendFormat(" ") + strBody.AppendFormat(" ") + strBody.AppendFormat(" ") + strBody.AppendFormat(" ") + strBody.AppendFormat(" ") + strBody.AppendFormat(" ") + strBody.AppendFormat(" ") + + + For Each dr As DataRow In objIE.DtResultados.FiltraParametros("CveConceptoContable IN (17) AND CveCompra > 0").Rows + strBody.AppendFormat(" ") + strBody.AppendFormat(" ", dr("Fecha").ToString.ToDate.ToShortDateString()) + strBody.AppendFormat(" ", dr("SerieFolio").ToString) + strBody.AppendFormat(" ", dr("Importe").ToString.FormatoNumero) + strBody.AppendFormat(" ", dr("FolioFiscal")) + strBody.AppendFormat(" ", dr("ImporteNC").ToString.FormatoNumero) + strBody.AppendFormat(" ") + Next + + + strBody.AppendFormat(" ") + strBody.AppendFormat(" ") + strBody.AppendFormat(" ") + strBody.AppendFormat("
FechaFacturaImporte ($)Folio FiscalNC Aplicadas
{0}{0}$ {0}{0}{0}
") + strBody.AppendFormat("
") + strBody.AppendFormat("
") + strBody.AppendFormat("
") + strBody.AppendFormat("
") + strBody.AppendFormat("
") + End If + + strBody.Append("
Favor de no responder a este correo.
") + + strBody.Append("") + End If + + objIE.Dispose() + Return strBody.ToString + End Function + + Private Sub BtnSendMail_Click(sender As Object, e As EventArgs) Handles BtnSendMail.Click + 'NotificacionPago(HdnCveIE.Value.ToEntero, Txt) + Dim ObjMail As New ClsSisMail() + Dim Body = GeneraCorreo(CveIE) + + Dim ListaArchivos As New List(Of ClsSisMail.ArchivoMail) + + Dim ObjIE As New ClsBancos() + If ObjIE.GetBancosIE(CveIE, UsuarioActual.CveEmpresa) Then + If ObjIE.DtResultados.Rows.Count > 0 Then + If ObjIE.Comprobante <> "" Then + ComprobanteIE = String.Format("{0}IE\{1}", UsuarioActual.Empresa.Ruta, ObjIE.Comprobante.ToString) + + If IO.File.Exists(ComprobanteIE) Then + ListaArchivos.Add(New ClsSisMail.ArchivoMail With {.Ruta = ComprobanteIE.ToString}) + End If + End If + End If + End If + ObjIE.Dispose() + + If ObjMail.SendMail(UsuarioActual.Empresa, TxtParaMail.Text.Trim, "Notificaciones de pago", Body, TxtCC.Text.Trim, Displayname:="Notificaciones de pago", Archivos:=ListaArchivos) Then + 'ResultadoMail = 1 + TxtCC.Text = "" + 'TxtAdicional.Text = "" + RegistraScript("$('#ModalDivMail').modal('hide');") + Alert("El correo se envió correctamente", TipoMensaje.MsgInformacion) + Else + Alert("No se pudo enviar el correo electrónico.", TipoMensaje.MsgError) + End If + + End Sub + + Private Sub LnkAjustarMovimiento_Click(sender As Object, e As EventArgs) Handles LnkAjustarMovimiento.Click + RegistraScript("$('#ModalAjustarMovimiento').modal('show');") + End Sub + + Private Sub BtnAjustarMovimiento_Click(sender As Object, e As EventArgs) Handles BtnAjustarMovimiento.Click + + Dim ObjBanco As New ClsBancos + + If ObjBanco.UpdateAjustarMovimiento(CveIE, TxtAjustarMovimiento.Text.ToDecimal, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa) Then + RegistraScript("$('#ModalAjustarMovimiento').modal('hide');", "ALTR") + Alert("El ajuste se realizo correctamente.", TipoMensaje.MsgInformacion, $" document.location.href = ""./IE.aspx?CveIE={CveIE}"";") + End If + + ObjBanco.Dispose() + + End Sub + + + + + + Protected Sub LnkCancelaMovimiento_Click(sender As Object, e As EventArgs) + + Dim gvRow As GridViewRow = DirectCast((DirectCast(sender, LinkButton)).NamingContainer, GridViewRow) + Dim ObjIE As New ClsBancos + If ObjIE.CancelarIEVenta(CveIE, gvRow.DataKey("CveVenta").ToString.ToEntero) Then + Alert("Movimiento cancelado correctamente") + CargaDatos() + End If + ObjIE.Dispose() + + End Sub + + + Protected Sub GvM_RowDataBound(sender As Object, e As GridViewRowEventArgs) + If e.Row.RowType = DataControlRowType.DataRow Then + If e.Row.DBCampo("CveVenta").ToString.ToEntero > 0 AndAlso e.Row.DBCampo("CveCliente").ToString.ToEntero > 0 AndAlso e.Row.DBCampo("ImporteMN").ToString.ToDecimal > 0 AndAlso e.Row.DBCampo("CveConceptoContable").ToString.ToEntero = 2 AndAlso e.Row.DBCampo("Saldo").ToString.ToDecimal = 0 Then + e.Row.FCLinkButton("LnkCancelaMovimiento").Visible = True + End If + End If + End Sub + + + Protected Sub LnkCancelarComplemetno_Click(sender As Object, e As EventArgs) -#Region " ACTUALIZAR TIPO CAMBIO PREPOLIZA " - Private Sub InicializaActualizarTC() - If CveIE > 0 And DdlMoneda.SelectedValue.ToEntero = 2 And CvePrePoliza > 0 Then - TxtActualizarTC_TCActual.Text = TxtTipoCambio.Text - TxtActualizarTC_TCActualizar.Text = GlobalTipoCambio(TxtFechaDocumento.Text.ToDate).FormatoNumero(4) - HLModalActualizarTC.Visible = True - End If - End Sub - Protected Sub BtnActualizarTC_Click(sender As Object, e As EventArgs) - Dim ObjContabilidad As New ClsContabilidad - Dim ObjBancos As New ClsBancos(ObjContabilidad.IniciaTransacSQL()) - Dim ObjEventos As New ClsOIEventos(ObjContabilidad.IniciaTransacSQL()) - Dim TieneError = False - Dim MensajeError = "" - - If ObjEventos.AddEventoBitacora($"Se actualizó el Tipo de Cambio de la compra. TC anterior: {TxtActualizarTC_TCActual.Text.FormatoNumero(4)} | TC actual: {TxtActualizarTC_TCActualizar.Text.FormatoNumero(4)}", "", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveIE:=CveIE) Then - If ObjBancos.UpdateBancos_IETipoCambio(TxtActualizarTC_TCActualizar.Text.ToDouble, CveIE, CvePrePoliza, UsuarioActual.CveEmpresa) Then - If Not ObjContabilidad.ReconstruirPP_PagoCompraVenta(CveIE) Then - TieneError = True - MensajeError = "Ocurrió un error al actualizar el asiento contable" - End If - Else - TieneError = True - MensajeError = "Ocurrió un error al actualizar el Tipo de Cambio al documento" - End If - Else - TieneError = True - MensajeError = "Ocurrió un error al guardar el historal al actualizar el Tipo de Cambio al documento" - End If - - If Not TieneError Then - ObjContabilidad.Commit() - Alert("Se actualizó correctamente el tipo de cambio del documento.", TipoMensaje.MsgInformacion) - RegistraScript("$('#ModalActualizarTC').modal('hide');") - Else - ObjContabilidad.RollBack() - Alert(MensajeError, TipoMensaje.MsgError) - End If - - ObjContabilidad.Dispose() - End Sub -#End Region - -#Region "SOLICITAR VIATICOS VIATICOS" - - Protected Sub CargaDatosViaticos() - ViewState("CveSolicitudViatico") = Request("CveSolicitudViatico") - RBL.SelectedValue = "FE" - If Request("CvePersonal") IsNot Nothing AndAlso IsNumeric(Request("CvePersonal")) AndAlso Request("CvePersonal").ToEntero > 0 Then - ViewState("CvePersonal") = Request("CvePersonal") - PersonalIndexChange(CvePersonal) - - Dim ObjBancos As New ClsBancos - - If ObjBancos.GetSolicitudesViaticos(CveSolicitudViatico, UsuarioActual.CveEmpresa) AndAlso ObjBancos.DtResultados.Rows.Count > 0 Then - TxtImporte.Text = ObjBancos.DtResultados.FiltroPrimeroValor("Importe").ToString.FormatoNumero - TxtImporteLetra.Text = ObjBancos.DtResultados.FiltroPrimeroValor("Importe").ToString.ToDouble.Texto2Letras() - TxtObservaciones.Text = $"SOLICITUD DE VIÁTICOS - FOLIO {ObjBancos.DtResultados.FiltroPrimeroValor("Folio").ToString()}: {ObjBancos.DtResultados.FiltroPrimeroValor("Asunto").ToString()}." - End If - ObjBancos.Dispose() - End If - End Sub -#End Region - -#Region " DEVOLVER DINERO ANT/NC " - Private Sub InicializaDevolverDinero() - - If Opcion = "DevDinV" AndAlso Request("P") IsNot Nothing AndAlso Request("P").Length > 0 Then - - Dim ParametrosTexto As String = Decripta(Request("P")) - - If ParametrosTexto <> "" Then - CargaParametros(ParametrosTexto) - - HdnCveCliente.Value = UrlParametros("CVECLIENTE").ToString - CveCliente = UrlParametros("CVECLIENTE").ToString.ToEntero - CveVentaDevDin = UrlParametros("CVEVENTA").ToString.ToEntero - - SerieFolioDevDin = UrlParametros("SERIEFOLIO").ToString - CvePrePolizaDevDin = UrlParametros("CVEPREPOLIZA").ToString.ToEntero - ImporteOriginalDevDin = UrlParametros("ORIGINAL").ToString.ToDecimal.RoundSQL(6) - TxtImporte.Text = UrlParametros("SALDO").ToString.FormatoNumero() - TxtImporte.Attributes.Add("onkeyup", $"FormatoMoneda(this);ValidarCantidad(this,{UrlParametros("SALDO").ToString});") - TxtImporteLetra.Text = UrlParametros("SALDO").ToString.ToDouble.Texto2Letras(UrlParametros("CVEMONEDA").ToString.ToEntero) - CargaCliente(CveCliente) - 'BuscarCliente() - - DdlMoneda.SelectedValue = UrlParametros("CVEMONEDA").ToString - CveMoneda = DdlMoneda.SelectedValue.ToEntero - CargaCuenta(DdlMoneda.SelectedValue.ToEntero) - CambiaTipoMoneda() - UpCuentaDeposito.Update() - - End If - End If - - If Opcion = "DevDinC" AndAlso Request("P") IsNot Nothing AndAlso Request("P").Length > 0 Then - - Dim ParametrosTexto As String = Decripta(Request("P")) - - - If ParametrosTexto <> "" Then - CargaParametros(ParametrosTexto) - - HdnCveProveedor.Value = UrlParametros("CVEPROVEEDOR").ToString - CveProveedor = UrlParametros("CVEPROVEEDOR").ToString.ToEntero - - CveCompraDeCDin = UrlParametros("CVECOMPRA").ToString.ToEntero - SerieFolioDeCDin = UrlParametros("SERIEFOLIO").ToString - CvePrePolizaDeCDin = UrlParametros("CVEPREPOLIZA").ToString.ToEntero - FechaCompra = UrlParametros("FECHACOMPRA").ToString.ToDate - - ImporteOriginalDevDin = UrlParametros("ORIGINAL").ToString.ToDecimal.RoundSQL(6) - TxtImporte.Text = UrlParametros("SALDO").ToString.FormatoNumero() - TxtImporte.Attributes.Add("onkeyup", $"FormatoMoneda(this);ValidarCantidad(this,{UrlParametros("SALDO").ToString});") - TxtImporteLetra.Text = UrlParametros("SALDO").ToString.ToDouble.Texto2Letras(UrlParametros("CVEMONEDA").ToString.ToEntero) - - CargaProveedor(CveProveedor, "-1") - 'BuscarCliente() - - DdlMoneda.SelectedValue = UrlParametros("CVEMONEDA").ToString - CveMoneda = DdlMoneda.SelectedValue.ToEntero - CargaCuenta(DdlMoneda.SelectedValue.ToEntero) - CambiaTipoMoneda() - UpCuentaDeposito.Update() - - - End If - - End If - - - End Sub -#End Region - - -#Region "S A L D O - I N I C I A L" - Private Function AgregarSaldoInicial(SaldoInicial As Double, Fecha As DateTime, CveMoneda As Integer, ObjMov As ClsContabilidad) As Integer - Return ObjMov.AddPrePolizas("Bancos/IE", 13, SaldoInicial, SaldoInicial, CveMoneda, Fecha, "Saldo Inicial", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa) - End Function -#End Region - - Protected Sub LnkChqDevuelto_Click(sender As Object, e As EventArgs) - If ChkConciliado.Checked Then - Alert("El documento seleccionado no se puede eliminar porque se encuentra conciliado.", TipoMensaje.MsgError) - Exit Sub - End If - RegistraScript("ShowDivDevueltoIE();") - End Sub - - Protected Sub LnkCancelar_Click(sender As Object, e As EventArgs) - If ChkConciliado.Checked Then - Alert("El documento seleccionado no se puede eliminar porque se encuentra conciliado.", TipoMensaje.MsgError) - Exit Sub - End If - RegistraScript("ShowDivCancelarIE();") - End Sub - - Private Sub LnkEmitirComplemento_Click(sender As Object, e As EventArgs) Handles LnkEmitirComplemento.Click - GeneraTimbre() - CargaComplementosPago() - End Sub - - Private Sub GeneraTimbre() - - Dim Str As New StringBuilder - - Dim Banco As New ClsBancos - Banco.IniciaTransacSQL() - - - If Banco.GeneraTimbrePago(CveIE, -1, UsuarioActual) Then - If Banco.Mensaje = "" Then - Banco.Commit() - PDFReciboDePagos(-1, -1, Banco.CveComplementoPago, False) - Str.AppendFormat("Folio: {0}  ", Banco.ComplementoSerieFolio) - Str.AppendFormat("XML    ", Encripta(String.Format("OP=CompP&EXT=xml&SerieFolio={0}&CveComplementoPago={1}", Banco.ComplementoSerieFolio, Banco.CveComplementoPago))) - Str.AppendFormat("PDF   ", Encripta(String.Format("OP=CompP&EXT=pdf&SerieFolio={0}&CveComplementoPago={1}", Banco.ComplementoSerieFolio, Banco.CveComplementoPago))) - Str.AppendFormat("{1}   {2}
", CveIE, Folio, DdlCliente.SelectedText.ToString()) - MandaCorreo(Banco.ComplementoSerieFolio, CorreoCobranzaCliente) - End If - - Else - Str.AppendFormat("No se genero complemento del Folio {0} por el siguiente motivo: {1}", Folio, Banco.Mensaje) - Banco.RollBack() - End If - - - Banco.Dispose() - CargaDatos() - Alert(Str.ToString) - End Sub - - Private Sub MandaCorreo(NombreArchivo As String, Correo As String, Optional ConAlerta As Boolean = True) - Try - Dim Msg As String = "" - If NombreArchivo <> "-1" Then ' - - Dim ObjMail As New ClsSisMail() - Dim RutaXML As String = String.Format("{0}\XML\Pag\{1}.xml", UsuarioActual.Empresa.Ruta, NombreArchivo) - Dim RutaPDF As String = String.Format("{0}\PDF\Pag\{1}.pdf", UsuarioActual.Empresa.Ruta, NombreArchivo) - - Dim Cuerpo As String = "Se hace entrega del comprobante de pago" - Dim Asunto As String = "Entrega de comprobante de pago" - - If IO.File.Exists(RutaPDF) AndAlso IO.File.Exists(RutaXML) Then - - Dim LSRutasMail As New List(Of ClsSisMail.ArchivoMail) - - LSRutasMail.Add(New ClsSisMail.ArchivoMail With {.Ruta = RutaPDF}) - LSRutasMail.Add(New ClsSisMail.ArchivoMail With {.Ruta = RutaXML}) - - If ObjMail.SendMail(UsuarioActual.Empresa, Correo, Asunto, Cuerpo, "", LSRutasMail) Then - - If ConAlerta Then - RegistraScript("$('#ModalDivMail').modal('hide');") - Alert("El correo se envió correctamente", TipoMensaje.MsgInformacion) - End If - - Else - Msg = "No se pudo enviar el correo electrónico." - End If - - Else - Msg = "No se pudo adjuntar el correo electrónico." - End If - - End If - - If ConAlerta AndAlso Msg <> "" Then - Alert(Msg, TipoMensaje.MsgError) - End If - - - Catch ex As Exception - OnError("Ocurrió error al mandar MAIL", ex) - - End Try - End Sub - - - Protected Sub LnkEliminaMovComprobacion_Click(sender As Object, e As EventArgs) - Dim gvRow As GridViewRow = DirectCast((DirectCast(sender, LinkButton)).NamingContainer, GridViewRow) - Dim TieneError = False - If GvRH.Rows(gvRow.RowIndex).DataKey("CveIE").ToEntero > 0 Then - Dim ObjBancos As New ClsBancos - ObjBancos.IniciaTransacSQL() - - If Not ObjBancos.EliminarBancos_IEComprobacion(UsuarioActual.CveUsuario, GvRH.Rows(gvRow.RowIndex).DataKey("CveIE").ToEntero) Then - TieneError = True - Alert("Ocurrió un error al eliminar los Movimientos Bancarios. Por favor intente de nuevo", TipoMensaje.MsgError) - ObjBancos.RollBack() - Else - Alert("Los Movimientos Bancarios se eliminaron correctamente.", TipoMensaje.MsgInformacion) - ObjBancos.Commit() - End If - ObjBancos.Dispose() - End If - - If Not TieneError Then - DtGvRH.Rows.RemoveAt(gvRow.RowIndex) - DtGvRH.AcceptChanges() - End If - - CargaGvRH() - End Sub - - Private Function GeneraCorreo(CveIE As Integer) As String - Dim strBody As New StringBuilder - Dim objIE As New ClsBancos - - If objIE.GetBancosIE(CveIE, UsuarioActual.CveEmpresa) Then - strBody.Append(" ") - strBody.Append(" ") - strBody.Append(" ") - strBody.Append(" ") - strBody.Append(" ") - strBody.AppendFormat("
") - strBody.AppendFormat("
") - strBody.AppendFormat(" {0}", UsuarioActual.Empresa.Empresa) - strBody.AppendFormat(" ") - strBody.AppendFormat(" ") - strBody.AppendFormat(" ", UsuarioActual.Empresa.Direccion) - strBody.AppendFormat(" ") - strBody.AppendFormat(" ") - strBody.AppendFormat(" ", UsuarioActual.Empresa.Colonia) - strBody.AppendFormat(" ") - strBody.AppendFormat(" ") - strBody.AppendFormat(" ", UsuarioActual.Empresa.Ciudad, UsuarioActual.Empresa.Estado, UsuarioActual.Empresa.CP) - strBody.AppendFormat(" ") - strBody.AppendFormat(" ") - strBody.AppendFormat(" ", UsuarioActual.Empresa.RFC) - strBody.AppendFormat(" ") - strBody.AppendFormat("
{0}
Col. {0}
{0}, {1}, C.P.{2}
RFC {0}
") - strBody.AppendFormat("
") - strBody.AppendFormat("


") - - strBody.AppendFormat("
") - strBody.AppendFormat("
") - strBody.AppendFormat(" ") - strBody.AppendFormat(" ") - - If objIE.CveTipoTransaccion = 1 Then ' cuando es cheque - strBody.Append(" ") - strBody.Append(" ") - strBody.Append(" ") - End If - - If objIE.CveTipoTransaccion = 2 Then ' cuando es transf - strBody.Append(" ") - strBody.Append(" ") - strBody.Append(" ") - End If - - strBody.Append(" ") - strBody.AppendFormat(" ") - strBody.Append(" ") - strBody.Append("
Favor de pasar a nuestras oficinas por el cheque con la siguientes instrucciones.
Notificación de transferencia de pago realizada.
 
") - strBody.AppendFormat("
") - strBody.Append("
") - - - strBody.AppendFormat("
") - strBody.AppendFormat(" ") - strBody.AppendFormat(" ") - strBody.AppendFormat(" ") - strBody.AppendFormat(" ") - strBody.AppendFormat("
") - strBody.AppendFormat("
") - strBody.AppendFormat(" Beneficiario:{0} ", objIE.PagueseA) - strBody.AppendFormat(" ") - strBody.AppendFormat(" ") - strBody.AppendFormat(" ") - strBody.AppendFormat(" ") - strBody.AppendFormat(" ") - strBody.AppendFormat(" ") - strBody.AppendFormat(" ") - strBody.AppendFormat(" ", objIE.TipoTransaccion) - strBody.AppendFormat(" ") - strBody.AppendFormat(" ") - strBody.AppendFormat(" ") - strBody.AppendFormat(" ", objIE.Banco) - strBody.AppendFormat(" ") - strBody.AppendFormat(" ") - strBody.AppendFormat(" ") - strBody.AppendFormat(" ", objIE.NumCuenta) - strBody.AppendFormat(" ") - If objIE.CuentaDepositado.ToString <> "" Then - strBody.AppendFormat(" ") - strBody.AppendFormat(" ") - strBody.AppendFormat(" ", objIE.CuentaDepositado) - strBody.AppendFormat(" ") - End If - strBody.AppendFormat(" ") - strBody.AppendFormat(" ") - strBody.AppendFormat(" ", objIE.FechaDocumento.ToString("dd/MM/yyyy")) - strBody.AppendFormat(" ") - strBody.AppendFormat(" ") - strBody.AppendFormat(" ") - strBody.AppendFormat(" ", objIE.Importe.FormatoNumero, objIE.Moneda) - strBody.AppendFormat(" ") - strBody.AppendFormat(" ") - strBody.AppendFormat(" ") - strBody.AppendFormat(" ", objIE.Observaciones) - strBody.AppendFormat(" ") - strBody.AppendFormat(" ") - strBody.AppendFormat(" ") - strBody.AppendFormat(" ") - strBody.AppendFormat("
Movimiento:{0}
Banco:{0}
Cuenta:{0}
Cuenta Destino:{0}
Fecha:{0}
Importe:$ {0} {1}
Observaciones:{0}
") - strBody.AppendFormat("
") - strBody.AppendFormat("
") - strBody.AppendFormat("
") - strBody.AppendFormat("
") - strBody.AppendFormat("
") - - - 'MOVIMIENTOS CHEQUE - If objIE.GetBancosIEMovimientos(CveIE, UsuarioActual.CveEmpresa) Then - Dim Textov33 As String = "" - If UsuarioActual.Empresa.Funcionalidad(520) = "1" Then - Textov33 = "Favor de emitir complemento de pago de los siguientes documentos" - End If - - strBody.AppendFormat("
") - strBody.AppendFormat(" ") - strBody.AppendFormat(" ") - strBody.AppendFormat(" ") - strBody.AppendFormat(" ") - strBody.AppendFormat("
") - strBody.AppendFormat("
") - strBody.AppendFormat(" Documentos abonados o pagados
{0}
", Textov33) - strBody.AppendFormat(" ") - strBody.AppendFormat(" ") - strBody.AppendFormat(" ") - strBody.AppendFormat(" ") - strBody.AppendFormat(" ") - strBody.AppendFormat(" ") - strBody.AppendFormat(" ") - strBody.AppendFormat(" ") - - - For Each dr As DataRow In objIE.DtResultados.FiltraParametros("CveConceptoContable IN (17) AND CveCompra > 0").Rows - strBody.AppendFormat(" ") - strBody.AppendFormat(" ", dr("Fecha").ToString.ToDate.ToShortDateString()) - strBody.AppendFormat(" ", dr("SerieFolio").ToString) - strBody.AppendFormat(" ", dr("Importe").ToString.FormatoNumero) - strBody.AppendFormat(" ", dr("FolioFiscal")) - strBody.AppendFormat(" ", dr("ImporteNC").ToString.FormatoNumero) - strBody.AppendFormat(" ") - Next - - - strBody.AppendFormat(" ") - strBody.AppendFormat(" ") - strBody.AppendFormat(" ") - strBody.AppendFormat("
FechaFacturaImporte ($)Folio FiscalNC Aplicadas
{0}{0}$ {0}{0}{0}
") - strBody.AppendFormat("
") - strBody.AppendFormat("
") - strBody.AppendFormat("
") - strBody.AppendFormat("
") - strBody.AppendFormat("
") - End If - - strBody.Append("
Favor de no responder a este correo.
") - - strBody.Append("") - End If - - objIE.Dispose() - Return strBody.ToString - End Function - - Private Sub BtnSendMail_Click(sender As Object, e As EventArgs) Handles BtnSendMail.Click - 'NotificacionPago(HdnCveIE.Value.ToEntero, Txt) - Dim ObjMail As New ClsSisMail() - Dim Body = GeneraCorreo(CveIE) - - Dim ListaArchivos As New List(Of ClsSisMail.ArchivoMail) - - Dim ObjIE As New ClsBancos() - If ObjIE.GetBancosIE(CveIE, UsuarioActual.CveEmpresa) Then - If ObjIE.DtResultados.Rows.Count > 0 Then - If ObjIE.Comprobante <> "" Then - ComprobanteIE = String.Format("{0}IE\{1}", UsuarioActual.Empresa.Ruta, ObjIE.Comprobante.ToString) - - If IO.File.Exists(ComprobanteIE) Then - ListaArchivos.Add(New ClsSisMail.ArchivoMail With {.Ruta = ComprobanteIE.ToString}) - End If - End If - End If - End If - ObjIE.Dispose() - - If ObjMail.SendMail(UsuarioActual.Empresa, TxtParaMail.Text.Trim, "Notificaciones de pago", Body, TxtCC.Text.Trim, Displayname:="Notificaciones de pago", Archivos:=ListaArchivos) Then - 'ResultadoMail = 1 - TxtCC.Text = "" - 'TxtAdicional.Text = "" - RegistraScript("$('#ModalDivMail').modal('hide');") - Alert("El correo se envió correctamente", TipoMensaje.MsgInformacion) - Else - Alert("No se pudo enviar el correo electrónico.", TipoMensaje.MsgError) - End If - - End Sub - - Private Sub LnkAjustarMovimiento_Click(sender As Object, e As EventArgs) Handles LnkAjustarMovimiento.Click - RegistraScript("$('#ModalAjustarMovimiento').modal('show');") - End Sub - - Private Sub BtnAjustarMovimiento_Click(sender As Object, e As EventArgs) Handles BtnAjustarMovimiento.Click - - Dim ObjBanco As New ClsBancos - - If ObjBanco.UpdateAjustarMovimiento(CveIE, TxtAjustarMovimiento.Text.ToDecimal, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa) Then - RegistraScript("$('#ModalAjustarMovimiento').modal('hide');", "ALTR") - Alert("El ajuste se realizo correctamente.", TipoMensaje.MsgInformacion, $" document.location.href = ""./IE.aspx?CveIE={CveIE}"";") - End If - - ObjBanco.Dispose() - - End Sub - - - - - - Protected Sub LnkCancelaMovimiento_Click(sender As Object, e As EventArgs) - - Dim gvRow As GridViewRow = DirectCast((DirectCast(sender, LinkButton)).NamingContainer, GridViewRow) - Dim ObjIE As New ClsBancos - If ObjIE.CancelarIEVenta(CveIE, gvRow.DataKey("CveVenta").ToString.ToEntero) Then - Alert("Movimiento cancelado correctamente") - CargaDatos() - End If - ObjIE.Dispose() - - End Sub - - - Protected Sub GvM_RowDataBound(sender As Object, e As GridViewRowEventArgs) - If e.Row.RowType = DataControlRowType.DataRow Then - If e.Row.DBCampo("CveVenta").ToString.ToEntero > 0 AndAlso e.Row.DBCampo("CveCliente").ToString.ToEntero > 0 AndAlso e.Row.DBCampo("ImporteMN").ToString.ToDecimal > 0 AndAlso e.Row.DBCampo("CveConceptoContable").ToString.ToEntero = 2 AndAlso e.Row.DBCampo("Saldo").ToString.ToDecimal = 0 Then - e.Row.FCLinkButton("LnkCancelaMovimiento").Visible = True - End If - End If - End Sub - - - Protected Sub LnkCancelarComplemetno_Click(sender As Object, e As EventArgs) - If ChkConciliado.Checked Then Alert("El documento seleccionado no se puede eliminar porque se encuentra conciliado.", TipoMensaje.MsgAdvertencia) Exit Sub - End If - - Dim GvRow As GridViewRow = DirectCast(DirectCast(sender, LinkButton).BindingContainer, GridViewRow) - - - CveComplementoPagoCancelar = GvRow.DataKey("CveComplementoPago").ToEntero - FolioFiscalCancelar = GvRow.DataKey("FolioFiscal").ToString - '' Dim RFCEmisor As String = UsuarioActual.Empresa.RFC - RFCReceptorCancelar = GvRow.DataKey("RFCReceptor") - CvePACCancelacion = GvRow.DataKey("CvePAC").ToEntero - - - Dim ObjCancelacion As New Timbrado - Dim ObjBanco As New ClsBancos - - If ObjCancelacion.CFDICancelar(UsuarioActual.Empresa, FolioFiscalCancelar, 0, RFCReceptorCancelar, UsuarioActual.Empresa.RFC, CvePACCancelacion) Then - - If ObjBanco.UpdateComplementoPago(CveComplementoPagoCancelar, "-1", -1, UsuarioActual.CveEmpresa, 2, CvePACCancelacion, FechaCancelacion:=ObjCancelacion.CancelacionFecha, SelloCancelacion:=ObjCancelacion.CancelacionAcuse) Then - CargaComplementosPago() - - ' RegistraScript("$('#ModalCancelarComplemetno').modal('hide');") - Alert("El complemento se cancelo correctamente.") - End If - - Else - Alert("Se presento un error al cancelar el complemento.") - End If - - ObjBanco.Dispose() - - - '' INICIO Version 2 - 'CveComplementoPagoCancelar = GvRow.DataKey("CveComplementoPago").ToEntero - 'FolioFiscalCancelar = GvRow.DataKey("FolioFiscal").ToString - '' Dim RFCEmisor As String = UsuarioActual.Empresa.RFC - 'RFCReceptorCancelar = GvRow.DataKey("RFCReceptor") - 'CvePACCancelacion = GvRow.DataKey("CvePAC").ToEntero - - 'RegistraScript("$('#ModalCancelarComplemetno').modal('show');") - - 'RdlCancelarComplemento.SelectedValue = "1" - 'DivFechaCancelación.Visible = False - 'UpModalCancelarComplemetno.Update() - '' FIN Version 2 - - End Sub - + End If + + Dim GvRow As GridViewRow = DirectCast(DirectCast(sender, LinkButton).BindingContainer, GridViewRow) + + + CveComplementoPagoCancelar = GvRow.DataKey("CveComplementoPago").ToEntero + FolioFiscalCancelar = GvRow.DataKey("FolioFiscal").ToString + '' Dim RFCEmisor As String = UsuarioActual.Empresa.RFC + RFCReceptorCancelar = GvRow.DataKey("RFCReceptor") + CvePACCancelacion = GvRow.DataKey("CvePAC").ToEntero + + + Dim ObjCancelacion As New Timbrado + Dim ObjBanco As New ClsBancos + + If ObjCancelacion.CFDICancelar(UsuarioActual.Empresa, FolioFiscalCancelar, 0, RFCReceptorCancelar, UsuarioActual.Empresa.RFC, CvePACCancelacion) Then + + If ObjBanco.UpdateComplementoPago(CveComplementoPagoCancelar, "-1", -1, UsuarioActual.CveEmpresa, 2, CvePACCancelacion, FechaCancelacion:=ObjCancelacion.CancelacionFecha, SelloCancelacion:=ObjCancelacion.CancelacionAcuse) Then + CargaComplementosPago() + + ' RegistraScript("$('#ModalCancelarComplemetno').modal('hide');") + Alert("El complemento se cancelo correctamente.") + End If + + Else + Alert("Se presento un error al cancelar el complemento.") + End If + + ObjBanco.Dispose() + + + '' INICIO Version 2 + 'CveComplementoPagoCancelar = GvRow.DataKey("CveComplementoPago").ToEntero + 'FolioFiscalCancelar = GvRow.DataKey("FolioFiscal").ToString + '' Dim RFCEmisor As String = UsuarioActual.Empresa.RFC + 'RFCReceptorCancelar = GvRow.DataKey("RFCReceptor") + 'CvePACCancelacion = GvRow.DataKey("CvePAC").ToEntero + + 'RegistraScript("$('#ModalCancelarComplemetno').modal('show');") + + 'RdlCancelarComplemento.SelectedValue = "1" + 'DivFechaCancelación.Visible = False + 'UpModalCancelarComplemetno.Update() + '' FIN Version 2 + + End Sub + Protected Sub BtnModalCancelarComplemento_Click(sender As Object, e As EventArgs) @@ -5558,14 +5573,14 @@ Partial Class Bancos_IE End If - Dim ObjBancos As New ClsBancos - Dim Respuesta As Boolean = False - Dim DTComplementos As New DataTable - + Dim ObjBancos As New ClsBancos + Dim Respuesta As Boolean = False + Dim DTComplementos As New DataTable + If ObjBancos.GetComplementoPagos(-1, CveIE, -1, UsuarioActual.CveEmpresa) Then DTComplementos = ObjBancos.DtResultados.FiltraParametros(" Estatus IN (1,3) ") - End If - + End If + ObjBancos.Dispose() If DTComplementos.Rows.Count = 1 Then @@ -5598,14 +5613,14 @@ Partial Class Bancos_IE BtnEditar.Visible = False UpGuardar.Update() - ControlesEdicion(True) + ControlesEdicion() End Sub - Private Sub ControlesEdicion(mostrar As Boolean) + Private Sub ControlesEdicion() - If mostrar Then + If PermisoComplementoVigente Then DdlTipoTransaccion.Enabled = True LblCuenta.Visible = False @@ -5617,12 +5632,11 @@ Partial Class Bancos_IE CargaCuentasDepositoClientes() + Else + TxtFolio.Enabled = True + TxtObservaciones.Enabled = True - - - - - + UpDatos.Update() End If End Sub From d14c788dc78b087377e136ebca7edad726f12db7 Mon Sep 17 00:00:00 2001 From: Rene Molina Date: Sat, 24 Aug 2019 12:43:34 -0700 Subject: [PATCH 05/38] =?UTF-8?q?cambio=20en=20ventas,=20TC=20no=20editabl?= =?UTF-8?q?e=20-=20popupaxiliar.=20=20generar=20p=C3=B3liza=20cancelada=20?= =?UTF-8?q?apartir=20de=20otra?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- App_Code/ClsContabilidad.vb | 7 +- Contabilidad/PopUpAuxiliar.aspx.vb | 756 +++++++++++++++-------------- Ventas/Ventas.aspx | 2 +- Ventas/Ventas.aspx.vb | 8 +- 4 files changed, 397 insertions(+), 376 deletions(-) diff --git a/App_Code/ClsContabilidad.vb b/App_Code/ClsContabilidad.vb index 4ab57dfa8..2b556565a 100644 --- a/App_Code/ClsContabilidad.vb +++ b/App_Code/ClsContabilidad.vb @@ -228,9 +228,9 @@ Public Class ClsContabilidad - Public Function AddPrePolizasNegativa(CvePrePoliza As Integer, CveUsuario As Integer, Concepto As String, CveEmpresa As Integer, Fecha As Date) As Boolean + Public Function AddPrePolizasNegativa(CvePrePoliza As Integer, CveUsuario As Integer, Concepto As String, CveEmpresa As Integer, Fecha As Date) As Integer - Dim Retorno As Boolean = False + Dim Retorno As Integer = -1 DataAdapter("PA_Conta_PrePolizasNegativaAdd") @@ -240,11 +240,12 @@ Public Class ClsContabilidad .Add("@Concepto", SqlDbType.VarChar).Value = Concepto .Add("@CveEmpresa", SqlDbType.Int).Value = CveEmpresa .Add("@Fecha", SqlDbType.Date).Value = Fecha + .Add("@CvePrePolizaNueva", SqlDbType.Int).Direction = ParameterDirection.Output End With Try SqlAdapter.Fill(Data) - Retorno = True + Retorno = SqlAdapter.SelectCommand.Parameters("@CvePrePolizaNueva").Value.ToString.ToEntero Catch ex As Exception OnError("Ocurrió un error al Guardar", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo) End Try diff --git a/Contabilidad/PopUpAuxiliar.aspx.vb b/Contabilidad/PopUpAuxiliar.aspx.vb index e283fc11f..115d1b7b7 100644 --- a/Contabilidad/PopUpAuxiliar.aspx.vb +++ b/Contabilidad/PopUpAuxiliar.aspx.vb @@ -1,371 +1,371 @@ -Option Explicit On -Option Strict On - -Imports Extensiones -Imports Microsoft.Reporting.WebForms -Imports System.Data - -Partial Class PopUpAuxiliar - Inherits ClsPaginas - - Private Property Tipo As String - Get - Return ViewState("Tipo").ToString - End Get - Set(value As String) - ViewState("Tipo") = value - End Set - End Property - - Private Property CveCliente As Integer - Get - Return ViewState("CveCliente").ToString.ToEntero - End Get - Set(value As Integer) - ViewState("CveCliente") = value - End Set - End Property - - Private Property CveVenta As Integer - Get - Return ViewState("CveVenta").ToString.ToEntero - End Get - Set(value As Integer) - ViewState("CveVenta") = value - End Set - End Property - - Private Property CveProveedor As Integer - Get - Return ViewState("CveProveedor").ToString.ToEntero - End Get - Set(value As Integer) - ViewState("CveProveedor") = value - End Set - End Property - - Private Property CveCompra As Integer - Get - Return ViewState("CveCompra").ToString.ToEntero - End Get - Set(value As Integer) - ViewState("CveCompra") = value - End Set - End Property - Private Property DTDatos As DataTable - Get - Return CType(ViewState("DTDatos"), DataTable) - End Get - Set(value As DataTable) - ViewState("DTDatos") = value - End Set - End Property - - Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load - If Not IsPostBack Then - CType(Me.Master, BaseMasterPage).EsPopup = True - CType(Me.Master, BaseMasterPage).PopupWidth = 915 - RegistraScript("$get('tdContenido').style.height='1000'") - - Tipo = Request("Tipo") - CveCliente = 0 - CveProveedor = 0 - CargaDatos() - - End If - End Sub - - Private Sub CargaDatos() - GVAuxiliar.Columns(10).Visible = UsuarioActual.TienePermisoProceso(94) +Option Explicit On +Option Strict On + +Imports Extensiones +Imports Microsoft.Reporting.WebForms +Imports System.Data + +Partial Class PopUpAuxiliar + Inherits ClsPaginas + + Private Property Tipo As String + Get + Return ViewState("Tipo").ToString + End Get + Set(value As String) + ViewState("Tipo") = value + End Set + End Property + + Private Property CveCliente As Integer + Get + Return ViewState("CveCliente").ToString.ToEntero + End Get + Set(value As Integer) + ViewState("CveCliente") = value + End Set + End Property + + Private Property CveVenta As Integer + Get + Return ViewState("CveVenta").ToString.ToEntero + End Get + Set(value As Integer) + ViewState("CveVenta") = value + End Set + End Property + + Private Property CveProveedor As Integer + Get + Return ViewState("CveProveedor").ToString.ToEntero + End Get + Set(value As Integer) + ViewState("CveProveedor") = value + End Set + End Property + + Private Property CveCompra As Integer + Get + Return ViewState("CveCompra").ToString.ToEntero + End Get + Set(value As Integer) + ViewState("CveCompra") = value + End Set + End Property + Private Property DTDatos As DataTable + Get + Return CType(ViewState("DTDatos"), DataTable) + End Get + Set(value As DataTable) + ViewState("DTDatos") = value + End Set + End Property + + Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load + If Not IsPostBack Then + CType(Me.Master, BaseMasterPage).EsPopup = True + CType(Me.Master, BaseMasterPage).PopupWidth = 915 + RegistraScript("$get('tdContenido').style.height='1000'") + + Tipo = Request("Tipo") + CveCliente = 0 + CveProveedor = 0 + CargaDatos() + + End If + End Sub + + Private Sub CargaDatos() + GVAuxiliar.Columns(10).Visible = UsuarioActual.TienePermisoProceso(94) 'GVAuxiliar.Columns(11).Visible = UsuarioActual.TienePermisoProceso(94) - GVAuxiliar.Columns(12).Visible = UsuarioActual.TienePermisoProceso(94) - - Select Case Tipo - Case "CxCClientes" - CveCliente = Request("CveCliente").ToEntero - CveVenta = Request("CveVenta").ToEntero - CargaAuxiliarClienteCxC(CveCliente, CveVenta) - LtlTipo1.Text = "Cuentas por Cobrar" - LtlTipo2.Text = "Folio de la Venta" - LtlTipo3.Text = "Fecha de la Venta" - Case "AnticiposClientes" - CveCliente = Request("CveCliente").ToEntero - CveVenta = Request("CveVenta").ToEntero - CargaAuxiliarClienteAnticipos(CveCliente, CveVenta) - LtlTipo1.Text = "Anticipo de Clientes" - LtlTipo2.Text = "Folio de la Venta" - LtlTipo3.Text = "Fecha de la Venta" - Case "CxPProveedor" - CveProveedor = Request("CveProveedor").ToEntero - CveCompra = Request("CveCompra").ToEntero - CargaAuxiliarProveedor(CveProveedor, CveCompra) - LtlTipo1.Text = "Cuentas por Pagar" - LtlTipo2.Text = "Folio de la Compra" - LtlTipo3.Text = "Fecha de la Compra" - End Select - - - UpDatos.Update() - End Sub - - Private Sub CargaAuxiliarClienteCxC(CveCliente As Integer, CveVenta As Integer) - Dim ObjMovtos As New ClsMovimientos() - If ObjMovtos.GetCxCClienteAuxiliar(CveCliente, CveVenta) Then - DTDatos = ObjMovtos.DtResultados - GVAuxiliar.DataSource = ObjMovtos.DtResultados - If ObjMovtos.DtResultados.Rows.Count > 0 Then - LtlFechaVenta.Text = ObjMovtos.DtResultados.Rows(1)("FechaVenta").ToString.ToDate.ToShortDateString() - LtlFolio.Text = ObjMovtos.DtResultados.Rows(1)("Folio").ToString - LtlImporte.Text = ObjMovtos.DtResultados.Rows(1)("Total").ToString.FormatoNumero(2) - LtlSaldo.Text = ObjMovtos.DtResultados.Rows(1)("Saldo").ToString.FormatoNumero(2) - End If - Else - GVAuxiliar.DataSource = Nothing - End If - ObjMovtos.Dispose() - GVAuxiliar.DataBind() - End Sub - - Private Sub CargaAuxiliarClienteAnticipos(CveCliente As Integer, CveVenta As Integer) - Dim ObjMovtos As New ClsMovimientos() - If ObjMovtos.GetAnticiposClienteAuxiliar(CveCliente, CveVenta) Then - DTDatos = ObjMovtos.DtResultados - GVAuxiliar.DataSource = ObjMovtos.DtResultados - If ObjMovtos.DtResultados.Rows.Count > 0 Then - LtlFechaVenta.Text = ObjMovtos.DtResultados.Rows(1)("FechaVenta").ToString.ToDate.ToShortDateString() - LtlFolio.Text = ObjMovtos.DtResultados.Rows(1)("Folio").ToString - 'LtlImporte.Text = ObjMovtos.DtResultados.Rows(1)("Total").ToString.FormatoNumero(2) - 'LtlSaldo.Text = ObjMovtos.DtResultados.Rows(1)("Saldo").ToString.FormatoNumero(2) - End If - Else - GVAuxiliar.DataSource = Nothing - End If - ObjMovtos.Dispose() - GVAuxiliar.DataBind() - End Sub - - Private Sub CargaAuxiliarProveedor(CveProveedor As Integer, CveCompra As Integer) - Dim ObjMovtos As New ClsContabilidad() - If ObjMovtos.GetProveedorAuxiliar(CveProveedor, CveCompra) Then - DTDatos = ObjMovtos.DtResultados - GVAuxiliar.DataSource = ObjMovtos.DtResultados - If ObjMovtos.DtResultados.Rows.Count > 0 Then - LtlFechaVenta.Text = ObjMovtos.DtResultados.Rows(1)("FechaVenta").ToString.ToDate.ToShortDateString() - LtlFolio.Text = ObjMovtos.DtResultados.Rows(1)("Folio").ToString - LtlImporte.Text = ObjMovtos.DtResultados.Rows(1)("Total").ToString.FormatoNumero(2) - LtlSaldo.Text = ObjMovtos.DtResultados.Rows(1)("Saldo").ToString.FormatoNumero(2) - End If - Else - GVAuxiliar.DataSource = Nothing - End If - ObjMovtos.Dispose() - GVAuxiliar.DataBind() - End Sub - + GVAuxiliar.Columns(12).Visible = UsuarioActual.TienePermisoProceso(94) + + Select Case Tipo + Case "CxCClientes" + CveCliente = Request("CveCliente").ToEntero + CveVenta = Request("CveVenta").ToEntero + CargaAuxiliarClienteCxC(CveCliente, CveVenta) + LtlTipo1.Text = "Cuentas por Cobrar" + LtlTipo2.Text = "Folio de la Venta" + LtlTipo3.Text = "Fecha de la Venta" + Case "AnticiposClientes" + CveCliente = Request("CveCliente").ToEntero + CveVenta = Request("CveVenta").ToEntero + CargaAuxiliarClienteAnticipos(CveCliente, CveVenta) + LtlTipo1.Text = "Anticipo de Clientes" + LtlTipo2.Text = "Folio de la Venta" + LtlTipo3.Text = "Fecha de la Venta" + Case "CxPProveedor" + CveProveedor = Request("CveProveedor").ToEntero + CveCompra = Request("CveCompra").ToEntero + CargaAuxiliarProveedor(CveProveedor, CveCompra) + LtlTipo1.Text = "Cuentas por Pagar" + LtlTipo2.Text = "Folio de la Compra" + LtlTipo3.Text = "Fecha de la Compra" + End Select + + + UpDatos.Update() + End Sub + + Private Sub CargaAuxiliarClienteCxC(CveCliente As Integer, CveVenta As Integer) + Dim ObjMovtos As New ClsMovimientos() + If ObjMovtos.GetCxCClienteAuxiliar(CveCliente, CveVenta) Then + DTDatos = ObjMovtos.DtResultados + GVAuxiliar.DataSource = ObjMovtos.DtResultados + If ObjMovtos.DtResultados.Rows.Count > 0 Then + LtlFechaVenta.Text = ObjMovtos.DtResultados.Rows(1)("FechaVenta").ToString.ToDate.ToShortDateString() + LtlFolio.Text = ObjMovtos.DtResultados.Rows(1)("Folio").ToString + LtlImporte.Text = ObjMovtos.DtResultados.Rows(1)("Total").ToString.FormatoNumero(2) + LtlSaldo.Text = ObjMovtos.DtResultados.Rows(1)("Saldo").ToString.FormatoNumero(2) + End If + Else + GVAuxiliar.DataSource = Nothing + End If + ObjMovtos.Dispose() + GVAuxiliar.DataBind() + End Sub + + Private Sub CargaAuxiliarClienteAnticipos(CveCliente As Integer, CveVenta As Integer) + Dim ObjMovtos As New ClsMovimientos() + If ObjMovtos.GetAnticiposClienteAuxiliar(CveCliente, CveVenta) Then + DTDatos = ObjMovtos.DtResultados + GVAuxiliar.DataSource = ObjMovtos.DtResultados + If ObjMovtos.DtResultados.Rows.Count > 0 Then + LtlFechaVenta.Text = ObjMovtos.DtResultados.Rows(1)("FechaVenta").ToString.ToDate.ToShortDateString() + LtlFolio.Text = ObjMovtos.DtResultados.Rows(1)("Folio").ToString + 'LtlImporte.Text = ObjMovtos.DtResultados.Rows(1)("Total").ToString.FormatoNumero(2) + 'LtlSaldo.Text = ObjMovtos.DtResultados.Rows(1)("Saldo").ToString.FormatoNumero(2) + End If + Else + GVAuxiliar.DataSource = Nothing + End If + ObjMovtos.Dispose() + GVAuxiliar.DataBind() + End Sub + + Private Sub CargaAuxiliarProveedor(CveProveedor As Integer, CveCompra As Integer) + Dim ObjMovtos As New ClsContabilidad() + If ObjMovtos.GetProveedorAuxiliar(CveProveedor, CveCompra) Then + DTDatos = ObjMovtos.DtResultados + GVAuxiliar.DataSource = ObjMovtos.DtResultados + If ObjMovtos.DtResultados.Rows.Count > 0 Then + LtlFechaVenta.Text = ObjMovtos.DtResultados.Rows(1)("FechaVenta").ToString.ToDate.ToShortDateString() + LtlFolio.Text = ObjMovtos.DtResultados.Rows(1)("Folio").ToString + LtlImporte.Text = ObjMovtos.DtResultados.Rows(1)("Total").ToString.FormatoNumero(2) + LtlSaldo.Text = ObjMovtos.DtResultados.Rows(1)("Saldo").ToString.FormatoNumero(2) + End If + Else + GVAuxiliar.DataSource = Nothing + End If + ObjMovtos.Dispose() + GVAuxiliar.DataBind() + End Sub + Protected Sub GVAuxiliar_RowDataBound(sender As Object, e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GVAuxiliar.RowDataBound - If e.Row.RowType = DataControlRowType.DataRow Then - If e.Row.RowIndex = 0 Then - e.Row.BackColor = Drawing.Color.LightGray - e.Row.FCLiteral("LtlFechaMovto").Text = "Totales: " - e.Row.Cells(0).HorizontalAlign = HorizontalAlign.Right - e.Row.Cells(0).ColumnSpan = 2 - e.Row.Cells(1).Visible = False - e.Row.Cells(4).ColumnSpan = 3 - e.Row.Cells(5).Visible = False - e.Row.Cells(6).Visible = False - e.Row.Cells(7).Visible = False - e.Row.Cells(8).Visible = False - e.Row.Cells(12).Visible = False - ElseIf e.Row.RowIndex = 1 Then - e.Row.Cells(0).Width = Unit.Pixel(95) - e.Row.Cells(1).Width = Unit.Pixel(180) - e.Row.Cells(2).Width = Unit.Pixel(80) - e.Row.Cells(3).Width = Unit.Pixel(80) - e.Row.Cells(4).Width = Unit.Pixel(83) - e.Row.Cells(5).Width = Unit.Pixel(93) - e.Row.Cells(6).Width = Unit.Pixel(85) - e.Row.Cells(7).Width = Unit.Pixel(95) - e.Row.Cells(8).Width = Unit.Pixel(70) - End If - - e.Row.Cells(1).HorizontalAlign = HorizontalAlign.Left - e.Row.Cells(2).HorizontalAlign = HorizontalAlign.Right - e.Row.Cells(3).HorizontalAlign = HorizontalAlign.Right - e.Row.Cells(4).HorizontalAlign = HorizontalAlign.Left - - If e.Row.FCLiteral("LtlContabilizado").Text = "Si" Then - Dim Liga As String = String.Format("", e.Row.DBCampo("IdPoliza")) - e.Row.FCLiteral("LtlPoliza").Text = String.Format("{0}{1}", Liga, e.Row.DBCampo("Poliza")) - End If - - If e.Row.DBCampo("CveConceptoContable").ToEntero.Contiene(2) AndAlso e.Row.DBCampo("CvePersonal").ToEntero > 0 Then - Dim Liga As String = String.Format("", e.Row.DBCampo("CvePersonal")) - e.Row.FCLiteral("LtlConcepto").Text = String.Format("{0}{1}", Liga, e.Row.DBCampo("ConceptoContable")) - End If - - If e.Row.DBCampo("TipoReferencia").ToEntero = 1 Then - e.Row.FCHyperLink("HplReferencia").NavigateUrl = $"/Bancos/IE.aspx?CveIE={e.Row.DBCampo("CveReferencia").ToEntero}" - 'If e.Row.DBCampo("CveReferencia").ToEntero > 0 Then - ' e.Row.Cells(10).Text = "" - 'End If - ElseIf e.Row.DBCampo("TipoReferencia").ToEntero = 2 Then - Select Case Tipo - Case "CxCClientes" - e.Row.FCHyperLink("HplReferencia").NavigateUrl = $"/Ventas/Ventas.aspx?CveVenta={e.Row.DBCampo("CveReferencia").ToEntero}" - Case "CxPProveedor" - e.Row.FCHyperLink("HplReferencia").NavigateUrl = $"/Compras/Compras.aspx?CveCompra={e.Row.DBCampo("CveReferencia").ToEntero}" - End Select - End If - - 'If e.Row.DBCampo("CveConceptoContable").ToEntero.Contiene(272) AndAlso e.Row.DBCampo("CveCompraAmortizacion").ToEntero > 0 Then - ' Dim Liga As String = String.Format("", e.Row.DBCampo("CveCompraAmortizacion")) - ' e.Row.FCLiteral("LtlConcepto").Text = String.Format("{0}{1}", Liga, e.Row.DBCampo("ConceptoContable")) - 'End If - - If e.Row.DBCampo("CveConceptoContable").ToEntero.Contiene(275) AndAlso e.Row.DBCampo("CveVenta").ToEntero > 0 Then - e.Row.FCHyperLink("HplReferencia").NavigateUrl = $"/Ventas/Ventas.aspx?CveVenta={e.Row.DBCampo("CveVenta").ToEntero}" - 'Dim Liga As String = String.Format("", e.Row.DBCampo("CveVenta")) - 'e.Row.FCLiteral("LtlConcepto").Text = String.Format("{0}{1}", Liga, e.Row.DBCampo("ConceptoContable")) - - End If - - End If - End Sub - - Protected Sub GvDatos_RowDeleting(ByVal sender As Object, ByVal e As GridViewDeleteEventArgs) Handles GVAuxiliar.RowDeleting - - Dim ObjContPaq As ClsContPAQi = Nothing - Dim Conta As New ClsContabilidad() - Conta.IniciaTransacSQL() - - Dim ClavePrePoliza = GVAuxiliar.Rows(e.RowIndex).DataKey("CvePrePolizaOriginal").ToEntero - Dim IdPoliza = GVAuxiliar.Rows(e.RowIndex).DataKey("IdPoliza").ToEntero - - Dim TieneError = False - - If Not TieneError Then - If Not Conta.UpdatePrePolizasDetalleBloquear(ClavePrePoliza, False) Then - TieneError = True - End If - End If - - If Not Conta.RemovePrePolizas(ClavePrePoliza, UsuarioActual.CveEmpresa) Then - TieneError = True - End If - - If Conta.ValidacionPrePolizaCuadre(ClavePrePoliza, -1) Then - If Conta.ValorPolizaDescuadre > 0 Then - TieneError = True - End If - End If - - If Not TieneError Then - If IdPoliza > 0 Then - If UsuarioActual.Empresa.UsaAC Or UsuarioActual.Empresa.UsaContabilidad Then - ObjContPaq = New ClsContPAQi(UsuarioActual.Empresa) - ObjContPaq.IniciaTransacSQL() - - If Not ObjContPaq.RemovePoliza(IdPoliza) Then - TieneError = True - End If - - End If - End If - End If - - If Not TieneError Then - Alert("Movimiento Eliminado", TipoMensaje.MsgInformacion, "window.opener.location.reload(); window.close();") - If ObjContPaq IsNot Nothing Then ObjContPaq.Commit() - Conta.Commit() - Else - If ObjContPaq IsNot Nothing Then ObjContPaq.RollBack() - Conta.RollBack() - End If - If ObjContPaq IsNot Nothing Then ObjContPaq.Dispose() - Conta.Dispose() - CargaDatos() - End Sub - - Private Sub GVAuxiliar_RowUpdating(sender As Object, e As GridViewUpdateEventArgs) Handles GVAuxiliar.RowUpdating - Dim CvePrePoliza As Integer - Dim ObjConta As New ClsContabilidad - ObjConta.IniciaTransacSQL() - Dim CvePlantillaPoliza As Integer = 0 - Dim Importe As Decimal - Dim MsgError As String = "" - - If GVAuxiliar.Rows(e.RowIndex).DataKey("Cargo").ToDecimal > GVAuxiliar.Rows(e.RowIndex).DataKey("Abono").ToDecimal Then - Importe = GVAuxiliar.Rows(e.RowIndex).DataKey("Cargo").ToDecimal - Else - Importe = GVAuxiliar.Rows(e.RowIndex).DataKey("Abono").ToDecimal - End If - - If CveCliente > 0 Then CvePlantillaPoliza = 11 - If CveProveedor > 0 Then CvePlantillaPoliza = 2 - - CvePrePoliza = ObjConta.AddPrePolizas("Contabilidad/PopUpAuxiliar", CvePlantillaPoliza, Importe, Importe, 1, Now, "Cancelacion de Pago", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa) - - If CvePlantillaPoliza = 2 Then - If Not ObjConta.CancelarPagoCompraConAnticipo(CvePrePoliza, CveCompra, GVAuxiliar.Rows(e.RowIndex).DataKey("CveReferencia").ToEntero) Then - MsgError = "Ocurrió un error al cancelar el pago de la compra" - End If - End If - - If CvePlantillaPoliza = 11 Then - If Not ObjConta.CancelarPagoVentaConAnticipo(CvePrePoliza, CveVenta, GVAuxiliar.Rows(e.RowIndex).DataKey("CveReferencia").ToEntero) Then - MsgError = "Ocurrió un error al cancelar el pago de la venta" - End If - End If - - If MsgError = "" Then - ObjConta.Commit() - Alert("El movimiento se canceló exitosamente.") - Else - ObjConta.RollBack() - Alert(MsgError, TipoMensaje.MsgError) - End If - - - ObjConta.Dispose() - End Sub - Private Sub LnkExportar_Click(sender As Object, e As EventArgs) Handles LnkPagosClientesBancosExcel.Click - GenerarPDF("Excel") - End Sub - Private Sub LinkPDF_Click(sender As Object, e As EventArgs) Handles LnkPagosClientesBancosPDF.Click - GenerarPDF() - End Sub - Private Sub GenerarPDF(Optional Formato As String = "PDF") - 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) - - If DTDatos IsNot Nothing And DTDatos.Rows.Count > 0 Then - - 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("Tipo", LtlTipo1.Text)) - params.Add(New ReportParameter("Folio", LtlFolio.Text)) - params.Add(New ReportParameter("Fecha", LtlFechaVenta.Text)) - params.Add(New ReportParameter("Importe", LtlImporte.Text)) - params.Add(New ReportParameter("Saldo", LtlSaldo.Text)) - - If Imagen.Exists Then - params.Add(New ReportParameter("LogoPath", logouri)) - Else - params.Add(New ReportParameter("LogoPath", "")) - End If - - ImprimirPDF("Empresas\Grales\Formatos\RepAuxiliarContable.rdlc", DTDatos, params, "RepAuxiliarContable_" & LtlFolio.Text, Formato:=Formato) - - Else - Alert("No se encontró información suficiente.", TipoMensaje.MsgAdvertencia) - End If - + If e.Row.RowType = DataControlRowType.DataRow Then + If e.Row.RowIndex = 0 Then + e.Row.BackColor = Drawing.Color.LightGray + e.Row.FCLiteral("LtlFechaMovto").Text = "Totales: " + e.Row.Cells(0).HorizontalAlign = HorizontalAlign.Right + e.Row.Cells(0).ColumnSpan = 2 + e.Row.Cells(1).Visible = False + e.Row.Cells(4).ColumnSpan = 3 + e.Row.Cells(5).Visible = False + e.Row.Cells(6).Visible = False + e.Row.Cells(7).Visible = False + e.Row.Cells(8).Visible = False + e.Row.Cells(12).Visible = False + ElseIf e.Row.RowIndex = 1 Then + e.Row.Cells(0).Width = Unit.Pixel(95) + e.Row.Cells(1).Width = Unit.Pixel(180) + e.Row.Cells(2).Width = Unit.Pixel(80) + e.Row.Cells(3).Width = Unit.Pixel(80) + e.Row.Cells(4).Width = Unit.Pixel(83) + e.Row.Cells(5).Width = Unit.Pixel(93) + e.Row.Cells(6).Width = Unit.Pixel(85) + e.Row.Cells(7).Width = Unit.Pixel(95) + e.Row.Cells(8).Width = Unit.Pixel(70) + End If + + e.Row.Cells(1).HorizontalAlign = HorizontalAlign.Left + e.Row.Cells(2).HorizontalAlign = HorizontalAlign.Right + e.Row.Cells(3).HorizontalAlign = HorizontalAlign.Right + e.Row.Cells(4).HorizontalAlign = HorizontalAlign.Left + + If e.Row.FCLiteral("LtlContabilizado").Text = "Si" Then + Dim Liga As String = String.Format("", e.Row.DBCampo("IdPoliza")) + e.Row.FCLiteral("LtlPoliza").Text = String.Format("{0}{1}", Liga, e.Row.DBCampo("Poliza")) + End If + + If e.Row.DBCampo("CveConceptoContable").ToEntero.Contiene(2) AndAlso e.Row.DBCampo("CvePersonal").ToEntero > 0 Then + Dim Liga As String = String.Format("", e.Row.DBCampo("CvePersonal")) + e.Row.FCLiteral("LtlConcepto").Text = String.Format("{0}{1}", Liga, e.Row.DBCampo("ConceptoContable")) + End If + + If e.Row.DBCampo("TipoReferencia").ToEntero = 1 Then + e.Row.FCHyperLink("HplReferencia").NavigateUrl = $"/Bancos/IE.aspx?CveIE={e.Row.DBCampo("CveReferencia").ToEntero}" + 'If e.Row.DBCampo("CveReferencia").ToEntero > 0 Then + ' e.Row.Cells(10).Text = "" + 'End If + ElseIf e.Row.DBCampo("TipoReferencia").ToEntero = 2 Then + Select Case Tipo + Case "CxCClientes" + e.Row.FCHyperLink("HplReferencia").NavigateUrl = $"/Ventas/Ventas.aspx?CveVenta={e.Row.DBCampo("CveReferencia").ToEntero}" + Case "CxPProveedor" + e.Row.FCHyperLink("HplReferencia").NavigateUrl = $"/Compras/Compras.aspx?CveCompra={e.Row.DBCampo("CveReferencia").ToEntero}" + End Select + End If + + 'If e.Row.DBCampo("CveConceptoContable").ToEntero.Contiene(272) AndAlso e.Row.DBCampo("CveCompraAmortizacion").ToEntero > 0 Then + ' Dim Liga As String = String.Format("", e.Row.DBCampo("CveCompraAmortizacion")) + ' e.Row.FCLiteral("LtlConcepto").Text = String.Format("{0}{1}", Liga, e.Row.DBCampo("ConceptoContable")) + 'End If + + If e.Row.DBCampo("CveConceptoContable").ToEntero.Contiene(275) AndAlso e.Row.DBCampo("CveVenta").ToEntero > 0 Then + e.Row.FCHyperLink("HplReferencia").NavigateUrl = $"/Ventas/Ventas.aspx?CveVenta={e.Row.DBCampo("CveVenta").ToEntero}" + 'Dim Liga As String = String.Format("", e.Row.DBCampo("CveVenta")) + 'e.Row.FCLiteral("LtlConcepto").Text = String.Format("{0}{1}", Liga, e.Row.DBCampo("ConceptoContable")) + + End If + + End If + End Sub + + Protected Sub GvDatos_RowDeleting(ByVal sender As Object, ByVal e As GridViewDeleteEventArgs) Handles GVAuxiliar.RowDeleting + + Dim ObjContPaq As ClsContPAQi = Nothing + Dim Conta As New ClsContabilidad() + Conta.IniciaTransacSQL() + + Dim ClavePrePoliza = GVAuxiliar.Rows(e.RowIndex).DataKey("CvePrePolizaOriginal").ToEntero + Dim IdPoliza = GVAuxiliar.Rows(e.RowIndex).DataKey("IdPoliza").ToEntero + + Dim TieneError = False + + If Not TieneError Then + If Not Conta.UpdatePrePolizasDetalleBloquear(ClavePrePoliza, False) Then + TieneError = True + End If + End If + + If Not Conta.RemovePrePolizas(ClavePrePoliza, UsuarioActual.CveEmpresa) Then + TieneError = True + End If + + If Conta.ValidacionPrePolizaCuadre(ClavePrePoliza, -1) Then + If Conta.ValorPolizaDescuadre > 0 Then + TieneError = True + End If + End If + + If Not TieneError Then + If IdPoliza > 0 Then + If UsuarioActual.Empresa.UsaAC Or UsuarioActual.Empresa.UsaContabilidad Then + ObjContPaq = New ClsContPAQi(UsuarioActual.Empresa) + ObjContPaq.IniciaTransacSQL() + + If Not ObjContPaq.RemovePoliza(IdPoliza) Then + TieneError = True + End If + + End If + End If + End If + + If Not TieneError Then + Alert("Movimiento Eliminado", TipoMensaje.MsgInformacion, "window.opener.location.reload(); window.close();") + If ObjContPaq IsNot Nothing Then ObjContPaq.Commit() + Conta.Commit() + Else + If ObjContPaq IsNot Nothing Then ObjContPaq.RollBack() + Conta.RollBack() + End If + If ObjContPaq IsNot Nothing Then ObjContPaq.Dispose() + Conta.Dispose() + CargaDatos() + End Sub + + Private Sub GVAuxiliar_RowUpdating(sender As Object, e As GridViewUpdateEventArgs) Handles GVAuxiliar.RowUpdating + Dim CvePrePoliza As Integer + Dim ObjConta As New ClsContabilidad + ObjConta.IniciaTransacSQL() + Dim CvePlantillaPoliza As Integer = 0 + Dim Importe As Decimal + Dim MsgError As String = "" + + If GVAuxiliar.Rows(e.RowIndex).DataKey("Cargo").ToDecimal > GVAuxiliar.Rows(e.RowIndex).DataKey("Abono").ToDecimal Then + Importe = GVAuxiliar.Rows(e.RowIndex).DataKey("Cargo").ToDecimal + Else + Importe = GVAuxiliar.Rows(e.RowIndex).DataKey("Abono").ToDecimal + End If + + If CveCliente > 0 Then CvePlantillaPoliza = 11 + If CveProveedor > 0 Then CvePlantillaPoliza = 2 + + CvePrePoliza = ObjConta.AddPrePolizas("Contabilidad/PopUpAuxiliar", CvePlantillaPoliza, Importe, Importe, 1, Now, "Cancelacion de Pago", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa) + + If CvePlantillaPoliza = 2 Then + If Not ObjConta.CancelarPagoCompraConAnticipo(CvePrePoliza, CveCompra, GVAuxiliar.Rows(e.RowIndex).DataKey("CveReferencia").ToEntero) Then + MsgError = "Ocurrió un error al cancelar el pago de la compra" + End If + End If + + If CvePlantillaPoliza = 11 Then + If Not ObjConta.CancelarPagoVentaConAnticipo(CvePrePoliza, CveVenta, GVAuxiliar.Rows(e.RowIndex).DataKey("CveReferencia").ToEntero) Then + MsgError = "Ocurrió un error al cancelar el pago de la venta" + End If + End If + + If MsgError = "" Then + ObjConta.Commit() + Alert("El movimiento se canceló exitosamente.") + Else + ObjConta.RollBack() + Alert(MsgError, TipoMensaje.MsgError) + End If + + + ObjConta.Dispose() + End Sub + Private Sub LnkExportar_Click(sender As Object, e As EventArgs) Handles LnkPagosClientesBancosExcel.Click + GenerarPDF("Excel") + End Sub + Private Sub LinkPDF_Click(sender As Object, e As EventArgs) Handles LnkPagosClientesBancosPDF.Click + GenerarPDF() + End Sub + Private Sub GenerarPDF(Optional Formato As String = "PDF") + 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) + + If DTDatos IsNot Nothing And DTDatos.Rows.Count > 0 Then + + 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("Tipo", LtlTipo1.Text)) + params.Add(New ReportParameter("Folio", LtlFolio.Text)) + params.Add(New ReportParameter("Fecha", LtlFechaVenta.Text)) + params.Add(New ReportParameter("Importe", LtlImporte.Text)) + params.Add(New ReportParameter("Saldo", LtlSaldo.Text)) + + If Imagen.Exists Then + params.Add(New ReportParameter("LogoPath", logouri)) + Else + params.Add(New ReportParameter("LogoPath", "")) + End If + + ImprimirPDF("Empresas\Grales\Formatos\RepAuxiliarContable.rdlc", DTDatos, params, "RepAuxiliarContable_" & LtlFolio.Text, Formato:=Formato) + + Else + Alert("No se encontró información suficiente.", TipoMensaje.MsgAdvertencia) + End If + End Sub Property CvePrePolizaNegativa As Integer @@ -390,23 +390,37 @@ Partial Class PopUpAuxiliar Dim TieneError As Boolean = False ObjContabilidad.IniciaTransacSQL() - If ObjContabilidad.AddPrePolizasNegativa(CvePrePoliza, UsuarioActual.CveUsuario, TxtConceptoCancelacion.Text, UsuarioActual.CveEmpresa, TxtFechaCancelacion.Text.ToDate) Then - Alert("Se agrego polzia negativa correctamente.") - Else + Dim CvePrePolizaNueva As Integer = ObjContabilidad.AddPrePolizasNegativa(CvePrePoliza, UsuarioActual.CveUsuario, TxtConceptoCancelacion.Text, UsuarioActual.CveEmpresa, TxtFechaCancelacion.Text.ToDate) + + If Not CvePrePolizaNueva > 0 Then + + TieneError = True End If - If TieneError Then - ObjContabilidad.RollBack() - Else + If Not TieneError Then + ObjContabilidad.Commit() + Dim Str As New StringBuilder + Str.Append("Se agrego la póliza de cancelación correctamente.
") RegistraScript(" $('#DivCancelar').modal('hide'); ") - CargaDatos() + If UsuarioActual.Empresa.Funcionalidad(200) = "1" Then + If ObjContabilidad.ContabilizarPrePoliza(CvePrePolizaNueva, UsuarioActual.CveUsuario, UsuarioActual.Empresa) Then + Str.AppendFormat("Ver Poliza", ObjContabilidad.ContaIdPoliza) + + End If + End If + Alert(Str.ToString) + Else + ObjContabilidad.RollBack() + End If - ObjContabilidad.Dispose() + ObjContabilidad.Dispose() + CargaDatos() + End Sub @@ -424,4 +438,4 @@ Partial Class PopUpAuxiliar -End Class +End Class diff --git a/Ventas/Ventas.aspx b/Ventas/Ventas.aspx index 83040ea12..f4a3c6cc4 100644 --- a/Ventas/Ventas.aspx +++ b/Ventas/Ventas.aspx @@ -1419,7 +1419,7 @@ T.C.: - + diff --git a/Ventas/Ventas.aspx.vb b/Ventas/Ventas.aspx.vb index f4a9a4008..6566789d8 100644 --- a/Ventas/Ventas.aspx.vb +++ b/Ventas/Ventas.aspx.vb @@ -20758,13 +20758,19 @@ Partial Class Ventas CalculaTotalesVenta(True) + 'condicióon, en la que se verifica que el importe total de aplicación de la nota de crédito sea igual al del total de la nota de crédito, ej. saldo de la factura 1000.01 y la nota de crédito se generó po 1000.00 If Not AplicaNCMasiva Then Dim TT As Decimal = TxtNCImporte.Text.ToDecimal If TT > TxtTotal.Text.ToDecimal Then TT = TxtTotal.Text.ToDecimal CargaNCDT(CveVenta, TT) - End If + End If + 'verifica el tipo de cambio que se actualice + If DdlMoneda.SelectedValue <> "1" Then + TxtTipoCambio.Text = GlobalTipoCambio(Now).ToString + End If + LblTCValuacion.Visible = False UpPS.Update() LBNotaCredito.Visible = False From c7254767152a8be12587a79da5b8d334f293c350 Mon Sep 17 00:00:00 2001 From: Raul Pimienta Date: Sat, 24 Aug 2019 13:14:31 -0700 Subject: [PATCH 06/38] Registro de prepolizas detalle en 0 cuando se toca almacen en Compras --- Compras/Compras.aspx.vb | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/Compras/Compras.aspx.vb b/Compras/Compras.aspx.vb index 69fe82bf1..268ef5444 100644 --- a/Compras/Compras.aspx.vb +++ b/Compras/Compras.aspx.vb @@ -4225,6 +4225,12 @@ Partial Class Compras_Compras Else CveConceptoContableAlmacen = 225 End If + + 'Condiciones para los casos de facturas que son en 0 pero que se utiliza el almacen + ElseIf OCVinculada AndAlso Not (CveImportacion > 0 Or CveFlete > 0) AndAlso Not DdlTipoComprobante.SelectedValue.Contiene("NC", "DEV", "Ant") Then + CveConceptoContableAlmacen = DdlOCVinculaInv.SelectedValue.ToEntero + ElseIf (CveImportacion > 0 Or CveFlete > 0) AndAlso Not DdlTipoComprobante.SelectedValue.Contiene("NC", "DEV", "Ant") Then + CveConceptoContableAlmacen = CveConceptoContableAlmacen End If End If @@ -6228,15 +6234,13 @@ Partial Class Compras_Compras If ContienePSNeteoBonif Then importeMovimiento = TmpDT.SUM(If(ListaDocumentos IsNot Nothing AndAlso ListaDocumentos.Count > 0 AndAlso ArrAnticipos IsNot Nothing AndAlso ArrAnticipos.Count > 0 AndAlso TxtTotal.Text.ToDecimal = 0, "ImporteSinImpuestos", "Total"), $"ISNULL(TipoAF,0) <> 2 AND ISNULL(CveAlmacen,0) = 0 AND ISNULL(AplicaCostoIndirecto,0) <> 1 ").ToString.ToDecimal importeMN = importeMovimiento * tipoCambioActual * Multiplicador - If importeMovimiento <> 0 Then - Dim IdCtaContableDescCompra As Integer = UsuarioActual.Empresa.Funcionalidad(405).ToEntero - If ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, importeMovimiento, Referencia, 259, Concepto, FechaMovimiento, IdCtaContableDescCompra, -1, CveCompra:=CveCompra, CveProveedor:=CveProveedorConcepto, ImporteMX:=importeMN, ImporteME:=If(tipoCambioActual = 1, 0, importeMovimiento), CveCuenta:=CveCuenta, TipoCambio:=tipoCambioActual, Contabilizable:=SeContabiliza) Then - If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, -importeMovimiento, Referencia, 259, Concepto, FechaMovimiento, IdCtaContableDescCompra, -1, CveCompra:=CveCompra, CveProveedor:=CveProveedorConcepto, ImporteMX:=-importeMN, ImporteME:=If(tipoCambioActual = 1, 0, -importeMovimiento), CveCuenta:=CveCuenta, TipoCambio:=tipoCambioActual, Contabilizable:=SeContabiliza) Then - ErrorPrepoliza = True - End If - Else + Dim IdCtaContableDescCompra As Integer = UsuarioActual.Empresa.Funcionalidad(405).ToEntero + If ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, importeMovimiento, Referencia, 259, Concepto, FechaMovimiento, IdCtaContableDescCompra, -1, CveCompra:=CveCompra, CveProveedor:=CveProveedorConcepto, ImporteMX:=importeMN, ImporteME:=If(tipoCambioActual = 1, 0, importeMovimiento), CveCuenta:=CveCuenta, TipoCambio:=tipoCambioActual, Contabilizable:=SeContabiliza) Then + If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, -importeMovimiento, Referencia, 259, Concepto, FechaMovimiento, IdCtaContableDescCompra, -1, CveCompra:=CveCompra, CveProveedor:=CveProveedorConcepto, ImporteMX:=-importeMN, ImporteME:=If(tipoCambioActual = 1, 0, -importeMovimiento), CveCuenta:=CveCuenta, TipoCambio:=tipoCambioActual, Contabilizable:=SeContabiliza) Then ErrorPrepoliza = True End If + Else + ErrorPrepoliza = True End If End If From c37e5cb0d965c5e729cc5a8a6c3d4de8ffff96f4 Mon Sep 17 00:00:00 2001 From: janeth arvizu Date: Mon, 26 Aug 2019 09:49:58 -0700 Subject: [PATCH 07/38] Filtro de "Corte A" en Formatos de RepCxC y Detalle --- CxC/RepCxC.aspx.vb | 4 ++-- CxC/RepCxCDetalle.aspx.vb | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/CxC/RepCxC.aspx.vb b/CxC/RepCxC.aspx.vb index 73cac2e84..34a9b77b2 100644 --- a/CxC/RepCxC.aspx.vb +++ b/CxC/RepCxC.aspx.vb @@ -694,7 +694,7 @@ Partial Class RepCxC Dim Registro = If(DdlUsuario.SelectedValue = "-1", "", $" Registró: {DdlUsuario.SelectedItem.Text}") Dim Responsable = If(DdlResponsable.SelectedValue = "-1", "", $" Responsable: {DdlResponsable.SelectedItem.Text}") Dim EstatusCob = If(DdlCobranzaEstatus.SelectedValue = "-1", "", $" Estatus Cobranza: {DdlCobranzaEstatus.SelectedItem.Text}") - 'Dim CorteA As String = If(txtCorteA.Text = "31/12/2018", "", $" Corte A: {txtCorteA.Text}") + Dim CorteA As String = If(txtCorteA.Text = "31/12/2019", "", $" Corte A: {txtCorteA.Text}") Dim EstatusCli = If(DdlEstatusCliente.SelectedValue = "-1", "", $" Clientes: {DdlEstatusCliente.SelectedItem.Text}") Dim ClasificacionCli = If(DdlClienteClasificacion.SelectedValue = "-1", "", $" Clasificación Cliente: {DdlClienteClasificacion.SelectedItem.Text}") @@ -725,7 +725,7 @@ Partial Class RepCxC params.Add(New ReportParameter("UsuarioImprimio", UsuarioActual.Nombre)) params.Add(New ReportParameter("FechaImpresion", Now.ToDateTime.ToShortDateString)) params.Add(New ReportParameter("Grupo", DdlGrupo.SelectedItem.Text)) - params.Add(New ReportParameter("AgrupadoPor", $"{Cliente}{Sucursal}{Grupo}{Vendedor}{FechaIn}{FechaFn}{Registro}{Responsable}{TipoDocto}{EstatusCob}{FVI}{FVF}{EstatusCli}{ClasificacionCli}")) + params.Add(New ReportParameter("AgrupadoPor", $"{Cliente}{Sucursal}{Grupo}{Vendedor}{FechaIn}{FechaFn}{Registro}{Responsable}{TipoDocto}{EstatusCob}{FVI}{FVF}{EstatusCli}{ClasificacionCli}{CorteA}")) params.Add(New ReportParameter("TituloReporte", TituloReporte)) params.Add(New ReportParameter("CantColumnas", CantidadColumnas.ToString)) diff --git a/CxC/RepCxCDetalle.aspx.vb b/CxC/RepCxCDetalle.aspx.vb index 86922f5fa..d32b14256 100644 --- a/CxC/RepCxCDetalle.aspx.vb +++ b/CxC/RepCxCDetalle.aspx.vb @@ -833,7 +833,7 @@ Partial Class RepCxCDetalle Dim Registro = If(DdlUsuario.SelectedValue = "-1", "", $" Registró: {DdlUsuario.SelectedItem.Text}") Dim Responsable = If(DdlResponsable.SelectedValue = "-1", "", $" Responsable: {DdlResponsable.SelectedItem.Text}") Dim EstatusCob = If(DdlCobranzaEstatusFiltro.SelectedValue = "-1", "", $" Estatus Cobranza: {DdlCobranzaEstatusFiltro.SelectedItem.Text}") - 'Dim CorteA As String = If(txtCorteA.Text = "31/12/2018", "", $" Corte A: {txtCorteA.Text}") + Dim CorteA As String = If(txtCorteA.Text = "31/12/2019", "", $" Corte A: {txtCorteA.Text}") Dim ClasificacionCli = If(DdlClienteClasificacion.SelectedValue = "-1", "", $" Clasificación Cliente: {DdlClienteClasificacion.SelectedItem.Text}") Dim TituloReporte As String = "REPORTE DE CUENTAS POR COBRAR DEL CLIENTE CON DETALLE" @@ -850,7 +850,7 @@ Partial Class RepCxCDetalle params.Add(New ReportParameter("FechaFin", FechaF)) params.Add(New ReportParameter("UsuarioImprimio", UsuarioActual.Nombre)) params.Add(New ReportParameter("FechaImpresion", Now.ToDateTime.ToShortDateString)) - params.Add(New ReportParameter("AgrupadoPor", $"{Cliente}{Sucursal}{Grupo}{Vendedor}{FechaIn}{FechaFn}{Registro}{Responsable}{TipoDocto}{EstatusCob}{FVI}{FVF}{ClasificacionCli}")) + params.Add(New ReportParameter("AgrupadoPor", $"{Cliente}{Sucursal}{Grupo}{Vendedor}{FechaIn}{FechaFn}{Registro}{Responsable}{TipoDocto}{EstatusCob}{FVI}{FVF}{ClasificacionCli}{CorteA}")) params.Add(New ReportParameter("TituloReporte", TituloReporte)) If Imagen.Exists Then From f89a7b7c9da3ab1536acc0f2192e18a444f4d2cb Mon Sep 17 00:00:00 2001 From: Raul Pimienta Date: Mon, 26 Aug 2019 11:05:43 -0700 Subject: [PATCH 08/38] Cambios en el reporte de compras - almacen AutoConta solo con funcionalidad 200, se quito el UsaContabilidad --- App_Code/Modelos.vb | 2 +- Bancos/Devoluciones.aspx.cs | 2 +- Bancos/IE.aspx.vb | 4 ++-- Bancos/PagoAcreedor.aspx.cs | 4 ++-- Bancos/PagoDeudor.aspx.cs | 4 ++-- Bancos/PopIECompras.aspx.vb | 2 +- Bancos/PopIEVentas.aspx.vb | 2 +- Bancos/PrestamoPersonal.aspx.cs | 4 ++-- Bancos/ProveedoresAbonar.aspx.vb | 2 +- Bancos/Transferencias.aspx.vb | 2 +- Compras/Compras.aspx.vb | 4 ++-- Compras/ReembolsosComprobaciones.aspx.vb | 2 +- Compras/RepNotasCredito.aspx.vb | 2 +- Compras/RepRembolsoComprobaciones.aspx.vb | 2 +- Inventarios/RepAlmacenCompras.aspx | 7 +++++-- Inventarios/RepAlmacenCompras.aspx.vb | 7 +++++-- Ventas/ClientesAbonar.aspx.vb | 2 +- Ventas/Ventas.aspx.vb | 2 +- 18 files changed, 31 insertions(+), 25 deletions(-) diff --git a/App_Code/Modelos.vb b/App_Code/Modelos.vb index 58a1b50f4..2f8659c84 100644 --- a/App_Code/Modelos.vb +++ b/App_Code/Modelos.vb @@ -2746,7 +2746,7 @@ Namespace Modelos End If 'ContPAQ El movimiento 1 es el de Venta - If UsuarioActual.Empresa.Funcionalidad(200) = "1" And UsuarioActual.Empresa.UsaContabilidad = True And Not ErrorPrepoliza Then + If UsuarioActual.Empresa.Funcionalidad(200) = "1" AndAlso Not ErrorPrepoliza Then If idCuentaContabilizacion > 0 Then If ObjConta.ContabilizarPrePoliza(ObjFactura.CvePrePoliza, ObjFactura.CveUsuario, UsuarioActual.Empresa, ObjConta:=objContPaqi) Then Else diff --git a/Bancos/Devoluciones.aspx.cs b/Bancos/Devoluciones.aspx.cs index 6d93ef6e8..451c90e33 100644 --- a/Bancos/Devoluciones.aspx.cs +++ b/Bancos/Devoluciones.aspx.cs @@ -467,7 +467,7 @@ public partial class Bancos_Devoluciones : ClsPaginas } //CONTABILIZA - if (UsuarioActual.Empresa.Funcionalidad(200).Equals("1") && MsgError.Equals("") && UsuarioActual.Empresa.UsaContabilidad) + if (UsuarioActual.Empresa.Funcionalidad(200).Equals("1") && MsgError.Equals("")) { if (IDCtaContableDevolucion > 0 && IDCtaContableBancos > 0) { diff --git a/Bancos/IE.aspx.vb b/Bancos/IE.aspx.vb index fe5ce8ef2..8f1ef4435 100644 --- a/Bancos/IE.aspx.vb +++ b/Bancos/IE.aspx.vb @@ -3049,7 +3049,7 @@ Partial Class Bancos_IE 'El movimiento 1 es el de Venta 'Conta SIG - If UsuarioActual.Empresa.Funcionalidad(200) = "1" And MsgError = "" And UsuarioActual.Empresa.UsaContabilidadSIG Then + If UsuarioActual.Empresa.Funcionalidad(200) = "1" AndAlso MsgError = "" Then If CveCuentaBeneficiario > 0 And CveCuentaConta > 0 Then If ObjMov.ContabilizarPrePolizaSIG(CvePrePoliza, UsuarioActual.CveUsuario, UsuarioActual.Empresa) Then IDPoliza = ObjMov.ContaIdPoliza @@ -3067,7 +3067,7 @@ Partial Class Bancos_IE End If 'Conta ContPAQ - If UsuarioActual.Empresa.Funcionalidad(200) = "1" And MsgError = "" And UsuarioActual.Empresa.UsaContabilidad Then + 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 diff --git a/Bancos/PagoAcreedor.aspx.cs b/Bancos/PagoAcreedor.aspx.cs index ee352f560..874e91841 100644 --- a/Bancos/PagoAcreedor.aspx.cs +++ b/Bancos/PagoAcreedor.aspx.cs @@ -527,7 +527,7 @@ public partial class Bancos_PagoAcreedor : ClsPaginas } //CONTABILIZA - if (UsuarioActual.Empresa.Funcionalidad(200).Equals("1") && MsgError.Equals("") && UsuarioActual.Empresa.UsaContabilidad) + if (UsuarioActual.Empresa.Funcionalidad(200).Equals("1") && MsgError.Equals("")) { if (IDCtaContableAcreedor > 0 && IDCtaContableBancos > 0) { @@ -801,7 +801,7 @@ public partial class Bancos_PagoAcreedor : ClsPaginas } //CONTABILIZA - if (UsuarioActual.Empresa.Funcionalidad(200).Equals("1") && MsgError.Equals("") && UsuarioActual.Empresa.UsaContabilidad) + if (UsuarioActual.Empresa.Funcionalidad(200).Equals("1") && MsgError.Equals("") ) { if (IDCtaContableAcreedor > 0 && IDCtaContableBancos > 0) { diff --git a/Bancos/PagoDeudor.aspx.cs b/Bancos/PagoDeudor.aspx.cs index 73435bc66..661fd2abd 100644 --- a/Bancos/PagoDeudor.aspx.cs +++ b/Bancos/PagoDeudor.aspx.cs @@ -447,7 +447,7 @@ public partial class Bancos_PagoDeudor : ClsPaginas bool AutoConta = UsuarioActual.Empresa.Funcionalidad(200).Equals("1"); if (UsuarioActual.CveEmpresa == 119) AutoConta = false; - if (AutoConta && MsgError.Equals("") && UsuarioActual.Empresa.UsaContabilidad) + if (AutoConta && MsgError.Equals("")) { //JJMQ:20190103: Cambio la siguiente linea porque esta validando siempre una complementaria aunque el movto sea dlls //if (IDCtaContableDeudorPrestamo > 0 && IDCtaContableBancosPrestamo > 0 && IDCtaContableBancosComplementariaPrestamo > 0 && IDCtaContableDeudorCompPrestamo > 0) @@ -838,7 +838,7 @@ public partial class Bancos_PagoDeudor : ClsPaginas bool AutoConta = UsuarioActual.Empresa.Funcionalidad(200).Equals("1"); if (UsuarioActual.CveEmpresa == 119) AutoConta = false; - if (AutoConta && MsgError.Equals("") && UsuarioActual.Empresa.UsaContabilidad) + if (AutoConta && MsgError.Equals("")) { if (IDCtaContableDeudor > 0 && IDCtaContableBancos > 0) { diff --git a/Bancos/PopIECompras.aspx.vb b/Bancos/PopIECompras.aspx.vb index 683e35fd7..77d0c3498 100644 --- a/Bancos/PopIECompras.aspx.vb +++ b/Bancos/PopIECompras.aspx.vb @@ -3090,7 +3090,7 @@ Partial Class Bancos_PopIECompras End If 'Conta ContPAQ - If UsuarioActual.Empresa.Funcionalidad(200) = "1" And MsgError = "" AndAlso UsuarioActual.Empresa.UsaContabilidad Then + If UsuarioActual.Empresa.Funcionalidad(200) = "1" AndAlso MsgError = "" Then If idCuentaContabilizacion > 0 Then If ObjMov.ContabilizarPrePoliza(CvePrePoliza, UsuarioActual.CveUsuario, UsuarioActual.Empresa) Then IdPoliza = ObjMov.ContaIdPoliza diff --git a/Bancos/PopIEVentas.aspx.vb b/Bancos/PopIEVentas.aspx.vb index 9715941cf..c19aea954 100644 --- a/Bancos/PopIEVentas.aspx.vb +++ b/Bancos/PopIEVentas.aspx.vb @@ -3390,7 +3390,7 @@ Partial Class Bancos_PopIEVentas End If 'Conta ContPAQ - If UsuarioActual.Empresa.Funcionalidad(200) = "1" And MsgError = "" AndAlso UsuarioActual.Empresa.UsaContabilidad Then + If UsuarioActual.Empresa.Funcionalidad(200) = "1" And MsgError = "" Then If idCuentaContabilizacion > 0 Then If ObjMov.ContabilizarPrePoliza(CvePrePoliza, UsuarioActual.CveUsuario, UsuarioActual.Empresa) Then diff --git a/Bancos/PrestamoPersonal.aspx.cs b/Bancos/PrestamoPersonal.aspx.cs index 75491b8fa..60cd167ef 100644 --- a/Bancos/PrestamoPersonal.aspx.cs +++ b/Bancos/PrestamoPersonal.aspx.cs @@ -366,7 +366,7 @@ public partial class Bancos_PrestamoPersonal : ClsPaginas } //CONTABILIZA - if (UsuarioActual.Empresa.Funcionalidad(200).Equals("1") && MsgError.Equals("") && UsuarioActual.Empresa.UsaContabilidad) + if (UsuarioActual.Empresa.Funcionalidad(200).Equals("1") && MsgError.Equals("") ) { if (IDCtaContablePrestamo > 0 && IDCtaContableBancos > 0) { @@ -626,7 +626,7 @@ public partial class Bancos_PrestamoPersonal : ClsPaginas } //CONTABILIZA - if (UsuarioActual.Empresa.Funcionalidad(200).Equals("1") && MsgError.Equals("") && UsuarioActual.Empresa.UsaContabilidad) + if (UsuarioActual.Empresa.Funcionalidad(200).Equals("1") && MsgError.Equals("") ) { if (IDCtaContablePrestamo > 0 && IDCtaContableBancosPrestamo > 0) { diff --git a/Bancos/ProveedoresAbonar.aspx.vb b/Bancos/ProveedoresAbonar.aspx.vb index 37a12c668..1f8d4b125 100644 --- a/Bancos/ProveedoresAbonar.aspx.vb +++ b/Bancos/ProveedoresAbonar.aspx.vb @@ -1823,7 +1823,7 @@ Partial Class Bancos_ProveedoresAbonar End If 'Conta ContPAQ - If UsuarioActual.Empresa.Funcionalidad(200) = "1" And MsgError = "" And UsuarioActual.Empresa.UsaContabilidad Then + If UsuarioActual.Empresa.Funcionalidad(200) = "1" AndAlso MsgError = "" Then If idCuentaContabilizacion > 0 Then If ObjMov.ContabilizarPrePoliza(CvePrePoliza, UsuarioActual.CveUsuario, UsuarioActual.Empresa, ObjConta:=ObjConta) Then ' Alert(alertaContabilizacion, ModExtensiones.TipoMensaje.MsgInformacion) diff --git a/Bancos/Transferencias.aspx.vb b/Bancos/Transferencias.aspx.vb index bbb322d80..7ccdbb882 100644 --- a/Bancos/Transferencias.aspx.vb +++ b/Bancos/Transferencias.aspx.vb @@ -412,7 +412,7 @@ Partial Class Bancos_Transferencias End If 'Conta ContPAQ - If UsuarioActual.Empresa.Funcionalidad(200) = "1" And MsgError = "" AndAlso UsuarioActual.Empresa.UsaContabilidad Then + If UsuarioActual.Empresa.Funcionalidad(200) = "1" And MsgError = "" Then If (IdCtaContableOrigen > 0 AndAlso IdCtaContableDestino > 0) OrElse (IdCtaContableDestino > 0 AndAlso Opcion = 1) Then If ObjMov.ContabilizarPrePoliza(CvePrePoliza, UsuarioActual.CveUsuario, UsuarioActual.Empresa, Fecha:=TxtFechaDocumento.Text) Then diff --git a/Compras/Compras.aspx.vb b/Compras/Compras.aspx.vb index 268ef5444..ee9dc3df8 100644 --- a/Compras/Compras.aspx.vb +++ b/Compras/Compras.aspx.vb @@ -7009,7 +7009,7 @@ Partial Class Compras_Compras End If 'Conta ContPAQ - If ObjContaAC IsNot Nothing AndAlso Not ErrorPrepoliza AndAlso Not ErrorPrepolizaDescuadre AndAlso UsuarioActual.Empresa.UsaContabilidad Then + If ObjContaAC IsNot Nothing AndAlso Not ErrorPrepoliza AndAlso Not ErrorPrepolizaDescuadre AndAlso UsuarioActual.Empresa.Funcionalidad(200).ToString = "1" Then If idCuentaContabilizacion > 0 Then If ObjConta.ContabilizarPrePoliza(CvePrePoliza, UsuarioActual.CveUsuario, UsuarioActual.Empresa, ObjConta:=ObjContaAC) Then ' Alert(alertaContabilizacion, ModExtensiones.TipoMensaje.MsgInformacion) @@ -8575,7 +8575,7 @@ Partial Class Compras_Compras End If 'Conta ContPAQ - If UsuarioActual.Empresa.Funcionalidad(200) = "1" And ErrorMovtosCxP = 0 And UsuarioActual.Empresa.UsaContabilidad Then + If UsuarioActual.Empresa.Funcionalidad(200) = "1" AndAlso ErrorMovtosCxP = 0 Then If idCuentaContabilizacion > 0 Then If ObjConta.ContabilizarPrePoliza(CvePrePolizaNueva, UsuarioActual.CveUsuario, UsuarioActual.Empresa) Then alertaContabilizacion.AppendFormat("{1}<\a>
", ObjConta.ContaIdPoliza, ObjConta.ContaFolio) diff --git a/Compras/ReembolsosComprobaciones.aspx.vb b/Compras/ReembolsosComprobaciones.aspx.vb index a419f00fb..5f9f37585 100644 --- a/Compras/ReembolsosComprobaciones.aspx.vb +++ b/Compras/ReembolsosComprobaciones.aspx.vb @@ -1295,7 +1295,7 @@ Partial Class Compras_ReembolsosComprobaciones End If 'Conta ContPAQ AUTOMATICA - If UsuarioActual.Empresa.Funcionalidad(200) = "1" And MsgError.Trim = "" AndAlso UsuarioActual.Empresa.UsaContabilidad Then + If UsuarioActual.Empresa.Funcionalidad(200) = "1" AndAlso MsgError.Trim = "" Then If CvePrePolizaIERegistrado > 0 Then If IdCtaPersonal > 0 Or DdlCajaChica.Visible Then If IdCtaProveedor > 0 Then diff --git a/Compras/RepNotasCredito.aspx.vb b/Compras/RepNotasCredito.aspx.vb index 5605a94e5..c04fd2c3e 100644 --- a/Compras/RepNotasCredito.aspx.vb +++ b/Compras/RepNotasCredito.aspx.vb @@ -200,7 +200,7 @@ Partial Class Compras_RepNotasCredito End If End If - If UsuarioActual.Empresa.Funcionalidad(200) = "1" And MsgError = "" And UsuarioActual.Empresa.UsaContabilidad Then + If UsuarioActual.Empresa.Funcionalidad(200) = "1" AndAlso MsgError = "" Then If ObjConta.ContabilizarPrePoliza(CvePrePoliza, UsuarioActual.CveUsuario, UsuarioActual.Empresa) Then If MensajeAlert.ToString = "" Then MensajeAlert.AppendFormat("Los siguientes movimientos fueron saldados correctamente:
") diff --git a/Compras/RepRembolsoComprobaciones.aspx.vb b/Compras/RepRembolsoComprobaciones.aspx.vb index 86983e786..50fd8aed0 100644 --- a/Compras/RepRembolsoComprobaciones.aspx.vb +++ b/Compras/RepRembolsoComprobaciones.aspx.vb @@ -198,7 +198,7 @@ Partial Class Compras_RepRembolsoComprobaciones Msg.AppendFormat("Se unificaron todas las compras con éxito") End If - If UsuarioActual.Empresa.UsaContabilidad AndAlso Not TieneError Then + If UsuarioActual.Empresa.Funcionalidad(200).ToString = "1" AndAlso Not TieneError Then If ObjAC Is Nothing Then TieneError = True End If diff --git a/Inventarios/RepAlmacenCompras.aspx b/Inventarios/RepAlmacenCompras.aspx index 9c4f2ba8b..cf906aac8 100644 --- a/Inventarios/RepAlmacenCompras.aspx +++ b/Inventarios/RepAlmacenCompras.aspx @@ -95,15 +95,18 @@ - + - + + + + diff --git a/Inventarios/RepAlmacenCompras.aspx.vb b/Inventarios/RepAlmacenCompras.aspx.vb index c52884fa1..8cf23b1a7 100644 --- a/Inventarios/RepAlmacenCompras.aspx.vb +++ b/Inventarios/RepAlmacenCompras.aspx.vb @@ -43,12 +43,15 @@ Partial Class Inventarios_RepAlmacenCompras #Region " CARGA VALORES INICIALES " Private Sub CargaPermisos() Dim TienePermisoImportes As Boolean = UsuarioActual.TienePermisoProceso(201) - GvDatos.Columns(6).Visible = TienePermisoImportes + GvDatos.Columns(3).Visible = TienePermisoImportes GvDatos.Columns(7).Visible = TienePermisoImportes GvDatos.Columns(8).Visible = TienePermisoImportes + GvDatos.Columns(9).Visible = TienePermisoImportes + GvDatos.Columns(10).Visible = TienePermisoImportes + GvDatos.Columns(11).Visible = TienePermisoImportes If TienePermisoImportes Then - CabeceraAlmacen.Width = "35%" + CabeceraAlmacen.Width = "36%" CabeceraCompra.Width = "65%" Else CabeceraAlmacen.Width = "45%" diff --git a/Ventas/ClientesAbonar.aspx.vb b/Ventas/ClientesAbonar.aspx.vb index 01435d4c2..79ce2c26b 100644 --- a/Ventas/ClientesAbonar.aspx.vb +++ b/Ventas/ClientesAbonar.aspx.vb @@ -1538,7 +1538,7 @@ Partial Class Ventas_ClientesAbonar End If 'Conta ContPAQ - If UsuarioActual.Empresa.Funcionalidad(200) = "1" And MsgError = "" AndAlso UsuarioActual.Empresa.UsaContabilidad Then + If UsuarioActual.Empresa.Funcionalidad(200) = "1" AndAlso MsgError = "" Then If idCuentaContabilizacion > 0 Then If ObjMov.ContabilizarPrePoliza(CvePrePoliza, UsuarioActual.CveUsuario, UsuarioActual.Empresa) Then IDPoliza = ObjMov.ContaIdPoliza diff --git a/Ventas/Ventas.aspx.vb b/Ventas/Ventas.aspx.vb index 6566789d8..eb95bd40a 100644 --- a/Ventas/Ventas.aspx.vb +++ b/Ventas/Ventas.aspx.vb @@ -6572,7 +6572,7 @@ Partial Class Ventas AutoConta = False End If - If AutoConta And UsuarioActual.Empresa.UsaContabilidad = True Then + If AutoConta Then If idCuentaContabilizacion > 0 Then If ObjConta.ContabilizarPrePoliza(ObjFactura.CvePrePoliza, ObjFactura.CveUsuario, UsuarioActual.Empresa, ObjConta:=ObjContPaq) Then From 5e3b8c184347d9a89258d11e13443c579a4667e5 Mon Sep 17 00:00:00 2001 From: Raul Pimienta Date: Mon, 26 Aug 2019 11:09:31 -0700 Subject: [PATCH 09/38] AutoContabilidad en IE --- Bancos/IE.aspx.vb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Bancos/IE.aspx.vb b/Bancos/IE.aspx.vb index 69d028c4a..108ab78d3 100644 --- a/Bancos/IE.aspx.vb +++ b/Bancos/IE.aspx.vb @@ -3064,7 +3064,7 @@ Partial Class Bancos_IE 'El movimiento 1 es el de Venta 'Conta SIG - If UsuarioActual.Empresa.Funcionalidad(200) = "1" And MsgError = "" And UsuarioActual.Empresa.UsaContabilidadSIG Then + If UsuarioActual.Empresa.Funcionalidad(200) = "1" AndAlso MsgError = "" AndAlso UsuarioActual.Empresa.UsaContabilidadSIG Then If CveCuentaBeneficiario > 0 And CveCuentaConta > 0 Then If ObjMov.ContabilizarPrePolizaSIG(CvePrePoliza, UsuarioActual.CveUsuario, UsuarioActual.Empresa) Then IDPoliza = ObjMov.ContaIdPoliza @@ -3082,7 +3082,7 @@ Partial Class Bancos_IE End If 'Conta ContPAQ - If UsuarioActual.Empresa.Funcionalidad(200) = "1" And MsgError = "" And UsuarioActual.Empresa.UsaContabilidad Then + 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 From f6dc07e7f17df2fdcec2069b1b7dadef25aa62c4 Mon Sep 17 00:00:00 2001 From: janeth arvizu Date: Mon, 26 Aug 2019 11:22:11 -0700 Subject: [PATCH 10/38] =?UTF-8?q?Correcci=C3=B3n=20en=20datos=20de=20Pagar?= =?UTF-8?q?=C3=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Empresas/144/Formatos/Factura.rdlc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Empresas/144/Formatos/Factura.rdlc b/Empresas/144/Formatos/Factura.rdlc index a8f6d9968..6f7296e9b 100644 --- a/Empresas/144/Formatos/Factura.rdlc +++ b/Empresas/144/Formatos/Factura.rdlc @@ -1209,7 +1209,7 @@ - ). Valor recibido a mi (nuestra) entera satisfacción. La falta de pago de éste documento a su vencimiento dará derecho a Soluciones en Telemedición JAR SA de CV 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 PAOLA CASTILLO VALENZUELA 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 @@ -468,7 +468,7 @@ - =iif(Fields!CveVenta.Value = "", "#67809F", "Transparent") + =iif(Fields!CveVenta.Value = "",IIf(Fields!Gpo.Value = "","#67809F","#cccccc"), "Transparent") 2pt 2pt 2pt @@ -490,7 +490,7 @@ 8pt =iif(Fields!CveVenta.Value = "", "Bold", "Normal") dd/MM/yyyy - =iif(Fields!CveVenta.Value= "", "White", "Black") + =iif(Fields!CveVenta.Value = "",IIf(Fields!Gpo.Value = "","White","#67809F"), "Black") @@ -504,7 +504,7 @@ - =iif(Fields!CveVenta.Value = "", "#67809F", "Transparent") + =iif(Fields!CveVenta.Value = "",IIf(Fields!Gpo.Value = "","#67809F","#cccccc"), "Transparent") 2pt 2pt 2pt @@ -525,7 +525,7 @@ @@ -537,7 +537,7 @@ - =iif(Fields!CveVenta.Value = "", "#67809F", "Transparent") + =iif(Fields!CveVenta.Value = "",IIf(Fields!Gpo.Value = "","#67809F","#cccccc"), "Transparent") 2pt 2pt 2pt @@ -555,11 +555,11 @@ - =Fields!Nombre.Value + =IIf(Fields!Nombre.Value = "", IIf(Fields!Gpo.Value = "", Fields!Moneda.Value, Fields!Gpo.Value), Fields!Nombre.Value) @@ -571,13 +571,14 @@ - =iif(Fields!CveVenta.Value = "", "#67809F", "Transparent") + =iif(Fields!CveVenta.Value = "",IIf(Fields!Gpo.Value = "","#67809F","#cccccc"), "Transparent") 2pt 2pt 2pt 2pt + true @@ -592,7 +593,7 @@ @@ -606,7 +607,7 @@ - =iif(Fields!CveVenta.Value = "", "#67809F", "Transparent") + =iif(Fields!CveVenta.Value = "",IIf(Fields!Gpo.Value = "","#67809F","#cccccc"), "Transparent") 2pt 2pt 2pt @@ -629,7 +630,7 @@ 8pt =iif(Fields!CveVenta.Value = "", "Bold", "Normal") f2 - =iif(Fields!CveVenta.Value= "", "White", "Black") + =iif(Fields!CveVenta.Value = "",IIf(Fields!Gpo.Value = "","White","#67809F"), "Black") @@ -641,7 +642,7 @@ - =iif(Fields!CveVenta.Value = "", "#67809F", "Transparent") + =iif(Fields!CveVenta.Value = "",IIf(Fields!Gpo.Value = "","#67809F","#cccccc"), "Transparent") 2pt 2pt 2pt @@ -664,7 +665,7 @@ 8pt =iif(Fields!CveVenta.Value = "", "Bold", "Normal") #,0.00;- #,0.00;'-' - =iif(Fields!CveVenta.Value= "", "White", "Black") + =iif(Fields!CveVenta.Value = "",IIf(Fields!Gpo.Value = "","White","#67809F"), "Black") @@ -678,7 +679,7 @@ - =iif(Fields!CveVenta.Value = "", "#67809F", "Transparent") + =iif(Fields!CveVenta.Value = "",IIf(Fields!Gpo.Value = "","#67809F","#cccccc"), "Transparent") 2pt 2pt 2pt @@ -701,7 +702,7 @@ 8pt =iif(Fields!CveVenta.Value = "", "Bold", "Normal") #,0.00;- #,0.00;'-' - =iif(Fields!CveVenta.Value= "", "White", "Black") + =iif(Fields!CveVenta.Value = "",IIf(Fields!Gpo.Value = "","White","#67809F"), "Black") @@ -715,7 +716,7 @@ - =iif(Fields!CveVenta.Value = "", "#67809F", "Transparent") + =iif(Fields!CveVenta.Value = "",IIf(Fields!Gpo.Value = "","#67809F","#cccccc"), "Transparent") 2pt 2pt 2pt @@ -737,7 +738,7 @@ 8pt =iif(Fields!CveVenta.Value = "", "Bold", "Normal") #,0.00;-#,0.00;'-' - =iif(Fields!CveVenta.Value= "", "White", "Black") + =iif(Fields!CveVenta.Value = "",IIf(Fields!Gpo.Value = "","White","#67809F"), "Black") @@ -751,7 +752,7 @@ - =iif(Fields!CveVenta.Value = "", "#67809F", "Transparent") + =iif(Fields!CveVenta.Value = "",IIf(Fields!Gpo.Value = "","#67809F","#cccccc"), "Transparent") 2pt 2pt 2pt @@ -773,7 +774,7 @@ 8pt =iif(Fields!CveVenta.Value = "", "Bold", "Normal") #,0.00;- #,0.00;'-' - =iif(Fields!CveVenta.Value= "", "White", "Black") + =iif(Fields!CveVenta.Value = "",IIf(Fields!Gpo.Value = "","White","#67809F"), "Black") @@ -787,7 +788,7 @@ - =iif(Fields!CveVenta.Value = "", "#67809F", "Transparent") + =iif(Fields!CveVenta.Value = "",IIf(Fields!Gpo.Value = "","#67809F","#cccccc"), "Transparent") 2pt 2pt 2pt @@ -810,7 +811,7 @@ 8pt =iif(Fields!CveVenta.Value = "", "Bold", "Normal") #,0.00;-#,0.00;'-' - =iif(Fields!CveVenta.Value= "", "White", "Black") + =iif(Fields!CveVenta.Value = "",IIf(Fields!Gpo.Value = "","White","#67809F"), "Black") @@ -824,7 +825,7 @@ - =iif(Fields!CveVenta.Value = "", "#67809F", "Transparent") + =iif(Fields!CveVenta.Value = "",IIf(Fields!Gpo.Value = "","#67809F","#cccccc"), "Transparent") 2pt 2pt 2pt @@ -896,14 +897,16 @@ - Textbox1 0.18521cm - 2.8349cm + 3.37444cm 0.6cm - 12.60299cm + 21.20747cm @@ -949,9 +952,9 @@ Textbox2 1.10271cm - 8.17404cm + 9.22743cm 0.52945cm - 10.36447cm + 10.12635cm 1 - 0.58209cm + 1.04773cm true true @@ -1140,9 +1143,9 @@ Textbox10 0.0829cm - 9.84544cm + 10.83183cm 0.38981cm - 2.92333cm + 2.91804cm 3 + + + + + + Textbox11 + 0.0829cm + 13.56466cm + 0.38981cm + 6.47703cm + 4 + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + IMPRESO EN SIG, Rep. Productos Servicios @@ -1272,6 +1309,14 @@ Nombre System.String + + Gpo + System.String + + + Moneda + System.String + Codigo System.String @@ -1331,6 +1376,7 @@ ReportParameter1 + es-MX Cm 40c94aad-a12a-44fb-ab0d-ea36a9656792 \ No newline at end of file diff --git a/Ventas/RepProductosServiciosDetalle.aspx.vb b/Ventas/RepProductosServiciosDetalle.aspx.vb index c6af54b8b..47ff0cc89 100644 --- a/Ventas/RepProductosServiciosDetalle.aspx.vb +++ b/Ventas/RepProductosServiciosDetalle.aspx.vb @@ -661,6 +661,7 @@ Partial Class Ventas_RepProductosServiciosDetalle params.Add(New ReportParameter("LogoPath", "")) End If + params.Add(New ReportParameter("UsuarioImprimio", UsuarioActual.Nombre)) params.Add(New ReportParameter("FechaImpresion", DateTime.Now.ToString("dd/MM/yyyy"))) params.Add(New ReportParameter("NombreEmpresa", UsuarioActual.Empresa.Empresa)) ImprimirPDF("Empresas/Grales/Formatos/RepProductosServiciosDetalle.rdlc", TmpDT, params, "ReportePS") From d067a308aa1a614e985c987387696d0606a735ee Mon Sep 17 00:00:00 2001 From: Rene Molina Date: Tue, 27 Aug 2019 11:03:21 -0700 Subject: [PATCH 19/38] =?UTF-8?q?concepto=2029,=20devoluci=C3=B3n=20de=20p?= =?UTF-8?q?r=C3=A9stamos=20a=20proveedor?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 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 cb508eee9..32218a1f0 100644 --- a/Inventarios/EntradasSalidas.aspx.vb +++ b/Inventarios/EntradasSalidas.aspx.vb @@ -1528,7 +1528,7 @@ Partial Class Inventarios_EntradasSalidas If UsuarioActual.Empresa.Funcionalidad(342).ToEntero > 0 Then IdCtaContableOtro = UsuarioActual.Empresa.Funcionalidad(342).ToEntero End If - Case 13 + Case 13, 29 CveConceptoContable = 69 Dim drr As DataRow = GlobalDTClasificaciones(UsuarioActual.CveEmpresa).FiltroPrimero("") If drr IsNot Nothing Then From ff6cdaa60a6f0469498514948d87e6802410a29c Mon Sep 17 00:00:00 2001 From: Rene Molina Date: Tue, 27 Aug 2019 11:06:50 -0700 Subject: [PATCH 20/38] =?UTF-8?q?devoluci=C3=B3n=20de=20pr=C3=A9stamo=20de?= =?UTF-8?q?=20proveedores?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 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 32218a1f0..be7cc478a 100644 --- a/Inventarios/EntradasSalidas.aspx.vb +++ b/Inventarios/EntradasSalidas.aspx.vb @@ -1881,7 +1881,7 @@ Partial Class Inventarios_EntradasSalidas Dim filtro As String = "" Dim CveTipoAlmacen = GlobalDTAlmacenUsuarios(UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1).FiltroPrimeroValor("CveTipoAlmacen", $"CveAlmacen = {DdlAlmacen.SelectedValue}").ToEntero - filtro = If(UsuarioActual.TienePermisoProceso(144), "CveConcepto NOT IN (1,4,5,8,9,10,12,26,27,29)", "CveConcepto NOT IN (1,2,4,5,8,9,10,12,26,27,29)") + filtro = If(UsuarioActual.TienePermisoProceso(144), "CveConcepto NOT IN (1,4,5,8,9,10,12,26,27)", "CveConcepto NOT IN (1,2,4,5,8,9,10,12,26,27)") If DdlAlmacen.SelectedValue = "-1" Then filtro = IIf(UsuarioActual.CveEmpresa.Contiene(72, 1, 80), "CveConcepto NOT IN (4,5,10)", filtro).ToString From 2035c0a18e9e2c752ff1ade03c01be5335d5eae0 Mon Sep 17 00:00:00 2001 From: Raul Pimienta Date: Tue, 27 Aug 2019 11:33:57 -0700 Subject: [PATCH 21/38] Soporte Compras Nota de credito para remision --- Compras/Compras.aspx.vb | 21 ++++++++------ Planeacion/CatFolios.aspx.vb | 1 + Ventas/PopUpBuscarFolio.aspx | 1 + Ventas/Ventas.aspx.vb | 53 ++++++++++++++++++++++++++++++------ 4 files changed, 58 insertions(+), 18 deletions(-) diff --git a/Compras/Compras.aspx.vb b/Compras/Compras.aspx.vb index ee9dc3df8..78272dc76 100644 --- a/Compras/Compras.aspx.vb +++ b/Compras/Compras.aspx.vb @@ -9741,18 +9741,21 @@ Partial Class Compras_Compras ReceptorRFC = ValorXML(node, "RFC") End If - node = XMLDoc.SelectSingleNode(String.Format("//{0}:CfdiRelacionados", Prefijo), namespaces) - If node IsNot Nothing AndAlso node.ChildNodes.Count > 0 Then - If ValorXML(node, "TipoRelacion").ToString.Contiene("04", "07") Then - Dim nodeDocumentosRelacionados As XmlNodeList = XMLDoc.SelectNodes(String.Format("//{0}:CfdiRelacionado", Prefijo), namespaces) - For Each documento As XmlNode In nodeDocumentosRelacionados - If documento.Attributes("UUID").Value <> "" Then - ListaDocumentos.Add(documento.Attributes("UUID").Value) - End If - Next + If UsuarioActual.CveEmpresa.Contiene(119) Then + node = XMLDoc.SelectSingleNode(String.Format("//{0}:CfdiRelacionados", Prefijo), namespaces) + If node IsNot Nothing AndAlso node.ChildNodes.Count > 0 Then + If ValorXML(node, "TipoRelacion").ToString.Contiene("04", "07") Then + Dim nodeDocumentosRelacionados As XmlNodeList = XMLDoc.SelectNodes(String.Format("//{0}:CfdiRelacionado", Prefijo), namespaces) + For Each documento As XmlNode In nodeDocumentosRelacionados + If documento.Attributes("UUID").Value <> "" Then + ListaDocumentos.Add(documento.Attributes("UUID").Value) + End If + Next + End If End If End If + node = XMLDoc.SelectSingleNode(String.Format("//{0}:Impuestos", Prefijo), namespaces) If node IsNot Nothing AndAlso node.ChildNodes.Count > 0 Then Dim nodeRetenciones As XmlNodeList = XMLDoc.SelectNodes(String.Format("//{0}:Comprobante/{0}:Impuestos/{0}:Retenciones/{0}:Retencion", Prefijo), namespaces) diff --git a/Planeacion/CatFolios.aspx.vb b/Planeacion/CatFolios.aspx.vb index 70eaeb189..1c8f92399 100644 --- a/Planeacion/CatFolios.aspx.vb +++ b/Planeacion/CatFolios.aspx.vb @@ -70,6 +70,7 @@ Partial Class CatFolios DdlTipoDocto.Items.Insert(31, New ListItem("Proveedor", "Pro")) DdlTipoDocto.Items.Insert(32, New ListItem("Acreedor", "Acr")) DdlTipoDocto.Items.Insert(33, New ListItem("Productos/Servicios", "PS")) + DdlTipoDocto.Items.Insert(34, New ListItem("NC de Remisión", "RNC")) ElseIf UsuarioActual.Empresa.CvePlataforma = 2 Then DdlTipoDocto.Items.Insert(1, New ListItem("Facturas", "Ing")) DdlTipoDocto.Items.Insert(2, New ListItem("Notas de Crédito", "Egs")) diff --git a/Ventas/PopUpBuscarFolio.aspx b/Ventas/PopUpBuscarFolio.aspx index 79cf3b927..e05a1490b 100644 --- a/Ventas/PopUpBuscarFolio.aspx +++ b/Ventas/PopUpBuscarFolio.aspx @@ -46,6 +46,7 @@ + Estatus Factura: diff --git a/Ventas/Ventas.aspx.vb b/Ventas/Ventas.aspx.vb index eb95bd40a..a20b8a60a 100644 --- a/Ventas/Ventas.aspx.vb +++ b/Ventas/Ventas.aspx.vb @@ -1727,6 +1727,10 @@ Partial Class Ventas DdlTipoComprobante.Items.Insert(DdlTipoComprobante.Items.Count, New ListItem("Pedido", "Pd2")) + If UsuarioActual.Empresa.Funcionalidad(344).ToString = "1" Then + DdlTipoComprobante.Items.Insert(DdlTipoComprobante.Items.Count, New ListItem("NC de Remisión", "RNC")) + End If + If UsuarioActual.Empresa.Funcionalidad(528) = "1" Then 'FUNCIONALIDAD. DE REGISTRO DE CUENTA PREDIAL. GvPS.Columns(ColumnaPredial).Visible = True thPredial1.Visible = True @@ -6568,7 +6572,7 @@ Partial Class Ventas 'ContPAQ El movimiento 1 es el de Venta Dim AutoConta As Boolean = UsuarioActual.Empresa.Funcionalidad(200) = "1" - If UsuarioActual.CveEmpresa = 119 AndAlso DdlTipoComprobante.SelectedValue.Contiene("Ant", "Rem", "Cot", "Ped", "Pd2", "PA", "NC") Then + If UsuarioActual.CveEmpresa = 119 AndAlso DdlTipoComprobante.SelectedValue.Contiene("Ant", "Rem", "RNC", "Cot", "Ped", "Pd2", "PA", "NC") Then AutoConta = False End If @@ -6623,7 +6627,7 @@ Partial Class Ventas Dim EstatusSMS = 0 'TIMBRADO Y CASO ESPECIAL NOTA DE CREDITO - If (TipoDoctoDevolucion = "" OrElse Not TipoDoctoDevolucion.Contiene("Rem", "Cot", "Ped", "DPe", "PA", "Pd2")) Then + If (TipoDoctoDevolucion = "" OrElse Not TipoDoctoDevolucion.Contiene("Rem", "RNC", "Cot", "Ped", "DPe", "PA", "Pd2")) Then Dim DebeTimbrar As Boolean = True If UsuarioActual.CveEmpresa.Contiene(1, 72, 80) Then @@ -9104,7 +9108,7 @@ Partial Class Ventas CvePlantilaPoliza = 4 ElseIf ObjFactura.TipoDocto.Contiene("Egs", "Dev") Then CvePlantilaPoliza = 7 - ElseIf ObjFactura.TipoDocto = "Rem" Then + ElseIf ObjFactura.TipoDocto.Contiene("Rem", "RNC") Then CvePlantilaPoliza = 4 End If @@ -9173,7 +9177,7 @@ Partial Class Ventas Select Case ConceptoContable Case 1 'Cliente - If Not ObjFactura.TipoDocto.Contiene("Egs", "Rem") Then + If Not ObjFactura.TipoDocto.Contiene("Egs", "Rem", "RNC") Then importeMovimiento = (ObjFactura.Total - TotalOtrosConceptos) * ValorMultiplicador importeMX = importeMovimiento * tipoCambio * Multiplicador FechaMovimiento = ObjFactura.FechaPago @@ -9247,6 +9251,37 @@ Partial Class Ventas ViewState("SeGuardoPrePoliza") = True End If + Case 277 'Remisión del cliente + + If ObjFactura.TipoDocto = "RNC" Then + importeMovimiento = (ObjFactura.Total - TotalOtrosConceptos) * ValorMultiplicador + importeMX = importeMovimiento * tipoCambio * Multiplicador + FechaMovimiento = ObjFactura.FechaPago + CveSubProyectoContabilizar = CveSubProyectoVenta + If tipoCambio > 1 Then Concepto += $" TC:{tipoCambio} ${importeMovimiento.FormatoNumero(2)}" + + If tipoCambio = 1 Then + IdCtaContable = ObjFactura.Cliente.IdCtaContClientes + CveCuenta = ObjFactura.Cliente.CveCuentaClientes + Else + IdCtaContable = ObjFactura.Cliente.IdCtaContMonedaExtranjera + CveCuenta = ObjFactura.Cliente.CveCuentaMonedaExtranjera + End If + IdCtaContableCliente = IdCtaContable + CveCuentaCliente = CveCuenta + + If ObjConta.AddPrePolizasDetalle(ObjFactura.CvePrePoliza, TipoMovimiento, importeMovimiento, Referencia, 277, Concepto, FechaMovimiento, IdCtaContable, -1, CveVenta:=ObjFactura.CveVenta, CveCliente:=ObjFactura.CveCliente, CveIE:=CveIE, ImporteMX:=importeMX, ImporteME:=If(tipoCambio = 1, 0, importeMovimiento), CveCuenta:=CveCuenta, Contabilizable:=False, CveSubProyecto:=CveSubProyectoContabilizar) Then + If Not ObjConta.AddPrePolizasDetalle(ObjFactura.CvePrePoliza, Not TipoMovimiento, importeMovimiento, Referencia, 278, Concepto, FechaMovimiento, IdCtaContable, -1, CveVenta:=ObjFactura.CveVenta, CveCliente:=ObjFactura.CveCliente, CveIE:=CveIE, ImporteMX:=importeMX, ImporteME:=If(tipoCambio = 1, 0, importeMovimiento), CveCuenta:=CveCuenta, Contabilizable:=False, CveSubProyecto:=CveSubProyectoContabilizar) Then + ErrorPrepoliza = True + End If + Else + ErrorPrepoliza = True + End If + + importeMovimiento = 0 + ViewState("SeGuardoPrePoliza") = True + End If + Case 12 'Nota de Credito If ObjFactura.TipoDocto.Contiene("Egs", "Dev") Then importeMovimiento = ObjFactura.Total * ValorMultiplicador @@ -9712,7 +9747,7 @@ Partial Class Ventas importeMovimiento = 0 Case 4 'Venta Clasificacion - If Not ObjFactura.TipoDocto.Contiene("Rem", "Ant", "Egs", "Dev") Then + If Not ObjFactura.TipoDocto.Contiene("Rem", "RNC", "Ant", "Egs", "Dev") Then Dim ConceptoContableAplicar = 4 Dim CveVentaAplicar = ObjFactura.CveVenta @@ -9890,7 +9925,7 @@ Partial Class Ventas importeMovimiento = 0 Case 103 'Descuento - If Not ObjFactura.TipoDocto.Contiene("Rem") AndAlso DdlTipoAmortizacionAnticipo.SelectedValue = "-1" Then + If Not ObjFactura.TipoDocto.Contiene("Rem", "RNC") AndAlso DdlTipoAmortizacionAnticipo.SelectedValue = "-1" Then importeMovimiento = ObjFactura.Descuento * ValorMultiplicador importeMX = Math.Round(importeMovimiento, 2) * tipoCambio * Multiplicador @@ -9937,7 +9972,7 @@ Partial Class Ventas End If Case 8 'Ret IVA por Trasladar - If Not ObjFactura.TipoDocto.Contiene("Rem") Then + If Not ObjFactura.TipoDocto.Contiene("Rem", "RNC") Then importeMovimiento = ObjFactura.RetIVA * ValorMultiplicador importeMX = Math.Round(importeMovimiento, 2) * tipoCambio * Multiplicador FechaMovimiento = ObjFactura.FechaPago @@ -9968,7 +10003,7 @@ Partial Class Ventas End If Case 9 'Ret ISR por Trasladar - If Not ObjFactura.TipoDocto.Contiene("Rem") Then + If Not ObjFactura.TipoDocto.Contiene("Rem", "RNC") Then importeMovimiento = ObjFactura.RetISR * ValorMultiplicador importeMX = Math.Round(importeMovimiento, 2) * tipoCambio * Multiplicador FechaMovimiento = ObjFactura.FechaPago @@ -9998,7 +10033,7 @@ Partial Class Ventas End If End If Case 13 'Iva por Trasladar - If Not ObjFactura.TipoDocto.Contiene("Rem") Then + If Not ObjFactura.TipoDocto.Contiene("Rem", "RNC") Then importeMovimiento = ObjFactura.IVA * ValorMultiplicador importeMX = Math.Round(importeMovimiento * tipoCambio * Multiplicador, 2) FechaMovimiento = ObjFactura.FechaPago From 68abc82fd78b4c75eeeb22836957d085e7408d6a Mon Sep 17 00:00:00 2001 From: janeth arvizu Date: Tue, 27 Aug 2019 14:14:21 -0700 Subject: [PATCH 22/38] Solo muestra error al agregar Prepoliza en ejercicio cerrado --- Compras/Compras.aspx.vb | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/Compras/Compras.aspx.vb b/Compras/Compras.aspx.vb index ee9dc3df8..b6367d8f7 100644 --- a/Compras/Compras.aspx.vb +++ b/Compras/Compras.aspx.vb @@ -4160,8 +4160,10 @@ Partial Class Compras_Compras CvePrePoliza = ObjConta.AddPrePolizas("Compras/Registrar", If(EsContado And CvePlantillaPrePoliza = 1, 2, CvePlantillaPrePoliza), ImporteCompra, TxtTotal.Text.ToDouble, DdlMoneda.SelectedValue.ToEntero, TxtFecha.Text.ToDate, ConceptoPoliza, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, FolioFijo:=FolioFijo, ReglaFolioPoliza:=ObjCompras.ObtenerReglaFolio(DdlTipoTransaccion.SelectedValue, DdlTipoTransaccionCaja.SelectedValue, UsuarioActual.CveEmpresa), CveTipoPoliza:=ObjConta.ObtenerTipoPoliza(DdlTipoTransaccion.SelectedValue, DdlTipoTransaccionCaja.SelectedValue, UsuarioActual.CveEmpresa)) - 'seria de contado, solo cuando no tenga vinculado ningun anticipo - If RBLPago.SelectedValue.ToEntero = 2 AndAlso ArrAnticipos.Count = 0 Then 'Contado + If CvePrePoliza > 0 Then + + 'seria de contado, solo cuando no tenga vinculado ningun anticipo + If RBLPago.SelectedValue.ToEntero = 2 AndAlso ArrAnticipos.Count = 0 Then 'Contado If RBLContado.SelectedValue = "1" Then 'se registra primero el movimiento en bancos para luego vincularlo en la compra @@ -7715,6 +7717,7 @@ Partial Class Compras_Compras ObjCompras.RollBack() End If + End If Catch ex As Exception ObjCompras.RollBack() From dade0dcc34969d86acdad0e347d33a7667ab7011 Mon Sep 17 00:00:00 2001 From: Raul Pimienta Date: Tue, 27 Aug 2019 15:35:51 -0700 Subject: [PATCH 23/38] Soporte en Compras amortizacion nc que afecta a inv --- Compras/Compras.aspx.vb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Compras/Compras.aspx.vb b/Compras/Compras.aspx.vb index 78272dc76..d7fb36b15 100644 --- a/Compras/Compras.aspx.vb +++ b/Compras/Compras.aspx.vb @@ -6248,7 +6248,7 @@ Partial Class Compras_Compras - If Not ChkNCInvNC.Checked Then + If Not ChkNCInvNC.Checked OrElse Not ListaDocumentos.Count > 0 Then 'GASTO If UsuarioActual.CveEmpresa = 119 Then DT = TmpDT From bad871b870afec2598906f4ee1b94650eb406a0a Mon Sep 17 00:00:00 2001 From: Rene Molina Date: Tue, 27 Aug 2019 19:16:44 -0700 Subject: [PATCH 24/38] global dt estatus ie --- Global.asax | 2 +- Ventas/Clientes.aspx.vb | 2 +- Ventas/ProductosServicios.aspx | 2 +- Ventas/ProductosServicios.aspx.vb | 8 ++++++++ 4 files changed, 11 insertions(+), 3 deletions(-) diff --git a/Global.asax b/Global.asax index f69cea9f7..dcb70128c 100644 --- a/Global.asax +++ b/Global.asax @@ -183,7 +183,7 @@ 'If ObjBancos.GetBancosCuentasUsuarios(-1) Then Application("GlobalDTBancosCuentas") = ObjBancos.DtResultados Else Application("GlobalDTBancosCuentas") = Nothing If ObjBancos.GetBancosCuentasUsuarios(-1) Then Application("GlobalDTBancosCuentas") = ObjBancos.DtResultados Else Application("GlobalDTBancosCuentas") = Nothing If ObjBancos.GetBancos_TiposTransaccion(-1) Then Application("GlobalDTTipoTransacciones") = ObjBancos.DtResultados Else Application("GlobalDTTipoTransacciones") = Nothing - If ObjBancos.GetBancos_EstatusIE() Then Application("GlobalDTEstatusIE") = ObjBancos.DtResultados Else Application("GlobalDTEstatusIE") = 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 ObjBancos.Dispose() diff --git a/Ventas/Clientes.aspx.vb b/Ventas/Clientes.aspx.vb index 34f83d72e..169348b1c 100644 --- a/Ventas/Clientes.aspx.vb +++ b/Ventas/Clientes.aspx.vb @@ -1253,7 +1253,7 @@ Partial Class Clientes 'CargaFormaPago33() 'CargaComboCFDI() - 'LnkPorcentajePrecios.Visible = True + LnkPorcentajePrecios.Visible = True If UsuarioActual.TienePermisoProceso(261) Then LnkVerGrafica.Visible = True diff --git a/Ventas/ProductosServicios.aspx b/Ventas/ProductosServicios.aspx index c8c23ac17..29c2aca5d 100644 --- a/Ventas/ProductosServicios.aspx +++ b/Ventas/ProductosServicios.aspx @@ -130,7 +130,7 @@
-
+
diff --git a/Ventas/ProductosServicios.aspx.vb b/Ventas/ProductosServicios.aspx.vb index efd4939a0..31ec53798 100644 --- a/Ventas/ProductosServicios.aspx.vb +++ b/Ventas/ProductosServicios.aspx.vb @@ -212,6 +212,14 @@ Partial Class ProductosyServicios InicializaEcommerce() + If UsuarioActual.CveEmpresa.Contiene(141) Then + 'DivDatos.Attributes("class") = "col-md-12" + + DivDdlTipo.Visible = True + DdlTipoPSDes.Attributes.Add("onChange", "CreaDescripcionPS();") + + End If + If UsuarioActual.CveEmpresa.Contiene(1, 72, 80) And CvePS = -1 Then 'DivDatos.Attributes("class") = "col-md-12" TxtPS.Enabled = False From c59a0700aa1d15b24fe2e759cfd7202387f5cf26 Mon Sep 17 00:00:00 2001 From: Antonio Gonzalez Date: Wed, 28 Aug 2019 09:40:21 -0500 Subject: [PATCH 25/38] =?UTF-8?q?validaci=C3=B3n=20agregada=20a=20SaldosIn?= =?UTF-8?q?iciales?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- General/SaldosIniciales.aspx.vb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/General/SaldosIniciales.aspx.vb b/General/SaldosIniciales.aspx.vb index 8d64e696a..76eba6639 100644 --- a/General/SaldosIniciales.aspx.vb +++ b/General/SaldosIniciales.aspx.vb @@ -1533,8 +1533,9 @@ Partial Class General_SaldosIniciales Dim contadorMovimientos As Integer = 0 Dim listadoMovimientos As String = "" Dim mensajeError As String = "" + Dim banderRowCount As Integer = dt.Rows.Count Try - For Each almacenSinRepetir As DataRow In dt.FiltraParametros("", DistinctColumns:={"Almacen"}).Rows + For Each almacenSinRepetir As DataRow In dt.FiltraParametros("Almacen <> ''", DistinctColumns:={"Almacen"}).Rows Dim almacenActual As String = almacenSinRepetir("Almacen").ToString 'Dim CveAlmacen As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("CveAlmacen", $"Almacen = '{almacenActual}'").ToEntero Dim CveAlmacen As Integer = AlmacenRef.FiltroPrimeroValor("CveAlmacen", $"Almacen = '{almacenActual}'").ToEntero From a44c616fcffe74ca0c0575920a571cceb6dc3593 Mon Sep 17 00:00:00 2001 From: Antonio Gonzalez Date: Wed, 28 Aug 2019 11:56:14 -0500 Subject: [PATCH 26/38] reparando erroes de saldos iniciales --- General/SaldosIniciales.aspx.vb | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/General/SaldosIniciales.aspx.vb b/General/SaldosIniciales.aspx.vb index 76eba6639..7ffc1911c 100644 --- a/General/SaldosIniciales.aspx.vb +++ b/General/SaldosIniciales.aspx.vb @@ -1533,7 +1533,6 @@ Partial Class General_SaldosIniciales Dim contadorMovimientos As Integer = 0 Dim listadoMovimientos As String = "" Dim mensajeError As String = "" - Dim banderRowCount As Integer = dt.Rows.Count Try For Each almacenSinRepetir As DataRow In dt.FiltraParametros("Almacen <> ''", DistinctColumns:={"Almacen"}).Rows Dim almacenActual As String = almacenSinRepetir("Almacen").ToString @@ -1545,10 +1544,9 @@ Partial Class General_SaldosIniciales contadorMovimientos += 1 For Each nuevaEntrada As DataRow In dt.FiltraParametros($"Almacen = '{almacenActual}'").Rows Dim RowPS As DataRow = ProductosServiciosRef.FiltroPrimero($"Codigo = '{nuevaEntrada("CodigoPS")}' AND CveEmpresa = {UsuarioActual.CveEmpresa}") - - Dim CvePS As Integer = RowPS("CvePS").ToString().ToEntero - Dim CveUM As Integer = RowPS("CveUnidadMedida").ToString().ToEntero - If CvePS > 0 Then + If RowPS IsNot Nothing Then + Dim CvePS As Integer = RowPS("CvePS").ToString().ToEntero + Dim CveUM As Integer = RowPS("CveUnidadMedida").ToString().ToEntero If CveUM > 0 Then Dim Cantidad As Decimal = nuevaEntrada("Existencia").ToString.ToDecimal Dim Valor As Decimal = nuevaEntrada("Valor").ToString.ToDecimal @@ -1563,7 +1561,6 @@ Partial Class General_SaldosIniciales End If Else mensajeError = $"No se encontró el producto o servicio con código ""{nuevaEntrada("CodigoPS")}""" - Throw New Exception() End If Next Else From 22a889efe31e16cc734ca02907f0c7e14942fcae Mon Sep 17 00:00:00 2001 From: janeth arvizu Date: Wed, 28 Aug 2019 10:51:08 -0700 Subject: [PATCH 27/38] Correcciones de Reporte de Compras y su Detalle --- Compras/RepCompras.aspx.vb | 6 ++---- Compras/RepComprasDetalle.aspx.vb | 2 +- .../Grales/Formatos/RepComprasDetalle.rdlc | 20 +++++++++---------- 3 files changed, 13 insertions(+), 15 deletions(-) diff --git a/Compras/RepCompras.aspx.vb b/Compras/RepCompras.aspx.vb index 7303258cc..3173f899a 100644 --- a/Compras/RepCompras.aspx.vb +++ b/Compras/RepCompras.aspx.vb @@ -285,12 +285,10 @@ Partial Class Compras_RepCompras If e.Row.DBCampo("Orden") = "" Then e.Row.FCLiteral("LtlGrupo").Text = e.Row.FCLiteral("LtlGrupo").Text - e.Row.FCLiteral("LtlCantidad").Text = e.Row.FCLiteral("LtlCantidad").Text Else e.Row.FCLiteral("LtlGrupo").Text = String.Format("{2}", Css, Liga, e.Row.FCLiteral("LtlGrupo").Text) - e.Row.FCLiteral("LtlCantidad").Text = String.Format("{2}", Css, Liga, e.Row.FCLiteral("LtlCantidad").Text) End If - + e.Row.FCLiteral("LtlCantidad").Text = String.Format("{2}", Css, Liga, e.Row.FCLiteral("LtlCantidad").Text) If e.Row.DBCampo("SubTotal").ToDouble = 0 Then e.Row.FCLiteral("LtlSubTotal").Text = "" If e.Row.DBCampo("Descuento").ToDouble = 0 Then e.Row.FCLiteral("LtlDescuento").Text = "" @@ -399,7 +397,7 @@ Partial Class Compras_RepCompras 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("AgrupadoPor", $"Agrupado Por: {Proveedor}{Capturo}{Grupo}{Moneda}{FechaIn}{FechaFn}{Proyecto}{SubProyecto}{TipoGasto}{TipoProveedor}{FechaICaptura}{FechaFCaptura}{TipoDocto}")) + params.Add(New ReportParameter("AgrupadoPor", $"Agrupado Por: {Grupo}{Proveedor}{Capturo}{Moneda}{FechaIn}{FechaFn}{Proyecto}{SubProyecto}{TipoGasto}{TipoProveedor}{FechaICaptura}{FechaFCaptura}{TipoDocto}")) If Imagen.Exists Then params.Add(New ReportParameter("LogoPath", logouri)) Else diff --git a/Compras/RepComprasDetalle.aspx.vb b/Compras/RepComprasDetalle.aspx.vb index c0be4ca41..ada9dcb43 100644 --- a/Compras/RepComprasDetalle.aspx.vb +++ b/Compras/RepComprasDetalle.aspx.vb @@ -437,7 +437,7 @@ Partial Class Compras_RepComprasDetalle 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("AgrupadoPor", $"Agrupado Por: {Proveedor}{Capturo}{Grupo}{FechaIn}{FechaFn}{FechaCIn}{FechaCFn}{Proyecto}{SubProyecto}{TipoGasto}{TipoProveedor}{TipoDocto}")) + params.Add(New ReportParameter("AgrupadoPor", $"Agrupado Por: {Grupo}{Proveedor}{Capturo}{FechaIn}{FechaFn}{FechaCIn}{FechaCFn}{Proyecto}{SubProyecto}{TipoGasto}{TipoProveedor}{TipoDocto}")) If Imagen.Exists Then params.Add(New ReportParameter("LogoPath", logouri)) Else diff --git a/Empresas/Grales/Formatos/RepComprasDetalle.rdlc b/Empresas/Grales/Formatos/RepComprasDetalle.rdlc index e1d30edb3..408a5b1db 100644 --- a/Empresas/Grales/Formatos/RepComprasDetalle.rdlc +++ b/Empresas/Grales/Formatos/RepComprasDetalle.rdlc @@ -50,7 +50,7 @@ - 1.25345cm + 1.862cm 1.29144cm @@ -68,7 +68,7 @@ 1.69804cm - 2.03728cm + 1.42874cm 3.5848cm @@ -86,14 +86,14 @@ - + true true - =Fields!Moneda.Value + =Fields!SerieFolio.Value - Moneda + SerieFolio1 @@ -301,14 +301,14 @@ - + true true - =Fields!SerieFolio.Value + =Fields!Moneda.Value - SerieFolio + Moneda @@ -457,7 +457,7 @@ - Moneda + Serie/Folio @@ -685,7 +685,7 @@ - Serie/Folio + Moneda From cad0f0c45d15ac14e98e6f967850e29f2f5c9aa5 Mon Sep 17 00:00:00 2001 From: Raul Pimienta Date: Wed, 28 Aug 2019 11:33:43 -0700 Subject: [PATCH 28/38] Cambios en reportes de utilidad --- .../Formatos/RepVentasUtilidadPadre.rdlc | 433 +++++++++++++++++- Ventas/RepVentasUtilidadPadre.aspx | 112 ++++- Ventas/RepVentasUtilidadPadre.aspx.vb | 73 ++- 3 files changed, 572 insertions(+), 46 deletions(-) diff --git a/Empresas/Grales/Formatos/RepVentasUtilidadPadre.rdlc b/Empresas/Grales/Formatos/RepVentasUtilidadPadre.rdlc index e2fb28945..5e314ec69 100644 --- a/Empresas/Grales/Formatos/RepVentasUtilidadPadre.rdlc +++ b/Empresas/Grales/Formatos/RepVentasUtilidadPadre.rdlc @@ -51,25 +51,37 @@ - 2.51027cm + 1.78756cm - 2.396cm + 1.7468cm - 1.01424cm + 1.87995cm - 2.3007cm + 1.75936cm - 0.96542cm + 1.99234cm - 2.21367cm + 0.7279cm - 0.90371cm + 2.03612cm + + + 0.67438cm + + + 1.94909cm + + + 0.5862cm + + + 1.38875cm @@ -112,6 +124,114 @@ + + + + true + true + + + + + =Fields!Descuento.Value + + + + + + + Descuento + + + =IIF(Fields!GPO.Value="", "CornflowerBlue", "Transparent") + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Fields!Bonificacion.Value + + + + + + + Bonificacion + + + =IIF(Fields!GPO.Value="", "CornflowerBlue", "Transparent") + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Fields!Costo.Value + + + + + + + Costo + + + =IIF(Fields!GPO.Value="", "CornflowerBlue", "Transparent") + 2pt + 2pt + 2pt + 2pt + + + + @@ -328,6 +448,42 @@ + + + + true + true + + + + + =Fields!Rentabilidad.Value + + + + + + + Rentabilidad + + + =IIF(Fields!GPO.Value="", "CornflowerBlue", "Transparent") + 2pt + 2pt + 2pt + 2pt + + + + @@ -373,6 +529,123 @@ + + + 0.46771cm + + + true + true + + + + + Descuento + + + + + + + Textbox25 + + + Gray + 2pt + 2pt + 2pt + 2pt + + + + + + + + 0.46771cm + + + true + true + + + + + Bonificacion + + + + + + + Textbox20 + + + Gray + 2pt + 2pt + 2pt + 2pt + + + + + + + + 0.46771cm + + + true + true + + + + + Costo + + + + + + + Textbox17 + + + Gray + 2pt + 2pt + 2pt + 2pt + + + + + 0.46771cm @@ -607,6 +880,45 @@ + + + 0.46771cm + + + true + true + + + + + % Rent. + + + + + + + Textbox21 + + + Gray + 2pt + 2pt + 2pt + 2pt + + + + + @@ -614,7 +926,7 @@ - 7.28314cm + 3.0587cm true @@ -725,7 +1037,7 @@ Textbox1 1.01452cm - 6.93622cm + 5.03122cm 1.73771cm 5.11444cm 2 @@ -763,7 +1075,7 @@ Textbox1 1.85236cm - 7.25372cm + 5.34872cm 0.58236cm 2.59949cm 3 @@ -800,7 +1112,7 @@ Textbox1 1.85236cm - 10.04757cm + 8.14257cm 0.58236cm 1.68559cm 4 @@ -814,11 +1126,86 @@ 2pt + + true + true + + + + + = "RENTABILIDAD" + HTML + + + + + + + Textbox1 + 1.01452cm + 10.71594cm + 1.73771cm + 5.11444cm + 5 + + + SeaGreen + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + =Parameters!Rentabilidad.Value + HTML + + + + + + + Textbox1 + 1.85236cm + 12.93844cm + 0.58236cm + 2.59949cm + 6 + + + 2pt + 2pt + 2pt + 2pt + + 1.667in @@ -170,8 +172,9 @@ -
-
+
+
+
@@ -183,6 +186,18 @@
+ +
+
+
+
+
+
+
+
+
+

@@ -194,12 +209,16 @@ + + + + @@ -215,8 +234,20 @@

@@ -5546,7 +5546,7 @@ - +<%-- --%> @@ -5562,7 +5562,7 @@ - +<%-- --%> diff --git a/Ventas/Clientes.aspx.vb b/Ventas/Clientes.aspx.vb index 34f83d72e..09f25ca45 100644 --- a/Ventas/Clientes.aspx.vb +++ b/Ventas/Clientes.aspx.vb @@ -8138,8 +8138,9 @@ Partial Class Clientes CreaDT() - txtPorcentaje.Attributes.Add("onchange", String.Format("FnCambiaPorcentaje({0});", "5")) - CargaPorcentajesProductos() + 'txtPorcentaje.Attributes.Add("onchange", String.Format("FnCambiaPorcentaje({0});", "5")) + 'CargaPorcentajesProductos() + CargaMarcas() LimpiaModalPorcentaje() End Sub Private Sub CreaDT() @@ -8154,61 +8155,69 @@ Partial Class Clientes End With DTPorcentajeTemp.Columns.Add(column) - DTPorcentajeTemp.Columns.Add("CvePS", GetType(Integer)) - DTPorcentajeTemp.Columns.Add("Producto", GetType(String)) - DTPorcentajeTemp.Columns.Add("PrecioG", GetType(Decimal)) + DTPorcentajeTemp.Columns.Add("CveMarca", GetType(Integer)) DTPorcentajeTemp.Columns.Add("PorcentajeProducto", GetType(Decimal)) - DTPorcentajeTemp.Columns.Add("PrecioA", GetType(Decimal)) DTPorcentajeTemp.Columns.Add("Estatus", GetType(String)) DTPorcentajePrecios = DTPorcentajeTemp.Clone End Sub - Private Sub CargaPorcentajesProductos() - 'Llenar el dropdownlist de Secciones - If UsuarioActual.CveEmpresa = 66 Then - DdlClasificacion2.DataSource = GlobalDTSubFamilias(UsuarioActual.CveEmpresa).FiltraParametros("", Orderby:="Clasificacion") - Else - Dim ObjClasificaciones As New ClsClasificaciones - If ObjClasificaciones.GetClasificacionesExistencias(UsuarioActual.CveEmpresa) Then - DdlClasificacion2.DataSource = ObjClasificaciones.DtResultados - End If - ObjClasificaciones.Dispose() - End If - DdlClasificacion2.DataBind() + Private Sub CargaMarcas() + Dim ObjMarcas As New ClsProductosServicios + ObjMarcas.GetMarcas(UsuarioActual.CveEmpresa) + DdlMarcaPS.DataSource = ObjMarcas.DtResultados + ObjMarcas.Dispose() + DdlMarcaPS.DataBind() + DdlMarcaPS.Items.Insert(0, New ListItem("Seleccione", "-1")) - CargaPS() CargaGridPorcentajes() - UpPorcentaje.Update() End Sub - Private Sub CargaPS() - DdlProducto2.setEsWebService(UsuarioActual.Empresa.Funcionalidad(105) = "1") + 'Private Sub CargaPorcentajesProductos() + ' 'Llenar el dropdownlist de Secciones + ' If UsuarioActual.CveEmpresa = 66 Then + ' DdlClasificacion2.DataSource = GlobalDTSubFamilias(UsuarioActual.CveEmpresa).FiltraParametros("", Orderby:="Clasificacion") + ' Else + ' Dim ObjClasificaciones As New ClsClasificaciones + ' If ObjClasificaciones.GetClasificacionesExistencias(UsuarioActual.CveEmpresa) Then + ' DdlClasificacion2.DataSource = ObjClasificaciones.DtResultados + ' End If + ' ObjClasificaciones.Dispose() + ' End If + ' DdlClasificacion2.DataBind() - If UsuarioActual.CveEmpresa = 66 Then - DdlProducto2.ddlWS.Attributes.Add("data-pagina", "Inventarios") - End If + ' CargaPS() + ' CargaGridPorcentajes() - If Not DdlProducto2.UsaWebService AndAlso CType(DdlProducto2.DataSource, DataTable) Is Nothing Then - DdlProducto2.DataSource = GlobalDTPSSimplificado(UsuarioActual.CveEmpresa).FiltraParametros("CveTipoPS = 2") + ' UpPorcentaje.Update() + 'End Sub + 'Private Sub CargaPS() + ' DdlProducto2.setEsWebService(UsuarioActual.Empresa.Funcionalidad(105) = "1") - DdlProducto2.DataBind() + ' If UsuarioActual.CveEmpresa = 66 Then + ' DdlProducto2.ddlWS.Attributes.Add("data-pagina", "Inventarios") + ' End If - DdlProducto2.ddl.Items.Insert(0, New ListItem("Seleccione", "-1")) - End If + ' If Not DdlProducto2.UsaWebService AndAlso CType(DdlProducto2.DataSource, DataTable) Is Nothing Then + ' DdlProducto2.DataSource = GlobalDTPSSimplificado(UsuarioActual.CveEmpresa).FiltraParametros("CveTipoPS = 2") - End Sub + ' DdlProducto2.DataBind() - Protected Sub DdlProducto2_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles DdlProducto2.selectedindexchange - DdlProducto2IndexChange(DdlProducto2.SelectedValue.ToEntero, DdlProducto2) - End Sub - Private Sub DdlProducto2IndexChange(CvePSParametro As Integer, Ddl As ADServerControl.Dropdownlost) - Dim drPS As DataRow = GlobalDTPS(UsuarioActual.CveEmpresa, CvePS:=CvePSParametro).FiltroPrimero("") + ' DdlProducto2.ddl.Items.Insert(0, New ListItem("Seleccione", "-1")) + ' End If - If drPS IsNot Nothing Then - Dim Precio = drPS("Precio").ToString.ToDouble - LbPrecioG.Text = Precio.FormatoNumero() - LbPrecioA.Text = ((Precio * txtPorcentaje.Text.ToDecimal) / 100).FormatoNumero - End If - End Sub + 'End Sub + + 'Protected Sub DdlProducto2_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles DdlProducto2.selectedindexchange + ' DdlProducto2IndexChange(DdlProducto2.SelectedValue.ToEntero, DdlProducto2) + 'End Sub + 'Private Sub DdlProducto2IndexChange(CvePSParametro As Integer, Ddl As ADServerControl.Dropdownlost) + ' Dim drPS As DataRow = GlobalDTPS(UsuarioActual.CveEmpresa, CvePS:=CvePSParametro).FiltroPrimero("") + + ' If drPS IsNot Nothing Then + ' Dim Precio = drPS("Precio").ToString.ToDouble + ' LbPrecioG.Text = Precio.FormatoNumero() + ' LbPrecioA.Text = ((Precio * txtPorcentaje.Text.ToDecimal) / 100).FormatoNumero + ' End If + 'End Sub Private Sub CargaGridPorcentajes() Dim ObjPS As New ClsProductosServicios @@ -8232,31 +8241,22 @@ Partial Class Clientes Private Sub LimpiaModalPorcentaje() txtPorcentaje.Text = "" - DdlClasificacion2.SelectedValue = "-1" - DdlProducto2.SelectedText = "" + DdlMarcaPS.SelectedValue = "-1" End Sub Protected Sub LbAgregar_Click(sender As Object, e As EventArgs) Handles LbAgregar.Click + If txtPorcentaje.Text.ToDecimal >= 0 And txtPorcentaje.Text.ToDecimal <= 100 Then - If DdlProducto2.SelectedText <> "" Then - If txtPorcentaje.Text.ToDecimal >= 0 And txtPorcentaje.Text.ToDecimal <= 100 Then + Dim registro As DataRow = DTPorcentajePrecios.NewRow - Dim registro As DataRow = DTPorcentajePrecios.NewRow - - registro.Item("No") = DTPorcentajePrecios.Rows.Count + 1 - registro.Item("CvePS") = DdlProducto2.SelectedValue.ToEntero - registro.Item("Producto") = DdlProducto2.SelectedText - registro.Item("PrecioG") = 0 - registro.Item("PrecioA") = 0 * txtPorcentaje.Text.ToDecimal / 100 - registro.Item("PorcentajeProducto") = txtPorcentaje.Text.ToDecimal - registro.Item("Estatus") = "I" - DTPorcentajePrecios.Rows.Add(registro) - CargaDTPorcentajePrecios(DTPorcentajePrecios.FiltraParametros("Estatus <> 'D' ")) - Else - Alert("El Porcentaje debe estar en un rango entre 0 y 100", TipoMensaje.MsgAdvertencia) - End If + registro.Item("No") = DTPorcentajePrecios.Rows.Count + 1 + registro.Item("CveMarca") = DdlMarcaPS.SelectedValue.ToEntero + registro.Item("PorcentajeProducto") = txtPorcentaje.Text.ToDecimal + registro.Item("Estatus") = "I" + DTPorcentajePrecios.Rows.Add(registro) + CargaDTPorcentajePrecios(DTPorcentajePrecios.FiltraParametros("Estatus <> 'D' ")) Else - Alert("El campo ''Producto'' es necesario, por favor ingréselo.", TipoMensaje.MsgAdvertencia) + Alert("El Porcentaje debe estar en un rango entre 0 y 100", TipoMensaje.MsgAdvertencia) End If LimpiaModalPorcentaje() @@ -8272,7 +8272,7 @@ Partial Class Clientes i = lnkRemove.CommandArgument.ToString.ToEntero Dim Drs As DataRow() = DTPorcentajePrecios.Select(String.Format("No = {0}", i)) If Drs.Count > 0 Then - If CveCliente > 0 AndAlso Drs(0)("CvePS").ToString.ToEntero > 0 Then + If CveCliente > 0 AndAlso Drs(0)("CveMarca").ToString.ToEntero > 0 Then Drs(0)("Estatus") = "D" Else Drs(0).Delete() @@ -8309,7 +8309,6 @@ Partial Class Clientes If Drs.Count > 0 Then Drs(0)("PorcentajeProducto") = PorcentajeProducto - Drs(0)("PrecioA") = Drs(0)("PrecioG").ToString.ToDouble * PorcentajeProducto / 100 Drs(0)("Estatus") = "U" End If @@ -8363,9 +8362,9 @@ Partial Class Clientes End Sub - Protected Sub BtnCambiaPorcentaje_Click(sender As Object, e As EventArgs) - DdlProducto2IndexChange(DdlProducto2.SelectedValue.ToEntero, DdlProducto2) - End Sub + 'Protected Sub BtnCambiaPorcentaje_Click(sender As Object, e As EventArgs) + ' DdlProducto2IndexChange(DdlProducto2.SelectedValue.ToEntero, DdlProducto2) + 'End Sub #End Region #Region " A C U M U L A D O R E S" From 3716bbadfc2448ad8b593d7d2dd066196f513335 Mon Sep 17 00:00:00 2001 From: Raul Pimienta Date: Thu, 29 Aug 2019 11:23:04 -0700 Subject: [PATCH 33/38] Cambio en TCValuacion Ventas --- 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 a20b8a60a..b6d971977 100644 --- a/Ventas/Ventas.aspx.vb +++ b/Ventas/Ventas.aspx.vb @@ -3776,7 +3776,7 @@ Partial Class Ventas End If TxtTipoCambio.Text = DbRowVenta("TipoCambio").ToString - If DbRowVenta("TipoCambio").ToString.ToDecimal <> DbRowVenta("TipoCambioValuacion").ToString.ToDecimal Then + If DbRowVenta("UltimasFluctuaciones").ToString <> "" Then LblTCValuacion.Text = String.Format("Ult. Val:{0}", DbRowVenta("UltimasFluctuaciones").ToString) LblTCValuacion.Visible = True End If From 1fa83173bf27ec0a96a0224f871ee4c930e00fbe Mon Sep 17 00:00:00 2001 From: Rakcsle Supertramp Date: Thu, 29 Aug 2019 11:49:37 -0700 Subject: [PATCH 34/38] IE permite actualizar Folio y observacion cuando no esta consiliado y tiene complemento vigente --- Bancos/IE.aspx.vb | 30 +++++++++++++++++++++++------- 1 file changed, 23 insertions(+), 7 deletions(-) diff --git a/Bancos/IE.aspx.vb b/Bancos/IE.aspx.vb index 28c52df1c..57d76e13f 100644 --- a/Bancos/IE.aspx.vb +++ b/Bancos/IE.aspx.vb @@ -1088,6 +1088,7 @@ Partial Class Bancos_IE '2019-08-28 unificados vista de controles complemento (Cancelado, conciliciado, Con complemento vigente, sin complemento vigente) Dim ExistenComplementosVigentes As Boolean = VerificaComplementos(True) Dim ExistenComplementos As Boolean = VerificaComplementos(False) + If Not ChkConciliado.Checked And ObjIE.CveEstatusIE <> 2 Then If (Not ExistenComplementosVigentes) Then @@ -1101,7 +1102,13 @@ Partial Class Bancos_IE Else - BtnEditar.Visible = False + If UsuarioActual.TienePermisoProceso(99) Then + BtnEditar.Visible = True + PermisoComplementoVigente = True + Else + BtnEditar.Visible = False + End If + LnkEliminar.Visible = False LnkCancelar.Visible = False @@ -5647,15 +5654,24 @@ Partial Class Bancos_IE Private Sub ControlesEdicion() + Dim ExistenComplementosVigentes As Boolean = VerificaComplementos(True) If PermisoComplementoVigente Then - DdlTipoTransaccion.Enabled = True - LblCuenta.Visible = False - DdlCuenta.Enabled = True - DdlCuenta.Visible = True - TxtFolio.Enabled = True - TxtObservaciones.Enabled = True + If ExistenComplementosVigentes Then + TxtFolio.Enabled = True + TxtObservaciones.Enabled = True + Else + + DdlTipoTransaccion.Enabled = True + LblCuenta.Visible = False + DdlCuenta.Enabled = True + DdlCuenta.Visible = True + TxtFolio.Enabled = True + TxtObservaciones.Enabled = True + + End If + UpDatos.Update() CargaCuentasDepositoClientes() From b079e768ab8efc6f9249eaed69b8d53410d0fb8f Mon Sep 17 00:00:00 2001 From: Raul Pimienta Date: Thu, 29 Aug 2019 13:19:49 -0700 Subject: [PATCH 35/38] Poder actualizar la fecha de pago en compra Se acomodo gridview principal --- App_Code/ClsCompras.vb | 17 +++++++++++++++ Compras/Compras.aspx | 23 +++++++++++--------- Compras/Compras.aspx.vb | 47 ++++++++++++++++++++++++++++++----------- 3 files changed, 65 insertions(+), 22 deletions(-) diff --git a/App_Code/ClsCompras.vb b/App_Code/ClsCompras.vb index 1da48e7a6..a7f69b063 100644 --- a/App_Code/ClsCompras.vb +++ b/App_Code/ClsCompras.vb @@ -2921,6 +2921,23 @@ Public Class ClsCompras Return Retorno End Function + Public Function UpdateFechaVencimientoCompra(CveCompra As Integer, FechaVencimiento As Date, CveEmpresa As Integer) As Boolean + Dim Retorno As Boolean = False + DataAdapter("PA_Comp_ComprasFechaVencimientoUpdate") + With SqlAdapter.SelectCommand.Parameters + .Add("@CveCompra", SqlDbType.Int).Value = CveCompra + .Add("@FechaVencimiento", SqlDbType.Date).Value = FechaVencimiento + .Add("@CveEmpresa", SqlDbType.Int).Value = CveEmpresa + End With + Try + SqlAdapter.Fill(Data) + Retorno = True + Catch ex As Exception + OnError("Ocurrió un error al actualizar la fecha de vencimiento de la compra.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo) + End Try + Return Retorno + End Function + #Region "REPORTE PUE SIN PAGO" Public Function GetPUESinPago(FI As DateTime, FF As DateTime, CveProveedor As Integer, CveSubProyecto As Integer, CveEmpresa As Integer, Optional CveUsuario As Integer = -1) As Boolean diff --git a/Compras/Compras.aspx b/Compras/Compras.aspx index 85648f022..3b9d4b659 100644 --- a/Compras/Compras.aspx +++ b/Compras/Compras.aspx @@ -654,23 +654,23 @@ <%-- 0 --%> - + <%-- 1 --%> - + <%-- 2 --%> - + <%-- 3 --%> - +
@@ -683,9 +683,9 @@ <%-- 4 --%> - + <%-- 5 --%> - + @@ -694,11 +694,11 @@ <%-- 6 --%> - + <%-- 7 --%> - + <%-- 8 --%> - + @@ -2228,7 +2228,7 @@ Fecha Pago: - +
@@ -2248,6 +2248,9 @@
+ + + diff --git a/Compras/Compras.aspx.vb b/Compras/Compras.aspx.vb index f9d14b40f..fb1ed92d5 100644 --- a/Compras/Compras.aspx.vb +++ b/Compras/Compras.aspx.vb @@ -2634,6 +2634,7 @@ Partial Class Compras_Compras DdlPS.Enabled = True TxtObsPS.Enabled = True LbAgregar.Enabled = True + LnkUpdateFechaPago.Visible = True End If BtnGuardar.Visible = False @@ -9947,18 +9948,18 @@ Partial Class Compras_Compras If Not (e.Row.RowState = DataControlRowState.Edit OrElse e.Row.RowState = 5) Then If e.Row.RowIndex = 0 Then - e.Row.Cells(0).Width = Unit.Pixel(15) - e.Row.Cells(1).Width = Unit.Pixel(45) - e.Row.Cells(2).Width = Unit.Pixel(70) - e.Row.Cells(3).Width = Unit.Pixel(230) - e.Row.Cells(4).Width = Unit.Pixel(202) - e.Row.Cells(5).Width = Unit.Pixel(155) - e.Row.Cells(6).Width = Unit.Pixel(155) - e.Row.Cells(7).Width = Unit.Pixel(50) - e.Row.Cells(8).Width = Unit.Pixel(80) - e.Row.Cells(9).Width = Unit.Pixel(80) - e.Row.Cells(10).Width = Unit.Pixel(43) - e.Row.Cells(11).Width = Unit.Pixel(43) + 'e.Row.Cells(0).Width = Unit.Pixel(15) + 'e.Row.Cells(1).Width = Unit.Pixel(45) + 'e.Row.Cells(2).Width = Unit.Pixel(70) + 'e.Row.Cells(3).Width = Unit.Pixel(230) + 'e.Row.Cells(4).Width = Unit.Pixel(202) + 'e.Row.Cells(5).Width = Unit.Pixel(155) + 'e.Row.Cells(6).Width = Unit.Pixel(155) + 'e.Row.Cells(7).Width = Unit.Pixel(50) + 'e.Row.Cells(8).Width = Unit.Pixel(80) + 'e.Row.Cells(9).Width = Unit.Pixel(80) + 'e.Row.Cells(10).Width = Unit.Pixel(43) + 'e.Row.Cells(11).Width = Unit.Pixel(43) If UsuarioActual.Empresa.UsaAC Then 'AndAlso (CveFactura > 0 Or CveCompra > 0) e.Row.Cells(12).Width = Unit.Pixel(150) @@ -18816,4 +18817,26 @@ Partial Class Compras_Compras AddPS2(EsNoDeducible:=EsNoDeducible) End Sub + Protected Sub LnkUpdateFechaPago_Click(sender As Object, e As EventArgs) + Dim ObjComp As New ClsCompras + Dim FechaPagoAnterior As String = "" + + If ObjComp.GetCompras(CveCompra, "-1", "-1", -1, -1, UsuarioActual.CveEmpresa) Then + If ObjComp.DtResultados.Rows.Count > 0 Then + FechaPagoAnterior = ObjComp.DtResultados.Rows(0)("FechaVencimiento").ToString.ToDate.ToShortDateString + End If + End If + + If FechaPagoAnterior = TxtFechaPago.Text Then + Alert("La fecha de pago seleccionada es igual que la anterior.", TipoMensaje.MsgAdvertencia) + ObjComp.Dispose() + Exit Sub + End If + + If ObjComp.UpdateFechaVencimientoCompra(CveCompra, TxtFechaPago.Text.ToDate, UsuarioActual.CveEmpresa) Then + Alert("Fecha de pago actualizada correctamente.") + End If + + ObjComp.Dispose() + End Sub End Class \ No newline at end of file From fbb44ec83e2b8813feeb028d5810ffd6f1b95672 Mon Sep 17 00:00:00 2001 From: janeth arvizu Date: Thu, 29 Aug 2019 14:32:16 -0700 Subject: [PATCH 36/38] =?UTF-8?q?Correcci=C3=B3n=20para=20que=20muestre=20?= =?UTF-8?q?Todas=20las=20facturas=20con=20y=20sin=20Saldo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Empresas/119/Formatos/RepClientesCxC.rpt | Bin 2768896 -> 2768896 bytes Empresas/137/Formatos/RepClientesCxC.rpt | Bin 540672 -> 540672 bytes Empresas/72/Formatos/RepClientesCxC.rpt | Bin 262144 -> 262144 bytes Empresas/80/Formatos/RepClientesCxC.rpt | Bin 262144 -> 262144 bytes Empresas/Grales/Formatos/RepClientesCxC.rpt | Bin 262144 -> 262144 bytes Ventas/Clientes.aspx | 2 +- Ventas/Clientes.aspx.vb | 8 ++++---- 7 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Empresas/119/Formatos/RepClientesCxC.rpt b/Empresas/119/Formatos/RepClientesCxC.rpt index 246d6595055eeb35922beb1914a456e813a64503..f8e06f121db9241a278a67cac3efa8be3f5d841c 100644 GIT binary patch delta 24222 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 diff --git a/Empresas/137/Formatos/RepClientesCxC.rpt b/Empresas/137/Formatos/RepClientesCxC.rpt index 13238899087427c7b8fa33f9375ecd1b122db82b..e73183a2dc1a9a2240631c8cfaeb6e6cd261291b 100644 GIT binary patch delta 23451 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 DEq=%c delta 23208 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 Av;Y7A diff --git a/Empresas/72/Formatos/RepClientesCxC.rpt b/Empresas/72/Formatos/RepClientesCxC.rpt index 3328a699946bceff59748376b4ec2470d8adfb96..7138b637498bb59ba0208a91d6fb2027c5778047 100644 GIT binary patch delta 23135 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 delta 23132 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
xASXkPI+m|^mTIV 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 bt)utrZ{$A!^RnaH delta 24043 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 D|1vi# diff --git a/Ventas/Clientes.aspx b/Ventas/Clientes.aspx index b7b555bec..9166908c9 100644 --- a/Ventas/Clientes.aspx +++ b/Ventas/Clientes.aspx @@ -1678,7 +1678,7 @@ - + diff --git a/Ventas/Clientes.aspx.vb b/Ventas/Clientes.aspx.vb index 5dd95dd44..62a203cb7 100644 --- a/Ventas/Clientes.aspx.vb +++ b/Ventas/Clientes.aspx.vb @@ -3643,14 +3643,14 @@ Partial Class Clientes Dim FechaVencimientoF As String = If(TxtFechaVFCxP.Text = "", "-1", TxtFechaVFCxP.Text).ToString Dim ObjMovtos As New ClsMovimientos() - If ObjMovtos.GetCxCDetalle(FI, FF, CveCliente, -1, -1, -1, -1, -1, "-1", "-1", DdlSucursalCliente.SelectedValue.ToEntero(), "S", -1, "-1", 1, UsuarioActual.CveEmpresa, -1, 1, TipoDocto:=TipoDocto, FechaCorte:=FechaCorte, FechaVI:=FechaVencimientoI, FechaVF:=FechaVencimientoF, CveUsuarioConsulta:=UsuarioActual.CveUsuario) Then - DtCxCFact = ObjMovtos.DtResultados '.FiltraParametros("Tipo = 'Act'").Copy ' If(DdlTipoCuentasCxC.SelectedValue = "-1", ObjMovtos.DtResultados.FiltraParametros("CveVentaAmortizacion IS NULL", "TipoDocto").Copy, ObjMovtos.DtResultados.FiltraParametros("Tipo = 'Act' AND CveVentaAmortizacion IS NULL", "TipoDocto")) + If ObjMovtos.GetCxCClienteDetalle(CveCliente, "-1", "-1", -1, -1, UsuarioActual.CveEmpresa, DdlSucursalCliente.SelectedValue.ToEntero) Then + DtCxCFact = If(DdlTipoCuentasCxC.SelectedValue = "-1", ObjMovtos.DtResultados.FiltraParametros("", "TipoDocto").Copy, ObjMovtos.DtResultados.FiltraParametros("Tipo = 'Act'", "TipoDocto")) 'cargo los anticipos NC DtCxCFact.Columns.Add("SaldoAnticipo", GetType(Decimal)) Dim dtt As DataTable = Nothing If ObjMovtos.GetAnticiposNCIxCCliente(CveCliente, -1, -1) Then - dtt = ObjMovtos.DtResultados.FiltraParametros("Saldo > 0 AND SaldoVentaAnticipo = 0 AND ((Tipo = 'IxC' AND CveIE > 0) OR (Tipo = 'Ant' AND CveVenta > 0) )") ' que tenga saldo de anticipo y no de cliente + dtt = If(DdlTipoCuentasCxC.SelectedValue = "-1", ObjMovtos.DtResultados.FiltraParametros("SaldoVentaAnticipo = 0 AND ((Tipo = 'IxC' AND CveIE > 0) OR (Tipo = 'Ant' AND CveVenta > 0) OR (Tipo = 'NC' AND CveVenta > 0) OR (Tipo = 'Egs' AND CveVenta > 0) )"), ObjMovtos.DtResultados.FiltraParametros("Saldo > 0 AND SaldoVentaAnticipo = 0 AND ((Tipo = 'IxC' AND CveIE > 0) OR (Tipo = 'Ant' AND CveVenta > 0) OR (Tipo = 'NC' AND CveVenta > 0) OR (Tipo = 'Egs' AND CveVenta > 0) )")) ' que tenga saldo de anticipo y no de cliente If dtt IsNot Nothing AndAlso dtt.Rows.Count > 0 Then For Each drt As DataRow In dtt.Rows Dim drr As DataRow = DtCxCFact.NewRow @@ -3685,7 +3685,7 @@ Partial Class Clientes SaldoIngDolaresPesos = SaldoIngDolaresPesos + (Row("Saldo").ToString.ToDouble * Row("TipoCambio").ToString.ToDouble) End If - ElseIf (Row("TipoDocto").ToString = "Ant" And Row("Saldo").ToString.ToDouble = 0) Or Row("TipoDocto").ToString = "IxC" Or Row("TipoDocto").ToString = "Egs" Or Row("TipoDocto").ToString = "Dev" Then 'Anticipos, NC, IxC + ElseIf (Row("TipoDocto").ToString = "Ant" And Row("Saldo").ToString.ToDouble = 0) Or Row("TipoDocto").ToString = "IxC" Or Row("TipoDocto").ToString = "NC" Or Row("TipoDocto").ToString = "Dev" Then 'Anticipos, NC, IxC ContaAnt = ContaAnt + 1 If Row("CveMoneda").ToString.ToEntero = 1 Then If Row("TipoDocto").ToString = "Dev" Then From b245084425e7ef01eebe990de39d76eed8d3fee0 Mon Sep 17 00:00:00 2001 From: Antonio Gonzalez Date: Thu, 29 Aug 2019 15:27:47 -0500 Subject: [PATCH 37/38] =?UTF-8?q?ahora=20se=20les=20puede=20reestablecer?= =?UTF-8?q?=20a=20los=20proveedores=20su=20contrase=C3=B1a=20en=20Compras/?= =?UTF-8?q?Proveedores.aspx?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Bancos/CuentasBancariasDetalle.aspx.vb | 2 -- General/SaldosIniciales.aspx.vb | 1 + Sistemas/PopUpAddUsuario.aspx | 1 - Sistemas/PopUpAddUsuario.aspx.vb | 2 ++ 4 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Bancos/CuentasBancariasDetalle.aspx.vb b/Bancos/CuentasBancariasDetalle.aspx.vb index beab9c9ec..aa6c11579 100644 --- a/Bancos/CuentasBancariasDetalle.aspx.vb +++ b/Bancos/CuentasBancariasDetalle.aspx.vb @@ -36,8 +36,6 @@ Partial Class Bancos_CuentasBancariasDetalle DdlUsuarios.DataSource = GlobalDTUsuarios(CveEmpresa:=UsuarioActual.CveEmpresa).FiltraParametros("", "Nombre") DdlUsuarios.DataBind() - - If Request("CveCuenta") IsNot Nothing AndAlso IsNumeric(Request("CveCuenta")) AndAlso Request("CveCuenta").ToEntero > 0 Then ViewState("CveCuenta") = Request("CveCuenta") diff --git a/General/SaldosIniciales.aspx.vb b/General/SaldosIniciales.aspx.vb index 7ffc1911c..be0979ef5 100644 --- a/General/SaldosIniciales.aspx.vb +++ b/General/SaldosIniciales.aspx.vb @@ -1561,6 +1561,7 @@ Partial Class General_SaldosIniciales End If Else mensajeError = $"No se encontró el producto o servicio con código ""{nuevaEntrada("CodigoPS")}""" + Throw New Exception() End If Next Else diff --git a/Sistemas/PopUpAddUsuario.aspx b/Sistemas/PopUpAddUsuario.aspx index 7dd9651a7..9d685feb4 100644 --- a/Sistemas/PopUpAddUsuario.aspx +++ b/Sistemas/PopUpAddUsuario.aspx @@ -69,7 +69,6 @@

-
diff --git a/Sistemas/PopUpAddUsuario.aspx.vb b/Sistemas/PopUpAddUsuario.aspx.vb index 110869def..c99a8cbf3 100644 --- a/Sistemas/PopUpAddUsuario.aspx.vb +++ b/Sistemas/PopUpAddUsuario.aspx.vb @@ -716,6 +716,7 @@ Partial Class Sistemas_PopUpAddUsuario GvModulosPermiso.DataSource = ObjProcesos.DtResultados.FiltraParametros($"CvePlataforma = 6") ElseIf UsuarioActual.Empresa.CvePlataforma = 1 And CveProveedor > 0 Then GvModulosPermiso.DataSource = ObjProcesos.DtResultados.FiltraParametros($"CvePlataforma = 7") + BtnDefaultPWD.Visible = True ElseIf UsuarioActual.Empresa.CvePlataforma = 3 Then GvModulosPermiso.DataSource = ObjProcesos.DtResultados.FiltraParametros("CveModulo = 433") End If @@ -855,4 +856,5 @@ Partial Class Sistemas_PopUpAddUsuario CargaComandos() UpDatos.Update() End Sub + End Class From 2cbeb50aac42f1d7ed5560b2697cf3e7a7ab0a0a Mon Sep 17 00:00:00 2001 From: Raul Pimienta Date: Thu, 29 Aug 2019 17:21:47 -0700 Subject: [PATCH 38/38] Soporte en fluctuacion con pago de nc --- Ventas/Ventas.aspx.vb | 71 +++++++++++++++++++++++++++++++++++++------ 1 file changed, 61 insertions(+), 10 deletions(-) diff --git a/Ventas/Ventas.aspx.vb b/Ventas/Ventas.aspx.vb index b6d971977..d9fd38461 100644 --- a/Ventas/Ventas.aspx.vb +++ b/Ventas/Ventas.aspx.vb @@ -11183,6 +11183,7 @@ Partial Class Ventas Dim ObjConta As New ClsContabilidad Dim ObjVenta As New ClsVentas(ObjConta.IniciaTransacSQL()) + Dim ObjIE As New ClsBancos(ObjConta.IniciaTransacSQL()) Dim ObjContpaq As ClsContPAQi = Nothing Dim CvePrepoliza As Integer @@ -11215,11 +11216,16 @@ Partial Class Ventas ' FechaMaxima = "01/01/2018".ToDate 'End If + + + + CvePrepoliza = ObjConta.AddPrePolizas("Ventas/Anticipos", CvePlantillaPoliza, TxtTotal.Text.ToDecimal, TxtTotal.Text.ToDecimal, DdlMoneda.SelectedValue.ToEntero, TxtFechaAnticipoCliente.Text.ToDate, String.Format("{0} {1} {2}-{3}", If(EsAnticipo2017Jam, "Aplicación Anticipo 2017", ""), NombreCliente, Serie, TxtFolio.Text), UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa) If CvePrepoliza > 0 Then Dim tipoCambioPago As Decimal = 1 Dim tipoCambioVenta As Decimal = 1 + Dim tipoCambioVentaValuacion As Decimal = 1 Dim PorcentajePago As Decimal = 100 Dim dtConceptos As DataTable = Nothing Dim CveMonedaVenta = DdlMoneda.SelectedValue.ToEntero @@ -11243,21 +11249,42 @@ Partial Class Ventas For Each gvr As GridViewRow In GVAnticipos.Rows If gvr.FCCheckBox("Chk" & gvr.RowIndex).Checked Then + + Dim FechaUltimaFluctuacion As Date = MinFecha + Dim TipoCambioFluctuacion As Decimal = 1 + If ObjIE.GetFluctuacionesBitacora(UsuarioActual.CveEmpresa) Then + If ObjIE.DtResultados.Rows.Count > 0 Then + Dim tFecha As Date = gvr.DataKey("Fecha").ToDate + Dim Fecha As String = String.Format("{0}/{1}/{2}", tFecha.Year, tFecha.Month, tFecha.Day) + Dim drr As DataRow = ObjIE.DtResultados.FiltroPrimero("Fecha < #" & Fecha & "#", "Fecha DESC") + + If drr IsNot Nothing Then + FechaUltimaFluctuacion = drr("Fecha").ToString.ToDate + TipoCambioFluctuacion = drr("TipoCambio").ToString.ToDecimal + End If + + End If + End If + If DdlMoneda.SelectedValue.ToEntero = 1 AndAlso gvr.DataKey("CveMoneda").ToEntero = 1 Then 'Si la venta viene en Pesos y se va a pagar en Pesos tipoCambioPago = 1 tipoCambioVenta = 1 + tipoCambioVentaValuacion = 1 PorcentajePago = gvr.FCTextBox("TxtAnticipo" & gvr.RowIndex).Text.ToDecimal / gvr.DataKey("Original").ToDecimal ElseIf DdlMoneda.SelectedValue.ToEntero = 2 AndAlso gvr.DataKey("CveMoneda").ToEntero = 1 Then 'Si la venta viene en Dolares y se va a pagar en Pesos tipoCambioPago = gvr.FCTextBox("TxtTC" & gvr.RowIndex).Text.ToDecimal tipoCambioVenta = TxtTipoCambio.Text.ToDecimal + tipoCambioVentaValuacion = If(TxtFecha.Text.ToDate < FechaUltimaFluctuacion, TipoCambioFluctuacion, TxtTipoCambio.Text.ToDecimal) PorcentajePago = (gvr.FCTextBox("TxtAnticipo" & gvr.RowIndex).Text.ToDecimal) / gvr.DataKey("Original").ToDecimal ElseIf DdlMoneda.SelectedValue.ToEntero = 2 AndAlso gvr.DataKey("CveMoneda").ToEntero = 2 Then 'Si la venta viene en Dolares y se va a pagar en DOLARES tipoCambioPago = gvr.DataKey("TipoCambio").ToString.ToDecimal tipoCambioVenta = TxtTipoCambio.Text.ToDecimal + tipoCambioVentaValuacion = If(TxtFecha.Text.ToDate < FechaUltimaFluctuacion, TipoCambioFluctuacion, TxtTipoCambio.Text.ToDecimal) PorcentajePago = gvr.FCTextBox("TxtAnticipo" & gvr.RowIndex).Text.ToDecimal / gvr.DataKey("Original").ToDecimal ElseIf DdlMoneda.SelectedValue.ToEntero = 1 AndAlso gvr.DataKey("CveMoneda").ToEntero = 1 Then 'Si la venta viene en pesos y se va a pagar en DOLARES tipoCambioPago = gvr.FCTextBox("TxtTC" & gvr.RowIndex).Text.ToDecimal tipoCambioVenta = 1 + tipoCambioVentaValuacion = 1 PorcentajePago = (gvr.FCTextBox("TxtAnticipo" & gvr.RowIndex).Text.ToDecimal) / gvr.DataKey("Original").ToDecimal End If @@ -11284,17 +11311,17 @@ Partial Class Ventas importeMX = importeMovimiento ElseIf DdlMoneda.SelectedValue.ToEntero = 2 AndAlso gvr.DataKey("CveMoneda").ToEntero = 1 Then importeMovimiento = gvr.FCTextBox("TxtAnticipo" & gvr.RowIndex).Text.ToDecimal - importeMX = gvr.FCTextBox("TxtAnticipo" & gvr.RowIndex).Text.ToDecimal * tipoCambioVenta + importeMX = gvr.FCTextBox("TxtAnticipo" & gvr.RowIndex).Text.ToDecimal * tipoCambioVentaValuacion ElseIf DdlMoneda.SelectedValue.ToEntero = 2 AndAlso gvr.DataKey("CveMoneda").ToEntero = 2 Then importeMovimiento = gvr.FCTextBox("TxtAnticipo" & gvr.RowIndex).Text.ToDecimal - importeMX = gvr.FCTextBox("TxtAnticipo" & gvr.RowIndex).Text.ToDecimal * tipoCambioVenta + importeMX = gvr.FCTextBox("TxtAnticipo" & gvr.RowIndex).Text.ToDecimal * tipoCambioVentaValuacion ElseIf DdlMoneda.SelectedValue.ToEntero = 1 AndAlso gvr.DataKey("CveMoneda").ToEntero = 2 Then importeMovimiento = gvr.FCTextBox("TxtAnticipo" & gvr.RowIndex).Text.ToDecimal importeMX = importeMovimiento End If importeMovimiento = Math.Round(importeMovimiento, 2) importeMX = Math.Round(importeMX, 2) - TipoCambioGeneral = tipoCambioVenta + TipoCambioGeneral = tipoCambioVentaValuacion If CveMonedaVenta = 1 Then IdCtaContable = IdCtaContClientes @@ -11315,7 +11342,7 @@ Partial Class Ventas CveCuentaContabilizacion = 0 End If - If Not ObjConta.AddPrePolizasDetalle(CvePrepoliza, TipoMovimiento, 0, Concepto, 207, Concepto, FechaMovimiento, IdCtaContable, -1, CveVenta:=CveVenta, CveCliente:=CveCliente, ImporteMX:=Math.Round(importeMovimiento * tipoCambioVenta - importeMovimiento, 2, MidpointRounding.AwayFromZero), ImporteME:=importeMovimiento, CveCuenta:=CveCuenta, TipoCambio:=tipoCambioVenta) Then + If Not ObjConta.AddPrePolizasDetalle(CvePrepoliza, TipoMovimiento, 0, Concepto, 207, Concepto, FechaMovimiento, IdCtaContable, -1, CveVenta:=CveVenta, CveCliente:=CveCliente, ImporteMX:=Math.Round(importeMovimiento * tipoCambioVenta - importeMovimiento, 2, MidpointRounding.AwayFromZero), ImporteME:=importeMovimiento, CveCuenta:=CveCuenta, TipoCambio:=tipoCambioVentaValuacion) Then ErrorConta = True End If @@ -11543,13 +11570,14 @@ Partial Class Ventas If CveMonedaVenta <> 1 OrElse gvr.DataKey("CveMoneda").ToEntero <> 1 Then IdCtaContable = UsuarioActual.Empresa.IdCuentaGananciaCambiaria CveCuenta = UsuarioActual.Empresa.CveCuentaGananciaCambiaria + Dim TipoCambioGanancia As Decimal = If(Not (gvr.DataKey("CveIE").ToString.ToEntero > 0 AndAlso gvr.DataKey("CveConceptoContable").ToString().ToEntero = 66), tipoCambioVentaValuacion, tipoCambioVenta) - If tipoCambioPago > tipoCambioVenta AndAlso gvr.DataKey("CveMoneda").ToEntero = 2 Then - importeMovimiento = (gvr.FCTextBox("TxtAnticipo" & gvr.RowIndex).Text.ToDecimal * tipoCambioPago) - (gvr.FCTextBox("TxtAnticipo" & gvr.RowIndex).Text.ToDecimal * tipoCambioVenta) 'Añadimos la diferencia de ganancia en la venta + If tipoCambioPago > TipoCambioGanancia AndAlso gvr.DataKey("CveMoneda").ToEntero = 2 Then + importeMovimiento = (gvr.FCTextBox("TxtAnticipo" & gvr.RowIndex).Text.ToDecimal * tipoCambioPago) - (gvr.FCTextBox("TxtAnticipo" & gvr.RowIndex).Text.ToDecimal * TipoCambioGanancia) 'Añadimos la diferencia de ganancia en la venta importeMovimiento = Math.Abs(Math.Round(importeMovimiento, 2)) importeMX = importeMovimiento End If - Dim TCImpuestos As Decimal = If(FuncionalidadFluctuacionImpuestos, tipoCambioVenta, tipoCambioPago) + Dim TCImpuestos As Decimal = If(FuncionalidadFluctuacionImpuestos, TipoCambioGanancia, tipoCambioPago) TipoCambioGeneral = TCImpuestos Else importeMovimiento = 0 @@ -11558,13 +11586,14 @@ Partial Class Ventas If CveMonedaVenta <> 1 OrElse gvr.DataKey("CveMoneda").ToEntero <> 1 Then IdCtaContable = UsuarioActual.Empresa.IdCuentaPerdidaCambiaria CveCuenta = UsuarioActual.Empresa.CveCuentaPerdidaCambiaria + Dim TipoCambioPerdida As Decimal = If(Not (gvr.DataKey("CveIE").ToString.ToEntero > 0 AndAlso gvr.DataKey("CveConceptoContable").ToString().ToEntero = 66), tipoCambioVentaValuacion, tipoCambioVenta) - If tipoCambioPago < tipoCambioVenta AndAlso gvr.DataKey("CveMoneda").ToEntero = 2 Then - importeMovimiento = (gvr.FCTextBox("TxtAnticipo" & gvr.RowIndex).Text.ToDecimal * tipoCambioVenta) - (gvr.FCTextBox("TxtAnticipo" & gvr.RowIndex).Text.ToDecimal * tipoCambioPago) 'Añadimos la diferencia de perdida en la venta + If tipoCambioPago < TipoCambioPerdida AndAlso gvr.DataKey("CveMoneda").ToEntero = 2 Then + importeMovimiento = (gvr.FCTextBox("TxtAnticipo" & gvr.RowIndex).Text.ToDecimal * TipoCambioPerdida) - (gvr.FCTextBox("TxtAnticipo" & gvr.RowIndex).Text.ToDecimal * tipoCambioPago) 'Añadimos la diferencia de perdida en la venta importeMovimiento = Math.Abs(Math.Round(importeMovimiento, 2)) importeMX = importeMovimiento End If - Dim TCImpuestos As Decimal = If(FuncionalidadFluctuacionImpuestos, tipoCambioVenta, tipoCambioPago) + Dim TCImpuestos As Decimal = If(FuncionalidadFluctuacionImpuestos, TipoCambioPerdida, tipoCambioPago) TipoCambioGeneral = TCImpuestos Else importeMovimiento = 0 @@ -11627,6 +11656,8 @@ Partial Class Ventas End If ObjConta.Dispose() + ObjIE.Dispose() + Else 'cuando no se ha registrado la venta @@ -21204,6 +21235,26 @@ Partial Class Ventas TrFolioFiscal.Visible = False TxtFecha.Text = Now.ToShortDateString() TipoCambioFactura = TxtTipoCambio.Text.ToDecimal + + If DdlMoneda.SelectedValue.ToEntero > 1 Then + Dim ObjIE As New ClsBancos + If ObjIE.GetFluctuacionesBitacora(UsuarioActual.CveEmpresa) Then + If ObjIE.DtResultados.Rows.Count > 0 Then + Dim tFecha As Date = TxtFecha.Text.ToDate + Dim Fecha As String = String.Format("{0}/{1}/{2}", tFecha.Year, tFecha.Month, tFecha.Day) + Dim drr As DataRow = ObjIE.DtResultados.FiltroPrimero("Fecha < #" & Fecha & "#", "Fecha DESC") + + If drr IsNot Nothing Then + TipoCambioFactura = drr("TipoCambio").ToString.ToDecimal + End If + + End If + End If + ObjIE.Dispose() + Else + TipoCambioFactura = 1 + End If + TxtTipoCambio.Text = GlobalTipoCambio(Now).ToString DivEstatusFac.Visible = False