Imports System.Data Imports Extensiones Partial Class Contabilidad_DiarioAmortizaciones Inherits ClsPaginas #Region "Propiedades" 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 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 Private Property DtDatosComprobaciones As DataTable Get Return CType(ViewState("DtDatosComprobaciones"), DataTable) End Get Set(value As DataTable) ViewState("DtDatosComprobaciones") = value End Set End Property Private Property DtDatosComprobacionesPagos As DataTable Get Return CType(ViewState("DtDatosComprobacionesPagos"), DataTable) End Get Set(value As DataTable) ViewState("DtDatosComprobacionesPagos") = value End Set End Property Private Property DtDatosNotasCredito As DataTable Get Return CType(ViewState("DtDatosNotasCredito"), DataTable) End Get Set(value As DataTable) ViewState("DtDatosNotasCredito") = value End Set End Property Private Property DtDatosNotasCreditoPagos As DataTable Get Return CType(ViewState("DtDatosNotasCreditoPagos"), DataTable) End Get Set(value As DataTable) ViewState("DtDatosNotasCreditoPagos") = 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 DtTiposPoliza = Nothing 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 Cc.Dispose() CargaDatos(-1) Else Alert("Este módulo requiere el uso de Contabilidad.", TipoMensaje.MsgAdvertencia) BtnConsultar.Enabled = False BtnContabilizar.Enabled = False End If End If 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.GetDiarioAmortizacion(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 DtDatosAnticipos = 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. DtDatosAnticiposCompras = ds.Tables(1) GvAnt.DataSource = DtDatosAnticipos GvAnt.DataBind() End If End If '------------------------------------------ consulto F y E If CargaOpcion.Contiene(-1, 1) Then ds = Conta.GetDiarioAmortizacion(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).FiltraParametros("CveIEs = 1") ' filtra solo los movimientos de un solo cheque, por ejemplo el pago de varios deudores diversos con el mismo cheque. DtDatosFyECompras = ds.Tables(1) GvFyE.DataSource = DtDatosFyE GvFyE.DataBind() End If End If '--------- COMPROBACIONES If CargaOpcion.Contiene(-1, 2) Then ds = Conta.GetDiarioPagosCompras(DdlProveedores.SelectedValue.ToEntero, txtFechaI.Text.ToDate, txtFechaF.Text.ToDate, 5, DdlCuenta.SelectedValue.ToEntero, DdlTipoTransaccion.SelectedValue.ToEntero, UsuarioActual.CveEmpresa) If ds IsNot Nothing AndAlso ds.Tables.Count = 2 Then DtDatosComprobacionesPagos = ds.Tables(0) DtDatosComprobaciones = ds.Tables(1) GvComp.DataSource = DtDatosComprobaciones.FiltraParametros("CvePS = -1") GvComp.DataBind() End If End If '--------- NOTAS DE CREDITO If CargaOpcion.Contiene(-1, 3) Then ds = Conta.GetDiarioPagosCompras(DdlProveedores.SelectedValue.ToEntero, txtFechaI.Text.ToDate, txtFechaF.Text.ToDate, 6, DdlCuenta.SelectedValue.ToEntero, DdlTipoTransaccion.SelectedValue.ToEntero, UsuarioActual.CveEmpresa) If ds IsNot Nothing AndAlso ds.Tables.Count = 2 Then DtDatosNotasCreditoPagos = ds.Tables(0) DtDatosNotasCredito = ds.Tables(1) GvNC.DataSource = DtDatosNotasCreditoPagos GvNC.DataBind() End If End If ' '------------------------------------------ consulto anticipos UPPDatos.Update() Conta.Dispose() End Sub 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 gvC As GridView = e.Row.FCGridView("GvPC") Dim tdtcompras As DataTable = DtDatosAnticiposCompras.FiltraParametros(String.Format("CveIE = {0} AND CveCompra = {1} AND CvePS = -1 ", e.Row.DBCampo("CveIE"), e.Row.DBCampo("CveCompra"))) gvC.DataSource = tdtcompras gvC.DataBind() 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("IdCtaContAnticipos").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 de anticipos" 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 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 dtcompras As DataTable = Nothing If e.Row.DBCampo("CveIE").ToEntero > 0 Then dtcompras = DtDatosFyECompras.FiltraParametros(String.Format("CveIE = {0} AND CvePS = -1 ", e.Row.DBCampo("CveIE"))) End If gvC.DataSource = dtcompras gvC.DataBind() 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 dtcompras IsNot Nothing AndAlso dtcompras.Rows.Count > 0 AndAlso dtcompras.MIN("Valido") = "0" Then e.Row.FCCheckBox("Chk").Visible = False End If 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 = Nothing Dim IdGv As String = DirectCast(DirectCast(e.Row.BindingContainer, GridView).NamingContainer.BindingContainer, GridView).ID Select Case IdGv Case "GvAnt" dtt = DtDatosAnticiposCompras Case "GvFyE" dtt = DtDatosFyECompras Case "GvComp" dtt = DtDatosComprobaciones Case "GvNC" dtt = DtDatosNotasCredito End Select 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("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 If e.Row.DataKey("CveMonedaCompra") = "2" AndAlso IdGv = "GvNC" 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 '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 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 GvComp_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles GvComp.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 = DtDatosComprobaciones.FiltraParametros(String.Format("CveCompra = {0} AND CvePS = -1 ", e.Row.DBCampo("CveCompra"), e.Row.DBCampo("CveCompra"))) gvC.DataSource = tdtcompras gvC.DataBind() '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("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("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 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 Protected Sub BtnContabilizar_Click(sender As Object, e As EventArgs) Handles BtnContabilizar.Click If Tabs.ActiveTabIndex = 0 AndAlso UsuarioActual.CveEmpresa.Contiene(13, 66, 48) Then ContabilizarCompras(1) Exit Sub End If If Tabs.ActiveTabIndex = 1 AndAlso UsuarioActual.CveEmpresa.Contiene(13, 66) Then ContabilizarCompras(2) 'funcionarios y empleados Exit Sub End If If Tabs.ActiveTabIndex = 2 AndAlso UsuarioActual.CveEmpresa.Contiene(13, 66) Then ContabilizarComprobaciones(3) 'funcionarios y empleados Exit Sub End If If Tabs.ActiveTabIndex = 3 Then ContabilizarComprobaciones(4) 'Notas de credito Exit Sub End If End Sub Private Sub ContabilizarCompras(Opcion As Integer) Dim TipoCambio As Double Dim Contador As Integer = 0 Dim ContadorME As Integer = 0 Dim GvTmp As GridView = Nothing Select Case Opcion Case 2 GvTmp = GvFyE Case 1 GvTmp = GvAnt Case 3 GvTmp = GvComp Case 4 GvTmp = GvNC End Select For Each gvr As GridViewRow In GvTmp.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 Bancos As ClsBancos = Nothing Dim IDPoliza As Integer = 0 Dim Referencia As String Dim ConceptoMov As String Dim ConceptoDetalle, ConceptoTmp 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 IVAAcreditable, IVAxAcreditar As Decimal Dim CveMoneda As Integer ', CvePrePoliza Dim CvePlantillaPoliza As Integer Dim CargoProveedor, CargoAnticipo, AbonoAnticipo, AbonoProveedor, AbonoFuncionario As Decimal Dim IdCuentaProveedor, IdCuentaAnticipo, IdCuentaBancos, IdCtaContBancosComplementaria, IdCuentaFuncionario As Integer ' IdCuentaFuncionario, IdCuentaDeudorDiverso, Dim MsgError As String = "" Dim MsgErrorGeneral As New StringBuilder Dim PolizasGeneradas As New StringBuilder Dim IdCuentaIVAxAcreditar, IdCuentaIVAAcreditable, IdCuentaRetIVA, IdCuentaRetISR As Integer Dim CompraTotal, IVAPagado, RetIVAPagado, RetISRPagado As Decimal Dim Folio As String Dim EsContabilizada, SimplificaIVAxAcreditar As Boolean Dim CompraPagadoTotal, CompraPagadoRetIVA, CompraPagadoRetISR As Decimal Dim TotalFuncionarios As Decimal Dim TipoCambioPago As Decimal Dim TipoCambioCompra As Decimal Dim TipoCambioFechaCompra As Decimal 'utiliza el tipo de cambio exclusivo de la fecha de la compra Try For Each gvr As GridViewRow In GvTmp.Rows If gvr.FCCheckBox("Chk").Checked Then Folio = "" '----------------------------------------- Registro Movimientos Bancarios ConceptoMov = gvr.FCTextBox("TxtDescripcion").Text CvePlantillaPoliza = gvr.DataKey("CvePlantillaPoliza").ToEntero IdCuentaBancos = gvr.DataKey("IdCtaContBancos").ToEntero IdCtaContBancosComplementaria = gvr.DataKey("IdCtaContBancosComplementaria").ToEntero Referencia = ConceptoMov 'si es otra diferente al peso If gvr.DataKey("CveMoneda") <> "1" Then TipoCambio = TxtTC.Text.ToDouble If RBLOpcion.SelectedValue = "1" Then TipoCambioPago = TxtTC.Text.ToDouble Else TipoCambioPago = gvr.FCTextBox("TxtTC").Text.ToDouble MonExt = True Concepto = String.Format("{0} TC:{1} ${2}", ConceptoMov, TxtTC.Text, gvr.DataKey("Importe").ToDouble.FormatoNumero) Else TipoCambio = 1 TipoCambioCompra = 1 TipoCambioPago = 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 Bancos = New ClsBancos(PrePolizas.IniciaTransacSQL()) MsgError = "" Fecha = gvr.FCTextBox("TxtFecha").Text.ToDate IDPoliza = Conta.AddPoliza(gvr.FCDropDownList("DdlPolizaTipo").SelectedValue.ToEntero, gvr.FCTextBox("TxtDescripcion").Text, Total, Total, UsuarioActual.CveUsuario, Fecha, Folio, TipoPoliza) NumPoliza = Conta.Folio Select Case gvr.DataKey("CvePlantillaPoliza") Case "3" ' Anticipo TipoMovto = False Case "10", "52" 'Amortizacion Anticipo TipoMovto = True End Select Dim GvCompras As GridView = gvr.FCGridView("GvPC") For Each gvrc As GridViewRow In GvCompras.Rows AbonoProveedor = 0 : CargoProveedor = 0 : CargoAnticipo = 0 : AbonoAnticipo = 0 IdCuentaIVAxAcreditar = gvr.DataKey("IdCuentaIVAxAcreditar").ToEntero IdCuentaIVAAcreditable = gvr.DataKey("IdCuentaIVAAcreditable").ToEntero IdCuentaRetIVA = gvrc.FCHiddenField("HdnIdCtaContRetIVA").Value.ToEntero IdCuentaRetISR = gvrc.FCHiddenField("HdnIdCtaContRetISR").Value.ToEntero CompraPagadoTotal = gvrc.FCHiddenField("HdnImportePagadoCompra").Value.ToDecimal IVAPagado = gvrc.FCHiddenField("HdnIVAPagadoCompra").Value.ToDecimal RetIVAPagado = gvrc.FCHiddenField("HdnRetIVAPagadoCompra").Value.ToDecimal RetISRPagado = gvrc.FCHiddenField("HdnRetISRPagadoCompra").Value.ToDecimal IVAAcreditable = gvrc.FCHiddenField("HdnIVAPagadoCompra").Value.ToDecimal CompraPagadoRetIVA = gvrc.FCHiddenField("HdnRetIVAPagadoCompra").Value.ToDecimal CompraPagadoRetISR = gvrc.FCHiddenField("HdnRetISRPagadoCompra").Value.ToDecimal CompraTotal = gvrc.FCHiddenField("HdnTotal").Value.ToDecimal IVAxAcreditar = gvrc.FCHiddenField("HdnIVA").Value.ToDecimal EsContabilizada = gvrc.FCHiddenField("HdnCompraIdPoliza").Value.ToEntero > 0 ConceptoDetalle = gvrc.FCHiddenField("HdnRazonSocial").Value TipoCambioFechaCompra = gvrc.FCHiddenField("HdnTCFechaCompra").Value.ToDecimal CveMoneda = gvr.DataKey("CveMoneda").ToEntero Select Case CvePlantillaPoliza Case 10 IdCuentaProveedor = gvrc.FCHiddenField("HdnIdCtaContProveedores").Value.ToEntero IdCuentaAnticipo = gvr.DataKey("IdCtaContAnticipos").ToEntero AbonoProveedor = 0 AbonoAnticipo = CompraPagadoTotal 'cuando el anticipo no paga toda la factura y no esta contabilizada If AbonoAnticipo < CompraTotal Then AbonoProveedor = CompraTotal - AbonoAnticipo Case 2 AbonoProveedor = 0 IdCuentaProveedor = gvrc.FCHiddenField("HdnIdCtaContProveedores").Value.ToEntero Case 20 'contabilizo la prepoliza If Not Bancos.UpdateCompraPrePoliza(Fecha, NumPoliza, IDPoliza, gvrc.FCHiddenField("HdnCveCompra").Value.ToEntero, 20) Then MsgError = "Error al actualizar compra" : Exit For Case 8, 9 'FyE IdCuentaFuncionario = gvr.DataKey("IdCtaContPersonal").ToEntero AbonoFuncionario = CompraPagadoTotal 'cuando la amortizacion no paga toda la factura y no esta contabilizada If AbonoFuncionario < CompraTotal Then AbonoFuncionario = CompraTotal '- AbonoFuncionario 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 10 CargoAnticipo = 0 AbonoAnticipo = CompraPagadoTotal CargoProveedor = CompraPagadoTotal AbonoProveedor = 0 If Not Bancos.UpdateCompraPrePoliza(Fecha, NumPoliza, IDPoliza, gvrc.FCHiddenField("HdnCveCompra").Value.ToEntero, 10) Then MsgError = "Error al actualizar compra" : Exit For Case 2 CargoProveedor = CompraPagadoTotal AbonoProveedor = 0 Case 20 CargoProveedor = CompraPagadoTotal AbonoProveedor = 0 'contabilizo la prepoliza If Not Bancos.UpdateCompraPrePoliza(Fecha, NumPoliza, IDPoliza, gvrc.FCHiddenField("HdnCveCompra").Value.ToEntero, 20) Then MsgError = "Error al actualizar compra" : Exit For Case 8 AbonoFuncionario = 0 TotalFuncionarios = 0 End Select IVAxAcreditar = 0 End If 'ya viene el tipo de cambio entre la fecha de compra y la ultima fluctuacion If CveMoneda = 2 Then TipoCambioCompra = gvrc.FCHiddenField("HdnTC").Value.ToDouble Else TipoCambioCompra = 1 ''S I M P L I F I C A R SimplificaIVAxAcreditar = False If CargoAnticipo = AbonoAnticipo Then CargoAnticipo = 0 : AbonoAnticipo = 0 If IVAAcreditable = IVAxAcreditar Then IVAxAcreditar = 0 : SimplificaIVAxAcreditar = True '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 'ConceptoDetalle = gvr.DataKey("RazonSocial") ' gvrr.FCLiteral("LitPS").Text 'Cargos += Math.Round(gvrr.FCLiteral("LitSubTotalPS").Text.ToDouble * TipoCambioCompra, 2) If Not Conta.AddMovimiento(IDPoliza, gvrr.FCDropDownList("DdlM").SelectedValue.ToEntero, False, gvrr.FCLiteral("LitSubTotalPS").Text.ToDouble * TipoCambioCompra, gvrc.FCHiddenField("HdnSerieFolio").Value, ConceptoDetalle, 0, 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(Fecha, NumPoliza.ToEntero, IDPoliza, gvrc.FCHiddenField("HdnCveCompra").Value.ToEntero) Then MsgError = "Error al actualizar compra" : Exit For End If End If End If If IVAxAcreditar > 0 Then If Not Conta.AddMovimiento(IDPoliza, IdCuentaIVAxAcreditar, False, (IVAxAcreditar * TipoCambioCompra), gvrc.FCHiddenField("HdnSerieFolio").Value, ConceptoDetalle, 0, 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 If IVAAcreditable > 0 Then 'iva Acreditable ' If SimplificaIVAxAcreditar = False Then IVAxAcreditar = IVAAcreditable 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, 0, 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, TipoCambioPago), ConceptoDetalle) If Not Conta.AddMovimiento(IDPoliza, IdCuentaIVAAcreditable, False, IVAAcreditable * TipoCambioPago, gvrc.FCHiddenField("HdnSerieFolio").Value, ConceptoTmp, 0, Fecha, gvrc.FCHiddenField("HdnCveCompra").Value.ContaReferencia(TipoContaReferencia.Compra), If(MonExt, IVAAcreditable, 0.0)) Then MsgError = "No se pudo insertar movimiento contable" : Exit For Dim SubTotal As Double = CompraPagadoTotal * TipoCambioPago - IVAAcreditable * TipoCambioPago + CompraPagadoRetIVA * TipoCambioPago + CompraPagadoRetISR * TipoCambioPago 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 If Not Conta.AddDevolucionesIVA(IDPoliza, IdCuentaBancos, IdProveedor, 16, SubTotal, IVAAcreditable * TipoCambioPago, CompraPagadoRetIVA * TipoCambioPago, CompraPagadoRetISR * TipoCambioPago, Fecha, NumPoliza, gvrc.FCHiddenField("HdnSerie").Value, gvrc.FCHiddenField("HdnFolio").Value.StrToNum, "", UsuarioActual.CveEmpresa) Then MsgError = "No se pudo insertar movimientos de devoluciones de IVA" : Exit For End If End If If CargoProveedor > 0 Then ' cuando el pago no cubre el 100% If Not Conta.AddMovimiento(IDPoliza, IdCuentaProveedor, False, CargoProveedor, gvrc.FCHiddenField("HdnSerieFolio").Value, gvrc.FCHiddenField("HdnSerieFolio").Value, 0, Fecha, gvrc.FCHiddenField("HdnCveProveedor").Value.ContaReferencia(TipoContaReferencia.Proveedor), If(MonExt, CargoProveedor, 0.0)) Then MsgError = "No se pudo insertar movimiento contable" : Exit For ''hago el movimiento de fluctuacion cambiaria If CveMoneda = 2 AndAlso gvr.DataKey("IdCtaContComplementaria").ToEntero > 0 Then Dim FluctuacionCambiaria, FluctuacionCambiariaIVA As Double 'registro a la cuenta complementaria del proveedor Dim TmpTotal As Double = Math.Round(CompraPagadoTotal * TipoCambioCompra - CompraPagadoTotal, 2) If 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 Dim CtaFluctuacion As Integer Dim tempMovto As Boolean = False 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, "Fluctuacion IVA " & ConceptoDetalle, 0, Fecha, gvr.DataKey("CveProveedor").ContaReferencia(TipoContaReferencia.Proveedor), 0) Then MsgError = "No se pudo insertar movimiento contable" : Exit For ' no lleva moneda extranjera 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, 0, 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 End If If AbonoProveedor > 0 Then If Not Conta.AddMovimiento(IDPoliza, IdCuentaProveedor, True, AbonoProveedor, gvrc.FCHiddenField("HdnSerieFolio").Value, gvrc.FCHiddenField("HdnSerieFolio").Value, 0, Fecha, gvrc.FCHiddenField("HdnCveProveedor").Value.ContaReferencia(TipoContaReferencia.Proveedor), If(MonExt, AbonoProveedor, 0.0)) Then MsgError = "No se pudo insertar movimiento contable" : Exit For End If 'hago el movimiento de fluctuacion cambiaria If gvr.DataKey("CveMoneda") = "2" AndAlso gvr.DataKey("IdCtaContComplementaria").ToEntero > 0 Then Dim FluctuacionCambiaria, FluctuacionCambiariaIVA As Double 'registro a la cuenta complementaria del proveedor Dim TmpTotal As Double = Math.Round(CompraPagadoTotal * TipoCambioCompra - CompraPagadoTotal, 2) If 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 Dim CtaFluctuacion As Integer Dim tempMovto As Boolean = False 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, "Fluctuacion IVA " & ConceptoDetalle, 0, Fecha, gvr.DataKey("CveProveedor").ContaReferencia(TipoContaReferencia.Proveedor), 0) Then MsgError = "No se pudo insertar movimiento contable" : Exit For ' no lleva moneda extranjera 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, 0, 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 If AbonoFuncionario > 0 Then If Not Conta.AddMovimiento(IDPoliza, IdCuentaFuncionario, True, AbonoFuncionario, gvrc.FCHiddenField("HdnSerieFolio").Value, gvrc.FCHiddenField("HdnSerieFolio").Value, 0, 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 Next If AbonoAnticipo > 0 Then If Not Conta.AddMovimiento(IDPoliza, IdCuentaAnticipo, True, AbonoAnticipo, "", 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 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 Private Sub ContabilizarComprobaciones(Opcion As Integer) Dim TipoCambio As Double Dim Contador As Integer = 0 Dim ContadorME As Integer = 0 Dim GvTmp As GridView = Nothing Select Case Opcion Case 2 GvTmp = GvFyE Case 1 GvTmp = GvAnt Case 3 GvTmp = GvComp Case 4 GvTmp = GvNC End Select For Each gvr As GridViewRow In GvTmp.Rows If gvr.FCCheckBox("Chk").Checked Then Contador += 1 If gvr.DataKey("CveMonedaCompra") <> "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 Bancos As ClsBancos = Nothing Dim IDPoliza As Integer = 0 Dim Referencia As String Dim ConceptoMov As String Dim ConceptoDetalle, ConceptoTmp 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 IVAAcreditable, IVAxAcreditar As Decimal Dim CveMoneda As Integer ', CvePrePoliza Dim CvePlantillaPoliza As Integer Dim CargoProveedor, CargoAnticipo, AbonoAnticipo, AbonoProveedor As Decimal Dim IdCuentaProveedor, IdCuentaBancos, IdCuentaFuncionario As Integer ' IdCuentaFuncionario, IdCuentaDeudorDiverso, Dim MsgError As String = "" Dim MsgErrorGeneral As New StringBuilder Dim PolizasGeneradas As New StringBuilder Dim IdCuentaIVAxAcreditar, IdCuentaIVAAcreditable, IdCuentaRetIVA, IdCuentaRetISR As Integer Dim CompraTotal, IVAPagado, RetIVAPagado, RetISRPagado As Decimal Dim Folio As String Dim EsContabilizada, SimplificaIVAxAcreditar As Boolean Dim CompraPagadoTotal, CompraPagadoRetIVA, CompraPagadoRetISR As Decimal 'Dim TotalFuncionarios As Decimal Dim TipoCambioPago As Decimal Dim TipoCambioCompra As Decimal Dim TipoCambioFechaCompra As Decimal 'utiliza el tipo de cambio exclusivo de la fecha de la compra Try For Each gvr As GridViewRow In GvTmp.Rows If gvr.FCCheckBox("Chk").Checked Then Folio = "" '----------------------------------------- Registro Movimientos Bancarios ConceptoMov = gvr.FCTextBox("TxtDescripcion").Text CvePlantillaPoliza = gvr.DataKey("CvePlantillaPoliza").ToEntero 'IdCuentaBancos = gvr.DataKey("IdCtaContBancos").ToEntero 'IdCtaContBancosComplementaria = gvr.DataKey("IdCtaContBancosComplementaria").ToEntero Referencia = ConceptoMov 'si es otra diferente al peso If gvr.DataKey("CveMonedaCompra") <> "1" Then TipoCambio = TxtTC.Text.ToDouble If RBLOpcion.SelectedValue = "1" Then TipoCambioPago = TxtTC.Text.ToDouble Else TipoCambioPago = gvr.FCTextBox("TxtTC").Text.ToDouble MonExt = True Concepto = String.Format("{0} TC:{1} ${2}", ConceptoMov, TxtTC.Text, gvr.DataKey("Total").ToDouble.FormatoNumero) Else TipoCambio = 1 TipoCambioCompra = 1 TipoCambioPago = 1 MonExt = False Concepto = ConceptoMov End If Total = gvr.DataKey("Total").ToDouble Select Case UsuarioActual.CveEmpresa Case 13 TipoPoliza = "TRAN" Case 66 Folio = "-1" TipoPoliza = "1-000" End Select 'inserto una poliza por pago Conta = New ClsContPAQi(UsuarioActual.Empresa) Conta.IniciaTransacSQL() PrePolizas = New ClsContabilidad Bancos = New ClsBancos(PrePolizas.IniciaTransacSQL()) MsgError = "" Fecha = gvr.FCTextBox("TxtFecha").Text.ToDate IDPoliza = Conta.AddPoliza(gvr.FCDropDownList("DdlPolizaTipo").SelectedValue.ToEntero, gvr.FCTextBox("TxtDescripcion").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 Dim GvCompras As GridView = gvr.FCGridView("GvPC") Dim MultiNC As Integer = 1 For Each gvrc As GridViewRow In GvCompras.Rows AbonoProveedor = 0 : CargoProveedor = 0 : CargoAnticipo = 0 : AbonoAnticipo = 0 IdCuentaIVAxAcreditar = gvr.DataKey("IdCuentaIVAxAcreditar").ToEntero IdCuentaIVAAcreditable = gvr.DataKey("IdCuentaIVAAcreditable").ToEntero IdCuentaRetIVA = gvrc.FCHiddenField("HdnIdCtaContRetIVA").Value.ToEntero IdCuentaRetISR = gvrc.FCHiddenField("HdnIdCtaContRetISR").Value.ToEntero CompraTotal = gvrc.FCHiddenField("HdnTotal").Value.ToDecimal IVAxAcreditar = 0 IVAAcreditable = gvrc.FCHiddenField("HdnIVA").Value.ToDecimal CompraPagadoTotal = CompraTotal IVAPagado = IVAAcreditable RetIVAPagado = gvrc.FCHiddenField("HdnRetIVA").Value.ToDecimal RetISRPagado = gvrc.FCHiddenField("HdnRetISR").Value.ToDecimal EsContabilizada = gvrc.FCHiddenField("HdnCompraIdPoliza").Value.ToEntero > 0 ConceptoDetalle = gvrc.FCHiddenField("HdnRazonSocial").Value TipoCambioFechaCompra = gvrc.FCHiddenField("HdnTCFechaCompra").Value.ToDecimal CveMoneda = gvr.DataKey("CveMonedaCompra").ToEntero IdCuentaProveedor = gvrc.FCHiddenField("HdnIdCtaContProveedores").Value.ToEntero 'ya viene el tipo de cambio entre la fecha de compra y la ultima fluctuacion If CveMoneda = 2 Then TipoCambioCompra = gvrc.FCHiddenField("HdnTC").Value.ToDouble Else TipoCambioCompra = 1 If gvrc.FCHiddenField("HdnTipoDocto").Value = "NC" Then IVAxAcreditar = IVAAcreditable IVAAcreditable = 0 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 MultiNC = -1 AbonoProveedor = -CompraPagadoTotal 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 'Select Case CvePlantillaPoliza ' Case 10 ' IdCuentaProveedor = gvrc.FCHiddenField("HdnIdCtaContProveedores").Value.ToEntero ' IdCuentaAnticipo = gvr.DataKey("IdCtaContAnticipos").ToEntero ' AbonoProveedor = 0 ' AbonoAnticipo = CompraPagadoTotal ' 'cuando el anticipo no paga toda la factura y no esta contabilizada ' If AbonoAnticipo < CompraTotal Then AbonoProveedor = CompraTotal - AbonoAnticipo ' Case 2 ' AbonoProveedor = 0 ' 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, 20) Then MsgError = "Error al actualizar compra" : Exit For ' Case 8, 9 'FyE ' IdCuentaFuncionario = gvr.DataKey("IdCtaContPersonal").ToEntero ' AbonoFuncionario = CompraPagadoTotal ' 'cuando la amortizacion no paga toda la factura y no esta contabilizada ' If AbonoFuncionario < CompraTotal Then AbonoFuncionario = CompraTotal '- AbonoFuncionario ' If CompraTotal > TotalFuncionarios Then TotalFuncionarios = 0 ' si la compra es mayor al cheque, no debe cargar a funcionarios 'End Select If Not Bancos.UpdateCompraPrePoliza(TxtFecha.Text.ToDate, NumPoliza, IDPoliza, gvrc.FCHiddenField("HdnCveCompra").Value.ToEntero, 8) Then MsgError = "Error al actualizar compra" : Exit For If Not Bancos.UpdateCompraPrePoliza(TxtFecha.Text.ToDate, NumPoliza, IDPoliza, gvrc.FCHiddenField("HdnCveCompra").Value.ToEntero, 9) Then MsgError = "Error al actualizar compra" : Exit For ''S I M P L I F I C A R SimplificaIVAxAcreditar = False If CargoAnticipo = AbonoAnticipo Then CargoAnticipo = 0 : AbonoAnticipo = 0 If IVAAcreditable = IVAxAcreditar Then IVAxAcreditar = 0 : SimplificaIVAxAcreditar = True '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 'ConceptoDetalle = gvr.DataKey("RazonSocial") ' gvrr.FCLiteral("LitPS").Text 'Cargos += Math.Round(gvrr.FCLiteral("LitSubTotalPS").Text.ToDouble * TipoCambioCompra, 2) If Not Conta.AddMovimiento(IDPoliza, gvrr.FCDropDownList("DdlM").SelectedValue.ToEntero, False, gvrr.FCLiteral("LitSubTotalPS").Text.ToDouble * TipoCambioCompra, gvrc.FCHiddenField("HdnSerieFolio").Value, ConceptoDetalle, 0, 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.ToEntero, IDPoliza, gvrc.FCHiddenField("HdnCveCompra").Value.ToEntero) Then ' MsgError = "Error al actualizar compra" : Exit For 'End If End If End If 'If IVAxAcreditar > 0 Then ' If Not Conta.AddMovimiento( IDPoliza, IdCuentaIVAxAcreditar, False, (IVAxAcreditar * TipoCambioCompra), gvrc.FCHiddenField("HdnSerieFolio").Value, ConceptoDetalle, 0, 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 If IVAxAcreditar > 0 Then If Not Conta.AddMovimiento(IDPoliza, IdCuentaIVAxAcreditar, False, (IVAxAcreditar * TipoCambioCompra), gvrc.FCHiddenField("HdnSerieFolio").Value, ConceptoDetalle, 0, 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 If IVAAcreditable > 0 Then 'iva Acreditable ConceptoTmp = If(CveMoneda = 2, String.Format("{0} TC {1}", ConceptoDetalle, TipoCambioPago), ConceptoDetalle) If Not Conta.AddMovimiento(IDPoliza, IdCuentaIVAAcreditable, False, IVAAcreditable * TipoCambioPago, gvrc.FCHiddenField("HdnSerieFolio").Value, ConceptoTmp, 0, Fecha, gvrc.FCHiddenField("HdnCveCompra").Value.ContaReferencia(TipoContaReferencia.Compra), If(MonExt, IVAAcreditable, 0.0)) Then MsgError = "No se pudo insertar movimiento contable" : Exit For Dim SubTotal As Double = CompraPagadoTotal * TipoCambioPago - IVAAcreditable * TipoCambioPago + CompraPagadoRetIVA * TipoCambioPago + CompraPagadoRetISR * TipoCambioPago 'CODIGO que obtiene el max, de la cuenta contable, de las comprobaciones IdCuentaBancos = DtDatosComprobacionesPagos.FiltraParametros(String.Format("CveCompra = {0}", gvr.DataKey("CveCompra"))).MAX("IdCtaContable").ToString.ToEntero 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 'registro el proveedor generico Select Case UsuarioActual.CveEmpresa Case 66 : IdProveedor = 12726 Case Else : IdProveedor = 1 End Select 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 If IdCuentaBancos > 0 AndAlso Not Conta.AddDevolucionesIVA(IDPoliza, IdCuentaBancos, IdProveedor, 16, SubTotal, IVAAcreditable * TipoCambioPago, CompraPagadoRetIVA * TipoCambioPago, CompraPagadoRetISR * TipoCambioPago, Fecha, NumPoliza, gvrc.FCHiddenField("HdnSerie").Value, gvrc.FCHiddenField("HdnFolio").Value.StrToNum, "", UsuarioActual.CveEmpresa) Then MsgError = "No se pudo insertar movimientos de devoluciones de IVA" : Exit For End If End If 'afecto los movimientos en los que se hizo el pago For Each dcp As DataRow In DtDatosComprobacionesPagos.FiltraParametros(String.Format("CveCompra = {0}", gvr.DataKey("CveCompra"))).Rows IdCuentaFuncionario = dcp("IdCtaContPersonal").ToString.ToEntero If Not Conta.AddMovimiento(IDPoliza, IdCuentaFuncionario, True, dcp("importe").ToString.ToDecimal * TipoCambioCompra, gvrc.FCHiddenField("HdnSerieFolio").Value, ConceptoDetalle, 0, Fecha, gvrc.FCHiddenField("HdnCveCompra").Value.ContaReferencia(TipoContaReferencia.Compra), If(MonExt, dcp("importe").ToString.ToDecimal, 0.0)) Then MsgError = "No se pudo insertar movimiento contable" : Exit For Next If AbonoProveedor <> 0 Then Dim TmpTotal As Decimal = 0 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 * MultiNC) - 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, 0, 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 * MultiNC, 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 ' If Not Conta.AddMovimiento( IDPoliza, IdCuentaProveedor, True, AbonoProveedor, gvrc.FCHiddenField("HdnSerieFolio").Value, gvrc.FCHiddenField("HdnSerieFolio").Value, 0, Fecha, gvrc.FCHiddenField("HdnCveProveedor").Value.ContaReferencia(TipoContaReferencia.Proveedor), If(MonExt, AbonoProveedor, 0.0)) Then MsgError = "No se pudo insertar movimiento contable" : Exit For 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, 0, 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, 0, 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 ''hago el movimiento de fluctuacion cambiaria 'If gvr.DataKey("CveMoneda") = "2" AndAlso gvr.DataKey("IdCtaContComplementaria").ToEntero > 0 Then ' Dim FluctuacionCambiaria, FluctuacionCambiariaIVA As Decimal ' 'registro a la cuenta complementaria del proveedor ' Dim TmpTotal As Double = Math.Round(CompraPagadoTotal * TipoCambioCompra - (CompraPagadoTotal * MultiNC), 2) '' MultiNC es cuando es NC ' If 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 ' Dim CtaFluctuacion As Integer ' Dim tempMovto As Boolean = False ' 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, "Fluctuacion IVA " & ConceptoDetalle, 0, Fecha, gvr.DataKey("CveProveedor").ContaReferencia(TipoContaReferencia.Proveedor), 0) Then MsgError = "No se pudo insertar movimiento contable" : Exit For ' no lleva moneda extranjera ' End If ' FluctuacionCambiaria = Math.Round((CompraPagadoRetISR * TipoCambioCompra) - (CompraPagadoRetISR * TipoCambioPago), 2) 'FLUCTUACION CAMBIARIA DE ISR ' Dim Dif As Double = Math.Round((CompraPagadoTotal * TipoCambioPago) - (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, 0, 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 'If AbonoFuncionario > 0 Then ' If Not Conta.AddMovimiento( IDPoliza, IdCuentaFuncionario, True, AbonoFuncionario, gvrc.FCHiddenField("HdnSerieFolio").Value, gvrc.FCHiddenField("HdnSerieFolio").Value, 0, 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 Next 'If AbonoAnticipo > 0 Then ' If Not Conta.AddMovimiento( IDPoliza, IdCuentaAnticipo, True, AbonoAnticipo, "", 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 '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 Private Sub ContabilizarNCs() Dim TipoCambio As Double Dim Contador As Integer = 0 Dim ContadorME As Integer = 0 Dim GvTmp As GridView = Nothing GvTmp = GvNC For Each gvr As GridViewRow In GvTmp.Rows If gvr.FCCheckBox("Chk").Checked Then Contador += 1 If gvr.DataKey("CveMonedaCompra") <> "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 Bancos As ClsBancos = Nothing Dim IDPoliza As Integer = 0 Dim Referencia As String Dim ConceptoMov As String Dim ConceptoDetalle, ConceptoTmp 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 IVAAcreditable, IVAxAcreditar As Decimal Dim CveMoneda As Integer ', CvePrePoliza Dim CvePlantillaPoliza As Integer Dim CargoProveedor, CargoAnticipo, AbonoAnticipo, AbonoProveedor As Decimal Dim IdCuentaProveedor, IdCuentaBancos, IdCuentaFuncionario As Integer ' IdCuentaFuncionario, IdCuentaDeudorDiverso, Dim MsgError As String = "" Dim MsgErrorGeneral As New StringBuilder Dim PolizasGeneradas As New StringBuilder Dim IdCuentaIVAxAcreditar, IdCuentaIVAAcreditable As Integer Dim CompraTotal, IVAPagado, RetIVAPagado, RetISRPagado As Decimal Dim Folio As String Dim EsContabilizada, SimplificaIVAxAcreditar As Boolean Dim CompraPagadoTotal, CompraPagadoRetIVA, CompraPagadoRetISR As Decimal 'Dim TotalFuncionarios As Decimal Dim TipoCambioPago As Decimal Dim TipoCambioCompra As Decimal Dim TipoCambioFechaCompra As Decimal 'utiliza el tipo de cambio exclusivo de la fecha de la compra Try For Each gvr As GridViewRow In GvTmp.Rows If gvr.FCCheckBox("Chk").Checked Then Folio = "" '----------------------------------------- Registro Movimientos Bancarios ConceptoMov = gvr.FCTextBox("TxtDescripcion").Text CvePlantillaPoliza = gvr.DataKey("CvePlantillaPoliza").ToEntero 'IdCuentaBancos = gvr.DataKey("IdCtaContBancos").ToEntero 'IdCtaContBancosComplementaria = gvr.DataKey("IdCtaContBancosComplementaria").ToEntero Referencia = ConceptoMov 'si es otra diferente al peso If gvr.DataKey("CveMonedaCompra") <> "1" Then TipoCambio = TxtTC.Text.ToDouble If RBLOpcion.SelectedValue = "1" Then TipoCambioPago = TxtTC.Text.ToDouble Else TipoCambioPago = gvr.FCTextBox("TxtTC").Text.ToDouble MonExt = True Concepto = String.Format("{0} TC:{1} ${2}", ConceptoMov, TxtTC.Text, gvr.DataKey("Total").ToDouble.FormatoNumero) Else TipoCambio = 1 TipoCambioCompra = 1 TipoCambioPago = 1 MonExt = False Concepto = ConceptoMov End If Total = gvr.DataKey("Total").ToDouble 'inserto una poliza por pago Conta = New ClsContPAQi(UsuarioActual.Empresa) Conta.IniciaTransacSQL() PrePolizas = New ClsContabilidad Bancos = New ClsBancos(PrePolizas.IniciaTransacSQL()) MsgError = "" Fecha = gvr.FCTextBox("TxtFecha").Text.ToDate IDPoliza = Conta.AddPoliza(gvr.FCDropDownList("DdlPolizaTipo").SelectedValue.ToEntero, gvr.FCTextBox("TxtDescripcion").Text, Total, Total, UsuarioActual.CveUsuario, Fecha, Folio, TipoPoliza) NumPoliza = Conta.Folio Select Case gvr.DataKey("CvePlantillaPoliza") Case "3" ' Anticipo TipoMovto = False Case "10" 'Amortizacion NC TipoMovto = True End Select Dim GvCompras As GridView = gvr.FCGridView("GvPC") For Each gvrc As GridViewRow In GvCompras.Rows AbonoProveedor = 0 : CargoProveedor = 0 : CargoAnticipo = 0 : AbonoAnticipo = 0 IdCuentaIVAxAcreditar = gvr.DataKey("IdCuentaIVAxAcreditar").ToEntero IdCuentaIVAAcreditable = gvr.DataKey("IdCuentaIVAAcreditable").ToEntero 'IdCuentaRetIVA = gvrc.FCHiddenField("HdnIdCtaContRetIVA").Value.ToEntero 'IdCuentaRetISR = gvrc.FCHiddenField("HdnIdCtaContRetISR").Value.ToEntero CompraTotal = gvrc.FCHiddenField("HdnTotal").Value.ToDecimal IVAxAcreditar = 0 IVAAcreditable = gvrc.FCHiddenField("HdnIVA").Value.ToDecimal CompraPagadoTotal = CompraTotal IVAPagado = IVAAcreditable RetIVAPagado = gvrc.FCHiddenField("HdnRetIVA").Value.ToDecimal RetISRPagado = gvrc.FCHiddenField("HdnRetISR").Value.ToDecimal EsContabilizada = gvrc.FCHiddenField("HdnCompraIdPoliza").Value.ToEntero > 0 ConceptoDetalle = gvrc.FCHiddenField("HdnRazonSocial").Value TipoCambioFechaCompra = gvrc.FCHiddenField("HdnTCFechaCompra").Value.ToDecimal CveMoneda = gvr.DataKey("CveMonedaCompra").ToEntero IdCuentaProveedor = gvrc.FCHiddenField("HdnIdCtaContProveedores").Value.ToEntero If Not Bancos.UpdateCompraPrePoliza(TxtFecha.Text.ToDate, NumPoliza, IDPoliza, gvrc.FCHiddenField("HdnCveCompra").Value.ToEntero, 8) Then MsgError = "Error al actualizar compra" : Exit For 'If Not Bancos.UpdateCompraPrePoliza(TxtFecha.Text.ToDate, NumPoliza, IDPoliza, gvrc.FCHiddenField("HdnCveCompra").Value.ToEntero, 9) Then MsgError = "Error al actualizar compra" : Exit For 'ya viene el tipo de cambio entre la fecha de compra y la ultima fluctuacion If CveMoneda = 2 Then TipoCambioCompra = gvrc.FCHiddenField("HdnTC").Value.ToDouble Else TipoCambioCompra = 1 ''S I M P L I F I C A R SimplificaIVAxAcreditar = False If CargoAnticipo = AbonoAnticipo Then CargoAnticipo = 0 : AbonoAnticipo = 0 If IVAAcreditable = IVAxAcreditar Then IVAxAcreditar = 0 : SimplificaIVAxAcreditar = True '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 'ConceptoDetalle = gvr.DataKey("RazonSocial") ' gvrr.FCLiteral("LitPS").Text 'Cargos += Math.Round(gvrr.FCLiteral("LitSubTotalPS").Text.ToDouble * TipoCambioCompra, 2) If Not Conta.AddMovimiento(IDPoliza, gvrr.FCDropDownList("DdlM").SelectedValue.ToEntero, False, gvrr.FCLiteral("LitSubTotalPS").Text.ToDouble * TipoCambioCompra, gvrc.FCHiddenField("HdnSerieFolio").Value, ConceptoDetalle, 0, 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.ToEntero, IDPoliza, gvrc.FCHiddenField("HdnCveCompra").Value.ToEntero) Then ' MsgError = "Error al actualizar compra" : Exit For 'End If End If End If 'If IVAxAcreditar > 0 Then ' If Not Conta.AddMovimiento( IDPoliza, IdCuentaIVAxAcreditar, False, (IVAxAcreditar * TipoCambioCompra), gvrc.FCHiddenField("HdnSerieFolio").Value, ConceptoDetalle, 0, 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 If IVAAcreditable > 0 Then 'iva Acreditable ConceptoTmp = If(CveMoneda = 2, String.Format("{0} TC {1}", ConceptoDetalle, TipoCambioPago), ConceptoDetalle) If Not Conta.AddMovimiento(IDPoliza, IdCuentaIVAAcreditable, False, IVAAcreditable * TipoCambioPago, gvrc.FCHiddenField("HdnSerieFolio").Value, ConceptoTmp, 0, Fecha, gvrc.FCHiddenField("HdnCveCompra").Value.ContaReferencia(TipoContaReferencia.Compra), If(MonExt, IVAAcreditable, 0.0)) Then MsgError = "No se pudo insertar movimiento contable" : Exit For Dim SubTotal As Double = CompraPagadoTotal * TipoCambioPago - IVAAcreditable * TipoCambioPago + CompraPagadoRetIVA * TipoCambioPago + CompraPagadoRetISR * TipoCambioPago 'CODIGO que obtiene el max, de la cuenta contable, de las comprobaciones IdCuentaBancos = DtDatosComprobacionesPagos.FiltraParametros(String.Format("CveCompra = {0}", gvr.DataKey("CveCompra"))).MAX("IdCtaContable").ToString.ToEntero 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 'registro el proveedor generico Select Case UsuarioActual.CveEmpresa Case 66 : IdProveedor = 12726 Case Else : IdProveedor = 1 End Select 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 If Not Conta.AddDevolucionesIVA(IDPoliza, IdCuentaBancos, IdProveedor, 16, SubTotal, IVAAcreditable * TipoCambioPago, CompraPagadoRetIVA * TipoCambioPago, CompraPagadoRetISR * TipoCambioPago, Fecha, NumPoliza, gvrc.FCHiddenField("HdnSerie").Value, gvrc.FCHiddenField("HdnFolio").Value.StrToNum, "", UsuarioActual.CveEmpresa) Then MsgError = "No se pudo insertar movimientos de devoluciones de IVA" : Exit For End If End If 'afecto los movimientos en los que se hizo el pago For Each dcp As DataRow In DtDatosComprobacionesPagos.FiltraParametros(String.Format("CveCompra = {0}", gvr.DataKey("CveCompra"))).Rows IdCuentaFuncionario = dcp("IdCtaContPersonal").ToString.ToEntero If Not Conta.AddMovimiento(IDPoliza, IdCuentaFuncionario, True, dcp("importe").ToString.ToDecimal * TipoCambioCompra, gvrc.FCHiddenField("HdnSerieFolio").Value, ConceptoDetalle, 0, Fecha, gvrc.FCHiddenField("HdnCveCompra").Value.ContaReferencia(TipoContaReferencia.Compra), If(MonExt, dcp("importe").ToString.ToDecimal, 0.0)) Then MsgError = "No se pudo insertar movimiento contable" : Exit For Next Next 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 Private Sub GvNC_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles GvNC.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" e.Row.FCCheckBox("Chk").Visible = True Dim gvC As GridView = e.Row.FCGridView("GvPC") Dim dtcompras As DataTable = Nothing If e.Row.DBCampo("CveCompra").ToEntero > 0 Then dtcompras = DtDatosNotasCredito.FiltraParametros(String.Format("CveCompra = {0} AND CvePS = -1 ", e.Row.DBCampo("CveCompra"))) End If gvC.DataSource = dtcompras gvC.DataBind() '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 dtcompras IsNot Nothing AndAlso dtcompras.Rows.Count > 0 AndAlso dtcompras.MIN("Valido") = "0" Then ' e.Row.FCCheckBox("Chk").Visible = False ' End If 'End If End If End Sub End Class