Imports System.Data Imports Extensiones Imports System.Web.Services Partial Class Contabilidad_DiarioPagos Inherits ClsPaginas #Region "Propiedades" Private Property DtDatos As DataTable Get Return CType(ViewState("DtDatos"), DataTable) End Get Set(value As DataTable) ViewState("DtDatos") = value End Set End Property Private Property DtDatosCompras As DataTable Get Return CType(ViewState("DtDatosCompras"), DataTable) End Get Set(value As DataTable) ViewState("DtDatosCompras") = value End Set End Property Private Property DtDatosFyE As DataTable Get Return CType(ViewState("DtDatosFyE"), DataTable) End Get Set(value As DataTable) ViewState("DtDatosFyE") = value End Set End Property Private Property DtDatosFyECompras As DataTable Get Return CType(ViewState("DtDatosFyECompras"), DataTable) End Get Set(value As DataTable) ViewState("DtDatosFyECompras") = value End Set End Property Private Property DtDatosTransf As DataTable Get Return CType(ViewState("DtDatosTransf"), DataTable) End Get Set(value As DataTable) ViewState("DtDatosTransf") = value End Set End Property Private Property DtDatosAnticipos As DataTable Get Return CType(ViewState("DtDatosAnticipos"), DataTable) End Get Set(value As DataTable) ViewState("DtDatosAnticipos") = value End Set End Property Private Property DtDatosAnticiposCompras As DataTable Get Return CType(ViewState("DtDatosAnticiposCompras"), DataTable) End Get Set(value As DataTable) ViewState("DtDatosAnticiposCompras") = value End Set End Property Private Property DtTiposPoliza As DataTable Get Return CType(ViewState("DtTiposPoliza"), DataTable) End Get Set(value As DataTable) ViewState("DtTiposPoliza") = value End Set End Property #End Region Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load If Not Page.IsPostBack Then TxtFecha.Text = Today.ToShortDateString DdlProveedores.DataSource = GlobalDTCompProveedores(UsuarioActual.CveEmpresa) DdlProveedores.DataBind() TxtFecha.AutoPostBack = True txtFechaI.Text = Now.AddMonths(0).FirstDayOfMonth.ToShortDateString txtFechaF.Text = Now.ToShortDateString If UsuarioActual.Sesion("DiarioPagos-CveProveedor").ToString <> "" Then DdlProveedores.SelectedValue = UsuarioActual.Sesion("DiarioPagos-CveProveedor").ToString.Trim If UsuarioActual.Sesion("DiarioPagos-FI").ToString <> "" Then txtFechaI.Text = UsuarioActual.Sesion("DiarioPagos-FI").ToString.Trim If UsuarioActual.Sesion("DiarioPagos-FF").ToString <> "" Then txtFechaF.Text = UsuarioActual.Sesion("DiarioPagos-FF").ToString.Trim If UsuarioActual.Empresa.UsaContabilidad Then Dim Cc As New ClsContPAQi(UsuarioActual.Empresa) If Cc.GetTiposPoliza(-1, "-1") Then DdlPolizaTipo.DataSource = Cc.DtResultados DdlPolizaTipo.DataBind() DtTiposPoliza = Cc.DtResultados End If DdlPolizaTipo.SelectedValue = "2" 'busco si se ocupa el tipo de cambio CargaDatos(-1) Cc.Dispose() Else Alert("Este módulo requiere el uso de Contabilidad.", TipoMensaje.MsgAdvertencia) BtnConsultar.Enabled = False BtnContabilizar.Enabled = False End If CargaCuenta() CargaTipoTransaccion("-1") End If End Sub Private Sub CargaCuenta() DdlCuenta.Items.Clear() DdlCuenta.DataSource = GlobalDTBancosCuentas(UsuarioActual.CveUsuario, CveEmpresa:=UsuarioActual.CveEmpresa).FiltraParametros("CveTipoCuenta IN (2)") DdlCuenta.DataBind() DdlCuenta.Items.Insert(0, New ListItem("Todas", "-1")) End Sub Private Sub CargaTipoTransaccion(Tipo As String) DdlTipoTransaccion.Items.Clear() DdlTipoTransaccion.DataSource = GlobalDTTipoTransacciones.FiltraParametros("Tipo = 'Egs' ") DdlTipoTransaccion.DataBind() DdlTipoTransaccion.Items.Insert(0, New ListItem("Todos", "-1")) End Sub Private Sub CargaDatos(Optional CargaOpcion As Integer = -2) If CargaOpcion = -2 Then CargaOpcion = Tabs.ActiveTabIndex Dim Conta As New ClsContabilidad 'cuando se junta el pago y la compra en el mismo listado Dim ds As DataSet If CargaOpcion.Contiene(-1, 0) Then ds = Conta.GetDiarioPagosCompras(DdlProveedores.SelectedValue.ToEntero, txtFechaI.Text.ToDate, txtFechaF.Text.ToDate, 1, DdlCuenta.SelectedValue.ToEntero, DdlTipoTransaccion.SelectedValue.ToEntero, UsuarioActual.CveEmpresa) If ds IsNot Nothing AndAlso ds.Tables.Count = 2 Then DtDatos = ds.Tables(0).FiltraParametros("CveIEs = 1") ' filtra solo los movimientos de un solo cheque, por ejemplo el pago de varios deudores diversos con el mismo cheque. DtDatosCompras = ds.Tables(1) GvC.DataSource = DtDatos GvC.DataBind() LblTotComp.Text = String.Format("{0} Registros", DtDatos.Rows.Count) End If If DtDatos IsNot Nothing AndAlso DtDatos.FiltraParametros("CveMoneda <> 1").Rows.Count > 0 Then 'hay movimientos que son diferentes a pesos TbTipoCambio.Visible = True Dim Cc As New ClsContPAQi(UsuarioActual.Empresa) TxtTC.Text = Cc.getTipoCambio(Today).ToString Cc.Dispose() If TxtTC.Text.ToDouble > 0 Then TxtTC.Enabled = False Else TxtTC.Text = "" End If End If '------------------------------------------ consulto F y E If CargaOpcion.Contiene(-1, 1) Then ds = Conta.GetDiarioPagosCompras(DdlProveedores.SelectedValue.ToEntero, txtFechaI.Text.ToDate, txtFechaF.Text.ToDate, 2, DdlCuenta.SelectedValue.ToEntero, DdlTipoTransaccion.SelectedValue.ToEntero, UsuarioActual.CveEmpresa) If ds IsNot Nothing AndAlso ds.Tables.Count = 2 Then DtDatosFyE = ds.Tables(0) DtDatosFyECompras = ds.Tables(1) GvFyE.DataSource = DtDatosFyE GvFyE.DataBind() End If End If ' '------------------------------------------ consulto Transferencias If CargaOpcion.Contiene(-1, 2) Then ds = Conta.GetDiarioPagosCompras(DdlProveedores.SelectedValue.ToEntero, txtFechaI.Text.ToDate, txtFechaF.Text.ToDate, 3, DdlCuenta.SelectedValue.ToEntero, DdlTipoTransaccion.SelectedValue.ToEntero, UsuarioActual.CveEmpresa) If ds IsNot Nothing AndAlso ds.Tables.Count = 1 Then DtDatosTransf = ds.Tables(0) GvT.DataSource = DtDatosTransf.FiltraParametros("TipoRenglon = 0") GvT.DataBind() End If End If ' '------------------------------------------ consulto anticipos If CargaOpcion.Contiene(-1, 3) Then ds = Conta.GetDiarioPagosCompras(DdlProveedores.SelectedValue.ToEntero, txtFechaI.Text.ToDate, txtFechaF.Text.ToDate, 4, DdlCuenta.SelectedValue.ToEntero, DdlTipoTransaccion.SelectedValue.ToEntero, UsuarioActual.CveEmpresa) If ds IsNot Nothing AndAlso ds.Tables.Count = 2 Then DtDatosAnticipos = ds.Tables(0) DtDatosAnticiposCompras = ds.Tables(1) GvAnt.DataSource = DtDatosAnticipos GvAnt.DataBind() End If End If UPPDatos.Update() Conta.Dispose() End Sub Protected Sub GvC_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles GvC.RowDataBound If e.Row.RowType = DataControlRowType.DataRow Then If RBLOpcion.SelectedValue = "2" Then ' por separado e.Row.FCDropDownList("DdlPolizaTipo").DataSource = DtTiposPoliza e.Row.FCDropDownList("DdlPolizaTipo").DataBind() e.Row.FCDropDownList("DdlPolizaTipo").SelectedValue = "2" e.Row.FindControl("TrConta").Visible = True Else e.Row.FindControl("TrConta").Visible = False End If Dim gvC As GridView = e.Row.FCGridView("GvPC") Dim tDtCompras As DataTable = DtDatosCompras.FiltraParametros(String.Format("CveIE = {0} AND CvePS = -1 ", e.Row.DBCampo("CveIE"))) gvC.DataSource = tDtCompras gvC.DataBind() Dim Simplificar As Boolean = False If e.Row.DBCampo("IdCtaContBancos").ToEntero > 0 Then ' que sea valido en los IEs ' valido en las compras If tDtCompras.MIN("Valido") = "1" AndAlso e.Row.DBCampo("Valido") = "1" Then e.Row.FCCheckBox("Chk").Visible = True ''pero si hay compras sin contabilizar, lo va a requerir siempre y cuando no se pague el 100% If e.Row.DBCampo("IdCtaContProveedores").ToEntero = 0 AndAlso tDtCompras.MIN("CompraIdPoliza") = "0" AndAlso e.Row.DBCampo("Importe").ToDouble < tDtCompras.SUM("Total") Then e.Row.FCCheckBox("Chk").Visible = False End If ''si hay compras contabilizadas, lo va a requerir siempre If e.Row.DBCampo("IdCtaContProveedores").ToEntero = 0 AndAlso tDtCompras.MIN("CompraIdPoliza") = "1" Then e.Row.FCCheckBox("Chk").Visible = False End If Else 'sino tiene cuenta el proveedor, pero el total de las comras y el cheque son iguales, y las compras tiene cuenta vinculada If e.Row.DBCampo("IdCtaContProveedores").ToEntero = 0 AndAlso tDtCompras.MIN("CompraIdPoliza") = "0" And tDtCompras.MIN("Valido") = "1" AndAlso e.Row.DBCampo("Importe").ToDouble = tDtCompras.SUM("Total") Then e.Row.FCCheckBox("Chk").Visible = True End If 'sino tiene cuenta el proveedor, pero el total de las comras y el cheque son iguales, y las compras tiene cuenta vinculada If e.Row.DBCampo("IdCtaContProveedores").ToEntero = 0 AndAlso tDtCompras.MIN("CompraIdPoliza") = "0" And tDtCompras.MIN("Valido") = "1" AndAlso e.Row.DBCampo("Importe").ToDouble = tDtCompras.SUM("Total") Then e.Row.FCCheckBox("Chk").Visible = True End If If e.Row.DBCampo("CveEstatusIE") = "2" AndAlso e.Row.DBCampo("Importe").ToDouble = 0 Then e.Row.FCCheckBox("Chk").Visible = True End If 'sino tiene cuenta 'si la compra es mayor o igual al anticipo, se simplifica el movimiento a anticipos If e.Row.DBCampo("CvePlantillaPoliza").ToEntero.Contiene(10, 52, 1) AndAlso e.Row.DBCampo("IdCtaContBancos").ToEntero > 0 AndAlso tDtCompras IsNot Nothing AndAlso tDtCompras.Rows.Count > 0 AndAlso tDtCompras.SUM("Total") >= e.Row.DBCampo("Importe") AndAlso (e.Row.DBCampo("CveMoneda") = "1" OrElse (e.Row.DBCampo("CveMoneda") = "2" AndAlso e.Row.DBCampo("IdCtaContExtranjera").ToEntero > 0)) Then Simplificar = True e.Row.FCCheckBox("Chk").Visible = True End If End If End If 'FALTA LA FUNCIONALIDAD DE QUE SEA REQUERIDA LA COMPLEMENTARIA 'If e.Row.DBCampo("CveMoneda").ToEntero = 2 AndAlso e.Row.DBCampo("IdCtaContBancosComplementaria").ToEntero <= 0 Then ' que sea valido en los IEs ' e.Row.FCCheckBox("Chk").Visible = False ' e.Row.FCHyperLink("HplCuenta").ForeColor = Drawing.Color.OrangeRed ' e.Row.FCHyperLink("HplCuenta").ToolTip = "Falta vincular la cuenta contable complementaria de la cuenta bancaria" 'End If 'falta funcionalidad para detectar que siempre use complementaria 'If e.Row.DBCampo("CveMoneda").ToEntero = 2 AndAlso e.Row.DBCampo("IdCtaContComplementaria").ToEntero <= 0 Then ' que sea valido en los IEs ' e.Row.FCCheckBox("Chk").Visible = False ' 'e.Row.FCHyperLink("HplProv").ForeColor = Drawing.Color.OrangeRed ' 'e.Row.FCHyperLink("HplProv").ToolTip = "Falta vincular la cuenta contable complementaria de la cuenta bancaria" 'End If 'If e.Row.DBCampo("IdCtaContProveedores").ToEntero = 0 Then ' 'falta vincularse el proveedor ' If e.Row.FCHyperLink("HplProv") IsNot Nothing Then ' e.Row.FCHyperLink("HplProv").ForeColor = Drawing.Color.OrangeRed ' e.Row.FCHyperLink("HplProv").ToolTip = "Falta vincular la cuenta contable" ' End If 'End If 'cuando es anticipo If e.Row.DBCampo("CveMoneda").ToEntero = 1 AndAlso e.Row.DBCampo("IdCtaContAnticipos").ToEntero = 0 AndAlso e.Row.DBCampo("CvePlantillaPoliza").Contiene(10, 52) And Simplificar = False Then 'falta vicularse la cuenta e.Row.FCTextBox("TxtDescripcion").ForeColor = Drawing.Color.OrangeRed e.Row.FCTextBox("TxtDescripcion").ToolTip = "Falta vincular la cuenta contable de anticipos" End If If e.Row.DBCampo("IdCuentaIVAAcreditable").ToEntero = 0 Then 'falta vicularse el proveedor e.Row.FCLabel("LblIVA").ForeColor = Drawing.Color.OrangeRed e.Row.FCLabel("LblIVA").ToolTip = "Falta vincular la cuenta contable" End If If e.Row.DBCampo("IdCtaContBancos").ToEntero = 0 Then 'falta vicularse el proveedor e.Row.FCHyperLink("HplCuenta").ForeColor = Drawing.Color.OrangeRed e.Row.FCHyperLink("HplCuenta").ToolTip = "Falta vincular la cuenta contable a la cuenta bancaria" End If End If End Sub Protected Sub GvPC_RowDataBound(sender As Object, e As GridViewRowEventArgs) If e.Row.RowType = DataControlRowType.DataRow Then Dim gv As GridView = e.Row.FCGridView("GvD") Dim dtt As DataTable Select Case DirectCast(DirectCast(e.Row.BindingContainer, GridView).NamingContainer.BindingContainer, GridView).ID Case "GvAnt" dtt = DtDatosAnticiposCompras Case "GvFyE" dtt = DtDatosFyECompras Case Else dtt = DtDatosCompras End Select If e.Row.DBCampo("CveIE").ToEntero > 0 Then dtt = dtt.FiltraParametros(String.Format("CveCompra = {0} AND CveIE = {1} AND CvePS <> -1", e.Row.DBCampo("CveCompra"), e.Row.DBCampo("CveIE"))) If e.Row.DBCampo("CompraIdPoliza").ToEntero > 0 Then e.Row.BackColor = System.Drawing.Color.LightBlue End If gv.DataSource = dtt gv.DataBind() If e.Row.DBCampo("CveMonedaCompra") = "2" Then 'obtengo el padre, el valor de la fluctuacion Dim FechaFluctuacion As Date = DirectCast(DirectCast(e.Row.BindingContainer, GridView).BindingContainer, GridViewRow).DataKey("FechaFluctuacion").ToDate Dim TipoCambioFluctuacion As Double = DirectCast(DirectCast(e.Row.BindingContainer, GridView).BindingContainer, GridViewRow).DataKey("TipoCambioFluctuacion").ToDouble If UsuarioActual.CveEmpresa = 66 Then 'si la fecha de la compra es mayor a la de la fluctuacion, debe de tomar su tipo de cambio, sino toma el de la ultima fluctuacion TipoCambioFluctuacion = If(e.Row.DBCampo("Fecha").ToDate < FechaFluctuacion, TipoCambioFluctuacion, e.Row.DBCampo("TC_Compra").ToDouble) FechaFluctuacion = If(e.Row.DBCampo("Fecha").ToDate < FechaFluctuacion, FechaFluctuacion, e.Row.DBCampo("Fecha").ToDate) Else FechaFluctuacion = e.Row.DBCampo("Fecha").ToDate TipoCambioFluctuacion = e.Row.DBCampo("TC_Compra").ToDouble End If e.Row.FCHiddenField("HdnTC").Value = TipoCambioFluctuacion.ToString e.Row.FCLabel("LblTC").Text = TipoCambioFluctuacion.ToString e.Row.FCLabel("LblTC").ToolTip = String.Format("Fecha Tipo Cambio: {0}", FechaFluctuacion.ToShortDateString) 'cuando falta la cuenta complementaria 'If e.Row.DBCampo("IdCtaContComplementaria").ToEntero <= 0 Then ' e.Row.FCHyperLink("HplProv").ForeColor = Drawing.Color.OrangeRed ' e.Row.FCHyperLink("HplProv").ToolTip = "Falta vincular la cuenta contable complementaria del proveedor" 'End If End If If e.Row.DBCampo("IdCtaContProveedores").ToEntero <= 0 Then 'falta vicularse el proveedor e.Row.FCHyperLink("HplProv").ForeColor = Drawing.Color.OrangeRed e.Row.FCHyperLink("HplProv").ToolTip = "Falta vincular la cuenta contable" End If If e.Row.DBCampo("RetIVA").ToDouble > 0 AndAlso e.Row.DBCampo("IdCtaContRetIVA").ToEntero = 0 Then 'falta vicularse el proveedor e.Row.FCLabel("LblRetIVA").ForeColor = Drawing.Color.OrangeRed e.Row.FCLabel("LblRetIVA").ToolTip = "Falta vincular la cuenta contable de retencion de IVA" End If If e.Row.DBCampo("RetISR").ToDouble > 0 AndAlso e.Row.DBCampo("IdCtaContRetISR").ToEntero = 0 Then 'falta vicularse el proveedor e.Row.FCLabel("LblRetISR").ForeColor = Drawing.Color.OrangeRed e.Row.FCLabel("LblRetISR").ToolTip = "Falta vincular la cuenta contable de retencion de ISR" End If 'If e.Row.DBCampo("Actual").ToEntero = 0 AndAlso e.Row.DBCampo("CompraIdPoliza").ToEntero = 0 Then ' e.Row.FCHyperLink("HplFact").ForeColor = Drawing.Color.OrangeRed ' e.Row.FCHyperLink("HplFact").ToolTip = "Factura del mes anterior no provisionada" 'End If End If End Sub Protected Sub GvD_RowDataBound(sender As Object, e As GridViewRowEventArgs) If e.Row.RowType = DataControlRowType.DataRow Then If e.Row.DBCampo("IdCuentaGasto").ToEntero > 0 Then e.Row.FCDropDownList("DdlM").Items.Add(New WebControls.ListItem("Gasto", e.Row.DBCampo("IdCuentaGasto"))) ' If e.Row.DBCampo("IdCuentaAnticipo").ToEntero > 0 Then e.Row.FCDropDownList("DdlM").Items.Add(New ListItem("Anticipo", e.Row.DBCampo("IdCuentaAnticipo"))) 'If e.Row.DBCampo("IdCuentaInventario").ToEntero > 0 Then e.Row.FCDropDownList("DdlM").Items.Add(New ListItem("Inventario", e.Row.DBCampo("IdCuentaInventario"))) 'e.Row.FCLiteral("LitCta").Text = String.Format("
{0}
", e.Row.DBCampo("CuentaGasto")) End If End Sub Protected Sub BtnContabilizar_Click(sender As Object, e As EventArgs) Handles BtnContabilizar.Click If Tabs.ActiveTabIndex = 0 Then ' AndAlso UsuarioActual.CveEmpresa.Contiene(13, 66) ContabilizarCompras(1) Exit Sub End If If Tabs.ActiveTabIndex = 1 Then ContabilizarCompras(3) 'funcionarios y empleados Exit Sub End If If Tabs.ActiveTabIndex = 2 Then ' transferencias ContabilizarTransferencias() Exit Sub End If If Tabs.ActiveTabIndex = 3 Then ' anticipos ContabilizarCompras(2) Exit Sub End If End Sub Private Sub ContabilizarCompras(Opcion As Integer) Dim Contador As Integer = 0 Dim ContadorME As Integer = 0 Dim GvTmp As GridView Dim TipoCambioCompra As Decimal ' se utiliza el tipo de cambio con fecha mayor, entre la fecha de la compra y la ultima fluctuacion Dim TipoCambioPago As Decimal ' utiliza el tipo de cambio del pago Dim TipoCambioFechaCompra As Decimal 'utiliza el tipo de cambio exclusivo de la fecha de la compra Select Case Opcion Case 3 GvTmp = GvFyE Case 2 GvTmp = GvAnt Case Else GvTmp = GvC End Select For Each gvr As GridViewRow In GvTmp.Rows If gvr.FCCheckBox("Chk").Checked Then Contador += 1 If gvr.DataKey("CveMoneda") <> "1" Then TipoCambioPago = TxtTC.Text.ToDouble : ContadorME += 1 Else : TipoCambioPago = 1 End If End If Next If ContadorME > 0 AndAlso TxtTC.Text.ToDouble <= 0 AndAlso RBLOpcion.SelectedValue = "1" Then Alert("Ingrese un tipo de cambio.") Exit Sub End If Dim TipoMovto As Boolean = False If Contador > 0 Then Dim Conta As ClsContPAQi = Nothing Dim Bancos As ClsBancos = Nothing Dim IDPoliza As Integer = 0 Dim Referencia As String Dim ConceptoMov As String Dim NumPoliza As String = "" Dim ConceptoDetalle, ConceptoTmp As String 'Dim CuentaAfectable As Integer Dim Cargos As Decimal Dim MonExt As Boolean Dim TipoPoliza As String = "" Dim CompraPagadoTotal, CompraPagadoRetIVA, CompraPagadoRetISR As Decimal Dim CompraTotal, CompraRetIVA, CompraRetISR, AbonoCompraRetISR, AbonoProveedor, AbonoAnticipo, AbonoDeudorDiverso, AbonoFuncionario As Decimal Dim IdCuentaIVAxAcreditar, IdCuentaIVAAcreditable, IdCuentaRetIVA, IdCuentaRetISR, IdCuentaRetIVACirculacion, IdCuentaRetISRCirculacion As Integer Dim EsContabilizada, SimplificaIVAxAcreditar, SimplificaRetIVA As Boolean Dim CvePlantillaPoliza As Integer Dim IEContabilizado As Boolean = False Dim TotalBancos, TotalAnticipos, TotalProveedores, TotalDeudoresDiversos, TotalFuncionarios As Decimal Dim IVAAcreditable, IVAxAcreditar, IVAAcreditablePago As Decimal Dim CargoProveedor, CargoAnticipo As Decimal Dim CveMoneda, CvePrePoliza As Integer Dim IdCuentaProveedor, IdCuentaAnticipo, IdCuentaBancos, IdCuentaFuncionario, IdCuentaDeudorDiverso, IdCtaContBancosComplementaria, IdCtaContAnticiposComplementaria As Integer Dim GUIDMovimiento As String = "" Dim MsgError As String = "" Dim MsgErrorGeneral As New StringBuilder Dim PolizasGeneradas As New StringBuilder Try If UsuarioActual.Empresa.UsaContabilidad Then Conta = New ClsContPAQi(UsuarioActual.Empresa) Conta.IniciaTransacSQL() Bancos = New ClsBancos() Bancos.IniciaTransacSQL() 'Dim Compra As New ClsCompras(Bancos.IniciaTransacSQL) If RBLOpcion.SelectedValue = "1" Then 'si es la emp=66 debe de tener un IDPoliza = Conta.AddPoliza(DdlPolizaTipo.SelectedValue.ToEntero, TxtDescripcion.Text, 0, 0, UsuarioActual.CveUsuario, TxtFecha.Text.ToDate, pTipo:=TipoPoliza) NumPoliza = Conta.Folio.ToString Else IDPoliza = -1 End If 'inserto la póliza If IDPoliza = 0 Then MsgError = "No se pudo insertar la póliza contable." Else Dim Fecha As Date = TxtFecha.Text.ToDate Dim IdSegNeg As Integer = 0 Dim Folio As String = "" For Each gvr As GridViewRow In GvTmp.Rows If gvr.FCCheckBox("Chk").Checked Then '----------------------------------------- Registro Movimientos Bancarios ConceptoMov = String.Format("{0}: {1}", gvr.DataKey("TipoTransAbreviatura"), gvr.DataKey("Folio")) 'gvr.DataKey("SerieFolio") ' Referencia = String.Format("{0}: {1}", gvr.DataKey("TipoTransAbreviatura"), gvr.DataKey("Folio")) CvePlantillaPoliza = gvr.DataKey("CvePlantillaPoliza").ToEntero CvePrePoliza = gvr.DataKey("CvePrePoliza").ToEntero IdCuentaBancos = gvr.DataKey("IdCtaContBancos").ToEntero IdCtaContBancosComplementaria = gvr.DataKey("IdCtaContBancosComplementaria").ToEntero TotalBancos = gvr.DataKey("Importe").ToDecimal CveMoneda = gvr.DataKey("CveMoneda").ToEntero TotalProveedores = 0 : TotalAnticipos = 0 : TotalDeudoresDiversos = 0 : TotalFuncionarios = 0 'si es otra diferente al peso If gvr.DataKey("CveMoneda") <> "1" Then If RBLOpcion.SelectedValue = "1" Then TipoCambioPago = TxtTC.Text.ToDecimal Else TipoCambioPago = gvr.FCTextBox("TxtTC").Text.ToDecimal MonExt = True ConceptoMov = String.Format("{0} TC:{1} ${2}", ConceptoMov, TipoCambioPago, gvr.DataKey("Importe").ToDouble.FormatoNumero) If TipoCambioPago <= 0 Then MsgErrorGeneral.Append("Tipo de Cambio en Cero") : Exit For Else TipoCambioCompra = 1 TipoCambioPago = 1 MonExt = False End If Cargos = 0 Select Case UsuarioActual.CveEmpresa Case 13 Select Case gvr.DataKey("CveTipoTransaccion") Case "1" 'cheque Folio = gvr.DataKey("Folio") TipoPoliza = "CHQ" Case "2" ' transferencia Folio = "-1" TipoPoliza = "TRAN" Case Else Folio = "-1" TipoPoliza = "" End Select Case 66 Folio = "-1" Select Case gvr.DataKey("CveTipoTransaccion") Case "1" 'cheque TipoPoliza = String.Format("3-{0}", gvr.DataKey("PrefijoConta").PadRight(3, "0"c)) Case "2", "9" ' transferencia y layout TipoPoliza = String.Format("1-{0}", gvr.DataKey("PrefijoConta").PadRight(3, "0"c)) Case Else TipoPoliza = "" End Select End Select If RBLOpcion.SelectedValue = "2" Then 'inserto una poliza por pago Conta.IniciaTransacSQL() : Bancos.IniciaTransacSQL() MsgError = "" Fecha = gvr.FCTextBox("TxtFecha").Text.ToDate IDPoliza = Conta.AddPoliza(gvr.FCDropDownList("DdlPolizaTipo").SelectedValue.ToEntero, gvr.FCTextBox("TxtDescripcion").Text, 0, 0, UsuarioActual.CveUsuario, Fecha, Folio, TipoPoliza) NumPoliza = Conta.Folio.ToString End If 'ACTUALIZO EL IE CON LA POLIZA If Not Bancos.UpdateIEPrePoliza(Fecha, NumPoliza, IDPoliza, gvr.DataKey("CvePrePoliza").ToEntero, gvr.DataKey("CveIE").ToEntero, 0) Then MsgError = "Error al actualizar la poliza" : Exit For '----------------------------------------- Registro Movimientos de Compras 'cuando es NC, se registran en negativos todos los valores Select Case Opcion Case 3 TotalFuncionarios = TotalBancos IdCuentaFuncionario = gvr.DataKey("IdCtaContPersonal").ToEntero Case 2 TotalAnticipos = TotalBancos IdCuentaAnticipo = gvr.DataKey("IdCtaContAnticipos").ToEntero IdCtaContAnticiposComplementaria = gvr.DataKey("IdCtaContAnticiposComplementaria").ToEntero Case Else End Select 'recorro el grid de compras Dim GvCompras As GridView = gvr.FCGridView("GvPC") For Each gvrc As GridViewRow In GvCompras.Rows Cargos = 0 AbonoProveedor = 0 : CargoProveedor = 0 : CargoAnticipo = 0 : AbonoAnticipo = 0 'ya viene el tipo de cambio entre la fecha de compra y la ultima fluctuacion If CveMoneda = 2 Then TipoCambioCompra = gvrc.FCHiddenField("HdnTC").Value.ToDecimal Else TipoCambioCompra = 1 ConceptoDetalle = gvrc.FCHiddenField("HdnRazonSocial").Value CargoProveedor = 0 : CargoAnticipo = 0 TipoCambioFechaCompra = gvrc.FCHiddenField("HdnTCFechaCompra").Value.ToDecimal CompraPagadoTotal = gvrc.FCHiddenField("HdnImportePagadoCompra").Value.ToDecimal IVAAcreditable = gvrc.FCHiddenField("HdnIVAPagadoCompra").Value.ToDecimal CompraPagadoRetIVA = gvrc.FCHiddenField("HdnRetIVAPagadoCompra").Value.ToDecimal CompraPagadoRetISR = gvrc.FCHiddenField("HdnRetISRPagadoCompra").Value.ToDecimal IVAAcreditablePago = IVAAcreditable CompraTotal = gvrc.FCHiddenField("HdnTotal").Value.ToDecimal CompraRetIVA = gvrc.FCHiddenField("HdnRetIVA").Value.ToDecimal CompraRetISR = gvrc.FCHiddenField("HdnRetISR").Value.ToDecimal IVAxAcreditar = gvrc.FCHiddenField("HdnIVA").Value.ToDecimal IdCuentaIVAxAcreditar = gvr.DataKey("IdCuentaIVAxAcreditar").ToEntero IdCuentaIVAAcreditable = gvr.DataKey("IdCuentaIVAAcreditable").ToEntero IdCuentaRetIVA = gvrc.FCHiddenField("HdnIdCtaContRetIVA").Value.ToEntero IdCuentaRetIVACirculacion = gvrc.FCHiddenField("HdnIdCtaContRetIVACirculacion").Value.ToEntero IdCuentaRetISR = gvrc.FCHiddenField("HdnIdCtaContRetISR").Value.ToEntero IdCuentaRetISRCirculacion = gvrc.FCHiddenField("HdnIdCtaContRetISRCirculacion").Value.ToEntero EsContabilizada = gvrc.FCHiddenField("HdnCompraIdPoliza").Value.ToEntero > 0 'VERIFICO SI ESTA CONTABILIZADO EL PAGO, EN EL CASO DE ANTICIPOS IEContabilizado = gvr.DataKey("IdPoliza").ToEntero > 0 IdSegNeg = gvrc.FCHiddenField("HdnIdSegNeg").Value.ToEntero If gvrc.FCHiddenField("HdnTipoDocto").Value = "NC" Then If UsuarioActual.Empresa.ContaContabilizacionNC = 1 Then TipoCambioCompra = TipoCambioCompra * -1 'cuando el movimiento de las nc, sea <> cero, quiero decir que solo convertimos a negativos los valores TipoCambioPago = TipoCambioPago * -1 TipoCambioFechaCompra = TipoCambioFechaCompra * -1 Else TipoMovto = True 'cuando sea 0. los cargos se convierten en abonos y viceversa, pero los importes son positivos End If Else TipoMovto = False End If 'cuando es NC, se registran en negativos todos los valores Dim PolizaActualizada As Boolean = False Select Case CvePlantillaPoliza Case 10, 3, 52 IdCuentaProveedor = gvrc.FCHiddenField("HdnIdCtaContProveedores").Value.ToEntero IdCuentaAnticipo = gvr.DataKey("IdCtaContAnticipos").ToEntero If IdCuentaAnticipo = 0 AndAlso IdCuentaProveedor > 0 Then IdCuentaAnticipo = IdCuentaProveedor CargoAnticipo = CompraPagadoTotal ' TotalBancos AbonoProveedor = 0 AbonoAnticipo = CompraPagadoTotal If TotalAnticipos > 0 And CargoAnticipo < TotalAnticipos Then TotalAnticipos -= CargoAnticipo Else TotalAnticipos = 0 'cuando el anticipo no paga toda la factura y no esta contabilizada If AbonoAnticipo < CompraTotal AndAlso Not EsContabilizada Then AbonoProveedor = CompraTotal - AbonoAnticipo 'ejecuta la instruccion para contabilizar la prepoliza de amortizacion cuando es unica, es decir se hace al final del cheque, luego otra prepoliza con la compra y tercera la amortizacion If Not Bancos.UpdateCompraPrePoliza(TxtFecha.Text.ToDate, NumPoliza, IDPoliza, gvrc.FCHiddenField("HdnCveCompra").Value.ToEntero, CvePlantillaPoliza) Then MsgError = "Error al actualizar compra" : Exit For Else PolizaActualizada = True Case 2, 1 TotalProveedores = TotalBancos AbonoProveedor = 0 'cuando el anticipo no paga toda la factura y no esta contabilizada If TotalProveedores < CompraTotal Then AbonoProveedor = CompraTotal - CompraPagadoTotal IdCuentaProveedor = gvrc.FCHiddenField("HdnIdCtaContProveedores").Value.ToEntero Case 20 'contabilizo la prepoliza If Not Bancos.UpdateCompraPrePoliza(TxtFecha.Text.ToDate, NumPoliza, IDPoliza, gvrc.FCHiddenField("HdnCveCompra").Value.ToEntero, CvePlantillaPoliza) Then MsgError = "Error al actualizar compra" : Exit For Else PolizaActualizada = True Case 8 'FyE AbonoFuncionario = CompraPagadoTotal 'TotalFuncionarios -= AbonoFuncionario 'cuando el anticipo no paga toda la factura y no esta contabilizada If AbonoFuncionario < CompraTotal Then AbonoFuncionario = CompraTotal 'If CompraTotal > TotalFuncionarios Then TotalFuncionarios = 0 ' si la compra es mayor al cheque, no debe cargar a funcionarios End Select If EsContabilizada Then Select Case CvePlantillaPoliza Case 3, 52 CargoAnticipo = CompraPagadoTotal AbonoAnticipo = 0 Case 2 CargoProveedor = CompraPagadoTotal AbonoProveedor = 0 AbonoCompraRetISR = CompraPagadoRetISR Case 20 CargoProveedor = CompraPagadoTotal AbonoProveedor = 0 'contabilizo la prepoliza If Not Bancos.UpdateCompraPrePoliza(TxtFecha.Text.ToDate, NumPoliza, IDPoliza, gvrc.FCHiddenField("HdnCveCompra").Value.ToEntero, 20) Then MsgError = "Error al actualizar compra" : Exit For Else PolizaActualizada = True Case 8 'TotalFuncionarios -= AbonoFuncionario AbonoFuncionario = 0 If Not Bancos.UpdateCompraPrePoliza(TxtFecha.Text.ToDate, NumPoliza, IDPoliza, gvrc.FCHiddenField("HdnCveCompra").Value.ToEntero, 8) Then MsgError = "Error al actualizar compra" : Exit For Else PolizaActualizada = True End Select IVAxAcreditar = 0 CompraRetIVA = 0 CompraRetISR = 0 End If If IEContabilizado Then TotalBancos = 0 End If ''S I M P L I F I C A R SimplificaIVAxAcreditar = False : SimplificaRetIVA = False If CargoAnticipo = AbonoAnticipo Then CargoAnticipo = 0 : AbonoAnticipo = 0 If IVAAcreditable = IVAxAcreditar Then IVAxAcreditar = 0 : SimplificaIVAxAcreditar = True If CompraRetIVA = CompraPagadoRetIVA Then CompraRetIVA = 0 : SimplificaRetIVA = True If CompraRetISR = CompraPagadoRetISR Then CompraRetISR = 0 'simplificar fye, le quito al cargo total, el abonar al funcionario, para que tienda a cero, y no haga afectacion a fye If TotalFuncionarios > 0 Then If AbonoFuncionario > 0 AndAlso AbonoFuncionario <= TotalFuncionarios Then TotalFuncionarios -= AbonoFuncionario : AbonoFuncionario = 0 If AbonoFuncionario > 0 AndAlso AbonoFuncionario > TotalFuncionarios Then AbonoFuncionario -= TotalFuncionarios : TotalFuncionarios = 0 End If 'registro los movimientos en proveedores, cuando es de contado que toque If UsuarioActual.CveEmpresa = 13 AndAlso Not EsContabilizada AndAlso Opcion = 1 AndAlso Math.Abs(CargoProveedor) <= 1 AndAlso Math.Abs(AbonoProveedor) <= 1 Then CargoProveedor += CompraPagadoTotal AbonoProveedor += CompraPagadoTotal End If 'cuando es la misma cuenta e iva x acreditar y acreditable y el pago es menor a la compra, solo se registra un solo IVA, por ese se limpia el acreditable If IdCuentaIVAxAcreditar = IdCuentaIVAAcreditable AndAlso Not EsContabilizada AndAlso TotalProveedores < CompraTotal AndAlso IVAxAcreditar > 0 Then IVAAcreditable = IVAxAcreditar : IVAxAcreditar = 0 ''------------------------------- R E G I S T R O L O S M O V I M I E N T O S ------------------------------------------ IdSegNeg = 0 'sino esta contabilizada Registro los movimientos de la compra If Not EsContabilizada Then Dim GvDetalle As GridView = gvrc.FCGridView("GvD") 'sino esta contabilizada.. registro al gasto If GvDetalle IsNot Nothing Then For Each gvrr As GridViewRow In GvDetalle.Rows IdSegNeg = gvrr.FCHiddenField("HdnIdSegNeg").Value.ToEntero 'ConceptoDetalle = gvr.DataKey("RazonSocial") ' gvrr.FCLiteral("LitPS").Text Cargos += Math.Round(gvrr.FCLiteral("LitSubTotalPS").Text.ToDecimal * TipoCambioCompra, 2) If Not Conta.AddMovimiento(IDPoliza, gvrr.FCDropDownList("DdlM").SelectedValue.ToEntero, TipoMovto, gvrr.FCLiteral("LitSubTotalPS").Text.ToDouble * TipoCambioCompra, gvrc.FCHiddenField("HdnSerieFolio").Value, ConceptoDetalle, IdSegNeg, Fecha, gvrc.FCHiddenField("HdnCveCompra").Value.ContaReferencia(TipoContaReferencia.Compra), If(MonExt, gvrr.FCLiteral("LitSubTotalPS").Text.ToDouble, 0.0)) Then MsgError = "No se pudo insertar movimiento contable" : Exit For Next 'debe de actualizar If Not Bancos.UpdateCompraPrePoliza(TxtFecha.Text.ToDate, NumPoliza, IDPoliza, gvrc.FCHiddenField("HdnCveCompra").Value.ToEntero) Then 'ya esta corriendo un proceso que actualiza la 'If Not PolizaActualizada Then MsgError = "Error al actualizar compra" : Exit For End If End If Else 'si ya esta contabilizada, tomo el segmento de negocio del primer renglón Dim GvDetalle As GridView = gvrc.FCGridView("GvD") For Each gvrr As GridViewRow In GvDetalle.Rows IdSegNeg = gvrr.FCHiddenField("HdnIdSegNeg").Value.ToEntero Next End If 'saco a nivel general el segmento de negocio If IVAxAcreditar > 0 Then If Not Conta.AddMovimiento(IDPoliza, IdCuentaIVAxAcreditar, False, (IVAxAcreditar * TipoCambioCompra), gvrc.FCHiddenField("HdnSerieFolio").Value, ConceptoDetalle, IdSegNeg, Fecha, gvrc.FCHiddenField("HdnCveCompra").Value.ContaReferencia(TipoContaReferencia.Compra), If(MonExt, IVAxAcreditar, 0.0)) Then MsgError = "No se pudo insertar movimiento contable" : Exit For End If Dim ttTipoCambioPago As Double = TipoCambioPago If UsuarioActual.CveEmpresa = 13 Then ttTipoCambioPago = TipoCambioCompra If IVAAcreditable > 0 Then 'iva Acreditable ' If SimplificaIVAxAcreditar = False Then IVAxAcreditar = IVAAcreditable If IdCuentaIVAxAcreditar <> IdCuentaIVAAcreditable Then 'si tienen la mqqwisma cuenta de Iva por Acreditar e IVA Acreditable, no se ingresan movimientos ConceptoTmp = If(CveMoneda = 2, String.Format("{0} TC {1}", ConceptoDetalle, TipoCambioFechaCompra), ConceptoDetalle) If IVAxAcreditar > 0 AndAlso Not Conta.AddMovimiento(IDPoliza, IdCuentaIVAxAcreditar, True, IVAxAcreditar * TipoCambioFechaCompra, gvrc.FCHiddenField("HdnSerieFolio").Value, ConceptoTmp, IdSegNeg, Fecha, gvrc.FCHiddenField("HdnCveCompra").Value.ContaReferencia(TipoContaReferencia.Compra), If(MonExt, IVAxAcreditar, 0.0)) Then MsgError = "No se pudo insertar movimiento contable" : Exit For ConceptoTmp = If(CveMoneda = 2, String.Format("{0} TC {1}", ConceptoDetalle, ttTipoCambioPago), ConceptoDetalle) If Not Conta.AddMovimiento(IDPoliza, IdCuentaIVAAcreditable, False, IVAAcreditable * ttTipoCambioPago, gvrc.FCHiddenField("HdnSerieFolio").Value, ConceptoTmp, IdSegNeg, Fecha, gvrc.FCHiddenField("HdnCveCompra").Value.ContaReferencia(TipoContaReferencia.Compra), If(MonExt, IVAAcreditable, 0.0)) Then MsgError = "No se pudo insertar movimiento contable" : Exit For Else 'cuando tienen la misma cuenta del iva, pero no es contabilizada, se debe de registrar el iva acreditable If Not EsContabilizada Then ConceptoTmp = If(CveMoneda = 2, String.Format("{0} TC {1}", ConceptoDetalle, ttTipoCambioPago), ConceptoDetalle) If Not Conta.AddMovimiento(IDPoliza, IdCuentaIVAAcreditable, False, IVAAcreditable * ttTipoCambioPago, gvrc.FCHiddenField("HdnSerieFolio").Value, ConceptoTmp, IdSegNeg, Fecha, gvrc.FCHiddenField("HdnCveCompra").Value.ContaReferencia(TipoContaReferencia.Compra), If(MonExt, IVAAcreditable, 0.0)) Then MsgError = "No se pudo insertar movimiento contable" : Exit For End If End If End If 'si el iva es igual el x acreditar y el acreditable, el acreditable se vuelve el por acreditar, pero aqui se toma lo pagado If IdCuentaIVAxAcreditar = IdCuentaIVAAcreditable AndAlso Not EsContabilizada AndAlso TotalProveedores < CompraTotal AndAlso IVAxAcreditar > 0 AndAlso IVAAcreditablePago < IVAAcreditable Then IVAAcreditable = IVAAcreditablePago End If 'siempre se inserta en la tabla de devolucion de iva Dim SubTotal As Double = CompraPagadoTotal * ttTipoCambioPago - IVAAcreditable * ttTipoCambioPago + CompraPagadoRetIVA * ttTipoCambioPago + CompraPagadoRetISR * ttTipoCambioPago Dim IdProveedor As Integer = -1 If IdCuentaProveedor > 0 Then 'busco la clave del proveedor en la contabilidad por su cuenta contable If Conta.GetProveedores(IdCuentaContable:=IdCuentaProveedor) Then If Conta.DtResultados.Rows.Count > 0 Then Dim dr As DataRow = Conta.DtResultados.Rows(0) IdProveedor = dr("Id").ToString.ToEntero End If End If Else 'busco la clave del proveedor en la contabilidad por su cuenta contable If Conta.GetProveedores(RFC:=gvrc.FCHiddenField("HdnRFC").Value) Then If Conta.DtResultados.Rows.Count > 0 Then Dim dr As DataRow = Conta.DtResultados.Rows(0) IdProveedor = dr("Id").ToString.ToEntero End If Else 'registro el proveedor generico Select Case UsuarioActual.CveEmpresa Case 66 : IdProveedor = 12726 Case Else : IdProveedor = 1 End Select End If End If If IdProveedor <= 0 Then IdProveedor = Conta.AddProveedor(IdCuentaProveedor, gvrc.FCHiddenField("HdnRFC").Value, gvrc.FCHiddenField("HdnRazonSocial").Value, "") If IdProveedor <= 0 Then MsgError = "No se pudo insertar movimientos de devoluciones de IVA" : Exit For End If End If Dim UUID As String = gvrc.FCHiddenField("HdnUUID").Value GUIDMovimiento = Conta.GUIDMovimiento If Not Conta.AddDevolucionesIVA(IDPoliza, IdCuentaBancos, IdProveedor, If(IVAAcreditable > 0, 16, 0), SubTotal, IVAAcreditable * ttTipoCambioPago, CompraPagadoRetIVA * ttTipoCambioPago, CompraPagadoRetISR * ttTipoCambioPago, Fecha, NumPoliza, gvrc.FCHiddenField("HdnSerie").Value, gvrc.FCHiddenField("HdnFolio").Value.StrToNum, UUID, UsuarioActual.CveEmpresa) Then MsgError = "No se pudo insertar movimientos de devoluciones de IVA" : Exit For End If Dim ReferenciaAsociacion As String = $"" If GUIDMovimiento <> "" AndAlso Not Conta.AddAsociacionCFDI(GUIDMovimiento, UUID, ReferenciaAsociacion) Then MsgError = "No se pudo insertar movimientos de devoluciones de IVA" : Exit For End If If CompraRetIVA > 0 Then If Not Conta.AddMovimiento(IDPoliza, IdCuentaRetIVA, False, CompraRetIVA, gvrc.FCHiddenField("HdnSerieFolio").Value, ConceptoDetalle, IdSegNeg, Fecha, gvrc.FCHiddenField("HdnCveCompra").Value.ContaReferencia(TipoContaReferencia.Compra), If(MonExt, CompraRetIVA, 0.0)) Then MsgError = "No se pudo insertar movimiento contable" : Exit For End If If CompraPagadoRetIVA > 0 Then If SimplificaRetIVA = False Then CompraRetIVA = CompraPagadoRetIVA 'no registra la retencion de iva al pagar If UsuarioActual.CveEmpresa = 13 Then IdCuentaRetIVA = 0 : IdCuentaRetIVACirculacion = 0 ConceptoTmp = If(CveMoneda = 2, String.Format("{0} TC {1}", ConceptoDetalle, TipoCambioFechaCompra), ConceptoDetalle) If CompraRetIVA > 0 AndAlso IdCuentaRetIVACirculacion > 0 AndAlso Not Conta.AddMovimiento(IDPoliza, IdCuentaRetIVACirculacion, False, CompraPagadoRetIVA * TipoCambioFechaCompra, gvrc.FCHiddenField("HdnSerieFolio").Value, ConceptoTmp, 0, Fecha, gvrc.FCHiddenField("HdnCveCompra").Value.ContaReferencia(TipoContaReferencia.Compra), If(MonExt, CompraRetIVA, 0.0)) Then MsgError = "No se pudo insertar movimiento contable" : Exit For ConceptoTmp = If(CveMoneda = 2, String.Format("{0} TC {1}", ConceptoDetalle, ttTipoCambioPago), ConceptoDetalle) If IdCuentaRetIVA > 0 AndAlso Not Conta.AddMovimiento(IDPoliza, IdCuentaRetIVA, True, CompraPagadoRetIVA * ttTipoCambioPago, gvrc.FCHiddenField("HdnSerieFolio").Value, ConceptoTmp, IdSegNeg, Fecha, gvrc.FCHiddenField("HdnCveCompra").Value.ContaReferencia(TipoContaReferencia.Compra), If(MonExt, CompraPagadoRetIVA, 0.0)) Then MsgError = "No se pudo insertar movimiento contable" : Exit For ' If Not Conta.AddMovimiento( IDPoliza, IdCuentaRetIVA, True, CompraPagadoRetIVA * TipoCambioCompra, gvrc.FCHiddenField("HdnSerieFolio").Value, ConceptoDetalle, 0, Fecha, gvrc.FCHiddenField("HdnCveCompra").Value.ContaReferencia(TipoContaReferencia.Compra), If(MonExt, CompraPagadoRetIVA, 0.0)) Then MsgError = "No se pudo insertar movimiento contable" : Exit For End If If CompraRetISR > 0 Then If Not Conta.AddMovimiento(IDPoliza, IdCuentaRetISR, False, CompraRetISR * TipoCambioCompra, gvrc.FCHiddenField("HdnSerieFolio").Value, ConceptoDetalle, IdSegNeg, Fecha, gvrc.FCHiddenField("HdnCveCompra").Value.ContaReferencia(TipoContaReferencia.Compra), If(MonExt, CompraRetISR, 0.0)) Then MsgError = "No se pudo insertar movimiento contable" : Exit For End If If CompraPagadoRetISR > 0 Then If Not Conta.AddMovimiento(IDPoliza, IdCuentaRetISR, True, CompraPagadoRetISR * TipoCambioCompra, gvrc.FCHiddenField("HdnSerieFolio").Value, ConceptoDetalle, IdSegNeg, Fecha, gvrc.FCHiddenField("HdnCveCompra").Value.ContaReferencia(TipoContaReferencia.Compra), If(MonExt, CompraPagadoRetISR, 0.0)) Then MsgError = "No se pudo insertar movimiento contable" : Exit For End If If AbonoProveedor > 0 Then Dim TmpTotal As Decimal Dim TmpTotalME As Decimal = AbonoProveedor If CveMoneda = 2 Then 'registro a la cuenta complementaria del proveedor If gvr.DataKey("IdCtaContComplementaria").ToEntero > 0 Then TmpTotal = Math.Round(AbonoProveedor * TipoCambioCompra - AbonoProveedor, 2) Else AbonoProveedor = Math.Round(AbonoProveedor * TipoCambioCompra, 2) End If End If If Not Conta.AddMovimiento(IDPoliza, IdCuentaProveedor, True, AbonoProveedor, gvrc.FCHiddenField("HdnSerieFolio").Value, gvrc.FCHiddenField("HdnSerieFolio").Value, IdSegNeg, Fecha, gvrc.FCHiddenField("HdnCveProveedor").Value.ContaReferencia(TipoContaReferencia.Proveedor), If(MonExt, TmpTotalME, 0.0)) Then MsgError = "No se pudo insertar movimiento contable" : Exit For 'complementaria If TmpTotal > 0 AndAlso Not Conta.AddMovimiento(IDPoliza, gvr.DataKey("IdCtaContComplementaria").ToEntero, TipoMovto, TmpTotal, gvrc.FCHiddenField("HdnSerieFolio").Value, gvrc.FCHiddenField("HdnSerieFolio").Value, IdSegNeg, Fecha, gvrc.FCHiddenField("HdnCveProveedor").Value.ContaReferencia(TipoContaReferencia.Proveedor), If(MonExt, gvrc.FCHiddenField("HdnTotal").Value.ToDouble, 0.0)) Then MsgError = "No se pudo insertar movimiento contable" : Exit For End If If AbonoAnticipo > 0 Then If Not Conta.AddMovimiento(IDPoliza, IdCuentaAnticipo, True, AbonoAnticipo, gvrc.FCHiddenField("HdnSerieFolio").Value, gvrc.FCHiddenField("HdnSerieFolio").Value, IdSegNeg, Fecha, gvrc.FCHiddenField("HdnCveProveedor").Value.ContaReferencia(TipoContaReferencia.Proveedor), If(MonExt, AbonoAnticipo, 0.0)) Then MsgError = "No se pudo insertar movimiento contable" : Exit For End If If AbonoDeudorDiverso > 0 Then If Not Conta.AddMovimiento(IDPoliza, IdCuentaAnticipo, True, AbonoDeudorDiverso, gvrc.FCHiddenField("HdnSerieFolio").Value, gvrc.FCHiddenField("HdnSerieFolio").Value, IdSegNeg, Fecha, gvrc.FCHiddenField("HdnCveProveedor").Value.ContaReferencia(TipoContaReferencia.Proveedor), If(MonExt, AbonoDeudorDiverso, 0.0)) Then MsgError = "No se pudo insertar movimiento contable" : Exit For End If If AbonoFuncionario > 0 Then If Not Conta.AddMovimiento(IDPoliza, IdCuentaFuncionario, True, AbonoFuncionario, gvrc.FCHiddenField("HdnSerieFolio").Value, gvrc.FCHiddenField("HdnSerieFolio").Value, IdSegNeg, Fecha, gvrc.FCHiddenField("HdnCveProveedor").Value.ContaReferencia(TipoContaReferencia.Proveedor), If(MonExt, AbonoAnticipo, 0.0)) Then MsgError = "No se pudo insertar movimiento contable" : Exit For End If If CargoProveedor > 0 Then ' cuando el pago no cubre el 100% Dim TmpTotal As Decimal Dim TmpTotalME As Decimal = CargoProveedor If CveMoneda = 2 Then 'registro a la cuenta complementaria del proveedor If gvr.DataKey("IdCtaContComplementaria").ToEntero > 0 Then TmpTotal = Math.Round(CargoProveedor * TipoCambioCompra - CargoProveedor, 2) Else CargoProveedor = Math.Round(CargoProveedor * TipoCambioCompra, 2) End If End If If Not Conta.AddMovimiento(IDPoliza, IdCuentaProveedor, False, CargoProveedor, gvrc.FCHiddenField("HdnSerieFolio").Value, gvrc.FCHiddenField("HdnSerieFolio").Value, IdSegNeg, Fecha, gvrc.FCHiddenField("HdnCveProveedor").Value.ContaReferencia(TipoContaReferencia.Proveedor), If(MonExt, TmpTotalME, 0.0)) Then MsgError = "No se pudo insertar movimiento contable" : Exit For 'complementaria If TmpTotal > 0 AndAlso Not Conta.AddMovimiento(IDPoliza, gvr.DataKey("IdCtaContComplementaria").ToEntero, TipoMovto, TmpTotal, gvrc.FCHiddenField("HdnSerieFolio").Value, gvrc.FCHiddenField("HdnSerieFolio").Value, IdSegNeg, Fecha, gvrc.FCHiddenField("HdnCveProveedor").Value.ContaReferencia(TipoContaReferencia.Proveedor), If(MonExt, gvrc.FCHiddenField("HdnTotal").Value.ToDouble, 0.0)) Then MsgError = "No se pudo insertar movimiento contable" : Exit For End If If CargoAnticipo > 0 AndAlso TotalAnticipos = 0 Then ' cuando el pago no cubre el 100% If Not Conta.AddMovimiento(IDPoliza, IdCuentaAnticipo, False, CargoAnticipo, gvrc.FCHiddenField("HdnSerieFolio").Value, gvrc.FCHiddenField("HdnSerieFolio").Value, IdSegNeg, Fecha, gvrc.FCHiddenField("HdnCveProveedor").Value.ContaReferencia(TipoContaReferencia.Proveedor), If(MonExt, CargoProveedor, 0.0)) Then MsgError = "No se pudo insertar movimiento contable" : Exit For Dim TmpTotal As Decimal If CveMoneda = 2 Then 'registro a la cuenta complementaria del proveedor If gvr.DataKey("IdCtaContComplementaria").ToEntero > 0 Then TmpTotal = Math.Round(CargoAnticipo * TipoCambioCompra - CargoAnticipo, 2) Else CargoAnticipo = Math.Round(CargoAnticipo * TipoCambioCompra, 2) End If 'complementaria If TmpTotal > 0 AndAlso Not Conta.AddMovimiento(IDPoliza, gvr.DataKey("IdCtaContComplementaria").ToEntero, TipoMovto, TmpTotal, gvrc.FCHiddenField("HdnSerieFolio").Value, gvrc.FCHiddenField("HdnSerieFolio").Value, IdSegNeg, Fecha, gvrc.FCHiddenField("HdnCveProveedor").Value.ContaReferencia(TipoContaReferencia.Proveedor), If(MonExt, gvrc.FCHiddenField("HdnTotal").Value.ToDouble, 0.0)) Then MsgError = "No se pudo insertar movimiento contable" : Exit For End If End If '' G E N E R A F L U C T U A C I O N ------------------- ''hago el movimiento de fluctuacion cambiaria If CveMoneda = 2 Then Dim FluctuacionCambiaria, FluctuacionCambiariaIVA As Double ''registro a la cuenta complementaria del proveedor 'If gvr.DataKey("IdCtaContComplementaria").ToEntero > 0 Then ' Dim TmpTotal As Double = Math.Round(CargoProveedor * TipoCambioCompra - CargoProveedor, 2) ' If TmpTotal > 0 AndAlso Not Conta.AddMovimiento( IDPoliza, gvr.DataKey("IdCtaContComplementaria").ToEntero, TipoMovto, TmpTotal, gvrc.FCHiddenField("HdnSerieFolio").Value, gvrc.FCHiddenField("HdnSerieFolio").Value, 0, Fecha, gvrc.FCHiddenField("HdnCveProveedor").Value.ContaReferencia(TipoContaReferencia.Proveedor), If(MonExt, gvrc.FCHiddenField("HdnTotal").Value.ToDouble, 0.0)) Then MsgError = "No se pudo insertar movimiento contable" : Exit For 'End If Dim CtaFluctuacion As Integer Dim tempMovto As Boolean = False If UsuarioActual.CveEmpresa = 66 Then FluctuacionCambiariaIVA = Math.Round((IVAAcreditable * TipoCambioFechaCompra) - (IVAAcreditable * TipoCambioPago), 2) 'FLUCTUACION CAMBIARIA DE IVA If FluctuacionCambiariaIVA < 0 Then CtaFluctuacion = UsuarioActual.Empresa.IdCuentaGananciaCambiaria : tempMovto = True ' ganancia cambiaria Else CtaFluctuacion = UsuarioActual.Empresa.IdCuentaPerdidaCambiaria : tempMovto = False ' perdida cambiaria End If If Math.Abs(FluctuacionCambiariaIVA) <> 0 Then If Not Conta.AddMovimiento(IDPoliza, CtaFluctuacion, tempMovto, Math.Abs(FluctuacionCambiariaIVA), gvrc.FCHiddenField("HdnSerieFolio").Value, "Fluctuación IVA " & ConceptoDetalle, IdSegNeg, Fecha, gvr.DataKey("CveProveedor").ContaReferencia(TipoContaReferencia.Proveedor), 0) Then MsgError = "No se pudo insertar movimiento contable" : Exit For ' no lleva moneda extranjera End If Else 'FluctuacionCambiaria = Math.Round((IVAAcreditable * TipoCambioCompra) - (IVAAcreditable * TipoCambioPago), 2) 'FLUCTUACION CAMBIARIA DE IVA End If FluctuacionCambiaria += Math.Round((CompraPagadoRetISR * TipoCambioCompra) - (CompraPagadoRetISR * TipoCambioPago), 2) 'FLUCTUACION CAMBIARIA DE ISR Dim Dif As Double = (CompraPagadoTotal * TipoCambioPago) - Math.Round(CompraPagadoTotal * TipoCambioCompra, 2) + FluctuacionCambiaria If Dif < 0 Then CtaFluctuacion = UsuarioActual.Empresa.IdCuentaGananciaCambiaria : tempMovto = True ' ganancia cambiaria Else CtaFluctuacion = UsuarioActual.Empresa.IdCuentaPerdidaCambiaria : tempMovto = False ' perdida cambiaria End If ConceptoDetalle = String.Format("{0} TC:{1} ${2}", gvr.FCTextBox("TxtDescripcion").Text, TipoCambioPago, Math.Abs(Dif).FormatoNumero) If Math.Abs(Dif) <> 0 Then If Not Conta.AddMovimiento(IDPoliza, CtaFluctuacion, tempMovto, Math.Abs(Dif), gvrc.FCHiddenField("HdnSerieFolio").Value, ConceptoDetalle, IdSegNeg, Fecha, gvr.DataKey("CveProveedor").ContaReferencia(TipoContaReferencia.Proveedor), 0) Then MsgError = "No se pudo insertar movimiento contable" : Exit For ' no lleva moneda extranjera End If End If Next 'REGISTRO EL MOVIMIENTO DE BANCOS If TotalBancos > 0 Or gvr.DataKey("CveEstatusIE").ToString = "2" Then ' cuando tiene importe en bancos o esta cancelado ConceptoMov = gvr.FCTextBox("TxtDescripcion").Text Dim ImporteMovimientoBancos As Double = gvr.DataKey("Importe").ToDouble * TipoCambioPago If CveMoneda = 2 AndAlso IdCtaContBancosComplementaria > 0 Then ImporteMovimientoBancos = gvr.DataKey("Importe").ToDouble ConceptoMov = String.Format("{0} TC:{1} ${2}", ConceptoMov, TipoCambioPago, TotalBancos.FormatoNumero) End If Dim TmpTotalBancos As Double = Math.Round(ImporteMovimientoBancos, 2) Dim TotalBancosME As Double = TotalBancos If CveMoneda = 2 AndAlso IdCtaContBancosComplementaria <= 0 Then ConceptoMov = String.Format("{0} TC:{1} ${2}", ConceptoMov, TipoCambioPago, TotalBancosME.FormatoNumero) 'si hay un tipo de cambio, va a requerir un ajuste en la conversion 'If Math.Abs(Cargos - TmpTotalBancos) > 0 Then ' TmpTotalBancos = Cargos 'End If TotalBancos = TmpTotalBancos End If If Not Conta.AddMovimiento(IDPoliza, IdCuentaBancos, True, TotalBancos, Referencia, ConceptoMov, IdSegNeg, Fecha, gvr.DataKey("CveIE").ContaReferencia(TipoContaReferencia.Banco), If(MonExt, TotalBancosME, 0.0)) Then MsgError = "No se pudo insertar movimiento contable" : Exit For 'hago el movimiento de fluctuacion cambiaria BANCARIA Complementaria If CveMoneda = 2 AndAlso IdCtaContBancosComplementaria > 0 Then TmpTotalBancos = Math.Round(gvr.DataKey("Importe").ToDouble * TipoCambioPago - ImporteMovimientoBancos, 2) 'se ocupa verificar que no tenga una diferencia de un centavo por las conversiones de dolares a peso Dim dtF As DataTable = Nothing If Conta.GetPoliza(IDPoliza, -1, -1, -1, -1) Then 'hago ajuste dtF = Conta.DtResultados Dim tCargos, tAbonos As Decimal tCargos = dtF.SUM("Cargo") : tAbonos = dtF.SUM("Abono") If Math.Abs(tCargos - (tAbonos + TmpTotalBancos)) < 1 Then TmpTotalBancos += (tCargos - (tAbonos + TmpTotalBancos)) End If End If dtF.Dispose() If Not Conta.AddMovimiento(IDPoliza, IdCtaContBancosComplementaria, True, TmpTotalBancos, Referencia, ConceptoMov, IdSegNeg, Fecha, gvr.DataKey("CveIE").ContaReferencia(TipoContaReferencia.Banco), If(MonExt, gvr.DataKey("Importe").ToDouble, 0.0)) Then MsgError = "No se pudo insertar movimiento contable" : Exit For End If Else 'MsgError = "No Abono Bancos : " + Folio + " - " + gvr.DataKey("Importe") Dim a As String = "No Abono Bancos : " + Folio + " - " + gvr.DataKey("Importe") a.GuardaLog() End If If TotalAnticipos > 0 Then 'If Not Conta.AddMovimiento( IDPoliza, IdCuentaAnticipo, False, TotalAnticipos, Referencia, ConceptoMov, 0, Fecha, gvr.DataKey("CveIE").ContaReferencia(TipoContaReferencia.Banco), If(MonExt, TotalAnticipos, 0.0)) Then MsgError = "No se pudo insertar movimiento contable" : Exit For 'FALTA LA FLUCTUACION ConceptoMov = gvr.FCTextBox("TxtDescripcion").Text Dim ImporteMovimientoBancos As Decimal = TotalAnticipos * TipoCambioPago If CveMoneda = 2 AndAlso IdCtaContAnticiposComplementaria > 0 Then ImporteMovimientoBancos = TotalAnticipos ConceptoMov = String.Format("{0} TC:{1} ${2}", ConceptoMov, TipoCambioPago, ImporteMovimientoBancos.FormatoNumero) End If If Not Conta.AddMovimiento(IDPoliza, IdCuentaAnticipo, False, TotalAnticipos, Referencia, ConceptoMov, IdSegNeg, Fecha, gvr.DataKey("CveIE").ContaReferencia(TipoContaReferencia.Banco), If(MonExt, TotalAnticipos, 0.0)) Then MsgError = "No se pudo insertar movimiento contable" : Exit For Dim TmpTotalBancos As Decimal = Math.Round(ImporteMovimientoBancos, 2) If CveMoneda = 2 AndAlso IdCtaContAnticiposComplementaria = 0 Then ConceptoMov = String.Format("{0} TC:{1} ${2}", ConceptoMov, TipoCambioPago, ImporteMovimientoBancos.FormatoNumero) 'si hay un tipo de cambio, va a requerir un ajuste en la conversion If Math.Abs(Cargos - TmpTotalBancos) > 0 Then TmpTotalBancos = Cargos End If End If 'hago el movimiento de fluctuacion cambiaria BANCARIA Complementaria If CveMoneda = 2 AndAlso IdCtaContAnticiposComplementaria > 0 Then TmpTotalBancos = Math.Round(TotalAnticipos * TipoCambioPago - ImporteMovimientoBancos, 2) If Not Conta.AddMovimiento(IDPoliza, IdCtaContAnticiposComplementaria, False, TmpTotalBancos, Referencia, ConceptoMov, IdSegNeg, Fecha, gvr.DataKey("CveIE").ContaReferencia(TipoContaReferencia.Banco), If(MonExt, TotalAnticipos, 0.0)) Then MsgError = "No se pudo insertar movimiento contable" : Exit For End If End If If TotalDeudoresDiversos > 0 Then If Not Conta.AddMovimiento(IDPoliza, IdCuentaDeudorDiverso, False, TotalDeudoresDiversos, Referencia, ConceptoMov, IdSegNeg, Fecha, gvr.DataKey("CveIE").ContaReferencia(TipoContaReferencia.Banco), If(MonExt, TotalDeudoresDiversos, 0.0)) Then MsgError = "No se pudo insertar movimiento contable" : Exit For 'FALTA LA FLUCTUACION End If If TotalFuncionarios > 0 Then If Not Conta.AddMovimiento(IDPoliza, IdCuentaFuncionario, False, TotalFuncionarios, Referencia, ConceptoMov, IdSegNeg, Fecha, gvr.DataKey("CveIE").ContaReferencia(TipoContaReferencia.Banco), If(MonExt, TotalFuncionarios, 0.0)) Then MsgError = "No se pudo insertar movimiento contable" : Exit For 'FALTA LA FLUCTUACION End If 'hago commit si es individual If RBLOpcion.SelectedValue = "2" Then If MsgError = "" Then 'verifico si esta cuadrada If Conta.AjustaPoliza(IDPoliza) Then Conta.Commit() Bancos.Commit() UPPDatos.Update() PolizasGeneradas.AppendFormat("   Folio: {1}
", IDPoliza, NumPoliza) Else Conta.RollBack() Bancos.RollBack() MsgErrorGeneral.AppendFormat("{0}{1}", gvr.FCLiteral("LitTT").Text, gvr.FCHyperLink("HplFolio").Text) End If 'Alert(String.Format("
La póliza se ha generado correctamente

