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("
", 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("