diff --git a/App_Code/ClsBancos.vb b/App_Code/ClsBancos.vb
index 0be6651c1..8e7c0f8a7 100644
--- a/App_Code/ClsBancos.vb
+++ b/App_Code/ClsBancos.vb
@@ -3267,13 +3267,18 @@ Public Class ClsBancos
' Return Retorno
'End Function
- Public Function UpdateCuentaDepositoPagoElectronico(CveCuentaDeposito As Integer) As Boolean
+ Public Function UpdateCuentaDepositoPagoElectronico(CveCuentaDeposito As Integer, Optional Opcion As Integer = 1, Optional FechaEliminacion As Date = MinFecha) As Boolean
+
+ 'Opcion 1: Bancomer, Opcion 2: Bajio, Opcion 3: Scotia
+
Dim Retorno As Boolean = False
DataAdapter("PA_Banc_LayoutCuentaDepositoUpdate")
With SqlAdapter.SelectCommand.Parameters
.Add("@CveCuentaDeposito", SqlDbType.Int).Value = CveCuentaDeposito
+ .Add("@Opcion", SqlDbType.Int).Value = Opcion
+ .Add("@FechaEliminacion", SqlDbType.Date).Value = FechaEliminacion
End With
Try
diff --git a/App_Code/ClsVentas.vb b/App_Code/ClsVentas.vb
index f6abba49c..68f28fc66 100644
--- a/App_Code/ClsVentas.vb
+++ b/App_Code/ClsVentas.vb
@@ -3431,7 +3431,7 @@ Public Class ClsVentas
Return Retorno
End Function
- Public Function GetReporteVentasUtilidad(CveVendedor As String, CveCliente As Integer, CveSubProyecto As String, FechaInicio As Date, FechaFin As Date, CveEmpresa As Integer, CvePS As Integer, CveCategoria As Integer, CveClasificacion As Integer, CveMarca As Integer, EsGarantia As Integer) As Boolean
+ Public Function GetReporteVentasUtilidad(CveVendedor As String, CveCliente As Integer, CveSubProyecto As String, FechaInicio As Date, FechaFin As Date, CveEmpresa As Integer, CvePS As Integer, CveCategoria As Integer, CveClasificacion As Integer, CveMarca As Integer, EsGarantia As Integer, CveProveedorCompra As Integer) As Boolean
Dim Retorno As Boolean = False
DataAdapter("PA_Vta_VentasUtilidadGet")
@@ -3447,6 +3447,7 @@ Public Class ClsVentas
.Add("@CveClasificacion", SqlDbType.Int).Value = CveClasificacion
.Add("@CveMarca", SqlDbType.Int).Value = CveMarca
.Add("@EsGarantia", SqlDbType.Int).Value = EsGarantia
+ .Add("@CveProveedorCompra", SqlDbType.Int).Value = CveProveedorCompra
End With
Try
@@ -3461,7 +3462,7 @@ Public Class ClsVentas
Return Retorno
End Function
- Public Function GetReporteVentasUtilidadDetalle(CveVendedor As String, CveVenta As Integer, CveCliente As Integer, CveSubProyecto As String, FechaInicio As Date, FechaFin As Date, CveEmpresa As Integer, CvePS As Integer, CveCategoria As Integer, CveClasificacion As Integer, CveMarca As Integer, EsGarantia As Integer) As Boolean
+ Public Function GetReporteVentasUtilidadDetalle(CveVendedor As String, CveVenta As Integer, CveCliente As Integer, CveSubProyecto As String, FechaInicio As Date, FechaFin As Date, CveEmpresa As Integer, CvePS As Integer, CveCategoria As Integer, CveClasificacion As Integer, CveMarca As Integer, EsGarantia As Integer, CveProveedorCompra As Integer) As Boolean
Dim Retorno As Boolean = False
DataAdapter("PA_Vta_VentasUtilidadDetalleGet")
With SqlAdapter.SelectCommand.Parameters
@@ -3477,6 +3478,7 @@ Public Class ClsVentas
.Add("@CveClasificacion", SqlDbType.Int).Value = CveClasificacion
.Add("@CveMarca", SqlDbType.Int).Value = CveMarca
.Add("@EsGarantia", SqlDbType.Int).Value = EsGarantia
+ .Add("@CveProveedorCompra", SqlDbType.Int).Value = CveProveedorCompra
End With
Try
@@ -3495,7 +3497,7 @@ Public Class ClsVentas
Return Retorno
End Function
Public Function GetReportePadreVentasUtilidad(CveVendedor As String, CveCliente As Integer, CveSubProyecto As String, FechaInicio As Date, FechaFin As Date, CveEmpresa As Integer, Gpo As Integer,
- CvePS As Integer, CveCategoria As Integer, CveClasificacion As Integer, CveMarca As Integer, EsGarantia As Integer, EsFilial As Integer) As Boolean
+ CvePS As Integer, CveCategoria As Integer, CveClasificacion As Integer, CveMarca As Integer, EsGarantia As Integer, EsFilial As Integer, CveProveedorCompra As Integer) As Boolean
Dim Retorno As Boolean = False
DataAdapter("PA_Vta_RepVentasUtilidadGet")
@@ -3513,6 +3515,7 @@ Public Class ClsVentas
.Add("@CveMarca", SqlDbType.Int).Value = CveMarca
.Add("@EsGarantia", SqlDbType.Int).Value = EsGarantia
.Add("@EsFilial", SqlDbType.Int).Value = EsFilial
+ .Add("@CveProveedorCompra", SqlDbType.Int).Value = CveProveedorCompra
End With
Try
SqlAdapter.SelectCommand.CommandTimeout = 0
diff --git a/Ashx/CargaEventos.ashx b/Ashx/CargaEventos.ashx
index 0cd9c804a..f8f22edd8 100644
--- a/Ashx/CargaEventos.ashx
+++ b/Ashx/CargaEventos.ashx
@@ -60,15 +60,20 @@ Public Class CargaEventos : Implements IHttpHandler, IRequiresSessionState
Dim CveClienteSucursal As Integer = -1 ' DdlClienteSucursalSucursal()
Dim CveVendedor As Integer = If(context.Request("CveVendedor") IsNot Nothing, context.Request("CveVendedor").ToEntero, -1)
Dim CveEstatus As Integer = -1
- Dim ObjOS As New ClsOS
-
+ Dim ObjOS As New ClsOS
+
+ If CveVendedor > 0 AndAlso CveUsuarioPara = -1 Then
+ Dim tcveu As Integer = ClsPaginas.GlobalDTUsuarios(-1, CveEmpresa).FiltroPrimeroValor("CveUsuario", $"CveVendedor = {CveVendedor}").ToEntero
+ CveUsuarioPara = tcveu
+ End If
+
If ObjOS.GetRepOrdenesServicioMedicasRep(FechaI, FechaF, Cvecliente, CveVendedor, CveEstatus, CveUsuarioPara, -1, CveEmpresa,
CveMedico:=-1, CveProcedimiento:=-1, CveEspecialidad:=-1,
CveClienteSucursal:=CveClienteSucursal, CveUsuario:=CveUsuario) Then
If ObjOS.DtResultados IsNot Nothing AndAlso ObjOS.DtResultados.Rows.Count > 0 Then
events = New List(Of CalendarEvent)
- For Each dr As DataRow In ObjOS.DtResultados.Rows
+ For Each dr As DataRow In ObjOS.DtResultados.FiltraParametros("CveOS > 0").Rows
Dim cevent As CalendarEvent = New CalendarEvent()
cevent.id = dr("CveOS").ToString.ToEntero
cevent.title = $" {dr("Tecnico")}-{dr("NombreCliente")}"
diff --git a/Ashx/E140.ashx b/Ashx/E140.ashx
index 2445fbc2c..6926a6820 100644
--- a/Ashx/E140.ashx
+++ b/Ashx/E140.ashx
@@ -178,7 +178,7 @@ Public Class E140 : Implements IHttpHandler, IRequiresSessionState
Dim TieneError As Boolean = False
Dim CveSubProyecto As String = "11790"
Dim JsonRequest As JObject = Nothing
-
+ Dim Bitac As New StringBuilder
If context.Request.InputStream IsNot Nothing Then
Using reader As New StreamReader(context.Request.InputStream)
Dim json = reader.ReadToEnd
@@ -190,7 +190,7 @@ Public Class E140 : Implements IHttpHandler, IRequiresSessionState
End If
End Using
End If
-
+ Bitac.AppendLine("Inicio Pago ")
Dim UsuarioActual As Usuario = ValidaUsuarioSistema(100, CveEmpresa)
Dim data As New JArray
Dim dtt As New DataTable
@@ -204,7 +204,7 @@ Public Class E140 : Implements IHttpHandler, IRequiresSessionState
Dim pCveVenta As Integer = JsonRequest("cveventa").ToString.ToEntero
Dim Referencia As String = ""
'validaciones
-
+ Bitac.AppendLine("Validaciones Pago 1.0")
Dim ObjVenta As New ClsVentas()
Dim ObjClientes As New ClsClientes
If ObjVenta.GetVenta(pCveVenta, CveEmpresa) Then
@@ -228,6 +228,7 @@ Public Class E140 : Implements IHttpHandler, IRequiresSessionState
VentaRemision.PorcentajeIVA = dr("PorcentajeIVA").ToString.ToDecimal
VentaRemision.CveSubProyecto = dr("CveSubProyecto").ToString.ToEntero
+ Bitac.AppendLine("Crear Nueva 1.0")
Dim ObjFactura = Modelos.Factura.CrearVentaNueva(UsuarioActual, VentaRemision.CveSubProyecto, VentaRemision.CveCliente, VentaRemision.CveMoneda, "Ing")
ObjFactura.CveMoneda = VentaRemision.CveMoneda
ObjFactura.CveVendedor = dr("CveVendedor").ToString.ToEntero
@@ -258,15 +259,15 @@ Public Class E140 : Implements IHttpHandler, IRequiresSessionState
If CvePrePoliza > 0 Then
'registro de venta y pago
-
+ Bitac.AppendLine("Emitir 1.0")
Dim Retorno As Modelos.Factura.MMensajeFactura = Nothing
- Retorno = ObjFactura.EmitirFactura(False, Transac:=ObjVentas.IniciaTransacSQL(), Modulo:="Cobranza/GuardarVenta", MostrarURL:=True)
+ Retorno = ObjFactura.EmitirFactura(False, Transac:=ObjVentas.IniciaTransacSQL(), Modulo:="Kiosko140/GuardarVenta", MostrarURL:=True)
Retorno.Factura = ObjFactura
If Retorno IsNot Nothing AndAlso Retorno.CveVenta > 0 Then
VentaRemision.CveVenta = ObjFactura.CveVenta
'Respuesta.data = Retorno.SerieFolio
-
+ Bitac.AppendLine("Venta Registada")
If TieneError Then
Dim sb As New StringBuilder()
For Each msg As String In Retorno.Mensajes
@@ -274,6 +275,7 @@ Public Class E140 : Implements IHttpHandler, IRequiresSessionState
Next
RespuestaError.message = sb.ToString()
End If
+ Bitac.AppendLine("Inicia Registro IE")
'11- tdd, 12-tdc
Dim CveIE As Integer = ObjIE.AddBancos_IE(CveCuentaBancaria, CveTipoTransaccion, FechaPago, "-1", "", ImportePago, VentaRemision.CveMoneda,
VentaRemision.TC, "", "", False, True, -1, CvePrePoliza, "", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa)
@@ -288,20 +290,25 @@ Public Class E140 : Implements IHttpHandler, IRequiresSessionState
Pago.ImportePago = ImportePago
Pago.ImportePagoVenta = ImportePago
Pago.Referencia = Referencia
-
+ Bitac.AppendLine("IE Registrado")
If MsgError = "" AndAlso ClsPaginas.AplicaPrePolizaPagoVenta(VentaRemision, Pago, CvePrePoliza, ObjConta) Then
MsgError = "No se pudo insertar la póliza"
End If
Else
MsgError = "No se pudo insertar el pago"
+ Bitac.AppendLine("IE NO Registrado")
End If
Else
TieneError = True
MsgError = "Falta información para completar la venta."
+ Bitac.AppendLine("Venta NO Registrado - ")
+ Bitac.AppendLine(Retorno.Mensajes(0))
End If
End If
+ Bitac.AppendLine("Registrados")
+
If Not TieneError Then
- Dim bytesPDF As Byte() = DescargarFactura(ObjFactura.SerieFolio, CveEmpresa, ObjFactura.CveVenta) 'ClsPaginas.PdfFactura(ObjFactura, AplicaPagare:="0", Guardar:=True, RegenerarQR:=True, EsTicket:=False)
+ Dim bytesPDF As Byte() = Nothing ' DescargarFactura(ObjFactura.SerieFolio, CveEmpresa, ObjFactura.CveVenta) 'ClsPaginas.PdfFactura(ObjFactura, AplicaPagare:="0", Guardar:=True, RegenerarQR:=True, EsTicket:=False)
'generar el pdf y mandarlo
Dim objretorno As New JObject(
@@ -313,12 +320,15 @@ Public Class E140 : Implements IHttpHandler, IRequiresSessionState
Respuesta.data = data
ObjConta.RollBack()
'ObjConta.Commit()
+ Bitac.AppendLine("Completado.")
Else
ObjConta.RollBack()
+ Bitac.AppendLine("NO Completado.")
End If
ObjConta.Dispose()
ObjIE.Dispose()
End If
+ Bitac.ToString.GuardaLog
End If
ObjVenta.Dispose()
ObjClientes.Dispose()
diff --git a/Bancos/PagoElectronico.aspx b/Bancos/PagoElectronico.aspx
index 85d24ba79..453f22d68 100644
--- a/Bancos/PagoElectronico.aspx
+++ b/Bancos/PagoElectronico.aspx
@@ -105,11 +105,17 @@
|
-
+
| Bancomer: |
|
+
+
+ | Scotia Bank: |
+
+ |
+
|
@@ -157,7 +163,7 @@
-
+
@@ -619,6 +625,71 @@
|
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <%--
+
Cuentas Interbancarias
+
+
+
Cuentas Convennios CIE
+
+ --%>
+
+
+
+
+
+
+
+
+ <%--
+ --%>
+
+
+
+
+
+
+
+
+
+
diff --git a/Bancos/PagoElectronico.aspx.vb b/Bancos/PagoElectronico.aspx.vb
index 707da915e..a9414bc09 100644
--- a/Bancos/PagoElectronico.aspx.vb
+++ b/Bancos/PagoElectronico.aspx.vb
@@ -1,805 +1,1863 @@
-Option Explicit On
-Option Strict On
-
-Imports System.Data
-Imports Extensiones
-Imports System.IO
-Imports Ionic.Zip
-Imports Microsoft.Reporting.WebForms
-
-Partial Class Bancos_PagoElectronico
- Inherits ClsPaginas
- Private Shared missing As Object = System.Reflection.Missing.Value
-
-#Region "PROPIEDADES"
- Private Property HeaderTexto As String
- Get
- Return ViewState("HeaderTexto").ToString
- End Get
- Set(value As String)
- ViewState("HeaderTexto") = value
- End Set
- End Property
- Private Property DetalleTexto As String
- Get
- Return ViewState("DetalleTexto").ToString
- End Get
- Set(value As String)
- ViewState("DetalleTexto") = value
- End Set
- End Property
- Private Property TrailerTexto As String
- Get
- Return ViewState("TrailerTexto").ToString
- End Get
- Set(value As String)
- ViewState("TrailerTexto") = value
- End Set
- End Property
- Private Property TextoCompleto As String
- Get
- Return ViewState("TextoCompleto").ToString
- End Get
- Set(value As String)
- ViewState("TextoCompleto") = value
- End Set
- End Property
- Private Property Vacio As String
- Get
- Return ViewState("Vacio").ToString
- End Get
- Set(value As String)
- ViewState("Vacio") = value
- End Set
- End Property
- Private Property NombreArchivo As String
- Get
- Return ViewState("NombreArchivo").ToString
- End Get
- Set(value As String)
- ViewState("NombreArchivo") = value
- End Set
- End Property
- Private Property DTPendientes As DataTable
- Get
- Return CType(ViewState("DTPendientes"), DataTable)
- End Get
- Set(value As DataTable)
- ViewState("DTPendientes") = value
- End Set
- End Property
- Private Property DTProveedores As DataTable
- Get
- Return CType(ViewState("DTProveedores"), DataTable)
- End Get
- Set(value As DataTable)
- ViewState("DTProveedores") = value
- End Set
- End Property
- Private Property DTFyE As DataTable
- Get
- Return CType(ViewState("DTFyE"), DataTable)
- End Get
- Set(value As DataTable)
- ViewState("DTFyE") = value
- End Set
- End Property
- Private Property DTReportes As DataTable
- Get
- Return CType(ViewState("DTReportes"), DataTable)
- End Get
- Set(value As DataTable)
- ViewState("DTReportes") = value
- End Set
- End Property
- Private Property DTPendienteActual As DataTable
- Get
- Return CType(ViewState("DTPendienteActual"), DataTable)
- End Get
- Set(value As DataTable)
- ViewState("DTPendienteActual") = value
- End Set
- End Property
- Private Property DTEnviadas As DataTable
- Get
- Return CType(ViewState("DTEnviadas"), DataTable)
- End Get
- Set(value As DataTable)
- ViewState("DTEnviadas") = value
- End Set
- End Property
- Private ReadOnly Property PadCeros As Char
- Get
- Return "0"c
- End Get
- End Property
- Private Property TotalAcumulado As Double
- Get
- Return ViewState("TotalAcumulado").ToString.ToDouble
- End Get
- Set(value As Double)
- ViewState("TotalAcumulado") = value
- End Set
- End Property
- Private Property CveCuenta As Integer
- Get
- Return ViewState("CveCuenta").ToString.ToEntero
- End Get
- Set(value As Integer)
- ViewState("CveCuenta") = value
- End Set
- End Property
- Private Property DtPago As DataTable
- Get
- Return CType(ViewState("DtPago"), DataTable)
- End Get
- Set(value As DataTable)
- ViewState("DtPago") = value
- End Set
- End Property
- Private Property DtAlta As DataTable
- Get
- Return CType(ViewState("DtAlta"), DataTable)
- End Get
- Set(value As DataTable)
- ViewState("DtAlta") = value
- End Set
- End Property
- Private Property CorreoNotificacionesEmpresa As String
- Get
- Return ViewState("CorreoNotificacionesEmpresa").ToString
- End Get
- Set(value As String)
- ViewState("CorreoNotificacionesEmpresa") = value
- End Set
- End Property
- Private Property TipoMasiva As Integer
- Get
- Return ViewState("TipoMasiva").ToString.ToEntero
- End Get
- Set(value As Integer)
- ViewState("TipoMasiva") = 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
- ViewState("NombreArchivo") = ""
- ViewState("HeaderTexto") = ""
- ViewState("DetalleTexto") = ""
- ViewState("TrailerTexto") = ""
- ViewState("Vacio") = ""
- ViewState("TotalAcumulado") = 0
- CveCuenta = -1
- TipoMasiva = 1
-
- txtFechaI.Text = NowADS().ToShortDateString
- txtFechaF.Text = NowADS().ToShortDateString
-
- CargaCuentas()
- CargaProveedores()
+Option Explicit On
+Option Strict On
+
+Imports System
+Imports System.Collections
+Imports System.Collections.Generic
+Imports System.Data
+Imports System.IO
+Imports System.Runtime.Remoting
+Imports AjaxControlToolkit.AsyncFileUpload.Constants
+Imports Extensiones
+Imports Ionic.Zip
+Imports Microsoft.Extensions.Primitives
+Imports Microsoft.Reporting.WebForms
+Imports Stimulsoft.Base
+
+
+Partial Class Bancos_PagoElectronico
+ Inherits ClsPaginas
+ Private Shared missing As Object = System.Reflection.Missing.Value
+
+#Region "PROPIEDADES"
+ Private Property HeaderTexto As String
+ Get
+ Return ViewState("HeaderTexto").ToString
+ End Get
+ Set(value As String)
+ ViewState("HeaderTexto") = value
+ End Set
+ End Property
+ Private Property DetalleTexto As String
+ Get
+ Return ViewState("DetalleTexto").ToString
+ End Get
+ Set(value As String)
+ ViewState("DetalleTexto") = value
+ End Set
+ End Property
+ Private Property TrailerTexto As String
+ Get
+ Return ViewState("TrailerTexto").ToString
+ End Get
+ Set(value As String)
+ ViewState("TrailerTexto") = value
+ End Set
+ End Property
+ Private Property TextoCompleto As String
+ Get
+ Return ViewState("TextoCompleto").ToString
+ End Get
+ Set(value As String)
+ ViewState("TextoCompleto") = value
+ End Set
+ End Property
+ Private Property Vacio As String
+ Get
+ Return ViewState("Vacio").ToString
+ End Get
+ Set(value As String)
+ ViewState("Vacio") = value
+ End Set
+ End Property
+ Private Property NombreArchivo As String
+ Get
+ Return ViewState("NombreArchivo").ToString
+ End Get
+ Set(value As String)
+ ViewState("NombreArchivo") = value
+ End Set
+ End Property
+ Private Property DTPendientes As DataTable
+ Get
+ Return CType(ViewState("DTPendientes"), DataTable)
+ End Get
+ Set(value As DataTable)
+ ViewState("DTPendientes") = value
+ End Set
+ End Property
+ Private Property DTProveedores As DataTable
+ Get
+ Return CType(ViewState("DTProveedores"), DataTable)
+ End Get
+ Set(value As DataTable)
+ ViewState("DTProveedores") = value
+ End Set
+ End Property
+ Private Property DTFyE As DataTable
+ Get
+ Return CType(ViewState("DTFyE"), DataTable)
+ End Get
+ Set(value As DataTable)
+ ViewState("DTFyE") = value
+ End Set
+ End Property
+ Private Property DTReportes As DataTable
+ Get
+ Return CType(ViewState("DTReportes"), DataTable)
+ End Get
+ Set(value As DataTable)
+ ViewState("DTReportes") = value
+ End Set
+ End Property
+ Private Property DTPendienteActual As DataTable
+ Get
+ Return CType(ViewState("DTPendienteActual"), DataTable)
+ End Get
+ Set(value As DataTable)
+ ViewState("DTPendienteActual") = value
+ End Set
+ End Property
+ Private Property DTEnviadas As DataTable
+ Get
+ Return CType(ViewState("DTEnviadas"), DataTable)
+ End Get
+ Set(value As DataTable)
+ ViewState("DTEnviadas") = value
+ End Set
+ End Property
+ Private ReadOnly Property PadCeros As Char
+ Get
+ Return "0"c
+ End Get
+ End Property
+ Private Property TotalAcumulado As Double
+ Get
+ Return ViewState("TotalAcumulado").ToString.ToDouble
+ End Get
+ Set(value As Double)
+ ViewState("TotalAcumulado") = value
+ End Set
+ End Property
+ Private Property CveCuenta As Integer
+ Get
+ Return ViewState("CveCuenta").ToString.ToEntero
+ End Get
+ Set(value As Integer)
+ ViewState("CveCuenta") = value
+ End Set
+ End Property
+ Private Property DtPago As DataTable
+ Get
+ Return CType(ViewState("DtPago"), DataTable)
+ End Get
+ Set(value As DataTable)
+ ViewState("DtPago") = value
+ End Set
+ End Property
+ Private Property DtAlta As DataTable
+ Get
+ Return CType(ViewState("DtAlta"), DataTable)
+ End Get
+ Set(value As DataTable)
+ ViewState("DtAlta") = value
+ End Set
+ End Property
+ Private Property CorreoNotificacionesEmpresa As String
+ Get
+ Return ViewState("CorreoNotificacionesEmpresa").ToString
+ End Get
+ Set(value As String)
+ ViewState("CorreoNotificacionesEmpresa") = value
+ End Set
+ End Property
+ Private Property TipoMasiva As Integer
+ Get
+ Return ViewState("TipoMasiva").ToString.ToEntero
+ End Get
+ Set(value As Integer)
+ ViewState("TipoMasiva") = value
+ End Set
+ End Property
+
+ Private Property DT_PagosReporte As DataTable
+ Get
+ If ViewState("DT_PagosReporte") Is Nothing Then
+ ViewState("DT_PagosReporte") = New DataTable
+ End If
+ Return CType(ViewState("DT_PagosReporte"), DataTable)
+ End Get
+ Set(value As DataTable)
+ ViewState("DT_PagosReporte") = value
+ End Set
+ End Property
+
+ ReadOnly Property OpBancos As Integer
+ Get
+ Dim OpBanco As Integer = -1
+ If (DdlCuenta.SelectedItem.Text.ToUpper.Contains("BANCOMER") OrElse DdlCuenta.SelectedItem.Text.ToUpper.Contains("BBVA")) Then
+ OpBanco = 1
+ End If
+
+ If DdlCuenta.SelectedItem.Text.ToUpper.Contains("BAJIO") Then
+ OpBanco = 2
+ End If
+
+ If DdlCuenta.SelectedItem.Text.ToUpper.Contains("SCOTIA") Then
+ OpBanco = 3
+ End If
+
+ Return OpBanco
+
+ End Get
+
+ End Property
+#End Region
+
+ Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load
+ If Not IsPostBack Then
+ ViewState("NombreArchivo") = ""
+ ViewState("HeaderTexto") = ""
+ ViewState("DetalleTexto") = ""
+ ViewState("TrailerTexto") = ""
+ ViewState("Vacio") = ""
+ ViewState("TotalAcumulado") = 0
+ CveCuenta = -1
+ TipoMasiva = 1
+
+ txtFechaI.Text = NowADS().ToShortDateString
+ txtFechaF.Text = NowADS().ToShortDateString
+
+ CargaCuentas()
+ CargaProveedores()
InicializaDatosGenerales()
- End If
+ End If
End Sub
-#Region " C A R G A - D A T O S "
- Private Sub CargaCuentas()
- DdlCuenta.DataSource = GlobalDTBancosCuentas(UsuarioActual.CveUsuario, CveEmpresa:=UsuarioActual.CveEmpresa).FiltraParametros("UsaLayout = 1")
- DdlCuenta.DataBind()
- UpFiltros.Update()
-
- DdlCuentaReportes.DataSource = GlobalDTBancosCuentas(UsuarioActual.CveUsuario, CveEmpresa:=UsuarioActual.CveEmpresa).FiltraParametros("UsaLayout = 1")
- DdlCuentaReportes.DataBind()
- UpFiltrosReporte.Update()
- End Sub
- Protected Sub BtnConsultar_Click(sender As Object, e As EventArgs)
- CveCuenta = DdlCuenta.SelectedValue.ToEntero
- CargaDatos()
- End Sub
- Private Sub CargaDatos()
-
- 'Carga datos en DT´s
- Dim ObjBancos As New ClsBancos
- If ObjBancos.GetLayoutPagos(CveCuenta, -1, DdlTipoGeneracion.SelectedValue) Then
- DTPendientes = ObjBancos.DtResultados
- Else
- DTPendientes = Nothing
- End If
-
- If ObjBancos.GetLayoutPagosEnviados(CveCuenta, 1, DdlTipoGeneracion.SelectedValue, "-1", "-1") Then
- DTEnviadas = ObjBancos.DtResultados
- Else
- DTEnviadas = Nothing
- End If
- ObjBancos.Dispose()
-
-
- 'Carga GvPendientes
- If DTPendientes IsNot Nothing AndAlso DTPendientes.Rows.Count > 0 Then
- GvPendientes.DataSource = DTPendientes
- End If
- GvPendientes.DataBind()
-
- 'Carga GvEnviadas
- If DTEnviadas IsNot Nothing AndAlso DTEnviadas.Rows.Count > 0 Then
- GvEnviadas.DataSource = DTEnviadas
- End If
- GvEnviadas.DataBind()
-
- UpGVDatos.Update()
-
- If DTPendientes IsNot Nothing AndAlso DTPendientes.Rows.Count > 0 Then
- CargaDatosInformativos()
- End If
-
- End Sub
- Private Sub CargaDatosInformativos()
- Dim Altas = 0
- Dim Interbancarias = 0
- Dim Bancomer = 0
-
- Dim Movimientos = 0
- Dim Importe = 0.0
-
- For Each dr As DataRow In DTPendientes.Rows
-
- If dr("EstatusCtaDeposito").ToString <> "True" Then
- Continue For
- End If
-
- If dr("CveCuentaDeposito").ToString <> "" And dr("EstatusPagoElectronico").ToString <> "True" And dr("AltaCuenta").ToString = "1" Then
- Altas += 1
- If dr("BancoNombre").ToString.ToUpper.Contains("BANCOMER") OrElse dr("BancoNombre").ToString.ToUpper.Contains("BBVA") Then
- Bancomer += 1
- Else
- Interbancarias += 1
- End If
-
- ElseIf dr("CveCuentaDeposito").ToString.ToEntero > 0 Then
- Movimientos += 1
- Importe += dr("Abonado").ToString.ToDouble
- End If
- Next
-
- LbNumeroAltas.Text = Altas.ToString
- LbNumeroInterbancarias.Text = Interbancarias.ToString
- LbNumeroBancomer.Text = Bancomer.ToString
-
- LbNumeroMovimientos.Text = Movimientos.ToString
- LbImporteMovimientos.Text = Importe.ToString.FormatoNumero
-
- UpComandosGeneracion.Update()
- End Sub
-#End Region
-
-#Region " DATOS GENERALES LAYOUT "
- Private Sub InicializaDatosGenerales()
-
- If UsuarioActual.CveEmpresa = 66 Then
- CorreoNotificacionesEmpresa = "pagos@gluyasconstrucciones.com"
- ElseIf UsuarioActual.CveEmpresa = 13 Then
- CorreoNotificacionesEmpresa = "signotificaciones@adssistemas.mx"
- Else
- CorreoNotificacionesEmpresa = "signotificaciones@adssistemas.mx"
- End If
-
- End Sub
-#End Region
-
-
-#Region " GENERA Y DESCARGA ARCHIVO (TXT) "
- Protected Sub CrearTXT()
- Dim path As String = Server.MapPath(String.Format("~/Empresas/{0}/Layout/{1}.txt", UsuarioActual.CveEmpresa, NombreArchivo))
- ' Create or overwrite the file.
- Dim fs As FileStream = File.Create(path)
-
- ' Add text to the file.
- Dim info As Byte() = New UTF8Encoding(True).GetBytes(TextoCompleto)
- fs.Write(info, 0, info.Length)
- fs.Close()
- End Sub
- Private Sub DescargarArchivo()
- With HttpContext.Current.Response
- .Clear()
- .Buffer = True
- .ContentType = "textplain"
- .AddHeader("Content-Disposition", String.Format("attachment;filename={0}{1}.txt", NombreArchivo, NowADS().ToString("ddMMyyyy")))
- .Charset = "UTF-8"
- .ContentEncoding = Encoding.Default
- .Write(TextoCompleto)
- .Flush()
- .End()
- End With
- End Sub
- Private Sub DescargaZip()
- Dim path As String = Server.MapPath(String.Format("~/Empresas/{0}/Layout/", UsuarioActual.CveEmpresa))
- Response.Clear()
- Dim ElZip As ZipFile = New ZipFile()
- Using ElZip
- ElZip.AddDirectory(path)
- ElZip.Save(Response.OutputStream)
- End Using
- Response.AddHeader("Content-Disposition", "attachment; filename=LayoutPagos.zip")
- Response.ContentType = "application/zip"
- Response.End()
- End Sub
- Private Function CreaArchivo(Tipo As Integer) As Boolean
- 'If Not System.IO.Directory.Exists(String.Format("{0}Layout", UsuarioActual.Empresa.Ruta)) Then
- ' Alert("Ocurrio un error al crear el registro del archivo.", TipoMensaje.MsgError)
- ' Return False
- 'End If
-
- DirectoryExistsCreate(String.Format("{0}Layout", UsuarioActual.Empresa.Ruta))
-
- NombreArchivo = String.Format("{2}{1}{0}.txt", UsuarioActual.CveUsuario, NowADS().ToString("yyyyMMdd-HH-mm"), If(Tipo = 1, "LAYOUTPAGO", "LAYOUTALTA"))
-
- Dim path As String = String.Format("{0}Layout\{1}", UsuarioActual.Empresa.Ruta, NombreArchivo)
- Dim fs As FileStream = File.Create(path)
-
- ' Add text to the file.
- Dim info As Byte() = New UTF8Encoding(True).GetBytes(TextoCompleto)
- fs.Write(info, 0, info.Length)
- fs.Close()
-
- Return True
- End Function
- Private Function GuardaTXT() As Boolean
- Dim Retorno As Boolean = True
- Try
- Dim Ruta As String = ""
- Dim FileName As String = Path.GetFileName(FUTxt.PostedFile.FileName)
- NombreArchivo = FileName
- Dim Extension As String = Path.GetExtension(FUTxt.PostedFile.FileName)
- Dim FolderPath As String = String.Format("{0}Empresas\", Request.ApplicationPath)
- Dim FilePath As String = Server.MapPath(FolderPath + FileName)
- FUTxt.SaveAs(FilePath)
- NombreArchivo = FilePath
- Catch ex As Exception
- Retorno = False
- End Try
-
- Return Retorno
- End Function
-#End Region
-
-#Region " TAB PRINCIPAL "
-
- Protected Sub GvPendientes_RowDataBound(sender As Object, e As GridViewRowEventArgs)
- If e.Row.RowType = DataControlRowType.DataRow Then
-
- 'Colorea GV
- If e.Row.DBCampo("RazonSocial").ToString = "" Then
- e.Row.BackColor = Drawing.Color.WhiteSmoke
- Else
- If e.Row.DBCampo("EstatusPagoElectronico").ToString <> "True" Then
- e.Row.BackColor = Drawing.Color.LightSalmon
- e.Row.ToolTip = "Cuenta Deposito aun sin dar de Alta."
- End If
-
- If e.Row.DBCampo("CveProveedor").ToString.ToEntero > 0 Then
- e.Row.FCHyperLink("HLProveedor").NavigateUrl = String.Format("/Compras/Proveedores.aspx?CveProveedor={0}", e.Row.DBCampo("CveProveedor"))
- Else
- e.Row.FCHyperLink("HLProveedor").NavigateUrl = String.Format("/RH/Personal.aspx?CvePersonal={0}", e.Row.DBCampo("CvePersonal"))
- End If
-
- End If
-
- If Not e.Row.DBCampo("CveCuentaDeposito").ToString.ToEntero > 0 Then
- e.Row.Cells(0).BackColor = Drawing.Color.Red
- e.Row.ToolTip = "Sin Cuenta Deposito asignada"
- End If
-
- If e.Row.DBCampo("EstatusCtaDeposito").ToString = "False" Then
- e.Row.Cells(0).BackColor = Drawing.Color.Red
- e.Row.ToolTip = "Cuenta Deposito INACTIVA"
- End If
-
- e.Row.FCHyperLink("HLImporte").NavigateUrl = String.Format("IE.aspx?CveIE={0}", e.Row.DBCampo("CveIE"))
-
- End If
- End Sub
- Protected Sub GvEnviadas_RowDataBound(sender As Object, e As GridViewRowEventArgs)
- If e.Row.RowType = DataControlRowType.DataRow Then
- 'Colorea GV
- If e.Row.DBCampo("CveIE").ToString = "" Then
- e.Row.BackColor = Drawing.Color.LightGray
-
-
- 'Si la fecha de generacion del archivo es diferente de hoy activamos el boton REGENERAR
- 'If e.Row.DBCampo("Fecha").ToDate.ToShortDateString <> NowADS().ToShortDateString Then
- ' e.Row.FCLinkButton("LBRegenerar").Visible = True
- 'End If
- If DTEnviadas.MAX("FueConciliado", String.Format("CveLayoutEnvio = {0}", e.Row.DBCampo("CveLayoutEnvio"))).ToEntero > 0 Then
- e.Row.ToolTip = "El movimiento no se puede regenerar ya que alguno de sus movimientos ya fue conciliado"
- Else
- e.Row.FCLinkButton("LBRegenerar").Visible = True
- End If
-
- Else
-
- If e.Row.DBCampo("FueConciliado") = "1" Then
- e.Row.ForeColor = Drawing.Color.Red
- e.Row.ToolTip = "Este movimiento ya fue conciliado."
- End If
-
- If e.Row.DBCampo("CveProveedor").ToString.ToEntero > 0 Then
- e.Row.FCHyperLink("HLProveedor").NavigateUrl = String.Format("/Compras/Proveedores.aspx?CveProveedor={0}", e.Row.DBCampo("CveProveedor"))
- Else
- e.Row.FCHyperLink("HLProveedor").NavigateUrl = String.Format("/RH/Personal.aspx?CvePersonal={0}", e.Row.DBCampo("CvePersonal"))
- End If
- e.Row.FCHyperLink("HLDetalle").NavigateUrl = String.Format("IE.aspx?CveIE={0}", e.Row.DBCampo("CveIE"))
- End If
- End If
- End Sub
- Protected Sub LBRegenerar_Click(sender As Object, e As EventArgs)
- Dim CveBLE As Integer = CType(sender, LinkButton).CommandArgument.ToEntero
- Dim DtRegenerar As New DataTable
-
- Dim ObjBancos As New ClsBancos
- If ObjBancos.GetLayoutPagos(CveCuenta, CveBLE, "-1") Then
- DtRegenerar = ObjBancos.DtResultados
- Else
- DtRegenerar = Nothing
- End If
- ObjBancos.Dispose()
-
- If DtRegenerar IsNot Nothing Then
- GeneraPago(DtRegenerar, CveBLE)
- Else
- Alert("Ocurrió un error al obtener los datos para generar el archivo. Por favor vuelva a intentar.", TipoMensaje.MsgError)
- End If
- End Sub
-
-#End Region
-
-
-
- 'RECARGA DATOS
-#Region " RECARGA DATOS "
-
- Private Sub RecargaDatos()
- CargaDatos()
- TipoMasiva = 1
- DdlTipoCargaMasiva.SelectedValueExist("1")
- CargaProveedores()
- End Sub
-
-#End Region
-
-
-
- 'ARMA Y GENERA TXT'S
-#Region "ALTA PROVEEDORES"
- Protected Sub BtnAltas_Click(sender As Object, e As EventArgs)
-
- If Not DdlCuenta.SelectedValue.ToEntero > 0 Then
- Alert("Primero debe seleccionar una Cuenta", TipoMensaje.MsgAdvertencia)
- Exit Sub
- End If
-
- AltaProveedores(1)
- End Sub
- Private Sub AltaProveedores(TipoAlta As Integer)
- Dim DtTemp As DataTable = Nothing
- CreaDtAlta()
-
-
- 'TIPO ALTA
- '1 = Alta comun
- '2 = Alta masiva
- If TipoAlta = 1 Then
- If DTPendientes Is Nothing OrElse DTPendientes.FiltraParametros("EstatusCtaDeposito = 'True'").Rows.Count <= 0 Then
- Alert("No hay registros para generar", TipoMensaje.MsgAdvertencia)
- Exit Sub
- Else
- DtTemp = DTPendientes.FiltraParametros("EstatusCtaDeposito = 'True'").Copy
- End If
- ElseIf TipoAlta = 2 Then
- If DTProveedores Is Nothing OrElse DTProveedores.Rows.Count <= 0 Then
- Alert("No hay registros para generar", TipoMensaje.MsgAdvertencia)
- Exit Sub
- Else
- DtTemp = DTProveedores.Copy
- End If
- ElseIf TipoAlta = 3 Then
- If DTFyE Is Nothing OrElse DTFyE.Rows.Count <= 0 Then
- Alert("No hay registros para generar", TipoMensaje.MsgAdvertencia)
- Exit Sub
- Else
- DtTemp = DTProveedores.Copy
- End If
- End If
-
- 'REINICIA PROPIEDAS
- HeaderTexto = ""
- DetalleTexto = ""
- TrailerTexto = ""
- TotalAcumulado = 0
-
- ''VALIDA CUENTAS DEPOSITOS
- Dim ErrorCuenta As Boolean = False
- Dim ProveedoresError As StringBuilder = New StringBuilder
- ProveedoresError.AppendFormat("| Proveedor | Cuenta | Error |
")
- Dim TotalDetalles As Integer = 0
- Dim EsBancomer As Boolean = False
- For Each gvr As DataRow In DtTemp.Rows
- If gvr("CveCuentaDeposito").ToString <> "" AndAlso gvr("EstatusPagoElectronico").ToString <> "True" AndAlso gvr("AltaCuenta").ToString = "1" Then
- DTPendienteActual = DtTemp.FiltraParametros(String.Format("CveCuentaDeposito = {0}", gvr("CveCuentaDeposito").ToString))
- ErrorCuenta = False
- EsBancomer = False
-
- If DTPendienteActual(0)("BancoNombre").ToString.ToUpper.Contains("BBVA") Or DTPendienteActual(0)("BancoNombre").ToString.ToUpper.Contains("BANCOMER") Or (DTPendienteActual(0)("CLABE").ToString.Length = 18 AndAlso DTPendienteActual(0)("CLABE").ToString.Substring(0, 3) = "012") Then
- EsBancomer = True
- End If
-
- ''COMENTADO PARA PERMITIR ENTRADA DE UNA CUENTA A PROVEEDOR, 22 DE SEPTIEMBRE, ISRAEL PIÑA
- 'If Not ErrorCuenta Then
- ' If EsBancomer AndAlso (DTPendienteActual(0)("CLABE").ToString.Length = 18 AndAlso Not DTPendienteActual(0)("CLABE").ToString.Substring(0, 3) = "012") Then
- ' ProveedoresError.AppendFormat("| {0} | {1} | CLABE NO PERTENECE A BANCOMER |
", DTPendienteActual(0)("RazonSocial").ToString, DTPendienteActual(0)("BancoNombre").ToString)
- ' ErrorCuenta = True
- ' End If
- 'End If
-
- ''CLABE SIEMPRE OBLIGATORIA CUANDO NO ES BANCOMER CON CIE
- 'If (DTPendienteActual(0)("CLABE").ToString.Trim.Length <> 18 And Not EsBancomer) Or (EsBancomer And TxtConvenioCIE.Text.Trim.Length <> 6 And DTPendienteActual(0)("CLABE").ToString.Trim.Length <> 18) Then
- ' Alert("La CLABE es obligatoria y debe tener una longitud de 18 dígitos. Por favor rectifique y vuelva a intentar.", TipoMensaje.MsgAdvertencia)
- ' Exit Sub
- 'End If
-
- 'CLABE SIEMPRE OBLIGATORIA SI NO ES BANCOMER
- If Not ErrorCuenta Then
- If DTPendienteActual(0)("CLABE").ToString.Trim.Length <> 18 And DTPendienteActual(0)("CLABE").ToString.Trim.Length = 0 And Not EsBancomer Then
- ProveedoresError.AppendFormat("| {0} | {1} | CLABE ES OBLIGATORIA |
", DTPendienteActual(0)("RazonSocial").ToString, DTPendienteActual(0)("BancoNombre").ToString)
- ErrorCuenta = True
- End If
- End If
-
- 'SI CUENTA TIENE ALGO Y BANCO BANCOMER DEBE TENER UNA LOGITUD EXACTA DE 10
- If Not ErrorCuenta Then
- If DTPendienteActual(0)("Cuenta").ToString.Trim.Length <> 0 AndAlso DTPendienteActual(0)("Cuenta").ToString.Trim.Length <> 10 AndAlso EsBancomer Then
- ProveedoresError.AppendFormat("| {0} | {1} | NUMERO DE CUENTA CON FORMATO INCORRECTO |
", DTPendienteActual(0)("RazonSocial").ToString, DTPendienteActual(0)("BancoNombre").ToString)
- ErrorCuenta = True
- End If
- End If
-
- 'SI CLABE TIENE ALGO DEBE TENER UNA LOGITUD EXACTA DE 18
- If Not ErrorCuenta Then
- If DTPendienteActual(0)("CLABE").ToString.Trim.Length <> 0 AndAlso DTPendienteActual(0)("CLABE").ToString.Trim.Length <> 18 Then
- ProveedoresError.AppendFormat("| {0} | {1} | CLABE CON FORMATO INCORRECTO |
", DTPendienteActual(0)("RazonSocial").ToString, DTPendienteActual(0)("BancoNombre").ToString)
- ErrorCuenta = True
- End If
- End If
-
- 'SI CIE TIENE ALGO DEBE TENER REFERENCIA OBLIGATORIA
- If Not ErrorCuenta Then
- If DTPendienteActual(0)("CIE").ToString.Trim.Length <> 0 And DTPendienteActual(0)("Referencia").ToString.Trim.Length < 3 Then
- ProveedoresError.AppendFormat("| {0} | {1} | CIE CON FORMATO INCORRECTO |
", DTPendienteActual(0)("RazonSocial").ToString, DTPendienteActual(0)("BancoNombre").ToString)
- ErrorCuenta = True
- End If
- End If
-
- 'CUANDO SEA "BBVA" O "BANCOMER" DEBE TENER "CIE" O "CUENTA"
- If Not ErrorCuenta Then
- If EsBancomer AndAlso Not (DTPendienteActual(0)("Cuenta").ToString.Trim.Length = 10 Or DTPendienteActual(0)("CIE").ToString.Trim.Length <> 0) Then
- ProveedoresError.AppendFormat("| {0} | {1} | CUENTA BANCOMER SIN CUENTA O CIE |
", DTPendienteActual(0)("RazonSocial").ToString, DTPendienteActual(0)("BancoNombre").ToString)
- ErrorCuenta = True
- End If
- End If
-
-
- 'DTPendienteActual(0)("").ToString
-
- 'VALDIACION ANTIGUA
- 'If Not (DTPendienteActual(0)("BancoNombre").ToString.ToUpper.Contains("BBVA") Or DTPendienteActual(0)("BancoNombre").ToString.ToUpper.Contains("BANCOMER")) Then
- ' If Not DTPendienteActual(0)("CLABE").ToString.Length = 18 Then
- ' ProveedoresError.AppendFormat("Proveedor: {0}", DTPendienteActual(0)("RazonSocial").ToString)
- ' ErrorCuenta = True
- ' End If
- 'End If
-
- If Not ErrorCuenta Then
- If TotalDetalles > 0 Then
- DetalleTexto &= vbCrLf
- End If
- CrearDetalle()
- TotalDetalles += 1
- End If
-
- End If
- Next
- ProveedoresError.AppendFormat("
")
-
-
- If TotalDetalles > 0 Then
- FormarTexto(TotalDetalles)
- CreaArchivo(2)
-
- Dim Descargas As New StringBuilder()
- Descargas.AppendFormat("TXT", NombreArchivo)
- 'Descargas.AppendFormat("Reporte", NombreArchivo)
- Descargas.AppendFormat("Descargar Reporte", NombreArchivo)
-
-
- Dim TextoErrorProveedores As String = ""
- If ProveedoresError.Length > 160 Then TextoErrorProveedores = String.Format("
Proveedores con Error:
------------------------------------------------------------------
{0}
", ProveedoresError.ToString)
-
- Alert(String.Format("
El Layout fue creado satisfactoriamente.{1}
Descargas:", Descargas, TextoErrorProveedores), TipoMensaje.MsgInformacion)
-
- 'NombreArchivo = "LayoutAltaProveedores"
- 'DescargarArchivo()
- Else
- Alert("No hay proveedores que dar de alta", TipoMensaje.MsgInformacion)
- End If
-
- End Sub
- Protected Sub CrearDetalle()
- Dim Resultado As Boolean = True
- Dim CuentaDeposito As String = ""
- Dim TipoCuentaDeposito As String = ""
- Dim TipoCuenta As String = ""
-
- ''''' LLENADO DE DETALLE
- 'Campos #1-4 del Detalle
- DetalleTexto &= String.Format("DA{0}N ", DTPendienteActual(0)("CveCuentaDeposito").ToString.ToUpper.PadLeft(30, PadCeros))
-
- 'Banco BBVA
- If DTPendienteActual(0)("BancoNombre").ToString.ToUpper.Contains("BBVA") Or DTPendienteActual(0)("BancoNombre").ToString.ToUpper.Contains("BANCOMER") Then
- 'Llenamos datos de BBVA
- 'Campo #5-7 del detalle
-
- 'Busca que cuenta sera la asignada para el proveedor
- If DTPendienteActual(0)("CIE").ToString <> "" Then
- CuentaDeposito = String.Format("02{0}", DTPendienteActual(0)("CIE").ToString.PadLeft(8, PadCeros))
- TipoCuenta = "50"
- TipoCuentaDeposito = "CIE"
- ElseIf DTPendienteActual(0)("Cuenta").ToString.Length = 10 Then
- CuentaDeposito = DTPendienteActual(0)("Cuenta").ToString
- TipoCuenta = "99"
- TipoCuentaDeposito = "Cuenta"
- ElseIf DTPendienteActual(0)("CLABE").ToString.Length = 18 Then
- CuentaDeposito = DTPendienteActual(0)("CLABE").ToString
- TipoCuenta = "40"
- TipoCuentaDeposito = "CLABE"
- End If
-
-
- DetalleTexto &= String.Format("{0}{1}{2}", DTPendienteActual(0)("Abreviatura").ToString, TipoCuenta, CuentaDeposito.PadLeft(35, PadCeros))
-
- 'Llenamos en blanco datos de otros bancos
- 'Campos 8-17 del detalle --- 64 de otros bancos y 45 para FILLER --- Fecha de Alta
- DetalleTexto &= String.Format("{0}{1}", Vacio.PadLeft(109), NowADS().ToString("yyyy-MM-dd"))
-
-
- 'Otros Bancos NACIONAL!!
- Else
-
- CuentaDeposito = DTPendienteActual(0)("CLABE").ToString
- TipoCuentaDeposito = "CLABE"
-
- 'Llenamos en blanco datos de BBVA
- DetalleTexto &= Vacio.PadRight(40)
-
- 'Llenamos datos de otros bancos
- 'Campos 8- 17 del detalle --- 44 de otros bancos --- 20 de internacional --- 45 Filler -- Fecha de Alta
- DetalleTexto &= String.Format("{0}40{1}{2}{3}{4}{5}", DTPendienteActual(0)("Abreviatura").ToString, DTPendienteActual(0)("CLABE").ToString.PadLeft(35, PadCeros), DTPendienteActual(0)("CLABE").ToString.Substring(0, 3).PadLeft(4, PadCeros), Vacio.PadRight(20), Vacio.PadRight(45), NowADS().ToString("yyyy-MM-dd"))
- End If
-
- 'Llenamos datos de Tipo de Persona - Fisica o Moral
- TipoPersona()
-
- 'Campos 27-32 --- Fillers --- datos de otros bancos (internacional)
- DetalleTexto &= Vacio.PadLeft(153)
-
- 'Campos 33-36 --- Datos de confirmacion
- DetalleTexto &= String.Format("{0}02{1}", Vacio.PadRight(40), CorreoNotificacionesEmpresa.ToUpper.PadRight(50))
-
- 'If DTPendienteActual(0)("ContactoMail").ToString.Length > 0 Then
- ' 'DetalleTexto &= String.Format("{0}02{1}", Vacio.PadRight(40), DTPendienteActual(0)("ContactoMail").ToString.ToUpper.PadRight(50))
- 'ElseIf DTPendienteActual(0)("ContactoMail").ToString.Length <= 0 Then
- ' DetalleTexto &= String.Format("{0}00{1}", Vacio.PadRight(40), Vacio.PadRight(50))
- 'End If
-
- 'Campos 37-39 -- FILLER
- DetalleTexto &= String.Format("00{0}", Vacio.PadRight(38))
-
-
- ''LLENA DT PARA REPORTE
- Dim Row As DataRow = DtAlta.NewRow()
- Row("Proveedor") = DTPendienteActual(0)("RazonSocial").ToString
- Row("Banco") = DTPendienteActual(0)("BancoNombre").ToString
- Row("TipoCuenta") = TipoCuentaDeposito
- Row("Cuenta") = String.Format("{0}", CuentaDeposito)
- DtAlta.Rows.Add(Row)
- End Sub
-
- Protected Sub TipoPersona()
- 'Persona Moral
- If DTPendienteActual(0)("RFC").ToString.Length = 12 Then
- Dim fecha As String = DTPendienteActual(0)("FechaIng").ToString
- Dim NombreProveedor As String = DTPendienteActual(0)("RazonSocial").ToString.Replace("‚"c, Vacio).Replace("‚"c, Vacio).ToUpper.PadRight(50)
- NombreProveedor = If(NombreProveedor.Length > 50, NombreProveedor.Substring(0, 50), NombreProveedor)
-
- 'Campo 18-20 del detalle
- DetalleTexto &= String.Format("M{0}{1}-{2}-{3}", NombreProveedor, fecha.Substring(6, 4), fecha.Substring(3, 2), fecha.Substring(0, 2))
- 'Campo 21-26 del detalle --- 10 FILLER - 70 de TipoPersona FISICA - 14 de RFC
- DetalleTexto &= String.Format("{0}{1}", Vacio.PadLeft(80), DTPendienteActual(0)("RFC").ToString.ToUpper.PadRight(14))
-
- 'Persona Fisica
- ElseIf DTPendienteActual(0)("RFC").ToString.Length = 13 Then
-
-
- If DTPendienteActual(0)("Tipo").ToString = "FyE" Then
-
- 'Llenamos datos de Tipo de Persona - Fisica nombres Primer apellido Segundo apellido
- DetalleTexto &= String.Format("F{0}{1}{2}{3}", Vacio.PadRight(70), DTPendienteActual(0)("Nombres").ToString.PadRight(20).Substring(0, 20), DTPendienteActual(0)("APaterno").ToString.PadRight(20).Substring(0, 20), DTPendienteActual(0)("AMaterno").ToString.PadRight(20).Substring(0, 20))
-
- 'Campo 25-26 del detalle -- Fecha Nacimiento -- RFC
- DetalleTexto &= String.Format("{0}{1}", DTPendienteActual(0)("FechaNacimiento").ToString.ToDate.ToString("yyyy-MM-dd"), DTPendienteActual(0)("RFC").ToString.ToUpper.PadRight(14))
-
- Else
-
- 'Obtener nombre
- Dim Nombre() As String = Split(DTPendienteActual(0)("RazonSocial").ToString.Replace(",", ""))
-
- 'Campo 18-24 del detalle --- 60 Tipo Persona Moral --- 10 Filler -- Datos Persona Fisica
- If Nombre.Length = 2 Then
- DetalleTexto &= String.Format("F{0}{1}{2}{3}", Vacio.PadRight(70), Nombre(0).PadRight(20).Substring(0, 20), Nombre(1).PadRight(20).Substring(0, 20), Vacio.PadRight(20).Substring(0, 20))
- ElseIf Nombre.Length = 3 Then
- DetalleTexto &= String.Format("F{0}{1}{2}{3}", Vacio.PadRight(70), Nombre(0).PadRight(20), Nombre(1).PadRight(20).Substring(0, 20), Nombre(2).PadRight(20).Substring(0, 20))
- ElseIf Nombre.Length = 4 Then
- DetalleTexto &= String.Format("F{0}{1}{2}{3}", Vacio.PadRight(70), (Nombre(0) & " " & Nombre(1)).PadRight(20).Substring(0, 20), Nombre(2).PadRight(20).Substring(0, 20), Nombre(3).PadRight(20).Substring(0, 20))
- ElseIf Nombre.Length > 4 Then
-
- Dim NombreComplejo As New List(Of String)
-
- 'ignoramos cualquier palabra del nombre que tenga un length igual o menor a 2
- For index As Integer = 0 To Nombre.Length - 1
- If Nombre(index).Length > 2 Then
- NombreComplejo.Add(Nombre(index))
- End If
- Next
-
- If NombreComplejo.Count = 2 Then
- DetalleTexto &= String.Format("F{0}{1}{2}{3}", Vacio.PadRight(70), NombreComplejo.Item(0).PadRight(20).Substring(0, 20), NombreComplejo.Item(1).PadRight(20).Substring(0, 20), Vacio.PadRight(20).Substring(0, 20))
- ElseIf NombreComplejo.Count = 3 Then
- DetalleTexto &= String.Format("F{0}{1}{2}{3}", Vacio.PadRight(70), NombreComplejo.Item(0).PadRight(20), NombreComplejo.Item(1).PadRight(20).Substring(0, 20), NombreComplejo.Item(2).PadRight(20).Substring(0, 20))
- ElseIf NombreComplejo.Count = 4 Then
- DetalleTexto &= String.Format("F{0}{1}{2}{3}", Vacio.PadRight(70), (NombreComplejo.Item(0) & " " & NombreComplejo.Item(1)).PadRight(20).Substring(0, 20), NombreComplejo.Item(2).PadRight(20).Substring(0, 20), NombreComplejo.Item(3).PadRight(20).Substring(0, 20))
- ElseIf NombreComplejo.Count > 4 Then
- Dim Nombres As String = ""
-
- 'todas las palabras menos las 2 ultimas forman parte del nombre
- For index As Integer = 0 To NombreComplejo.Count - 3
- If Nombres <> "" Then Nombres += " "
- Nombres += NombreComplejo.Item(index)
- Next
- DetalleTexto &= String.Format("F{0}{1}{2}{3}", Vacio.PadRight(70), Nombres.PadRight(20).Substring(0, 20), NombreComplejo.Item(NombreComplejo.Count - 2).PadRight(20).Substring(0, 20), NombreComplejo.Item(NombreComplejo.Count - 1).PadRight(20).Substring(0, 20))
-
- End If
-
- End If
-
- 'Campo 25-26 del detalle -- Fecha Nacimiento -- RFC
- Dim fecha As String = DTPendienteActual(0)("RFC").ToString.Substring(4, 6)
- DetalleTexto &= String.Format("19{0}-{1}-{2}{3}", fecha.Substring(0, 2), fecha.Substring(2, 2), fecha.Substring(4, 2), DTPendienteActual(0)("RFC").ToString.ToUpper.PadRight(14))
-
- End If
-
-
- Else
- 'Alert("Hola")
- End If
- End Sub
- Protected Sub FormarTexto(Registros As Integer)
- '''''' LLENADO HEADER
- Dim convenio As String = DTPendienteActual(0)("ConvenioPagoElectronico").ToString
- 'Campos #1-4 del Header
+#Region " C A R G A - D A T O S "
+ Private Sub CargaCuentas()
+ DdlCuenta.DataSource = GlobalDTBancosCuentas(UsuarioActual.CveUsuario, CveEmpresa:=UsuarioActual.CveEmpresa).FiltraParametros("UsaLayout = 1")
+ DdlCuenta.DataBind()
+ UpFiltros.Update()
+
+ DdlCuentaReportes.DataSource = GlobalDTBancosCuentas(UsuarioActual.CveUsuario, CveEmpresa:=UsuarioActual.CveEmpresa).FiltraParametros("UsaLayout = 1")
+ DdlCuentaReportes.DataBind()
+ UpFiltrosReporte.Update()
+ End Sub
+ Protected Sub BtnConsultar_Click(sender As Object, e As EventArgs)
+ CveCuenta = DdlCuenta.SelectedValue.ToEntero
+ CargaDatos()
+ End Sub
+ Private Sub CargaDatos()
+
+ 'Carga datos en DT´s
+ Dim ObjBancos As New ClsBancos
+ If ObjBancos.GetLayoutPagos(CveCuenta, -1, DdlTipoGeneracion.SelectedValue) Then
+ DTPendientes = ObjBancos.DtResultados
+ Else
+ DTPendientes = Nothing
+ End If
+
+ If ObjBancos.GetLayoutPagosEnviados(CveCuenta, 1, DdlTipoGeneracion.SelectedValue, "-1", "-1") Then
+ DTEnviadas = ObjBancos.DtResultados
+ Else
+ DTEnviadas = Nothing
+ End If
+ ObjBancos.Dispose()
+
+
+ 'Carga GvPendientes
+ If DTPendientes IsNot Nothing AndAlso DTPendientes.Rows.Count > 0 Then
+ GvPendientes.DataSource = DTPendientes
+ End If
+ GvPendientes.DataBind()
+
+ 'Carga GvEnviadas
+ If DTEnviadas IsNot Nothing AndAlso DTEnviadas.Rows.Count > 0 Then
+ GvEnviadas.DataSource = DTEnviadas
+ End If
+ GvEnviadas.DataBind()
+
+ UpGVDatos.Update()
+
+ If DTPendientes IsNot Nothing AndAlso DTPendientes.Rows.Count > 0 Then
+ CargaDatosInformativos()
+ End If
+
+ End Sub
+ Private Sub CargaDatosInformativos()
+ Dim Altas = 0
+ Dim Interbancarias = 0
+ Dim Bancomer = 0
+ Dim Scotia = 0
+
+ Dim Movimientos = 0
+ Dim Importe = 0.0
+
+
+
+ For Each dr As DataRow In DTPendientes.Rows
+
+
+ If OpBancos = 1 Then
+ If dr("EstatusCtaDeposito").ToString <> "True" Then
+ Continue For
+ End If
+
+ If dr("CveCuentaDeposito").ToString <> "" And dr("EstatusPagoElectronico").ToString <> "True" And dr("AltaCuenta").ToString = "1" Then
+ '
+ ElseIf dr("CveCuentaDeposito").ToString.ToEntero > 0 Then
+ Movimientos += 1
+ Importe += dr("Abonado").ToString.ToDouble
+ End If
+ End If
+
+ If OpBancos = 3 Then
+
+ If dr("EstatusCtaDeposito").ToString <> "True" Then
+ Continue For
+ End If
+
+ If dr("CveCuentaDeposito").ToString <> "" And ((dr("EstatusPagoElectronicoScotia").ToString <> "True" Or dr("FechaEliminacion").ToString.ToDate < NowADS())) And dr("AltaCuenta").ToString = "1" Then
+ '
+ ElseIf dr("CveCuentaDeposito").ToString.ToEntero > 0 Then
+ Movimientos += 1
+ Importe += dr("Abonado").ToString.ToDouble
+ End If
+
+
+ End If
+ Next
+
+
+ 'Inicio Bloque es para contar las altas de cuentas
+ Dim DTPendientesTmp As DataTable = DTPendientes.FiltraParametros("", "",
+ {"CLABEDestino", "CLABE", "CveBanco", "CveCuentaDeposito", "EstatusCtaDeposito", "EstatusPagoElectronico", "EstatusPagoElectronicoScotia", "AltaCuenta", "BancoNombre", "FechaEliminacion"}
+ )
+ For Each dr As DataRow In DTPendientesTmp.Rows
+
+ If OpBancos = 1 Then
+ If dr("EstatusCtaDeposito").ToString <> "True" Then
+ Continue For
+ End If
+
+ If dr("CveCuentaDeposito").ToString <> "" And dr("EstatusPagoElectronico").ToString <> "True" And dr("AltaCuenta").ToString = "1" Then
+ Altas += 1
+ If dr("BancoNombre").ToString.ToUpper.Contains("BANCOMER") OrElse dr("BancoNombre").ToString.ToUpper.Contains("BBVA") Then
+ Bancomer += 1
+ Else
+ Interbancarias += 1
+ End If
+
+ ElseIf dr("CveCuentaDeposito").ToString.ToEntero > 0 Then
+ '
+ End If
+ End If
+
+ If OpBancos = 3 Then
+
+ If dr("EstatusCtaDeposito").ToString <> "True" Then
+ Continue For
+ End If
+
+ If dr("CveCuentaDeposito").ToString <> "" And ((dr("EstatusPagoElectronicoScotia").ToString <> "True" Or dr("FechaEliminacion").ToString.ToDate < NowADS())) And dr("AltaCuenta").ToString = "1" Then
+ Altas += 1
+ If dr("BancoNombre").ToString.ToUpper.Contains("SCOTIA") Then
+ Scotia += 1
+ Else
+ Interbancarias += 1
+ End If
+
+ ElseIf dr("CveCuentaDeposito").ToString.ToEntero > 0 Then
+ '
+ End If
+
+
+ End If
+ Next
+ ''Fin Bloque es para contar las altas de cuentas
+
+
+
+ LbNumeroAltas.Text = Altas.ToString
+ LbNumeroInterbancarias.Text = Interbancarias.ToString
+ LbNumeroBancomer.Text = Bancomer.ToString
+ LbNumeroScotia.Text = Scotia.ToString
+
+ LbNumeroMovimientos.Text = Movimientos.ToString
+ LbImporteMovimientos.Text = Importe.ToString.FormatoNumero
+
+ UpComandosGeneracion.Update()
+
+ VistaComandoGeneracion()
+
+ End Sub
+
+ Sub VistaComandoGeneracion()
+ TRNumBancomer.Visible = False
+ TRNumScotia.Visible = False
+
+ TRNumBancomer.Visible = True
+ If OpBancos = 1 Then
+ TRNumBancomer.Visible = True
+ End If
+
+ If OpBancos = 3 Then
+ TRNumScotia.Visible = True
+ End If
+
+ UpComandosGeneracion.Update()
+ End Sub
+
+#End Region
+
+#Region " DATOS GENERALES LAYOUT "
+ Private Sub InicializaDatosGenerales()
+
+ If UsuarioActual.CveEmpresa = 66 Then
+ CorreoNotificacionesEmpresa = "pagos@gluyasconstrucciones.com"
+ ElseIf UsuarioActual.CveEmpresa = 13 Then
+ CorreoNotificacionesEmpresa = "signotificaciones@adssistemas.mx"
+ Else
+ CorreoNotificacionesEmpresa = "signotificaciones@adssistemas.mx"
+ End If
+
+ End Sub
+#End Region
+
+#Region " GENERA Y DESCARGA ARCHIVO (TXT) "
+ Protected Sub CrearTXT()
+ Dim path As String = Server.MapPath(String.Format("~/Empresas/{0}/Layout/{1}.txt", UsuarioActual.CveEmpresa, NombreArchivo))
+ ' Create or overwrite the file.
+ Dim fs As FileStream = File.Create(path)
+
+ ' Add text to the file.
+ Dim info As Byte() = New UTF8Encoding(True).GetBytes(TextoCompleto)
+ fs.Write(info, 0, info.Length)
+ fs.Close()
+ End Sub
+ Private Sub DescargarArchivo()
+ With HttpContext.Current.Response
+ .Clear()
+ .Buffer = True
+ .ContentType = "textplain"
+ .AddHeader("Content-Disposition", String.Format("attachment;filename={0}{1}.txt", NombreArchivo, NowADS().ToString("ddMMyyyy")))
+ .Charset = "UTF-8"
+ .ContentEncoding = Encoding.Default
+ .Write(TextoCompleto)
+ .Flush()
+ .End()
+ End With
+ End Sub
+ Private Sub DescargaZip()
+ Dim path As String = Server.MapPath(String.Format("~/Empresas/{0}/Layout/", UsuarioActual.CveEmpresa))
+ Response.Clear()
+ Dim ElZip As ZipFile = New ZipFile()
+ Using ElZip
+ ElZip.AddDirectory(path)
+ ElZip.Save(Response.OutputStream)
+ End Using
+ Response.AddHeader("Content-Disposition", "attachment; filename=LayoutPagos.zip")
+ Response.ContentType = "application/zip"
+ Response.End()
+ End Sub
+ Private Function CreaArchivo(Tipo As Integer, Optional MismoBanco As Boolean = True, Optional ByRef NombreArchivoEnviado As String = "") As Boolean
+
+
+ System.Threading.Thread.Sleep(1000) 'Un segundo de diferencia Para dIferentes tipos de bancos
+
+ DirectoryExistsCreate(String.Format("{0}Layout", UsuarioActual.Empresa.Ruta))
+
+ 'NombreArchivo = String.Format("{2}{1}{0}.txt", UsuarioActual.CveUsuario, NowADS().ToString("yyyyMMdd-HH-mm-ss"), If(Tipo = 1, "LAYOUTPAGO", "LAYOUTALTA"))
+
+ If Tipo = 1 Then
+ NombreArchivo = String.Format("{2}{1}{0}.txt", UsuarioActual.CveUsuario, NowADS().ToString("yyyyMMdd-HH-mm-ss"), "LAYOUTPAGO")
+ Else
+ NombreArchivo = String.Format("{2}{1}{0}{3}.txt", UsuarioActual.CveUsuario, NowADS().ToString("yyyyMMdd-HH-mm-ss"), "LAYOUTALTA", If(MismoBanco, "BANCOMER", "INTERBANCARIO"))
+ End If
+
+ If NombreArchivoEnviado.Length > 0 Then
+ NombreArchivo = NombreArchivoEnviado
+ Else
+ NombreArchivoEnviado = NombreArchivo
+ End If
+
+ Dim path As String = String.Format("{0}Layout\{1}", UsuarioActual.Empresa.Ruta, NombreArchivo)
+
+ If File.Exists(path) Then
+ File.Delete(path)
+ End If
+
+ Dim fs As FileStream = File.Create(path)
+
+ Dim info As Byte() = New UTF8Encoding(True).GetBytes(TextoCompleto)
+ fs.Write(info, 0, info.Length)
+ fs.Close()
+
+ Return True
+
+ End Function
+ Private Function GuardaTXT() As Boolean
+ Dim Retorno As Boolean = True
+ Try
+ Dim Ruta As String = ""
+ Dim FileName As String = Path.GetFileName(FUTxt.PostedFile.FileName)
+ NombreArchivo = FileName
+ Dim Extension As String = Path.GetExtension(FUTxt.PostedFile.FileName)
+ Dim FolderPath As String = String.Format("{0}Empresas\", Request.ApplicationPath)
+ Dim FilePath As String = Server.MapPath(FolderPath + FileName)
+ FUTxt.SaveAs(FilePath)
+ NombreArchivo = FilePath
+ Catch ex As Exception
+ Retorno = False
+ End Try
+
+ Return Retorno
+ End Function
+#End Region
+
+#Region "LAYOUT SCOTIABANK"
+
+ '====================================================================
+ ' GenerarLayoutPagosScotia
+ '====================================================================
+ Private Sub AltaProveedoresScotia(
+ Optional ByVal DtPendientesTemp As DataTable = Nothing,
+ Optional ByVal NumeroConvenio As String = "00000", ' 5 dígitos
+ Optional ByVal SistemaCentral As String = "001", ' 3 dígitos
+ Optional ByVal TipoArchivo As String = "EE", ' 2 digitos (define tu propio código)
+ Optional ByVal Secuencia As Integer = 1, ' 3 dígitos, consecutivo del día
+ Optional ByVal MovimientoDefault As Char = "P"c ' P =pago, cambia si usas A/C/B
+ )
+
+ '------------------- Constantes de layout -------------------
+ Dim LARGO_REGISTRO As Integer = 140
+ Dim Cero As Char = "0"c
+ Dim Space As Char = " "c
+
+ Dim NumeroArchivo As Integer = 1 ' ajústalo si manejas consecutivo diario
+ Dim FechaArchivo As Date = NowADS().Date
+
+ If DtPendientesTemp Is Nothing Then DtPendientesTemp = DTPendientes.Copy
+ DtPendientesTemp.CaseSensitive = False
+
+ DtPendientesTemp = DtPendientesTemp.FiltraParametros("", "",
+ {"CLABEDestino", "CLABE", "CveBanco", "CveCuentaDeposito", "EstatusCtaDeposito", "EstatusPagoElectronico", "EstatusPagoElectronicoScotia", "AltaCuenta", "BancoNombre", "FechaEliminacion", "ConvenioPagoElectronico"}
+ )
+
+ If DtPendientesTemp.Rows.Count = 0 Then
+ Alert("No hay datos pendientes para generar el Layout de ScotiaBank.", TipoMensaje.MsgAdvertencia)
+ Exit Sub
+ End If
+
+ '------------------- Acumulados para el trailer -------------
+ Dim Altas As Integer = 0, Cambios As Integer = 0
+ Dim Bajas As Integer = 0, Consultas As Integer = 0
+ '------------------- Acumulados para el trailer -------------
+
+ '------------------- ConvenioPagoElectronico = "0000000" ' 5 dígitos
+ NumeroConvenio = DtPendientesTemp.Rows(0)("ConvenioPagoElectronico").ToString
+
+ If NumeroConvenio.Trim.Length = 0 Then
+ Alert("El campo NumeroConvenio (ConvenioPagoElectronico) no está definido en los datos de la cuenta.", TipoMensaje.MsgAdvertencia)
+ End If
+
+ Dim sb As New StringBuilder
+
+ '=============================================================
+ ' 1) HEADER (140 )
+ '=============================================================
+ 'Dim hoy As Date = Now.Date
+ 'Dim hora As String = Now.ToString("HHmmss")
+
+ Dim Header As New StringBuilder()
+ Header.Append(TipoArchivo.PadRight(2, Space)) 'TIPO ARCHIVO (2)
+ Header.Append("HA") 'TIPO REGISTRO (2)
+ Header.Append("JDF") 'SISTEMA-CENTRAL (3)
+ Header.Append(NumeroConvenio.PadLeft(7, Cero)) 'NUMERO DE CONTRATO (7) ' ocupa 5 dígitos pero en el layout se usa 7
+ Header.Append(NowADS.ToString("yyyyMMdd")) 'FECHA-SOLICITUD (8)
+ Header.Append("001") 'SECUENCIA (3)
+ Header.Append("M") 'MANTENIMIENTO-O-CONSULTA (1)
+ Header.Append(" ".PadLeft(8, Space)) 'FECHA GENERACIÓN ARCHIVO (8) *** Respusta de ScotiaBank ***
+ Header.Append(" ".PadLeft(6, Space)) 'Hora GENERACIÓN ARCHIVO (6) *** Respusta de ScotiaBank ***
+ Header.Append(" ".PadLeft(3, Space)) 'CÓDIGO-RESPUESTA (3) *** Respusta de ScotiaBank ***
+ Header.Append(" ".PadLeft(97, Space)) 'FILLER (97)
+
+ sb.AppendLine(Header.ToString)
+
+ '=============================================================
+ ' 2) DETALLES (140 )
+ '=============================================================
+ Dim SBErrores As New StringBuilder
+ For Each dr As DataRow In DtPendientesTemp.Rows
+
+ Dim registro As New StringBuilder()
+ Dim esError As Boolean = False
+
+ '---- Datos base tomados de DTPendientes ------------------
+
+ Dim CuentaDestino As String = ""
+ Dim cuentaDigitos As String = dr("CLABEDestino").ToString.Trim
+ Dim Clabe As String = dr("CLABE").ToString.Trim
+ Dim limite As String = (9000000000 * 100D).ToString("F0")
+ Dim banco As String = dr("CveBanco").ToString.PadLeft(3, Cero)
+
+ If cuentaDigitos.Length = 11 AndAlso banco = "044" Then
+ CuentaDestino = cuentaDigitos
+ ElseIf Clabe.Length = 18 Then
+ CuentaDestino = Clabe
+ Else
+ CuentaDestino = Clabe
+ SBErrores.Append($"Cuenta {CuentaDestino} debe tener 11 o 18 dígitos.
")
+ esError = True
+ End If
+
+ If banco.Length <> 3 OrElse Not IsNumeric(banco) OrElse banco = "000" Then
+ SBErrores.Append($"Cuenta {CuentaDestino} código {banco} no es un banco válido. Debe ser numérico de 3 dígitos.
")
+ esError = True
+ End If
+
+ Dim CveCuentaDeposito As String = dr("CveCuentaDeposito").ToString
+
+ 'Dim movimiento As Char = If(dr.Table.Columns.Contains("Movimiento"),
+ ' dr("Movimiento").ToString.FirstOrDefault(), MovimientoDefault)
+
+ Dim CVETIPOCUENTA As String = If(CuentaDestino.Length = 18, "09", "01")
+
+
+ '---- TIPO DE REGISTRO ------------------
+
+ 'ANEXO E de ScotiaBank
+ 'DA = DETALLE ALTA DE DATOS DE CUENTA Y LIMITE RELACIONADO
+ 'DC = DETALLE CAMBIOS DE DATOS DE CUENTA Y LIMITE RELACIONADO
+ 'DB = DETALLE BAJA DE DATOS DE CUENTA Y LIMITE RELACIONADO
+ 'DQ = DETALLE CONSULTA DE DATOS DE CUENTA Y LIMITE RELACIONADO
+ 'DR = DETALLE RESPUESTA *** Respusta de ScotiaBank ***
+
+ Dim TipoRegistro As String = "DA" ' Por default es D (Alta), cambia a C si es cambio o baja
+ '---- TIPO DE REGISTRO ------------------
+
+ '---- Construcción del registro ---------------------------
+ registro.Append(TipoArchivo.PadRight(2, Space)) 'TIPO ARCHIVO (2)
+ registro.Append(TipoRegistro) 'TIPO REGISTRO (2)
+ registro.Append("A") 'CVE-MOVIMIENTO-CUENTA (1)
+ registro.Append(CVETIPOCUENTA) 'CVE-TIPO - CUENTA (2)
+ registro.Append("00") 'CVE-MONEDA - CUENTA (2) 00 Pesps 01 Dollares
+ registro.Append(banco) 'NUM-banco - CUENTA (3)
+ registro.Append(CuentaDestino.PadLeft(20, Cero)) 'NUM-CUENTA (20)
+ registro.Append(NowADS.AddDays(364).ToString("yyyyMMdd")) 'FECHA DE ELIMINACIÓN (8)
+ registro.Append(CveCuentaDeposito.PadRight(50, Space)) 'DESCRIPCIÓN (50)
+ registro.Append(limite.PadLeft(17, Cero)) 'LIMITE-POR-TRANSACCIÓN (17)
+ registro.Append("04") 'TIPO DE PAGO (2)
+ registro.Append(" ") 'CÓDIGO-RESPUESTA (3) CÓDIGO DE RESPUESTA DE REG. "D*", ANEXO 'C' *** Respusta de ScotiaBank ***
+ registro.Append(" ".PadLeft(28, Space)) 'FILLER (28)
+
+ If registro.Length = LARGO_REGISTRO AndAlso Not esError Then
+ sb.AppendLine(registro.ToString)
+ Select Case TipoRegistro
+ Case "DA"
+ Altas = Altas + 1
+ Case "DC"
+ Cambios = Cambios + 1
+ Case "DB"
+ Bajas = Bajas + 1
+ Case "DQ"
+ Consultas = Consultas + 1
+ Case Else
+ esError = True
+ End Select
+ End If
+ Next
+
+ '=============================================================
+ ' 3) TRAILER (PIE) (140)
+ '=============================================================
+ Dim trailer As New StringBuilder()
+
+
+ trailer.Append(TipoArchivo.PadRight(2, Space)) 'TIPO DE ARCHIVO (2)
+ trailer.Append("TA") 'TIPO DE REGISTRO (2)
+ trailer.Append(Altas.ToString.PadLeft(8, Cero)) 'CANTIDAD DE MOVIMIENTOS ALTAS (8)
+ trailer.Append(Cambios.ToString.PadLeft(8, Cero)) 'CANTIDAD DE MOVIMIENTOS CAMBIOS (8)
+ trailer.Append(Bajas.ToString.PadLeft(8, Cero)) 'CANTIDAD DE MOVIMIENTOS BAJAS (8)
+ trailer.Append(Consultas.ToString.PadLeft(8, Cero)) 'CANTIDAD DE CONSULTAS (8)
+ 'MOVIMIENTOS ACEPTADOS
+ trailer.Append("0".PadLeft(8, Cero)) 'CANTIDAD DE MOVIMIENTOS ALTAS (8) *** Respusta de ScotiaBank ***
+ trailer.Append("0".PadLeft(8, Cero)) 'CANTIDAD DE MOVIMIENTOS CAMBIOS (8) *** Respusta de ScotiaBank ***
+ trailer.Append("0".PadLeft(8, Cero)) 'CANTIDAD DE MOVIMIENTOS BAJAS (8) *** Respusta de ScotiaBank ***
+ trailer.Append("0".PadLeft(8, Cero)) 'CANTIDAD DE CONSULTAS (8) *** Respusta de ScotiaBank ***
+ 'MOVIMIENTOS RECHAZADOS
+ trailer.Append("0".PadLeft(8, Cero)) 'CANTIDAD DE MOVIMIENTOS ALTAS (8) *** Respusta de ScotiaBank ***
+ trailer.Append("0".PadLeft(8, Cero)) 'CANTIDAD DE MOVIMIENTOS CAMBIOS (8) *** Respusta de ScotiaBank ***
+ trailer.Append("0".PadLeft(8, Cero)) 'CANTIDAD DE MOVIMIENTOS BAJAS (8) *** Respusta de ScotiaBank ***
+ trailer.Append("0".PadLeft(8, Cero)) 'CANTIDAD DE CONSULTAS (8) *** Respusta de ScotiaBank ***
+ trailer.Append("0".PadLeft(3, Cero)) 'CÓDIGO-RESPUESTA (3) *** Respusta de ScotiaBank ***
+ trailer.Append("0".PadLeft(3, Cero)) 'CÓDIGO-RESPUESTA - Archivo (3) *** Respusta de ScotiaBank ***
+ trailer.Append(" ".PadLeft(34, Space)) 'FILLER (34)
+
+ sb.Append(trailer.ToString)
+
+ '------------------- Crear archivo y mostrar descargas ------------------
+ TextoCompleto = sb.ToString
+ If sb.Length = 0 Then
+ Alert("No se generó ningún registro válido para Bajío.", TipoMensaje.MsgAdvertencia)
+ Exit Sub
+ End If
+
+
+
+ If SBErrores.Length > 0 Then
+ Alert("Errores encontrados al generar el layout de ScotiaBank:
" & SBErrores.ToString, TipoMensaje.MsgAdvertencia)
+ Else
+ Dim NombreArchivoEnviado As String = $"altacuentasScotia_{FechaArchivo:ddMMyyyy}_{NumeroArchivo:D3}.txt"
+
+ If CreaArchivo(2, True, NombreArchivoEnviado) Then
+ DVDescargaPagos.Visible = False
+ DVDescargaReporte.Visible = False
+ LblCuentas.Text = "Cuentas Bajio"
+ 'NombreArchivoBancomer = "" 'No usamos estos para scotia
+ 'NombreArchivoInterbancario = ""
+ 'NombreArchivoCIE = ""
+ NombreArchivo = NombreArchivoEnviado
+ DVDescargaCuentas1.Visible = True
+ LnkDescargaCuentas1.Text = NombreArchivo
+ RegistraScript("$('#ModalDescarga').modal({ backdrop: 'static', keyboard: false});")
+ UpModalDescarga.Update()
+ End If
+ End If
+
+
+
+ CargaDatos()
+
+ End Sub
+
+ '---------------------------------------------------------------
+ ' Limpia y normaliza texto para Scotia (solo A-Z,0-9,espacio)
+ '---------------------------------------------------------------
+ Private Function LimpiarTextoScotia(txt As String, largo As Integer) As String
+ Dim clean = New String(txt _
+ .Normalize(System.Text.NormalizationForm.FormD) _
+ .Where(Function(ch) Char.IsLetterOrDigit(ch) OrElse ch = " "c) _
+ .ToArray()) _
+ .ToUpperInvariant()
+ Return clean.PadRight(largo).Substring(0, largo)
+ End Function
+
+
+ '====================================================================
+ ' GeneraPagoScotiaBank – Layout Pagos Scotiabank (For Each, método único)
+ '====================================================================
+ ' ▸ Genera un archivo de pagos masivos para Scotiabank (Archivo de intercambio EE).
+ ' ▸ Registros y longitudes exactas:
+ ' • HA, HB, DA, TB, TA → 370 caracteres
+ ' • DM (correo) → 104 caracteres
+ ' ▸ Se permite partición por bloques (TamanoBloque), pero todo dentro de un
+ ' mismo método para claridad. Sólo se complementa con LimpiarTextoScotia().
+ '====================================================================
+
+ Public Sub GeneraPagoScotiaBank(ByVal DTPendientes As DataTable, InsertaEnDB As Boolean)
+
+ Dim TamanoBloque As Integer = 500 ' pagos por bloque
+
+ Dim ErrorLayout As Boolean = False
+
+ '------------------- VALIDACIONES BÁSICAS ---------------------------
+ If DTPendientes Is Nothing OrElse DTPendientes.Rows.Count = 0 Then
+ Alert("No hay datos pendientes para generar el Layout de ScotiaBank.", TipoMensaje.MsgAdvertencia)
+ ErrorLayout = True
+ End If
+
+ Dim CuentaCargo As String = DTPendientes.Rows(0)("CLABEOrigen").ToString
+ If CuentaCargo.Length <> 11 Then
+ Alert("El campo CuentaCargo debe ser numérico de 11 dígitos.", TipoMensaje.MsgAdvertencia)
+ ErrorLayout = True
+
+ End If
+
+ Dim NumeroConvenio As String = DTPendientes.Rows(0)("ConvenioPagoElectronico").ToString
+ If NumeroConvenio.Trim.Length = 0 Then
+ Alert("El campo NumeroConvenio (ConvenioPagoElectronico) no está definido en los datos de la cuenta.", TipoMensaje.MsgAdvertencia)
+ ErrorLayout = True
+
+ End If
+
+ If NumeroConvenio.Length <> 5 Then
+ Alert("El campo NumeroConvenio debe ser numérico de 5 dígitos.", TipoMensaje.MsgAdvertencia)
+ ErrorLayout = True
+
+ End If
+
+
+ '------------------- ACUMULADORES -----------------------------------
+ Dim sb As New StringBuilder()
+ Dim totalPagos As Integer = 0
+ Dim totalImporte As Decimal = 0D
+ Dim pagosBloque As Integer = 0
+ Dim importeBloque As Decimal = 0D
+ Dim numBloque As Integer = 0
+
+ Dim SPACE As Char = " "c
+ Dim CERO As Char = "0"c
+
+ '------------------- HEADER ARCHIVO (HA) ----------------------------
+ Dim ha As New StringBuilder()
+ ha.Append("EE") ' 1‑2 Tipo Archivo
+ ha.Append("HA") ' 3‑4 Tipo Registro
+ ha.Append(NumeroConvenio.PadLeft(5, "0"c)) ' 5‑9 Nº Convenio
+ ha.Append("01") ' 10‑11 Secuencia fija "01"
+ ha.Append("00000000") ' 12‑19 Fecha generación
+ ha.Append("00000000") ' 20‑27 Fecha inicial (opcional)
+ ha.Append("00000000") ' 28‑35 Fecha final (opcional)
+ ha.Append("000") ' 36‑38 Código status "000"
+ ha.Append(" ".PadLeft(332, SPACE)) ' 39‑370 FILLER (espacios)
+
+ sb.AppendLine(ha.ToString())
+
+ '------------------- RECORRIDO DETALLES -----------------------------
+ Dim SBErrores As StringBuilder = New StringBuilder()
+ 'Dim esError As Boolean = False
+ Dim idx As Integer = 0
+
+ Dim hb As New StringBuilder()
+ hb.Append("EE") ' 1‑2
+ hb.Append("HB") ' 3‑4
+ hb.Append("00") ' 5‑6 Moneda cuenta cargo (00=MXN)
+ hb.Append("0000") ' 7‑10 Uso futuro = ceros
+ hb.Append(CuentaCargo) ' 11‑21 Cuenta cargo (11)
+ hb.Append("0000000001") ' 22‑31 Referencia de cargo? (ejemplo)
+ hb.Append("000") ' 32‑34 Codigo del registro
+ hb.Append(" ".PadLeft(336, SPACE)) ' 35‑370 FILLER espacios
+
+ sb.AppendLine(hb.ToString())
+
+ For Each dr As DataRow In DTPendientes.Rows
+
+ ''--- ¿Inicia BLOQUE? (HB) ---------------------------------------
+ 'If idx Mod TamanoBloque = 0 Then
+ ' numBloque += 1
+ ' pagosBloque = 0
+ ' importeBloque = 0D
+
+ ' Dim hb As New StringBuilder(New String(" "c, 370))
+ ' hb.Append("EE") ' 1‑2
+ ' hb.Append("HB") ' 3‑4
+ ' hb.Append("00") ' 5‑6 Moneda cuenta cargo (00=MXN)
+ ' hb.Append("0000") ' 7‑10 Uso futuro = ceros
+ ' hb.Append(CuentaCargo) ' 11‑21 Cuenta cargo (11)
+ ' hb.Append("0000000001") ' 22‑31 Referencia de cargo? (ejemplo)
+ ' hb.Append("000") ' 32‑34 Codigo del registro
+ ' hb.Append(" ".PadLeft(336, SPACE)) ' 35‑370 FILLER espacios
+
+ ' sb.AppendLine(hb.ToString())
+ 'End If
+
+ '----------- DETALLE ALTA (DA) ----------------------------------
+ Dim importe As Decimal = 0D
+ If Not Decimal.TryParse(Convert.ToString(dr("Importe")), importe) Then
+ 'Alert($"Importe inválido en fila {idx + 1}", TipoMensaje.MsgAdvertencia)
+ SBErrores.Append($"Importe inválido en fila {idx + 1}")
+ ErrorLayout = True
+ End If
+
+ If importe <= 0D Then
+ Alert($"Importe debe ser mayor a 0 en fila {idx + 1}", TipoMensaje.MsgAdvertencia)
+ ErrorLayout = True
+ End If
+
+ Dim importeInt As String = CDec(Math.Round(importe * 100).ToEntero).ToString().PadLeft(15, CERO) ' 2 dec.
+
+ Dim fechaAplicacion As String = NowADS.ToString("yyyyMMdd")
+ Dim cveBenef As String = LimpiarTextoScotia(Convert.ToString(dr("CveProveedor"))).PadRight(20)
+ Dim rfc As String = LimpiarTextoScotia(Convert.ToString(dr("RFC"))).PadRight(13)
+ Dim nombreBen As String = LimpiarTextoScotia(Convert.ToString(dr("RazonSocial"))).PadRight(40)
+ Dim CveIE As Integer = dr("CveIE").ToString.ToEntero
+ Dim referenciaPago As String = CveIE.ToString.PadLeft(16, CERO) 'If(dr.Table.Columns.Contains("Referencia"), LimpiarTextoScotia(Convert.ToString(dr("Referencia"))).PadLeft(16, "0"c), New String("0"c, 16))
+
+ Dim CuentaDestino As String = ""
+ Dim cuentaDigitos As String = Convert.ToString(dr("CLABEDestino"))
+ Dim clabe As String = Convert.ToString(dr("CLABE"))
+ Dim CveBanco As String = dr("CveBanco").ToString.PadLeft(3, CERO)
+
+
+ If cuentaDigitos.Length = 11 AndAlso CveBanco = "044" Then
+ CuentaDestino = cuentaDigitos
+ ElseIf clabe.Length = 18 Then
+ CuentaDestino = clabe
+ Else
+ CuentaDestino = clabe
+ SBErrores.Append($"Cuenta {CuentaDestino} debe tener 11 o 18 dígitos.
")
+ ErrorLayout = True
+ End If
+
+
+ Dim TipoCuenta As String = If(CuentaDestino.Length = 18, "9", "1") ' 09=18 dígitos, 01=11 dígitos
+
+ CuentaDestino = CuentaDestino.PadLeft(20, CERO)
+
+
+
+ If CveBanco = "000" Then
+ Alert($"CveBanco inválida en fila {idx + 1}. Debe ser numérico de 3 dígitos.", TipoMensaje.MsgAdvertencia)
+ ErrorLayout = True
+ End If
+
+ Dim ConceptoPago As String = dr("Observaciones").ToString.Trim
+
+ If ConceptoPago.Length > 50 Then
+ ConceptoPago = ConceptoPago.Substring(0, 50) ' Limitar a 50 caracteres
+ End If
+ ConceptoPago = ConceptoPago.PadRight(50, SPACE)
+
+ Dim da As New StringBuilder()
+ da.Append("EE") ' 1‑2
+ da.Append("DA") ' 3‑4
+ da.Append("04") ' 5‑6 Tipo movimiento (04=SPEI)
+ da.Append("00") ' 7‑8 Moneda pago (00=MXN)
+ da.Append(importeInt) ' 9‑23 Importe (15)
+ da.Append(fechaAplicacion) ' 24‑31
+ da.Append("03") ' 32‑33 Servicio‑concepto (03)
+ da.Append(cveBenef) ' 34‑53
+ da.Append(rfc) ' 54‑66
+ da.Append(nombreBen) ' 67‑106
+ da.Append(referenciaPago) ' 107‑122
+ da.Append("00000") ' 123‑127 Plaza pago (ceros)
+ da.Append("00000") ' 128‑132 Sucursal pago (ceros)
+
+ da.Append(CuentaDestino) ' 133‑152 clabe destino (ceros)
+ da.Append("00000") ' 153‑157 PAIS (ceros)
+ da.Append("".PadLeft(40, SPACE)) ' 158‑197 Ciudad espacio (espacios en blanco)
+ da.Append(TipoCuenta) ' 198-198 Tipo cuenta
+ da.Append(SPACE) ' 199-199 digito intercambio
+ da.Append("00000") ' 200-204 plaza cuenta banco
+ da.Append("044") ' 205-207 num banco emisor (044=ScotiaBank)
+ da.Append(CveBanco) ' 208-210 num banco receptor (044=ScotiaBank)
+
+ da.Append("001") ' 211-213 dias vigencia
+ da.Append(ConceptoPago) ' 214-263 Concepto pago
+ da.Append("".PadLeft(60, SPACE)) '264-283 CAMPO-USO-EMPRESA-1
+ ' 284-303 CAMPO-USO - Empresa - 2
+ ' 304-323 CAMPO-USO - Empresa - 3
+ da.Append("".PadLeft(41, CERO)) ' 324-326 CODIGO-STATUS - REGISTRO NUM 3
+ ' 327-327 CVE-CAMBIO - INST NUM 1
+ ' 328-330 CODIGO-STATUS - CAMBIO - INST NUM 3
+ ' 331-338 FECHA DE PAGO (Pago en ventanilla) NUM 8
+ ' 339-343 PLAZA DE PAGO (Pago en ventanilla) NUM 5
+ ' 344-348 SUCURSAL DE PAGO (Pago en ventanilla) NUM 5
+ ' 349-364 FOLIO-UNICO NUM 16
+ sb.AppendLine(da.ToString())
+
+ '----------- DETALLE MAIL (DM) 104 -------------------------
+
+ Dim correo As String = dr("Correo").ToString.Trim
+ If correo.Trim.Length = 0 Then
+ SBErrores.Append($"Email no definido en fila {idx + 1}. Debe ser un correo electrónico válido.
")
+ ErrorLayout = True
+ End If
+
+ Dim dm As New StringBuilder()
+ dm.Append("EE") ' 1‑2 Tipo archivoz
+ dm.Append("DM") ' 3‑4 Tipo registro
+ dm.Append(correo.PadRight(100)) ' 5‑104 Email + filler
+ da.Append("".PadLeft(34, CERO)) ' 105-138 Uso Futuro
+ da.Append("".PadLeft(30, SPACE)) ' 139-168 Clave de Rastreo llenar con espacios en blanco
+ da.Append("".PadLeft(20, SPACE)) ' 169-188 Referencia de Abono Banxico
+ dm.Append(" ") ' 189-190 Tipo de Operación anexo G
+ da.Append("".PadLeft(232, SPACE)) ' 191-370 FILLER
+
+
+ sb.AppendLine(dm.ToString())
+
+ '----------- ACUMULADORES ---------------------------------------
+ totalPagos += 1
+ totalImporte += importe
+ pagosBloque += 1
+ importeBloque += importe
+
+ '----------- ¿CIERRA BLOQUE? (TB) -------------------------------
+ Dim bloqueCompleto As Boolean = (pagosBloque = TamanoBloque)
+ Dim ultimoRegistro As Boolean = (idx = DTPendientes.Rows.Count - 1)
+ idx += 1
+ Next
+
+ 'If bloqueCompleto OrElse ultimoRegistro Then
+ Dim tb As New StringBuilder()
+ tb.Append("EE") ' 1‑2
+ tb.Append("TB") ' 3‑4
+ tb.Append(pagosBloque.ToString().PadLeft(7, CERO)) ' 5‑11 Cnt altas
+ tb.Append((importeBloque * 100).ToEntero.ToString().PadLeft(17, CERO)) ' 12‑28 Importe altas
+ tb.Append("".PadLeft(7, CERO)) ' 29‑35 Cnt bajas
+ tb.Append("".PadLeft(17, CERO)) ' 36‑52 Importe bajas
+ tb.Append("".PadLeft(195, CERO))
+ ' 53-59 CANTIDAD DE MOVIMIENTOS ALTAS
+ ' 60-76 IMPORTE DE MOVIMIENTOS ALTAS
+ ' 77-83 CANTIDAD DE MOVIMIENTOS BAJAS
+ ' 84-100 IMPORTE DE MOVIMIENTOS BAJAS
+ ' 101-107 CANTIDAD DE MOVIMIENTOS ALTAS
+ ' 108-124 IMPORTE DE MOVIMIENTOS ALTAS
+ ' 125-131 CANTIDAD DE MOVIMIENTOS BAJAS
+ ' 132-148 IMPORTE DE MOVIMIENTOS BAJAS
+ ' 149-155 CANTIDAD DE MOVIMIENTOS PAGADOS
+ ' 156-172 IMPORTE DE MOVIMIENTOS PAGADOS
+ ' 173-179 CANTIDAD DE MOVIMIENTOS DEVUELTOS
+ ' 180-196 IMPORTE DE MOVIMIENTOS DEVUELTOS
+ ' 197-203 CANTIDAD DE MOVIMIENTOS RECH
+ ' 204-220 IMPORTE DE MOVIMIENTOS RECH
+ ' 221-227 CANTIDAD DE MOVIMIENTOS BAJA
+ ' 228-244 IMPORTE DE MOVIMIENTOS BAJA
+ ' 245-247 CODIGO-STATUS-REGISTRO
+ tb.Append("".PadLeft(123, SPACE)) ' 248-370 FILLER (espacios)
+ sb.AppendLine(tb.ToString())
+ 'End If
+
+ '------------------- TRAILER ARCHIVO (TA) ---------------------------
+ Dim ta As New StringBuilder()
+ ta.Append("EE") ' 1‑2
+ ta.Append("TA") ' 3‑4
+ ta.Append(totalPagos.ToString().PadLeft(7, CERO)) ' 5‑11
+ ta.Append((totalImporte * 100).ToEntero.ToString().PadLeft(17, CERO)) ' 12‑28
+ ta.Append("".PadLeft(7, CERO)) ' 29‑35 Cnt bajas
+ ta.Append("".PadLeft(17, CERO)) ' 36‑52 Importe bajas
+ ta.Append("".PadLeft(198, CERO))
+ ' 53-59 CANTIDAD DE MOVIMIENTOS ALTAS
+ ' 60-76 IMPORTE DE MOVIMIENTOS ALTAS
+ ' 77-83 CANTIDAD DE MOVIMIENTOS BAJAS
+ ' 84-100 IMPORTE DE MOVIMIENTOS BAJAS
+ ' 101-107 CANTIDAD DE MOVIMIENTOS ALTAS
+ ' 108-124 IMPORTE DE MOVIMIENTOS ALTAS
+ ' 125-131 IMPORTE DE MOVIMIENTOS BAJAS
+ ' 132-148 MOVIMIENTOS PAGADOS
+ ' 149-155 IMPORTE DE MOVIMIENTOS PAGADOS
+ ' 156-172 MOVIMIENTOS DEVUELTOS
+ ' 173-179 IMPORTE DE MOVIMIENTOS DEVUELTOS
+ ' 180-196 MOVIMIENTOS RECHAZADOS
+ ' 197-203 CANTIDAD DE MOVIMIENTOS RECH
+ ' 204-220 IMPORTE DE MOVIMIENTOS RECH
+ ' 221-227 CANTIDAD DE MOVIMIENTOS BAJA
+ ' 228-244 IMPORTE DE MOVIMIENTOS BAJA
+ ' 245-247 CODIGO-STATUS-REGISTRO
+ ' 248-250 CODIGO-STATUS-ARCHIVO
+
+ ta.Append("".PadLeft(120, SPACE))
+
+ sb.Append(ta.ToString())
+
+ '------------------- ESCRIBIR ARCHIVO -------------------------------
+ 'File.WriteAllText(RutaArchivo, sb.ToString(), Encoding.ASCII)
+
+
+ Dim NombreArchivo As String = $"pagos_{NowADS.ToString("ddMMyyyy")}_001.txt"
+ '"pagos_03062025_001.txt"
+
+ 'If InsertaEnDB Then
+
+ ' Dim ObjBancos As New ClsBancos
+ ' ObjBancos.IniciaTransacSQL()
+
+ ' Dim CveLayoutEnvio As Integer = ObjBancos.AddLayoutEnvios(NombreArchivo, NowADS(), CveCuenta, PorGrupos:=True)
+
+ ' If CveLayoutEnvio > 0 Then
+ ' For Each dr As DataRow In DTPendientes.Rows
+ ' If dr("CveProveedor").ToString <> "" Or dr("CvePersonal").ToString <> "" Then
+ ' If Not ObjBancos.AddLayoutEnviosDetalle(CveLayoutEnvio, dr("CveIE").ToString.ToEntero, dr("CveProveedor").ToString.ToEntero, dr("CvePersonal").ToString.ToEntero, 1, "Observaciones") Then
+ ' ErrorLayout = True
+ ' Exit For
+ ' End If
+ ' End If
+ ' Next
+ ' Else
+ ' ErrorLayout = True
+ ' End If
+
+ ' If ErrorLayout Then
+ ' ObjBancos.RollBack()
+ ' ObjBancos.Dispose()
+ ' Else
+ ' ObjBancos.Commit()
+ ' ObjBancos.Dispose()
+ ' End If
+
+ 'End If
+
+ Dim path As String = String.Format("{0}Layout\{1}", UsuarioActual.Empresa.Ruta, NombreArchivo)
+ Dim pathDirectorio As String = String.Format("{0}Layout\", UsuarioActual.Empresa.Ruta)
+
+ If File.Exists(path) Then
+ File.Delete(path)
+ End If
+
+ If Not Directory.Exists(pathDirectorio) Then
+ Directory.CreateDirectory(pathDirectorio)
+ End If
+
+ Dim Texto As String = sb.ToString
+
+ Dim fs As FileStream = File.Create(path)
+ Dim info As Byte() = New UTF8Encoding(True).GetBytes(Texto)
+ fs.Write(info, 0, info.Length)
+ fs.Close()
+
+
+ If ErrorLayout = False And totalPagos > 0 Then
+
+ Dim Mensaje As New StringBuilder
+
+ Mensaje.Append("Descarga Layout
")
+
+ 'If NombreArchivo.Length > 0 Then
+ ' NombreArchivoPago = NombreArchivoEnviado
+ 'End If
+
+ 'If NombreArchivoPago.Trim.Length > 0 Then
+ ' Mensaje.Append($"Pagos Descarga {NombreArchivoPago}
")
+ 'End If
+
+ If NombreArchivo.Length > 0 Then
+
+ DVDescargaPagos.Visible = True
+ DVDescargaCuentas1.Visible = False
+ 'DVDescargaCuentas2.Visible = False
+ 'DVDescargaCuentas3.Visible = False
+ DVDescargaReporte.Visible = True
+
+ DT_PagosReporte = DTPendientes.Copy
+
+ LnkDescarga.Text = NombreArchivo
+ RegistraScript("$('#ModalDescarga').modal({ backdrop: 'static', keyboard: false});")
+ UpModalDescarga.Update()
+
+ End If
+
+ CargaDatos()
+ Else
+ Alert($"Errores detectados
{SBErrores.ToString}", TipoMensaje.MsgAdvertencia)
+ End If
+
+
+ End Sub
+
+ '====================================================================
+ ' Limpia texto: A‑Z, 0‑9, «@» y «.» (UpperCase) – el resto se descarta
+ '====================================================================
+ Private Function LimpiarTextoScotia(ByVal valor As String) As String
+ Dim sb As New StringBuilder()
+ For Each ch As Char In If(valor, String.Empty).ToUpperInvariant()
+ If Char.IsLetterOrDigit(ch) OrElse ch = "@"c OrElse ch = "."c Then sb.Append(ch)
+ Next
+ Return sb.ToString()
+ End Function
+
+
+
+
+
+ ''====================================================================
+ '' GeneraPagoScotiaBank – Layout Pagos Scotiabank
+ ''====================================================================
+ '' ▸ Genera un archivo de pagos masivos para Scotiabank (Archivo de intercambio EE).
+ '' ▸ Registros y longitudes exactas:
+ '' • HA, HB, DA, TB, TA → 370 caracteres
+ '' • DM (correo) → 104 caracteres
+ '' ▸ Se permite partición por bloques (TamanoBloque), pero todo dentro de un
+ '' mismo método para claridad. Sólo se complementa con LimpiarTextoScotia().
+ ''====================================================================
+
+ 'Public Sub GeneraPagoScotiaBank(
+ ' ByVal DTPendientes As DataTable,
+ ' ByVal RutaArchivo As String,
+ ' Optional ByVal NumeroConvenio As String = "12345", _ ' 5 dígitos
+ ' Optional ByVal CuentaCargo As String = "11987654321", _ ' 11 dígitos
+ ' Optional ByVal TamanoBloque As Integer = 500 _ ' pagos por bloque
+ ')
+
+ ' '------------------- VALIDACIONES BÁSICAS ---------------------------
+ ' If DTPendientes Is Nothing OrElse DTPendientes.Rows.Count = 0 Then
+ ' Alert("No hay datos pendientes para generar el Layout de ScotiaBank.", TipoMensaje.MsgAdvertencia)
+ ' End If
+
+ ' '------------------- ConvenioPagoElectronico = "0000000" ' 7 dígitos
+ ' NumeroConvenio = DTPendientes.Rows(0)("ConvenioPagoElectronico").ToString
+ ' If NumeroConvenio.Trim.Length = 0 Then
+ ' Alert("El campo NumeroConvenio (ConvenioPagoElectronico) no está definido en los datos de la cuenta.", TipoMensaje.MsgAdvertencia)
+ ' Exit Sub
+ ' End If
+
+ ' If NumeroConvenio.Length <> 5 Then
+ ' Alert("El campo NumeroConvenio debe ser numérico de 5 dígitos.", TipoMensaje.MsgAdvertencia)
+ ' Exit Sub
+ ' End If
+
+
+ ' If CuentaCargo.Length <> 11 Then
+ ' Alert("El campo CuentaCargo debe ser numérico de 11 dígitos.", TipoMensaje.MsgAdvertencia)
+ ' Exit Sub
+ ' End If
+
+
+
+
+ ' '------------------- ACUMULADORES -----------------------------------
+ ' Dim sb As New StringBuilder()
+ ' Dim totalPagos As Integer = 0
+ ' Dim totalImporte As Decimal = 0D
+ ' Dim pagosBloque As Integer = 0
+ ' Dim importeBloque As Decimal = 0D
+ ' Dim numBloque As Integer = 0
+
+ ' '------------------- HEADER ARCHIVO (HA) ----------------------------
+ ' Dim ha As New StringBuilder(New String(" "c, 370))
+ ' ha.Insert(0, "EE") ' 1‑2 Tipo Archivo
+ ' ha.Insert(2, "HA") ' 3‑4 Tipo Registro
+ ' ha.Insert(4, NumeroConvenio.PadLeft(5, "0"c)) ' 5‑9 Nº Convenio
+ ' ha.Insert(9, "01") ' 10‑11 Secuencia fija "01"
+ ' Dim fechaHoy As String = Date.Now.ToString("yyyyMMdd")
+ ' ha.Insert(11, fechaHoy) ' 12‑19 Fecha generación
+ ' ha.Insert(19, "00000000") ' 20‑27 Fecha inicial (opcional)
+ ' ha.Insert(27, "00000000") ' 28‑35 Fecha final (opcional)
+ ' ha.Insert(35, "000") ' 36‑38 Código status "000"
+ ' ' 39‑370 FILLER (espacios) ya está
+ ' sb.AppendLine(ha.ToString())
+
+ ' '------------------- RECORRIDO DETALLES -----------------------------
+ ' Dim idx As Integer = 0
+ ' For Each dr As DataRow In DTPendientes.Rows
+
+ ' '--- ¿Inicia BLOQUE? (HB) ---------------------------------------
+ ' If idx Mod TamanoBloque = 0 Then
+ ' numBloque += 1
+ ' pagosBloque = 0
+ ' importeBloque = 0D
+
+ ' Dim hb As New StringBuilder(New String(" "c, 370))
+ ' hb.Insert(0, "EE") ' 1‑2
+ ' hb.Insert(2, "HB") ' 3‑4
+ ' hb.Insert(4, "00") ' 5‑6 Moneda cuenta cargo (00=MXN)
+ ' hb.Insert(6, "0000") ' 7‑10 Uso futuro = ceros
+ ' hb.Insert(10, CuentaCargo) ' 11‑21 Cuenta cargo (11)
+ ' hb.Insert(21, "0000000001") ' 22‑31 Referencia Empresa (ejemplo)
+ ' hb.Insert(31, "000") ' 32‑34 Status registro
+ ' ' 35‑370 FILLER espacios
+ ' sb.AppendLine(hb.ToString())
+ ' End If
+
+ ' '----------- DETALLE ALTA (DA) ----------------------------------
+ ' Dim importe As Decimal = 0D
+ ' If Not Decimal.TryParse(Convert.ToString(dr("Importe")), importe) Then _
+ ' Throw New ArgumentException($"Importe inválido en fila {idx + 1}")
+ ' If importe <= 0D Then _
+ ' Throw New ArgumentException($"Importe ≤ 0 en fila {idx + 1}")
+
+ ' Dim importeInt As String = CDec(Math.Round(importe * 100)).ToString().PadLeft(15, "0"c) ' 2 dec.
+
+ ' Dim fechaAplicacion As String = Date.Now.ToString("yyyyMMdd")
+ ' Dim cveBenef As String = LimpiarTextoScotia(Convert.ToString(dr("CveProveedor")), 20).PadRight(20)
+ ' Dim rfc As String = LimpiarTextoScotia(Convert.ToString(dr("RFC")), 13).PadRight(13)
+ ' Dim nombreBen As String = LimpiarTextoScotia(Convert.ToString(dr("RazonSocial")), 40).PadRight(40)
+ ' Dim referenciaPago As String = If(dr.Table.Columns.Contains("Referencia"),
+ ' LimpiarTextoScotia(Convert.ToString(dr("Referencia")), 16).PadLeft(16, "0"c),
+ ' New String("0"c, 16))
+ ' Dim clabe As String = Convert.ToString(dr("CLABEDestino"))
+ ' If String.IsNullOrWhiteSpace(clabe) Then clabe = Convert.ToString(dr("CLABE"))
+ ' clabe = clabe.PadLeft(18, "0"c)
+
+ ' Dim da As New StringBuilder(New String(" "c, 370))
+ ' da.Insert(0, "EE") ' 1‑2
+ ' da.Insert(2, "DA") ' 3‑4
+ ' da.Insert(4, "04") ' 5‑6 Tipo movimiento (04=SPEI)
+ ' da.Insert(6, "00") ' 7‑8 Moneda pago (00=MXN)
+ ' da.Insert(8, importeInt) ' 9‑23 Importe (15)
+ ' da.Insert(23, fechaAplicacion) ' 24‑31
+ ' da.Insert(31, "03") ' 32‑33 Servicio‑concepto (03)
+ ' da.Insert(33, cveBenef) ' 34‑53
+ ' da.Insert(53, rfc) ' 54‑66
+ ' da.Insert(66, nombreBen) ' 67‑106
+ ' da.Insert(106, referenciaPago) ' 107‑122
+ ' da.Insert(122, "00000") ' 123‑127 Plaza pago (ceros)
+ ' da.Insert(127, "00000") ' 128‑132 Sucursal pago (ceros)
+ ' da.Insert(132, New String("0"c, 34)) ' 133‑166 Uso futuro (ceros)
+ ' da.Insert(166, New String(" "c, 30)) ' 167‑196 Clave rastreo (espacios)
+ ' da.Insert(196, New String("0"c, 20)) ' 197‑216 Referencia Banxico (ceros)
+ ' da.Insert(216, "01") ' 217‑218 Tipo operación (01 default)
+ ' ' 219‑370 FILLER espacios
+ ' sb.AppendLine(da.ToString())
+
+ ' '----------- DETALLE MAIL (DM) 104 bytes -------------------------
+ ' Dim correo As String = If(dr.Table.Columns.Contains("Email"),
+ ' LimpiarTextoScotia(Convert.ToString(dr("Email")), 100), "")
+ ' Dim dm As New StringBuilder(New String(" "c, 104))
+ ' dm.Insert(0, "EE") ' 1‑2 Tipo archivo
+ ' dm.Insert(2, "DM") ' 3‑4 Tipo registro
+ ' dm.Insert(4, correo.PadRight(100)) ' 5‑104 Email + filler
+ ' sb.AppendLine(dm.ToString())
+
+ ' '----------- ACUMULADORES ---------------------------------------
+ ' totalPagos += 1
+ ' totalImporte += importe
+ ' pagosBloque += 1
+ ' importeBloque += importe
+
+ ' '----------- ¿CIERRA BLOQUE? (TB) -------------------------------
+ ' Dim bloqueCompleto As Boolean = (pagosBloque = TamanoBloque)
+ ' Dim ultimoRegistro As Boolean = (idx = DTPendientes.Rows.Count - 1)
+
+ ' If bloqueCompleto OrElse ultimoRegistro Then
+ ' Dim tb As New StringBuilder(New String(" "c, 370))
+ ' tb.Insert(0, "EE") ' 1‑2
+ ' tb.Insert(2, "TB") ' 3‑4
+ ' tb.Insert(4, pagosBloque.ToString().PadLeft(7, "0"c)) ' 5‑11 Cnt altas
+ ' tb.Insert(11, (importeBloque * 100).ToString().PadLeft(17, "0"c)) ' 12‑28 Importe altas
+ ' ' 29‑370 resto de contadores a cero / espacios
+ ' tb.Insert(28, New String("0"c, 342))
+ ' sb.AppendLine(tb.ToString())
+ ' End If
+
+ ' idx += 1
+ ' Next
+
+ ' '------------------- TRAILER ARCHIVO (TA) ---------------------------
+ ' Dim ta As New StringBuilder(New String(" "c, 370))
+ ' ta.Insert(0, "EE") ' 1‑2
+ ' ta.Insert(2, "TA") ' 3‑4
+ ' ta.Insert(4, totalPagos.ToString().PadLeft(7, "0"c)) ' 5‑11
+ ' ta.Insert(11, (totalImporte * 100).ToString().PadLeft(17, "0"c)) ' 12‑28
+ ' ta.Insert(28, New String("0"c, 342)) ' resto filler
+ ' sb.AppendLine(ta.ToString())
+
+ ' '------------------- ESCRIBIR ARCHIVO -------------------------------
+ ' File.WriteAllText(RutaArchivo, sb.ToString(), Encoding.ASCII)
+ 'End Sub
+
+
+ Protected Sub LnkDescarga_Click(sender As Object, e As EventArgs)
+
+ Dim FileName As String = NombreArchivo
+ Dim FilePath As String = $"{UsuarioActual.Empresa.Ruta}Layout\{NombreArchivo}"
+
+ 'If NombreArchivo.Length = 0 Then
+ If OpBancos = 3 Then
+ FileName = LnkDescarga.Text
+ FilePath = $"{UsuarioActual.Empresa.Ruta}Layout\{ LnkDescarga.Text}"
+ End If
+
+ 'End If
+
+ Response.Clear()
+ Response.ContentType = "application/octet-stream"
+ Response.AddHeader("Content-Disposition", "attachment; filename=" & FileName)
+ Response.TransmitFile(FilePath)
+ Response.End()
+
+ End Sub
+
+ Protected Sub LnkDescargaCuentas1_Click(sender As Object, e As EventArgs)
+
+ Dim FileName As String = NombreArchivo
+ Dim FilePath As String = $"{UsuarioActual.Empresa.Ruta}Layout\{NombreArchivo}"
+
+ If DdlCuenta.SelectedItem.Text.ToUpper.Contains("BAJIO") Or DdlCuenta.SelectedItem.Text.ToUpper.Contains("SCOTIA") Then
+ FileName = LnkDescargaCuentas1.Text
+ FilePath = $"{UsuarioActual.Empresa.Ruta}Layout\{LnkDescargaCuentas1.Text}"
+ End If
+
+ Response.Clear()
+ Response.ContentType = "application/octet-stream"
+ Response.AddHeader("Content-Disposition", "attachment; filename=" & FileName)
+ Response.TransmitFile(FilePath)
+ Response.End()
+
+ End Sub
+
+
+
+ Protected Sub LnkDescargaReporte_Click(sender As Object, e As EventArgs)
+
+ Dim Archivo As New System.IO.FileInfo(String.Format("{0}Formatos/LayoutAltaProveedor.rdlc", UsuarioActual.Empresa.Ruta))
+ Dim Imagen As New System.IO.FileInfo($"{UsuarioActual.Empresa.Ruta}/Logo.png")
+
+ DT_PagosReporte = DT_PagosReporte.FiltraParametros("EstatusPagoElectronicoGrupos = 'True' AND EstatusCtaDeposito > 0").Copy()
+
+ Dim params As New List(Of ReportParameter)
+
+ If Archivo.Exists Then
+ ImprimirPDF(String.Format("{0}Formatos\LayoutPagoProveedor.rdlc", UsuarioActual.Empresa.Ruta), DtPago, params, "LayoutPagoProveedor", RDSName:="DSPagoElectronicoV2")
+ Else
+
+
+ params.Add(New ReportParameter("LogoPath", If(Imagen.Exists, $"file://{Imagen.FullName}", "")))
+
+ params.Add(New ReportParameter("NombreEmpresa", UsuarioActual.Empresa.Empresa))
+ params.Add(New ReportParameter("Direccion", UsuarioActual.Empresa.Direccion))
+ params.Add(New ReportParameter("RFC", UsuarioActual.Empresa.RFC))
+ params.Add(New ReportParameter("FechaImpresion", NowADS().ToString("dd/MM/yyyy")))
+
+ params.Add(New ReportParameter("UsuarioImprimio", UsuarioActual.Nombre))
+ params.Add(New ReportParameter("Titulo", "Reporte Pago Proveedor Layout"))
+
+ ImprimirPDF("Empresas/Grales/Formatos/LayoutPagoProveedor.rdlc", DT_PagosReporte, params, "LayoutPagoProveedor", RDSName:="DSPagoElectronicoV2")
+ End If
+
+
+
+ End Sub
+ 'Protected Sub LnkDescargaCuentas2_Click(sender As Object, e As EventArgs)
+ ' Dim FileName As String = NombreArchivoInterbancario
+ ' Dim FilePath As String = $"{UsuarioActual.Empresa.Ruta}Layout\{NombreArchivoInterbancario}"
+ ' Response.Clear()
+ ' Response.ContentType = "application/octet-stream"
+ ' Response.AddHeader("Content-Disposition", "attachment; filename=" & FileName)
+ ' Response.TransmitFile(FilePath)
+ ' Response.End()
+ 'End Sub
+
+ 'Protected Sub LnkDescargaCuentas3_Click(sender As Object, e As EventArgs)
+
+ ' Dim FileName As String = NombreArchivoCIE
+ ' Dim FilePath As String = $"{UsuarioActual.Empresa.Ruta}Layout\{NombreArchivoCIE}"
+ ' Response.Clear()
+ ' Response.ContentType = "application/octet-stream"
+ ' Response.AddHeader("Content-Disposition", "attachment; filename=" & FileName)
+ ' Response.TransmitFile(FilePath)
+ ' Response.End()
+ 'End Sub
+
+#End Region
+
+
+#Region " TAB PRINCIPAL "
+
+ Protected Sub GvPendientes_RowDataBound(sender As Object, e As GridViewRowEventArgs)
+ If e.Row.RowType = DataControlRowType.DataRow Then
+
+ 'Colorea GV
+ If e.Row.DBCampo("RazonSocial").ToString = "" Then
+ e.Row.BackColor = Drawing.Color.WhiteSmoke
+ Else
+ If e.Row.DBCampo("EstatusPagoElectronico").ToString <> "True" Then
+ e.Row.BackColor = Drawing.Color.LightSalmon
+ e.Row.ToolTip = "Cuenta Deposito aun sin dar de Alta."
+ End If
+
+ If e.Row.DBCampo("CveProveedor").ToString.ToEntero > 0 Then
+ e.Row.FCHyperLink("HLProveedor").NavigateUrl = String.Format("/Compras/Proveedores.aspx?CveProveedor={0}", e.Row.DBCampo("CveProveedor"))
+ Else
+ e.Row.FCHyperLink("HLProveedor").NavigateUrl = String.Format("/RH/Personal.aspx?CvePersonal={0}", e.Row.DBCampo("CvePersonal"))
+ End If
+
+ End If
+
+ If Not e.Row.DBCampo("CveCuentaDeposito").ToString.ToEntero > 0 Then
+ e.Row.Cells(0).BackColor = Drawing.Color.Red
+ e.Row.ToolTip = "Sin Cuenta Deposito asignada"
+ End If
+
+ If e.Row.DBCampo("EstatusCtaDeposito").ToString = "False" Then
+ e.Row.Cells(0).BackColor = Drawing.Color.Red
+ e.Row.ToolTip = "Cuenta Deposito INACTIVA"
+ End If
+
+ e.Row.FCHyperLink("HLImporte").NavigateUrl = String.Format("IE.aspx?CveIE={0}", e.Row.DBCampo("CveIE"))
+
+ End If
+ End Sub
+ Protected Sub GvEnviadas_RowDataBound(sender As Object, e As GridViewRowEventArgs)
+ If e.Row.RowType = DataControlRowType.DataRow Then
+ 'Colorea GV
+ If e.Row.DBCampo("CveIE").ToString = "" Then
+ e.Row.BackColor = Drawing.Color.LightGray
+
+
+ 'Si la fecha de generacion del archivo es diferente de hoy activamos el boton REGENERAR
+ 'If e.Row.DBCampo("Fecha").ToDate.ToShortDateString <> NowADS().ToShortDateString Then
+ ' e.Row.FCLinkButton("LBRegenerar").Visible = True
+ 'End If
+ If DTEnviadas.MAX("FueConciliado", String.Format("CveLayoutEnvio = {0}", e.Row.DBCampo("CveLayoutEnvio"))).ToEntero > 0 Then
+ e.Row.ToolTip = "El movimiento no se puede regenerar ya que alguno de sus movimientos ya fue conciliado"
+ Else
+ e.Row.FCLinkButton("LBRegenerar").Visible = True
+ End If
+
+ Else
+
+ If e.Row.DBCampo("FueConciliado") = "1" Then
+ e.Row.ForeColor = Drawing.Color.Red
+ e.Row.ToolTip = "Este movimiento ya fue conciliado."
+ End If
+
+ If e.Row.DBCampo("CveProveedor").ToString.ToEntero > 0 Then
+ e.Row.FCHyperLink("HLProveedor").NavigateUrl = String.Format("/Compras/Proveedores.aspx?CveProveedor={0}", e.Row.DBCampo("CveProveedor"))
+ Else
+ e.Row.FCHyperLink("HLProveedor").NavigateUrl = String.Format("/RH/Personal.aspx?CvePersonal={0}", e.Row.DBCampo("CvePersonal"))
+ End If
+ e.Row.FCHyperLink("HLDetalle").NavigateUrl = String.Format("IE.aspx?CveIE={0}", e.Row.DBCampo("CveIE"))
+ End If
+ End If
+ End Sub
+ Protected Sub LBRegenerar_Click(sender As Object, e As EventArgs)
+ Dim CveBLE As Integer = CType(sender, LinkButton).CommandArgument.ToEntero
+ Dim DtRegenerar As New DataTable
+
+ Dim ObjBancos As New ClsBancos
+ If ObjBancos.GetLayoutPagos(CveCuenta, CveBLE, "-1") Then
+ DtRegenerar = ObjBancos.DtResultados
+ Else
+ DtRegenerar = Nothing
+ End If
+ ObjBancos.Dispose()
+
+ If DtRegenerar IsNot Nothing Then
+ GeneraPago(DtRegenerar, CveBLE)
+ Else
+ Alert("Ocurrió un error al obtener los datos para generar el archivo. Por favor vuelva a intentar.", TipoMensaje.MsgError)
+ End If
+ End Sub
+
+#End Region
+
+
+
+ 'RECARGA DATOS
+#Region " RECARGA DATOS "
+
+ Private Sub RecargaDatos()
+ CargaDatos()
+ TipoMasiva = 1
+ DdlTipoCargaMasiva.SelectedValueExist("1")
+ CargaProveedores()
+ End Sub
+
+#End Region
+
+
+
+ 'ARMA Y GENERA TXT'S
+#Region "ALTA PROVEEDORES"
+ Protected Sub BtnAltas_Click(sender As Object, e As EventArgs)
+
+ If Not DdlCuenta.SelectedValue.ToEntero > 0 Then
+ Alert("Primero debe seleccionar una Cuenta", TipoMensaje.MsgAdvertencia)
+ Exit Sub
+ End If
+
+ If OpBancos = 1 Then
+ AltaProveedores(1)
+ ElseIf OpBancos = 2 Then
+ 'AltaProveedoresBajio()
+ ElseIf OpBancos = 3 Then
+ Dim fechaHoy As String = DateTime.Today.ToString("MM/dd/yyyy")
+ AltaProveedoresScotia(DTPendientes.FiltraParametros($" EstatusPagoElectronicoScotia = False OR FechaEliminacion < #{fechaHoy}#"))
+ End If
+
+ End Sub
+ Private Sub AltaProveedores(TipoAlta As Integer)
+ Dim DtTemp As DataTable = Nothing
+ CreaDtAlta()
+
+
+ 'TIPO ALTA
+ '1 = Alta comun
+ '2 = Alta masiva
+ If TipoAlta = 1 Then
+ If DTPendientes Is Nothing OrElse DTPendientes.FiltraParametros("EstatusCtaDeposito = 'True'").Rows.Count <= 0 Then
+ Alert("No hay registros para generar", TipoMensaje.MsgAdvertencia)
+ Exit Sub
+ Else
+ DtTemp = DTPendientes.FiltraParametros("EstatusCtaDeposito = 'True'").Copy
+ End If
+ ElseIf TipoAlta = 2 Then
+ If DTProveedores Is Nothing OrElse DTProveedores.Rows.Count <= 0 Then
+ Alert("No hay registros para generar", TipoMensaje.MsgAdvertencia)
+ Exit Sub
+ Else
+ DtTemp = DTProveedores.Copy
+ End If
+ ElseIf TipoAlta = 3 Then
+ If DTFyE Is Nothing OrElse DTFyE.Rows.Count <= 0 Then
+ Alert("No hay registros para generar", TipoMensaje.MsgAdvertencia)
+ Exit Sub
+ Else
+ DtTemp = DTProveedores.Copy
+ End If
+ End If
+
+ 'REINICIA PROPIEDAS
+ HeaderTexto = ""
+ DetalleTexto = ""
+ TrailerTexto = ""
+ TotalAcumulado = 0
+
+ ''VALIDA CUENTAS DEPOSITOS
+ Dim ErrorCuenta As Boolean = False
+ Dim ProveedoresError As StringBuilder = New StringBuilder
+ ProveedoresError.AppendFormat("| Proveedor | Cuenta | Error |
")
+ Dim TotalDetalles As Integer = 0
+ Dim EsBancomer As Boolean = False
+ For Each gvr As DataRow In DtTemp.Rows
+ If gvr("CveCuentaDeposito").ToString <> "" AndAlso gvr("EstatusPagoElectronico").ToString <> "True" AndAlso gvr("AltaCuenta").ToString = "1" Then
+ DTPendienteActual = DtTemp.FiltraParametros(String.Format("CveCuentaDeposito = {0}", gvr("CveCuentaDeposito").ToString))
+ ErrorCuenta = False
+ EsBancomer = False
+
+ If DTPendienteActual(0)("BancoNombre").ToString.ToUpper.Contains("BBVA") Or DTPendienteActual(0)("BancoNombre").ToString.ToUpper.Contains("BANCOMER") Or (DTPendienteActual(0)("CLABE").ToString.Length = 18 AndAlso DTPendienteActual(0)("CLABE").ToString.Substring(0, 3) = "012") Then
+ EsBancomer = True
+ End If
+
+ ''COMENTADO PARA PERMITIR ENTRADA DE UNA CUENTA A PROVEEDOR, 22 DE SEPTIEMBRE, ISRAEL PIÑA
+ 'If Not ErrorCuenta Then
+ ' If EsBancomer AndAlso (DTPendienteActual(0)("CLABE").ToString.Length = 18 AndAlso Not DTPendienteActual(0)("CLABE").ToString.Substring(0, 3) = "012") Then
+ ' ProveedoresError.AppendFormat("| {0} | {1} | CLABE NO PERTENECE A BANCOMER |
", DTPendienteActual(0)("RazonSocial").ToString, DTPendienteActual(0)("BancoNombre").ToString)
+ ' ErrorCuenta = True
+ ' End If
+ 'End If
+
+ ''CLABE SIEMPRE OBLIGATORIA CUANDO NO ES BANCOMER CON CIE
+ 'If (DTPendienteActual(0)("CLABE").ToString.Trim.Length <> 18 And Not EsBancomer) Or (EsBancomer And TxtConvenioCIE.Text.Trim.Length <> 6 And DTPendienteActual(0)("CLABE").ToString.Trim.Length <> 18) Then
+ ' Alert("La CLABE es obligatoria y debe tener una longitud de 18 dígitos. Por favor rectifique y vuelva a intentar.", TipoMensaje.MsgAdvertencia)
+ ' Exit Sub
+ 'End If
+
+ 'CLABE SIEMPRE OBLIGATORIA SI NO ES BANCOMER
+ If Not ErrorCuenta Then
+ If DTPendienteActual(0)("CLABE").ToString.Trim.Length <> 18 And DTPendienteActual(0)("CLABE").ToString.Trim.Length = 0 And Not EsBancomer Then
+ ProveedoresError.AppendFormat("| {0} | {1} | CLABE ES OBLIGATORIA |
", DTPendienteActual(0)("RazonSocial").ToString, DTPendienteActual(0)("BancoNombre").ToString)
+ ErrorCuenta = True
+ End If
+ End If
+
+ 'SI CUENTA TIENE ALGO Y BANCO BANCOMER DEBE TENER UNA LOGITUD EXACTA DE 10
+ If Not ErrorCuenta Then
+ If DTPendienteActual(0)("Cuenta").ToString.Trim.Length <> 0 AndAlso DTPendienteActual(0)("Cuenta").ToString.Trim.Length <> 10 AndAlso EsBancomer Then
+ ProveedoresError.AppendFormat("| {0} | {1} | NUMERO DE CUENTA CON FORMATO INCORRECTO |
", DTPendienteActual(0)("RazonSocial").ToString, DTPendienteActual(0)("BancoNombre").ToString)
+ ErrorCuenta = True
+ End If
+ End If
+
+ 'SI CLABE TIENE ALGO DEBE TENER UNA LOGITUD EXACTA DE 18
+ If Not ErrorCuenta Then
+ If DTPendienteActual(0)("CLABE").ToString.Trim.Length <> 0 AndAlso DTPendienteActual(0)("CLABE").ToString.Trim.Length <> 18 Then
+ ProveedoresError.AppendFormat("| {0} | {1} | CLABE CON FORMATO INCORRECTO |
", DTPendienteActual(0)("RazonSocial").ToString, DTPendienteActual(0)("BancoNombre").ToString)
+ ErrorCuenta = True
+ End If
+ End If
+
+ 'SI CIE TIENE ALGO DEBE TENER REFERENCIA OBLIGATORIA
+ If Not ErrorCuenta Then
+ If DTPendienteActual(0)("CIE").ToString.Trim.Length <> 0 And DTPendienteActual(0)("Referencia").ToString.Trim.Length < 3 Then
+ ProveedoresError.AppendFormat("| {0} | {1} | CIE CON FORMATO INCORRECTO |
", DTPendienteActual(0)("RazonSocial").ToString, DTPendienteActual(0)("BancoNombre").ToString)
+ ErrorCuenta = True
+ End If
+ End If
+
+ 'CUANDO SEA "BBVA" O "BANCOMER" DEBE TENER "CIE" O "CUENTA"
+ If Not ErrorCuenta Then
+ If EsBancomer AndAlso Not (DTPendienteActual(0)("Cuenta").ToString.Trim.Length = 10 Or DTPendienteActual(0)("CIE").ToString.Trim.Length <> 0) Then
+ ProveedoresError.AppendFormat("| {0} | {1} | CUENTA BANCOMER SIN CUENTA O CIE |
", DTPendienteActual(0)("RazonSocial").ToString, DTPendienteActual(0)("BancoNombre").ToString)
+ ErrorCuenta = True
+ End If
+ End If
+
+
+ 'DTPendienteActual(0)("").ToString
+
+ 'VALDIACION ANTIGUA
+ 'If Not (DTPendienteActual(0)("BancoNombre").ToString.ToUpper.Contains("BBVA") Or DTPendienteActual(0)("BancoNombre").ToString.ToUpper.Contains("BANCOMER")) Then
+ ' If Not DTPendienteActual(0)("CLABE").ToString.Length = 18 Then
+ ' ProveedoresError.AppendFormat("Proveedor: {0}", DTPendienteActual(0)("RazonSocial").ToString)
+ ' ErrorCuenta = True
+ ' End If
+ 'End If
+
+ If Not ErrorCuenta Then
+ If TotalDetalles > 0 Then
+ DetalleTexto &= vbCrLf
+ End If
+ CrearDetalle()
+ TotalDetalles += 1
+ End If
+
+ End If
+ Next
+ ProveedoresError.AppendFormat("
")
+
+
+ If TotalDetalles > 0 Then
+ FormarTexto(TotalDetalles)
+ CreaArchivo(2)
+
+ Dim Descargas As New StringBuilder()
+ Descargas.AppendFormat("TXT", NombreArchivo)
+ 'Descargas.AppendFormat("Reporte", NombreArchivo)
+ Descargas.AppendFormat("Descargar Reporte", NombreArchivo)
+
+
+ Dim TextoErrorProveedores As String = ""
+ If ProveedoresError.Length > 160 Then TextoErrorProveedores = String.Format("
Proveedores con Error:
------------------------------------------------------------------
{0}
", ProveedoresError.ToString)
+
+ Alert(String.Format("
El Layout fue creado satisfactoriamente.{1}
Descargas:", Descargas, TextoErrorProveedores), TipoMensaje.MsgInformacion)
+
+ 'NombreArchivo = "LayoutAltaProveedores"
+ 'DescargarArchivo()
+ Else
+ Alert("No hay proveedores que dar de alta", TipoMensaje.MsgInformacion)
+ End If
+
+ End Sub
+ Protected Sub CrearDetalle()
+ Dim Resultado As Boolean = True
+ Dim CuentaDeposito As String = ""
+ Dim TipoCuentaDeposito As String = ""
+ Dim TipoCuenta As String = ""
+
+ ''''' LLENADO DE DETALLE
+ 'Campos #1-4 del Detalle
+ DetalleTexto &= String.Format("DA{0}N ", DTPendienteActual(0)("CveCuentaDeposito").ToString.ToUpper.PadLeft(30, PadCeros))
+
+ 'Banco BBVA
+ If DTPendienteActual(0)("BancoNombre").ToString.ToUpper.Contains("BBVA") Or DTPendienteActual(0)("BancoNombre").ToString.ToUpper.Contains("BANCOMER") Then
+ 'Llenamos datos de BBVA
+ 'Campo #5-7 del detalle
+
+ 'Busca que cuenta sera la asignada para el proveedor
+ If DTPendienteActual(0)("CIE").ToString <> "" Then
+ CuentaDeposito = String.Format("02{0}", DTPendienteActual(0)("CIE").ToString.PadLeft(8, PadCeros))
+ TipoCuenta = "50"
+ TipoCuentaDeposito = "CIE"
+ ElseIf DTPendienteActual(0)("Cuenta").ToString.Length = 10 Then
+ CuentaDeposito = DTPendienteActual(0)("Cuenta").ToString
+ TipoCuenta = "99"
+ TipoCuentaDeposito = "Cuenta"
+ ElseIf DTPendienteActual(0)("CLABE").ToString.Length = 18 Then
+ CuentaDeposito = DTPendienteActual(0)("CLABE").ToString
+ TipoCuenta = "40"
+ TipoCuentaDeposito = "CLABE"
+ End If
+
+
+ DetalleTexto &= String.Format("{0}{1}{2}", DTPendienteActual(0)("Abreviatura").ToString, TipoCuenta, CuentaDeposito.PadLeft(35, PadCeros))
+
+ 'Llenamos en blanco datos de otros bancos
+ 'Campos 8-17 del detalle --- 64 de otros bancos y 45 para FILLER --- Fecha de Alta
+ DetalleTexto &= String.Format("{0}{1}", Vacio.PadLeft(109), NowADS().ToString("yyyy-MM-dd"))
+
+
+ 'Otros Bancos NACIONAL!!
+ Else
+
+ CuentaDeposito = DTPendienteActual(0)("CLABE").ToString
+ TipoCuentaDeposito = "CLABE"
+
+ 'Llenamos en blanco datos de BBVA
+ DetalleTexto &= Vacio.PadRight(40)
+
+ 'Llenamos datos de otros bancos
+ 'Campos 8- 17 del detalle --- 44 de otros bancos --- 20 de internacional --- 45 Filler -- Fecha de Alta
+ DetalleTexto &= String.Format("{0}40{1}{2}{3}{4}{5}", DTPendienteActual(0)("Abreviatura").ToString, DTPendienteActual(0)("CLABE").ToString.PadLeft(35, PadCeros), DTPendienteActual(0)("CLABE").ToString.Substring(0, 3).PadLeft(4, PadCeros), Vacio.PadRight(20), Vacio.PadRight(45), NowADS().ToString("yyyy-MM-dd"))
+ End If
+
+ 'Llenamos datos de Tipo de Persona - Fisica o Moral
+ TipoPersona()
+
+ 'Campos 27-32 --- Fillers --- datos de otros bancos (internacional)
+ DetalleTexto &= Vacio.PadLeft(153)
+
+ 'Campos 33-36 --- Datos de confirmacion
+ DetalleTexto &= String.Format("{0}02{1}", Vacio.PadRight(40), CorreoNotificacionesEmpresa.ToUpper.PadRight(50))
+
+ 'If DTPendienteActual(0)("ContactoMail").ToString.Length > 0 Then
+ ' 'DetalleTexto &= String.Format("{0}02{1}", Vacio.PadRight(40), DTPendienteActual(0)("ContactoMail").ToString.ToUpper.PadRight(50))
+ 'ElseIf DTPendienteActual(0)("ContactoMail").ToString.Length <= 0 Then
+ ' DetalleTexto &= String.Format("{0}00{1}", Vacio.PadRight(40), Vacio.PadRight(50))
+ 'End If
+
+ 'Campos 37-39 -- FILLER
+ DetalleTexto &= String.Format("00{0}", Vacio.PadRight(38))
+
+
+ ''LLENA DT PARA REPORTE
+ Dim Row As DataRow = DtAlta.NewRow()
+ Row("Proveedor") = DTPendienteActual(0)("RazonSocial").ToString
+ Row("Banco") = DTPendienteActual(0)("BancoNombre").ToString
+ Row("TipoCuenta") = TipoCuentaDeposito
+ Row("Cuenta") = String.Format("{0}", CuentaDeposito)
+ DtAlta.Rows.Add(Row)
+ End Sub
+
+ Protected Sub TipoPersona()
+ 'Persona Moral
+ If DTPendienteActual(0)("RFC").ToString.Length = 12 Then
+ Dim fecha As String = DTPendienteActual(0)("FechaIng").ToString
+ Dim NombreProveedor As String = DTPendienteActual(0)("RazonSocial").ToString.Replace("‚"c, Vacio).Replace("‚"c, Vacio).ToUpper.PadRight(50)
+ NombreProveedor = If(NombreProveedor.Length > 50, NombreProveedor.Substring(0, 50), NombreProveedor)
+
+ 'Campo 18-20 del detalle
+ DetalleTexto &= String.Format("M{0}{1}-{2}-{3}", NombreProveedor, fecha.Substring(6, 4), fecha.Substring(3, 2), fecha.Substring(0, 2))
+ 'Campo 21-26 del detalle --- 10 FILLER - 70 de TipoPersona FISICA - 14 de RFC
+ DetalleTexto &= String.Format("{0}{1}", Vacio.PadLeft(80), DTPendienteActual(0)("RFC").ToString.ToUpper.PadRight(14))
+
+ 'Persona Fisica
+ ElseIf DTPendienteActual(0)("RFC").ToString.Length = 13 Then
+
+
+ If DTPendienteActual(0)("Tipo").ToString = "FyE" Then
+
+ 'Llenamos datos de Tipo de Persona - Fisica nombres Primer apellido Segundo apellido
+ DetalleTexto &= String.Format("F{0}{1}{2}{3}", Vacio.PadRight(70), DTPendienteActual(0)("Nombres").ToString.PadRight(20).Substring(0, 20), DTPendienteActual(0)("APaterno").ToString.PadRight(20).Substring(0, 20), DTPendienteActual(0)("AMaterno").ToString.PadRight(20).Substring(0, 20))
+
+ 'Campo 25-26 del detalle -- Fecha Nacimiento -- RFC
+ DetalleTexto &= String.Format("{0}{1}", DTPendienteActual(0)("FechaNacimiento").ToString.ToDate.ToString("yyyy-MM-dd"), DTPendienteActual(0)("RFC").ToString.ToUpper.PadRight(14))
+
+ Else
+
+ 'Obtener nombre
+ Dim Nombre() As String = Split(DTPendienteActual(0)("RazonSocial").ToString.Replace(",", ""))
+
+ 'Campo 18-24 del detalle --- 60 Tipo Persona Moral --- 10 Filler -- Datos Persona Fisica
+ If Nombre.Length = 2 Then
+ DetalleTexto &= String.Format("F{0}{1}{2}{3}", Vacio.PadRight(70), Nombre(0).PadRight(20).Substring(0, 20), Nombre(1).PadRight(20).Substring(0, 20), Vacio.PadRight(20).Substring(0, 20))
+ ElseIf Nombre.Length = 3 Then
+ DetalleTexto &= String.Format("F{0}{1}{2}{3}", Vacio.PadRight(70), Nombre(0).PadRight(20), Nombre(1).PadRight(20).Substring(0, 20), Nombre(2).PadRight(20).Substring(0, 20))
+ ElseIf Nombre.Length = 4 Then
+ DetalleTexto &= String.Format("F{0}{1}{2}{3}", Vacio.PadRight(70), (Nombre(0) & " " & Nombre(1)).PadRight(20).Substring(0, 20), Nombre(2).PadRight(20).Substring(0, 20), Nombre(3).PadRight(20).Substring(0, 20))
+ ElseIf Nombre.Length > 4 Then
+
+ Dim NombreComplejo As New List(Of String)
+
+ 'ignoramos cualquier palabra del nombre que tenga un length igual o menor a 2
+ For index As Integer = 0 To Nombre.Length - 1
+ If Nombre(index).Length > 2 Then
+ NombreComplejo.Add(Nombre(index))
+ End If
+ Next
+
+ If NombreComplejo.Count = 2 Then
+ DetalleTexto &= String.Format("F{0}{1}{2}{3}", Vacio.PadRight(70), NombreComplejo.Item(0).PadRight(20).Substring(0, 20), NombreComplejo.Item(1).PadRight(20).Substring(0, 20), Vacio.PadRight(20).Substring(0, 20))
+ ElseIf NombreComplejo.Count = 3 Then
+ DetalleTexto &= String.Format("F{0}{1}{2}{3}", Vacio.PadRight(70), NombreComplejo.Item(0).PadRight(20), NombreComplejo.Item(1).PadRight(20).Substring(0, 20), NombreComplejo.Item(2).PadRight(20).Substring(0, 20))
+ ElseIf NombreComplejo.Count = 4 Then
+ DetalleTexto &= String.Format("F{0}{1}{2}{3}", Vacio.PadRight(70), (NombreComplejo.Item(0) & " " & NombreComplejo.Item(1)).PadRight(20).Substring(0, 20), NombreComplejo.Item(2).PadRight(20).Substring(0, 20), NombreComplejo.Item(3).PadRight(20).Substring(0, 20))
+ ElseIf NombreComplejo.Count > 4 Then
+ Dim Nombres As String = ""
+
+ 'todas las palabras menos las 2 ultimas forman parte del nombre
+ For index As Integer = 0 To NombreComplejo.Count - 3
+ If Nombres <> "" Then Nombres += " "
+ Nombres += NombreComplejo.Item(index)
+ Next
+ DetalleTexto &= String.Format("F{0}{1}{2}{3}", Vacio.PadRight(70), Nombres.PadRight(20).Substring(0, 20), NombreComplejo.Item(NombreComplejo.Count - 2).PadRight(20).Substring(0, 20), NombreComplejo.Item(NombreComplejo.Count - 1).PadRight(20).Substring(0, 20))
+
+ End If
+
+ End If
+
+ 'Campo 25-26 del detalle -- Fecha Nacimiento -- RFC
+ Dim fecha As String = DTPendienteActual(0)("RFC").ToString.Substring(4, 6)
+ DetalleTexto &= String.Format("19{0}-{1}-{2}{3}", fecha.Substring(0, 2), fecha.Substring(2, 2), fecha.Substring(4, 2), DTPendienteActual(0)("RFC").ToString.ToUpper.PadRight(14))
+
+ End If
+
+
+ Else
+ 'Alert("Hola")
+ End If
+ End Sub
+ Protected Sub FormarTexto(Registros As Integer)
+ '''''' LLENADO HEADER
+ Dim convenio As String = DTPendienteActual(0)("ConvenioPagoElectronico").ToString
+ 'Campos #1-4 del Header
HeaderTexto = String.Format("H{0}{1}GRUPO01 ", convenio.PadLeft(9, PadCeros), NowADS().ToString("yyyy-MM-dd"))
'Campo #5 del Header
@@ -807,1172 +1865,1641 @@ Partial Class Bancos_PagoElectronico
IdentificadoUsuario = If(IdentificadoUsuario.Length > 12, IdentificadoUsuario.Substring(0, 12), IdentificadoUsuario)
' Dim Identificado As String = String.Format("{0}{1}", UsuarioActual.Usuario, NowADS().ToString("yyyyMMdd")))
- HeaderTexto &= String.Format("{0}{1}", IdentificadoUsuario, NowADS().ToString("yyyyMMdd")).PadRight(20)
- 'Campos #6-8 del Header
- HeaderTexto &= String.Format("00").PadRight(586)
- Dim HeaderLength As Integer = HeaderTexto.Length
-
- ''''' LLENADO DE TRAILER
- TrailerTexto = String.Format("T{0}{1}{2}", Registros.ToString.PadLeft(10, PadCeros), Vacio.PadRight(50, PadCeros), Vacio.PadRight(575))
-
- ''''' ARMADO DEL TEXTO COMPLETO
- TextoCompleto = String.Format("{1}{0}{2}{0}{3}{0}", vbCrLf, HeaderTexto, DetalleTexto, TrailerTexto)
- 'TxtAltas.Text = TextoCompleto
- End Sub
-
-#End Region
-
-#Region "PAGO PROVEEDORES"
- Protected Sub BtnPagos_Click(sender As Object, e As EventArgs)
-
- If Not DdlCuenta.SelectedValue.ToEntero > 0 Then
- Alert("Primero debe seleccionar una Cuenta", TipoMensaje.MsgAdvertencia)
- Exit Sub
- End If
-
- If DTPendientes.FiltraParametros("EstatusPagoElectronico = 'True' AND EstatusCtaDeposito = 'True'") IsNot Nothing Then
- GeneraPago(DTPendientes.FiltraParametros("EstatusPagoElectronico > 0 AND EstatusCtaDeposito > 0"), -1)
- Else
- Alert("No hay registros para generar", TipoMensaje.MsgAdvertencia)
- End If
- End Sub
- Private Sub GeneraPago(DTTemp As DataTable, CveBLE As Integer)
- If DTTemp.Rows.Count <= 0 Then
- Alert("No hay registros para generar", TipoMensaje.MsgAdvertencia)
- Exit Sub
- End If
-
- 'For Each gvr As DataRow In DTTemp.Rows
- ' If gvr("EstatusPagoElectronico").ToString.ToEntero <= 0 Then
- ' Alert("Los proveedores tienen que estar dados de alta. Primero de alta a los proveedores")
- ' Exit Sub
- ' End If
- 'Next
-
- 'Comprobamos la cuenta deposito y moneda de las cuentas deposito
- For Each dr As DataRow In DTTemp.Rows
- If dr("BancoNombre").ToString = "" Then
- Alert(String.Format("El Pago '{0}' no tiene Cuenta Deposito Asociada.", dr("Observaciones")), TipoMensaje.MsgError)
- Exit Sub
- End If
-
- If dr("MonedaCtaDeposito").ToString = "" Or dr("MonedaCtaDeposito").ToString.ToEntero <= 0 Then
- Alert(String.Format("La cuenta deposito '{0}' del proveedor '{1}' no tiene Moneda especificada.", dr("CuentaDeposito"), dr("RazonSocial")), TipoMensaje.MsgError)
- Exit Sub
- End If
- Next
-
- 'Excluimos los registros que no tengan cuenta deposito dada de alta
- 'DTTemp = DTTemp.FiltraParametros("EstatusPagoElectronico = 0")
-
- HeaderTexto = ""
- DetalleTexto = ""
- TrailerTexto = ""
- TotalAcumulado = 0
-
- 'Insertar en LayoutEnvios
- Dim ObjBancos As New ClsBancos
- ObjBancos.IniciaTransacSQL()
- Dim ErrorLayout As Boolean = False
-
- Dim TotalDetalles As Integer = 0
-
- 'CREA CARPETA SI NO EXISTE
- Dim path As String = Server.MapPath(String.Format("~/Empresas/{0}/Layout/", UsuarioActual.CveEmpresa))
- Dim exists As Boolean = System.IO.Directory.Exists(path)
- If Not exists Then
- System.IO.Directory.CreateDirectory(path)
- End If
-
- Dim CveIEs As String = ""
- CreaDtPago()
-
- For Each gvr As DataRow In DTTemp.Rows
- If gvr("CveCuentaDeposito").ToString <> "" Then
- DTPendienteActual = DTTemp.FiltraParametros(String.Format("CveIE = {0}", gvr("CveIE").ToString))
-
- 'ACTUALIZA FECHADOCUMENTO DEL IE
- 'If CveBLE > 0 Then
- ' ObjBancos.UpdateBancos_IE(NowADS(), NowADS(), DTPendienteActual(0)("CveIE").ToString.ToEntero)
- 'End If
-
- If TotalDetalles > 0 Then
- DetalleTexto &= vbCrLf
- End If
- CrearDetallePagos()
- TotalDetalles += 1
- End If
- Next
-
- FormarTextoPagos(TotalDetalles, TotalAcumulado.ToString.FormatoNumero.Replace(",", "").Replace(".", ""))
- CreaArchivo(1)
-
- If CveBLE > 0 Then
- 'ACTUALIZAMOS EL ENVIO SI ES REGENERACION
- If Not ObjBancos.UpdateLayoutEnvios(CveBLE, NowADS()) Then
- ErrorLayout = True
- End If
-
- 'GUARDAMOS EL ENVIO SI NO ES REGENERACION
- Else
- Dim CveLayoutEnvio As Integer = ObjBancos.AddLayoutEnvios(NombreArchivo, NowADS(), CveCuenta)
-
- If CveLayoutEnvio > 0 Then
- For Each dr As DataRow In DTTemp.Rows
- If dr("CveProveedor").ToString <> "" Or dr("CvePersonal").ToString <> "" Then
- If Not ObjBancos.AddLayoutEnviosDetalle(CveLayoutEnvio, dr("CveIE").ToString.ToEntero, dr("CveProveedor").ToString.ToEntero, dr("CvePersonal").ToString.ToEntero, 1, "Observaciones") Then
- ErrorLayout = True
- End If
- End If
- Next
- Else
- ErrorLayout = True
- End If
- End If
-
-
-
- If Not ErrorLayout Then
- ObjBancos.Commit()
- ObjBancos.Dispose()
-
-
- Dim Des As String = String.Format("{0}Layout\{1}", UsuarioActual.Empresa.Ruta, NombreArchivo)
- Dim Descargas As New StringBuilder()
- Descargas.AppendFormat("TXT", NombreArchivo)
- ' Descargas.AppendFormat("Reporte", NombreArchivo)
- Descargas.AppendFormat("Descargar Reporte", NombreArchivo)
-
- Alert(String.Format("
El Layout fue creado satisfactoriamente.
Descargas:", Descargas), TipoMensaje.MsgInformacion)
- 'Alert("El Layout fue creado satisfactoriamente")
- Else
- ObjBancos.RollBack()
- ObjBancos.Dispose()
- Alert("Ocurrio un problema al registrar la creacion del Layout. Por favor vuelva a intentar.", TipoMensaje.MsgError)
- End If
-
- End Sub
- Protected Sub CrearDetallePagos()
- 'Dim Resultado = True
- Dim Importe As String = DTPendienteActual(0)("Abonado").ToString ' importe
- Dim Divisa As String = DTPendienteActual(0)("Abreviatura").ToString.ToUpper
- 'Dim Factura As String = "FAC-123456".Replace("-", " ")
- Dim Referencia As String = ""
-
- Dim Observaciones As String = DTPendienteActual(0)("Observaciones").ToString.Replace(":", "").Replace("-", " ").Replace(",", "").Replace(vbCrLf, " ").ToUpper
-
- ''PARA DETECTAR SI ES CIE
- Dim CuentaDeposito As String
- Dim CodigoOperacion As String = "2"
-
- 'Busca que cuenta sera la asignada para el proveedor
- If DTPendienteActual(0)("CIE").ToString.Length >= 4 Then
- CuentaDeposito = String.Format("02{0}", DTPendienteActual(0)("CIE").ToString.PadLeft(8, PadCeros))
- CodigoOperacion = "3"
- Referencia = If(DTPendienteActual(0)("Referencia").ToString = "", "0", DTPendienteActual(0)("Referencia").ToString) 'String.Format("CVEIE{0}", DTPendienteActual(0)("CveIE").ToString).ToUpper 'cveIE
- Else
- Referencia = Observaciones.Replace(" ", "")
- Referencia = If(Referencia.Length > 20, Referencia.Substring(0, 20), Referencia)
- Referencia = If(Referencia.Length = 0, "PAGO", Referencia)
- End If
-
-
- ''CLAVE DE REGISTRO PARA CONTROL PROPIO ADSISTEMAS -- orita se esta guardando en el campo #9
- Dim Cve As String = String.Format("CVEIE{0}", DTPendienteActual(0)("CveIE").ToString).ToUpper 'cveIE
-
-
- ''''' LLENADO DE DETALLE
- 'Campos #1-6 del Detalle
- DetalleTexto &= String.Format("DAP{0}{1}PDA", Referencia.PadRight(20), DTPendienteActual(0)("CveCuentaDeposito").ToString.PadLeft(30, PadCeros))
-
- 'Pago a cuenta BBVA
- If DTPendienteActual(0)("BancoNombre").ToString.ToUpper.Contains("BANCOMER") Or DTPendienteActual(0)("BancoNombre").ToString.ToUpper.Contains("BBVA") Then
- 'Campos 7-24 del Detalle
- 'CVE IE EN CAMPO 9 - VIEJO
- 'DetalleTexto &= String.Format("{0}{1}{2}{3}N{4}", CodigoOperacion, Vacio.PadLeft(20, PadCeros), Cve.PadRight(15), Vacio.PadRight(139), Vacio.PadRight(187))
- DetalleTexto &= String.Format("{0}{1}{2}{3}{4}N{5}", CodigoOperacion, Vacio.PadLeft(20, PadCeros), Vacio.PadRight(40), Cve.PadRight(37), Vacio.PadRight(77), Vacio.PadRight(187))
- Else
- Dim ReferenciaNumerica As String = "0" 'DTPendienteActual(0)("Referencia").ToString
- Dim Motivo As String = "Pago de facturas"
-
- 'Campos 7-24 del Detalle
- 'CVE IE EN CAMPO 9 - VIELO
- 'DetalleTexto &= String.Format("6{0}{1}{2}{3}{4}N{5}", Vacio.PadRight(20, PadCeros), Cve.PadRight(15), ReferenciaNumerica.PadRight(25), Motivo.ToUpper.PadRight(37), Vacio.PadRight(77), Vacio.PadRight(187))
- DetalleTexto &= String.Format("6{0}{1}{2}{3}{4}N{5}", Vacio.PadRight(20, PadCeros), Vacio.PadRight(15), ReferenciaNumerica.PadRight(25), Cve.PadRight(37), Vacio.PadRight(77), Vacio.PadRight(187))
- End If
-
- 'OBTENEMOS EL CORREO DEL PROVEEDOR
- Dim Correo As String = CorreoNotificacionesEmpresa.ToUpper.PadRight(50)
- 'Correo = If(Correo.Length > 0, Correo.ToUpper.PadRight(50), Vacio.PadRight(50))
-
- 'Campos 24-50 del Detalle 0 1 2 3 4 5 6 7 8 9
- DetalleTexto &= String.Format("{0}{1}FA{2}{3}01{4}N{5}{6}{7}{7}{7}{6}N {7}700{8}{9}{7}", Divisa, Vacio.PadLeft(20), Importe.FormatoNumero.Replace(",", "").Replace(".", "").PadLeft(15, PadCeros), Vacio.PadRight(15, PadCeros), Correo, Vacio.PadRight(12, PadCeros), NowADS().ToString("yyyy-MM-dd"), "0001-01-01", Observaciones.PadRight(700), Vacio.PadRight(52))
- TotalAcumulado += Importe.ToDouble
-
- ''LLENA DTPAGOS PARA REPORTE
- Dim Row As DataRow = DtPago.NewRow()
- Row("Proveedor") = DTPendienteActual(0)("RazonSocial").ToString
-
- If DTPendienteActual(0)("CIE").ToString <> "" Then
- Row("Cuenta") = String.Format("02{0}", DTPendienteActual(0)("CIE").ToString.PadLeft(8, PadCeros))
- ElseIf DTPendienteActual(0)("Cuenta").ToString.Length = 10 Then
- Row("Cuenta") = DTPendienteActual(0)("Cuenta").ToString
- ElseIf DTPendienteActual(0)("CLABE").ToString.Length = 18 Then
- Row("Cuenta") = DTPendienteActual(0)("CLABE").ToString
- End If
-
- Row("Importe") = Importe
- Row("Moneda") = DTPendienteActual(0)("Abreviatura").ToString.ToUpper
- Row("Observaciones") = DTPendienteActual(0)("Observaciones").ToString
- DtPago.Rows.Add(Row)
-
- End Sub
- Protected Sub FormarTextoPagos(Registros As Integer, Total As String)
- Dim convenio As String = DTPendienteActual(0)("ConvenioPagoElectronico").ToString
-
- '''''' LLENADO HEADER
- 'Campos #1-4 del Header
- HeaderTexto = String.Format("H{0}{1}01", convenio.PadLeft(9, PadCeros), NowADS().ToString("yyyy-MM-dd"))
- 'Campo #5 del Header
- HeaderTexto &= String.Format("P{0}{1}", NowADS().ToString("s").Replace("-", "").Replace(":", ""), Vacio.PadRight(14))
- 'Campos #6-11 del Header
- HeaderTexto &= String.Format("00").PadRight(1314)
-
-
- ''''' LLENADO DE TRAILER
- TrailerTexto = String.Format("T{0}{1}{2}{3}", Registros.ToString.PadLeft(10, PadCeros), Total.PadLeft(15, PadCeros), Vacio.PadRight(225, PadCeros), Vacio.PadRight(1115))
-
-
- ''''' ARMADO DEL TEXTO COMPLETO
- TextoCompleto = String.Format("{1}{0}{2}{0}{3}{0}", vbCrLf, HeaderTexto, DetalleTexto, TrailerTexto)
-
- End Sub
-#End Region
-
-#Region "CARGA ALTA PROVEEDORES"
- Private Sub CreaDtAlta()
-
- DtAlta = New DataTable
- DtAlta.Columns.Add("CveProveedor", GetType(String))
-
- DtAlta.Columns.Add("Proveedor", GetType(String))
- DtAlta.Columns.Add("Banco", GetType(String))
- DtAlta.Columns.Add("TipoCuenta", GetType(String))
- DtAlta.Columns.Add("Cuenta", GetType(String))
- DtAlta.Columns.Add("Estatus", GetType(String))
-
- DtAlta.Columns.Add("MensajeAdicional", GetType(String))
- DtAlta.Columns.Add("Moneda", GetType(String))
-
- End Sub
-
-
- Protected Sub BtnCargarAlta_Click(sender As Object, e As EventArgs)
- Dim ErrorArchivo As Boolean = False
-
- If FUTxt.HasFile Then
- If Not GuardaTXT() Then
- Alert("Ocurrio un error al cargar el archivo", TipoMensaje.MsgError)
- Exit Sub
- End If
- Else
- Alert("No tiene ningun archivo", TipoMensaje.MsgAdvertencia)
- Exit Sub
- End If
-
-
- 'LEE TXT
- Dim Texto As String
-
- Dim sr As New System.IO.StreamReader(NombreArchivo)
- Texto = sr.ReadToEnd()
- sr.Close()
-
- Dim TextoArreglo As String() = Texto.Split(CChar(vbCrLf))
-
- 'Alert(TextoArreglo.Length.ToString)
-
- 'LEE LINEA POR LINEA
- Dim RespuestaHeader As String = "", RespuestaDetalle As String = "", RespuestaTrailer As String = "", CveCuentasDeposito As String = ""
- CreaDtAlta()
- Dim ObjGrales As New ClsGenerales
- Dim Row As DataRow = Nothing
- Dim TipoCuentaDeposito As String = ""
-
- For i As Integer = 0 To TextoArreglo.Length - 1 Step 1
- 'Valida que el primer renglon sea el HEADER
- If i = 0 Then
- If TextoArreglo(i).Substring(0, 1) <> "H" Then
- ErrorArchivo = True
- Exit For
- Else
- RespuestaHeader = TextoArreglo(i).Substring(50, 2)
- End If
- Else
- 'LEE DETALLE
- If TextoArreglo(i).Length > 1 Then
- If TextoArreglo(i).Substring(1, 1) = "D" Then
-
- 'If i > 1 Then
- ' RespuestaDetalle += vbCrLf
- 'End If
-
- 'RespuestaDetalle += String.Format("{0} | {1} | ", If(TextoArreglo(i).Substring(197, 1) = "M", TextoArreglo(i).Substring(198, 50).Trim, TextoArreglo(i).Substring(268, 60).Trim), (TextoArreglo(i).Substring(599, 30)))
-
- ''Guardo CveCuentaDeposito cuando la operacion salio exitosa para actualizar en la DB
- If TextoArreglo(i).Substring(597, 2) = "00" Or TextoArreglo(i).Substring(597, 2) = "34" Then
- CveCuentasDeposito += If(CveCuentasDeposito <> "", ",", "")
- CveCuentasDeposito += TextoArreglo(i).Substring(3, 30).ToEntero.ToString
- End If
-
-
- ''LLENA DT PARA REPORTE
- Row = DtAlta.NewRow()
-
- Row("Proveedor") = If(TextoArreglo(i).Substring(197, 1) = "M", TextoArreglo(i).Substring(198, 50).Trim, TextoArreglo(i).Substring(268, 60).Trim)
-
- 'BANCO
- If ObjGrales.GetCuentasDepositos(CveCuentaDeposito:=TextoArreglo(i).Substring(3, 30).ToEntero) Then
- If ObjGrales.DtResultados.Rows.Count = 1 Then
- Row("Banco") = ObjGrales.DtResultados.Rows(0)("BancoNombre").ToString
- Else
- ErrorArchivo = True
- Exit For
- End If
- Else
- ErrorArchivo = True
- Exit For
- End If
-
- 'CUENTA
- If TextoArreglo(i).Substring(41, 2).Trim <> "" Then
- Row("Cuenta") = String.Format("{0}", TextoArreglo(i).Substring(43, 35).TrimStart("0"c))
- ElseIf TextoArreglo(i).Substring(81, 2).Trim <> "" Then
- Row("Cuenta") = String.Format("{0}", TextoArreglo(i).Substring(83, 35).TrimStart("0"c))
- Row("TipoCuenta") = "CLABE"
- Else
- ErrorArchivo = True
- Exit For
- End If
-
- 'TIPO CUENTA
- If Row("TipoCuenta").ToString = "" Then
- If String.Format("{0}", TextoArreglo(i).Substring(43, 35).TrimStart("0"c)).Length = 8 Then
- Row("TipoCuenta") = "CIE"
- ElseIf String.Format("{0}", TextoArreglo(i).Substring(43, 35).TrimStart("0"c)).Length = 10 Or String.Format("{0}", TextoArreglo(i).Substring(43, 35).TrimStart("0"c)).Length = 9 Then
- Row("TipoCuenta") = "Cuenta"
- ElseIf String.Format("{0}", TextoArreglo(i).Substring(43, 35).TrimStart("0"c)).Length = 18 Then
- Row("TipoCuenta") = "CLABE"
- End If
- End If
-
- Row("Estatus") = TextoArreglo(i).Substring(599, 30)
-
- DtAlta.Rows.Add(Row)
-
- ''LLENA PARA ALERT
- 'If i > 1 Then
- ' RespuestaDetalle += vbCrLf
- 'End If
-
- 'RespuestaDetalle += String.Format("{0} | {1} | ", If(TextoArreglo(i).Substring(197, 1) = "M", TextoArreglo(i).Substring(198, 50).Trim, TextoArreglo(i).Substring(268, 60).Trim), (TextoArreglo(i).Substring(599, 30)))
-
-
- 'LEE TRAILER
- ElseIf TextoArreglo(i).Substring(1, 1) = "T" Then
- RespuestaTrailer = TextoArreglo(i).Substring(32, 10)
- RespuestaTrailer += vbCrLf
- RespuestaTrailer += TextoArreglo(i).Substring(42, 10)
- RespuestaTrailer += vbCrLf
- RespuestaTrailer += TextoArreglo(i).Substring(52, 10)
- Exit For
- Else
- ErrorArchivo = True
- Exit For
- End If
- End If
- End If
- Next
- ObjGrales.Dispose()
-
-
- Dim Respuesta As New StringBuilder
- 'LEE ARCHIVO
- If Not ErrorArchivo Then
- 'TRADUCE CODIGO RESPUESTA HEADER
- If RespuestaHeader = "01" Then
- RespuestaHeader = "ACEPTADO TOTAL"
- ElseIf RespuestaHeader = "02" Then
- RespuestaHeader = "ACEPTADO PARCIAL"
- ElseIf RespuestaHeader = "03" Then
- RespuestaHeader = "RECHAZADO"
- End If
-
- 'DIVIDE DETALLE
- Dim Detalle As String() = RespuestaDetalle.Split(CChar(vbCrLf))
-
- 'DIVIDE TRAILER
- Dim Trailer As String() = RespuestaTrailer.Split(CChar(vbCrLf))
-
- 'ARMADO DE RESPUESTA
- Respuesta.AppendFormat("
Resumen de respuesta: {0}
", RespuestaHeader)
- Respuesta.AppendFormat("Numero de movimientos: {0}
", DtAlta.Rows.Count)
- Respuesta.Append("------------------------------ Detalle de los movimientos ------------------------------
")
-
- Respuesta.Append("| # | Proveedor | Banco | Tipo Cuenta | Cuenta | Estatus |
")
- 'For i = 0 To Detalle.Length - 1
- ' Respuesta.AppendFormat("| {0} | {1}
", i + 1, Detalle(i).Trim)
- 'Next
- Dim i As Integer = 1
- Dim Style As String = ""
- Dim TotalExitos As Integer = 0, TotalFracasos As Integer = 0
- For Each dr As DataRow In DtAlta.Rows
-
- If dr("estatus").ToString.Trim.Contiene("OPERACION EXITOSA", "ALTA TERCERO EXITOSO") Then
- Style = ""
- TotalExitos += 1
- Else
- Style = "style=""background-color:#FF5F5F;"" "
- TotalFracasos += 1
- End If
-
- Respuesta.AppendFormat("| {0} | {1} | {2} | {3} | {4} | {5} |
", i, dr("Proveedor"), dr("Banco"), dr("TipoCuenta"), dr("Cuenta"), dr("estatus"), Style)
- i += 1
- Next
-
- Respuesta.Append("
-------------------------------------------------------------------------------------
")
-
- Respuesta.AppendFormat("Total de movimientos exitosos: {0}
", TotalExitos)
- Respuesta.AppendFormat("Total de movimientos NO exitosos: {0}
", TotalFracasos)
-
- 'LEE DESDE EL LAYOUT
- 'Respuesta.AppendFormat("Total de altas rechazadas: {0}
", Trailer(0).ToString.ToEntero)
- 'Respuesta.AppendFormat("Total de bajas rechazadas: {0}
", Trailer(1).ToString.ToEntero)
- 'Respuesta.AppendFormat("Total de cambios rechazados: {0}
", Trailer(2).ToString.ToEntero)
-
- End If
-
- If Not ErrorArchivo Then
-
- If CveCuentasDeposito <> "" Then
- Dim ObjIE As New ClsBancos
- Dim ErrorDB As Boolean = False
- ObjIE.IniciaTransacSQL()
- Dim ArrayCuentasDeposito As String() = CveCuentasDeposito.Split(","c)
-
- For index As Integer = 0 To ArrayCuentasDeposito.Length - 1
- If Not ObjIE.UpdateCuentaDepositoPagoElectronico(ArrayCuentasDeposito(index).ToEntero) Then
- ErrorDB = True
- End If
- Next
-
- If Not ErrorDB Then
- ObjIE.Commit()
- Respuesta.Append("
NOTA: El archivo se analizo correctamente y se efectuaron todos los cambios en el sistema.")
- 'Respuesta.AppendFormat("
Descargar reporte", NombreArchivo)
- Respuesta.AppendFormat("Descargar Reporte", NombreArchivo)
-
- Alert(Respuesta.ToString, TipoMensaje.MsgInformacion)
- Else
- ObjIE.RollBack()
- Respuesta.Append("
NOTA: El archivo se analizo correctamente pero ocurrio un problema al efectuar los cambios en el sistema. Por favor vuelta a intentar.")
- Alert(Respuesta.ToString, TipoMensaje.MsgError)
- End If
-
- ObjIE.Dispose()
- Else
- Respuesta.AppendFormat("
NOTA: El archivo se analizo correctamente pero ningun movimiento fue exitoso.")
- 'Respuesta.AppendFormat("
Descargar reporte", NombreArchivo)
- Respuesta.AppendFormat("Descargar Reporte", NombreArchivo)
-
- Alert(Respuesta.ToString, TipoMensaje.MsgAdvertencia)
- End If
-
- Else
- Alert("Ocurrio un problema al leer el archivo. Por favor revise que el archivo sea el correcto e intente de nuevo.", TipoMensaje.MsgError)
- End If
-
- 'ELIMINA TXT
- My.Computer.FileSystem.DeleteFile(NombreArchivo)
-
- RecargaDatos()
-
- End Sub
-#End Region
-
-#Region "CARGA PAGO PROVEEDORES"
- Private Sub CreaDtPago()
-
- DtPago = New DataTable
- DtPago.Columns.Add("NumeroConvenio", GetType(String))
- DtPago.Columns.Add("ClaveProveedor", GetType(String))
- DtPago.Columns.Add("ReferenciaPago", GetType(String))
- DtPago.Columns.Add("TipoPago", GetType(String))
-
- DtPago.Columns.Add("Proveedor", GetType(String))
- DtPago.Columns.Add("Cuenta", GetType(String))
- DtPago.Columns.Add("Importe", GetType(Decimal))
- DtPago.Columns.Add("Moneda", GetType(String))
- DtPago.Columns.Add("Observaciones", GetType(String))
-
- DtPago.Columns.Add("FechaOperacion", GetType(String))
-
- End Sub
-
-
- Protected Sub BtnCargarPago_Click(sender As Object, e As System.EventArgs)
- Dim ErrorArchivo As Boolean = False
- Dim TextoErrorArchivo As String = "Ocurrió un problema al leer el archivo, por favor revise que el archivo sea el correcto e intente de nuevo."
-
- If FUTxt.HasFile Then
- If Not GuardaTXT() Then
- Alert("Ocurrio un error al cargar el archivo", TipoMensaje.MsgError)
- Exit Sub
- End If
- Else
- Alert("No tiene ningun archivo", TipoMensaje.MsgAdvertencia)
- Exit Sub
- End If
-
-
- 'LEE TXT
- Dim Texto As String
- Dim sr As New System.IO.StreamReader(NombreArchivo)
- Texto = sr.ReadToEnd()
- sr.Close()
- Dim TextoArreglo As String() = Texto.Split(CChar(vbCrLf))
-
- 'INICIALIZA VARIABLES
- Dim ObjBancos As New ClsBancos
- Dim RespuestaHeader As String = "", RespuestaDetalle As String = "", RespuestaTrailer As String = "", Proveedor As String = "", CuentaAbono As String = "", Estatus As String = "", CveIEs As String = "", EstatusIEs As String = "", FechaMovto As String = "", Correos As String = ""
- Dim Row As DataRow = Nothing
- Dim Convenio As String = ""
- CreaDtPago()
-
- 'LEE LINEA POR LINEA
- For i As Integer = 0 To TextoArreglo.Length - 1
- 'Valida que el primer renglon sea el HEADER
- If i = 0 Then
- If TextoArreglo(i).Substring(0, 1) <> "H" Then
- ErrorArchivo = True
- Exit For
- Else
- ' Codigo de respuesta | Cuenta cargo
- RespuestaHeader = String.Format("{0}|{1}", TextoArreglo(i).Substring(52, 2), TextoArreglo(i).Substring(77, 35))
- Convenio = TextoArreglo(i).Substring(2, 9)
- End If
- Else
- If TextoArreglo(i).Length > 1 Then
-
- 'LEE DETALLE
- If TextoArreglo(i).Substring(1, 1) = "D" Then
- If i > 1 Then
- RespuestaDetalle += vbCrLf
- End If
-
- 'TRUENA PORQUE AHORA ES LA CVECUENTADEPOSITO
- 'Proveedor = GlobalDTCompProveedores(UsuarioActual.CveEmpresa).FiltraParametros(String.Format("CveProveedor = {0}", TextoArreglo(i).Substring(24, 30).ToEntero)).Rows(0)("RazonSocial").ToString
-
- Correos += If(Correos <> "", "|", "")
-
- If ObjBancos.GetProveedorCuentaDeposito(TextoArreglo(i).Substring(24, 30).ToDouble.ToEntero) Then
- If ObjBancos.DtResultados.Rows.Count > 0 Then
-
- Proveedor = ObjBancos.DtResultados.Rows(0)("RazonSocial").ToString
-
- 'Correos += If(TextoArreglo(i).Substring(477, 50).Trim = "", "-1", TextoArreglo(i).Substring(477, 50).Trim)
- Correos += String.Format("{0};{1}", ObjBancos.DtResultados.Rows(0)("NotificarA").ToString, ObjBancos.DtResultados.Rows(0)("ContactoMailCobranza").ToString)
-
-
- ''SELECCIONA CUENTA ABONO PARA CORREO
- Select Case TextoArreglo(i).Substring(57, 1).ToEntero
- Case 1
- CuentaAbono = "NO APLICA"
- Case 2
- CuentaAbono = If(ObjBancos.DtResultados.Rows(0)("Cuenta").ToString <> "", ObjBancos.DtResultados.Rows(0)("Cuenta").ToString, ObjBancos.DtResultados.Rows(0)("CLABE").ToString)
- Case 3
- CuentaAbono = ObjBancos.DtResultados.Rows(0)("CIE").ToString
- Case 4
- CuentaAbono = ObjBancos.DtResultados.Rows(0)("SWIFT").ToString
- Case 5, 6, 7
- CuentaAbono = ObjBancos.DtResultados.Rows(0)("CLABE").ToString
- End Select
-
- Else
- Proveedor = "PROVEEDOR NO ENCONTRADO"
- End If
- Else
- Proveedor = "PROVEEDOR NO ENCONTRADO"
- End If
-
- Estatus = If(TextoArreglo(i).Substring(1325, 2) = "00", "OPERACION EXITOSA: ", "OPERACION FALLIDA: ")
- ' Proveedor | Importe | Descripcion estatus
- RespuestaDetalle += String.Format("{0} | {1}.{2} | | {5} | {3}{4} | ", Proveedor, TextoArreglo(i).Substring(445, 13).ToDouble.ToEntero, TextoArreglo(i).Substring(458, 2).ToEntero, Estatus, TextoArreglo(i).Substring(1327, 30), TextoArreglo(i).Substring(420, 3))
-
- ''Guardo CveIE cuando la operacion salio exitosa para actualizar en la DB el IE
- 'If TextoArreglo(i).Substring(1325, 2) = "00" Then
- CveIEs += If(CveIEs <> "", ",", "")
- 'VIEJO IE EN CAMPO 9
- 'CveIEs += TextoArreglo(i).Substring(83, 10).Trim
- CveIEs += TextoArreglo(i).Substring(123, 32).Trim
-
- 'SI VIENE SIN RESPUESTA ES ERROR DE ARCHIVO
- If TextoArreglo(i).Substring(1325, 2).Trim = "" Then
- ErrorArchivo = True
- TextoErrorArchivo = "El archivo que se intento procesar no es de respuesta. Por favor verifique cargar el archivo correcto."
- Exit For
- End If
-
- EstatusIEs += If(EstatusIEs <> "", ",", "")
- EstatusIEs += If(TextoArreglo(i).Substring(1325, 2) = "00", "2", "3")
-
- FechaMovto += If(FechaMovto <> "", ",", "")
- FechaMovto += TextoArreglo(i).Substring(540, 10)
-
- 'If Proveedor = "PROVEEDOR NO ENCONTRADO" Or CuentaAbono = "" Then
- ' Continue For
- 'End If
-
-
- ''LLENA DTPAGOS PARA CORREO
- Row = DtPago.NewRow()
- Row("NumeroConvenio") = Convenio
- Row("ClaveProveedor") = TextoArreglo(i).Substring(24, 30)
- Row("Proveedor") = Proveedor
- Row("ReferenciaPago") = TextoArreglo(i).Substring(4, 20)
- Row("Cuenta") = CuentaAbono
-
- Select Case TextoArreglo(i).Substring(57, 1).ToEntero
- Case 1
- Row("TipoPago") = "1 .- ABONO EN VENTANILLA"
- Case 2
- Row("TipoPago") = "2 .- ABONO A CUENTAS BANCOMER"
- Case 3
- Row("TipoPago") = "3 .- ABONO A CONVENIO CIE"
- Case 4
- Row("TipoPago") = "4 .- ABONO A CUENTA INTERNACIONAL VIA SWIFT"
- Case 5
- Row("TipoPago") = "5 .- ABONO A CUENTA INTERBANCARIA DIA SIGUIENTE"
- Case 6
- Row("TipoPago") = "6 .- ABONO A CUENTA INTERBANCARIA MISMO DIA"
- Case 7
- Row("TipoPago") = "7 .- ABONO A CUENTA INTERNACIONAL VIA ACH"
- End Select
-
- Try
- Row("Cuenta") = If(Row("Cuenta").ToString = "", String.Format("******{0}", CuentaAbono.Substring(CuentaAbono.Length - 4, 4)), Row("Cuenta").ToString)
- Catch ex As Exception
- Row("Cuenta") = "******"
- End Try
-
- Row("Importe") = String.Format("{0}.{1}", TextoArreglo(i).Substring(445, 13), TextoArreglo(i).Substring(458, 2)).ToDecimal.ToString
- Row("FechaOperacion") = TextoArreglo(i).Substring(540, 10)
- Row("Observaciones") = TextoArreglo(i).Substring(605, 700).Trim
- DtPago.Rows.Add(Row)
-
- 'End If
-
- 'LEE TRAILER
- ElseIf TextoArreglo(i).Substring(1, 1) = "T" Then
-
- 'PARA BCOM, YA QUE TRUNCA EL STRING CUANDO SOLO ES MXP
- If TextoArreglo(i).Length < 1367 Then
- TextoArreglo(i) = TextoArreglo(i).PadRight(1367)
- End If
-
- RespuestaTrailer += "------------------------------------------------------------ RESUMEN ------------------------------------------------------------"
- RespuestaTrailer += String.Format("| Concepto | Pesos (MXP) | Dolares (USD) |
")
- RespuestaTrailer += String.Format("| Total registros rechazados: | {0} | {1} |
", TextoArreglo(i).Substring(77, 10).ToDouble.ToEntero.ToString, TextoArreglo(i).Substring(327, 10).ToDouble.ToEntero.ToString)
- RespuestaTrailer += String.Format("| Total Importe rechazado: $: | {0}.{1} | {2}.{3} |
", TextoArreglo(i).Substring(87, 13).ToDouble.ToEntero.ToString, TextoArreglo(i).Substring(100, 2).ToDouble.ToEntero.ToString, TextoArreglo(i).Substring(337, 13).ToDouble.ToEntero.ToString, TextoArreglo(i).Substring(350, 2).ToDouble.ToEntero.ToString)
- RespuestaTrailer += String.Format("| Total registros aceptados: | {0} | {1} |
", TextoArreglo(i).Substring(177, 10).ToDouble.ToEntero.ToString, TextoArreglo(i).Substring(302, 10).ToDouble.ToEntero.ToString)
- RespuestaTrailer += String.Format("| Total Importe aceptado $: | {0}.{1} | {2}.{3} |
", TextoArreglo(i).Substring(187, 13).ToDouble.ToEntero.ToString, TextoArreglo(i).Substring(200, 2).ToDouble.ToEntero.ToString, TextoArreglo(i).Substring(312, 13).ToDouble.ToEntero.ToString, TextoArreglo(i).Substring(325, 2).ToDouble.ToEntero.ToString)
-
- 'RespuestaTrailer += String.Format("Total registros rechazados: {1}{0} Total Importe rechazado: $ {2}.{3}{0} Total registros aceptados: {4}{0} Total Importe aceptado: $ {5}.{6}{0}", "
", TextoArreglo(i).Substring(77, 10).ToDouble.ToEntero.ToString, TextoArreglo(i).Substring(87, 13).ToDouble.ToEntero.ToString, TextoArreglo(i).Substring(100, 2).ToDouble.ToEntero.ToString, TextoArreglo(i).Substring(177, 10).ToDouble.ToEntero.ToString, TextoArreglo(i).Substring(187, 13).ToDouble.ToEntero.ToString, TextoArreglo(i).Substring(200, 2).ToEntero.ToString)
- Else
- ErrorArchivo = True
- Exit For
- End If
- End If
- End If
- Next
-
- ObjBancos.Dispose()
-
- Dim Respuesta As New StringBuilder
- If Not ErrorArchivo Then
-
- 'DIVIDE HEADER
- Dim Header As String() = RespuestaHeader.Split(CChar("|"))
- 'TRADUCE CODIGO RESPUESTA HEADER
- If Header(0) = "01" Then
- RespuestaHeader = "ACEPTADO TOTAL"
- ElseIf Header(0) = "02" Then
- RespuestaHeader = "ACEPTADO PARCIAL"
- ElseIf Header(0) = "03" Then
- RespuestaHeader = "RECHAZADO"
- End If
- RespuestaHeader += String.Format("
Cuenta Cargo: {0}", Header(1))
-
- 'DIVIDE DETALLE
- Dim Detalle As String() = RespuestaDetalle.Split(CChar(vbCrLf))
-
- 'ARMADO DE RESPUESTA
- Respuesta.AppendFormat("
Resumen de respuesta: {0}
", RespuestaHeader)
- Respuesta.AppendFormat("Numero de movimientos: {0}
", Detalle.Length.ToString)
- Respuesta.Append("----------------------------------------------------- Detalle de los movimientos --------------------------------------------------
")
- Respuesta.Append("| # | Proveedor | Importe($) | | Moneda | Estatus |
")
- For i As Integer = 0 To Detalle.Length - 1
- Respuesta.AppendFormat("| {0} | {1}
", i + 1, Detalle(i).Trim)
- Next
- Respuesta.Append("
----------------------------------------------------------------------------------------------------------------------
")
- Respuesta.AppendFormat(RespuestaTrailer)
-
-
- End If
-
- If Not ErrorArchivo Then
- If CveIEs <> "" Then
- Dim ObjIE As New ClsBancos
- Dim ErrorDB As Boolean = False
- ObjIE.IniciaTransacSQL()
- Dim ArrayCveIEs As String() = CveIEs.Split(","c)
- Dim ArrayEstatusIEs As String() = EstatusIEs.Split(","c)
- Dim ArrayFechasMovto As String() = FechaMovto.Split(","c)
- Dim ArrayCorreos As String() = Correos.Split("|"c)
-
- Dim ArregloHilos As New Generic.List(Of System.Threading.Thread)
- Dim ArregloParametros As New Generic.List(Of List(Of String))
-
- For index As Integer = 0 To ArrayCveIEs.Length - 1
- If ObjIE.UpdatePagoElectronicoCarga(ArrayCveIEs(index).ToEntero, ArrayEstatusIEs(index).ToEntero) Then
-
- 'Cuando salio exitoso actualizamos el IE
- If ArrayEstatusIEs(index).ToEntero = 2 Then
- If ObjIE.UpdateIEPagoElectronico(ArrayCveIEs(index).ToEntero, ArrayFechasMovto(index).ToDate, UsuarioActual.CveEmpresa, UsuarioActual.CveUsuario) Then 'DESPROGRAMA LAS COMPRAS RELACIONADAS EN ESTE PA
-
- 'Cambiamos estatus notificación
- If ObjIE.UpdateBancos_IENotificaciones(2, "-1", "-1", ArrayCveIEs(index).ToEntero) Then
-
- 'Obtenemos los correos del movimiento
- If ArrayCorreos(index) <> "-1" Or ArrayCorreos(index) <> "" Then
+ HeaderTexto &= String.Format("{0}{1}", IdentificadoUsuario, NowADS().ToString("yyyyMMdd")).PadRight(20)
+ 'Campos #6-8 del Header
+ HeaderTexto &= String.Format("00").PadRight(586)
+ Dim HeaderLength As Integer = HeaderTexto.Length
+ ''''' LLENADO DE TRAILER
+ TrailerTexto = String.Format("T{0}{1}{2}", Registros.ToString.PadLeft(10, PadCeros), Vacio.PadRight(50, PadCeros), Vacio.PadRight(575))
-
- Dim Param As New List(Of String)
-
- Param.Add(ArrayCveIEs(index).ToString)
- Param.Add(ArrayCorreos(index)) 'Para
- 'Param.Add("Notificación de Pago") 'Asunto
- 'Param.Add(GeneraCorreo2(DtPago.Rows(index), ObjIE, ArrayCveIEs(index).ToEntero)) 'Body
-
- ' EnviarCorreoNotificacion()
- 'Dim Hilo As New Threading.Thread(AddressOf MandaCorreo)
- 'ArregloHilos.Add(Hilo)
-
- ArregloParametros.Add(Param)
-
- End If
- Else
- ErrorDB = True
- End If
-
- Else
- ErrorDB = True
- End If
- Else
-
- 'Cuando salio NO exitoso cancelamos el IE
- If ObjIE.CancelarBancos_IE(UsuarioActual.CveUsuario, ArrayCveIEs(index).ToEntero, False, -1, -1) <= 0 Then
- ErrorDB = True
- End If
- End If
-
- Else
- ErrorDB = True
- End If
- Next
-
- If Not ErrorDB Then
- ObjIE.Commit()
- 'ObjIE.RollBack()
-
- ''EMPIEZA A ENVIAR CORREO POR HILOS
- 'For index = 0 To ArregloHilos.Count - 1
- ' ArregloHilos(index).Start(ArregloParametros(index))
- 'Next
-
- For Each ObjParametros As Object In ArregloParametros
-
- Dim Parametros As List(Of String) = DirectCast(ObjParametros, List(Of String))
-
- Dim CveIENotificar As Integer = Parametros(0).ToEntero
- Dim NotificarA As String = Parametros(1)
-
- EnviarCorreoNotificacion(CveIENotificar, NotificarA, "", UsuarioActual, False)
-
- Next
- Respuesta.Append("
NOTA: El archivo se analizo correctamente y se efectuaron todos los cambios en el sistema.")
- Alert(Respuesta.ToString, TipoMensaje.MsgInformacion)
-
- CargaDatos()
- Else
- ObjIE.RollBack()
- Respuesta.Append("
NOTA: El archivo se analizo correctamente pero ocurrió un problema al efectuar los cambios en el sistema. Por favor vuelva a intentar.")
- Alert(Respuesta.ToString, TipoMensaje.MsgError)
- End If
-
- ObjIE.Dispose()
- Else
- Respuesta.AppendFormat("
NOTA: El archivo se analizo correctamente pero ningun movimiento fue exitoso.")
- Alert(Respuesta.ToString, TipoMensaje.MsgAdvertencia)
- End If
- Else
- Alert(TextoErrorArchivo, TipoMensaje.MsgError)
- End If
-
- 'ELIMINA TXT
- My.Computer.FileSystem.DeleteFile(NombreArchivo)
-
- RecargaDatos()
-
- End Sub
-#End Region
-
-
-
- 'FUNCIONARIO O EMPLEADO
-#Region " ALTA FUNCIONARIO "
- Private Sub CargaFyE()
- Dim ObjBancos As New ClsBancos
-
- If ObjBancos.GetLayoutFyE(DdlCuenta.SelectedValue.ToEntero, UsuarioActual.CveEmpresa) Then
- DTFyE = ObjBancos.DtResultados.FiltraParametros("LEN(RFC) IN (13)")
- Else
- DTFyE = Nothing
- End If
- ObjBancos.Dispose()
-
- If DTFyE.Rows.Count > 0 Then
- GvProveedores.DataSource = DTFyE
- End If
- GvProveedores.DataBind()
-
- UpProveedores.Update()
- End Sub
- Private Sub GeneraAltaFyE()
- Dim DtTemp As DataTable = Nothing
-
- 'REINICIA PROPIEDAS
- HeaderTexto = ""
- DetalleTexto = ""
- TrailerTexto = ""
- TotalAcumulado = 0
- CreaDtAlta()
-
- DtTemp = DTFyE
-
- ''VALIDA CUENTAS DEPOSITOS
- Dim ErrorCuenta As Boolean = False
- Dim FyEError As StringBuilder = New StringBuilder
- FyEError.AppendFormat("| Personal | Cuenta | Error |
")
-
- Dim TotalDetalles As Integer = 0
- Dim EsBancomer As Boolean = False
- For Each gvr As DataRow In DtTemp.Rows
- If gvr("CvePersonal").ToString <> "" AndAlso gvr("EstatusPagoElectronico").ToString <> "True" AndAlso gvr("AltaCuenta").ToString = "1" Then
- DTPendienteActual = DtTemp.FiltraParametros(String.Format("CveCuentaDeposito = {0}", gvr("CveCuentaDeposito").ToString))
- ErrorCuenta = False
- EsBancomer = False
-
- If DTPendienteActual(0)("BancoNombre").ToString.ToUpper.Contains("BBVA") Or DTPendienteActual(0)("BancoNombre").ToString.ToUpper.Contains("BANCOMER") Or (DTPendienteActual(0)("CLABE").ToString.Length = 18 AndAlso DTPendienteActual(0)("CLABE").ToString.Substring(0, 3) = "012") Then
- EsBancomer = True
- End If
-
- 'CLABE SIEMPRE OBLIGATORIA SI NO ES BANCOMER
- If Not ErrorCuenta Then
- If DTPendienteActual(0)("CLABE").ToString.Trim.Length <> 18 And DTPendienteActual(0)("CLABE").ToString.Trim.Length = 0 And Not EsBancomer Then
- FyEError.AppendFormat("| {0} | {1} | CLABE ES OBLIGATORIA |
", DTPendienteActual(0)("RazonSocial").ToString, DTPendienteActual(0)("BancoNombre").ToString)
- ErrorCuenta = True
- End If
- End If
-
- 'SI CUENTA TIENE ALGO Y BANCO BANCOMER DEBE TENER UNA LOGITUD EXACTA DE 10
- If Not ErrorCuenta Then
- If DTPendienteActual(0)("Cuenta").ToString.Trim.Length <> 0 AndAlso DTPendienteActual(0)("Cuenta").ToString.Trim.Length <> 10 AndAlso EsBancomer Then
- FyEError.AppendFormat("| {0} | {1} | NUMERO DE CUENTA CON FORMATO INCORRECTO |
", DTPendienteActual(0)("RazonSocial").ToString, DTPendienteActual(0)("BancoNombre").ToString)
- ErrorCuenta = True
- End If
- End If
-
- 'SI CLABE TIENE ALGO DEBE TENER UNA LOGITUD EXACTA DE 18
- If Not ErrorCuenta Then
- If DTPendienteActual(0)("CLABE").ToString.Trim.Length <> 0 AndAlso DTPendienteActual(0)("CLABE").ToString.Trim.Length <> 18 Then
- FyEError.AppendFormat("| {0} | {1} | CLABE CON FORMATO INCORRECTO |
", DTPendienteActual(0)("RazonSocial").ToString, DTPendienteActual(0)("BancoNombre").ToString)
- ErrorCuenta = True
- End If
- End If
-
- 'SI CIE TIENE ALGO DEBE TENER REFERENCIA OBLIGATORIA
- If Not ErrorCuenta Then
- If DTPendienteActual(0)("CIE").ToString.Trim.Length <> 0 And DTPendienteActual(0)("Referencia").ToString.Trim.Length < 3 Then
- FyEError.AppendFormat("| {0} | {1} | CIE CON FORMATO INCORRECTO |
", DTPendienteActual(0)("RazonSocial").ToString, DTPendienteActual(0)("BancoNombre").ToString)
- ErrorCuenta = True
- End If
- End If
-
- 'CUANDO SEA "BBVA" O "BANCOMER" DEBE TENER "CIE" O "CUENTA"
- If Not ErrorCuenta Then
- If EsBancomer AndAlso Not (DTPendienteActual(0)("Cuenta").ToString.Trim.Length = 10 Or DTPendienteActual(0)("CIE").ToString.Trim.Length <> 0) Then
- FyEError.AppendFormat("| {0} | {1} | CUENTA BANCOMER SIN CUENTA O CIE |
", DTPendienteActual(0)("RazonSocial").ToString, DTPendienteActual(0)("BancoNombre").ToString)
- ErrorCuenta = True
- End If
- End If
-
- If Not ErrorCuenta Then
- If TotalDetalles > 0 Then
- DetalleTexto &= vbCrLf
- End If
- GeneraAltaDetalleFyE()
- TotalDetalles += 1
- End If
-
- End If
- Next
- FyEError.AppendFormat("
")
-
-
- If TotalDetalles > 0 Then
- FormarTextoAltaFyE(TotalDetalles)
- CreaArchivo(2)
-
- Dim Descargas As New StringBuilder()
- Descargas.AppendFormat("TXT", NombreArchivo)
- 'Descargas.AppendFormat("Reporte", NombreArchivo)
- Descargas.AppendFormat("Descargar Reporte", NombreArchivo)
-
-
- Dim TextoErrorProveedores As String = ""
- If FyEError.Length > 160 Then TextoErrorProveedores = String.Format("
Proveedores con Error:
------------------------------------------------------------------
{0}
", FyEError.ToString)
-
- Alert(String.Format("
El Layout fue creado satisfactoriamente.{1}
Descargas:", Descargas, TextoErrorProveedores), TipoMensaje.MsgInformacion)
-
- 'NombreArchivo = "LayoutAltaProveedores"
- 'DescargarArchivo()
- Else
- Alert("No hay proveedores que dar de alta", TipoMensaje.MsgInformacion)
- End If
-
-
- End Sub
- Private Sub GeneraAltaDetalleFyE()
- Dim Resultado As Boolean = True
- Dim CuentaDeposito As String = ""
- Dim TipoCuentaDeposito As String = ""
- Dim TipoCuenta As String = ""
-
- ''''' LLENADO DE DETALLE
- 'Campos #1-4 del Detalle
- DetalleTexto &= String.Format("DA{0}N ", DTPendienteActual(0)("CveCuentaDeposito").ToString.ToUpper.PadLeft(30, PadCeros))
-
- 'Banco BBVA
- If DTPendienteActual(0)("BancoNombre").ToString.ToUpper.Contains("BBVA") Or DTPendienteActual(0)("BancoNombre").ToString.ToUpper.Contains("BANCOMER") Then
- 'Llenamos datos de BBVA
- 'Campo #5-7 del detalle
-
- 'Busca que cuenta sera la asignada para el proveedor
- If DTPendienteActual(0)("CIE").ToString <> "" Then
- CuentaDeposito = String.Format("02{0}", DTPendienteActual(0)("CIE").ToString.PadLeft(8, PadCeros))
- TipoCuenta = "50"
- TipoCuentaDeposito = "CIE"
- ElseIf DTPendienteActual(0)("Cuenta").ToString.Length = 10 Then
- CuentaDeposito = DTPendienteActual(0)("Cuenta").ToString
- TipoCuenta = "99"
- TipoCuentaDeposito = "Cuenta"
- ElseIf DTPendienteActual(0)("CLABE").ToString.Length = 18 Then
- CuentaDeposito = DTPendienteActual(0)("CLABE").ToString
- TipoCuenta = "40"
- TipoCuentaDeposito = "CLABE"
- End If
-
-
- DetalleTexto &= String.Format("{0}{1}{2}", DTPendienteActual(0)("Abreviatura").ToString, TipoCuenta, CuentaDeposito.PadLeft(35, PadCeros))
-
- 'Llenamos en blanco datos de otros bancos
- 'Campos 8-17 del detalle --- 64 de otros bancos y 45 para FILLER --- Fecha de Alta
- DetalleTexto &= String.Format("{0}{1}", Vacio.PadLeft(109), NowADS().ToString("yyyy-MM-dd"))
-
-
- 'Otros Bancos NACIONAL!!
- Else
-
- CuentaDeposito = DTPendienteActual(0)("CLABE").ToString
- TipoCuentaDeposito = "CLABE"
-
- 'Llenamos en blanco datos de BBVA
- DetalleTexto &= Vacio.PadRight(40)
-
- 'Llenamos datos de otros bancos
- 'Campos 8- 17 del detalle --- 44 de otros bancos --- 20 de internacional --- 45 Filler -- Fecha de Alta
- DetalleTexto &= String.Format("{0}40{1}{2}{3}{4}{5}", DTPendienteActual(0)("Abreviatura").ToString, DTPendienteActual(0)("CLABE").ToString.PadLeft(35, PadCeros), DTPendienteActual(0)("CLABE").ToString.Substring(0, 3).PadLeft(4, PadCeros), Vacio.PadRight(20), Vacio.PadRight(45), NowADS().ToString("yyyy-MM-dd"))
- End If
-
- 'Llenamos datos de Tipo de Persona - Fisica
- ' nombres Primer apellido Segundo apellido
- DetalleTexto &= String.Format("F{0}{1}{2}{3}", Vacio.PadRight(70), DTPendienteActual(0)("Nombres").ToString.PadRight(20).Substring(0, 20), DTPendienteActual(0)("APaterno").ToString.PadRight(20).Substring(0, 20), DTPendienteActual(0)("AMaterno").ToString.PadRight(20).Substring(0, 20))
-
- 'Campo 25-26 del detalle -- Fecha Nacimiento -- RFC
- DetalleTexto &= String.Format("{0}{1}", DTPendienteActual(0)("FechaNacimiento").ToString.ToDate.ToString("yyyy-MM-dd"), DTPendienteActual(0)("RFC").ToString.ToUpper.PadRight(14))
-
- 'Campos 27-32 --- Fillers --- datos de otros bancos (internacional)
- DetalleTexto &= Vacio.PadLeft(153)
-
- 'Campos 33-36 --- Datos de confirmacion
- DetalleTexto &= String.Format("{0}02{1}", Vacio.PadRight(40), CorreoNotificacionesEmpresa.ToUpper.PadRight(50))
-
- 'If DTPendienteActual(0)("ContactoMail").ToString.Length > 0 Then
- ' 'DetalleTexto &= String.Format("{0}02{1}", Vacio.PadRight(40), DTPendienteActual(0)("ContactoMail").ToString.ToUpper.PadRight(50))
- 'ElseIf DTPendienteActual(0)("ContactoMail").ToString.Length <= 0 Then
- ' DetalleTexto &= String.Format("{0}00{1}", Vacio.PadRight(40), Vacio.PadRight(50))
- 'End If
-
- 'Campos 37-39 -- FILLER
- DetalleTexto &= String.Format("00{0}", Vacio.PadRight(38))
-
- ''LLENA DT PARA REPORTE
- Dim Row As DataRow = DtAlta.NewRow()
- Row("Proveedor") = DTPendienteActual(0)("RazonSocial").ToString
- Row("Banco") = DTPendienteActual(0)("BancoNombre").ToString
- Row("TipoCuenta") = TipoCuentaDeposito
- Row("Cuenta") = String.Format("{0}", CuentaDeposito)
- DtAlta.Rows.Add(Row)
- End Sub
- Protected Sub FormarTextoAltaFyE(Registros As Integer)
- '''''' LLENADO HEADER
- Dim convenio As String = DTPendienteActual(0)("ConvenioPagoElectronico").ToString
- 'Campos #1-4 del Header
- HeaderTexto = String.Format("H{0}{1}GRUPO01 ", convenio.PadLeft(9, PadCeros), NowADS().ToString("yyyy-MM-dd"))
- 'Campo #5 del Header
- HeaderTexto &= String.Format("{0}{1}", UsuarioActual.CveUsuario, NowADS().ToString("yyyyMMdd")).PadRight(20)
- 'Campos #6-8 del Header
- HeaderTexto &= String.Format("00").PadRight(586)
- Dim HeaderLength As Integer = HeaderTexto.Length
-
- ''''' LLENADO DE TRAILER
- TrailerTexto = String.Format("T{0}{1}{2}", Registros.ToString.PadLeft(10, PadCeros), Vacio.PadRight(50, PadCeros), Vacio.PadRight(575))
-
- ''''' ARMADO DEL TEXTO COMPLETO
- TextoCompleto = String.Format("{1}{0}{2}{0}{3}{0}", vbCrLf, HeaderTexto, DetalleTexto, TrailerTexto)
- 'TxtAltas.Text = TextoCompleto
+ ''''' ARMADO DEL TEXTO COMPLETO
+ TextoCompleto = String.Format("{1}{0}{2}{0}{3}{0}", vbCrLf, HeaderTexto, DetalleTexto, TrailerTexto)
+ 'TxtAltas.Text = TextoCompleto
End Sub
-#End Region
+
+#End Region
+
+#Region "PAGO PROVEEDORES"
+ Protected Sub BtnPagos_Click(sender As Object, e As EventArgs)
+
+ If Not DdlCuenta.SelectedValue.ToEntero > 0 Then
+ Alert("Primero debe seleccionar una Cuenta", TipoMensaje.MsgAdvertencia)
+ Exit Sub
+ End If
+
+ 'GeneraPago
+
+
+ If OpBancos = 1 Then
+ If DTPendientes.FiltraParametros("EstatusPagoElectronico = 'True' AND EstatusCtaDeposito = 'True'") IsNot Nothing Then
+ GeneraPago(DTPendientes.FiltraParametros("EstatusPagoElectronico > 0 AND EstatusCtaDeposito > 0"), -1)
+ Else
+ Alert("No hay registros para generar", TipoMensaje.MsgAdvertencia)
+ End If
+ ElseIf OpBancos = 2 Then
+
+ ElseIf OpBancos = 3 Then
+ If DTPendientes.FiltraParametros("EstatusPagoElectronicoScotia = 'True' AND EstatusCtaDeposito = 'True'") IsNot Nothing Then
+ GeneraPagoScotiaBank(DTPendientes.FiltraParametros("EstatusPagoElectronico > 0 AND EstatusCtaDeposito > 0"), False)
+ Else
+ Alert("No hay registros para generar pagos en ScotiaBank", TipoMensaje.MsgAdvertencia)
+ End If
+ End If
+
+
+ End Sub
+ Private Sub GeneraPago(DTTemp As DataTable, CveBLE As Integer)
+ If DTTemp.Rows.Count <= 0 Then
+ Alert("No hay registros para generar", TipoMensaje.MsgAdvertencia)
+ Exit Sub
+ End If
+
+ 'For Each gvr As DataRow In DTTemp.Rows
+ ' If gvr("EstatusPagoElectronico").ToString.ToEntero <= 0 Then
+ ' Alert("Los proveedores tienen que estar dados de alta. Primero de alta a los proveedores")
+ ' Exit Sub
+ ' End If
+ 'Next
+
+ 'Comprobamos la cuenta deposito y moneda de las cuentas deposito
+ For Each dr As DataRow In DTTemp.Rows
+ If dr("BancoNombre").ToString = "" Then
+ Alert(String.Format("El Pago '{0}' no tiene Cuenta Deposito Asociada.", dr("Observaciones")), TipoMensaje.MsgError)
+ Exit Sub
+ End If
+
+ If dr("MonedaCtaDeposito").ToString = "" Or dr("MonedaCtaDeposito").ToString.ToEntero <= 0 Then
+ Alert(String.Format("La cuenta deposito '{0}' del proveedor '{1}' no tiene Moneda especificada.", dr("CuentaDeposito"), dr("RazonSocial")), TipoMensaje.MsgError)
+ Exit Sub
+ End If
+ Next
+
+ 'Excluimos los registros que no tengan cuenta deposito dada de alta
+ 'DTTemp = DTTemp.FiltraParametros("EstatusPagoElectronico = 0")
+
+ HeaderTexto = ""
+ DetalleTexto = ""
+ TrailerTexto = ""
+ TotalAcumulado = 0
+
+ 'Insertar en LayoutEnvios
+ Dim ObjBancos As New ClsBancos
+ ObjBancos.IniciaTransacSQL()
+ Dim ErrorLayout As Boolean = False
+
+ Dim TotalDetalles As Integer = 0
+
+ 'CREA CARPETA SI NO EXISTE
+ Dim path As String = Server.MapPath(String.Format("~/Empresas/{0}/Layout/", UsuarioActual.CveEmpresa))
+ Dim exists As Boolean = System.IO.Directory.Exists(path)
+ If Not exists Then
+ System.IO.Directory.CreateDirectory(path)
+ End If
+
+ Dim CveIEs As String = ""
+ CreaDtPago()
+
+ For Each gvr As DataRow In DTTemp.Rows
+ If gvr("CveCuentaDeposito").ToString <> "" Then
+ DTPendienteActual = DTTemp.FiltraParametros(String.Format("CveIE = {0}", gvr("CveIE").ToString))
+
+ 'ACTUALIZA FECHADOCUMENTO DEL IE
+ 'If CveBLE > 0 Then
+ ' ObjBancos.UpdateBancos_IE(NowADS(), NowADS(), DTPendienteActual(0)("CveIE").ToString.ToEntero)
+ 'End If
+
+ If TotalDetalles > 0 Then
+ DetalleTexto &= vbCrLf
+ End If
+ CrearDetallePagos()
+ TotalDetalles += 1
+ End If
+ Next
+
+ FormarTextoPagos(TotalDetalles, TotalAcumulado.ToString.FormatoNumero.Replace(",", "").Replace(".", ""))
+ CreaArchivo(1)
+
+ If CveBLE > 0 Then
+ 'ACTUALIZAMOS EL ENVIO SI ES REGENERACION
+ If Not ObjBancos.UpdateLayoutEnvios(CveBLE, NowADS()) Then
+ ErrorLayout = True
+ End If
+
+ 'GUARDAMOS EL ENVIO SI NO ES REGENERACION
+ Else
+ Dim CveLayoutEnvio As Integer = ObjBancos.AddLayoutEnvios(NombreArchivo, NowADS(), CveCuenta)
+
+ If CveLayoutEnvio > 0 Then
+ For Each dr As DataRow In DTTemp.Rows
+ If dr("CveProveedor").ToString <> "" Or dr("CvePersonal").ToString <> "" Then
+ If Not ObjBancos.AddLayoutEnviosDetalle(CveLayoutEnvio, dr("CveIE").ToString.ToEntero, dr("CveProveedor").ToString.ToEntero, dr("CvePersonal").ToString.ToEntero, 1, "Observaciones") Then
+ ErrorLayout = True
+ End If
+ End If
+ Next
+ Else
+ ErrorLayout = True
+ End If
+ End If
+
+
+
+ If Not ErrorLayout Then
+ ObjBancos.Commit()
+ ObjBancos.Dispose()
+
+
+ Dim Des As String = String.Format("{0}Layout\{1}", UsuarioActual.Empresa.Ruta, NombreArchivo)
+ Dim Descargas As New StringBuilder()
+ Descargas.AppendFormat("TXT", NombreArchivo)
+ ' Descargas.AppendFormat("Reporte", NombreArchivo)
+ Descargas.AppendFormat("Descargar Reporte", NombreArchivo)
+
+ Alert(String.Format("
El Layout fue creado satisfactoriamente.
Descargas:", Descargas), TipoMensaje.MsgInformacion)
+ 'Alert("El Layout fue creado satisfactoriamente")
+ Else
+ ObjBancos.RollBack()
+ ObjBancos.Dispose()
+ Alert("Ocurrio un problema al registrar la creacion del Layout. Por favor vuelva a intentar.", TipoMensaje.MsgError)
+ End If
+
+ End Sub
+ Protected Sub CrearDetallePagos()
+ 'Dim Resultado = True
+ Dim Importe As String = DTPendienteActual(0)("Abonado").ToString ' importe
+ Dim Divisa As String = DTPendienteActual(0)("Abreviatura").ToString.ToUpper
+ 'Dim Factura As String = "FAC-123456".Replace("-", " ")
+ Dim Referencia As String = ""
+
+ Dim Observaciones As String = DTPendienteActual(0)("Observaciones").ToString.Replace(":", "").Replace("-", " ").Replace(",", "").Replace(vbCrLf, " ").ToUpper
+
+ ''PARA DETECTAR SI ES CIE
+ Dim CuentaDeposito As String
+ Dim CodigoOperacion As String = "2"
+
+ 'Busca que cuenta sera la asignada para el proveedor
+ If DTPendienteActual(0)("CIE").ToString.Length >= 4 Then
+ CuentaDeposito = String.Format("02{0}", DTPendienteActual(0)("CIE").ToString.PadLeft(8, PadCeros))
+ CodigoOperacion = "3"
+ Referencia = If(DTPendienteActual(0)("Referencia").ToString = "", "0", DTPendienteActual(0)("Referencia").ToString) 'String.Format("CVEIE{0}", DTPendienteActual(0)("CveIE").ToString).ToUpper 'cveIE
+ Else
+ Referencia = Observaciones.Replace(" ", "")
+ Referencia = If(Referencia.Length > 20, Referencia.Substring(0, 20), Referencia)
+ Referencia = If(Referencia.Length = 0, "PAGO", Referencia)
+ End If
+
+
+ ''CLAVE DE REGISTRO PARA CONTROL PROPIO ADSISTEMAS -- orita se esta guardando en el campo #9
+ Dim Cve As String = String.Format("CVEIE{0}", DTPendienteActual(0)("CveIE").ToString).ToUpper 'cveIE
+
+
+ ''''' LLENADO DE DETALLE
+ 'Campos #1-6 del Detalle
+ DetalleTexto &= String.Format("DAP{0}{1}PDA", Referencia.PadRight(20), DTPendienteActual(0)("CveCuentaDeposito").ToString.PadLeft(30, PadCeros))
+
+ 'Pago a cuenta BBVA
+ If DTPendienteActual(0)("BancoNombre").ToString.ToUpper.Contains("BANCOMER") Or DTPendienteActual(0)("BancoNombre").ToString.ToUpper.Contains("BBVA") Then
+ 'Campos 7-24 del Detalle
+ 'CVE IE EN CAMPO 9 - VIEJO
+ 'DetalleTexto &= String.Format("{0}{1}{2}{3}N{4}", CodigoOperacion, Vacio.PadLeft(20, PadCeros), Cve.PadRight(15), Vacio.PadRight(139), Vacio.PadRight(187))
+ DetalleTexto &= String.Format("{0}{1}{2}{3}{4}N{5}", CodigoOperacion, Vacio.PadLeft(20, PadCeros), Vacio.PadRight(40), Cve.PadRight(37), Vacio.PadRight(77), Vacio.PadRight(187))
+ Else
+ Dim ReferenciaNumerica As String = "0" 'DTPendienteActual(0)("Referencia").ToString
+ Dim Motivo As String = "Pago de facturas"
+
+ 'Campos 7-24 del Detalle
+ 'CVE IE EN CAMPO 9 - VIELO
+ 'DetalleTexto &= String.Format("6{0}{1}{2}{3}{4}N{5}", Vacio.PadRight(20, PadCeros), Cve.PadRight(15), ReferenciaNumerica.PadRight(25), Motivo.ToUpper.PadRight(37), Vacio.PadRight(77), Vacio.PadRight(187))
+ DetalleTexto &= String.Format("6{0}{1}{2}{3}{4}N{5}", Vacio.PadRight(20, PadCeros), Vacio.PadRight(15), ReferenciaNumerica.PadRight(25), Cve.PadRight(37), Vacio.PadRight(77), Vacio.PadRight(187))
+ End If
+
+ 'OBTENEMOS EL CORREO DEL PROVEEDOR
+ Dim Correo As String = CorreoNotificacionesEmpresa.ToUpper.PadRight(50)
+ 'Correo = If(Correo.Length > 0, Correo.ToUpper.PadRight(50), Vacio.PadRight(50))
+
+ 'Campos 24-50 del Detalle 0 1 2 3 4 5 6 7 8 9
+ DetalleTexto &= String.Format("{0}{1}FA{2}{3}01{4}N{5}{6}{7}{7}{7}{6}N {7}700{8}{9}{7}", Divisa, Vacio.PadLeft(20), Importe.FormatoNumero.Replace(",", "").Replace(".", "").PadLeft(15, PadCeros), Vacio.PadRight(15, PadCeros), Correo, Vacio.PadRight(12, PadCeros), NowADS().ToString("yyyy-MM-dd"), "0001-01-01", Observaciones.PadRight(700), Vacio.PadRight(52))
+ TotalAcumulado += Importe.ToDouble
+
+ ''LLENA DTPAGOS PARA REPORTE
+ Dim Row As DataRow = DtPago.NewRow()
+ Row("Proveedor") = DTPendienteActual(0)("RazonSocial").ToString
+
+ If DTPendienteActual(0)("CIE").ToString <> "" Then
+ Row("Cuenta") = String.Format("02{0}", DTPendienteActual(0)("CIE").ToString.PadLeft(8, PadCeros))
+ ElseIf DTPendienteActual(0)("Cuenta").ToString.Length = 10 Then
+ Row("Cuenta") = DTPendienteActual(0)("Cuenta").ToString
+ ElseIf DTPendienteActual(0)("CLABE").ToString.Length = 18 Then
+ Row("Cuenta") = DTPendienteActual(0)("CLABE").ToString
+ End If
+
+ Row("Importe") = Importe
+ Row("Moneda") = DTPendienteActual(0)("Abreviatura").ToString.ToUpper
+ Row("Observaciones") = DTPendienteActual(0)("Observaciones").ToString
+ DtPago.Rows.Add(Row)
+
+ End Sub
+ Protected Sub FormarTextoPagos(Registros As Integer, Total As String)
+ Dim convenio As String = DTPendienteActual(0)("ConvenioPagoElectronico").ToString
+
+ '''''' LLENADO HEADER
+ 'Campos #1-4 del Header
+ HeaderTexto = String.Format("H{0}{1}01", convenio.PadLeft(9, PadCeros), NowADS().ToString("yyyy-MM-dd"))
+ 'Campo #5 del Header
+ HeaderTexto &= String.Format("P{0}{1}", NowADS().ToString("s").Replace("-", "").Replace(":", ""), Vacio.PadRight(14))
+ 'Campos #6-11 del Header
+ HeaderTexto &= String.Format("00").PadRight(1314)
+
+
+ ''''' LLENADO DE TRAILER
+ TrailerTexto = String.Format("T{0}{1}{2}{3}", Registros.ToString.PadLeft(10, PadCeros), Total.PadLeft(15, PadCeros), Vacio.PadRight(225, PadCeros), Vacio.PadRight(1115))
+
+
+ ''''' ARMADO DEL TEXTO COMPLETO
+ TextoCompleto = String.Format("{1}{0}{2}{0}{3}{0}", vbCrLf, HeaderTexto, DetalleTexto, TrailerTexto)
+
+ End Sub
+#End Region
+
+#Region "CARGA ALTA PROVEEDORES"
+ Private Sub CreaDtAlta()
+
+ DtAlta = New DataTable
+ DtAlta.Columns.Add("CveProveedor", GetType(String))
+
+ DtAlta.Columns.Add("Proveedor", GetType(String))
+ DtAlta.Columns.Add("Banco", GetType(String))
+ DtAlta.Columns.Add("TipoCuenta", GetType(String))
+ DtAlta.Columns.Add("Cuenta", GetType(String))
+ DtAlta.Columns.Add("Estatus", GetType(String))
+
+ DtAlta.Columns.Add("MensajeAdicional", GetType(String))
+ DtAlta.Columns.Add("Moneda", GetType(String))
+
+ End Sub
+
+
+ Protected Sub BtnCargarAlta_Click(sender As Object, e As EventArgs)
+ Dim ErrorArchivo As Boolean = False
+
+ If FUTxt.HasFile Then
+ If Not GuardaTXT() Then
+ Alert("Ocurrio un error al cargar el archivo", TipoMensaje.MsgError)
+ Exit Sub
+ End If
+ Else
+ Alert("No tiene ningun archivo", TipoMensaje.MsgAdvertencia)
+ Exit Sub
+ End If
+
+
+ 'LEE TXT
+ Dim Texto As String
+
+ Dim sr As New System.IO.StreamReader(NombreArchivo)
+ Texto = sr.ReadToEnd()
+ sr.Close()
+
+ Dim TextoArreglo As String() = Texto.Split(CChar(vbCrLf))
+
+ If OpBancos = 1 Then
+ 'Alert(TextoArreglo.Length.ToString)
+
+ 'LEE LINEA POR LINEA
+ Dim RespuestaHeader As String = "", RespuestaDetalle As String = "", RespuestaTrailer As String = "", CveCuentasDeposito As String = ""
+ CreaDtAlta()
+ Dim ObjGrales As New ClsGenerales
+ Dim Row As DataRow = Nothing
+ Dim TipoCuentaDeposito As String = ""
+
+ For i As Integer = 0 To TextoArreglo.Length - 1 Step 1
+ 'Valida que el primer renglon sea el HEADER
+ If i = 0 Then
+ If TextoArreglo(i).Substring(0, 1) <> "H" Then
+ ErrorArchivo = True
+ Exit For
+ Else
+ RespuestaHeader = TextoArreglo(i).Substring(50, 2)
+ End If
+ Else
+ 'LEE DETALLE
+ If TextoArreglo(i).Length > 1 Then
+ If TextoArreglo(i).Substring(1, 1) = "D" Then
+
+ 'If i > 1 Then
+ ' RespuestaDetalle += vbCrLf
+ 'End If
+
+ 'RespuestaDetalle += String.Format("{0} | {1} | ", If(TextoArreglo(i).Substring(197, 1) = "M", TextoArreglo(i).Substring(198, 50).Trim, TextoArreglo(i).Substring(268, 60).Trim), (TextoArreglo(i).Substring(599, 30)))
+
+ ''Guardo CveCuentaDeposito cuando la operacion salio exitosa para actualizar en la DB
+ If TextoArreglo(i).Substring(597, 2) = "00" Or TextoArreglo(i).Substring(597, 2) = "34" Then
+ CveCuentasDeposito += If(CveCuentasDeposito <> "", ",", "")
+ CveCuentasDeposito += TextoArreglo(i).Substring(3, 30).ToEntero.ToString
+ End If
+
+
+ ''LLENA DT PARA REPORTE
+ Row = DtAlta.NewRow()
+
+ Row("Proveedor") = If(TextoArreglo(i).Substring(197, 1) = "M", TextoArreglo(i).Substring(198, 50).Trim, TextoArreglo(i).Substring(268, 60).Trim)
+
+ 'BANCO
+ If ObjGrales.GetCuentasDepositos(CveCuentaDeposito:=TextoArreglo(i).Substring(3, 30).ToEntero) Then
+ If ObjGrales.DtResultados.Rows.Count = 1 Then
+ Row("Banco") = ObjGrales.DtResultados.Rows(0)("BancoNombre").ToString
+ Else
+ ErrorArchivo = True
+ Exit For
+ End If
+ Else
+ ErrorArchivo = True
+ Exit For
+ End If
+
+ 'CUENTA
+ If TextoArreglo(i).Substring(41, 2).Trim <> "" Then
+ Row("Cuenta") = String.Format("{0}", TextoArreglo(i).Substring(43, 35).TrimStart("0"c))
+ ElseIf TextoArreglo(i).Substring(81, 2).Trim <> "" Then
+ Row("Cuenta") = String.Format("{0}", TextoArreglo(i).Substring(83, 35).TrimStart("0"c))
+ Row("TipoCuenta") = "CLABE"
+ Else
+ ErrorArchivo = True
+ Exit For
+ End If
+
+ 'TIPO CUENTA
+ If Row("TipoCuenta").ToString = "" Then
+ If String.Format("{0}", TextoArreglo(i).Substring(43, 35).TrimStart("0"c)).Length = 8 Then
+ Row("TipoCuenta") = "CIE"
+ ElseIf String.Format("{0}", TextoArreglo(i).Substring(43, 35).TrimStart("0"c)).Length = 10 Or String.Format("{0}", TextoArreglo(i).Substring(43, 35).TrimStart("0"c)).Length = 9 Then
+ Row("TipoCuenta") = "Cuenta"
+ ElseIf String.Format("{0}", TextoArreglo(i).Substring(43, 35).TrimStart("0"c)).Length = 18 Then
+ Row("TipoCuenta") = "CLABE"
+ End If
+ End If
+
+ Row("Estatus") = TextoArreglo(i).Substring(599, 30)
+
+ DtAlta.Rows.Add(Row)
+
+ ''LLENA PARA ALERT
+ 'If i > 1 Then
+ ' RespuestaDetalle += vbCrLf
+ 'End If
+
+ 'RespuestaDetalle += String.Format("{0} | {1} | ", If(TextoArreglo(i).Substring(197, 1) = "M", TextoArreglo(i).Substring(198, 50).Trim, TextoArreglo(i).Substring(268, 60).Trim), (TextoArreglo(i).Substring(599, 30)))
+
+
+ 'LEE TRAILER
+ ElseIf TextoArreglo(i).Substring(1, 1) = "T" Then
+ RespuestaTrailer = TextoArreglo(i).Substring(32, 10)
+ RespuestaTrailer += vbCrLf
+ RespuestaTrailer += TextoArreglo(i).Substring(42, 10)
+ RespuestaTrailer += vbCrLf
+ RespuestaTrailer += TextoArreglo(i).Substring(52, 10)
+ Exit For
+ Else
+ ErrorArchivo = True
+ Exit For
+ End If
+ End If
+ End If
+ Next
+ ObjGrales.Dispose()
+
+
+ Dim Respuesta As New StringBuilder
+ 'LEE ARCHIVO
+ If Not ErrorArchivo Then
+ 'TRADUCE CODIGO RESPUESTA HEADER
+ If RespuestaHeader = "01" Then
+ RespuestaHeader = "ACEPTADO TOTAL"
+ ElseIf RespuestaHeader = "02" Then
+ RespuestaHeader = "ACEPTADO PARCIAL"
+ ElseIf RespuestaHeader = "03" Then
+ RespuestaHeader = "RECHAZADO"
+ End If
+
+ 'DIVIDE DETALLE
+ Dim Detalle As String() = RespuestaDetalle.Split(CChar(vbCrLf))
+
+ 'DIVIDE TRAILER
+ Dim Trailer As String() = RespuestaTrailer.Split(CChar(vbCrLf))
+
+ 'ARMADO DE RESPUESTA
+ Respuesta.AppendFormat("
Resumen de respuesta: {0}
", RespuestaHeader)
+ Respuesta.AppendFormat("Numero de movimientos: {0}
", DtAlta.Rows.Count)
+ Respuesta.Append("------------------------------ Detalle de los movimientos ------------------------------
")
+
+ Respuesta.Append("| # | Proveedor | Banco | Tipo Cuenta | Cuenta | Estatus |
")
+ 'For i = 0 To Detalle.Length - 1
+ ' Respuesta.AppendFormat("| {0} | {1}
", i + 1, Detalle(i).Trim)
+ 'Next
+ Dim i As Integer = 1
+ Dim Style As String = ""
+ Dim TotalExitos As Integer = 0, TotalFracasos As Integer = 0
+ For Each dr As DataRow In DtAlta.Rows
+
+ If dr("estatus").ToString.Trim.Contiene("OPERACION EXITOSA", "ALTA TERCERO EXITOSO") Then
+ Style = ""
+ TotalExitos += 1
+ Else
+ Style = "style=""background-color:#FF5F5F;"" "
+ TotalFracasos += 1
+ End If
+
+ Respuesta.AppendFormat("| {0} | {1} | {2} | {3} | {4} | {5} |
", i, dr("Proveedor"), dr("Banco"), dr("TipoCuenta"), dr("Cuenta"), dr("estatus"), Style)
+ i += 1
+ Next
+
+ Respuesta.Append("
-------------------------------------------------------------------------------------
")
+
+ Respuesta.AppendFormat("Total de movimientos exitosos: {0}
", TotalExitos)
+ Respuesta.AppendFormat("Total de movimientos NO exitosos: {0}
", TotalFracasos)
+
+ 'LEE DESDE EL LAYOUT
+ 'Respuesta.AppendFormat("Total de altas rechazadas: {0}
", Trailer(0).ToString.ToEntero)
+ 'Respuesta.AppendFormat("Total de bajas rechazadas: {0}
", Trailer(1).ToString.ToEntero)
+ 'Respuesta.AppendFormat("Total de cambios rechazados: {0}
", Trailer(2).ToString.ToEntero)
+
+ End If
+
+ If Not ErrorArchivo Then
+
+ If CveCuentasDeposito <> "" Then
+ Dim ObjIE As New ClsBancos
+ Dim ErrorDB As Boolean = False
+ ObjIE.IniciaTransacSQL()
+ Dim ArrayCuentasDeposito As String() = CveCuentasDeposito.Split(","c)
+
+ For index As Integer = 0 To ArrayCuentasDeposito.Length - 1
+ If Not ObjIE.UpdateCuentaDepositoPagoElectronico(ArrayCuentasDeposito(index).ToEntero) Then
+ ErrorDB = True
+ End If
+ Next
+
+ If Not ErrorDB Then
+ ObjIE.Commit()
+ Respuesta.Append("
NOTA: El archivo se analizo correctamente y se efectuaron todos los cambios en el sistema.")
+ 'Respuesta.AppendFormat("
Descargar reporte", NombreArchivo)
+ Respuesta.AppendFormat("Descargar Reporte", NombreArchivo)
+
+ Alert(Respuesta.ToString, TipoMensaje.MsgInformacion)
+ Else
+ ObjIE.RollBack()
+ Respuesta.Append("
NOTA: El archivo se analizo correctamente pero ocurrio un problema al efectuar los cambios en el sistema. Por favor vuelta a intentar.")
+ Alert(Respuesta.ToString, TipoMensaje.MsgError)
+ End If
+
+ ObjIE.Dispose()
+ Else
+ Respuesta.AppendFormat("
NOTA: El archivo se analizo correctamente pero ningun movimiento fue exitoso.")
+ 'Respuesta.AppendFormat("
Descargar reporte", NombreArchivo)
+ Respuesta.AppendFormat("Descargar Reporte", NombreArchivo)
+
+ Alert(Respuesta.ToString, TipoMensaje.MsgAdvertencia)
+ End If
+
+ Else
+ Alert("Ocurrio un problema al leer el archivo. Por favor revise que el archivo sea el correcto e intente de nuevo.", TipoMensaje.MsgError)
+ End If
+ End If
+
+
+ If OpBancos = 3 Then
+
+ Dim SBCuentasAltas As New StringBuilder
+ Dim SBErrores As New StringBuilder
+ Dim ErrorArchivoScotia As Boolean = False
+
+ Dim H As String = TextoArreglo(0)
+
+ If Not TextoArreglo.Length >= 3 Then
+ Alert("El archivo no tiene el formato correcto, debe tener al menos 3 lineas (Header, Detalle y Trailer)")
+ Exit Sub
+ End If
+
+ If H.Length <> 140 Then
+ Alert("LA logitud del de la cabecera es incorrecta")
+ Exit Sub
+ End If
+
+ Dim TipoArchivo As String = H.Substring(0, 2).ToUpper
+
+ If TipoArchivo <> "SP" Then
+ Alert($"El archivo no es un archivo de respuesta, inicia con codigo {TipoArchivo}")
+ End If
+
+ Dim HCodigo As String = H.Substring(40, 3)
+ If HCodigo <> "000" And HCodigo <> " " Then
+ SBErrores.Append($"EL codigo de la cabecera es incorrecto {HCodigo} - {AltaCuentaScotiaCodigoRespuestaAnexoC(HCodigo)}.")
+ ErrorArchivoScotia = True
+ End If
+
+ Dim ObjBancos As New ClsBancos
+
+ For i As Integer = 1 To TextoArreglo.Length - 2 Step 1
+
+ Dim Linea As String = TextoArreglo(i)
+
+ If Linea.Length = 140 Then
+
+ Dim CodigoRespuesta As String = Linea.Substring(0, 3)
+ Dim Cuenta As String = Linea.Substring(12, 20)
+ 'Dim FechaEliminacion As Date = Linea.Substring(32, 8).ToDate
+
+ Dim FechaEliminacion As Date = Date.ParseExact(Linea.Substring(32, 8), "yyyyMMdd", Globalization.CultureInfo.InvariantCulture)
+
+ If CodigoRespuesta = "000" Or CodigoRespuesta = " " Then
+
+ Dim CveCuentaDeposito As Integer = Linea.Substring(40, 50).Trim.ToEntero
+
+ If CveCuentaDeposito > 0 Then
+
+ If ObjBancos.UpdateCuentaDepositoPagoElectronico(CveCuentaDeposito, Opcion:=3, FechaEliminacion:=FechaEliminacion) Then
+ SBCuentasAltas.Append($"Cuenta: {Cuenta} registrada correctamente.")
+ Else
+ ErrorArchivoScotia = True
+ End If
+ Else
+ SBErrores.Append($"Error Linea {i} Cve: {CveCuentaDeposito} cuenta: {Cuenta} no encontrada.")
+ ErrorArchivoScotia = True
+ End If
+ Else
+ SBErrores.Append($"Error Linea {i} cuenta no dada de alta codigo {CodigoRespuesta} - {AltaCuentaScotiaCodigoRespuestaAnexoC(CodigoRespuesta)}.")
+ ErrorArchivoScotia = True
+ End If
+ Else
+ SBErrores.Append($"Error en logitud de la linea {i} es incorrecta, ")
+ ErrorArchivoScotia = True
+ End If
+
+ Next
+
+ If ErrorArchivoScotia Then
+ Alert($"El archivo presento errores en su procesamiento({SBErrores.Length}). Se dieron de alta {SBCuentasAltas.Length} cuentas.Altas:{SBCuentasAltas.ToString}.
Errores:
{SBErrores.ToString}", TipoMensaje.MsgAdvertencia)
+ Else
+ Alert($"El archivo se analizo correctamente y se efectuaron todos los cambios en el sistema. cuentas procesadas: {SBCuentasAltas.ToString}", TipoMensaje.MsgInformacion)
+ End If
+
+ ObjBancos.Dispose()
+
+ End If
+
+
+
+ 'ELIMINA TXT
+ My.Computer.FileSystem.DeleteFile(NombreArchivo)
+
+ RecargaDatos()
+
+ End Sub
+
+
+ Public Function AltaCuentaScotiaCodigoRespuestaAnexoC(ByVal codigo As String) As String
+ Select Case codigo
+ Case "002" : Return "NO EXISTE NOMBRE DE APLICACION EN EL NOMBRE DE ARCHIVO"
+ Case "003" : Return "EL NUM DE CONTRATO EN EL NOMBRE DE ARCHIVO NO ES NUMERICO"
+ Case "004" : Return "EL NUMERO DE CONTRATO EN EL NOMBRE DE ARCHIVO ES CERO"
+ Case "005" : Return "EL NUM DE SECUENCIA EN NOMBRE DE ARCHIVO NO ES NUMERICO"
+ Case "006" : Return "EL NUMERO DE SECUENCIA EN EL NOMBRE DE ARCHIVO ES CERO"
+ Case "007" : Return "LA CLAVE DE ARCHIVO ES INVALIDA"
+ Case "008" : Return "LA CLAVE DE REGISTRO ES INVALIDA"
+ Case "009" : Return "NO EXISTE NOMBRE DE APLICACION EN EL REGISTRO HA"
+ Case "010" : Return "EL NOMBRE DE APLICACION NO CORRESPONDE AL ARCHIVO"
+ Case "011" : Return "EL NUMERO DE CONTRATO EN EL REGISTRO HA NO ES NUMERICO"
+ Case "012" : Return "EL NUMERO DE CONTRATO EN EL REGISTRO HA ES CERO"
+ Case "013" : Return "EL NUMERO DE CONTRATO NO CORRESPONDE AL ARCHIVO"
+ Case "014" : Return "EL CONTRATO NO EXISTE"
+ Case "015" : Return "EL NUMERO DE SECUENCIA EN EL REGISTRO HA NO ES NUMERICO"
+ Case "016" : Return "EL NUMERO DE SECUENCIA EN EL REGISTRO HA ES CERO"
+ Case "017" : Return "EL NUMERO DE SECUENCIA NO CORRESPONDE AL ARCHIVO"
+ Case "018" : Return "EL MOVIMIENTO CUENTA ES UN DATO OBLIGATORIO"
+ Case "019" : Return "EL MOVIMIENTO CUENTA DEBE SER A"
+ Case "020" : Return "EL NUMERO DE BANCO NO ES NUMERICO"
+ Case "021" : Return "EL NUMERO DE BANCO NO EXISTE EN EL CATALOGO"
+ Case "022" : Return "EL TIPO DE CUENTA ES INVALIDO PARA ESE BANCO"
+ Case "023" : Return "EL TIPO DE CUENTA NO ES NUMERICO"
+ Case "024" : Return "LA MONEDA DE LA CUENTA NO ES NUMERICO"
+ Case "025" : Return "LA MONEDA DE LA CUENTA NO TIENE UN VALOR PERMITIDO"
+ Case "026" : Return "LA FECHA DE DE VIGENCIA NO ES NUMERICA"
+ Case "027" : Return "LA FECHA DE VIGENCIA ESTA FUERA DE RANGO"
+ Case "028" : Return "EL IMPORTE LIMITE ES NO NUMERICO"
+ Case "029" : Return "EL NUMERO DE ALTAS SOLICITADAS NO ES NUMERICO"
+ Case "030" : Return "EL NUMERO DE CAMBIOS SOLICITADOS NO ES NUMERICO"
+ Case "031" : Return "EL NUMERO DE BAJAS SOLICITADAS NO ES NUMERICO"
+ Case "032" : Return "EL NUMERO DE CONSULTAS SOLICITADAS NO ES NUMERICO"
+ Case "033" : Return "EL NUMERO DE ALTAS SOLICITADAS NO COINCIDE"
+ Case "034" : Return "EL NUMERO DE CAMBIOS SOLICITADOS NO COINCIDE"
+ Case "035" : Return "EL NUMERO DE BAJAS SOLICITADAS NO COINCIDE"
+ Case "036" : Return "EL NUMERO DE CONSULTAS SOLICITADAS NO COINCIDE"
+ Case "037" : Return "ARCHIVO RECHAZADO POR MOVIMIENTOS RECHAZADOS"
+ Case "038" : Return "ARCHIVO RECHAZADO POR NO EXISTIR MOVIMIENTOS CORRECTOS"
+ Case "039" : Return "EL NUMERO DE CUENTA NO ES NUMERICO"
+ Case "040" : Return "EL NUMERO DE CUENTA NO CERO"
+ Case "041" : Return "EL NUMERO DE CUENTA NO EXISTE"
+ Case "042" : Return "EL NUMERO DE CUENTA NO PERTENECE A ESE BANCO"
+ Case "043" : Return "LA PLAZA ABM NO EXISTE"
+ Case "044" : Return "EL DIGITO VERIFICADOR DE LA CLABE NO CORRESPONDE"
+ Case "045" : Return "LA CUENTA NO ESTA ACTIVA"
+ Case "046" : Return "LA CUENTA YA EXISTE"
+ Case "047" : Return "LA CUENTA NO EXISTE"
+ Case "048" : Return "EL TIPO DE CUENTA NO ES NUMERICO"
+ Case "049" : Return "EL TIPO DE CUENTA NO TIENE UN VALOR PERMITIDO"
+ Case "050" : Return "EL IMPORTE LIMITE ES CERO"
+ Case "051" : Return "NO EXISTE LA CLAVE DE MANTEMIMIENTO/CONSULTA"
+ Case "052" : Return "LA CLAVE DE MANT/CONS NO TIENE UN VALOR PERMITIDO"
+ Case "053" : Return "TIPO DE REGISTRO NO VALIDO PARA ARCHIVO DE CONSULTA"
+ Case Else : Return "CÓDIGO DESCONOCIDO"
+ End Select
+ End Function
+
+
+ Public Function PagosScotiaCodigoRespuestaAnexoC(ByVal codigo As String) As String
+ codigo = codigo.PadLeft(3, "0"c)
+ Select Case codigo
+ Case "000" : Return "NO ERROR (OK)"
+ Case "001" : Return "FIN DE ARCHIVO"
+ Case "002" : Return "ARCHIVO NO ENCONTRADO"
+ Case "003" : Return "LECTURA: REGISTRO NO UNICO"
+ Case "006" : Return "ERROR FUERA DE CATEGORIAS DE CICS"
+ Case "007" : Return "COMANDOS EN ORDEN ILOGICO"
+ Case "008" : Return "NO SE TIENE AUTORIZACION"
+ Case "009" : Return "MISMO BANCO PROGRAMADO - VALIDACION DE ESTRUCTURA Y ESTATUS (INACTIVO, CANCELADO)"
+ Case "010" : Return "ARCHIVO NO ABIERTO"
+ Case "011" : Return "TEF - VALIDACION DE ESTRUCTURA (ERRONEA)"
+ Case "012" : Return "SPEI - VALIDACION DE ESTRUCTURA (ERRONEA)"
+ Case "013" : Return "ERROR DE I/O NO CUBIERTO POR CICS"
+ Case "014" : Return "LONGITUD DE REGISTRO ERRONEA"
+ Case "015" : Return "ARCHIVO NO DISPONIBLE"
+ Case "016" : Return "ESCRITURA: REGISTRO DUPLICADO"
+ Case "017" : Return "NO HAY ESPACIO EN EL DISPOSITIVO PARA ADICIONAR REGISTRO"
+ Case "019" : Return "OTRO ERROR DE I/O"
+ Case "020" : Return "DATO NO NUMERICO"
+ Case "021" : Return "DATO REQUERIDO (SI LA OPERACIÓN ES SPID CONTACTE A SU EJECUTIVO DE RELACIÓN PARA REVISAR LA DIRECCION REGISTRADA)"
+ Case "022" : Return "VALOR FUERA DE RANGO"
+ Case "023" : Return "DATO NO COINCIDE CON NOMBRE DE ARCHIVO"
+ Case "024" : Return "ERROR EN SECUENCIA DE REGISTROS"
+ Case "025" : Return "NO EXISTE CONTRATO"
+ Case "026" : Return "NO EXISTE PLAZA"
+ Case "027" : Return "NO EXISTE SUCURSAL"
+ Case "028" : Return "NO EXISTE CUENTA"
+ Case "029" : Return "CUENTA NO ACTIVA"
+ Case "030" : Return "CUENTA NO RELACIONADA AL CONTRATO"
+ Case "031" : Return "NO EXISTE BANCO"
+ Case "032" : Return "MONEDA INVALIDA PARA ESE PRODUCTO"
+ Case "033" : Return "ERROR EN CIFRA DE CONTROL"
+ Case "034" : Return "ARCHIVO RECHAZADO POR REGISTROS RECHAZADOS"
+ Case "035" : Return "PAGO DUPLICADO"
+ Case "036" : Return "NO EXISTE PAGO"
+ Case "037" : Return "ARCHIVO NO PENDIENTE DE VALIDACION"
+ Case "038" : Return "CONTRATO NO ACTIVO"
+ Case "039" : Return "ARCHIVO RECHAZADO POR QUE NO TIENE REGISTROS CORRECTOS"
+ Case "040" : Return "MONEDA DE REGISTRO DETALLE DIFERENTE A MONEDA DE CUENTA DE CARGO"
+ Case "041" : Return "FECHA INHABIL"
+ Case "042" : Return "FECHA DE APLICACION INVALIDA PARA ESE TIPO DE PAGO"
+ Case "043" : Return "NUMERO DE BANCO INVALIDO PARA ESE TIPO DE PAGO"
+ Case "044" : Return "HORARIO SUCURSAL NO DISPONIBLE"
+ Case "045" : Return "IMPORTE SUPERIOR AL PERMITIDO SPEI"
+ Case "046" : Return "LA CUENTA DE ABONO NO ESTA REGISTRADA EN LA BASE DE DATOS DEL BANCO PARA ESE CONTRATO"
+ Case "047" : Return "IMPORTE SUPERIOR AL AUTORIZADO POR EL CLIENTE PARA ESA CUENTA DE ABONO"
+ Case "048" : Return "FECHA DE CONSTITUCION ERRONEA"
+ Case "049" : Return "TIPO DE CUENTA INVALIDA SPID"
+ Case "050" : Return "SPID ES SOLO PARA PERSONAS MORALES"
+ Case "051" : Return "ERROR AL HACER REGISTRO EN TOTALES"
+ Case "052" : Return "ERROR AL HACER CARGO A CHEQUES"
+ Case "053" : Return "EL MOVIMIENTO NO ESTA PENDIENTE DE PAGO"
+ Case "054" : Return "ERROR AL REVERSAR CARGO A CHEQUES"
+ Case "055" : Return "SU TRANSACCIÓN NO PUEDE SER PROCESADA EN ESTE MOMENTO CONTACTE A SU EJECUTIVO DE RELACIÓN (CLAVE 99)."
+ Case "056" : Return "EL CERTIFICADO DE SU FIEL NO ES VIGENTE. FAVOR DE SOLICITAR A SU EJECUTIVO LA ACTUALIZACIÓN PARA PODER OPERAR SPID."
+ Case "057" : Return "SU TRANSACCIÓN NO PUEDE SER PROCESADA EN ESTE MOMENTO CONTACTE A SU EJECUTIVO DE RELACIÓN (CLAVE 88)."
+ Case "058" : Return "EL MONTO DE LA OPERACIÓN SOBREPASA EL DISPONIBLE PARA ESTE BENEFICIARIO."
+ Case "059" : Return "TRANSACCION SPID DEVUELTA"
+ Case "060" : Return "PAGO NO DISPONIBLE EN HORARIO EXTENDIDO"
+ Case "061" : Return "INSUFICIENCIA DE FONDOS"
+ Case "062" : Return "CAMBIO A ABONO EN CUENTA DE DEVOLUCIONES"
+ Case "063" : Return "CAMBIO A PAGO EN VENTANILLA EFECTIVO"
+ Case "064" : Return "CAMBIO A CHEQUE DE CAJA AL BENEFICIARIO EN VENTANILLA"
+ Case "065" : Return "CAMBIO A CHEQUE DE CAJA CENTRAL AL BENEFICIARIO"
+ Case "066" : Return "CAMBIO A CHEQUE DE CAJA CENTRAL A LA EMPRESA POR TOTAL"
+ Case "067" : Return "CAMBIO A CHEQUE DE CAJA CENTRAL A LA EMPRESA POR DETALLE"
+ Case "068" : Return "CAMBIO ORIGINADO POR UN PAGO EN VENTANILLA"
+ Case "069" : Return "CAMBIO ORIGINADO POR UN ABONO A CHEQUES"
+ Case "070" : Return "CAMBIO ORIGINADO POR UN ABONO A AHORROS"
+ Case "071" : Return "CAMBIO ORIGINADO POR UN DEPOSITO INTERBANCARIO"
+ Case "072" : Return "CAMBIO ORIGINADO POR UN MOVIMIENTO DE TRANSFERENCIA DE FONDOS"
+ Case "073" : Return "BAJA RECHAZADA POR PAGO EN LINEA"
+ Case "074" : Return "DEVOLUCION GLOBAL POR RECHAZOS"
+ Case "075" : Return "DEVOLUCION GLOBAL POR VENCIMIENTO DE VIGENCIAS"
+ Case "076" : Return "DEVOLUCION GLOBAL POR BAJAS SOLICITADAS"
+ Case "077" : Return "HORARIO DE OPERACIÓN NO DISPONIBLE SPID"
+ Case "078" : Return "EL ABONO EXCEDE EL MÁXIMO PERMITIDO A LA CUENTA"
+ Case Else : Return "CÓDIGO DESCONOCIDO"
+ End Select
+ End Function
+
+
+
+
+#End Region
+
+#Region "CARGA PAGO PROVEEDORES"
+ Private Sub CreaDtPago()
+
+ DtPago = New DataTable
+ DtPago.Columns.Add("NumeroConvenio", GetType(String))
+ DtPago.Columns.Add("ClaveProveedor", GetType(String))
+ DtPago.Columns.Add("ReferenciaPago", GetType(String))
+ DtPago.Columns.Add("TipoPago", GetType(String))
+
+ DtPago.Columns.Add("Proveedor", GetType(String))
+ DtPago.Columns.Add("Cuenta", GetType(String))
+ DtPago.Columns.Add("Importe", GetType(Decimal))
+ DtPago.Columns.Add("Moneda", GetType(String))
+ DtPago.Columns.Add("Observaciones", GetType(String))
+
+ DtPago.Columns.Add("FechaOperacion", GetType(String))
+
+ End Sub
+
+
+ Protected Sub BtnCargarPago_Click(sender As Object, e As System.EventArgs)
+ Dim ErrorArchivo As Boolean = False
+ Dim TextoErrorArchivo As String = "Ocurrió un problema al leer el archivo, por favor revise que el archivo sea el correcto e intente de nuevo."
+
+ If FUTxt.HasFile Then
+ If Not GuardaTXT() Then
+ Alert("Ocurrio un error al cargar el archivo", TipoMensaje.MsgError)
+ Exit Sub
+ End If
+ Else
+ Alert("No tiene ningun archivo", TipoMensaje.MsgAdvertencia)
+ Exit Sub
+ End If
+
+
+ 'LEE TXT
+ Dim Texto As String
+ Dim sr As New System.IO.StreamReader(NombreArchivo)
+ Texto = sr.ReadToEnd()
+ sr.Close()
+ Dim TextoArreglo As String() = Texto.Split(CChar(vbCrLf))
+
+ If OpBancos = 1 Then
+ 'INICIALIZA VARIABLES
+ Dim ObjBancos As New ClsBancos
+ Dim RespuestaHeader As String = "", RespuestaDetalle As String = "", RespuestaTrailer As String = "", Proveedor As String = "", CuentaAbono As String = "", Estatus As String = "", CveIEs As String = "", EstatusIEs As String = "", FechaMovto As String = "", Correos As String = ""
+ Dim Row As DataRow = Nothing
+ Dim Convenio As String = ""
+ CreaDtPago()
+
+ 'LEE LINEA POR LINEA
+ For i As Integer = 0 To TextoArreglo.Length - 1
+ 'Valida que el primer renglon sea el HEADER
+ If i = 0 Then
+ If TextoArreglo(i).Substring(0, 1) <> "H" Then
+ ErrorArchivo = True
+ Exit For
+ Else
+ ' Codigo de respuesta | Cuenta cargo
+ RespuestaHeader = String.Format("{0}|{1}", TextoArreglo(i).Substring(52, 2), TextoArreglo(i).Substring(77, 35))
+ Convenio = TextoArreglo(i).Substring(2, 9)
+ End If
+ Else
+ If TextoArreglo(i).Length > 1 Then
+
+ 'LEE DETALLE
+ If TextoArreglo(i).Substring(1, 1) = "D" Then
+ If i > 1 Then
+ RespuestaDetalle += vbCrLf
+ End If
+
+ 'TRUENA PORQUE AHORA ES LA CVECUENTADEPOSITO
+ 'Proveedor = GlobalDTCompProveedores(UsuarioActual.CveEmpresa).FiltraParametros(String.Format("CveProveedor = {0}", TextoArreglo(i).Substring(24, 30).ToEntero)).Rows(0)("RazonSocial").ToString
+
+ Correos += If(Correos <> "", "|", "")
+
+ If ObjBancos.GetProveedorCuentaDeposito(TextoArreglo(i).Substring(24, 30).ToDouble.ToEntero) Then
+ If ObjBancos.DtResultados.Rows.Count > 0 Then
+
+ Proveedor = ObjBancos.DtResultados.Rows(0)("RazonSocial").ToString
+
+ 'Correos += If(TextoArreglo(i).Substring(477, 50).Trim = "", "-1", TextoArreglo(i).Substring(477, 50).Trim)
+ Correos += String.Format("{0};{1}", ObjBancos.DtResultados.Rows(0)("NotificarA").ToString, ObjBancos.DtResultados.Rows(0)("ContactoMailCobranza").ToString)
+
+
+ ''SELECCIONA CUENTA ABONO PARA CORREO
+ Select Case TextoArreglo(i).Substring(57, 1).ToEntero
+ Case 1
+ CuentaAbono = "NO APLICA"
+ Case 2
+ CuentaAbono = If(ObjBancos.DtResultados.Rows(0)("Cuenta").ToString <> "", ObjBancos.DtResultados.Rows(0)("Cuenta").ToString, ObjBancos.DtResultados.Rows(0)("CLABE").ToString)
+ Case 3
+ CuentaAbono = ObjBancos.DtResultados.Rows(0)("CIE").ToString
+ Case 4
+ CuentaAbono = ObjBancos.DtResultados.Rows(0)("SWIFT").ToString
+ Case 5, 6, 7
+ CuentaAbono = ObjBancos.DtResultados.Rows(0)("CLABE").ToString
+ End Select
+
+ Else
+ Proveedor = "PROVEEDOR NO ENCONTRADO"
+ End If
+ Else
+ Proveedor = "PROVEEDOR NO ENCONTRADO"
+ End If
+
+ Estatus = If(TextoArreglo(i).Substring(1325, 2) = "00", "OPERACION EXITOSA: ", "OPERACION FALLIDA: ")
+ ' Proveedor | Importe | Descripcion estatus
+ RespuestaDetalle += String.Format("{0} | {1}.{2} | | {5} | {3}{4} | ", Proveedor, TextoArreglo(i).Substring(445, 13).ToDouble.ToEntero, TextoArreglo(i).Substring(458, 2).ToEntero, Estatus, TextoArreglo(i).Substring(1327, 30), TextoArreglo(i).Substring(420, 3))
+
+ ''Guardo CveIE cuando la operacion salio exitosa para actualizar en la DB el IE
+ 'If TextoArreglo(i).Substring(1325, 2) = "00" Then
+ CveIEs += If(CveIEs <> "", ",", "")
+ 'VIEJO IE EN CAMPO 9
+ 'CveIEs += TextoArreglo(i).Substring(83, 10).Trim
+ CveIEs += TextoArreglo(i).Substring(123, 32).Trim
+
+ 'SI VIENE SIN RESPUESTA ES ERROR DE ARCHIVO
+ If TextoArreglo(i).Substring(1325, 2).Trim = "" Then
+ ErrorArchivo = True
+ TextoErrorArchivo = "El archivo que se intento procesar no es de respuesta. Por favor verifique cargar el archivo correcto."
+ Exit For
+ End If
+
+ EstatusIEs += If(EstatusIEs <> "", ",", "")
+ EstatusIEs += If(TextoArreglo(i).Substring(1325, 2) = "00", "2", "3")
+
+ FechaMovto += If(FechaMovto <> "", ",", "")
+ FechaMovto += TextoArreglo(i).Substring(540, 10)
+
+ 'If Proveedor = "PROVEEDOR NO ENCONTRADO" Or CuentaAbono = "" Then
+ ' Continue For
+ 'End If
+
+
+ ''LLENA DTPAGOS PARA CORREO
+ Row = DtPago.NewRow()
+ Row("NumeroConvenio") = Convenio
+ Row("ClaveProveedor") = TextoArreglo(i).Substring(24, 30)
+ Row("Proveedor") = Proveedor
+ Row("ReferenciaPago") = TextoArreglo(i).Substring(4, 20)
+ Row("Cuenta") = CuentaAbono
+
+ Select Case TextoArreglo(i).Substring(57, 1).ToEntero
+ Case 1
+ Row("TipoPago") = "1 .- ABONO EN VENTANILLA"
+ Case 2
+ Row("TipoPago") = "2 .- ABONO A CUENTAS BANCOMER"
+ Case 3
+ Row("TipoPago") = "3 .- ABONO A CONVENIO CIE"
+ Case 4
+ Row("TipoPago") = "4 .- ABONO A CUENTA INTERNACIONAL VIA SWIFT"
+ Case 5
+ Row("TipoPago") = "5 .- ABONO A CUENTA INTERBANCARIA DIA SIGUIENTE"
+ Case 6
+ Row("TipoPago") = "6 .- ABONO A CUENTA INTERBANCARIA MISMO DIA"
+ Case 7
+ Row("TipoPago") = "7 .- ABONO A CUENTA INTERNACIONAL VIA ACH"
+ End Select
+
+ Try
+ Row("Cuenta") = If(Row("Cuenta").ToString = "", String.Format("******{0}", CuentaAbono.Substring(CuentaAbono.Length - 4, 4)), Row("Cuenta").ToString)
+ Catch ex As Exception
+ Row("Cuenta") = "******"
+ End Try
+
+ Row("Importe") = String.Format("{0}.{1}", TextoArreglo(i).Substring(445, 13), TextoArreglo(i).Substring(458, 2)).ToDecimal.ToString
+ Row("FechaOperacion") = TextoArreglo(i).Substring(540, 10)
+ Row("Observaciones") = TextoArreglo(i).Substring(605, 700).Trim
+ DtPago.Rows.Add(Row)
+
+ 'End If
+
+ 'LEE TRAILER
+ ElseIf TextoArreglo(i).Substring(1, 1) = "T" Then
+
+ 'PARA BCOM, YA QUE TRUNCA EL STRING CUANDO SOLO ES MXP
+ If TextoArreglo(i).Length < 1367 Then
+ TextoArreglo(i) = TextoArreglo(i).PadRight(1367)
+ End If
+
+ RespuestaTrailer += "------------------------------------------------------------ RESUMEN ------------------------------------------------------------"
+ RespuestaTrailer += String.Format("| Concepto | Pesos (MXP) | Dolares (USD) |
")
+ RespuestaTrailer += String.Format("| Total registros rechazados: | {0} | {1} |
", TextoArreglo(i).Substring(77, 10).ToDouble.ToEntero.ToString, TextoArreglo(i).Substring(327, 10).ToDouble.ToEntero.ToString)
+ RespuestaTrailer += String.Format("| Total Importe rechazado: $: | {0}.{1} | {2}.{3} |
", TextoArreglo(i).Substring(87, 13).ToDouble.ToEntero.ToString, TextoArreglo(i).Substring(100, 2).ToDouble.ToEntero.ToString, TextoArreglo(i).Substring(337, 13).ToDouble.ToEntero.ToString, TextoArreglo(i).Substring(350, 2).ToDouble.ToEntero.ToString)
+ RespuestaTrailer += String.Format("| Total registros aceptados: | {0} | {1} |
", TextoArreglo(i).Substring(177, 10).ToDouble.ToEntero.ToString, TextoArreglo(i).Substring(302, 10).ToDouble.ToEntero.ToString)
+ RespuestaTrailer += String.Format("| Total Importe aceptado $: | {0}.{1} | {2}.{3} |
", TextoArreglo(i).Substring(187, 13).ToDouble.ToEntero.ToString, TextoArreglo(i).Substring(200, 2).ToDouble.ToEntero.ToString, TextoArreglo(i).Substring(312, 13).ToDouble.ToEntero.ToString, TextoArreglo(i).Substring(325, 2).ToDouble.ToEntero.ToString)
+
+ 'RespuestaTrailer += String.Format("Total registros rechazados: {1}{0} Total Importe rechazado: $ {2}.{3}{0} Total registros aceptados: {4}{0} Total Importe aceptado: $ {5}.{6}{0}", "
", TextoArreglo(i).Substring(77, 10).ToDouble.ToEntero.ToString, TextoArreglo(i).Substring(87, 13).ToDouble.ToEntero.ToString, TextoArreglo(i).Substring(100, 2).ToDouble.ToEntero.ToString, TextoArreglo(i).Substring(177, 10).ToDouble.ToEntero.ToString, TextoArreglo(i).Substring(187, 13).ToDouble.ToEntero.ToString, TextoArreglo(i).Substring(200, 2).ToEntero.ToString)
+ Else
+ ErrorArchivo = True
+ Exit For
+ End If
+ End If
+ End If
+ Next
+
+ ObjBancos.Dispose()
+
+ Dim Respuesta As New StringBuilder
+ If Not ErrorArchivo Then
+
+ 'DIVIDE HEADER
+ Dim Header As String() = RespuestaHeader.Split(CChar("|"))
+ 'TRADUCE CODIGO RESPUESTA HEADER
+ If Header(0) = "01" Then
+ RespuestaHeader = "ACEPTADO TOTAL"
+ ElseIf Header(0) = "02" Then
+ RespuestaHeader = "ACEPTADO PARCIAL"
+ ElseIf Header(0) = "03" Then
+ RespuestaHeader = "RECHAZADO"
+ End If
+ RespuestaHeader += String.Format("
Cuenta Cargo: {0}", Header(1))
+
+ 'DIVIDE DETALLE
+ Dim Detalle As String() = RespuestaDetalle.Split(CChar(vbCrLf))
+
+ 'ARMADO DE RESPUESTA
+ Respuesta.AppendFormat("
Resumen de respuesta: {0}
", RespuestaHeader)
+ Respuesta.AppendFormat("Numero de movimientos: {0}
", Detalle.Length.ToString)
+ Respuesta.Append("----------------------------------------------------- Detalle de los movimientos --------------------------------------------------
")
+ Respuesta.Append("| # | Proveedor | Importe($) | | Moneda | Estatus |
")
+ For i As Integer = 0 To Detalle.Length - 1
+ Respuesta.AppendFormat("| {0} | {1}
", i + 1, Detalle(i).Trim)
+ Next
+ Respuesta.Append("
----------------------------------------------------------------------------------------------------------------------
")
+ Respuesta.AppendFormat(RespuestaTrailer)
+
+
+ End If
+
+ If Not ErrorArchivo Then
+ If CveIEs <> "" Then
+ Dim ObjIE As New ClsBancos
+ Dim ErrorDB As Boolean = False
+ ObjIE.IniciaTransacSQL()
+ Dim ArrayCveIEs As String() = CveIEs.Split(","c)
+ Dim ArrayEstatusIEs As String() = EstatusIEs.Split(","c)
+ Dim ArrayFechasMovto As String() = FechaMovto.Split(","c)
+ Dim ArrayCorreos As String() = Correos.Split("|"c)
+
+ Dim ArregloHilos As New Generic.List(Of System.Threading.Thread)
+ Dim ArregloParametros As New Generic.List(Of List(Of String))
+
+ For index As Integer = 0 To ArrayCveIEs.Length - 1
+ If ObjIE.UpdatePagoElectronicoCarga(ArrayCveIEs(index).ToEntero, ArrayEstatusIEs(index).ToEntero) Then
+
+ 'Cuando salio exitoso actualizamos el IE
+ If ArrayEstatusIEs(index).ToEntero = 2 Then
+ If ObjIE.UpdateIEPagoElectronico(ArrayCveIEs(index).ToEntero, ArrayFechasMovto(index).ToDate, UsuarioActual.CveEmpresa, UsuarioActual.CveUsuario) Then 'DESPROGRAMA LAS COMPRAS RELACIONADAS EN ESTE PA
+
+ 'Cambiamos estatus notificación
+ If ObjIE.UpdateBancos_IENotificaciones(2, "-1", "-1", ArrayCveIEs(index).ToEntero) Then
+
+ 'Obtenemos los correos del movimiento
+ If ArrayCorreos(index) <> "-1" Or ArrayCorreos(index) <> "" Then
+
+
+
+ Dim Param As New List(Of String)
+
+ Param.Add(ArrayCveIEs(index).ToString)
+ Param.Add(ArrayCorreos(index)) 'Para
+ 'Param.Add("Notificación de Pago") 'Asunto
+ 'Param.Add(GeneraCorreo2(DtPago.Rows(index), ObjIE, ArrayCveIEs(index).ToEntero)) 'Body
+
+ ' EnviarCorreoNotificacion()
+ 'Dim Hilo As New Threading.Thread(AddressOf MandaCorreo)
+ 'ArregloHilos.Add(Hilo)
+
+ ArregloParametros.Add(Param)
+
+ End If
+ Else
+ ErrorDB = True
+ End If
+
+ Else
+ ErrorDB = True
+ End If
+ Else
+
+ 'Cuando salio NO exitoso cancelamos el IE
+ If ObjIE.CancelarBancos_IE(UsuarioActual.CveUsuario, ArrayCveIEs(index).ToEntero, False, -1, -1) <= 0 Then
+ ErrorDB = True
+ End If
+ End If
+
+ Else
+ ErrorDB = True
+ End If
+ Next
+
+ If Not ErrorDB Then
+ ObjIE.Commit()
+ 'ObjIE.RollBack()
+
+ ''EMPIEZA A ENVIAR CORREO POR HILOS
+ 'For index = 0 To ArregloHilos.Count - 1
+ ' ArregloHilos(index).Start(ArregloParametros(index))
+ 'Next
+
+ For Each ObjParametros As Object In ArregloParametros
+
+ Dim Parametros As List(Of String) = DirectCast(ObjParametros, List(Of String))
+
+ Dim CveIENotificar As Integer = Parametros(0).ToEntero
+ Dim NotificarA As String = Parametros(1)
+
+ EnviarCorreoNotificacion(CveIENotificar, NotificarA, "", UsuarioActual, False)
+
+ Next
+ Respuesta.Append("
NOTA: El archivo se analizo correctamente y se efectuaron todos los cambios en el sistema.")
+ Alert(Respuesta.ToString, TipoMensaje.MsgInformacion)
+
+ CargaDatos()
+ Else
+ ObjIE.RollBack()
+ Respuesta.Append("
NOTA: El archivo se analizo correctamente pero ocurrió un problema al efectuar los cambios en el sistema. Por favor vuelva a intentar.")
+ Alert(Respuesta.ToString, TipoMensaje.MsgError)
+ End If
+
+ ObjIE.Dispose()
+ Else
+ Respuesta.AppendFormat("
NOTA: El archivo se analizo correctamente pero ningun movimiento fue exitoso.")
+ Alert(Respuesta.ToString, TipoMensaje.MsgAdvertencia)
+ End If
+ Else
+ Alert(TextoErrorArchivo, TipoMensaje.MsgError)
+ End If
+
+ End If
+
+ If OpBancos = 2 Then
+
+ End If
+
+ If OpBancos = 3 Then
+
+ Dim CveIES As List(Of Integer) = New List(Of Integer)
+ Dim LienasCount As Integer = TextoArreglo.Length
+ Dim SBErrores As New StringBuilder
+ Dim SBPagosAplicados As New StringBuilder
+ Dim ErrorArchivoScotia As Boolean = False
+
+ If Not LienasCount >= 6 Then
+ Alert("El archivo no es un archivo de respuesta valido, debe tener al menos 6 lineas.", TipoMensaje.MsgError)
+ Exit Sub
+ End If
+
+ Dim Header As String = TextoArreglo(0)
+ Dim HCodigo As String = TextoArreglo(0).Substring(0, 3).Trim
+ If HCodigo <> "SVH" Then
+ Alert("El archivo no es un archivo de respuesta, debe tener un encabezado con SVH.", TipoMensaje.MsgError)
+ Exit Sub
+ End If
+ If Header.Length <> 370 Then
+ Alert("El archivo no es un archivo de respuesta, debe tener un encabezado con una longitud de 370 caracteres.", TipoMensaje.MsgError)
+ Exit Sub
+ End If
+
+
+ Dim ListaPagoScotiaDetalle As New List(Of ClsPagoScotiaDetalle)
+
+ For x As Integer = 2 To TextoArreglo.Length - 3 Step 2
+
+ Dim PagoScotiaDetalle As New ClsPagoScotiaDetalle
+
+ Dim LineaDetalle As String = TextoArreglo(x)
+ Dim CodigoRespuestaDetalle As String = LineaDetalle.Substring(323, 3)
+ Dim Correo As String = TextoArreglo(x + 1).Substring(4, 100).Trim
+ Dim CveIE As Integer = LineaDetalle.Substring(106, 16).Trim.ToEntero 'Referencia del pago
+
+ If LineaDetalle.Length <> 370 Then
+ SBErrores.Append($"Error en la linea {x} - La longitud de la linea debe ser de 370 caracteres.")
+ ErrorArchivoScotia = True
+ Continue For
+ End If
+
+ If CodigoRespuestaDetalle = "000" Then
+ 'ok
+ Else
+ SBErrores.Append($"Error en la linea {x} Codigo de respuesta {CodigoRespuestaDetalle} - {PagosScotiaCodigoRespuestaAnexoC(CodigoRespuestaDetalle)}.")
+ ErrorArchivoScotia = True
+ End If
+
+
+ Dim FechaAplicacion As Date = Date.ParseExact(LineaDetalle.Substring(23, 8).Trim, "yyyyMMdd", Globalization.CultureInfo.InvariantCulture)
+
+ PagoScotiaDetalle.CodigoRespuesta = CodigoRespuestaDetalle
+ PagoScotiaDetalle.Correo = Correo
+ PagoScotiaDetalle.OK = If(CodigoRespuestaDetalle = "000", True, False)
+ PagoScotiaDetalle.FechaAplicacion = FechaAplicacion
+ PagoScotiaDetalle.Importe = String.Format("{0}.{1}", LineaDetalle.Substring(8, 13).Trim, LineaDetalle.Substring(21, 2).Trim).ToDecimal
+
+
+ If PagoScotiaDetalle.OK Then
+ PagoScotiaDetalle.ErrorRechazo = ""
+ Else
+ PagoScotiaDetalle.ErrorRechazo = PagosScotiaCodigoRespuestaAnexoC(CodigoRespuestaDetalle)
+ End If
+
+ PagoScotiaDetalle.CveIE = CveIE
+
+
+ ListaPagoScotiaDetalle.Add(PagoScotiaDetalle)
+
+ Next
+
+ 'Aceptados
+ 'CANTIDAD DE MOVIMIENTOS ALTAS NUM 7 53 59
+ 'IMPORTE DE MOVIMIENTOS ALTAS NUM 17 2 60 76
+
+ 'Rechazaados
+ 'CANTIDAD DE MOVIMIENTOS ALTAS NUM 7 101 107
+ 'IMPORTE DE MOVIMIENTOS ALTAS NUM 17 2 108 124
+
+ Dim Trailer As String = TextoArreglo(LienasCount - 1)
+ Dim TAceptadosCantidad As Integer = Trailer.Substring(52, 7).ToEntero
+ Dim TImporteAceptados As Decimal = String.Format("{0}.{1}", Trailer.Substring(59, 15), Trailer.Substring(74, 2)).ToDecimal
+
+ Dim TRechazadosCantidad As Integer = Trailer.Substring(100, 7).ToEntero
+ Dim TImporteRechazados As Decimal = String.Format("{0}.{1}", Trailer.Substring(107, 15), Trailer.Substring(122, 2)).ToDecimal
+ Dim objIE As New ClsBancos
+
+ Dim Respuesta As New StringBuilder
+ Respuesta.AppendFormat("
Resumen de respuesta: {0}
", PagosScotiaCodigoRespuestaAnexoC(HCodigo))
+ Respuesta.AppendFormat("Numero de movimientos aceptados: {0}
", TAceptadosCantidad.ToString)
+ Respuesta.AppendFormat("Importe aceptados: {0}
", TImporteAceptados.ToString("C2"))
+ Respuesta.AppendFormat("Numero de movimientos rechazados: {0}
", TRechazadosCantidad.ToString)
+ Respuesta.AppendFormat("Importe rechazados: {0}
", TImporteRechazados.ToString("C2"))
+
+
+ objIE.IniciaTransacSQL()
+ Dim ErrorDB As Boolean = False
+
+ For Each PagoScotiaDetalle As ClsPagoScotiaDetalle In ListaPagoScotiaDetalle
+ If PagoScotiaDetalle.OK Then
+ 'Actualiza el IE
+ If objIE.UpdatePagoElectronicoCarga(PagoScotiaDetalle.CveIE, If(PagoScotiaDetalle.OK, 2, 3)) Then
+ 'Actualiza el IE como pagado
+ If objIE.UpdateIEPagoElectronico(PagoScotiaDetalle.CveIE, PagoScotiaDetalle.FechaAplicacion, UsuarioActual.CveEmpresa, UsuarioActual.CveUsuario) Then
+ 'Cambiamos estatus notificación
+ If objIE.UpdateBancos_IENotificaciones(2, "-1", "-1", PagoScotiaDetalle.CveIE) Then
+ 'Envia correo de notificación si tiene correo
+ If PagoScotiaDetalle.Correo <> "" AndAlso PagoScotiaDetalle.Correo <> "-1" Then
+ 'EnviarCorreoNotificacion(PagoScotiaDetalle.CveIE, PagoScotiaDetalle.Correo, "", UsuarioActual, False)
+ End If
+ Else
+ ErrorDB = True
+ End If
+ Else
+ ErrorDB = True
+ End If
+ Else
+ ErrorDB = True
+ End If
+ Else
+ 'Cancela el IE por error de pago
+ If objIE.CancelarBancos_IE(UsuarioActual.CveUsuario, PagoScotiaDetalle.CveIE, False, -1, -1) <= 0 Then
+ ErrorDB = True
+ End If
+ End If
+ Next
+
+ 'For index As Integer = 0 To ArrayCveIEs.Length - 1
+ ' If ObjIE.UpdatePagoElectronicoCarga(ArrayCveIEs(index).ToEntero, ArrayEstatusIEs(index).ToEntero) Then
+
+ ' 'Cuando salio exitoso actualizamos el IE
+ ' If ArrayEstatusIEs(index).ToEntero = 2 Then
+ ' If ObjIE.UpdateIEPagoElectronico(ArrayCveIEs(index).ToEntero, ArrayFechasMovto(index).ToDate, UsuarioActual.CveEmpresa, UsuarioActual.CveUsuario) Then 'DESPROGRAMA LAS COMPRAS RELACIONADAS EN ESTE PA
+
+ ' 'Cambiamos estatus notificación
+ ' If ObjIE.UpdateBancos_IENotificaciones(2, "-1", "-1", ArrayCveIEs(index).ToEntero) Then
+
+ ' 'Obtenemos los correos del movimiento
+ ' If ArrayCorreos(index) <> "-1" Or ArrayCorreos(index) <> "" Then
+
+
+
+ ' Dim Param As New List(Of String)
+
+ ' Param.Add(ArrayCveIEs(index).ToString)
+ ' Param.Add(ArrayCorreos(index)) 'Para
+ ' 'Param.Add("Notificación de Pago") 'Asunto
+ ' 'Param.Add(GeneraCorreo2(DtPago.Rows(index), ObjIE, ArrayCveIEs(index).ToEntero)) 'Body
+
+ ' ' EnviarCorreoNotificacion()
+ ' 'Dim Hilo As New Threading.Thread(AddressOf MandaCorreo)
+ ' 'ArregloHilos.Add(Hilo)
+
+ ' ArregloParametros.Add(Param)
+
+ ' End If
+ ' Else
+ ' ErrorDB = True
+ ' End If
+
+ ' Else
+ ' ErrorDB = True
+ ' End If
+ ' Else
+
+ ' 'Cuando salio NO exitoso cancelamos el IE
+ ' If ObjIE.CancelarBancos_IE(UsuarioActual.CveUsuario, ArrayCveIEs(index).ToEntero, False, -1, -1) <= 0 Then
+ ' ErrorDB = True
+ ' End If
+ ' End If
+
+ ' Else
+ ' ErrorDB = True
+ ' End If
+ 'Next
+
+
+ If Not ErrorDB Then
+ objIE.Commit()
+
+ Try
+ For Each PagoScotiaDetalle As ClsPagoScotiaDetalle In ListaPagoScotiaDetalle
+ If PagoScotiaDetalle.OK Then
+ EnviarCorreoNotificacion(PagoScotiaDetalle.CveIE, PagoScotiaDetalle.Correo, "", UsuarioActual, False)
+ End If
+ Next
+ Catch ex As Exception
+ Alert("Ocurrió un error al enviar los correos de notificación.", TipoMensaje.MsgError)
+ End Try
+
+
+ Alert(Respuesta.ToString, TipoMensaje.MsgInformacion)
+
+ Else
+ objIE.RollBack()
+ End If
+
+ End If
+
+
+
+ 'ELIMINA TXT
+ My.Computer.FileSystem.DeleteFile(NombreArchivo)
+
+ RecargaDatos()
+
+ End Sub
+#End Region
+
+
+
+ 'FUNCIONARIO O EMPLEADO
+#Region " ALTA FUNCIONARIO "
+ Private Sub CargaFyE()
+ Dim ObjBancos As New ClsBancos
+
+ If ObjBancos.GetLayoutFyE(DdlCuenta.SelectedValue.ToEntero, UsuarioActual.CveEmpresa) Then
+ DTFyE = ObjBancos.DtResultados.FiltraParametros("LEN(RFC) In (13)")
+ Else
+ DTFyE = Nothing
+ End If
+ ObjBancos.Dispose()
+
+ If DTFyE.Rows.Count > 0 Then
+ GvProveedores.DataSource = DTFyE
+ End If
+ GvProveedores.DataBind()
+
+ UpProveedores.Update()
+ End Sub
+ Private Sub GeneraAltaFyE()
+ Dim DtTemp As DataTable = Nothing
+
+ 'REINICIA PROPIEDAS
+ HeaderTexto = ""
+ DetalleTexto = ""
+ TrailerTexto = ""
+ TotalAcumulado = 0
+ CreaDtAlta()
+
+ DtTemp = DTFyE
+
+ ''VALIDA CUENTAS DEPOSITOS
+ Dim ErrorCuenta As Boolean = False
+ Dim FyEError As StringBuilder = New StringBuilder
+ FyEError.AppendFormat("| Personal | Cuenta | Error |
")
+
+ Dim TotalDetalles As Integer = 0
+ Dim EsBancomer As Boolean = False
+ For Each gvr As DataRow In DtTemp.Rows
+ If gvr("CvePersonal").ToString <> "" AndAlso gvr("EstatusPagoElectronico").ToString <> "True" AndAlso gvr("AltaCuenta").ToString = "1" Then
+ DTPendienteActual = DtTemp.FiltraParametros(String.Format("CveCuentaDeposito = {0}", gvr("CveCuentaDeposito").ToString))
+ ErrorCuenta = False
+ EsBancomer = False
+
+ If DTPendienteActual(0)("BancoNombre").ToString.ToUpper.Contains("BBVA") Or DTPendienteActual(0)("BancoNombre").ToString.ToUpper.Contains("BANCOMER") Or (DTPendienteActual(0)("CLABE").ToString.Length = 18 AndAlso DTPendienteActual(0)("CLABE").ToString.Substring(0, 3) = "012") Then
+ EsBancomer = True
+ End If
+
+ 'CLABE SIEMPRE OBLIGATORIA SI NO ES BANCOMER
+ If Not ErrorCuenta Then
+ If DTPendienteActual(0)("CLABE").ToString.Trim.Length <> 18 And DTPendienteActual(0)("CLABE").ToString.Trim.Length = 0 And Not EsBancomer Then
+ FyEError.AppendFormat("| {0} | {1} | CLABE ES OBLIGATORIA |
", DTPendienteActual(0)("RazonSocial").ToString, DTPendienteActual(0)("BancoNombre").ToString)
+ ErrorCuenta = True
+ End If
+ End If
+
+ 'SI CUENTA TIENE ALGO Y BANCO BANCOMER DEBE TENER UNA LOGITUD EXACTA DE 10
+ If Not ErrorCuenta Then
+ If DTPendienteActual(0)("Cuenta").ToString.Trim.Length <> 0 AndAlso DTPendienteActual(0)("Cuenta").ToString.Trim.Length <> 10 AndAlso EsBancomer Then
+ FyEError.AppendFormat("| {0} | {1} | NUMERO DE CUENTA CON FORMATO INCORRECTO |
", DTPendienteActual(0)("RazonSocial").ToString, DTPendienteActual(0)("BancoNombre").ToString)
+ ErrorCuenta = True
+ End If
+ End If
+
+ 'SI CLABE TIENE ALGO DEBE TENER UNA LOGITUD EXACTA DE 18
+ If Not ErrorCuenta Then
+ If DTPendienteActual(0)("CLABE").ToString.Trim.Length <> 0 AndAlso DTPendienteActual(0)("CLABE").ToString.Trim.Length <> 18 Then
+ FyEError.AppendFormat("| {0} | {1} | CLABE CON FORMATO INCORRECTO |
", DTPendienteActual(0)("RazonSocial").ToString, DTPendienteActual(0)("BancoNombre").ToString)
+ ErrorCuenta = True
+ End If
+ End If
+
+ 'SI CIE TIENE ALGO DEBE TENER REFERENCIA OBLIGATORIA
+ If Not ErrorCuenta Then
+ If DTPendienteActual(0)("CIE").ToString.Trim.Length <> 0 And DTPendienteActual(0)("Referencia").ToString.Trim.Length < 3 Then
+ FyEError.AppendFormat("| {0} | {1} | CIE CON FORMATO INCORRECTO |
", DTPendienteActual(0)("RazonSocial").ToString, DTPendienteActual(0)("BancoNombre").ToString)
+ ErrorCuenta = True
+ End If
+ End If
+
+ 'CUANDO SEA "BBVA" O "BANCOMER" DEBE TENER "CIE" O "CUENTA"
+ If Not ErrorCuenta Then
+ If EsBancomer AndAlso Not (DTPendienteActual(0)("Cuenta").ToString.Trim.Length = 10 Or DTPendienteActual(0)("CIE").ToString.Trim.Length <> 0) Then
+ FyEError.AppendFormat("| {0} | {1} | CUENTA BANCOMER SIN CUENTA O CIE |
", DTPendienteActual(0)("RazonSocial").ToString, DTPendienteActual(0)("BancoNombre").ToString)
+ ErrorCuenta = True
+ End If
+ End If
+
+ If Not ErrorCuenta Then
+ If TotalDetalles > 0 Then
+ DetalleTexto &= vbCrLf
+ End If
+ GeneraAltaDetalleFyE()
+ TotalDetalles += 1
+ End If
+
+ End If
+ Next
+ FyEError.AppendFormat("
")
+
+
+ If TotalDetalles > 0 Then
+ FormarTextoAltaFyE(TotalDetalles)
+ CreaArchivo(2)
+
+ Dim Descargas As New StringBuilder()
+ Descargas.AppendFormat("TXT", NombreArchivo)
+ 'Descargas.AppendFormat("Reporte", NombreArchivo)
+ Descargas.AppendFormat("Descargar Reporte", NombreArchivo)
+
+
+ Dim TextoErrorProveedores As String = ""
+ If FyEError.Length > 160 Then TextoErrorProveedores = String.Format("
Proveedores con Error:
------------------------------------------------------------------
{0}
", FyEError.ToString)
+
+ Alert(String.Format("
El Layout fue creado satisfactoriamente.{1}
Descargas:", Descargas, TextoErrorProveedores), TipoMensaje.MsgInformacion)
+
+ 'NombreArchivo = "LayoutAltaProveedores"
+ 'DescargarArchivo()
+ Else
+ Alert("No hay proveedores que dar de alta", TipoMensaje.MsgInformacion)
+ End If
+
+
+ End Sub
+ Private Sub GeneraAltaDetalleFyE()
+ Dim Resultado As Boolean = True
+ Dim CuentaDeposito As String = ""
+ Dim TipoCuentaDeposito As String = ""
+ Dim TipoCuenta As String = ""
+
+ ''''' LLENADO DE DETALLE
+ 'Campos #1-4 del Detalle
+ DetalleTexto &= String.Format("DA{0}N ", DTPendienteActual(0)("CveCuentaDeposito").ToString.ToUpper.PadLeft(30, PadCeros))
+
+ 'Banco BBVA
+ If DTPendienteActual(0)("BancoNombre").ToString.ToUpper.Contains("BBVA") Or DTPendienteActual(0)("BancoNombre").ToString.ToUpper.Contains("BANCOMER") Then
+ 'Llenamos datos de BBVA
+ 'Campo #5-7 del detalle
+
+ 'Busca que cuenta sera la asignada para el proveedor
+ If DTPendienteActual(0)("CIE").ToString <> "" Then
+ CuentaDeposito = String.Format("02{0}", DTPendienteActual(0)("CIE").ToString.PadLeft(8, PadCeros))
+ TipoCuenta = "50"
+ TipoCuentaDeposito = "CIE"
+ ElseIf DTPendienteActual(0)("Cuenta").ToString.Length = 10 Then
+ CuentaDeposito = DTPendienteActual(0)("Cuenta").ToString
+ TipoCuenta = "99"
+ TipoCuentaDeposito = "Cuenta"
+ ElseIf DTPendienteActual(0)("CLABE").ToString.Length = 18 Then
+ CuentaDeposito = DTPendienteActual(0)("CLABE").ToString
+ TipoCuenta = "40"
+ TipoCuentaDeposito = "CLABE"
+ End If
+
+
+ DetalleTexto &= String.Format("{0}{1}{2}", DTPendienteActual(0)("Abreviatura").ToString, TipoCuenta, CuentaDeposito.PadLeft(35, PadCeros))
+
+ 'Llenamos en blanco datos de otros bancos
+ 'Campos 8-17 del detalle --- 64 de otros bancos y 45 para FILLER --- Fecha de Alta
+ DetalleTexto &= String.Format("{0}{1}", Vacio.PadLeft(109), NowADS().ToString("yyyy-MM-dd"))
+
+
+ 'Otros Bancos NACIONAL!!
+ Else
+
+ CuentaDeposito = DTPendienteActual(0)("CLABE").ToString
+ TipoCuentaDeposito = "CLABE"
+
+ 'Llenamos en blanco datos de BBVA
+ DetalleTexto &= Vacio.PadRight(40)
+
+ 'Llenamos datos de otros bancos
+ 'Campos 8- 17 del detalle --- 44 de otros bancos --- 20 de internacional --- 45 Filler -- Fecha de Alta
+ DetalleTexto &= String.Format("{0}40{1}{2}{3}{4}{5}", DTPendienteActual(0)("Abreviatura").ToString, DTPendienteActual(0)("CLABE").ToString.PadLeft(35, PadCeros), DTPendienteActual(0)("CLABE").ToString.Substring(0, 3).PadLeft(4, PadCeros), Vacio.PadRight(20), Vacio.PadRight(45), NowADS().ToString("yyyy-MM-dd"))
+ End If
+
+ 'Llenamos datos de Tipo de Persona - Fisica
+ ' nombres Primer apellido Segundo apellido
+ DetalleTexto &= String.Format("F{0}{1}{2}{3}", Vacio.PadRight(70), DTPendienteActual(0)("Nombres").ToString.PadRight(20).Substring(0, 20), DTPendienteActual(0)("APaterno").ToString.PadRight(20).Substring(0, 20), DTPendienteActual(0)("AMaterno").ToString.PadRight(20).Substring(0, 20))
+
+ 'Campo 25-26 del detalle -- Fecha Nacimiento -- RFC
+ DetalleTexto &= String.Format("{0}{1}", DTPendienteActual(0)("FechaNacimiento").ToString.ToDate.ToString("yyyy-MM-dd"), DTPendienteActual(0)("RFC").ToString.ToUpper.PadRight(14))
+
+ 'Campos 27-32 --- Fillers --- datos de otros bancos (internacional)
+ DetalleTexto &= Vacio.PadLeft(153)
+
+ 'Campos 33-36 --- Datos de confirmacion
+ DetalleTexto &= String.Format("{0}02{1}", Vacio.PadRight(40), CorreoNotificacionesEmpresa.ToUpper.PadRight(50))
+
+ 'If DTPendienteActual(0)("ContactoMail").ToString.Length > 0 Then
+ ' 'DetalleTexto &= String.Format("{0}02{1}", Vacio.PadRight(40), DTPendienteActual(0)("ContactoMail").ToString.ToUpper.PadRight(50))
+ 'ElseIf DTPendienteActual(0)("ContactoMail").ToString.Length <= 0 Then
+ ' DetalleTexto &= String.Format("{0}00{1}", Vacio.PadRight(40), Vacio.PadRight(50))
+ 'End If
+
+ 'Campos 37-39 -- FILLER
+ DetalleTexto &= String.Format("00{0}", Vacio.PadRight(38))
+
+ ''LLENA DT PARA REPORTE
+ Dim Row As DataRow = DtAlta.NewRow()
+ Row("Proveedor") = DTPendienteActual(0)("RazonSocial").ToString
+ Row("Banco") = DTPendienteActual(0)("BancoNombre").ToString
+ Row("TipoCuenta") = TipoCuentaDeposito
+ Row("Cuenta") = String.Format("{0}", CuentaDeposito)
+ DtAlta.Rows.Add(Row)
+ End Sub
+ Protected Sub FormarTextoAltaFyE(Registros As Integer)
+ '''''' LLENADO HEADER
+ Dim convenio As String = DTPendienteActual(0)("ConvenioPagoElectronico").ToString
+ 'Campos #1-4 del Header
+ HeaderTexto = String.Format("H{0}{1}GRUPO01 ", convenio.PadLeft(9, PadCeros), NowADS().ToString("yyyy-MM-dd"))
+ 'Campo #5 del Header
+ HeaderTexto &= String.Format("{0}{1}", UsuarioActual.CveUsuario, NowADS().ToString("yyyyMMdd")).PadRight(20)
+ 'Campos #6-8 del Header
+ HeaderTexto &= String.Format("00").PadRight(586)
+ Dim HeaderLength As Integer = HeaderTexto.Length
+
+ ''''' LLENADO DE TRAILER
+ TrailerTexto = String.Format("T{0}{1}{2}", Registros.ToString.PadLeft(10, PadCeros), Vacio.PadRight(50, PadCeros), Vacio.PadRight(575))
+
+ ''''' ARMADO DEL TEXTO COMPLETO
+ TextoCompleto = String.Format("{1}{0}{2}{0}{3}{0}", vbCrLf, HeaderTexto, DetalleTexto, TrailerTexto)
+ 'TxtAltas.Text = TextoCompleto
+ End Sub
+#End Region
'TABS
-#Region "R E P O R T E S"
- Protected Sub BtnConsultarReportes_Click(sender As Object, e As EventArgs)
- CargaReporte()
- End Sub
-
- Private Sub CargaReporte()
- Dim ObjBancos As New ClsBancos
- Dim FechaI As String = If(IsDate(txtFechaI.Text.Trim()), txtFechaI.Text.Trim(), "-1")
- Dim FechaF As String = If(IsDate(txtFechaF.Text.Trim()), txtFechaF.Text.Trim(), "-1")
-
- If ObjBancos.GetLayoutPagosEnviados(DdlCuentaReportes.SelectedValue.ToEntero, DdlEstatus.SelectedValue.ToEntero, DdlTipoReportes.SelectedValue, FechaI, DateAdd(DateInterval.Day, 1, FechaF.ToDate).ToShortDateString) Then
- DTReportes = ObjBancos.DtResultados
- Else
- DTReportes = Nothing
- End If
- ObjBancos.Dispose()
-
- If DTReportes.Rows.Count > 0 Then
- GvReportes.DataSource = DTReportes
- End If
- GvReportes.DataBind()
-
- UpDatosReportes.Update()
-
- End Sub
-
- Protected Sub GvReportes_RowDataBound(sender As Object, e As GridViewRowEventArgs)
- If e.Row.RowType = DataControlRowType.DataRow Then
-
- 'Colorea GV
- If e.Row.DBCampo("CveProveedor").ToString = "" Then
- e.Row.BackColor = Drawing.Color.LightGray
- Else
- e.Row.FCHyperLink("HLProveedor").NavigateUrl = String.Format("/Compras/Proveedores.aspx?CveProveedor={0}", e.Row.DBCampo("CveProveedor"))
- End If
- End If
- End Sub
-
-
-#End Region
-
-
-#Region "C A R G A - M A S I V A"
- Protected Sub BtnCargaMasiva_Click(sender As Object, e As EventArgs)
- If DdlTipoCargaMasiva.SelectedValue.ToEntero = 1 Then
- TipoMasiva = 1
- GvProveedores.Columns(0).HeaderText = "Proveedor"
- CargaProveedores()
- BtnGenerarProveedores.Text = "Generar Layout Alta Proveedores"
- Else
- TipoMasiva = 2
- GvProveedores.Columns(0).HeaderText = "Funcionario"
- CargaFyE()
- BtnGenerarProveedores.Text = "Generar Layout Alta Funcionarios"
- End If
- End Sub
- Protected Sub BtnGenerarProveedores_Click(sender As Object, e As EventArgs)
-
- If Not DdlCuenta.SelectedValue.ToEntero > 0 Then
- Alert("Primero debe seleccionar una Cuenta", TipoMensaje.MsgAdvertencia)
- Exit Sub
- End If
-
- If TipoMasiva = 1 Then
- AltaProveedores(2)
- Else
- GeneraAltaFyE()
- End If
-
- End Sub
- Private Sub CargaProveedores()
- Dim ObjBancos As New ClsBancos
-
- If ObjBancos.GetLayoutProveedores(DdlCuenta.SelectedValue.ToEntero, UsuarioActual.CveEmpresa) Then
- DTProveedores = ObjBancos.DtResultados.FiltraParametros("LEN(RFC) IN (12,13)")
- Else
- DTProveedores = Nothing
- End If
- ObjBancos.Dispose()
-
- If DTProveedores.Rows.Count > 0 Then
- GvProveedores.DataSource = DTProveedores
- End If
- GvProveedores.DataBind()
-
- UpProveedores.Update()
- End Sub
- Protected Sub GvProveedores_RowDataBound(sender As Object, e As GridViewRowEventArgs)
- If e.Row.RowType = DataControlRowType.DataRow Then
- If TipoMasiva = 1 Then
- e.Row.FCHyperLink("HLProveedor").NavigateUrl = String.Format("/Compras/Proveedores.aspx?CveProveedor={0}", e.Row.DBCampo("CveProveedor"))
- Else
- e.Row.FCHyperLink("HLProveedor").NavigateUrl = String.Format("/RH/Personal.aspx?CvePersonal={0}", e.Row.DBCampo("CvePersonal"))
- End If
- End If
-
-
-
+#Region "R E P O R T E S"
+ Protected Sub BtnConsultarReportes_Click(sender As Object, e As EventArgs)
+ CargaReporte()
End Sub
-#End Region
+
+ Private Sub CargaReporte()
+ Dim ObjBancos As New ClsBancos
+ Dim FechaI As String = If(IsDate(txtFechaI.Text.Trim()), txtFechaI.Text.Trim(), "-1")
+ Dim FechaF As String = If(IsDate(txtFechaF.Text.Trim()), txtFechaF.Text.Trim(), "-1")
+
+ If ObjBancos.GetLayoutPagosEnviados(DdlCuentaReportes.SelectedValue.ToEntero, DdlEstatus.SelectedValue.ToEntero, DdlTipoReportes.SelectedValue, FechaI, DateAdd(DateInterval.Day, 1, FechaF.ToDate).ToShortDateString) Then
+ DTReportes = ObjBancos.DtResultados
+ Else
+ DTReportes = Nothing
+ End If
+ ObjBancos.Dispose()
+
+ If DTReportes.Rows.Count > 0 Then
+ GvReportes.DataSource = DTReportes
+ End If
+ GvReportes.DataBind()
+
+ UpDatosReportes.Update()
+
+ End Sub
+
+ Protected Sub GvReportes_RowDataBound(sender As Object, e As GridViewRowEventArgs)
+ If e.Row.RowType = DataControlRowType.DataRow Then
+
+ 'Colorea GV
+ If e.Row.DBCampo("CveProveedor").ToString = "" Then
+ e.Row.BackColor = Drawing.Color.LightGray
+ Else
+ e.Row.FCHyperLink("HLProveedor").NavigateUrl = String.Format("/Compras/Proveedores.aspx?CveProveedor={0}", e.Row.DBCampo("CveProveedor"))
+ End If
+ End If
+ End Sub
+
+
+#End Region
+
+
+#Region "C A R G A - M A S I V A"
+ Protected Sub BtnCargaMasiva_Click(sender As Object, e As EventArgs)
+ If DdlTipoCargaMasiva.SelectedValue.ToEntero = 1 Then
+ TipoMasiva = 1
+ GvProveedores.Columns(0).HeaderText = "Proveedor"
+ CargaProveedores()
+ BtnGenerarProveedores.Text = "Generar Layout Alta Proveedores"
+ Else
+ TipoMasiva = 2
+ GvProveedores.Columns(0).HeaderText = "Funcionario"
+ CargaFyE()
+ BtnGenerarProveedores.Text = "Generar Layout Alta Funcionarios"
+ End If
+ End Sub
+ Protected Sub BtnGenerarProveedores_Click(sender As Object, e As EventArgs)
+
+ If Not DdlCuenta.SelectedValue.ToEntero > 0 Then
+ Alert("Primero debe seleccionar una Cuenta", TipoMensaje.MsgAdvertencia)
+ Exit Sub
+ End If
+
+ If TipoMasiva = 1 Then
+
+ If OpBancos = 1 Then
+ AltaProveedores(2)
+ End If
+
+ If OpBancos = 2 Then
+ '
+ End If
+
+ If OpBancos = 3 Then
+ AltaProveedoresScotia(DTProveedores)
+ End If
+
+
+ Else
+ GeneraAltaFyE()
+ End If
+
+ End Sub
+ Private Sub CargaProveedores()
+ Dim ObjBancos As New ClsBancos
+
+ If ObjBancos.GetLayoutProveedores(DdlCuenta.SelectedValue.ToEntero, UsuarioActual.CveEmpresa) Then
+ DTProveedores = ObjBancos.DtResultados.FiltraParametros("LEN(RFC) IN (12,13)")
+ Else
+ DTProveedores = Nothing
+ End If
+ ObjBancos.Dispose()
+
+ If DTProveedores.Rows.Count > 0 Then
+ GvProveedores.DataSource = DTProveedores
+ End If
+ GvProveedores.DataBind()
+
+ UpProveedores.Update()
+ End Sub
+ Protected Sub GvProveedores_RowDataBound(sender As Object, e As GridViewRowEventArgs)
+ If e.Row.RowType = DataControlRowType.DataRow Then
+ If TipoMasiva = 1 Then
+ e.Row.FCHyperLink("HLProveedor").NavigateUrl = String.Format("/Compras/Proveedores.aspx?CveProveedor={0}", e.Row.DBCampo("CveProveedor"))
+ Else
+ e.Row.FCHyperLink("HLProveedor").NavigateUrl = String.Format("/RH/Personal.aspx?CvePersonal={0}", e.Row.DBCampo("CvePersonal"))
+ End If
+ End If
+
+
+
+ End Sub
+#End Region
'CORREO
-#Region " GENERA Y MANDA CORREO "
+#Region " GENERA Y MANDA CORREO "
Private Sub EnviarCorreoNotificacion(CveIENotificar As Integer, CorreoNotificarA As String, CopiaPara As String, UsuarioActualNotificar As Usuario, MostarAlert As Boolean)
@@ -2184,9 +3711,9 @@ Partial Class Bancos_PagoElectronico
' Return strBody.ToString
'End Function
-#End Region
+#End Region
-#Region " GENERA CORREO 2"
+#Region " GENERA CORREO 2"
'Private Function GeneraCorreo2(Dr As DataRow, ByRef ObjIE As ClsBancos, CveIE As Integer) As String
' Dim strBody As New StringBuilder
@@ -2724,95 +4251,112 @@ Partial Class Bancos_PagoElectronico
'End Function
-#End Region
+#End Region
-#Region " IMPRIMIR "
- Protected Sub BtnReporteAltaCarga_Click(sender As Object, e As EventArgs)
- Dim Archivo As New System.IO.FileInfo(String.Format("{0}Formatos/LayoutAltaProveedor.rdlc", UsuarioActual.Empresa.Ruta))
- Dim Imagen As New System.IO.FileInfo($"{UsuarioActual.Empresa.Ruta}/Logo.png")
-
-
- 'Estatus visible
- Dim params As New List(Of ReportParameter)
- params.Add(New ReportParameter("MostrarEstatus", "True"))
-
- If Archivo.Exists Then
- 'ImprimirPDF(UsuarioActual.Empresa.Ruta & "Formatos/LayoutAltaProveedor.rdlc", DtAlta, params, "LayoutAltaProveedor", RDSName:="DsPagoElectronico")
- ImprimirPDF(String.Format("{0}Formatos\LayoutAltaProveedor.rdlc", UsuarioActual.Empresa.Ruta), DtAlta, params, "LayoutAltaProveedor", RDSName:="DsPagoElectronico")
+#Region " IMPRIMIR "
+ Protected Sub BtnReporteAltaCarga_Click(sender As Object, e As EventArgs)
+ Dim Archivo As New System.IO.FileInfo(String.Format("{0}Formatos/LayoutAltaProveedor.rdlc", UsuarioActual.Empresa.Ruta))
+ Dim Imagen As New System.IO.FileInfo($"{UsuarioActual.Empresa.Ruta}/Logo.png")
+
+
+ 'Estatus visible
+ Dim params As New List(Of ReportParameter)
+ params.Add(New ReportParameter("MostrarEstatus", "True"))
+
+ If Archivo.Exists Then
+ 'ImprimirPDF(UsuarioActual.Empresa.Ruta & "Formatos/LayoutAltaProveedor.rdlc", DtAlta, params, "LayoutAltaProveedor", RDSName:="DsPagoElectronico")
+ ImprimirPDF(String.Format("{0}Formatos\LayoutAltaProveedor.rdlc", UsuarioActual.Empresa.Ruta), DtAlta, params, "LayoutAltaProveedor", RDSName:="DsPagoElectronico")
Else
- params.Add(New ReportParameter("LogoPath", If(Imagen.Exists, $"file://{Imagen.FullName}", "")))
-
-
- params.Add(New ReportParameter("Empresa", UsuarioActual.Empresa.Empresa))
- params.Add(New ReportParameter("Direccion", UsuarioActual.Empresa.Direccion))
- params.Add(New ReportParameter("RFC", UsuarioActual.Empresa.RFC))
- params.Add(New ReportParameter("FechaImpresion", NowADS().ToString("dd/MM/yyyy")))
-
-
- ImprimirPDF("Empresas/Grales/Formatos/LayoutAltaProveedor.rdlc", DtAlta, params, "LayoutAltaProveedor", RDSName:="DsPagoElectronico")
- End If
- End Sub
- Protected Sub BtnReporteAltaGenera_Click(sender As Object, e As EventArgs)
- Dim Archivo As New System.IO.FileInfo(String.Format("{0}Formatos/LayoutAltaProveedor.rdlc", UsuarioActual.Empresa.Ruta))
- Dim Imagen As New System.IO.FileInfo($"{UsuarioActual.Empresa.Ruta}/Logo.png")
-
- 'Estatus no visible
- Dim params As New List(Of ReportParameter)
- params.Add(New ReportParameter("MostrarEstatus", "False"))
-
- If Archivo.Exists Then
- ImprimirPDF(String.Format("{0}Formatos\LayoutAltaProveedor.rdlc", UsuarioActual.Empresa.Ruta), DtAlta, params, "LayoutAltaProveedor", RDSName:="DsPagoElectronico")
- Else
+ params.Add(New ReportParameter("LogoPath", If(Imagen.Exists, $"file://{Imagen.FullName}", "")))
- params.Add(New ReportParameter("LogoPath", If(Imagen.Exists, $"file://{Imagen.FullName}", "")))
-
- params.Add(New ReportParameter("Empresa", UsuarioActual.Empresa.Empresa))
- params.Add(New ReportParameter("Direccion", UsuarioActual.Empresa.Direccion))
- params.Add(New ReportParameter("RFC", UsuarioActual.Empresa.RFC))
- params.Add(New ReportParameter("FechaImpresion", NowADS().ToString("dd/MM/yyyy")))
- ImprimirPDF("Empresas/Grales/Formatos/LayoutAltaProveedor.rdlc", DtAlta, params, "LayoutAltaProveedor", RDSName:="DsPagoElectronico")
- End If
-
- End Sub
- Protected Sub BtnReportePago_Click(sender As Object, e As EventArgs)
- Dim Archivo As New System.IO.FileInfo(String.Format("{0}Formatos/LayoutAltaProveedor.rdlc", UsuarioActual.Empresa.Ruta))
- Dim Imagen As New System.IO.FileInfo($"{UsuarioActual.Empresa.Ruta}/Logo.png")
-
- Dim params As New List(Of ReportParameter)
-
-
- If Archivo.Exists Then
- ImprimirPDF(String.Format("{0}Formatos\LayoutPagoProveedor.rdlc", UsuarioActual.Empresa.Ruta), DtPago, params, "LayoutPagoProveedor", RDSName:="DSPagoElectronicoV2")
- Else
- params.Add(New ReportParameter("LogoPath", If(Imagen.Exists, $"file://{Imagen.FullName}", "")))
-
- params.Add(New ReportParameter("NombreEmpresa", UsuarioActual.Empresa.Empresa))
- params.Add(New ReportParameter("Direccion", UsuarioActual.Empresa.Direccion))
- params.Add(New ReportParameter("RFC", UsuarioActual.Empresa.RFC))
+ params.Add(New ReportParameter("Empresa", UsuarioActual.Empresa.Empresa))
+ params.Add(New ReportParameter("Direccion", UsuarioActual.Empresa.Direccion))
+ params.Add(New ReportParameter("RFC", UsuarioActual.Empresa.RFC))
params.Add(New ReportParameter("FechaImpresion", NowADS().ToString("dd/MM/yyyy")))
- params.Add(New ReportParameter("UsuarioImprimio", UsuarioActual.Nombre))
- params.Add(New ReportParameter("Titulo", "Reporte Pago Proveedor Layout"))
-
- ImprimirPDF("Empresas/Grales/Formatos/LayoutPagoProveedor.rdlc", DtPago, params, "LayoutPagoProveedor", RDSName:="DSPagoElectronicoV2")
- End If
-
- End Sub
-#End Region
-
-
- 'NO QUITAR, SE OCUPA PARA EXPORTAR PDF
- Public Overrides Sub VerifyRenderingInServerForm(ByVal control As Control)
- Return
- End Sub
-
-
-
-End Class
+ ImprimirPDF("Empresas/Grales/Formatos/LayoutAltaProveedor.rdlc", DtAlta, params, "LayoutAltaProveedor", RDSName:="DsPagoElectronico")
+ End If
+ End Sub
+ Protected Sub BtnReporteAltaGenera_Click(sender As Object, e As EventArgs)
+ Dim Archivo As New System.IO.FileInfo(String.Format("{0}Formatos/LayoutAltaProveedor.rdlc", UsuarioActual.Empresa.Ruta))
+ Dim Imagen As New System.IO.FileInfo($"{UsuarioActual.Empresa.Ruta}/Logo.png")
+
+ 'Estatus no visible
+ Dim params As New List(Of ReportParameter)
+ params.Add(New ReportParameter("MostrarEstatus", "False"))
+
+ If Archivo.Exists Then
+ ImprimirPDF(String.Format("{0}Formatos\LayoutAltaProveedor.rdlc", UsuarioActual.Empresa.Ruta), DtAlta, params, "LayoutAltaProveedor", RDSName:="DsPagoElectronico")
+ Else
+
+ params.Add(New ReportParameter("LogoPath", If(Imagen.Exists, $"file://{Imagen.FullName}", "")))
+
+ params.Add(New ReportParameter("Empresa", UsuarioActual.Empresa.Empresa))
+ params.Add(New ReportParameter("Direccion", UsuarioActual.Empresa.Direccion))
+ params.Add(New ReportParameter("RFC", UsuarioActual.Empresa.RFC))
+ params.Add(New ReportParameter("FechaImpresion", NowADS().ToString("dd/MM/yyyy")))
+ ImprimirPDF("Empresas/Grales/Formatos/LayoutAltaProveedor.rdlc", DtAlta, params, "LayoutAltaProveedor", RDSName:="DsPagoElectronico")
+ End If
+
+ End Sub
+ Protected Sub BtnReportePago_Click(sender As Object, e As EventArgs)
+ Dim Archivo As New System.IO.FileInfo(String.Format("{0}Formatos/LayoutAltaProveedor.rdlc", UsuarioActual.Empresa.Ruta))
+ Dim Imagen As New System.IO.FileInfo($"{UsuarioActual.Empresa.Ruta}/Logo.png")
+
+ Dim params As New List(Of ReportParameter)
+
+
+ If Archivo.Exists Then
+ ImprimirPDF(String.Format("{0}Formatos\LayoutPagoProveedor.rdlc", UsuarioActual.Empresa.Ruta), DtPago, params, "LayoutPagoProveedor", RDSName:="DSPagoElectronicoV2")
+ Else
+
+ params.Add(New ReportParameter("LogoPath", If(Imagen.Exists, $"file://{Imagen.FullName}", "")))
+
+ params.Add(New ReportParameter("NombreEmpresa", UsuarioActual.Empresa.Empresa))
+ params.Add(New ReportParameter("Direccion", UsuarioActual.Empresa.Direccion))
+ params.Add(New ReportParameter("RFC", UsuarioActual.Empresa.RFC))
+ params.Add(New ReportParameter("FechaImpresion", NowADS().ToString("dd/MM/yyyy")))
+
+
+ params.Add(New ReportParameter("UsuarioImprimio", UsuarioActual.Nombre))
+ params.Add(New ReportParameter("Titulo", "Reporte Pago Proveedor Layout"))
+
+ ImprimirPDF("Empresas/Grales/Formatos/LayoutPagoProveedor.rdlc", DtPago, params, "LayoutPagoProveedor", RDSName:="DSPagoElectronicoV2")
+ End If
+
+ End Sub
+#End Region
+
+
+ 'NO QUITAR, SE OCUPA PARA EXPORTAR PDF
+ Public Overrides Sub VerifyRenderingInServerForm(ByVal control As Control)
+ Return
+ End Sub
+
+
+
+ Friend Class ClsPagoScotiaDetalle
+
+ Public Property CodigoRespuesta As String
+ Public Property OK As Boolean
+ Public Property Correo As String
+ Public Property CveIE As Integer
+ Public Property ErrorRechazo As String
+ Public Property FechaAplicacion As Date
+ Public Property Importe As Decimal
+
+ Public Sub New()
+
+ End Sub
+
+ End Class
+
+
+End Class
diff --git a/Bancos/PagoElectronicoGrupos.aspx.vb b/Bancos/PagoElectronicoGrupos.aspx.vb
index d6981455e..94f068664 100644
--- a/Bancos/PagoElectronicoGrupos.aspx.vb
+++ b/Bancos/PagoElectronicoGrupos.aspx.vb
@@ -379,12 +379,8 @@ Partial Class Bancos_PagoElectronicoGrupos
DTPendientes = Nothing
End If
-
-
ObjBancos.Dispose()
-
-
If DTPendientes IsNot Nothing AndAlso DTPendientes.Rows.Count > 0 Then
CargaDatosInformativos()
Else
@@ -436,18 +432,20 @@ Partial Class Bancos_PagoElectronicoGrupos
'–– Determina si la cuenta ya está **habilitada** para el banco elegido en la pantalla ––'
Dim habilitada As Boolean
Select Case True
- Case DdlCuenta.SelectedItem.Text.ToUpper.Contains("BANCOMER") _
- OrElse DdlCuenta.SelectedItem.Text.ToUpper.Contains("BBVA")
+ Case DdlCuenta.SelectedItem.Text.ToUpper.Contains("BANCOMER") OrElse DdlCuenta.SelectedItem.Text.ToUpper.Contains("BBVA")
+
habilitada = (dr("EstatusPagoElectronicoGrupos").ToString = "True")
Case DdlCuenta.SelectedItem.Text.ToUpper.Contains("BAJIO")
+
habilitada = (dr("EstatusPagoElectronicoGruposBajio").ToString = "True")
Case DdlCuenta.SelectedItem.Text.ToUpper.Contains("SCOTIA")
+
habilitada = (dr("EstatusPagoElectronicoGruposScotia").ToString = "True")
Case Else
- habilitada = False 'Otros bancos → sin bandera propia
+ habilitada = False 'Otros bancos sin bandera propia
End Select
If Not habilitada Then
@@ -468,6 +466,9 @@ Partial Class Bancos_PagoElectronicoGrupos
Case Else
Interbancarias += 1
End Select
+ Else
+ Movimientos += 1
+ Importe += dr("Abonado").ToString.ToDecimal
End If
' 3. MOVIMIENTOS de cuentas ya existentes
@@ -606,11 +607,11 @@ Partial Class Bancos_PagoElectronicoGrupos
Private Function CreaArchivo(Tipo As Integer, Optional MismoBanco As Boolean = True, Optional ByRef NombreArchivoEnviado As String = "") As Boolean
- System.Threading.Thread.Sleep(1000) 'Un segundo de diferencia Para doferentes tipos de bancos
+ System.Threading.Thread.Sleep(1000) 'Un segundo de diferencia Para dIferentes tipos de bancos
DirectoryExistsCreate(String.Format("{0}Layout", UsuarioActual.Empresa.Ruta))
- NombreArchivo = String.Format("{2}{1}{0}.txt", UsuarioActual.CveUsuario, NowADS().ToString("yyyyMMdd-HH-mm-ss"), If(Tipo = 1, "LAYOUTPAGO", "LAYOUTALTA"))
+ 'NombreArchivo = String.Format("{2}{1}{0}.txt", UsuarioActual.CveUsuario, NowADS().ToString("yyyyMMdd-HH-mm-ss"), If(Tipo = 1, "LAYOUTPAGO", "LAYOUTALTA"))
If Tipo = 1 Then
NombreArchivo = String.Format("{2}{1}{0}.txt", UsuarioActual.CveUsuario, NowADS().ToString("yyyyMMdd-HH-mm-ss"), "LAYOUTPAGO")
@@ -865,7 +866,7 @@ Partial Class Bancos_PagoElectronicoGrupos
ElseIf OpBancos = 2 Then
AltaProveedoresBajio()
ElseIf OpBancos = 3 Then
- 'AltaProveedoresScotia()
+ 'AltaProveedoresScotia() SE DEJA COMENTADO PORQUE NO SE ESTA USANDO, SE CAMBIO A PAGO ELECTRONICO
End If
@@ -1348,86 +1349,88 @@ Partial Class Bancos_PagoElectronicoGrupos
- 'Protected Sub CrearDetalle()
- ' Dim Resultado = True
- ' Dim CuentaDeposito As String = ""
- ' Dim TipoCuentaDeposito As String = ""
- ' Dim TipoCuenta As String = ""
-
- ' ''''' LLENADO DE DETALLE
- ' 'Campos #1-4 del Detalle
- ' DetalleTexto &= String.Format("DA{0}N ", DTPendienteActual(0)("CveCuentaDeposito").ToString.ToUpper.PadLeft(30, PadCeros))
-
- ' 'Banco BBVA
- ' If DTPendienteActual(0)("BancoNombre").ToString.ToUpper.Contains("BBVA") Or DTPendienteActual(0)("BancoNombre").ToString.ToUpper.Contains("BANCOMER") Then
- ' 'Llenamos datos de BBVA
- ' 'Campo #5-7 del detalle
-
- ' 'Busca que cuenta sera la asignada para el proveedor
- ' If DTPendienteActual(0)("CIE").ToString <> "" Then
- ' CuentaDeposito = String.Format("02{0}", DTPendienteActual(0)("CIE").ToString.PadLeft(8, PadCeros))
- ' TipoCuenta = "50"
- ' TipoCuentaDeposito = "CIE"
- ' ElseIf DTPendienteActual(0)("Cuenta").ToString.Length = 10 Then
- ' CuentaDeposito = DTPendienteActual(0)("Cuenta").ToString
- ' TipoCuenta = "99"
- ' TipoCuentaDeposito = "Cuenta"
- ' ElseIf DTPendienteActual(0)("CLABE").ToString.Length = 18 Then
- ' CuentaDeposito = DTPendienteActual(0)("CLABE").ToString
- ' TipoCuenta = "40"
- ' TipoCuentaDeposito = "CLABE"
- ' End If
-
-
- ' DetalleTexto &= String.Format("{0}{1}{2}", DTPendienteActual(0)("Abreviatura").ToString, TipoCuenta, CuentaDeposito.PadLeft(35, PadCeros))
-
- ' 'Llenamos en blanco datos de otros bancos
- ' 'Campos 8-17 del detalle --- 64 de otros bancos y 45 para FILLER --- Fecha de Alta
- ' DetalleTexto &= String.Format("{0}{1}", Vacio.PadLeft(109), NowADS()().ToString("yyyy-MM-dd"))
-
-
- ' 'Otros Bancos NACIONAL!!
- ' Else
-
- ' CuentaDeposito = DTPendienteActual(0)("CLABE").ToString
- ' TipoCuentaDeposito = "CLABE"
-
- ' 'Llenamos en blanco datos de BBVA
- ' DetalleTexto &= Vacio.PadRight(40)
-
- ' 'Llenamos datos de otros bancos
- ' 'Campos 8- 17 del detalle --- 44 de otros bancos --- 20 de internacional --- 45 Filler -- Fecha de Alta
- ' DetalleTexto &= String.Format("{0}40{1}{2}{3}{4}{5}", DTPendienteActual(0)("Abreviatura").ToString, DTPendienteActual(0)("CLABE").ToString.PadLeft(35, PadCeros), DTPendienteActual(0)("CLABE").ToString.Substring(0, 3).PadLeft(4, PadCeros), Vacio.PadRight(20), Vacio.PadRight(45), NowADS()().ToString("yyyy-MM-dd"))
- ' End If
-
- ' 'Llenamos datos de Tipo de Persona - Fisica o Moral
- ' TipoPersona()
-
- ' 'Campos 27-32 --- Fillers --- datos de otros bancos (internacional)
- ' DetalleTexto &= Vacio.PadLeft(153)
-
- ' 'Campos 33-36 --- Datos de confirmacion
- ' DetalleTexto &= String.Format("{0}02{1}", Vacio.PadRight(40), CorreoNotificacionesEmpresa.ToUpper.PadRight(50))
-
- ' 'If DTPendienteActual(0)("ContactoMail").ToString.Length > 0 Then
- ' ' 'DetalleTexto &= String.Format("{0}02{1}", Vacio.PadRight(40), DTPendienteActual(0)("ContactoMail").ToString.ToUpper.PadRight(50))
- ' 'ElseIf DTPendienteActual(0)("ContactoMail").ToString.Length <= 0 Then
- ' ' DetalleTexto &= String.Format("{0}00{1}", Vacio.PadRight(40), Vacio.PadRight(50))
- ' 'End If
-
- ' 'Campos 37-39 -- FILLER
- ' DetalleTexto &= String.Format("00{0}", Vacio.PadRight(38))
-
-
- ' ''LLENA DT PARA REPORTE
- ' Dim Row = DtAlta.NewRow()
- ' Row("Proveedor") = DTPendienteActual(0)("RazonSocial").ToString
- ' Row("Banco") = DTPendienteActual(0)("BancoNombre").ToString
- ' Row("TipoCuenta") = TipoCuentaDeposito
- ' Row("Cuenta") = String.Format("{0}", CuentaDeposito)
- ' DtAlta.Rows.Add(Row)
- 'End Sub
-
+
+
+ 'Protected Sub CrearDetalle()
+ ' Dim Resultado = True
+ ' Dim CuentaDeposito As String = ""
+ ' Dim TipoCuentaDeposito As String = ""
+ ' Dim TipoCuenta As String = ""
+
+ ' ''''' LLENADO DE DETALLE
+ ' 'Campos #1-4 del Detalle
+ ' DetalleTexto &= String.Format("DA{0}N ", DTPendienteActual(0)("CveCuentaDeposito").ToString.ToUpper.PadLeft(30, PadCeros))
+
+ ' 'Banco BBVA
+ ' If DTPendienteActual(0)("BancoNombre").ToString.ToUpper.Contains("BBVA") Or DTPendienteActual(0)("BancoNombre").ToString.ToUpper.Contains("BANCOMER") Then
+ ' 'Llenamos datos de BBVA
+ ' 'Campo #5-7 del detalle
+
+ ' 'Busca que cuenta sera la asignada para el proveedor
+ ' If DTPendienteActual(0)("CIE").ToString <> "" Then
+ ' CuentaDeposito = String.Format("02{0}", DTPendienteActual(0)("CIE").ToString.PadLeft(8, PadCeros))
+ ' TipoCuenta = "50"
+ ' TipoCuentaDeposito = "CIE"
+ ' ElseIf DTPendienteActual(0)("Cuenta").ToString.Length = 10 Then
+ ' CuentaDeposito = DTPendienteActual(0)("Cuenta").ToString
+ ' TipoCuenta = "99"
+ ' TipoCuentaDeposito = "Cuenta"
+ ' ElseIf DTPendienteActual(0)("CLABE").ToString.Length = 18 Then
+ ' CuentaDeposito = DTPendienteActual(0)("CLABE").ToString
+ ' TipoCuenta = "40"
+ ' TipoCuentaDeposito = "CLABE"
+ ' End If
+
+
+ ' DetalleTexto &= String.Format("{0}{1}{2}", DTPendienteActual(0)("Abreviatura").ToString, TipoCuenta, CuentaDeposito.PadLeft(35, PadCeros))
+
+ ' 'Llenamos en blanco datos de otros bancos
+ ' 'Campos 8-17 del detalle --- 64 de otros bancos y 45 para FILLER --- Fecha de Alta
+ ' DetalleTexto &= String.Format("{0}{1}", Vacio.PadLeft(109), NowADS()().ToString("yyyy-MM-dd"))
+
+
+ ' 'Otros Bancos NACIONAL!!
+ ' Else
+
+ ' CuentaDeposito = DTPendienteActual(0)("CLABE").ToString
+ ' TipoCuentaDeposito = "CLABE"
+
+ ' 'Llenamos en blanco datos de BBVA
+ ' DetalleTexto &= Vacio.PadRight(40)
+
+ ' 'Llenamos datos de otros bancos
+ ' 'Campos 8- 17 del detalle --- 44 de otros bancos --- 20 de internacional --- 45 Filler -- Fecha de Alta
+ ' DetalleTexto &= String.Format("{0}40{1}{2}{3}{4}{5}", DTPendienteActual(0)("Abreviatura").ToString, DTPendienteActual(0)("CLABE").ToString.PadLeft(35, PadCeros), DTPendienteActual(0)("CLABE").ToString.Substring(0, 3).PadLeft(4, PadCeros), Vacio.PadRight(20), Vacio.PadRight(45), NowADS()().ToString("yyyy-MM-dd"))
+ ' End If
+
+ ' 'Llenamos datos de Tipo de Persona - Fisica o Moral
+ ' TipoPersona()
+
+ ' 'Campos 27-32 --- Fillers --- datos de otros bancos (internacional)
+ ' DetalleTexto &= Vacio.PadLeft(153)
+
+ ' 'Campos 33-36 --- Datos de confirmacion
+ ' DetalleTexto &= String.Format("{0}02{1}", Vacio.PadRight(40), CorreoNotificacionesEmpresa.ToUpper.PadRight(50))
+
+ ' 'If DTPendienteActual(0)("ContactoMail").ToString.Length > 0 Then
+ ' ' 'DetalleTexto &= String.Format("{0}02{1}", Vacio.PadRight(40), DTPendienteActual(0)("ContactoMail").ToString.ToUpper.PadRight(50))
+ ' 'ElseIf DTPendienteActual(0)("ContactoMail").ToString.Length <= 0 Then
+ ' ' DetalleTexto &= String.Format("{0}00{1}", Vacio.PadRight(40), Vacio.PadRight(50))
+ ' 'End If
+
+ ' 'Campos 37-39 -- FILLER
+ ' DetalleTexto &= String.Format("00{0}", Vacio.PadRight(38))
+
+
+ ' ''LLENA DT PARA REPORTE
+ ' Dim Row = DtAlta.NewRow()
+ ' Row("Proveedor") = DTPendienteActual(0)("RazonSocial").ToString
+ ' Row("Banco") = DTPendienteActual(0)("BancoNombre").ToString
+ ' Row("TipoCuenta") = TipoCuentaDeposito
+ ' Row("Cuenta") = String.Format("{0}", CuentaDeposito)
+ ' DtAlta.Rows.Add(Row)
+ 'End Sub
+
Protected Sub TipoPersona()
'Persona Moral
If DTPendienteActual(0)("RFC").ToString.Length = 12 Then
@@ -1980,16 +1983,16 @@ Partial Class Bancos_PagoElectronicoGrupos
If drow("Observaciones").ToString.Trim.Length = 0 Then
If drow("RazonSocial").ToString.Trim.Length > 30 Then
- RegistrosPago.Append(drow("RazonSocial").ToString.Substring(0, 30))
+ RegistrosPago.Append(drow("RazonSocial").ToString.trim.Substring(0, 30))
Else
RegistrosPago.Append(drow("RazonSocial").ToString.PadRight(30, EspacioRelleno))
End If
Else
If drow("Observaciones").ToString.Trim.Length > 30 Then
- RegistrosPago.Append(drow("Observaciones").ToString.Substring(0, 30))
+ RegistrosPago.Append(drow("Observaciones").ToString.Trim.Substring(0, 30))
Else
- RegistrosPago.Append(drow("Observaciones").ToString.PadRight(30, EspacioRelleno))
+ RegistrosPago.Append(drow("Observaciones").ToString.Trim.PadRight(30, EspacioRelleno))
End If
End If
@@ -3404,6 +3407,12 @@ Partial Class Bancos_PagoElectronicoGrupos
Dim FileName As String = NombreArchivo
Dim FilePath As String = $"{UsuarioActual.Empresa.Ruta}Layout\{NombreArchivo}"
+
+ If NombreArchivo.Length = 0 Then
+ FileName = LnkDescarga.Text
+ FilePath = $"{UsuarioActual.Empresa.Ruta}Layout\{ LnkDescarga.Text}"
+ End If
+
Response.Clear()
Response.ContentType = "application/octet-stream"
Response.AddHeader("Content-Disposition", "attachment; filename=" & FileName)
diff --git a/Bancos/RepIngresosPorComprobar.aspx b/Bancos/RepIngresosPorComprobar.aspx
index f0c84a439..928e41330 100644
--- a/Bancos/RepIngresosPorComprobar.aspx
+++ b/Bancos/RepIngresosPorComprobar.aspx
@@ -282,7 +282,7 @@
Fecha:
-
diff --git a/Bancos/RepIngresosPorComprobar.aspx.vb b/Bancos/RepIngresosPorComprobar.aspx.vb
index 32e006658..12998e47f 100644
--- a/Bancos/RepIngresosPorComprobar.aspx.vb
+++ b/Bancos/RepIngresosPorComprobar.aspx.vb
@@ -267,6 +267,7 @@ Partial Class Bancos_RepIngresosPorComprobar
End Sub
Protected Sub LnkSaldar_Click(sender As Object, e As EventArgs)
+ TxtObservaciones.Text = ""
RegistraScript("$('#DivModalSaldar').modal();")
End Sub
@@ -277,16 +278,20 @@ Partial Class Bancos_RepIngresosPorComprobar
ObjConta.IniciaTransacSQL()
Dim CvePrePoliza As Integer = 0
Dim MsgError As String = ""
- CvePrePoliza = ObjConta.AddPrePolizas("Bancos/RepIngresosPorComprobar", 6, 0, 0, 1, TxtFecha.Text.ToDate, "Saldo de IxC", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa)
+
+ Dim Obs As String = TxtObservaciones.Text.Trim()
+
+ CvePrePoliza = ObjConta.AddPrePolizas("Bancos/RepIngresosPorComprobar", 6, 0, 0, 1, TxtFecha.Text.ToDate, Obs, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa)
+
+ Dim FolioPoliza As Integer = ObjConta.FolioPoliza
For Each gr As GridViewRow In GvIPC.Rows
If gr.FCCheckBox("Chk").Checked Then
-
- If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, gr.DataKey("Saldo").ToDecimal, gr.DataKey("Saldo").ToDecimal, 92, "", "Saldo de IxC", CveIE:=gr.DataKey("CveIE").ToEntero, CveCliente:=gr.DataKey("CveCliente").ToEntero, CveSubProyecto:=DdlSubProyectoSaldar.SelectedValue.ToEntero) Then
+ If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, gr.DataKey("Saldo").ToDecimal, gr.DataKey("Saldo").ToDecimal, 92, "Saldo de IxC", Obs, CveIE:=gr.DataKey("CveIE").ToEntero, CveCliente:=gr.DataKey("CveCliente").ToEntero, CveSubProyecto:=DdlSubProyectoSaldar.SelectedValue.ToEntero) Then
MsgError = "Ocurrio un error al saldar el movimiento"
End If
- If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, gr.DataKey("Saldo").ToDecimal, gr.DataKey("Saldo").ToDecimal, 78, "", "Saldo de IxC", CveIE:=gr.DataKey("CveIE").ToEntero, CveSubProyecto:=DdlSubProyectoSaldar.SelectedValue.ToEntero) Then
+ If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, gr.DataKey("Saldo").ToDecimal, gr.DataKey("Saldo").ToDecimal, 78, "Saldo de IxC", Obs, CveIE:=gr.DataKey("CveIE").ToEntero, CveSubProyecto:=DdlSubProyectoSaldar.SelectedValue.ToEntero) Then
MsgError = "Ocurrio un error al saldar el movimiento"
End If
End If
@@ -296,7 +301,7 @@ Partial Class Bancos_RepIngresosPorComprobar
ObjConta.Commit()
CargaDatos()
- Alert(String.Format("Los movimientos se saldaron correctamente.
Póliza:
{1}
", CvePrePoliza, ObjConta.ContaFolio))
+ Alert(String.Format("Los movimientos se saldaron correctamente.
Póliza: {1}
", CvePrePoliza, FolioPoliza))
Else
ObjConta.RollBack()
Alert(MsgError, TipoMensaje.MsgError)
diff --git a/Compras/Compras.aspx.vb b/Compras/Compras.aspx.vb
index 8b1947ecb..dc292aa46 100644
--- a/Compras/Compras.aspx.vb
+++ b/Compras/Compras.aspx.vb
@@ -9164,9 +9164,12 @@ Partial Class Compras_Compras
Next
'If UsuarioActual.Empresa.Funcionalidad(207) = "1" Then
- If Not ActualizarPrePoliza(ObjContabilidad, ObjCompra) Then
- Retorno = False
+ If Not ComparaDatatables(False) Then
+ If Not ActualizarPrePoliza(ObjContabilidad, ObjCompra) Then
+ Retorno = False
+ End If
End If
+
'End If
@@ -9972,26 +9975,32 @@ Partial Class Compras_Compras
End Sub
- Private Function ComparaDatatables() As Boolean
+ Private Function ComparaDatatables(Optional ValidaNoDeducible As Boolean = True) As Boolean
Dim NumRow As Integer = 0
For Each row1 As DataRow In TmpDT.Rows
Dim NumRow2 As Integer = 0
For Each row2 As DataRow In TmpDTOriginal.Rows
+
+ 'Dim test As Boolean = (row1("NoDeducible").ToString <> row2("NoDeducible").ToString And ValidaNoDeducible)
+ 'Dim test2 As Boolean = (row1("IVAPorcentaje").ToString.ToDecimal <> row2("IVAPorcentaje").ToString.ToDecimal AndAlso CveCompra > 0 AndAlso CveCompraFactura = 0)
+
+ Dim TipoCompra As Integer = If(DdlTipoCompra.SelectedValue.ToEntero > 0, DdlTipoCompra.SelectedValue.ToEntero, 0)
+
If NumRow2 = NumRow Then
If (row1("CveSubProyecto").ToString.ToEntero <> row2("CveSubProyecto").ToString.ToEntero) Or
(row1("CveClasificacion").ToString.ToEntero <> row2("CveClasificacion").ToString.ToEntero) Or
(row1("CveTipoGasto").ToString.ToEntero <> row2("CveTipoGasto").ToString.ToEntero) Or
(row1("Total").ToString.ToDouble <> row2("Total").ToString.ToDouble) Or
- (row1("NoDeducible").ToString <> row2("NoDeducible").ToString) Or
+ (row1("NoDeducible").ToString <> row2("NoDeducible").ToString And ValidaNoDeducible) Or
(row1("CveActivoFijo").ToString.ToEntero <> row2("CveActivoFijo").ToString.ToEntero) Or
(row1("AFMedida").ToString.ToEntero <> row2("AFMedida").ToString.ToEntero) Or
(row1("TipoAF").ToString.ToEntero <> row2("TipoAF").ToString.ToEntero) Or
(row1("CvePS").ToString.ToEntero <> row2("CvePS").ToString.ToEntero) Or
(row1("Obs").ToString <> row2("Obs").ToString) Or
- (row1("IVAPorcentaje").ToString <> row2("IVAPorcentaje").ToString AndAlso CveCompra > 0 AndAlso CveCompraFactura = 0) Or
- (DdlTipoCompra.SelectedValue.ToEntero <> TipoCompraOriginal) Then
+ (row1("IVAPorcentaje").ToString.ToDecimal <> row2("IVAPorcentaje").ToString.ToDecimal AndAlso CveCompra > 0 AndAlso CveCompraFactura = 0) Or
+ (TipoCompra <> TipoCompraOriginal) Then
Return False
End If
End If
@@ -17681,9 +17690,9 @@ Partial Class Compras_Compras
Dim NumNoDed As Integer = TmpDT.COUNT("CvePS", "NoDeducible = True ")
If NumNoDed > 0 Then GvPS.Columns(13).Visible = True 'visualiza columnas de nodeducibles
- 'If DdlTipoComprobante.SelectedValue.Contiene("NC", "DEV") And CveFactura <= 0 Then
- ' InicializaAplicaNCFact()
- 'End If
+ If DdlTipoComprobante.SelectedValue.Contiene("NC", "DEV") And CveFactura <= 0 And CveCompra <= 0 Then
+ InicializaAplicaNCFact()
+ End If
End Sub
Private Sub OriginalesVisible(Accion As Boolean)
diff --git a/Compras/ReembolsosComprobaciones.aspx b/Compras/ReembolsosComprobaciones.aspx
index 0299d8c07..5a45b0d80 100644
--- a/Compras/ReembolsosComprobaciones.aspx
+++ b/Compras/ReembolsosComprobaciones.aspx
@@ -262,12 +262,18 @@
-
+
diff --git a/Compras/ReembolsosComprobaciones.aspx.vb b/Compras/ReembolsosComprobaciones.aspx.vb
index c514d4ee2..3bcd172dd 100644
--- a/Compras/ReembolsosComprobaciones.aspx.vb
+++ b/Compras/ReembolsosComprobaciones.aspx.vb
@@ -349,43 +349,52 @@ Partial Class Compras_ReembolsosComprobaciones
DdlCuentaDeposito.SelectedValue = Nothing
DdlCuentaDeposito.Items.Clear()
- trCuentaDeposito.Visible = False
- DdlCuentaDeposito.Enabled = False
+ DVValidacionesCuentaDeposito.Visible = False
+ 'trCuentaDeposito.Visible = False
+ 'DdlCuentaDeposito.Enabled = False
Dim CvePersonal As Integer = DdlPersonal.SelectedValue.ToEntero
- If CvePersonal > 0 Then
+ If CvePersonal > 0 And DdlTipoPago.SelectedValue.ToEntero = 1 Then
- If DdlTipoTransaccion.SelectedValue.Contiene("9", "17") Then
+ 'If DdlTipoTransaccion.SelectedValue.Contiene("9", "17") Then
- trCuentaDeposito.Visible = True
- DdlCuentaDeposito.Enabled = True
+ trCuentaDeposito.Visible = True
+ DdlCuentaDeposito.Enabled = True
- Dim Dep As New ClsGenerales
- If Dep.GetCuentasDepositos(CvePersonal:=CvePersonal, CveEmpresa:=UsuarioActual.CveEmpresa) Then
+ Dim Dep As New ClsGenerales
+ If Dep.GetCuentasDepositos(CvePersonal:=CvePersonal, CveEmpresa:=UsuarioActual.CveEmpresa) Then
- If DdlTipoTransaccion.SelectedValue = "9" Then
- DdlCuentaDeposito.DataSource = Dep.DtResultados.FiltraParametros(" EstatusPagoElectronico = 'True'")
- Else
- DdlCuentaDeposito.DataSource = Dep.DtResultados.FiltraParametros(" EstatusPagoElectronicoGrupos = 'True'")
- End If
-
-
- If Dep.DtResultados.Rows.Count > 0 Then
-
- trCuentaDeposito.Visible = True
- DdlCuentaDeposito.Items.Insert(0, New ListItem("Seleccione una cuenta", "-1"))
-
- End If
+ If DdlTipoTransaccion.SelectedValue = "9" Then
+ DdlCuentaDeposito.DataSource = Dep.DtResultados.FiltraParametros(" EstatusPagoElectronico = 'True'")
+ ElseIf DdlTipoTransaccion.SelectedValue = "17" Then
+ DdlCuentaDeposito.DataSource = Dep.DtResultados.FiltraParametros(" EstatusPagoElectronicoGrupos = 'True'")
+ Else
+ DdlCuentaDeposito.DataSource = Dep.DtResultados
End If
- Dep.Dispose()
- DdlCuentaDeposito.DataBind()
-
+ 'If Dep.DtResultados.Rows.Count > 0 Then
+ trCuentaDeposito.Visible = True
+ DdlCuentaDeposito.Items.Insert(0, New ListItem("Seleccione una cuenta", "-1"))
+ 'End If
End If
+ Dep.Dispose()
+ DdlCuentaDeposito.DataBind()
+
+
+ 'End If
+ Else
+ trCuentaDeposito.Visible = False
+ End If
+
+
+ If DdlTipoTransaccion.SelectedValue.ToEntero.Contiene(9, 17) Then
+ DVValidacionesCuentaDeposito.Visible = True
+ Else
+
End If
UpCuentaDeposito.Update()
diff --git a/Contabilidad/CatCuentas.aspx.vb b/Contabilidad/CatCuentas.aspx.vb
index 8f1a26856..9ba380fa8 100644
--- a/Contabilidad/CatCuentas.aspx.vb
+++ b/Contabilidad/CatCuentas.aspx.vb
@@ -740,8 +740,9 @@ Partial Class Contabilidad2_CatCuentas
Dim params As New List(Of ReportParameter)
params.Add(New ReportParameter("NombreEmpresa", UsuarioActual.Empresa.Empresa))
params.Add(New ReportParameter("UsuarioImprimio", UsuarioActual.Nombre))
+ Dim dtt As DataTable = DtDatos.Copy().FiltraParametros(" Codigo NOT IN ('_ACTIVO','_BPASIVO','_CAPITAL','_UTILIDAD','_RACREEDOR','_RDEUDOR','_CUADRE','_PASIVO','_ORDEN') ")
- ImprimirPDF("Empresas/Grales/Formatos/Cuentas.rdlc", DtDatos, params, "Cuentas", Formato)
+ ImprimirPDF("Empresas/Grales/Formatos/Cuentas.rdlc", dtt, params, "Cuentas", Formato)
'ImprimirPDFStimul("Empresas/Grales/Formatos/Cuentas.mrt", DtDatos, params, NombreArchivo:="Cuentas", RDSName:="Cuentas", Formato:=Formato)
Else
Alert("No hay datos consultados", TipoMensaje.MsgAdvertencia)
diff --git a/Contabilidad/ContabilidadElectronica.aspx b/Contabilidad/ContabilidadElectronica.aspx
index bae52ac34..a07808b12 100644
--- a/Contabilidad/ContabilidadElectronica.aspx
+++ b/Contabilidad/ContabilidadElectronica.aspx
@@ -18,7 +18,7 @@
-
+
@@ -81,7 +81,15 @@
-
+
diff --git a/Contabilidad/ContabilidadElectronica.aspx.vb b/Contabilidad/ContabilidadElectronica.aspx.vb
index 637c36959..e63a0d6b2 100644
--- a/Contabilidad/ContabilidadElectronica.aspx.vb
+++ b/Contabilidad/ContabilidadElectronica.aspx.vb
@@ -109,12 +109,11 @@ Partial Class Contabilidad_ContabilidadElectronica
DtCuentas = ObjConpaq.DtResultados
End If
ObjConpaq.Dispose()
-
End If
If DtCuentas IsNot Nothing AndAlso DtCuentas.Rows.Count > 0 Then
- Dim Str As New StringBuilder
+ Dim Str As New StringBuilder
'CABECERA
Str.Append("")
Str.Append("
0 Then
- Dim Str As New StringBuilder
+ If UsuarioActual.CveEmpresa = 119 Then
+ DtCuentas = DtCuentas.FiltraParametros("Nivel IN (1,2) ")
+ End If
+ Dim Str As New StringBuilder
'CABECERA
Str.Append("")
Str.Append("
-
+
diff --git a/Contabilidad/ContabilizacionCompras.aspx.cs b/Contabilidad/ContabilizacionCompras.aspx.cs
index 37af9c6f3..da2470f1c 100644
--- a/Contabilidad/ContabilizacionCompras.aspx.cs
+++ b/Contabilidad/ContabilizacionCompras.aspx.cs
@@ -163,6 +163,15 @@ public partial class Contabilidad_ContabilizacionCompras : ClsPaginas
{
e.Row.FCLinkButton("LBActualizarTC").Visible = true;
}
+
+ if (UsuarioActual.CveEmpresa == 119 && e.Row.DBCampo("Modulo").ToString() == "Compras Comproba")
+ {
+ e.Row.FCCheckBox("Chk").Enabled = false;
+ e.Row.FCCheckBox("Chk").Checked = false;
+ e.Row.FCCheckBox("Chk").ToolTip = "Comprobación";
+ }
+
+
}
}
diff --git a/Contabilidad/RegPrePolizaS.aspx b/Contabilidad/RegPrePolizaS.aspx
index 10eedf997..0a7ab5eb8 100644
--- a/Contabilidad/RegPrePolizaS.aspx
+++ b/Contabilidad/RegPrePolizaS.aspx
@@ -317,7 +317,7 @@
@@ -436,7 +436,7 @@
+ DataKeyNames="CvePrePolizaDetalle,CvePrePoliza,IdMov, CveConceptoContable, CveSubProyecto, CveTipoGasto,Referencia,CveVenta,CveCompra, CveProveedor, CveCliente, CvePersonal, CveCuenta, PorcentajeImpuesto,TipoMovto,EsComplementaria,EsMonedaExtranjera,Concepto,CveClasificacion,ContadoCuenta,ContadoTipoTransaccion,ContadoNumeroFolio,ContadoBeneficiario,ContadoObservaciones,ContadoImporte,TC,ImporteME,ImporteMN,Cargo,Abono,CveIE,CveActivoFijo,Modificado" Width="100%" >
Movimiento
@@ -744,6 +744,15 @@
+
+
Venta:
diff --git a/Contabilidad/RegPrePolizaS.aspx.vb b/Contabilidad/RegPrePolizaS.aspx.vb
index 3df41ca1e..2f2481421 100644
--- a/Contabilidad/RegPrePolizaS.aspx.vb
+++ b/Contabilidad/RegPrePolizaS.aspx.vb
@@ -392,6 +392,7 @@ Partial Class ContabilidadC_RegPrePolizaS
.Add("CveCompra", Type.GetType("System.Int32"))
.Add("CveCliente", Type.GetType("System.Int32"))
.Add("CveVenta", Type.GetType("System.Int32"))
+ .Add("CveActivoFijo", Type.GetType("System.Int32"))
.Add("CveIE", Type.GetType("System.Int32"))
.Add("CveClasificacion", Type.GetType("System.Int32"))
.Add("MultipleSubProyecto", Type.GetType("System.Boolean"))
@@ -1097,9 +1098,8 @@ Partial Class ContabilidadC_RegPrePolizaS
CvePersonal:=gvr.DataKey("CvePersonal").ToEntero, CveClasificacion:=gvr.DataKey("CveClasificacion").ToEntero,
ImporteME:=ImporteME, TipoCambio:=TipoCambio,
CveTipoGasto:=tCveTipoGasto,
- CveCliente:=gvr.DataKey("CveCliente").ToEntero, CveVenta:=gvr.DataKey("CveVenta").ToEntero, CveCuenta:=tCveCuenta, PorcentajeImpuesto:=gvr.DataKey("PorcentajeImpuesto").ToDecimal) Then
+ CveCliente:=gvr.DataKey("CveCliente").ToEntero, CveVenta:=gvr.DataKey("CveVenta").ToEntero, CveActivoFijo:=gvr.DataKey("CveActivoFijo").ToEntero, CveCuenta:=tCveCuenta, PorcentajeImpuesto:=gvr.DataKey("PorcentajeImpuesto").ToDecimal) Then
ContRegInsertados = ContRegInsertados + 1
-
Else
MsgError = "No se pudo insertar el detalle de la póliza2"
Exit For
@@ -1151,7 +1151,6 @@ Partial Class ContabilidadC_RegPrePolizaS
ObjContabilidad.IniciaTransacSQL()
Try
-
Dim Retorno As Boolean = ObjContabilidad.UpdatePrePoliza(MinFecha, -1, DdlTipoPoliza.SelectedValue.ToEntero, -1, CvePrePoliza, UsuarioActual.CveEmpresa, Concepto:=TxtConcepto.Text, FechaPoliza:=TxtFechaDocumento.Text.ToDate, CveUsuarioModifico:=UsuarioActual.CveUsuario)
If Retorno Then
@@ -1194,7 +1193,7 @@ Partial Class ContabilidadC_RegPrePolizaS
CveConceptoContable:=row.DataKey("CveConceptoContable").ToEntero, CveProveedor:=row.DataKey("CveProveedor").ToEntero, CveCompra:=row.DataKey("CveCompra").ToEntero,
CveCliente:=row.DataKey("CveCliente").ToEntero, CveVenta:=row.DataKey("CveVenta").ToEntero, CveClasificacion:=row.DataKey("CveClasificacion").ToEntero,
CvePersonal:=row.DataKey("CvePersonal").ToEntero, Referencia:=row.FCLiteral("TxtRef").Text,
- TipoCambio:=row.DataKey("TC").ToDecimal,
+ TipoCambio:=row.DataKey("TC").ToDecimal, CveActivoFijo:=row.DataKey("CveActivoFijo").ToEntero,
CveCuenta:=row.DataKey("CveCuenta").ToEntero, CveUsuarioModifico:=UsuarioActual.CveUsuario, CveIE:=CveIEAgregado) Then
OcurrioError = True
Exit For
@@ -1305,6 +1304,7 @@ Partial Class ContabilidadC_RegPrePolizaS
Dim Abono As Decimal = GvPrePoliza.Rows(IndiceGrid).FCLabel("TxtAbono").Text.ToDecimal
Dim PorcentajeImpuesto As Decimal = GvPrePoliza.Rows(IndiceGrid).DataKey("PorcentajeImpuesto").ToDecimal
Dim CveClasificacion As Integer = GvPrePoliza.Rows(IndiceGrid).DataKey("CveClasificacion").ToEntero
+ Dim CveActivoFijo As Integer = GvPrePoliza.Rows(IndiceGrid).DataKey("CveActivoFijo").ToEntero
'Dim MonedaExtr As Decimal = GvPrePoliza.Rows(IndiceGrid).FCLiteral("TxtCargo").Text.ToDecimal
'CargaConceptosContablesE()
@@ -1350,6 +1350,7 @@ Partial Class ContabilidadC_RegPrePolizaS
DdlTipoGastoE.SelectedValueExist(CveTipoGasto)
CargaCuentasContables()
DdlCuentaContableE.SelectedValueExist(CveCuenta)
+ DdlAF.SelectedValueExist(CveActivoFijo)
If Cargo <> 0 Then TxtCargoE.Text = Cargo.FormatoNumero
If Abono <> 0 Then TxtAbonoE.Text = Abono.FormatoNumero
@@ -1502,6 +1503,13 @@ Partial Class ContabilidadC_RegPrePolizaS
DvModalconceptoCliente.Visible = False
End If
+ If AplicaActivoFijo Then
+ CargaActivosFijos()
+ DvModalConceptoActivoFijo.Visible = True
+ Else
+ DvModalConceptoActivoFijo.Visible = False
+ End If
+
If AplicaBancos AndAlso Not AplicaComplementaria Then
TxtCargoE.AutoPostBack = True
TxtAbonoE.AutoPostBack = True
@@ -1530,6 +1538,8 @@ Partial Class ContabilidadC_RegPrePolizaS
Else
DivMonedaExtranjera.Visible = False
End If
+
+
CargaCuentaConcepto(CveConceptoContableInsertar)
End If
@@ -1626,6 +1636,15 @@ Partial Class ContabilidadC_RegPrePolizaS
DdlClasificacionesE.DataBind()
DdlClasificacionesE.Items.Insert(0, New ListItem(" - ", "-1"))
End Sub
+
+ Private Sub CargaActivosFijos()
+ DdlAF.Items.Clear()
+ DdlAF.DataSource = GlobalDTActivoFijos(UsuarioActual.CveEmpresa)
+ DdlAF.DataBind()
+ 'DdlAF.setEsWebService(True)
+ 'DdlAF.Attributes.Add("data-metodo", "getcliente")
+
+ End Sub
Private Sub DdlProveedoresE_SelectedIndexChanged(sender As Object, e As EventArgs) Handles DdlProveedoresE.SelectedIndexChanged
CargaComprasE(DdlProveedoresE.SelectedValue.ToEntero, HdnCveCompra.Value.ToEntero)
End Sub
@@ -1722,11 +1741,7 @@ Partial Class ContabilidadC_RegPrePolizaS
x = x + 1
Next
DtMovimientos.AcceptChanges()
-
-
End If
-
-
dr("CveCuenta") = DdlCuentaContableE.SelectedValue
dr("CodigoNombreCuenta") = DdlCuentaContableE.SelectedItem.Text
dr("ConceptoContable") = DdlConceptosContablesE.SelectedItem.Text
@@ -1743,6 +1758,7 @@ Partial Class ContabilidadC_RegPrePolizaS
dr("CvePersonal") = DdlPersonalE.SelectedValue.ToEntero
dr("CveCliente") = DdlClientesE.SelectedValue.ToEntero
dr("CveVenta") = DdlVentasE.SelectedValue.ToEntero
+ dr("CveActivoFijo") = DdlAF.SelectedValue.ToEntero
dr("FolioFactura") = If(DdlComprasE.Visible = True AndAlso DdlComprasE.SelectedItem IsNot Nothing, DdlComprasE.SelectedItem.ToString, If(DdlVentasE.Visible = True AndAlso DdlVentasE.SelectedItem IsNot Nothing, DdlVentasE.SelectedItem.ToString, ""))
dr("Modificado") = True
dr("TC") = TxtTipoCambio.Text.ToDecimal
@@ -1861,6 +1877,7 @@ Partial Class ContabilidadC_RegPrePolizaS
dr("CveClasificacion") = -1
dr("CveCliente") = DdlClientes.SelectedValue.ToEntero
dr("CveVenta") = DdlVentas.SelectedValue.ToEntero
+ dr("CveActivoFijo") = DdlAF.SelectedValue.ToEntero
End If
GvMov.DataSource = DtMovimientos
GvMov.DataBind()
@@ -1888,6 +1905,7 @@ Partial Class ContabilidadC_RegPrePolizaS
dr("CvePersonal") = DdlPersonal.SelectedValue.ToEntero
dr("CveCliente") = DdlClientes.SelectedValue.ToEntero
dr("CveVenta") = DdlVentas.SelectedValue.ToEntero
+ dr("CveActivoFijo") = DdlAF.SelectedValue.ToEntero
TxtTotalAbonos.Text = (TxtTotalAbonos.Text.ToDecimal + TxtAbono.Text.ToDecimal).ToString.FormatoNumero
TxtTotalCargos.Text = (TxtTotalCargos.Text.ToDecimal + TxtCargo.Text.ToDecimal).ToString.FormatoNumero
@@ -1932,6 +1950,7 @@ Partial Class ContabilidadC_RegPrePolizaS
dr("CveClasificacion") = -1
dr("CveCliente") = DdlClientes.SelectedValue.ToEntero
dr("CveVenta") = DdlVentas.SelectedValue.ToEntero
+ dr("CveActivoFijo") = DdlAF.SelectedValue.ToEntero
TxtTotalAbonos.Text = (TxtTotalAbonos.Text.ToDecimal + TxtAbono.Text.ToDecimal).ToString.FormatoNumero
TxtTotalCargos.Text = (TxtTotalCargos.Text.ToDecimal + TxtCargo.Text.ToDecimal).ToString.FormatoNumero
@@ -1942,9 +1961,7 @@ Partial Class ContabilidadC_RegPrePolizaS
GvMov.DataBind()
UPMovs.Update()
Actualizar = False
-
End If
-
End If
TxtCargo.Text = ""
@@ -2125,6 +2142,7 @@ Partial Class ContabilidadC_RegPrePolizaS
'DdlClientes.txtText.Value = DrM("CveCliente").ToString
DdlVentas.SelectedValueExist(DrM("CveVenta").ToString)
+ DdlAF.SelectedValueExist(DrM("CveActivoFijo").ToString)
LbCancelarEdicion.Visible = True
LbAgregar.Text = "Actualizar"
@@ -2566,7 +2584,6 @@ Partial Class ContabilidadC_RegPrePolizaS
DtMovimientos.Clear()
Exit For
End If
-
End If
If CveConceptoContable = 69 Then
@@ -2596,6 +2613,7 @@ Partial Class ContabilidadC_RegPrePolizaS
dr("CveClasificacion") = CveClasificacion
dr("CveCliente") = -1
dr("CveVenta") = -1
+ dr("CveActivoFijo") = -1
dr("CveCuenta") = CveCuentaExcel
dr("CveTipoGasto") = -1
dr("CvePrePolizaDetalle") = -1
diff --git a/Contabilidad/RepBalanzaComprobacion.aspx.vb b/Contabilidad/RepBalanzaComprobacion.aspx.vb
index c8b5a5d7e..675c620ff 100644
--- a/Contabilidad/RepBalanzaComprobacion.aspx.vb
+++ b/Contabilidad/RepBalanzaComprobacion.aspx.vb
@@ -6,7 +6,6 @@ Imports System.Data
Imports Extensiones
Imports Microsoft.Reporting.WebForms
Imports ClosedXML.Excel
-Imports Profact.TimbraCFDI40
Imports System.IO
Imports System.Drawing
Imports System.Web.Services
@@ -434,12 +433,12 @@ Partial Class Contabilidad2_RepBalanzaComprobacion
Dim ultimaFila As DataRow = DtDatos.Rows(DtDatos.Rows.Count - 1)
- Dim LastSaldoID As Decimal = ultimaFila("SaldoID").ToString.ToDecimal
- Dim LastTotalAbonos As Decimal = ultimaFila("TotalAbonos").ToString.ToDecimal
- Dim LastTotalCargos As Decimal = ultimaFila("TotalCargos").ToString.ToDecimal
- Dim LastSaldoAD As Decimal = ultimaFila("SaldoAD").ToString.ToDecimal
- Dim LastSaldoIA As Decimal = ultimaFila("SaldoIA").ToString.ToDecimal
- Dim LastSaldoAA As Decimal = ultimaFila("SaldoAA").ToString.ToDecimal
+ Dim LastSaldoID As Decimal = ultimaFila("SaldoICargo").ToString.ToDecimal
+ Dim LastTotalAbonos As Decimal = ultimaFila("Abonos").ToString.ToDecimal
+ Dim LastTotalCargos As Decimal = ultimaFila("Cargos").ToString.ToDecimal
+ Dim LastSaldoAD As Decimal = ultimaFila("SaldoFCargo").ToString.ToDecimal
+ Dim LastSaldoIA As Decimal = ultimaFila("SaldoIAbono").ToString.ToDecimal
+ Dim LastSaldoAA As Decimal = ultimaFila("SaldoFAbono").ToString.ToDecimal
WSReporte.Cell(CuerrentRow, 2).Value = "Sumas Iguales"
WSReporte.Cell(CuerrentRow, 3).Value = LastSaldoID
diff --git a/Contabilidad/RepIVA.aspx.cs b/Contabilidad/RepIVA.aspx.cs
index 679812716..2ddf94156 100644
--- a/Contabilidad/RepIVA.aspx.cs
+++ b/Contabilidad/RepIVA.aspx.cs
@@ -393,7 +393,33 @@ public partial class Contabilidad_RepIVA : ClsPaginas
if (k > 0)
{
bool flag = true;
- excelWorksheet.Columns[k + 1].Style.NumberFormat = "#,##0.00";
+ switch (NombreHoja)
+ {
+ case "IVA Trasladado":
+ //FECHAS,FOLIOS, NUM CUENTA
+ if (!excelWorksheet.Columns[k + 1].Name.Contiene("B","L","C","P","Q"))
+ {
+ excelWorksheet.Columns[k + 1].Style.NumberFormat = "#,##0.00";
+ }
+ break;
+ case "IVA Acreditable":
+ //FECHAS,FOLIOS, NUM CUENTA
+ if (!excelWorksheet.Columns[k + 1].Name.Contiene("D","E","Y","Z","AA","AB"))
+ {
+ excelWorksheet.Columns[k + 1].Style.NumberFormat = "#,##0.00";
+ }
+ //FOLIO BANCARIO
+ if (excelWorksheet.Columns[k + 1].Name.Contiene("AA","AB"))
+ {
+ excelWorksheet.Columns[k + 1].Style.NumberFormat = "0";
+ excelWorksheet.Columns[k + 1].Style.HorizontalAlignment = HorizontalAlignmentStyle.Left;
+ }
+ break;
+ default:
+ break;
+ }
+
+
try
{
excelWorksheet.Columns[k].AutoFit(1.0);
diff --git a/Empresas/119/Formatos/Cotizacion.rdlc b/Empresas/119/Formatos/Cotizacion.rdlc
index e45d17b44..f0f606188 100644
--- a/Empresas/119/Formatos/Cotizacion.rdlc
+++ b/Empresas/119/Formatos/Cotizacion.rdlc
@@ -1237,7 +1237,6 @@
2pt
-
true
@@ -1649,7 +1648,7 @@
Textbox2
- 16.4177cm
+ 10.96728cm
3.65232cm
0.57354cm
12.91587cm
@@ -1665,7 +1664,7 @@
- 17.86437cm
+ 12.41395cm
7.71741cm
0cm
5.675cm
@@ -1693,7 +1692,7 @@
Textbox3
- 17.93492cm
+ 12.4845cm
7.71741cm
0.6cm
5.675cm
@@ -1708,412 +1707,6 @@
2pt
-
- true
- true
-
-
-
-
- Nombre Comercial:
-
-
-
-
-
-
-
-
- Beneficiario:
-
-
-
-
-
-
-
-
-
-
-
-
- Banco:
-
-
-
-
-
-
-
-
-
-
-
-
- Clabe:
-
-
-
-
-
-
-
-
- Cuenta:
-
-
-
-
-
-
-
-
-
-
- Textbox1
- 12.29987cm
- 0.10282cm
- 2.03296cm
- 3.74249cm
- 13
-
-
- 2pt
- 2pt
- 2pt
- 2pt
-
-
-
- true
- true
-
-
-
-
- AGROQUIMICOS JAM SA DE CV
-
-
-
-
-
-
-
-
- AGROQUIMICOS JAM SA DE CV
-
-
-
-
-
-
-
-
- BBVA BANCOMER, MONEDA NACIONAL
-
-
-
-
-
-
-
-
- 012760004510539065
-
-
-
-
-
-
-
-
- 0451053906
-
-
-
-
-
-
- Textbox1
- 12.29987cm
- 3.84531cm
- 2.03295cm
- 5.75197cm
- 14
-
-
- 2pt
- 2pt
- 2pt
- 2pt
-
-
-
- true
- true
-
-
-
-
- Nombre Comercial:
-
-
-
-
-
-
-
-
- Beneficiario:
-
-
-
-
-
-
-
-
-
-
-
-
- Banco:
-
-
-
-
-
-
-
-
-
-
-
-
- Clabe:
-
-
-
-
-
-
-
-
- Cuenta:
-
-
-
-
-
-
-
-
-
-
- Textbox1
- 12.29987cm
- 9.70311cm
- 2.03295cm
- 4.17266cm
- 15
-
-
- 2pt
- 2pt
- 2pt
- 2pt
-
-
-
- true
- true
-
-
-
-
- AGROQUIMICOS JAM SA DE CV
-
-
-
-
-
-
-
-
- AGROQUIMICOS JAM SA DE CV
-
-
-
-
-
-
-
-
- BBVA BANCOMER, MONEDA DOLARES
-
-
-
-
-
-
-
-
- 012760001097398900
-
-
-
-
-
-
-
-
- 0109739890
-
-
-
-
-
-
- Textbox1
- 12.29987cm
- 13.87577cm
- 2.03294cm
- 6.94061cm
- 16
-
-
- 2pt
- 2pt
- 2pt
- 2pt
-
-
true
true
@@ -2162,7 +1755,7 @@
0.08425cm
0.99688cm
8.10248cm
- 17
+ 13
@@ -2174,7 +1767,7 @@
- 18.53492cm
+ 13.16388cm