Ver Póliza
", IDPoliza)) Else Conta.RollBack() Bancos.RollBack() MsgErrorGeneral.AppendFormat("{0}{1}", gvr.FCLiteral("LitTT").Text, gvr.FCHyperLink("HplFolio").Text) End If End If End If Next End If If RBLOpcion.SelectedValue = "1" Then If MsgError = "" Then Conta.AjustaPoliza(IDPoliza) Conta.Commit() Bancos.Commit() 'Conta.RollBack() 'Bancos.RollBack() UPPDatos.Update() Alert(String.Format("
La póliza se ha generado correctamente

Ver Póliza
", IDPoliza)) CargaDatos() Else Conta.RollBack() Bancos.RollBack() Alert(String.Format("Ocurrio un error.1({0})", MsgError), TipoMensaje.MsgError) End If Else 'aqui solo puede llegar hacer rollback, porque los commit se hacen en cada iteracion If MsgError <> "" Then Conta.RollBack() Bancos.RollBack() End If Dim Msgg As String = PolizasGeneradas.ToString Dim TM As TipoMensaje = TipoMensaje.MsgInformacion If MsgErrorGeneral.Length > 0 Then Msgg = String.Format("{0}

{1}", Msgg, MsgErrorGeneral.ToString) TM = TipoMensaje.MsgAdvertencia End If CargaDatos() Alert(String.Format("


