Option Explicit On
Option Strict On
Imports System.Data
Imports System.IO
Imports Extensiones
Partial Class Contabilidad_ContabilidadElectronica
Inherits ClsPaginas
#Region " PROPIEDADES "
Private Property ArchivoCuentas As String
Get
ArchivoCuentas = ViewState("ArchivoCuentas").ToString
End Get
Set(value As String)
ViewState("ArchivoCuentas") = value
End Set
End Property
Private Property ArchivoBalanza As String
Get
ArchivoBalanza = ViewState("ArchivoBalanza").ToString
End Get
Set(value As String)
ViewState("ArchivoBalanza") = value
End Set
End Property
#End Region
Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load
If Not IsPostBack Then
InicializaValores()
End If
End Sub
#Region " INICIALIZA VALORES "
Private Sub InicializaValores()
'TxtFechaI.Text = String.Format("01/01/{0}", NowADS().Year)
'TxtFechaI.Text = NowADS().ToShortDateString
'If Not UsuarioActual.Empresa.UsaContabilidad Then
' BtnGenerar.Enabled = False
' Alert("Este módulo requiere el uso de contabilidad", TipoMensaje.MsgAdvertencia)
' Exit Sub
'End If
If UsuarioActual.Empresa.TipoContabilidad = 1 Then
Dim objconta As New ClsContabilidad
If objconta.GetEjercicios(UsuarioActual.CveEmpresa) Then
DdlEjercicio.DataSource = objconta.DtResultados
Else
DdlEjercicio.DataSource = Nothing
End If
objconta.Dispose()
DdlEjercicio.DataBind()
Else
Dim ObjConpaq As New ClsContPAQi(UsuarioActual.Empresa)
If ObjConpaq.GetEjercicios() Then
DdlEjercicio.DataSource = ObjConpaq.DtResultados
Else
DdlEjercicio.DataSource = Nothing
End If
ObjConpaq.Dispose()
DdlEjercicio.DataBind()
End If
DdlEjercicio.SelectedValue = NowADS().Year.ToString
DdlPeriodo.SelectedValue = NowADS().Month.ToString
End Sub
#End Region
#Region " GENERA XML "
Protected Sub BtnGenerar_Click(sender As Object, e As EventArgs)
'CREA DIRECTORIO SI NO EXISTE
DirectoryExistsCreate(String.Format("{0}ContabilidadElectronica", UsuarioActual.Empresa.Ruta))
'LIMPIA VALORES
ArchivoCuentas = ""
ArchivoBalanza = ""
If DdlTipoReporte.SelectedValue = "1" Then
GeneraCatalogo()
ElseIf DdlTipoReporte.SelectedValue = "2" Then
GeneraBalanza()
End If
End Sub
Private Sub GeneraCatalogo()
Dim FechaF As Date = String.Format("01/{0}/{1}", DdlPeriodo.SelectedValue.PadLeft(2, "0"c), DdlEjercicio.SelectedValue).ToDate.LastDayOfMonth
Dim DtCuentas As New DataTable
If UsuarioActual.Empresa.TipoContabilidad = 1 Then
Dim objconta As New ClsContabilidad
If objconta.GetCuentas(-1, "-1", -1, UsuarioActual.CveEmpresa) Then
DtCuentas = objconta.DtResultados
End If
objconta.Dispose()
Else
Dim ObjConpaq As New ClsContPAQi(UsuarioActual.Empresa)
If ObjConpaq.GetCuentasElectronica(MinFecha, FechaF) Then
DtCuentas = ObjConpaq.DtResultados
End If
ObjConpaq.Dispose()
End If
If DtCuentas IsNot Nothing AndAlso DtCuentas.Rows.Count > 0 Then
Dim Str As New StringBuilder
'CABECERA
Str.Append("")
Str.Append("")
'DETALLES
For Each Dr As DataRow In DtCuentas.Rows
Str.Append("")
Next
DtCuentas.Dispose()
'FIN
Str.Append("")
'GUARDA ARHIVO
' ArchivoCuentas = Server.MapPath(String.Format("~/Empresas/{0}/ContabilidadElectronica/{1}{2}{3}CT.xml", UsuarioActual.CveEmpresa, UsuarioActual.Empresa.RFC, DdlEjercicio.SelectedValue, DdlPeriodo.SelectedValue.PadLeft(2, "0"c)))
ArchivoCuentas = $"{UsuarioActual.Empresa.Ruta}/ContabilidadElectronica/{ UsuarioActual.Empresa.RFC}{DdlEjercicio.SelectedValue}{DdlPeriodo.SelectedValue.PadLeft(2, "0"c)}CT.xml"
'SOBREESCRIBE
If System.IO.File.Exists(ArchivoCuentas) Then
System.IO.File.Delete(ArchivoCuentas)
End If
Dim fs As FileStream = File.Create(ArchivoCuentas)
Dim info As Byte() = New UTF8Encoding(True).GetBytes(Str.ToString)
fs.Write(info, 0, info.Length)
fs.Close()
'DESCARGA XML
Dim DescargaZIP As Ionic.Zip.ZipFile = New Ionic.Zip.ZipFile()
If IO.File.Exists(ArchivoCuentas) Then
DescargaZIP.AddFile(ArchivoCuentas, "")
End If
DescargaZIP.Save(Response.OutputStream)
Response.AddHeader("content-Disposition", String.Format("attachment; filename={0}{1}{2}CT.zip", UsuarioActual.Empresa.RFC, DdlEjercicio.SelectedValue, DdlPeriodo.SelectedValue.PadLeft(2, "0"c)))
Response.ContentType = "application/zip"
Response.End()
End If
End Sub
Private Sub GeneraBalanza()
Dim FechaI As Date = String.Format("01/{0}/{1}", DdlPeriodo.SelectedValue.PadLeft(2, "0"c), DdlEjercicio.SelectedValue).ToDate
Dim FechaF As Date = FechaI.LastDayOfMonth
Dim DtCuentas As New DataTable
If UsuarioActual.Empresa.TipoContabilidad = 1 Then
Dim objconta As New ClsContabilidad
If objconta.GetBalanzaComprobacion(FechaI, FechaF, 1, -1, -1, -1, UsuarioActual.CveEmpresa, 0) Then
DtCuentas = objconta.DtResultados
End If
objconta.Dispose()
If DtCuentas IsNot Nothing Then
Dim Deudor As Decimal = DtCuentas.SUM("SaldoAD")
Dim Acreedor As Decimal = DtCuentas.SUM("SaldoAA")
If Deudor <> Acreedor Then
Alert("los Saldos Actuales no cuadran.", TipoMensaje.MsgError)
Exit Sub
End If
End If
Else
Dim ObjConpaq As New ClsContPAQi(UsuarioActual.Empresa)
If ObjConpaq.GetBalanzaElectronica(FechaI, FechaF) Then
DtCuentas = ObjConpaq.DtResultados
End If
ObjConpaq.Dispose()
End If
If DtCuentas IsNot Nothing AndAlso DtCuentas.Rows.Count > 0 Then
Dim Str As New StringBuilder
'CABECERA
Str.Append("")
Str.Append("")
'DETALLES
For Each Dr As DataRow In DtCuentas.Rows
Str.Append("")
Next
DtCuentas.Dispose()
'FIN
Str.Append("")
'GUARDA ARHIVO
ArchivoBalanza = Server.MapPath(String.Format("~/Empresas/{0}/ContabilidadElectronica/{1}{2}{3}BN.xml", UsuarioActual.CveEmpresa, UsuarioActual.Empresa.RFC, DdlEjercicio.SelectedValue, DdlPeriodo.SelectedValue.PadLeft(2, "0"c)))
Dim tDir As String = Server.MapPath(String.Format("~/Empresas/{0}/ContabilidadElectronica", UsuarioActual.CveEmpresa, UsuarioActual.Empresa.RFC))
'SOBREESCRIBE
If Not System.IO.Directory.Exists(tDir) Then System.IO.Directory.CreateDirectory(tDir)
'SOBREESCRIBE
If System.IO.File.Exists(ArchivoBalanza) Then System.IO.File.Delete(ArchivoBalanza)
Dim fs As FileStream = File.Create(ArchivoBalanza)
Dim info As Byte() = New UTF8Encoding(True).GetBytes(Str.ToString)
fs.Write(info, 0, info.Length)
fs.Close()
'DESCARGA XML
Dim DescargaZIP As Ionic.Zip.ZipFile = New Ionic.Zip.ZipFile()
If IO.File.Exists(ArchivoBalanza) Then
DescargaZIP.AddFile(ArchivoBalanza, "")
End If
DescargaZIP.Save(Response.OutputStream)
Response.AddHeader("content-Disposition", String.Format("attachment; filename={0}{1}{2}BN.zip", UsuarioActual.Empresa.RFC, DdlEjercicio.SelectedValue, DdlPeriodo.SelectedValue.PadLeft(2, "0"c)))
Response.ContentType = "application/zip"
Response.End()
End If
End Sub
#End Region
End Class