Files
SIG/Contabilidad/FisImpuestos.aspx.vb
2020-07-16 15:23:10 -07:00

542 lines
21 KiB
VB.net

Option Strict On
Imports Extensiones
Imports System.Data
Imports System.IO
Partial Class Contabilidad_FisImpuestos
Inherits ClsPaginas
#Region "Propiedades"
Public Property DtMovimientos As DataTable
Get
Return CType(ViewState("DtMovimientos"), DataTable)
End Get
Set(value As DataTable)
ViewState("DtMovimientos") = value
End Set
End Property
Private Property CveImpuesto As Integer
Get
If ViewState("CveImpuesto") Is Nothing Then
Return -1
Else
Return DirectCast(ViewState("CveImpuesto"), Integer)
End If
End Get
Set(value As Integer)
ViewState("CveImpuesto") = value
End Set
End Property
Private Property RutaArchivo As String
Get
If ViewState("RutaArchivo") Is Nothing Then
Return "-1"
Else
Return ViewState("RutaArchivo").ToString
End If
End Get
Set(value As String)
ViewState("RutaArchivo") = value
End Set
End Property
Public Property DTCuentasContables As DataTable
Get
Return CType(ViewState("DTCuentasContables"), DataTable)
End Get
Set(value As DataTable)
ViewState("DTCuentasContables") = value
End Set
End Property
#End Region
Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
'Dim Dtplantilla As DataTable = GlobalDTContaPlantillasPolizasDetalle(62).FiltraParametros(String.Format("CveEmpresa={0}", UsuarioActual.CveEmpresa), "Orden")
If Not Page.IsPostBack Then
CargaCombos()
Try
If Not Request.QueryString("CveImpuesto") Is Nothing Then
CveImpuesto = Request.QueryString("CveImpuesto").ToString.ToEntero
' CargaDatos()
End If
Catch ex As Exception
End Try
Dim DT As DataTable = Nothing
If UsuarioActual.Empresa.UsaContabilidad Then
Dim ObjConta As New ClsContPAQi(UsuarioActual.Empresa)
If ObjConta.GetCuentas(-1, "-1", 1) Then
DT = ObjConta.DtResultados
DTCuentasContables = ObjConta.DtResultados
End If
ObjConta.Dispose()
End If
DirectCast(Master.FindControl("TSM"), ScriptManager).EnablePageMethods = True
DtMovimientos = New DataTable("Movimientos")
Dim IDMov As DataColumn = DtMovimientos.Columns.Add("IdMov", Type.GetType("System.Int32")) : IDMov.AutoIncrement = True
With DtMovimientos.Columns
.Add("IdCuenta", Type.GetType("System.Int32"))
.Add("CodigoCuenta", Type.GetType("System.String"))
.Add("Cuenta", Type.GetType("System.String"))
.Add("Referencia", Type.GetType("System.String"))
.Add("Concepto", Type.GetType("System.String"))
.Add("Cargo", Type.GetType("System.Double"))
.Add("Abono", Type.GetType("System.Double"))
.Add("Importe", Type.GetType("System.Double"))
.Add("TipoMovto", Type.GetType("System.Int32"))
.Add("EsComodin", Type.GetType("System.Int32"))
.Add("CveConcepto", Type.GetType("System.Int32"))
.Add("CveProveedor", Type.GetType("System.Int32"))
.Add("RazonSocial", Type.GetType("System.String"))
.Add("SubProyecto", Type.GetType("System.String"))
.Add("CveSubProyecto", Type.GetType("System.Int32"))
End With
Try
If Not Request.QueryString("CveImpuesto") Is Nothing Then
CveImpuesto = Request.QueryString("CveImpuesto").ToString.ToEntero
End If
Catch ex As Exception
End Try
If CveImpuesto > 0 Then
CargaDatos()
Else
CargaDetallesPlantilla()
End If
GvMov.DataBind()
UPMovs.Update()
End If
End Sub
Private Sub CargaCombos()
Dim ObjConta As New ClsContPAQi(UsuarioActual.Empresa)
Dim ObjContabilidad As New ClsContabilidad
If ObjConta.GetMonedas() Then
DdlMoneda.DataSource = ObjConta.DtResultados
End If
If ObjContabilidad.GetFisImpuestosTipos(1) Then
DdlTipoImpuesto.DataSource = ObjContabilidad.DtResultados
End If
ObjConta.Dispose()
DdlProveedores.DataSource = GlobalDTCompProveedores(UsuarioActual.CveEmpresa)
DdlMoneda.DataBind()
DdlTipoImpuesto.DataBind()
DdlProveedores.DataBind()
DdlMoneda.Items.Insert(0, New ListItem("Seleccione una moneda", "-1"))
DdlTipoImpuesto.Items.Insert(0, New ListItem("Seleccione una opción", "-1"))
DdlProveedores.Items.Insert(0, New ListItem("Seleccione un proveedor", "-1"))
End Sub
Private Sub CargaDatos()
Dim objConta As New ClsContabilidad
Dim DtTemp As New DataTable
Dim _CvePrePoliza As Integer = 0
Dim Dt As DataTable = GlobalDTContaPlantillasPolizasDetalle(62).FiltraParametros(String.Format("CveEmpresa={0}", UsuarioActual.CveEmpresa), "Orden")
Dim DtTempDetalle As New DataTable
With DtTempDetalle.Columns
.Add("IdMov", Type.GetType("System.Int32"))
.Add("IdCuenta", Type.GetType("System.Int32"))
.Add("CodigoCuenta", Type.GetType("System.String"))
.Add("Cuenta", Type.GetType("System.String"))
.Add("Referencia", Type.GetType("System.String"))
.Add("Concepto", Type.GetType("System.String"))
.Add("Cargo", Type.GetType("System.Double"))
.Add("Abono", Type.GetType("System.Double"))
.Add("TipoMovto", Type.GetType("System.Int32"))
.Add("EsComodin", Type.GetType("System.Int32"))
.Add("Importe", Type.GetType("System.Double"))
.Add("CveConcepto", Type.GetType("System.Int32"))
.Add("CveProveedor", Type.GetType("System.Int32"))
.Add("RazonSocial", Type.GetType("System.String"))
.Add("SubProyecto", Type.GetType("System.String"))
.Add("CveSubProyecto", Type.GetType("System.Int32"))
End With
If objConta.GetFisImpuestos(CveImpuesto, -1, -1, "-1", UsuarioActual.Empresa.CveEmpresa, Nothing, Nothing) Then
DtTemp = objConta.DtResultados
If DtTemp.Rows.Count > 0 Then
TxtFolio.Text = DtTemp(0)("Folio").ToString
DdlProveedores.SelectedValueExist(DtTemp(0)("CveProveedor").ToString)
DdlMoneda.SelectedValueExist(DtTemp(0)("CveMoneda").ToString)
DdlTipoImpuesto.SelectedValueExist("CveTipoImpuesto")
TxtConcepto.Text = DtTemp(0)("Concepto").ToString
TxtFechaImpuesto.Text = DtTemp(0)("Fecha").ToString.ToDate.ToString("dd/MM/yyyy")
_CvePrePoliza = DtTemp(0)("CvePrepoliza").ToString.ToEntero
BtnGuardar.Visible = False
UPImpuesto.Update()
If objConta.GetFisImpuestosDetalle(CveImpuesto, -1, -1, "-1", UsuarioActual.Empresa.CveEmpresa, Nothing, Nothing) Then
For Each DRD As DataRow In objConta.DtResultados.Rows
Dim dr As DataRow = DtTempDetalle.NewRow
dr("IdCuenta") = DRD("IdCtaContable").ToString.ToEntero
dr("CodigoCuenta") = ""
dr("Cuenta") = DRD("ConceptoContable").ToString
dr("RazonSocial") = ""
dr("Concepto") = ""
dr("TipoMovto") = If(DRD("TipoMovto").ToString = "False", 0, 1)
dr("EsComodin") = 1
dr("Importe") = DRD("Importe").ToString.ToDouble
dr("CveConcepto") = 0
dr("CveProveedor") = DRD("CveProveedor").ToString.ToEntero
dr("SubProyecto") = DRD("SubProyecto")
dr("CveSubProyecto") = DRD("CveSubProyecto").ToString.ToEntero
DtTempDetalle.Rows.Add(dr)
Next
GvMov.DataSource = DtTempDetalle
GvMov.DataBind()
UPMovs.Update()
End If
Else
Alert("No se encontron registros del impuesto solicitado.", TipoMensaje.MsgAdvertencia)
End If
objConta.Dispose()
Else
objConta.Dispose()
End If
End Sub
Private Sub CargaDetallesPlantilla()
Dim Dt As DataTable = GlobalDTContaPlantillasPolizasDetalle(62).FiltraParametros(String.Format("CveEmpresa={0}", UsuarioActual.CveEmpresa), "Orden")
Dim Cuenta As String = ""
Dim IdCuenta As Integer = 0
Dim CodigoCuenta As String = ""
Dim NombreCuenta As String = ""
Dim EsComodin As Integer = 0
DtMovimientos.Clear()
For Each drt As DataRow In Dt.Rows
Cuenta = drt("ConceptoContable").ToString
IdCuenta = 0
CodigoCuenta = ""
NombreCuenta = ""
If drt("IdCtaContable").ToString.ToEntero > 0 Then 'DtCuentasContables
Dim drr As DataRow = DTCuentasContables.FiltroPrimero(String.Format("Id={0}", drt("IdCtaContable").ToString))
If drr IsNot Nothing Then
IdCuenta = drt("IdCtaContable").ToString.ToEntero
CodigoCuenta = drr("CuentaFormato").ToString()
NombreCuenta = drr("Nombre").ToString()
'Cuenta = drr("Nombre").ToString()
End If
EsComodin = 0
End If
Dim dr As DataRow = DtMovimientos.NewRow
dr("IdCuenta") = IdCuenta
dr("CodigoCuenta") = CodigoCuenta & "<br>" & NombreCuenta
dr("Cuenta") = Cuenta
dr("RazonSocial") = drt("RazonSocial")
dr("Concepto") = TxtConcepto.Text
dr("TipoMovto") = If(drt("TipoMovto").ToString = "False", 0, 1)
dr("EsComodin") = EsComodin
dr("CveConcepto") = drt("CveConcepto")
dr("CveProveedor") = drt("CveProveedor")
dr("SubProyecto") = drt("SubProyecto")
dr("CveSubProyecto") = drt("CveSubProyecto")
DtMovimientos.Rows.Add(dr)
Next
GvMov.DataSource = DtMovimientos
GvMov.DataBind()
UPMovs.Update()
End Sub
Private Function SubirComprobante(CveImpuesto As Integer) As Boolean
Dim Respuesta As Boolean = False
Dim RutaDirectorio As String = String.Format("{0}{1}", UsuarioActual.Empresa.Ruta, "Comprobantes\")
Dim filesgral As List(Of Archivo) = Anexo.getfiles().Archivos
Dim filemove As String = ""
Dim Comprobante As String = ""
If filesgral.Count > 0 Then
For Each fileItem As Archivo In filesgral
Comprobante = IO.Path.GetExtension(String.Format("{0}Temp\{1}", AppDomain.CurrentDomain.BaseDirectory, fileItem.filename)).Replace(".", "")
filemove = fileItem.FileUrl
RutaArchivo = String.Format("{0}{1}", RutaDirectorio, CveImpuesto)
RutaArchivo = String.Format("{0}.{1}", RutaArchivo, fileItem.Extencion)
Try
If Not Directory.Exists(RutaDirectorio) Then
Directory.CreateDirectory(RutaDirectorio)
End If
If File.Exists(RutaArchivo) Then
File.Delete(RutaArchivo)
End If
File.Move(filemove, RutaArchivo)
Respuesta = True
Catch ex As Exception
OnError("Error al intentar guardar archivo ", ex)
Respuesta = False
RutaArchivo = "-1"
End Try
Anexo.Text = ""
Next
Else
Respuesta = True
End If
UpAnexo.Update()
Return Respuesta
End Function
Protected Sub GvMov_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles GvMov.RowDataBound
Dim Dt As DataTable = GlobalDTContaPlantillasPolizasDetalle(62).FiltraParametros(String.Format("CveEmpresa={0}", UsuarioActual.CveEmpresa), "Orden")
If e.Row.RowType = DataControlRowType.DataRow Then
e.Row.Cells(0).HorizontalAlign = HorizontalAlign.Left
e.Row.Cells(0).ToolTip = e.Row.DBCampo("IdCuenta")
If e.Row.DBCampo("TipoMovto") = "1" Then e.Row.FCTextBox("TxtAbono").Visible = True Else e.Row.FCTextBox("TxtCargo").Visible = True
'cuando se modifica el importe de la cuenta bancaria que se actualice el importe del documento
If e.Row.DBCampo("EsComodin") = "1" Then
If e.Row.DBCampo("TipoMovto") = "1" Then
e.Row.FCTextBox("TxtAbono").Attributes.Add("onkeyup", "FncImporte('TxtImporte',this.id,2)")
If e.Row.DataKey("Importe").ToString.ToDouble > 0 Then
e.Row.FCTextBox("TxtAbono").Text = e.Row.DataKey("Importe").ToString.ToDouble.ToString("###,###,###.00")
e.Row.FCTextBox("TxtAbono").Enabled = False
TxtTotalAbonos.Enabled = False
End If
'e.Row.FCTextBox("TxtAbono").Text = TxtImporte.Text
Else
e.Row.FCTextBox("TxtCargo").Attributes.Add("onkeyup", "FncImporte('TxtImporte',this.id,2)")
If e.Row.DataKey("Importe").ToString.ToDouble > 0 Then
e.Row.FCTextBox("TxtCargo").Text = e.Row.DataKey("Importe").ToString.ToDouble.ToString("###,###,###.00")
e.Row.FCTextBox("TxtCargo").Enabled = False
TxtTotalCargos.Enabled = False
End If
'e.Row.FCTextBox("TxtCargo").Text = TxtImporte.Text
End If
End If
End If
End Sub
Protected Sub BtnGuardar_Click(sender As Object, e As EventArgs) Handles BtnGuardar.Click
Dim objConta As New ClsContabilidad
Dim ErrorProceso As Boolean = True
Dim InfoArchivo As FileInfo
Dim CvePrepoliza As Integer = 0
Dim NombreArchivo As String = "-1"
Dim CargoTotal As Double = 0
Dim AbonoTotal As Double = 0
For Each gvRow As GridViewRow In GvMov.Rows
Dim Cargo As Double = gvRow.FCTextBox("txtcargo").Text.ToDouble
Dim Abono As Double = gvRow.FCTextBox("txtabono").Text.ToDouble
CargoTotal = CargoTotal + Cargo
AbonoTotal = AbonoTotal + Abono
Next
If CargoTotal = AbonoTotal And CargoTotal > 0 Then
objConta.IniciaTransacSQL()
CvePrepoliza = objConta.AddPrePolizas("Contabilidad/Impuestos", 62, 0, 0, DdlMoneda.SelectedValue.ToEntero, Now, TxtConcepto.Text.Trim.ToUpper, UsuarioActual.CveUsuario, UsuarioActual.Empresa.CveEmpresa)
If CvePrepoliza > 0 Then
If objConta.AddUpdateFisImpuestos(-1, DdlTipoImpuesto.SelectedValue.ToEntero, CvePrepoliza, DdlProveedores.SelectedValue.ToEntero, TxtFechaImpuesto.Text.ToDate, TxtFolio.Text.Trim.ToUpper, NombreArchivo, UsuarioActual.CveUsuario, UsuarioActual.Empresa.CveEmpresa) Then
ErrorProceso = False
CveImpuesto = objConta.DtResultados(0)("CveImpuesto").ToString.ToEntero
' If objConta.AddUpdateFisImpuestos(CveImpuesto, DdlTipoImpuesto.SelectedValue.ToEntero, -1, DdlProveedores.SelectedValue.ToEntero, TxtFechaImpuesto.Text.ToDate, TxtFolio.Text.Trim.ToUpper, "-1", UsuarioActual.CveUsuario, UsuarioActual.Empresa.CveEmpresa) Then
ErrorProceso = False
Dim filesgral As List(Of Archivo) = Anexo.getfiles().Archivos
If filesgral.Count > 0 Then
If SubirComprobante(CveImpuesto) Then
InfoArchivo = New FileInfo(RutaArchivo)
If InfoArchivo.Exists Then
NombreArchivo = System.IO.Path.GetFileName(RutaArchivo)
objConta.AddUpdateFisImpuestos(CveImpuesto, DdlTipoImpuesto.SelectedValue.ToEntero, CvePrepoliza, DdlProveedores.SelectedValue.ToEntero, TxtFechaImpuesto.Text.ToDate, TxtFolio.Text.Trim.ToUpper, NombreArchivo, UsuarioActual.CveUsuario, UsuarioActual.Empresa.CveEmpresa)
ErrorProceso = False
Else
ErrorProceso = True
OnError("", New Exception("No existe el archivo"))
End If
Else
ErrorProceso = True
End If
End If
If Not ErrorProceso Then
Dim ContadorOrdern As Integer = 0
For Each gvRow As GridViewRow In GvMov.Rows
'insercion de detalle ***********************************************************************************************
Dim Importe As Decimal = 0
Dim TipoMovto As Boolean = False
Dim Cargo As Double = gvRow.FCTextBox("txtcargo").Text.ToDouble
Dim Abono As Double = gvRow.FCTextBox("txtabono").Text.ToDouble
Dim Concepto As String = TxtConcepto.Text.ToUpper.Trim
Dim CveConcepto As Integer = gvRow.DataKey("CveConcepto").ToEntero
Dim IdCtaContable As Integer = gvRow.DataKey("IDCuenta").ToEntero
Dim CveSubProtyecto As Integer = If(gvRow.DataKey("CveSubProyecto").ToEntero = 0, -1, gvRow.DataKey("CveSubProyecto").ToEntero)
Dim CveProveedor As Integer = gvRow.DataKey("CveProveedor").ToEntero
Dim TipoMovimientoString As String = gvRow.DataKey("TipoMovto")
If gvRow.DataKey("TipoMovto").ToDouble = 0 Then
Importe = gvRow.FCTextBox("txtcargo").Text.ToDecimal
TipoMovto = True
Else
Importe = gvRow.FCTextBox("txtabono").Text.ToDecimal
TipoMovto = False
End If
If Importe > 0 Then
If objConta.AddPrePolizasDetalle(CvePrepoliza, TipoMovto, Importe, TxtFolio.Text.Trim.ToUpper, CveConcepto, Concepto, Now, IdCtaContable, -1, CveProveedor:=CveProveedor, CveSubProyecto:=CveSubProtyecto) Then
ContadorOrdern = ContadorOrdern + 1
ErrorProceso = False
Else
ErrorProceso = True
Exit For
End If
End If
Next
End If
If Not ErrorProceso Then
Alert($"Prepoliza { CvePrepoliza } Insertada correctamente, Impuesto { CveImpuesto } insertado y actualizado correctamente")
End If
Else
ErrorProceso = True
End If
Else
ErrorProceso = True
End If
If Not ErrorProceso Then
objConta.Commit()
Response.Redirect($"FisImpuestos.aspx?CveImpuesto={CveImpuesto}", True)
Else
objConta.RollBack()
End If
Else
If CargoTotal = 0 Then
Alert("El cargo total debe ser mayor a 0")
End If
If CargoTotal <> AbonoTotal Then
Alert("El cargo total y el abono total deben ser iguales.")
End If
End If
objConta.Dispose()
End Sub
Private Function IdCuentaBancos(CveCuenta As Integer) As Integer
Dim Retorno As Integer = 0
'saco de la póliza el importe del cheque, que coincida la cuenta contable con la bancaria
If CveCuenta > 0 Then
Dim drr As DataRow = GlobalDTBancosCuentas(UsuarioActual.CveUsuario, CveEmpresa:=UsuarioActual.CveEmpresa).FiltroPrimero("CveCuenta=" & CveCuenta)
If drr IsNot Nothing Then
Retorno = drr("IdCtaContable").ToString.ToEntero
End If
End If
Return Retorno
End Function
Private Sub ResetControles()
DdlMoneda.SelectedIndex = 0
DdlTipoImpuesto.SelectedIndex = 0
DdlProveedores.SelectedIndex = 0
TxtFechaImpuesto.Text = ""
TxtConcepto.Text = ""
TxtFolio.Text = ""
UPImpuesto.Update()
CargaDetallesPlantilla()
End Sub
End Class