Se generaron las siguientes pólizas

{0}", Msgg), TM) End If End If Catch ex As Exception Conta.RollBack() Bancos.RollBack() Alert(ex.Message) ' Alert("Ocurrio u`n error al contabilizar") End Try Conta.Dispose() Else Alert("Seleccione factura(s) para contabilizar") End If End Sub Protected Sub TxtFecha_TextChanged(sender As Object, e As EventArgs) Handles TxtFecha.TextChanged If TbTipoCambio.Visible Then Dim Cc As New ClsContPAQi(UsuarioActual.Empresa) TxtTC.Text = Cc.getTipoCambio(TxtFecha.Text.ToDate).ToString Cc.Dispose() If TxtTC.Text.ToDouble > 0 Then TxtTC.Enabled = False Else TxtTC.Text = "" TxtTC.Enabled = True End If End If End Sub Protected Sub ImgTC_Click(sender As Object, e As ImageClickEventArgs) Handles ImgTC.Click If TxtTC.Text.ToDouble <= 0 Then Alert("Ingrese un importe") Exit Sub End If Dim Cc As New ClsContPAQi(UsuarioActual.Empresa) If Cc.AddTipoCambio(55555, TxtFecha.Text.ToDate, TxtTC.Text.ToDouble) Then TxtTC.Enabled = False End If Cc.Dispose() End Sub Protected Sub BtnConsultar_Click(sender As Object, e As EventArgs) Handles BtnConsultar.Click UsuarioActual.Sesion("DiarioPagos-CveProveedor") = DdlProveedores.SelectedValue UsuarioActual.Sesion("DiarioPagos-FI") = txtFechaI.Text UsuarioActual.Sesion("DiarioPagos-FF") = txtFechaF.Text CargaDatos() UPPDatos.Update() End Sub Public Shared Function wsCuentaNombre(ByVal contextKey As System.String) As System.String Dim Retorno As String = "" If contextKey.ToEntero > 0 Then Retorno = String.Format("---{0}---", contextKey.ToDouble.Texto2Letras) End If Return Retorno End Function Protected Sub RBLOpcion_SelectedIndexChanged(sender As Object, e As EventArgs) Handles RBLOpcion.SelectedIndexChanged PnlAgrupadora.Visible = RBLOpcion.SelectedValue = "1" GvC.DataSource = DtDatos GvC.DataBind() UPPDatos.Update() End Sub #Region "T R A N S F E R E N C I A S" Protected Sub GvT_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles GvT.RowDataBound If e.Row.RowType = DataControlRowType.DataRow Then If e.Row.DBCampo("ValidoCuenta") = "1" Then e.Row.FCCheckBox("Chk").Visible = True e.Row.FCDropDownList("DdlPolizaTipo").DataSource = DtTiposPoliza e.Row.FCDropDownList("DdlPolizaTipo").DataBind() e.Row.FCDropDownList("DdlPolizaTipo").SelectedValue = "3" End If Dim gv As GridView = e.Row.FCGridView("GvTD") Dim dtt As DataTable = DtDatosTransf.FiltraParametros(String.Format("TipoRenglon = 1 AND CvePrePoliza = {0} ", e.Row.DBCampo("CvePrePoliza"))) gv.DataSource = dtt gv.DataBind() End If End Sub Protected Sub GvTD_RowDataBound(ByVal Sender As Object, ByVal E As GridViewRowEventArgs) If E.Row.RowType = DataControlRowType.DataRow Then If E.Row.DBCampo("IdCtaContable").ToEntero = 0 Then 'falta vicularse el proveedor E.Row.FCHyperLink("HplCuenta").ForeColor = Drawing.Color.OrangeRed E.Row.FCHyperLink("HplCuenta").ToolTip = "Falta vincular la cuenta contable a la cuenta bancaria" End If End If End Sub Private Sub ContabilizarTransferencias() Dim TipoCambio As Double = 1 Dim Contador As Integer = 0 Dim ContadorME As Integer = 0 For Each gvr As GridViewRow In GvT.Rows If gvr.FCCheckBox("Chk").Checked Then Contador += 1 If gvr.DataKey("CveMoneda") <> "1" Then TipoCambio = 1 : ContadorME += 1 ' TxtTC.Text.ToDouble Else : TipoCambio = 1 End If ' Total += (gvr.DataKey("Importe").ToDouble + gvr.DataKey("IVA").ToDouble) * TipoCambio End If Next 'If ContadorME > 0 AndAlso TxtTC.Text.ToDouble <= 0 AndAlso RBLOpcion.SelectedValue = "1" Then ' Alert("Ingrese un tipo de cambio.") ' Exit Sub 'End If Dim TipoMovto As Boolean = False If Contador > 0 Then Dim Conta As ClsContPAQi = Nothing Dim PrePolizas As ClsContabilidad = Nothing Dim IDPoliza As Integer = 0 Dim Referencia As String Dim ConceptoMov As String Dim NumPoliza As Integer = 0 Dim MultNC As Integer Dim Concepto As String 'Dim ConceptoDetalle As String 'Dim CuentaAfectable As Integer Dim Cargos As Double Dim MonExt As Boolean Dim TipoPoliza As String = "" Dim Total As Double Dim Fecha As Date Dim MsgError As String = "" Dim MsgErrorGeneral As New StringBuilder Dim PolizasGeneradas As New StringBuilder Dim Folio As String Try For Each gvr As GridViewRow In GvT.Rows If gvr.FCCheckBox("Chk").Checked Then Folio = "" '----------------------------------------- Registro Movimientos Bancarios ConceptoMov = gvr.FCTextBox("TxtConcepto").Text Referencia = ConceptoMov 'si es otra diferente al peso If gvr.DataKey("CveMoneda") <> "1" Then TipoCambio = TxtTC.Text.ToDouble MonExt = True Concepto = String.Format("{0} TC:{1} ${2}", ConceptoMov, TxtTC.Text, gvr.DataKey("Importe").ToDouble.FormatoNumero) Else TipoCambio = 1 MonExt = False Concepto = ConceptoMov End If Cargos = 0 Total = gvr.DataKey("Importe").ToDouble Select Case UsuarioActual.CveEmpresa Case 13 TipoPoliza = "TRAN" Case 66 Folio = "-1" TipoPoliza = "1-000" End Select If RBLOpcion.SelectedValue = "2" Then 'inserto una poliza por pago Conta = New ClsContPAQi(UsuarioActual.Empresa) Conta.IniciaTransacSQL() PrePolizas = New ClsContabilidad PrePolizas.IniciaTransacSQL() MsgError = "" Fecha = gvr.FCTextBox("TxtFecha").Text.ToDate IDPoliza = Conta.AddPoliza(gvr.FCDropDownList("DdlPolizaTipo").SelectedValue.ToEntero, gvr.FCTextBox("TxtConcepto").Text, Total, Total, UsuarioActual.CveUsuario, Fecha, Folio, TipoPoliza) NumPoliza = Conta.Folio 'Else ' IDPoliza = -1 End If ' ------------ INSERTO LOS MOVIMIENTOS Dim GvD As GridView = gvr.FCGridView("GvTD") For Each gvr2 As GridViewRow In GvD.Rows If Not Conta.AddMovimiento(IDPoliza, gvr2.FCHiddenField("HdnIdCta").Value.ToEntero, gvr2.FCHiddenField("HdnTipoMovto").Value = "True", Total, "", ConceptoMov, 0, Fecha, gvr2.FCHiddenField("HdnCveIE").Value.ContaReferencia(TipoContaReferencia.Banco).ToString, If(MonExt, Total, 0.0) * MultNC) Then MsgError = "No se pudo insertar movimiento contable" Exit For End If Next If MsgError = "" Then 'movimiento para que no cause IVA en las transferencias Conta.AddCausacionesIVA(IDPoliza, 0, 0, 0, 0, 0, 0, True) Conta.AjustaPoliza(IDPoliza) PrePolizas.UpdatePoliza(Fecha, NumPoliza, IDPoliza, gvr.DataKey("CvePrePoliza").ToEntero, gvr.DataKey("CveEmpresa").ToEntero) Conta.Commit() PrePolizas.Commit() UPPDatos.Update() PolizasGeneradas.AppendFormat("   Folio: {1}
", IDPoliza, NumPoliza) 'Alert(String.Format("
La póliza se ha generado correctamente

Ver Póliza
", IDPoliza)) Else Conta.RollBack() PrePolizas.RollBack() MsgErrorGeneral.AppendFormat("{0}{1}", gvr.FCLiteral("LitTT").Text, gvr.FCHyperLink("HplFolio").Text) End If End If Next Catch ex As Exception Conta.RollBack() PrePolizas.RollBack() Alert(ex.Message) End Try Dim Msgg As String = "" If PolizasGeneradas.Length > 0 Then Msgg = PolizasGeneradas.ToString End If If MsgErrorGeneral.Length > 0 Then Msgg = String.Format("{0}{1}", Msgg, MsgErrorGeneral.ToString) Alert(Msgg, TipoMensaje.MsgInformacion) CargaDatos() Conta.Dispose() PrePolizas.Dispose() Else Alert("Seleccione factura(s) para contabilizar") End If End Sub #End Region #Region "F U N C I O N A R I O S Y E M P L E A D O S" Protected Sub GvFyE_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles GvFyE.RowDataBound If e.Row.RowType = DataControlRowType.DataRow Then e.Row.FCDropDownList("DdlPolizaTipo").DataSource = DtTiposPoliza e.Row.FCDropDownList("DdlPolizaTipo").DataBind() e.Row.FCDropDownList("DdlPolizaTipo").SelectedValue = "3" Dim gvC As GridView = e.Row.FCGridView("GvPC") Dim tDtCompras As DataTable = DtDatosFyECompras.FiltraParametros(String.Format("CveIE = {0} AND CvePS = -1 ", e.Row.DBCampo("CveIE"))) gvC.DataSource = tDtCompras gvC.DataBind() If tDtCompras IsNot Nothing AndAlso tDtCompras.Rows.Count > 0 Then e.Row.FCTextBox("TxtDescripcion").Text = String.Format("Reembolso:{0}", e.Row.DBCampo("RazonSocial")) If e.Row.DBCampo("IdCtaContBancos").ToEntero = 0 Then 'falta vicularse el proveedor e.Row.FCHyperLink("HplC").ForeColor = Drawing.Color.OrangeRed e.Row.FCHyperLink("HplC").ToolTip = "Falta vincular la cuenta contable a la cuenta bancaria" End If If e.Row.DBCampo("IdCtaContPersonal").ToEntero = 0 Then 'falta vicularse el proveedor e.Row.FCHyperLink("HplP").ForeColor = Drawing.Color.OrangeRed e.Row.FCHyperLink("HplP").ToolTip = "Falta vincular la cuenta contable" End If If e.Row.DBCampo("ValidoCuenta") = "1" Then e.Row.FCCheckBox("Chk").Visible = True ''pero si hay compras sin contabilizar, y la factura no tenga completa las clasificaciones If tDtCompras IsNot Nothing AndAlso tDtCompras.Rows.Count > 0 AndAlso tDtCompras.MIN("Valido") = "0" Then e.Row.FCCheckBox("Chk").Visible = False End If End If End If End Sub #End Region #Region "A N T I C I P O S" Protected Sub GvAnt_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles GvAnt.RowDataBound If e.Row.RowType = DataControlRowType.DataRow Then e.Row.FCDropDownList("DdlPolizaTipo").DataSource = DtTiposPoliza e.Row.FCDropDownList("DdlPolizaTipo").DataBind() e.Row.FCDropDownList("DdlPolizaTipo").SelectedValue = "3" Dim gvPC As GridView = e.Row.FCGridView("GvPC") Dim tDtCompras As DataTable = If(e.Row.DBCampo("CveIE").ToEntero > 0, DtDatosAnticiposCompras.FiltraParametros(String.Format("CveIE = {0} AND CvePS = -1 ", e.Row.DBCampo("CveIE"))), Nothing) gvPC.DataSource = tDtCompras gvPC.DataBind() Dim Simplificar As Boolean = False If e.Row.DBCampo("ValidoCuenta") = "1" Then e.Row.FCCheckBox("Chk").Visible = True ''pero si hay compras sin contabilizar, y la factura no tenga completa las clasificaciones If tDtCompras IsNot Nothing AndAlso tDtCompras.Rows.Count > 0 Then ' If tDtCompras.MIN("Valido") = "0" Then e.Row.FCCheckBox("Chk").Visible = False End If End If Else 'sino tiene cuenta 'si la compra es mayor o igual al anticipo, se simplifica el movimiento a anticipos If e.Row.DBCampo("IdCtaContBancos").ToEntero > 0 AndAlso tDtCompras IsNot Nothing AndAlso tDtCompras.Rows.Count > 0 AndAlso tDtCompras.SUM("Total") >= e.Row.DBCampo("Importe") AndAlso e.Row.DBCampo("IdCtaContComplementaria").ToEntero > 0 Then Simplificar = True e.Row.FCCheckBox("Chk").Visible = True End If End If If e.Row.DBCampo("IdCtaContBancos").ToEntero = 0 Then 'falta vicularse el proveedor e.Row.FCHyperLink("HplC").ForeColor = Drawing.Color.OrangeRed e.Row.FCHyperLink("HplC").ToolTip = "Falta vincular la cuenta contable a la cuenta bancaria" End If If e.Row.DBCampo("CveMoneda").ToEntero = 1 AndAlso e.Row.DBCampo("IdCtaContAnticipos").ToEntero = 0 AndAlso Simplificar = False Then 'falta vicularse la cuenta e.Row.FCHyperLink("HplP").ForeColor = Drawing.Color.OrangeRed e.Row.FCHyperLink("HplP").ToolTip = "Falta vincular la cuenta contable de anticipos" End If 'If e.Row.DBCampo("CveMoneda").ToEntero = 2 AndAlso e.Row.DBCampo("IdCtaContAnticiposComplementaria").ToEntero = 0 AndAlso Simplificar = False Then ' 'falta vicularse la cuenta ' e.Row.FCHyperLink("HplP").ForeColor = Drawing.Color.OrangeRed ' e.Row.FCHyperLink("HplP").ToolTip = "Falta vincular la cuenta contable complementaria" 'End If End If End Sub 'Private Sub ContabilizarAnticipos() ' Dim TipoCambio As Double ' Dim Contador As Integer = 0 ' Dim ContadorME As Integer = 0 ' For Each gvr As GridViewRow In GvAnt.Rows ' If gvr.FCCheckBox("Chk").Checked Then ' Contador += 1 ' If gvr.DataKey("CveMoneda") <> "1" Then ' TipoCambio = TxtTC.Text.ToDouble : ContadorME += 1 ' Else : TipoCambio = 1 ' End If ' ' Total += (gvr.DataKey("Importe").ToDouble + gvr.DataKey("IVA").ToDouble) * TipoCambio ' End If ' Next ' If ContadorME > 0 AndAlso TxtTC.Text.ToDouble <= 0 AndAlso RBLOpcion.SelectedValue = "1" Then ' Alert("Ingrese un tipo de cambio.") ' Exit Sub ' End If ' Dim TipoMovto As Boolean = False ' If Contador > 0 Then ' Dim Conta As ClsContPAQi = Nothing ' Dim PrePolizas As ClsContabilidad = Nothing ' Dim IDPoliza As Integer = 0 ' Dim Referencia As String ' Dim ConceptoMov As String ' Dim NumPoliza As Integer = 0 ' Dim MultNC As Integer ' Dim Concepto As String ' Dim MonExt As Boolean ' Dim TipoPoliza As String = "" ' Dim Total As Double ' Dim Fecha As Date ' Dim MsgError As String = "" ' Dim MsgErrorGeneral As New StringBuilder ' Dim PolizasGeneradas As New StringBuilder ' Dim Folio As String ' Try ' For Each gvr As GridViewRow In GvAnt.Rows ' If gvr.FCCheckBox("Chk").Checked Then ' Folio = "" ' '----------------------------------------- Registro Movimientos Bancarios ' ConceptoMov = gvr.FCTextBox("TxtConcepto").Text ' Referencia = ConceptoMov ' 'si es otra diferente al peso ' If gvr.DataKey("CveMoneda") <> "1" Then ' TipoCambio = TxtTC.Text.ToDouble ' MonExt = True ' Concepto = String.Format("{0} TC:{1} ${2}", ConceptoMov, TxtTC.Text, gvr.DataKey("Importe").ToDouble.FormatoNumero) ' Else ' TipoCambio = 1 ' MonExt = False ' Concepto = ConceptoMov ' End If ' Total = gvr.DataKey("Importe").ToDouble ' Select Case UsuarioActual.CveEmpresa ' Case 13 ' TipoPoliza = "TRAN" ' Case 66 ' Folio = "-1" ' TipoPoliza = String.Format("1-{0}", gvr.DataKey("PrefijoConta").PadLeft(3, "0"c)) ' End Select ' 'inserto una poliza por pago ' Conta = New ClsContPAQi(UsuarioActual.Empresa) ' Conta.IniciaTransacSQL() ' PrePolizas = New ClsContabilidad ' PrePolizas.IniciaTransacSQL() ' MsgError = "" ' Fecha = gvr.FCTextBox("TxtFecha").Text.ToDate ' IDPoliza = Conta.AddPoliza( gvr.FCDropDownList("DdlPolizaTipo").SelectedValue.ToEntero, gvr.FCTextBox("TxtConcepto").Text, Total, Total, UsuarioActual.CveUsuario, Fecha, Folio, TipoPoliza) ' NumPoliza = Conta.Folio ' Select Case gvr.DataKey("CvePlantillaPoliza") ' Case "3" ' Anticipo ' TipoMovto = False ' Case "10" 'Amortizacion Anticipo ' TipoMovto = True ' End Select ' If Not Conta.AddMovimiento( IDPoliza, gvr.DataKey("IdCtaContAnticipos").ToEntero, TipoMovto, Total, "", ConceptoMov, 0, Fecha, gvr.DataKey("CveIE").ContaReferencia(TipoContaReferencia.Banco).ToString, If(MonExt, Total, 0.0) * MultNC) Then ' MsgError = "No se pudo insertar movimiento contable" ' End If ' If Not Conta.AddMovimiento( IDPoliza, gvr.DataKey("IdCtaContable").ToEntero, Not TipoMovto, Total, "", ConceptoMov, 0, Fecha, gvr.DataKey("CveIE").ContaReferencia(TipoContaReferencia.Banco).ToString, If(MonExt, Total, 0.0) * MultNC) Then ' MsgError = "No se pudo insertar movimiento contable" ' End If ' If MsgError = "" Then ' Conta.AjustaPoliza(IDPoliza) ' PrePolizas.UpdatePoliza(Fecha, NumPoliza, IDPoliza, gvr.DataKey("CvePrePoliza").ToEntero, gvr.DataKey("CveEmpresa").ToEntero) ' Conta.Commit() ' PrePolizas.Commit() ' UPPDatos.Update() ' PolizasGeneradas.AppendFormat("   Folio: {1}
", IDPoliza, NumPoliza) ' 'Alert(String.Format("
La póliza se ha generado correctamente

Ver Póliza
", IDPoliza)) ' Else ' Conta.RollBack() ' PrePolizas.RollBack() ' MsgErrorGeneral.AppendFormat("{0}{1}", gvr.FCLiteral("LitTT").Text, gvr.FCHyperLink("HplFolio").Text) ' End If ' End If ' Next ' Catch ex As Exception ' Conta.RollBack() ' PrePolizas.RollBack() ' Alert(ex.Message) ' End Try ' Dim Msgg As String = "" ' If PolizasGeneradas.Length > 0 Then ' Msgg = PolizasGeneradas.ToString ' End If ' If MsgErrorGeneral.Length > 0 Then Msgg = String.Format("{0}{1}", Msgg, MsgErrorGeneral.ToString) ' Alert(Msgg, TipoMensaje.MsgInformacion) ' CargaDatos() ' Conta.Dispose() ' PrePolizas.Dispose() ' Else ' Alert("Seleccione factura(s) para contabilizar") ' End If 'End Sub #End Region End Class