Files
SIG/Contabilidad/DiarioPagos.aspx.vb
JORGE LUIS CAUDILLO ESPARZA c35cf91883 Commit inicial Ventas Productivo
2019-08-14 16:40:54 -07:00

1826 lines
99 KiB
VB.net

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