2817 lines
158 KiB
VB.net
2817 lines
158 KiB
VB.net
'Option Explicit On
|
|
'Option Strict On
|
|
|
|
Imports System.Data
|
|
Imports ADSTimbrado
|
|
Imports Extensiones
|
|
|
|
Partial Class Ventas_ClientesAbonar
|
|
Inherits ClsPaginas
|
|
|
|
|
|
#Region "Propiedades"
|
|
Private ReadOnly Property CveCliente As Integer
|
|
Get
|
|
Return ViewState("CveCliente").ToString.ToEntero
|
|
End Get
|
|
End Property
|
|
Private Property CveMoneda As Integer
|
|
Get
|
|
Return ViewState("CveMoneda").ToString.ToEntero
|
|
End Get
|
|
Set(value As Integer)
|
|
ViewState("CveMoneda") = value
|
|
End Set
|
|
End Property
|
|
|
|
Private Property CveMonedaPago As Integer
|
|
Get
|
|
Return ViewState("CveMonedaPago").ToString.ToEntero
|
|
End Get
|
|
Set(value As Integer)
|
|
ViewState("CveMonedaPago") = value
|
|
End Set
|
|
End Property
|
|
Private Property CveMonedaFiltro As Integer
|
|
Get
|
|
Return IfNull(ViewState("CveMonedaFiltro"), "0").ToString.ToEntero
|
|
End Get
|
|
Set(value As Integer)
|
|
ViewState("CveMonedaFiltro") = value
|
|
End Set
|
|
End Property
|
|
Private Property FechaIngreso As Date
|
|
Get
|
|
Return ViewState("FechaIngreso").ToString.ToDate
|
|
End Get
|
|
Set(value As Date)
|
|
ViewState("FechaIngreso") = value
|
|
End Set
|
|
End Property
|
|
Private Property CveSubProyecto As Integer
|
|
Get
|
|
Return ViewState("CveSubProyecto").ToString.ToEntero
|
|
End Get
|
|
Set(value As Integer)
|
|
ViewState("CveSubProyecto") = value
|
|
End Set
|
|
End Property
|
|
Private Property CveClienteSucursal As Integer
|
|
Get
|
|
Return If(IsNothing(ViewState("CveClienteSucursal")), -1, ViewState("CveClienteSucursal").ToString.ToEntero)
|
|
End Get
|
|
Set(value As Integer)
|
|
ViewState("CveClienteSucursal") = value
|
|
End Set
|
|
End Property
|
|
Private Property DTFuenteRecaudacion As DataTable
|
|
Get
|
|
Return CType(ViewState("DTFuenteRecaudacion"), DataTable)
|
|
End Get
|
|
Set(value As DataTable)
|
|
ViewState("DTFuenteRecaudacion") = value
|
|
End Set
|
|
End Property
|
|
|
|
Private Property DtIngresos As DataTable
|
|
Get
|
|
Return CType(ViewState("DtIngresos"), DataTable)
|
|
End Get
|
|
Set(value As DataTable)
|
|
ViewState("DtIngresos") = value
|
|
End Set
|
|
End Property
|
|
Private Property DtPrestamos As DataTable
|
|
Get
|
|
Return CType(ViewState("DtPrestamos"), DataTable)
|
|
End Get
|
|
Set(value As DataTable)
|
|
ViewState("DtPrestamos") = value
|
|
End Set
|
|
End Property
|
|
|
|
Private Property NombreComercial As String
|
|
Get
|
|
Return ViewState("NombreComercial").ToString
|
|
End Get
|
|
Set(value As String)
|
|
ViewState("NombreComercial") = value
|
|
End Set
|
|
End Property
|
|
|
|
Private Property Mail As String
|
|
Get
|
|
If ViewState("Mail") Is Nothing Then
|
|
Return ""
|
|
Else
|
|
Return ViewState("Mail").ToString
|
|
End If
|
|
End Get
|
|
Set(value As String)
|
|
ViewState("Mail") = value
|
|
End Set
|
|
End Property
|
|
|
|
Private Property CFDIRelacionadoSustitucion As String
|
|
Get
|
|
If ViewState("CFDIRelacionadoSustitucion") Is Nothing Then
|
|
Return "-1"
|
|
Else
|
|
Return ViewState("CFDIRelacionadoSustitucion").ToString
|
|
End If
|
|
End Get
|
|
Set(value As String)
|
|
ViewState("CFDIRelacionadoSustitucion") = value
|
|
End Set
|
|
End Property
|
|
Private Property FechaCorteIE As DateTime
|
|
Get
|
|
Return ViewState("FechaCorteIE").ToString.ToDateTime
|
|
End Get
|
|
Set(value As DateTime)
|
|
ViewState("FechaCorteIE") = value
|
|
End Set
|
|
End Property
|
|
Private Property IDPoliza As Integer
|
|
Get
|
|
Return ViewState("IDPoliza").ToString.ToEntero
|
|
End Get
|
|
Set(value As Integer)
|
|
ViewState("IDPoliza") = value
|
|
End Set
|
|
End Property
|
|
Private Property FolioIECancelado As String
|
|
Get
|
|
If ViewState("FolioIECancelado") Is Nothing Then
|
|
Return "-1"
|
|
Else
|
|
Return ViewState("FolioIECancelado").ToString
|
|
End If
|
|
End Get
|
|
Set(value As String)
|
|
ViewState("FolioIECancelado") = value
|
|
End Set
|
|
End Property
|
|
Private Property ComplementoSustitucionGenerado As Boolean
|
|
Get
|
|
Return CBool(ViewState("ComplementoSustitucionGenerado"))
|
|
End Get
|
|
Set(value As Boolean)
|
|
ViewState("ComplementoSustitucionGenerado") = value
|
|
End Set
|
|
End Property
|
|
Private Property Fecha As Date
|
|
Get
|
|
Return ViewState("Fecha").ToString.ToDate
|
|
End Get
|
|
Set(value As Date)
|
|
ViewState("Fecha") = value
|
|
End Set
|
|
End Property
|
|
#End Region
|
|
|
|
Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
|
|
If Not Page.IsPostBack Then
|
|
CveMonedaPago = -1
|
|
If Request("CveCliente") IsNot Nothing AndAlso Request("CveCliente").ToString.ToEntero > 0 Then
|
|
ViewState("CveCliente") = Request("CveCliente").ToString.ToEntero
|
|
'ViewState("CveUsuario") = IfNultl(Request("CveUsuario"), "-1").ToStrirowComisionesng.ToEntero
|
|
ViewState("CveMonedaFiltro") = IfNull(Request("CveMoneda"), "-1").ToString.ToEntero
|
|
ViewState("CveMoneda") = IfNull(Request("CveMoneda"), "-1").ToString.ToEntero
|
|
ViewState("FechaI") = IfNull(Request("FechaI"), "-1").ToString.ToEntero
|
|
ViewState("FechaE") = IfNull(Request("FechaE"), "-1").ToString.ToEntero
|
|
ViewState("CveSubProyecto") = IfNull(Request("CveSubProyecto"), "-1").ToString.ToEntero
|
|
ViewState("CveClienteSucursal") = IfNull(Request("CveClienteSucursal"), "-1").ToString.ToEntero
|
|
|
|
DdlProveedorIntermediario.setEsWebService(True)
|
|
DdlProveedorIntermediario.Attributes.Add("data-metodo", "getproveedores")
|
|
DdlProveedorIntermediario.SelectedText = "Seleccione"
|
|
DdlProveedorIntermediario.SelectedValue = "-1"
|
|
|
|
FechaCorteIE = NowADS()
|
|
|
|
Dim dia As Integer = If(UsuarioActual.CveEmpresa = 13, NowADS().Day - 1, NowADS().Day)
|
|
Fecha = (dia.ToString + "/" + NowADS().Month.ToString + "/" + NowADS().Year.ToString).ToDate
|
|
|
|
'If UsuarioActual.Empresa.Funcionalidad(712) = "1" Then
|
|
' PorletIntermediario.Visible = True
|
|
'End If
|
|
|
|
If CargaCliente(CveCliente, CveMonedaFiltro) Then
|
|
|
|
TxtOtrosImportes.Attributes.Add("onKeyUp", String.Format("FnSuma(this,{0},{1},-1);", "TxtTotal", 0))
|
|
'TxtAnticipo.Attributes.Add("onKeyUp", String.Format("FnSuma(this,{0},{1},-1);", "null", 0))
|
|
|
|
If CveMoneda > 0 Then LbTipoMoneda.Text = String.Format("Pago en {0}", GlobalDTMonedas.FiltraParametros(String.Format("CveMoneda = {0}", CveMoneda)).Rows(0)("Moneda"))
|
|
|
|
If CveMoneda = 2 Then
|
|
ChkPagarPesos.Visible = True
|
|
TxtTC.Text = GlobalTipoCambio(Fecha).FormatoNumero(4)
|
|
TxtTCDolaresDolares.Text = GlobalTipoCambio(Fecha).FormatoNumero(4)
|
|
DivTCDolaresDolares.Visible = True
|
|
TxtFechaDocumento.Attributes.Add("onchange", "CambiaTC(this);")
|
|
ElseIf CveMoneda = 1 Then
|
|
ChkPagarDolares.Visible = True
|
|
TxtTCDolares.Text = GlobalTipoCambio(Fecha).FormatoNumero(4)
|
|
ElseIf CveMoneda = -1 Then
|
|
TxtFechaDocumento.Attributes.Add("onchange", "CambiaTC(this);")
|
|
TxtTCDolares.Text = GlobalTipoCambio(Fecha).FormatoNumero(4)
|
|
TxtTC.Text = GlobalTipoCambio(Fecha).FormatoNumero(4)
|
|
End If
|
|
|
|
If UsuarioActual.TienePermisoProceso(209) Or UsuarioActual.TienePermisoProceso(204) Then
|
|
HlSaldarCuentasIncobrables.Visible = True
|
|
End If
|
|
End If
|
|
|
|
If CveMonedaFiltro = -1 Then
|
|
ChkPagarPesos.Visible = False
|
|
ChkPagarDolares.Visible = False
|
|
End If
|
|
RegistraScript($"TipoCambioActual = {GlobalTipoCambio(Fecha).FormatoNumero(4)}")
|
|
End If
|
|
|
|
RVTxtFechaDocumento.MaximumValue = NowADS().ToString("dd/MM/yyyy")
|
|
If UsuarioActual.CveEmpresa.Contiene(13, 83, 158) Then
|
|
LnkAccionesModalSeleccionLayout.Visible = True
|
|
End If
|
|
|
|
If UsuarioActual.CveEmpresa.Contiene(13, 1, 15) Then
|
|
DVImporteDeduccionesPago.Visible = True
|
|
End If
|
|
|
|
|
|
End If
|
|
|
|
If (CveMonedaFiltro = 2 And ChkPagarPesos.Checked) Then
|
|
RegistraScript("document.getElementById('DivTC').style.display = 'block';")
|
|
End If
|
|
|
|
End Sub
|
|
|
|
Private Sub CargaTipoTransaccion()
|
|
DdlTipoTransaccion.DataSource = GlobalDTTipoTransacciones.FiltraParametros("Tipo = 'Ing' AND Estatus = 1 ")
|
|
DdlTipoTransaccion.DataBind()
|
|
DdlTipoTransaccion.Items.Insert(0, New ListItem("Seleccione Tipo Movimiento", "-1"))
|
|
RecargaCuentasDepositos()
|
|
End Sub
|
|
|
|
Private Sub CargaCuentas()
|
|
DdlCuenta.Items.Clear()
|
|
Dim dt As DataTable
|
|
Dim CveTipoCuenta As Integer = -1
|
|
If UsuarioActual.CveEmpresa = 119 Then CveTipoCuenta = 2 'solo las cuentas de cheques
|
|
|
|
If UsuarioActual.CveEmpresa.Contiene(7, 11, 12, 122, 145) Then
|
|
dt = GlobalDTBancosCuentas(UsuarioActual.CveUsuario, CveEmpresa:=UsuarioActual.CveEmpresa, CveTipoCuenta:=-1).FiltraParametros(" CveTipoCuenta in (1,2) ")
|
|
Else
|
|
dt = GlobalDTBancosCuentas(UsuarioActual.CveUsuario, CveEmpresa:=UsuarioActual.CveEmpresa, CveTipoCuenta:=CveTipoCuenta)
|
|
End If
|
|
If ChkPagarPesos.Checked Then
|
|
dt = dt.FiltraParametros(String.Format("CveMoneda = {0}", 1))
|
|
RegistraScript("CambiaPesosDolares();")
|
|
ElseIf ChkPagarDolares.Checked Then
|
|
dt = dt.FiltraParametros(String.Format("CveMoneda = {0}", 2))
|
|
RegistraScript("CambiaDolaresPesos();")
|
|
Else
|
|
If CveMonedaFiltro > 0 Then
|
|
dt = dt.FiltraParametros(String.Format("CveMoneda = {0}", CveMonedaFiltro))
|
|
End If
|
|
End If
|
|
|
|
DdlCuenta.DataSource = dt
|
|
DdlCuenta.DataBind()
|
|
DdlCuenta.Items.Insert(0, New ListItem("Seleccione cuenta", "-1"))
|
|
End Sub
|
|
|
|
Private Function CargaCliente(tCveCliente As Integer, tCveMoneda As Integer) As Boolean
|
|
Dim Retorno As Boolean = False
|
|
Dim ObjCliente As New ClsClientes()
|
|
If ObjCliente.GetClientes(tCveCliente, "-1", "-1", "-1", "-1", "-1", "-1", -1, UsuarioActual.CveEmpresa, -1, TipoCliente:=-1) Then
|
|
If ObjCliente.DtResultados.Rows.Count > 0 Then
|
|
Retorno = True
|
|
CargaCuentas()
|
|
CargaTipoTransaccion()
|
|
|
|
TxtFechaDocumento.Text = NowADS().ToShortDateString.ToString
|
|
|
|
TxtAboneA.Enabled = False
|
|
LbEncabezado.Text = String.Format("<a href='/Ventas/Clientes.aspx?CveCliente={0}' target='_blank' class='Texto'>{1}</a>", CveCliente, ObjCliente.NombreComercial)
|
|
TxtAboneA.Text = ObjCliente.NombreComercial
|
|
NombreComercial = ObjCliente.NombreComercial
|
|
TxtImporte.Attributes.Add("disabled", "disabled")
|
|
If DdlTipoTransaccion.SelectedValue = "1" Then RFVFolio.Enabled = True Else RFVFolio.Enabled = False
|
|
Mail = String.Format("{0};{1}", ObjCliente.CobranzaCorreo, ObjCliente.NotificarA)
|
|
|
|
If Request("FechaI") IsNot Nothing Then ViewState("FechaI") = Request("FechaI") Else ViewState("FechaI") = "-1"
|
|
If Request("FechaF") IsNot Nothing Then ViewState("FechaF") = Request("FechaF") Else ViewState("FechaF") = "-1"
|
|
|
|
If UsuarioActual.Empresa.Funcionalidad(590) = "1" Then
|
|
|
|
'Dim CveClasificacionCol1 As Integer = 21514
|
|
'Dim CveClasificacionCol2 As Integer = 21916
|
|
'Dim CveClasificacionCol3 As Integer = 21520
|
|
'Dim CveClasificacionCol4 As Integer = 21519
|
|
'Dim CveClasificacionCol5 As Integer = 21547
|
|
'Dim CveClasificacionCol6 As Integer = 21572
|
|
'Dim CveClasificacionCol7 As Integer = 21571
|
|
divAnticipo.Visible = True
|
|
divPrestamo.Visible = True
|
|
|
|
GvCxC.Columns(17).HeaderText = "Comisión<br/>Venta" 'GlobalDTClasificaciones(UsuarioActual.CveEmpresa, CveClasificacion:=CveClasificacionCol1).FiltroPrimeroValor("Clasificacion").Substring(0, 10)
|
|
GvCxC.Columns(18).HeaderText = "Gastos<br/>Manejo" 'GlobalDTClasificaciones(UsuarioActual.CveEmpresa, CveClasificacion:=CveClasificacionCol2).FiltroPrimeroValor("Clasificacion").Substring(0, 12)
|
|
GvCxC.Columns(19).HeaderText = "Servicio<br/>Inspección" 'GlobalDTClasificaciones(UsuarioActual.CveEmpresa, CveClasificacion:=CveClasificacionCol3).FiltroPrimeroValor("Clasificacion").Substring(0, 12)
|
|
GvCxC.Columns(20).HeaderText = "Seguro" 'GlobalDTClasificaciones(UsuarioActual.CveEmpresa, CveClasificacion:=CveClasificacionCol4).FiltroPrimeroValor("Clasificacion").Substring(0, 12)
|
|
GvCxC.Columns(21).HeaderText = "Aduana<br/>Mex" 'GlobalDTClasificaciones(UsuarioActual.CveEmpresa, CveClasificacion:=CveClasificacionCol5).FiltroPrimeroValor("Clasificacion").Substring(0, 12)
|
|
GvCxC.Columns(22).HeaderText = "Diversos" 'GlobalDTClasificaciones(UsuarioActual.CveEmpresa, CveClasificacion:=CveClasificacionCol6).FiltroPrimeroValor("Clasificacion").Substring(0, 12)
|
|
GvCxC.Columns(23).HeaderText = "Aduana<br/>USA" 'GlobalDTClasificaciones(UsuarioActual.CveEmpresa, CveClasificacion:=CveClasificacionCol7).FiltroPrimeroValor("Clasificacion").Substring(0, 12)
|
|
GvCxC.Columns(24).HeaderText = "Material<br/>Empaque" 'GlobalDTClasificaciones(UsuarioActual.CveEmpresa, CveClasificacion:=CveClasificacionCol7).FiltroPrimeroValor("Clasificacion").Substring(0, 12)
|
|
GvCxC.Columns(25).HeaderText = "Semilla" 'GlobalDTClasificaciones(UsuarioActual.CveEmpresa, CveClasificacion:=CveClasificacionCol7).FiltroPrimeroValor("Clasificacion").Substring(0, 12)
|
|
GvCxC.Columns(26).HeaderText = "Fletes" 'GlobalDTClasificaciones(UsuarioActual.CveEmpresa, CveClasificacion:=CveClasificacionCol7).FiltroPrimeroValor("Clasificacion").Substring(0, 12)
|
|
GvCxC.Columns(27).HeaderText = "Total<br/>Gastos"
|
|
|
|
DvLiquidacion1.Visible = True
|
|
DvLiquidacion2.Visible = True
|
|
|
|
DtIngresos = CargaIngresos(2)
|
|
DtPrestamos = CargaPrestamos(1)
|
|
End If
|
|
|
|
CargaDatos(tCveMoneda)
|
|
Else
|
|
Alert("El Cliente Solicitado no existe, por favor revise su búsqueda.", TipoMensaje.MsgAdvertencia)
|
|
End If
|
|
End If
|
|
ObjCliente.Dispose()
|
|
Return Retorno
|
|
End Function
|
|
|
|
Private Sub CargaDatos(pCveMoneda As Integer)
|
|
Dim Mov As New ClsMovimientos
|
|
Dim FechaI As String = IfNull(Request("FechaI"), "-1").ToString
|
|
Dim FechaF As String = IfNull(Request("FechaF"), "-1").ToString
|
|
|
|
Dim FechaCorte As Date = NowADS().AddYears(1).ToShortDateString.ToString.ToDate
|
|
|
|
Dim SumDescuentoProntoPago As Double = 0.0
|
|
If Mov.GetCxCClienteDetalle(ViewState("CveCliente").ToString.ToEntero, FechaI, FechaF, pCveMoneda, CveSubProyecto, UsuarioActual.CveEmpresa, CveClienteSucursal, FechaCorte:=FechaCorte) Then
|
|
Dim TmpCxCAux As DataTable
|
|
TmpCxCAux = Mov.DtResultados.FiltraParametros("Saldo > 0", "Fecha,SerieFolio")
|
|
SumDescuentoProntoPago = TmpCxCAux.SUM("DescuentoProntoPago")
|
|
|
|
GvCxC.DataSource = Mov.DtResultados.FiltraParametros("Saldo > 0", "Fecha,SerieFolio")
|
|
CveMoneda = pCveMoneda
|
|
|
|
End If
|
|
Mov.Dispose()
|
|
GvCxC.DataBind()
|
|
|
|
TxtImporte.Text = ""
|
|
TxtObservaciones.Text = ""
|
|
If SumDescuentoProntoPago > 0.0 Then
|
|
GvCxC.Columns(14).Visible = True 'MOSTRAR DESCUENTO PRONTO PAGO
|
|
If UsuarioActual.Empresa.Funcionalidad(531) = "1" Then
|
|
GvCxC.Columns(15).Visible = True 'HABILITAR NC
|
|
End If
|
|
End If
|
|
|
|
UPVentas.Update()
|
|
End Sub
|
|
|
|
Protected Sub DdlCuenta_SelectedIndexChanged(sender As Object, e As EventArgs) Handles DdlCuenta.SelectedIndexChanged
|
|
'recargo la moneda con la que se va a pagar
|
|
Dim dr As DataRow = GlobalDTBancosCuentas(UsuarioActual.CveUsuario, CveEmpresa:=UsuarioActual.CveEmpresa).FiltroPrimero("CveCuenta = " & DdlCuenta.SelectedValue)
|
|
Dim moneda As Integer = 0
|
|
If DdlCuenta.SelectedValue.ToEntero > 0 Then
|
|
moneda = GlobalDTBancosCuentas(-1, CveEmpresa:=UsuarioActual.CveEmpresa).FiltroPrimeroValor("CveMoneda", $"CveEmpresa = {UsuarioActual.CveEmpresa} AND CveCuenta = {DdlCuenta.SelectedValue.ToEntero}").ToEntero
|
|
End If
|
|
|
|
CveMonedaPago = moneda
|
|
|
|
If dr IsNot Nothing Then
|
|
If ChkPagarPesos.Checked Then
|
|
CveMoneda = 2
|
|
RegistraScript("document.getElementById('DivTC').style.display = 'block';")
|
|
RegistraScript("CambiaPesosDolares();")
|
|
TxtTC.Attributes.Add("onkeyup", String.Format("FnCambia(0,0,0,0,1,{0});", moneda))
|
|
ElseIf ChkPagarPesos.Checked = False Then
|
|
CveMoneda = dr("CveMoneda").ToString.ToEntero
|
|
RegistraScript("document.getElementById('DivTC').style.display = 'none';")
|
|
RegistraScript("CambiaDolaresPesos();")
|
|
TxtTC.Attributes.Add("onkeyup", String.Format("FnCambia(0,0,0,0,1,{0});", moneda))
|
|
End If
|
|
|
|
If ChkPagarDolares.Checked Then
|
|
CveMoneda = 1
|
|
TxtTCDolares.Attributes.Add("onkeyup", String.Format("FnCambia(0,0,0,0,1,{0});", moneda))
|
|
End If
|
|
ValidaCuentaDePagoFormaDePago()
|
|
End If
|
|
|
|
CargaDatos(CveMoneda)
|
|
|
|
|
|
' si no tiene CveMoneda, o es -1, cuando cambia de cuenta filtra las facturas
|
|
If IfNull(Request("CveMoneda"), "-1").ToString.ToEntero = -1 Then
|
|
CargaDatos(-1)
|
|
|
|
moneda = GlobalDTBancosCuentas(-1, CveEmpresa:=UsuarioActual.CveEmpresa).FiltroPrimeroValor("CveMoneda", $"CveEmpresa = {UsuarioActual.CveEmpresa} AND CveCuenta = {DdlCuenta.SelectedValue.ToEntero}").ToEntero
|
|
If moneda = 1 Then
|
|
'DivTC.Visible = True
|
|
DivTCDolares.Visible = False
|
|
TxtTC.Attributes.Add("onkeyup", String.Format("FnCambia(0,0,0,0,-1,{0});", moneda))
|
|
ElseIf moneda = 2 Then
|
|
'DivTC.Visible = False
|
|
RegistraScript("document.getElementById('DivTC').style.display = 'none';")
|
|
DivTCDolares.Visible = True
|
|
TxtTCDolares.Attributes.Add("onkeyup", String.Format("FnCambia(0,0,0,0,-1,{0});", moneda))
|
|
End If
|
|
End If
|
|
|
|
If HdnTipoTransaccion.Value = "Ing" AndAlso UsuarioActual.Empresa.Funcionalidad(505) <> "1" Then
|
|
If UsuarioActual.CveEmpresa = 119 Then
|
|
Dim ObjFolios As New ClsGralFolios
|
|
If ObjFolios.GetFolios("RMF", UsuarioActual.CveEmpresa) Then
|
|
Dim DT As DataTable = ObjFolios.DtResultados.FiltraParametros(String.Format(" Estado = 'Activo'"))
|
|
If DT.Rows.Count > 0 Then
|
|
TxtFolio.Text = DT.Rows(0)("FActual").ToString
|
|
End If
|
|
ObjFolios.Dispose()
|
|
End If
|
|
Else
|
|
Dim Folio As Long
|
|
Dim Banco As New ClsBancos
|
|
Folio = Banco.GetNextFolio(DdlCuenta.SelectedValue.ToEntero, DdlTipoTransaccion.SelectedValue.ToEntero)
|
|
Banco.Dispose()
|
|
TxtFolio.Text = Folio.ToString
|
|
|
|
End If
|
|
|
|
Else
|
|
TxtFolio.Text = ""
|
|
End If
|
|
|
|
End Sub
|
|
|
|
Protected Sub DdlTipoTransaccion_SelectedIndexChanged(sender As Object, e As EventArgs) Handles DdlTipoTransaccion.SelectedIndexChanged
|
|
Dim dr As DataRow = GlobalDTTipoTransacciones.FiltroPrimero(String.Format("CveTipoTransaccion = {0}", DdlTipoTransaccion.SelectedValue)) 'Egs o Ing
|
|
If dr IsNot Nothing Then
|
|
HdnTipoTransaccion.Value = dr("Tipo").ToString
|
|
End If
|
|
RecargaCuentasDepositos()
|
|
'CargaCuentas()
|
|
ValidaCuentaDePagoFormaDePago()
|
|
End Sub
|
|
|
|
Protected Sub GvCxC_RowDataBound(sender As Object, e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GvCxC.RowDataBound
|
|
|
|
If e.Row.RowType = DataControlRowType.DataRow Then
|
|
Dim moneda As Integer = 0
|
|
If e.Row.RowIndex = 0 Then
|
|
e.Row.BackColor = Drawing.Color.LightGray
|
|
e.Row.FCDropDownList("DdlTG").Visible = False
|
|
e.Row.FCTextBox("TxtLiqCol1").Visible = False
|
|
e.Row.FCTextBox("TxtLiqCol2").Visible = False
|
|
e.Row.FCTextBox("TxtLiqCol3").Visible = False
|
|
e.Row.FCTextBox("TxtLiqCol4").Visible = False
|
|
e.Row.FCTextBox("TxtLiqCol5").Visible = False
|
|
e.Row.FCTextBox("TxtLiqCol6").Visible = False
|
|
e.Row.FCTextBox("TxtLiqCol7").Visible = False
|
|
e.Row.FCTextBox("TxtLiqCol8").Visible = False
|
|
e.Row.FCTextBox("TxtLiqCol9").Visible = False
|
|
e.Row.FCTextBox("TxtLiqCol10").Visible = False
|
|
e.Row.FCTextBox("TxtLiqColT").Visible = False
|
|
e.Row.FCTextBox("TxtAmort").Visible = False
|
|
e.Row.FCTextBox("TxtAmort2").Visible = False
|
|
e.Row.FCDropDownList("DdlAnti").Visible = False
|
|
e.Row.FCDropDownList("DdlAnti2").Visible = False
|
|
|
|
End If
|
|
If e.Row.RowIndex = 1 Then
|
|
e.Row.Cells(0).Width = Unit.Pixel(25)
|
|
e.Row.Cells(1).Width = Unit.Pixel(90)
|
|
e.Row.Cells(2).Width = Unit.Pixel(70)
|
|
e.Row.Cells(3).Width = Unit.Pixel(70)
|
|
e.Row.Cells(6).Width = Unit.Pixel(50)
|
|
e.Row.Cells(7).Width = Unit.Pixel(70)
|
|
e.Row.Cells(8).Width = Unit.Pixel(50)
|
|
End If
|
|
|
|
e.Row.Cells(9).HorizontalAlign = HorizontalAlign.Right
|
|
e.Row.Cells(10).HorizontalAlign = HorizontalAlign.Right
|
|
|
|
If e.Row.DBCampo("Saldo").ToDecimal < 0 Then e.Row.Cells(11).ForeColor = Drawing.Color.Red
|
|
If e.Row.DBCampo("DiasVencidos").ToDecimal > 0 AndAlso CType(sender, GridView).ID = "GvCxC" Then e.Row.Cells(5).ForeColor = Drawing.Color.Red
|
|
If e.Row.DBCampo("Original").ToDecimal = 0 Then DirectCast(e.Row.FindControl("LtlSaldoOriginal"), Literal).Text = ""
|
|
If e.Row.DBCampo("Abonado").ToDecimal = 0 Then DirectCast(e.Row.FindControl("LtlAbonado"), Literal).Text = ""
|
|
If e.Row.DBCampo("Saldo").ToDecimal = 0 Then DirectCast(e.Row.FindControl("LtlSaldo"), Literal).Text = ""
|
|
|
|
Select Case RblTipoPago.SelectedValue
|
|
Case "1"
|
|
If DdlCuenta.SelectedValue.ToEntero > 0 Then
|
|
moneda = CveMonedaPago
|
|
ElseIf RblTipoPago.SelectedValue = "1" Then
|
|
e.Row.FCCheckBox("Chk").Enabled = False
|
|
e.Row.FCTextBox("TxtAbonar").Enabled = False
|
|
End If
|
|
Case "3"
|
|
moneda = CveMonedaPago
|
|
|
|
End Select
|
|
|
|
If e.Row.DBCampo("DescuentoProntoPago").ToDecimal() > 0 Then
|
|
e.Row.FCCheckBox("Chk").Attributes.Add("onclick", String.Format("FnSuma(this,{0},{1},{5}); FnCambia({2},this,{1},0,{3},{4}); FnSeleccionaNC({5},{6},{0});", e.Row.FCTextBox("TxtAbonar").ClientID, e.Row.DBCampo("Saldo"), e.Row.FCCheckBox("Chk").ClientID, CveMonedaFiltro, moneda, e.Row.FCCheckBox("Chk").ClientID, e.Row.FCCheckBox("ChkGenerarNC").ClientID, e.Row.DBCampo("CveVenta")))
|
|
Else
|
|
e.Row.FCCheckBox("Chk").Attributes.Add("onclick", String.Format("FnSuma(this,{0},{1},{5}); FnCambia({2},this,{1},0,{3},{4},{5});", e.Row.FCTextBox("TxtAbonar").ClientID, e.Row.DBCampo("Saldo"), e.Row.FCCheckBox("Chk").ClientID, CveMonedaFiltro, moneda, e.Row.DBCampo("CveVenta")))
|
|
End If
|
|
|
|
If Not UsuarioActual.Empresa.Funcionalidad(536) = "1" Then
|
|
If e.Row.DBCampo("TipoDocto") = "Rem" Then
|
|
e.Row.FCCheckBox("Chk").Visible = False ' que no se pueda pagar si es remisión
|
|
e.Row.Cells(0).ToolTip = "El documento es remisión y no se puede realizar el pago"
|
|
End If
|
|
End If
|
|
|
|
|
|
If e.Row.DBCampo("CveVenta").ToEntero > 0 Then
|
|
e.Row.FCLiteral("LtlAux").Text = String.Format("<a class=""Texto thickbox"" href=""/Contabilidad/PopUpAuxiliar.aspx?Tipo=CxCClientes&CveCliente={0}&CveVenta={1}&TB_iframe=true&height=370&width=900"" />Ir</a>", e.Row.DBCampo("CveCliente").ToEntero, e.Row.DBCampo("CveVenta").ToEntero)
|
|
e.Row.FCTextBox("TxtAbonar").Attributes.Add("onblur", String.Format("FnCambia({0},this,{1},1,{2},{3});", e.Row.FCCheckBox("Chk").ClientID, e.Row.DBCampo("Saldo"), CveMonedaFiltro, moneda))
|
|
|
|
If UsuarioActual.Empresa.Funcionalidad(157).ToDecimal <> 0 Then
|
|
e.Row.FCTextBox("TxtComision").Attributes.Add("onblur", String.Format("FnLimites({0},this,{1},{2},2);", e.Row.FCCheckBox("Chk").ClientID, (-UsuarioActual.Empresa.Funcionalidad(157).ToDecimal).ToString, UsuarioActual.Empresa.Funcionalidad(157).ToString.ToDecimal))
|
|
e.Row.FCRangeValidator("RVComision").MinimumValue = (-UsuarioActual.Empresa.Funcionalidad(157).ToDecimal).ToString
|
|
e.Row.FCRangeValidator("RVComision").MaximumValue = UsuarioActual.Empresa.Funcionalidad(157).ToString
|
|
e.Row.FCRangeValidator("RVComision").Enabled = True
|
|
Else
|
|
e.Row.FCTextBox("TxtComision").Attributes.Add("onblur", String.Format("FnCambia({0},this,{1},2,{2},{3});", e.Row.FCCheckBox("Chk").ClientID, e.Row.DBCampo("Saldo"), CveMonedaFiltro, moneda))
|
|
e.Row.FCRangeValidator("RVComision").MinimumValue = "0.00"
|
|
e.Row.FCRangeValidator("RVComision").MaximumValue = e.Row.DBCampo("Saldo")
|
|
End If
|
|
|
|
If e.Row.DBCampo("DescuentoProntoPago").ToDecimal() > 0 AndAlso e.Row.DBCampo("DiasVencidos").ToEntero() <= 5 Then
|
|
e.Row.FCCheckBox("ChkGenerarNC").Visible = True
|
|
e.Row.FCCheckBox("ChkGenerarNC").Attributes.Add("onclick", String.Format("FnSuma(this,{0},{1},{5}); FnCambia({2},this,{1},0,{3},{4}); FnEditarImporte({2}, {0});", e.Row.FCTextBox("TxtAbonar").ClientID, e.Row.DBCampo("Saldo").ToDecimal - e.Row.DBCampo("DescuentoProntoPago").ToDecimal, e.Row.FCCheckBox("ChkGenerarNC").ClientID, CveMonedaFiltro, moneda, e.Row.DBCampo("CveVenta")))
|
|
End If
|
|
|
|
If UsuarioActual.Empresa.Funcionalidad(590) = "1" Then '' si es empresa agrícola
|
|
|
|
e.Row.FCDropDownList("DdlTG").DataSource = GlobalDTTiposGastos(UsuarioActual.CveEmpresa)
|
|
e.Row.FCDropDownList("DdlTG").DataBind()
|
|
|
|
e.Row.FCTextBox("TxtLiqCol1").Attributes.Add("class", $"ClsSelLiq ClsSelLiqVenta{e.Row.DBCampo("CveVenta")}")
|
|
e.Row.FCTextBox("TxtLiqCol2").Attributes.Add("class", $"ClsSelLiq ClsSelLiqVenta{e.Row.DBCampo("CveVenta")}")
|
|
e.Row.FCTextBox("TxtLiqCol3").Attributes.Add("class", $"ClsSelLiq ClsSelLiqVenta{e.Row.DBCampo("CveVenta")}")
|
|
e.Row.FCTextBox("TxtLiqCol4").Attributes.Add("class", $"ClsSelLiq ClsSelLiqVenta{e.Row.DBCampo("CveVenta")}")
|
|
e.Row.FCTextBox("TxtLiqCol5").Attributes.Add("class", $"ClsSelLiq ClsSelLiqVenta{e.Row.DBCampo("CveVenta")}")
|
|
e.Row.FCTextBox("TxtLiqCol6").Attributes.Add("class", $"ClsSelLiq ClsSelLiqVenta{e.Row.DBCampo("CveVenta")}")
|
|
e.Row.FCTextBox("TxtLiqCol7").Attributes.Add("class", $"ClsSelLiq ClsSelLiqVenta{e.Row.DBCampo("CveVenta")}")
|
|
e.Row.FCTextBox("TxtLiqCol8").Attributes.Add("class", $"ClsSelLiq ClsSelLiqVenta{e.Row.DBCampo("CveVenta")}")
|
|
e.Row.FCTextBox("TxtLiqCol9").Attributes.Add("class", $"ClsSelLiq ClsSelLiqVenta{e.Row.DBCampo("CveVenta")}")
|
|
e.Row.FCTextBox("TxtLiqCol10").Attributes.Add("class", $"ClsSelLiq ClsSelLiqVenta{e.Row.DBCampo("CveVenta")}")
|
|
|
|
e.Row.FCTextBox("TxtLiqColT").Attributes.Add("class", $"ClsSelLiqVentaTotal{e.Row.DBCampo("CveVenta")}")
|
|
e.Row.FCTextBox("TxtAmort").Attributes.Add("class", $"ClsSelLiqAnt")
|
|
e.Row.FCTextBox("TxtAmort2").Attributes.Add("class", $"ClsSelLiqAnt")
|
|
|
|
e.Row.FCTextBox("TxtLiqCol1").Attributes.Add("onkeyup", $"SumaLiq (this,{e.Row.DBCampo("CveVenta")},{CveMonedaFiltro},{ moneda})")
|
|
e.Row.FCTextBox("TxtLiqCol2").Attributes.Add("onkeyup", $"SumaLiq(this,{e.Row.DBCampo("CveVenta")},{CveMonedaFiltro},{ moneda})")
|
|
e.Row.FCTextBox("TxtLiqCol3").Attributes.Add("onkeyup", $"SumaLiq(this,{e.Row.DBCampo("CveVenta")},{CveMonedaFiltro},{ moneda})")
|
|
e.Row.FCTextBox("TxtLiqCol4").Attributes.Add("onkeyup", $"SumaLiq(this,{e.Row.DBCampo("CveVenta")},{CveMonedaFiltro},{ moneda})")
|
|
e.Row.FCTextBox("TxtLiqCol5").Attributes.Add("onkeyup", $"SumaLiq(this,{e.Row.DBCampo("CveVenta")},{CveMonedaFiltro},{ moneda})")
|
|
e.Row.FCTextBox("TxtLiqCol6").Attributes.Add("onkeyup", $"SumaLiq(this,{e.Row.DBCampo("CveVenta")},{CveMonedaFiltro},{ moneda})")
|
|
e.Row.FCTextBox("TxtLiqCol7").Attributes.Add("onkeyup", $"SumaLiq(this,{e.Row.DBCampo("CveVenta")},{CveMonedaFiltro},{ moneda})")
|
|
e.Row.FCTextBox("TxtLiqCol8").Attributes.Add("onkeyup", $"SumaLiq(this,{e.Row.DBCampo("CveVenta")},{CveMonedaFiltro},{ moneda})")
|
|
e.Row.FCTextBox("TxtLiqCol9").Attributes.Add("onkeyup", $"SumaLiq(this,{e.Row.DBCampo("CveVenta")},{CveMonedaFiltro},{ moneda})")
|
|
e.Row.FCTextBox("TxtLiqCol10").Attributes.Add("onkeyup", $"SumaLiq(this,{e.Row.DBCampo("CveVenta")},{CveMonedaFiltro},{ moneda})")
|
|
e.Row.FCTextBox("TxtAmort").Attributes.Add("onkeyup", $"SumaLiq(this,{e.Row.DBCampo("CveVenta")},{CveMonedaFiltro},{ moneda})")
|
|
e.Row.FCTextBox("TxtAmort2").Attributes.Add("onkeyup", $"SumaLiq(this,{e.Row.DBCampo("CveVenta")},{CveMonedaFiltro},{ moneda})")
|
|
|
|
e.Row.FCDropDownList("DdlAnti").DataSource = DtIngresos
|
|
e.Row.FCDropDownList("DdlAnti").DataBind()
|
|
e.Row.FCDropDownList("DdlAnti").Items.Insert(0, New ListItem("-", "-1"))
|
|
|
|
e.Row.FCDropDownList("DdlAnti2").DataSource = DtIngresos
|
|
e.Row.FCDropDownList("DdlAnti2").DataBind()
|
|
e.Row.FCDropDownList("DdlAnti2").Items.Insert(0, New ListItem("-", "-1"))
|
|
|
|
End If
|
|
|
|
Else
|
|
e.Row.FCTextBox("TxtAbonar").Visible = False
|
|
e.Row.FCTextBox("TxtComision").Visible = False
|
|
e.Row.FCCheckBox("Chk").Visible = False
|
|
End If
|
|
|
|
If e.Row.DBCampo("CveVenta").ToEntero > 0 Then
|
|
If e.Row.DataKey("ClaveMetodoPagoSAT") = "PUE" Then
|
|
e.Row.FCLiteral("LtlComplemento").Text = "<i class='fa fa-times text-danger ' aria-hidden='true'></i>"
|
|
End If
|
|
Else
|
|
e.Row.FCLiteral("LtlComplemento").Visible = False
|
|
End If
|
|
|
|
End If
|
|
End Sub
|
|
|
|
Protected Sub BtnIEGuardar_Click(sender As Object, e As EventArgs) Handles BtnIEGuardar.Click
|
|
|
|
'SI ES EMPRESA DE ACUMULADORES DEBE OBLIGAR A SUBIR UN ARCHIVO
|
|
If UsuarioActual.Empresa.Funcionalidad(531) = "1" Then
|
|
Dim files As Extensiones.Files = Anexo.getfiles()
|
|
If files IsNot Nothing Then
|
|
If files.Archivos IsNot Nothing Then
|
|
If files.Archivos.Count = 0 Then
|
|
Alert("Debe anexar un archivo", TipoMensaje.MsgAdvertencia)
|
|
Exit Sub
|
|
End If
|
|
Else
|
|
Alert("Debe anexar un archivo", TipoMensaje.MsgAdvertencia)
|
|
Exit Sub
|
|
End If
|
|
Else
|
|
Alert("Debe anexar un archivo", TipoMensaje.MsgAdvertencia)
|
|
Exit Sub
|
|
End If
|
|
End If
|
|
|
|
If RblTipoPago.SelectedValue = "1" Then
|
|
|
|
Dim ValFechaDocumento As Boolean = False
|
|
Dim FoliosFechasValFechaDocumento As New StringBuilder
|
|
FoliosFechasValFechaDocumento.AppendLine("Se seleccionaron facturas con fecha de mes superior al mes del pago: <br/>")
|
|
|
|
For Each gvRowVal As GridViewRow In GvCxC.Rows
|
|
|
|
If gvRowVal.FCCheckBox("Chk").Checked Then
|
|
|
|
Dim FechaFactura As Date = gvRowVal.DataKey("Fecha").ToDate
|
|
Dim FechaDocumento As Date = TxtFechaDocumento.Text.ToDate
|
|
|
|
Dim AnioFactura As Integer = FechaFactura.Year
|
|
Dim MesFactura As Integer = FechaFactura.Month
|
|
|
|
Dim AnioDocumento As Integer = FechaDocumento.Year
|
|
Dim MesDocumento As Integer = FechaDocumento.Month
|
|
|
|
If UsuarioActual.Empresa.UsaAC = False Then
|
|
If AnioFactura > AnioDocumento Then
|
|
FoliosFechasValFechaDocumento.AppendLine($"Folio: { gvRowVal.DataKey("SerieFolio") } fecha: {gvRowVal.DataKey("Fecha").ToDate.ToString("dd/MM/yyyy") } <br/>")
|
|
ValFechaDocumento = True
|
|
ElseIf AnioFactura = AnioDocumento And MesFactura > MesDocumento Then
|
|
FoliosFechasValFechaDocumento.AppendLine($"Folio: { gvRowVal.DataKey("SerieFolio") } fecha: {gvRowVal.DataKey("Fecha").ToDate.ToString("dd/MM/yyyy") } <br/>")
|
|
ValFechaDocumento = True
|
|
End If
|
|
|
|
End If
|
|
End If
|
|
Next
|
|
|
|
If ValFechaDocumento Then
|
|
Alert(FoliosFechasValFechaDocumento.ToString, TipoMensaje.MsgAdvertencia)
|
|
Exit Sub
|
|
End If
|
|
End If
|
|
|
|
If Not TxtImporte.Text.ToDecimal > 0 Then
|
|
Alert("Debe de llevar un Importe", TipoMensaje.MsgAdvertencia)
|
|
Exit Sub
|
|
End If
|
|
|
|
If Not (TxtFolio.Text.Trim <> "" Or RblTipoPago.SelectedValue = "2" Or RblTipoPago.SelectedValue = "3") Then
|
|
Alert("Debe de llevar un Folio", TipoMensaje.MsgAdvertencia)
|
|
Exit Sub
|
|
End If
|
|
|
|
If TxtPrestamoImporte.Text.ToDecimal <> 0 AndAlso DdlPrestamo.SelectedValue = "-1" Then
|
|
Alert("Debe seleccionar un préstamo al especificar un valor.", TipoMensaje.MsgAdvertencia)
|
|
Exit Sub
|
|
End If
|
|
|
|
'valida que no exceda lo seleccionado. con el valor del ie
|
|
If (RblTipoPago.SelectedValue = "3" AndAlso HdnIngresoImporte.Value.ToDecimal < TxtTotal.Text.ToDecimal) Then
|
|
Alert("Importe excedido para la aplicación", TipoMensaje.MsgAdvertencia)
|
|
Exit Sub
|
|
End If
|
|
|
|
Dim Cuenta As String = ""
|
|
Dim CuentaDeposito As String = ""
|
|
|
|
Dim seleccion As Integer = 0
|
|
For Each gvr As GridViewRow In GvCxC.Rows
|
|
If gvr.FCCheckBox("Chk").Checked Then
|
|
seleccion += 1
|
|
'si hay liquidación-
|
|
If gvr.FCDropDownList("DdlAnti").SelectedValue = "-1" AndAlso gvr.FCTextBox("TxtAmort").Text.ToDecimal <> 0 Then
|
|
Alert("Importe de anticipo especificado y no seleccionado. F: " & gvr.DataKey("SerieFolio"), TipoMensaje.MsgAdvertencia)
|
|
Exit Sub
|
|
End If
|
|
End If
|
|
Next
|
|
|
|
If seleccion = 0 Then
|
|
Alert("No ha seleccionado ninguna factura para abonar.", TipoMensaje.MsgAdvertencia)
|
|
Exit Sub
|
|
End If
|
|
|
|
Dim CvePrePoliza As Integer = 0
|
|
Dim IDPoliza As Integer = 0
|
|
Dim FolioPoliza As String = ""
|
|
Dim CveIE As Integer = -1
|
|
Dim CveVentasPago As New List(Of Integer)
|
|
Dim SeriesPago As New List(Of String)
|
|
|
|
Dim MsgError As String = ""
|
|
Dim NCGeneradas As New List(Of RespuestaNotaCredrito)
|
|
Dim ListaFacturasGenerarNC As New List(Of Modelos.Factura)
|
|
|
|
Dim ImporteSeleccionado As Decimal = 0
|
|
|
|
'02-05-2018 MANDAMOS CANCELAR EL COMPLEMENTO A SUSTITUIR
|
|
Dim ErrorCancelarIE As Boolean = False
|
|
|
|
|
|
Dim ObjIE As New ClsBancos()
|
|
Dim ObjMov As New ClsContabilidad(ObjIE.IniciaTransacSQL)
|
|
Dim ObjVentasSaldos As New ClsVentas(ObjIE.IniciaTransacSQL)
|
|
Dim ObjEvento As New ClsOIEventos(ObjIE.IniciaTransacSQL)
|
|
Dim ObjConta As ClsContPAQi = Nothing
|
|
|
|
Try
|
|
Dim filesgral As List(Of Archivo) = Anexo.getfiles().Archivos
|
|
Dim filemove As String = ""
|
|
Dim Comprobante As String = ""
|
|
ComplementoSustitucionGenerado = False
|
|
|
|
For Each fileItem As Archivo In filesgral
|
|
Comprobante = IO.Path.GetExtension(String.Format("{0}Temp\{1}", AppDomain.CurrentDomain.BaseDirectory, fileItem.filename)).Replace(".", "")
|
|
filemove = fileItem.filename
|
|
Next
|
|
|
|
Dim ConceptoPoliza As String = String.Format("{0} {1}", TxtAboneA.Text, TxtObservaciones.Text)
|
|
|
|
If DdlCuenta.SelectedValue.ToEntero > 0 Then
|
|
CveMoneda = GlobalDTBancosCuentas(-1, CveEmpresa:=UsuarioActual.CveEmpresa).FiltroPrimeroValor("CveMoneda", $"CveEmpresa = {UsuarioActual.CveEmpresa} AND CveCuenta = {DdlCuenta.SelectedValue.ToEntero}").ToEntero
|
|
Else
|
|
CveMoneda = IfNull(Request("CveMoneda"), "1").ToString.ToEntero
|
|
End If
|
|
|
|
CvePrePoliza = ObjMov.AddPrePolizas("Ventas/ClientesAbonar", 11, TxtImporte.Text.Trim.ToDecimal, TxtImporte.Text.Trim.ToDecimal, 1, TxtFechaDocumento.Text.ToDate, ConceptoPoliza, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa)
|
|
|
|
If RblTipoPago.SelectedValue = "1" Then
|
|
Dim CveCuentaDeposito As Integer = 0
|
|
Dim TipoCambio As Decimal = 0
|
|
|
|
If DdlCuentaDeposito.Items.Count > 0 Then
|
|
CveCuentaDeposito = DdlCuentaDeposito.SelectedValue.ToEntero
|
|
End If
|
|
|
|
If CveMoneda = 2 Then
|
|
If TxtTCDolares.Visible Then
|
|
TipoCambio = TxtTCDolares.Text.ToDecimal
|
|
Else
|
|
TipoCambio = If(CveMonedaFiltro = -1, TxtTCDolares.Text.ToDecimal, TxtTCDolaresDolares.Text.ToDecimal) 'GlobalTipoCambio(TxtFechaDocumento.Text).ToString.ToDecimal
|
|
End If
|
|
Else
|
|
If TxtTC.Visible Then
|
|
TipoCambio = TxtTC.Text.ToDecimal
|
|
End If
|
|
End If
|
|
|
|
Dim CveProvIntermediario As Integer
|
|
If ChkProveedorIntermediario.Checked Then
|
|
CveProvIntermediario = If(DdlProveedorIntermediario.SelectedValue.ToEntero <= 0, -1, DdlProveedorIntermediario.SelectedValue.ToEntero)
|
|
End If
|
|
CveIE = ObjIE.AddBancos_IE(DdlCuenta.SelectedValue.ToEntero, DdlTipoTransaccion.SelectedValue.ToEntero, TxtFechaDocumento.Text.Trim.ToDate, TxtFolio.Text.Trim, TxtAboneA.Text.Trim, TxtImporte.Text.ToDecimal,
|
|
GlobalDTBancosCuentas(UsuarioActual.CveUsuario, CveEmpresa:=UsuarioActual.CveEmpresa).FiltroPrimeroValor("CveMoneda", "CveCuenta = " & DdlCuenta.SelectedValue).ToEntero, TipoCambio,
|
|
TxtObservaciones.Text.Trim, "", True, True, -1, CvePrePoliza, Comprobante, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveCuentaDeposito:=CveCuentaDeposito,
|
|
CveProveedorIntermediario:=CveProvIntermediario, ImporteDeduccionesPago:=TxtImporteDeduccionesPago.Text.ToDecimal)
|
|
Else
|
|
If RblTipoPago.SelectedValue.Contiene("3") Then 'ixc
|
|
CveIE = DdlIngreso.SelectedValue.ToEntero
|
|
If CveMonedaPago = 2 And Not ChkPagarPesos.Checked Then CveMoneda = 2
|
|
If ChkPagarDolares.Checked Then CveMoneda = 2
|
|
If ChkPagarPesos.Checked Then CveMoneda = 1
|
|
End If
|
|
|
|
End If
|
|
|
|
If CveIE > 0 OrElse RblTipoPago.SelectedValue.Contiene("2", "3") Then
|
|
|
|
'Guardar archivo
|
|
If filemove <> "" Then
|
|
filemove.FilesMove(CveIE.ToString, String.Format("{0}IE", UsuarioActual.Empresa.Ruta), ConcatenarDirectorioBase:=False)
|
|
End If
|
|
|
|
'inserto los movimientos de la conta para abonar al saldo
|
|
If CvePrePoliza > 0 Then
|
|
|
|
Dim CvePlantillaPoliza As Integer = 11
|
|
Dim alertaContabilizacion As String = "Se enviaron correctamente las siguientes pólizas:<br><br>"
|
|
Dim idCuentaContabilizacion As Long = 1
|
|
Dim CveCuentaContabilizacion As Long = 1
|
|
Dim dtConceptos As DataTable = Nothing
|
|
Dim tipoCambioPago As Decimal
|
|
Dim TipoCambioGeneral As Decimal = 1
|
|
Dim CveSubProyectoContabilizar As Integer = -1
|
|
Dim CveSubProyectoMaximo As Integer = -1
|
|
Dim CuentasContablesInvalidas As New StringBuilder
|
|
Dim FuncionalidadFluctuacionImpuestos As Boolean = If(UsuarioActual.Empresa.Funcionalidad(159) = "1", True, False)
|
|
Dim TipoCambioFluctuacion As Decimal = 1
|
|
Dim FechaUltimaFluctuacion As Date = MinFecha
|
|
|
|
Dim tFecha As Date = TxtFechaDocumento.Text.ToDate
|
|
Dim UltimaFluctuacion As MTipoCambioFluctuacion = GlobalTipoCambioUltimaFluctuacion(tFecha)
|
|
|
|
Dim ImportePrestamo As Decimal = 0
|
|
Dim TCPrestamo As Decimal = 0
|
|
|
|
If CveSubProyectoMaximo <= 0 Then 'sino se seleccionó del combo, busca en el listado el primero
|
|
|
|
For Each Gvr As GridViewRow In GvCxC.Rows
|
|
If Gvr.FCCheckBox("Chk").Checked Then
|
|
CveSubProyectoMaximo = Gvr.DataKey("CveSubProyecto").ToEntero
|
|
Exit For
|
|
End If
|
|
Next
|
|
End If
|
|
|
|
If TxtPrestamoImporte.Text.ToDecimal <> 0 Then 'amortización del préstamo
|
|
ImportePrestamo = TxtPrestamoImporte.Text.ToDecimal
|
|
Dim tCveProv As Integer = DtPrestamos.FiltroPrimeroValor("CveProveedor", "CveIE=" & DdlPrestamo.SelectedValue).ToEntero
|
|
Dim tFechaIE As Date = DtPrestamos.FiltroPrimeroValor("FechaDocumento", "CveIE=" & DdlPrestamo.SelectedValue).ToDate
|
|
TCPrestamo = DtPrestamos.FiltroPrimeroValor("TipoCambio", "CveIE=" & DdlPrestamo.SelectedValue).ToDecimal
|
|
If CveMoneda = 1 Then
|
|
If Not ObjMov.AddPrePolizasDetalle(CvePrePoliza, False, ImportePrestamo, ImportePrestamo, 57, TxtFolio.Text, TxtObservaciones.Text, CveIE:=DdlPrestamo.SelectedValue.ToEntero, CveSubProyecto:=CveSubProyectoMaximo, TipoCambio:=tipoCambioPago, CveProveedor:=tCveProv) Then
|
|
MsgError = "No se pudo insertar la póliza"
|
|
End If
|
|
Else
|
|
If UsuarioActual.Empresa.Funcionalidad(703) = "1" AndAlso UltimaFluctuacion IsNot Nothing Then
|
|
If tFechaIE <= UltimaFluctuacion.FechaFluctuacion Then
|
|
FechaUltimaFluctuacion = UltimaFluctuacion.FechaFluctuacion
|
|
TCPrestamo = UltimaFluctuacion.TCFluctuacion
|
|
End If
|
|
End If
|
|
|
|
If Not ObjMov.AddPrePolizasDetalle(CvePrePoliza, False, ImportePrestamo, ImportePrestamo, 349, TxtFolio.Text, TxtObservaciones.Text, CveIE:=DdlPrestamo.SelectedValue.ToEntero, CveSubProyecto:=CveSubProyectoMaximo, TipoCambio:=TCPrestamo, ImporteME:=ImportePrestamo, CveProveedor:=tCveProv) Then
|
|
MsgError = "No se pudo insertar la póliza"
|
|
End If
|
|
|
|
If Not ObjMov.AddPrePolizasDetalle(CvePrePoliza, False, ImportePrestamo, ((ImportePrestamo * TCPrestamo) - ImportePrestamo).RoundSQL, 350, TxtFolio.Text, TxtObservaciones.Text, CveIE:=DdlPrestamo.SelectedValue.ToEntero, CveSubProyecto:=CveSubProyectoMaximo, TipoCambio:=TCPrestamo, ImporteME:=ImportePrestamo, CveProveedor:=tCveProv) Then
|
|
MsgError = "No se pudo insertar la póliza"
|
|
End If
|
|
End If
|
|
|
|
End If
|
|
|
|
If TxtPrestamoIntereses.Text.ToDecimal <> 0 AndAlso MsgError = "" Then
|
|
tipoCambioPago = If(TxtTCDolares.Visible, TxtTCDolares.Text.ToDecimal, TxtTCDolaresDolares.Text.ToDecimal)
|
|
Dim ImporteIntereses As Decimal = (TxtPrestamoIntereses.Text.ToDecimal * tipoCambioPago).RoundSQL
|
|
If Not ObjMov.AddPrePolizasDetalle(CvePrePoliza, False, ImporteIntereses, ImporteIntereses, 51, TxtFolio.Text, TxtObservaciones.Text, CveIE:=DdlPrestamo.SelectedValue.ToEntero, CveSubProyecto:=CveSubProyectoMaximo, TipoCambio:=tipoCambioPago, CveClasificacion:=21927) Then
|
|
MsgError = "No se pudo insertar la póliza"
|
|
End If
|
|
End If
|
|
|
|
'inserto las ventas que voy a pagar
|
|
For Each gvr As GridViewRow In GvCxC.Rows
|
|
|
|
If gvr.FCCheckBox("Chk").Checked Then
|
|
|
|
Dim ObjFactura As Modelos.Factura = Nothing
|
|
Dim EsAnticipoEspecial As Boolean = False
|
|
|
|
If UsuarioActual.Empresa.Funcionalidad(531) = "1" Then
|
|
ObjFactura = New Modelos.Factura(UsuarioActual, gvr.DataKey("CveVenta").ToEntero(), UsuarioActual.CveEmpresa)
|
|
End If
|
|
|
|
Dim VentaActual As New Venta(UsuarioActual)
|
|
VentaActual.CveVenta = gvr.DataKey("CveVenta").ToEntero
|
|
VentaActual.Fecha = gvr.DataKey("Fecha").ToDate
|
|
VentaActual.CveCliente = gvr.DataKey("CveCliente").ToEntero
|
|
VentaActual.CveMoneda = gvr.DataKey("CveMoneda").ToEntero
|
|
VentaActual.TipoDocto = gvr.DataKey("TipoDocto")
|
|
VentaActual.SerieFolio = gvr.DataKey("SerieFolio")
|
|
VentaActual.ClienteNombre = NombreComercial
|
|
VentaActual.TC = gvr.DataKey("TipoCambio").ToDecimal
|
|
VentaActual.Total = gvr.DataKey("Original").ToDecimal
|
|
VentaActual.IVA = gvr.DataKey("IVA").ToDecimal
|
|
VentaActual.IEPS = gvr.DataKey("IEPS").ToDecimal
|
|
VentaActual.RetIVA = gvr.DataKey("RetIVA").ToDecimal
|
|
VentaActual.RetISR = gvr.DataKey("RetISR").ToDecimal
|
|
|
|
VentaActual.PorcentajeIVA = gvr.DataKey("PorcentajeIVA").ToDecimal
|
|
VentaActual.CveSubProyecto = gvr.DataKey("CveSubProyecto").ToEntero
|
|
'Importe de pago
|
|
Dim Pago As New VentaPago
|
|
Pago.TipoPago = "XXX"
|
|
Pago.Fecha = TxtFechaDocumento.Text.ToDate
|
|
Pago.CveIE = CveIE
|
|
Pago.CveMonedaPago = CveMoneda
|
|
Pago.ImportePago = gvr.FCTextBox("TxtAbonar").Text.ToDecimal
|
|
Pago.ImportePagoVenta = gvr.FCTextBox("TxtAbonar").Text.ToDecimal
|
|
Pago.Referencia = TxtFolio.Text
|
|
|
|
If RblTipoPago.SelectedValue = "3" Then
|
|
Pago.TipoPago = "I"
|
|
Pago.FechaDocumentoRelacionado = FechaIngreso
|
|
Pago.CveClientePago = CveCliente
|
|
End If
|
|
|
|
'Tipos de cambio
|
|
If Pago.CveMonedaPago = 1 AndAlso VentaActual.CveMoneda = 2 Then 'Si la venta viene en Dolares y se va a pagar en Pesos
|
|
Pago.TCPago = TxtTC.Text.ToDecimal
|
|
ElseIf Pago.CveMonedaPago = 2 AndAlso VentaActual.CveMoneda = 2 Then 'Si la venta viene en Dolares y se va a pagar en DOLARES
|
|
Pago.TCPago = If(TxtTCDolaresDolares.Visible, TxtTCDolaresDolares.Text.ToDecimal, TxtTCDolares.Text.ToDecimal)
|
|
ElseIf Pago.CveMonedaPago = 2 AndAlso VentaActual.CveMoneda = 1 Then 'Si la venta viene en pesos y se va a pagar en DOLARES
|
|
Pago.TCPago = TxtTCDolares.Text.ToDecimal
|
|
End If
|
|
tipoCambioPago = Pago.TCPago
|
|
|
|
If gvr.FCTextBox("TxtComision").Text.ToDecimal <> 0 Then Pago.OtroGastoIngreso = gvr.FCTextBox("TxtComision").Text.ToDecimal * If(Pago.CveMonedaPago = VentaActual.CveMoneda, 1, Pago.TCPago)
|
|
|
|
If UsuarioActual.Empresa.Funcionalidad(590) = "1" AndAlso MsgError = "" Then '' si es empresa agrícola
|
|
Dim FluctuacionAnticipo As Decimal = 0
|
|
Dim ImporteLiq1 As Decimal = gvr.FCTextBox("TxtLiqCol1").Text.ToDecimal
|
|
Dim ImporteLiq2 As Decimal = gvr.FCTextBox("TxtLiqCol2").Text.ToDecimal
|
|
Dim ImporteLiq3 As Decimal = gvr.FCTextBox("TxtLiqCol3").Text.ToDecimal
|
|
Dim ImporteLiq4 As Decimal = gvr.FCTextBox("TxtLiqCol4").Text.ToDecimal
|
|
Dim ImporteLiq5 As Decimal = gvr.FCTextBox("TxtLiqCol5").Text.ToDecimal
|
|
Dim ImporteLiq6 As Decimal = gvr.FCTextBox("TxtLiqCol6").Text.ToDecimal
|
|
Dim ImporteLiq7 As Decimal = gvr.FCTextBox("TxtLiqCol7").Text.ToDecimal
|
|
Dim ImporteLiq8 As Decimal = gvr.FCTextBox("TxtLiqCol8").Text.ToDecimal
|
|
Dim ImporteLiq9 As Decimal = gvr.FCTextBox("TxtLiqCol9").Text.ToDecimal
|
|
Dim ImporteLiq10 As Decimal = gvr.FCTextBox("TxtLiqCol10").Text.ToDecimal
|
|
|
|
Dim CveClasificacionCol1 As Integer = 21514 'comisiones sobre venta
|
|
Dim CveClasificacionCol2 As Integer = 21916 ' manejo
|
|
Dim CveClasificacionCol3 As Integer = 21917 'servicios de inspección
|
|
Dim CveClasificacionCol4 As Integer = 21918 ' seguro liquidación
|
|
Dim CveClasificacionCol5 As Integer = 21561 ' gastos aduanales mex
|
|
Dim CveClasificacionCol6 As Integer = 21920 ' diveros
|
|
Dim CveClasificacionCol7 As Integer = 21919 'gastos aduanales usa
|
|
Dim CveClasificacionCol8 As Integer = 21211 'material Empaque
|
|
Dim CveClasificacionCol9 As Integer = 21207 'Semilla
|
|
Dim CveClasificacionCol10 As Integer = 21541 'Flete
|
|
|
|
Dim CveSubProyectoLiquidacion As Integer = gvr.DataKey("CveSubProyecto").ToEntero
|
|
Dim CveConceptoLiquidacion As Integer = 51
|
|
Dim ConceptoPartida As String = gvr.DataKey("SerieFolio") & " " & gvr.FCDropDownList("DdlTG").SelectedItem.Text
|
|
|
|
If ImporteLiq1 <> 0 Then
|
|
If Not ObjMov.AddPrePolizasDetalle(CvePrePoliza, False, ImporteLiq1, ImporteLiq1 * tipoCambioPago, CveConceptoLiquidacion, gvr.DataKey("SerieFolio"), ConceptoPartida, CveIE:=CveIE, CveVenta:=gvr.DataKey("CveVenta").ToEntero, CveSubProyecto:=CveSubProyectoLiquidacion, CveCliente:=ViewState("CveCliente").ToString.ToEntero, TipoCambio:=tipoCambioPago, TipoCambioPago:=tipoCambioPago, PorcentajeImpuesto:=0, CveClasificacion:=CveClasificacionCol1, ImporteME:=If(CveMoneda > 1, ImporteLiq1, 0), CveTipoGasto:=gvr.FCDropDownList("DdlTG").SelectedValue.ToEntero) Then
|
|
MsgError = "No se pudo insertar la póliza" : Exit For
|
|
End If
|
|
End If
|
|
|
|
If ImporteLiq2 <> 0 Then
|
|
If Not ObjMov.AddPrePolizasDetalle(CvePrePoliza, False, ImporteLiq2, ImporteLiq2 * tipoCambioPago, CveConceptoLiquidacion, gvr.DataKey("SerieFolio"), ConceptoPartida, CveIE:=CveIE, CveVenta:=gvr.DataKey("CveVenta").ToEntero, CveSubProyecto:=CveSubProyectoLiquidacion, CveCliente:=ViewState("CveCliente").ToString.ToEntero, TipoCambio:=tipoCambioPago, TipoCambioPago:=tipoCambioPago, PorcentajeImpuesto:=0, CveClasificacion:=CveClasificacionCol2, ImporteME:=If(CveMoneda > 1, ImporteLiq2, 0), CveTipoGasto:=gvr.FCDropDownList("DdlTG").SelectedValue.ToEntero) Then
|
|
MsgError = "No se pudo insertar la póliza" : Exit For
|
|
End If
|
|
End If
|
|
|
|
If ImporteLiq3 <> 0 Then
|
|
If Not ObjMov.AddPrePolizasDetalle(CvePrePoliza, False, ImporteLiq3, ImporteLiq3 * tipoCambioPago, CveConceptoLiquidacion, gvr.DataKey("SerieFolio"), ConceptoPartida, CveIE:=CveIE, CveVenta:=gvr.DataKey("CveVenta").ToEntero, CveSubProyecto:=CveSubProyectoLiquidacion, CveCliente:=ViewState("CveCliente").ToString.ToEntero, TipoCambio:=tipoCambioPago, TipoCambioPago:=tipoCambioPago, PorcentajeImpuesto:=0, CveClasificacion:=CveClasificacionCol3, ImporteME:=If(CveMoneda > 1, ImporteLiq3, 0), CveTipoGasto:=gvr.FCDropDownList("DdlTG").SelectedValue.ToEntero) Then
|
|
MsgError = "No se pudo insertar la póliza" : Exit For
|
|
End If
|
|
End If
|
|
|
|
If ImporteLiq4 <> 0 Then
|
|
If Not ObjMov.AddPrePolizasDetalle(CvePrePoliza, False, ImporteLiq4, ImporteLiq4 * tipoCambioPago, CveConceptoLiquidacion, gvr.DataKey("SerieFolio"), ConceptoPartida, CveIE:=CveIE, CveVenta:=gvr.DataKey("CveVenta").ToEntero, CveSubProyecto:=CveSubProyectoLiquidacion, CveCliente:=ViewState("CveCliente").ToString.ToEntero, TipoCambio:=tipoCambioPago, TipoCambioPago:=tipoCambioPago, PorcentajeImpuesto:=0, CveClasificacion:=CveClasificacionCol4, ImporteME:=If(CveMoneda > 1, ImporteLiq4, 0), CveTipoGasto:=gvr.FCDropDownList("DdlTG").SelectedValue.ToEntero) Then
|
|
MsgError = "No se pudo insertar la póliza" : Exit For
|
|
End If
|
|
End If
|
|
|
|
If ImporteLiq5 <> 0 Then
|
|
If Not ObjMov.AddPrePolizasDetalle(CvePrePoliza, False, ImporteLiq5, ImporteLiq5 * tipoCambioPago, CveConceptoLiquidacion, gvr.DataKey("SerieFolio"), ConceptoPartida, CveIE:=CveIE, CveVenta:=gvr.DataKey("CveVenta").ToEntero, CveSubProyecto:=CveSubProyectoLiquidacion, CveCliente:=ViewState("CveCliente").ToString.ToEntero, TipoCambio:=tipoCambioPago, TipoCambioPago:=tipoCambioPago, PorcentajeImpuesto:=0, CveClasificacion:=CveClasificacionCol5, ImporteME:=If(CveMoneda > 1, ImporteLiq5, 0), CveTipoGasto:=gvr.FCDropDownList("DdlTG").SelectedValue.ToEntero) Then
|
|
MsgError = "No se pudo insertar la póliza" : Exit For
|
|
End If
|
|
End If
|
|
|
|
If ImporteLiq6 <> 0 Then
|
|
If Not ObjMov.AddPrePolizasDetalle(CvePrePoliza, False, ImporteLiq6, ImporteLiq6 * tipoCambioPago, CveConceptoLiquidacion, gvr.DataKey("SerieFolio"), ConceptoPartida, CveIE:=CveIE, CveVenta:=gvr.DataKey("CveVenta").ToEntero, CveSubProyecto:=CveSubProyectoLiquidacion, CveCliente:=ViewState("CveCliente").ToString.ToEntero, TipoCambio:=tipoCambioPago, TipoCambioPago:=tipoCambioPago, PorcentajeImpuesto:=0, CveClasificacion:=CveClasificacionCol6, ImporteME:=If(CveMoneda > 1, ImporteLiq6, 0), CveTipoGasto:=gvr.FCDropDownList("DdlTG").SelectedValue.ToEntero) Then
|
|
MsgError = "No se pudo insertar la póliza" : Exit For
|
|
End If
|
|
End If
|
|
|
|
If ImporteLiq7 <> 0 Then
|
|
If Not ObjMov.AddPrePolizasDetalle(CvePrePoliza, False, ImporteLiq7, ImporteLiq7 * tipoCambioPago, CveConceptoLiquidacion, gvr.DataKey("SerieFolio"), ConceptoPartida, CveIE:=CveIE, CveVenta:=gvr.DataKey("CveVenta").ToEntero, CveSubProyecto:=CveSubProyectoLiquidacion, CveCliente:=ViewState("CveCliente").ToString.ToEntero, TipoCambio:=tipoCambioPago, TipoCambioPago:=tipoCambioPago, PorcentajeImpuesto:=0, CveClasificacion:=CveClasificacionCol7, ImporteME:=If(CveMoneda > 1, ImporteLiq7, 0), CveTipoGasto:=gvr.FCDropDownList("DdlTG").SelectedValue.ToEntero) Then
|
|
MsgError = "No se pudo insertar la póliza" : Exit For
|
|
End If
|
|
End If
|
|
|
|
If ImporteLiq8 <> 0 Then
|
|
If Not ObjMov.AddPrePolizasDetalle(CvePrePoliza, False, ImporteLiq8, ImporteLiq8 * tipoCambioPago, CveConceptoLiquidacion, gvr.DataKey("SerieFolio"), ConceptoPartida, CveIE:=CveIE, CveVenta:=gvr.DataKey("CveVenta").ToEntero, CveSubProyecto:=CveSubProyectoLiquidacion, CveCliente:=ViewState("CveCliente").ToString.ToEntero, TipoCambio:=tipoCambioPago, TipoCambioPago:=tipoCambioPago, PorcentajeImpuesto:=0, CveClasificacion:=CveClasificacionCol8, ImporteME:=If(CveMoneda > 1, ImporteLiq8, 0), CveTipoGasto:=gvr.FCDropDownList("DdlTG").SelectedValue.ToEntero) Then
|
|
MsgError = "No se pudo insertar la póliza" : Exit For
|
|
End If
|
|
End If
|
|
|
|
If ImporteLiq9 <> 0 Then
|
|
If Not ObjMov.AddPrePolizasDetalle(CvePrePoliza, False, ImporteLiq9, ImporteLiq9 * tipoCambioPago, CveConceptoLiquidacion, gvr.DataKey("SerieFolio"), ConceptoPartida, CveIE:=CveIE, CveVenta:=gvr.DataKey("CveVenta").ToEntero, CveSubProyecto:=CveSubProyectoLiquidacion, CveCliente:=ViewState("CveCliente").ToString.ToEntero, TipoCambio:=tipoCambioPago, TipoCambioPago:=tipoCambioPago, PorcentajeImpuesto:=0, CveClasificacion:=CveClasificacionCol9, ImporteME:=If(CveMoneda > 1, ImporteLiq9, 0), CveTipoGasto:=gvr.FCDropDownList("DdlTG").SelectedValue.ToEntero) Then
|
|
MsgError = "No se pudo insertar la póliza" : Exit For
|
|
End If
|
|
End If
|
|
|
|
If ImporteLiq10 <> 0 Then
|
|
If Not ObjMov.AddPrePolizasDetalle(CvePrePoliza, False, ImporteLiq10, ImporteLiq10 * tipoCambioPago, CveConceptoLiquidacion, gvr.DataKey("SerieFolio"), ConceptoPartida, CveIE:=CveIE, CveVenta:=gvr.DataKey("CveVenta").ToEntero, CveSubProyecto:=CveSubProyectoLiquidacion, CveCliente:=ViewState("CveCliente").ToString.ToEntero, TipoCambio:=tipoCambioPago, TipoCambioPago:=tipoCambioPago, PorcentajeImpuesto:=0, CveClasificacion:=CveClasificacionCol10, ImporteME:=If(CveMoneda > 1, ImporteLiq10, 0), CveTipoGasto:=gvr.FCDropDownList("DdlTG").SelectedValue.ToEntero) Then
|
|
MsgError = "No se pudo insertar la póliza" : Exit For
|
|
End If
|
|
End If
|
|
|
|
If MsgError = "" AndAlso gvr.FCDropDownList("DdlAnti").SelectedValue.ToEntero > 0 Then
|
|
Dim TCP As Decimal = 0
|
|
Dim FolioPago As String = " "
|
|
If DtIngresos IsNot Nothing Then
|
|
TCP = DtIngresos.FiltroPrimeroValor("TipoCambio", String.Format("CveIE={0}", gvr.FCDropDownList("DdlAnti").SelectedValue)).ToDecimal
|
|
FolioPago = DtIngresos.FiltroPrimeroValor("Folio", String.Format("CveIE={0}", gvr.FCDropDownList("DdlAnti").SelectedValue))
|
|
Dim tTCPFecha As Date = DtIngresos.FiltroPrimeroValor("FechaDocumento", String.Format("CveIE={0}", gvr.FCDropDownList("DdlAnti").SelectedValue)).ToDate
|
|
'considera fluctuación
|
|
If UsuarioActual.Empresa.Funcionalidad(703) = "1" AndAlso UltimaFluctuacion IsNot Nothing Then
|
|
If tTCPFecha <= UltimaFluctuacion.FechaFluctuacion Then
|
|
tTCPFecha = UltimaFluctuacion.FechaFluctuacion
|
|
TCP = UltimaFluctuacion.TCFluctuacion
|
|
End If
|
|
End If
|
|
End If
|
|
'se calcula la fluctuación de la aplicación del anticipo, para sumarla en el concepto de fluctuación más abajo
|
|
FluctuacionAnticipo = ((TCP - tipoCambioPago) * gvr.FCTextBox("TxtAmort").Text.ToDecimal).RoundSQL
|
|
MsgError = RegistraAmortizacionAnticipo(ObjMov, CvePrePoliza, gvr.FCDropDownList("DdlAnti").SelectedValue.ToEntero, gvr.FCTextBox("TxtAmort").Text.ToDecimal, TCP, gvr.DataKey("CveVenta").ToEntero, gvr.DataKey("SerieFolio").ToString, FolioPago)
|
|
End If
|
|
|
|
If MsgError = "" AndAlso gvr.FCDropDownList("DdlAnti2").SelectedValue.ToEntero > 0 Then
|
|
Dim TCP As Decimal = 0
|
|
Dim FolioPago As String = " "
|
|
If DtIngresos IsNot Nothing Then
|
|
TCP = DtIngresos.FiltroPrimeroValor("TipoCambio", String.Format("CveIE={0}", gvr.FCDropDownList("DdlAnti2").SelectedValue)).ToDecimal
|
|
FolioPago = DtIngresos.FiltroPrimeroValor("Folio", String.Format("CveIE={0}", gvr.FCDropDownList("DdlAnti2").SelectedValue))
|
|
Dim tTCPFecha As Date = DtIngresos.FiltroPrimeroValor("FechaDocumento", String.Format("CveIE={0}", gvr.FCDropDownList("DdlAnti2").SelectedValue)).ToDate
|
|
'considera fluctuación
|
|
If UsuarioActual.Empresa.Funcionalidad(703) = "1" AndAlso UltimaFluctuacion IsNot Nothing Then
|
|
If tTCPFecha <= UltimaFluctuacion.FechaFluctuacion Then
|
|
tTCPFecha = UltimaFluctuacion.FechaFluctuacion
|
|
TCP = UltimaFluctuacion.TCFluctuacion
|
|
End If
|
|
End If
|
|
|
|
End If
|
|
'se calcula la fluctuación de la aplicación del anticipo, para sumarla en el concepto de fluctuación más abajo
|
|
FluctuacionAnticipo += ((TCP - tipoCambioPago) * gvr.FCTextBox("TxtAmort2").Text.ToDecimal).RoundSQL
|
|
MsgError = RegistraAmortizacionAnticipo(ObjMov, CvePrePoliza, gvr.FCDropDownList("DdlAnti2").SelectedValue.ToEntero, gvr.FCTextBox("TxtAmort2").Text.ToDecimal, TCP, gvr.DataKey("CveVenta").ToEntero, gvr.DataKey("SerieFolio").ToString, FolioPago)
|
|
End If
|
|
|
|
If ImportePrestamo <> 0 Then
|
|
If TCPrestamo > 0 Then
|
|
FluctuacionAnticipo += ((TCPrestamo - tipoCambioPago) * ImportePrestamo).RoundSQL
|
|
ImportePrestamo = 0
|
|
End If
|
|
End If
|
|
Pago.ImporteFluctuacionAdicional = FluctuacionAnticipo
|
|
End If
|
|
|
|
If MsgError = "" AndAlso AplicaPrePolizaPagoVenta(VentaActual, Pago, CvePrePoliza, ObjMov) Then
|
|
MsgError = "No se pudo insertar la póliza"
|
|
Exit For
|
|
End If
|
|
|
|
' Case 134 'Pago Intermediario
|
|
'If RblTipoPago.SelectedValue = "2" Then
|
|
' Dim ImporteMovimiento As Decimal = gvr.FCTextBox("TxtAbonar").Text.ToDecimal - gvr.FCTextBox("TxtComision").Text.ToDecimal
|
|
' Dim ImporteMN As Decimal = (ImporteMovimiento * tipoCambioPago).RoundSQL
|
|
|
|
' If Not ObjMov.AddPrePolizasDetalle(CvePrePoliza, False, ImporteMovimiento, ImporteMN, 134, VentaActual.SerieFolio, VentaActual.SerieFolio, 0, CveVenta:=gvr.DataKey("CveVenta").ToEntero, CveSubProyecto:=CveSubProyectoContabilizar, CveProveedor:=DdlProveedorPagoInt.SelectedValue.ToEntero) Then
|
|
' MsgError = "No se pudo insertar la póliza"
|
|
' End If
|
|
'End If
|
|
|
|
'PARA EMITIR COMPLEMENTO PAGO
|
|
CveVentasPago.Add(gvr.DataKey("CveVenta").ToEntero)
|
|
SeriesPago.Add(gvr.DataKey("SerieFolio"))
|
|
|
|
|
|
If gvr.FCCheckBox("ChkGenerarNC").Checked AndAlso ObjFactura IsNot Nothing Then
|
|
ObjFactura.DescuentoProntoPago = gvr.DataKey("DescuentoProntoPago").ToDecimal()
|
|
ListaFacturasGenerarNC.Add(ObjFactura)
|
|
End If
|
|
|
|
End If
|
|
Next
|
|
|
|
If RblTipoPago.SelectedValue = "1" AndAlso MsgError = "" Then
|
|
|
|
CveSubProyectoContabilizar = CveSubProyectoMaximo
|
|
|
|
If CveMoneda = 2 Then
|
|
'If IdCuentaBancariaComplementaria > 0 Then
|
|
If CveMoneda = 2 AndAlso CveMonedaFiltro = 1 Then 'Si la venta viene en pesos y se va a pagar en DOLARES
|
|
tipoCambioPago = TxtTCDolares.Text.ToDecimal
|
|
ElseIf CveMoneda = 2 AndAlso CveMonedaFiltro = 2 Then
|
|
tipoCambioPago = TxtTCDolaresDolares.Text.ToDecimal
|
|
End If
|
|
|
|
If Not ObjMov.AddPrePolizasDetalle(CvePrePoliza, False, TxtImporte.Text.ToDecimal, TxtImporte.Text.Trim.ToDecimal, 30, ObjIE.Folio, TxtObservaciones.Text + If(CveMoneda = 2, $" TC:{tipoCambioPago}", ""), CveIE:=CveIE, CveSubProyecto:=CveSubProyectoContabilizar, CveCliente:=ViewState("CveCliente").ToString.ToEntero, TipoCambio:=tipoCambioPago, TipoCambioPago:=tipoCambioPago) Then
|
|
MsgError = "No se pudo insertar la póliza"
|
|
End If
|
|
|
|
If MsgError = "" AndAlso Not ObjMov.AddPrePolizasDetalle(CvePrePoliza, False, If(CveMoneda = 1 AndAlso TxtTC.Visible, TxtImporte.Text.ToDecimal / TxtTC.Text.ToDecimal, TxtImporte.Text.ToDecimal), If(CveMoneda = 2, (TxtImporte.Text.Trim.ToDecimal * tipoCambioPago) - TxtImporte.Text.Trim.ToDecimal, TxtImporte.Text.Trim.ToDecimal), 204, TxtObservaciones.Text, TxtObservaciones.Text + If(CveMoneda = 2, $" TC:{tipoCambioPago}", ""), CveIE:=CveIE, CveSubProyecto:=CveSubProyectoContabilizar, CveCliente:=ViewState("CveCliente").ToString.ToEntero, ImporteME:=If(CveMoneda = 2, TxtImporte.Text.Trim.ToDecimal, 0), TipoCambio:=tipoCambioPago, TipoCambioPago:=tipoCambioPago) Then
|
|
MsgError = "No se pudo insertar la póliza"
|
|
End If
|
|
|
|
Else
|
|
If CveMoneda = 2 AndAlso CveMonedaFiltro = 1 Then 'Si la venta viene en pesos y se va a pagar en DOLARES
|
|
tipoCambioPago = TxtTCDolares.Text.ToDecimal
|
|
ElseIf CveMoneda = 2 AndAlso CveMonedaFiltro = 2 Then
|
|
tipoCambioPago = TxtTCDolaresDolares.Text.ToDecimal
|
|
End If
|
|
|
|
If Not ObjMov.AddPrePolizasDetalle(CvePrePoliza, False, TxtImporte.Text.ToDecimal, If(CveMoneda = 2, TxtImporte.Text.Trim.ToDecimal * tipoCambioPago, TxtImporte.Text.Trim.ToDecimal), 30, ObjIE.Folio, TxtObservaciones.Text + If(CveMoneda = 2, $" TC:{tipoCambioPago}", ""), CveIE:=CveIE, CveSubProyecto:=CveSubProyectoContabilizar, CveCliente:=ViewState("CveCliente").ToString.ToEntero, ImporteME:=If(CveMoneda = 2, TxtImporte.Text.ToDecimal, 0), TipoCambio:=tipoCambioPago, TipoCambioPago:=tipoCambioPago) Then
|
|
MsgError = "No se pudo insertar la póliza"
|
|
End If
|
|
End If
|
|
End If
|
|
|
|
If UsuarioActual.Empresa.Funcionalidad(590) = "1" AndAlso MsgError = "" Then '' si es empresa agrícola
|
|
If TxtAnticipo.Text.ToDecimal <> 0 Then
|
|
If Not ObjMov.AddPrePolizasDetalle(CvePrePoliza, True, TxtAnticipo.Text.ToDecimal, TxtAnticipo.Text.ToDecimal, 66, TxtFolio.Text, TxtObservaciones.Text, CveIE:=CveIE, CveSubProyecto:=CveSubProyectoContabilizar, CveCliente:=ViewState("CveCliente").ToString.ToEntero, TipoCambio:=tipoCambioPago, PorcentajeImpuesto:=0, ImporteME:=If(CveMoneda > 1, TxtAnticipo.Text.ToDecimal, 0)) Then
|
|
MsgError = "No se pudo insertar la póliza"
|
|
End If
|
|
|
|
If CveMoneda > 1 Then
|
|
If Not ObjMov.AddPrePolizasDetalle(CvePrePoliza, True, TxtAnticipo.Text.ToDecimal, ((TxtAnticipo.Text.ToDecimal * tipoCambioPago) - TxtAnticipo.Text.ToDecimal).RoundSQL, 226, TxtFolio.Text, TxtObservaciones.Text, CveIE:=CveIE, CveSubProyecto:=CveSubProyectoContabilizar, CveCliente:=ViewState("CveCliente").ToString.ToEntero, TipoCambio:=tipoCambioPago, PorcentajeImpuesto:=0, ImporteME:=If(CveMoneda > 1, TxtAnticipo.Text.ToDecimal, 0)) Then
|
|
MsgError = "No se pudo insertar la póliza"
|
|
End If
|
|
End If
|
|
End If
|
|
End If
|
|
|
|
If MsgError = "" AndAlso Not ObjMov.ValidacionesPrePoliza(CvePrePoliza, UsuarioActual, Opcion:=3) Then
|
|
MsgError = ObjMov.MensajePolizaDescuadre & " La diferencia es de: " & ObjMov.ValorDiferencia
|
|
'If ObjMov.ValorPolizaDescuadre > 0 Then
|
|
' MsgError = ObjMov.MensajePolizaDescuadre & " La diferencia es de: " & ObjMov.ValorDiferencia
|
|
'End If
|
|
End If
|
|
Else
|
|
MsgError = "No se pudo insertar la póliza"
|
|
End If
|
|
Else
|
|
MsgError = "No se insertó el encabezado"
|
|
End If
|
|
|
|
If UsuarioActual.Empresa.Funcionalidad(531) = "1" AndAlso MsgError = "" Then
|
|
If MsgError = "" Then
|
|
If ListaFacturasGenerarNC.Count > 0 Then
|
|
|
|
For Each Fac As Modelos.Factura In ListaFacturasGenerarNC
|
|
Dim ListaNC As New List(Of Modelos.Factura)
|
|
ListaNC.Add(Fac)
|
|
Dim Resp As RespuestaNotaCredrito = GenerarNC(ObjIE.IniciaTransacSQL(), ObjConta, ListaNC)
|
|
|
|
If Resp IsNot Nothing AndAlso Resp.Respuesta IsNot Nothing AndAlso Resp.Respuesta.CveVenta > 0 Then
|
|
NCGeneradas.Add(Resp)
|
|
Else
|
|
MsgError = "No se pudo generar la nota de crédito"
|
|
Exit For
|
|
End If
|
|
Next
|
|
|
|
If MsgError = "" Then
|
|
If NCGeneradas.Count <> ListaFacturasGenerarNC.Count Then
|
|
MsgError = "No se generaron las notas de crédito seleccionadas"
|
|
End If
|
|
End If
|
|
|
|
End If
|
|
End If
|
|
End If
|
|
|
|
Dim ErrorAC As Boolean = False
|
|
|
|
If MsgError = "" Then
|
|
If UsuarioActual.Empresa.TipoContabilidad = 2 AndAlso UsuarioActual.Empresa.UsaAC Then
|
|
Dim Fecha As Date = TxtFechaDocumento.Text.Trim.ToDate
|
|
ObjConta = New ClsContPAQi(UsuarioActual.Empresa)
|
|
ObjConta.IniciaTransacSQL()
|
|
Dim Facturas As New StringBuilder
|
|
|
|
IDPoliza = ObjConta.AddPoliza(1, String.Format("Recaudado: {0}, {1}", TxtAboneA.Text, TxtObservaciones.Text), TxtImporte.Text.ToDecimal, TxtImporte.Text.ToDecimal, UsuarioActual.CveUsuario, Fecha)
|
|
FolioPoliza = ObjConta.Folio.ToString
|
|
|
|
|
|
Dim ConceptoRenglon As String
|
|
If IDPoliza > 0 Then
|
|
Dim PorcentajePago As Double = 1
|
|
Dim Total As Double
|
|
Dim ObjVentas As New ClsVentas
|
|
Dim ImporteOP As Decimal = 0
|
|
Dim IdCuentaOP As Integer = -1
|
|
|
|
For Each gvr As GridViewRow In GvCxC.Rows
|
|
If gvr.FCCheckBox("Chk").Checked Then
|
|
If gvr.DataKey("Original").ToDecimal > 0 Then PorcentajePago = gvr.FCTextBox("TxtAbonar").Text.ToDecimal / gvr.DataKey("Original").ToDecimal Else PorcentajePago = 1
|
|
|
|
If ObjVentas.GetPresupuestosVentas(gvr.DataKey("CveVenta").ToEntero) Then
|
|
For Each drt As DataRow In ObjVentas.DtResultados.Rows
|
|
Total = drt("TotalPresupuesto").ToString.ToDecimal * PorcentajePago
|
|
ConceptoRenglon = String.Format("{0} {1}", gvr.DataKey("SerieFolio"), drt("FuenteRecaudacionRubroIngreso").ToString)
|
|
If Total > 0 Then
|
|
If Not ObjConta.AddMovimiento(IDPoliza, drt("IdCuentaDevengado").ToString.ToEntero, False, Total, "", ConceptoRenglon, 0, Fecha, "") Then ErrorAC = True : Exit For : Exit For
|
|
|
|
If Not ObjConta.AddMovimiento(IDPoliza, drt("IdCuentaRecaudado").ToString.ToEntero, True, Total, "", ConceptoRenglon, 0, Fecha, "") Then ErrorAC = True : Exit For : Exit For
|
|
End If
|
|
|
|
Next
|
|
If ErrorAC Then Exit For
|
|
|
|
Facturas.AppendFormat(" {0}", gvr.DataKey("SerieFolio"))
|
|
End If
|
|
|
|
End If
|
|
Next
|
|
ObjVentas.Dispose()
|
|
|
|
'AFECTAR MATRIZ EGRESOS
|
|
ConceptoRenglon = String.Format("Recaudado: {0} - F.{1}", TxtAboneA.Text, Facturas.ToString)
|
|
If ObjConta.AddMovimiento(IDPoliza, 0, False, TxtImporte.Text.ToDecimal, "", ConceptoRenglon, 0, Fecha, "") Then
|
|
If TxtImporte.Text.ToDecimal - ImporteOP > 0 Then
|
|
If Not ObjConta.AddMovimiento(IDPoliza, ViewState("CtaCliente").ToString.ToEntero, True, TxtImporte.Text.ToDecimal - ImporteOP, "", ConceptoRenglon, 0, Fecha, "") Then ErrorAC = True
|
|
End If
|
|
Else
|
|
ErrorAC = True
|
|
End If
|
|
|
|
Else
|
|
ErrorAC = True
|
|
End If
|
|
|
|
If Not ErrorAC Then
|
|
ErrorAC = Not ObjConta.AjustaPoliza(IDPoliza)
|
|
End If
|
|
|
|
If Not ErrorAC Then
|
|
ErrorAC = Not ObjIE.UpdateIEPrePoliza(Fecha, FolioPoliza.ToString, IDPoliza, CvePrePoliza, CveIE, 0)
|
|
End If
|
|
|
|
End If
|
|
End If
|
|
|
|
If ErrorAC Then
|
|
MsgError = "Error al Agregar la Póliza de Armonización Contable"
|
|
End If
|
|
|
|
Catch ex As Exception
|
|
MsgError = "Ocurrió un error al guardar el movimiento"
|
|
OnError("Ocurrió un error al guardar el movimiento", ex)
|
|
End Try
|
|
|
|
If MsgError = "" Then
|
|
ObjIE.Commit()
|
|
If ObjConta IsNot Nothing Then ObjConta.Commit()
|
|
|
|
Dim StrMsg As New StringBuilder
|
|
StrMsg.AppendFormat("Abono Registrado Correctamente. Folio <b><a href='/Bancos/IE.aspx?CveIE={0}' target='_blank' class='Texto'>{1}</a></b> <br/>", CveIE, ObjIE.Folio)
|
|
|
|
If IDPoliza > 0 Then StrMsg.AppendFormat("Poliza: <a href='/Contabilidad/RegPoliza.aspx?IdPoliza={0}' target='_blank' class='Texto'>{1}</a> <br/>", IDPoliza, FolioPoliza)
|
|
|
|
Dim TextoComplementoPago As String = EmitirComplementoPago(CveIE, CveVentasPago, SeriesPago)
|
|
|
|
For Each RespuestaNotaCredito As RespuestaNotaCredrito In NCGeneradas
|
|
If RespuestaNotaCredito IsNot Nothing AndAlso RespuestaNotaCredito.Respuesta IsNot Nothing Then
|
|
Try
|
|
Dim ObjTimbradoNC As New Timbrado
|
|
Dim TimbroNC As Boolean = ObjTimbradoNC.TimbrarFactura(UsuarioActual, RespuestaNotaCredito.ObjFacturaNC)
|
|
If Not TimbroNC Then
|
|
Alert(ObjTimbradoNC.MensajeErrorCFDI, TipoMensaje.MsgError)
|
|
End If
|
|
ObjTimbradoNC = Nothing
|
|
Catch ex As Exception
|
|
OnError("Ocurrió un error al timbrar la NC.", ex)
|
|
End Try
|
|
StrMsg.AppendFormat("Nota de crédito generada correctamente.<br/><br/> Folio: <a href='/Ventas/Ventas.aspx?CveVenta={0}' target='_blank' class='Texto'>{1}</a><br/>", RespuestaNotaCredito.Respuesta.CveVenta, RespuestaNotaCredito.Respuesta.SerieFolio)
|
|
End If
|
|
Next
|
|
Alert($"{StrMsg.ToString}<br/><br/>{TextoComplementoPago}", TipoMensaje.MsgInformacion, If(ChkSeguirRegistrando.Checked, "location.href =""#""", "location.href =""/Bancos/RepCxCCliente.aspx"""))
|
|
|
|
Else
|
|
If ObjConta IsNot Nothing Then ObjConta.RollBack()
|
|
ObjIE.RollBack()
|
|
Alert(MsgError, TipoMensaje.MsgAdvertencia)
|
|
End If
|
|
|
|
ObjIE.Dispose()
|
|
ObjVentasSaldos.Dispose()
|
|
ObjMov.Dispose()
|
|
If ObjConta IsNot Nothing Then ObjConta.Dispose()
|
|
ObjEvento.Dispose()
|
|
|
|
UPVentas.Update()
|
|
|
|
If MsgError = "" Then
|
|
LimpiaCampos()
|
|
End If
|
|
|
|
End Sub
|
|
|
|
Private Function RegistraAmortizacionAnticipo(ByRef ObjMov As ClsContabilidad, CvePrePoliza As Integer, CveIE As Integer, Importe As Decimal, tipoCambioPago As Decimal, CveVenta As Integer, ReferenciaVenta As String, ReferenciaPago As String) As String
|
|
Dim MsgError As String = ""
|
|
If CveMonedaPago = 2 Then
|
|
|
|
If Not ObjMov.AddPrePolizasDetalle(CvePrePoliza, False, Importe, Importe, 92, ReferenciaVenta, ReferenciaVenta, CveIE:=CveIE, CveCliente:=CveCliente, CveVenta:=CveVenta, TipoCambio:=tipoCambioPago, TipoCambioPago:=tipoCambioPago) Then
|
|
MsgError = "No se pudo insertar la póliza"
|
|
End If
|
|
|
|
If Not ObjMov.AddPrePolizasDetalle(CvePrePoliza, False, If(CveMoneda = 1 AndAlso TxtTC.Visible, Importe / TxtTC.Text.ToDecimal, Importe), If(CveMoneda = 2, (Importe * tipoCambioPago) - Importe, Importe), 227, ReferenciaVenta, TxtObservaciones.Text + If(TxtTC.Visible, $" TC:{TxtTC.Text}", If(CveMoneda = 2, $" TC:{tipoCambioPago}", "")), CveIE:=CveIE, CveCliente:=ViewState("CveCliente").ToString.ToEntero, ImporteME:=If(CveMoneda = 2, Importe, 0), CveVenta:=CveVenta, TipoCambio:=tipoCambioPago, TipoCambioPago:=tipoCambioPago) Then
|
|
MsgError = "No se pudo insertar la póliza"
|
|
End If
|
|
Else
|
|
If Not ObjMov.AddPrePolizasDetalle(CvePrePoliza, False, Importe, If(CveMoneda = 2, Importe * tipoCambioPago, Importe), 92, ReferenciaVenta, ReferenciaVenta, CveIE, CveCliente:=ViewState("CveCliente").ToString.ToEntero, ImporteME:=If(CveMoneda = 2, Importe, 0), CveVenta:=CveVenta, TipoCambio:=tipoCambioPago, TipoCambioPago:=tipoCambioPago) Then
|
|
MsgError = "No se pudo insertar la póliza"
|
|
End If
|
|
End If
|
|
|
|
Return MsgError
|
|
|
|
End Function
|
|
|
|
#Region " N O T A - D E - C R E D I T O"
|
|
Private Class RespuestaNotaCredrito
|
|
Public Property ObjFacturaNC As Modelos.Factura
|
|
Public Property Respuesta As Modelos.Factura.MMensajeFactura
|
|
End Class
|
|
|
|
Private Function GenerarNC(SqlTransaccion As SqlClient.SqlTransaction, ObjConta As ClsContPAQi, ListaVentasGenerarNC As List(Of Modelos.Factura)) As RespuestaNotaCredrito
|
|
Dim Retorno As New RespuestaNotaCredrito()
|
|
Try
|
|
|
|
Dim ObjFacturaDevolucion As New Modelos.Factura(UsuarioActual)
|
|
ObjFacturaDevolucion.TipoMensajeRespuesta = Modelos.TipoMensajeRespuesta.HTML
|
|
ObjFacturaDevolucion.CveUsuario = UsuarioActual.CveUsuario
|
|
ObjFacturaDevolucion.UsuarioCreo = UsuarioActual.Usuario
|
|
|
|
Dim CveSubProyecto As Integer = Me.CveSubProyecto
|
|
Dim CveMoneda As Integer = Me.CveMoneda
|
|
Dim CveCliente As Integer = Me.CveCliente
|
|
|
|
If CveSubProyecto <= 0 Then
|
|
CveSubProyecto = ListaVentasGenerarNC(0).CveSubProyecto
|
|
End If
|
|
|
|
If CveMoneda <= 0 Then
|
|
CveMoneda = ListaVentasGenerarNC(0).CveMoneda
|
|
End If
|
|
|
|
If CveCliente <= 0 Then
|
|
CveCliente = ListaVentasGenerarNC(0).CveCliente
|
|
End If
|
|
|
|
Dim Folio As Integer = -1
|
|
Dim Serie As String = "-1"
|
|
|
|
ObjFacturaDevolucion.CveEmpresa = UsuarioActual.CveEmpresa
|
|
ObjFacturaDevolucion.TipoCambio = If(Me.CveMoneda = 1, 1, GlobalTipoCambio(NowADS()).FormatoNumero(4).ToDecimal())
|
|
ObjFacturaDevolucion.CveMoneda = CveMoneda
|
|
ObjFacturaDevolucion.Moneda = GlobalDTMonedas.FiltroPrimeroValor("Moneda", $"CveMoneda = {CveMoneda}")
|
|
ObjFacturaDevolucion.MonedaSAT = GlobalDTMonedas.FiltroPrimeroValor("AbreviaturaSAT", $"CveMoneda = {CveMoneda}")
|
|
ObjFacturaDevolucion.Serie = Serie
|
|
ObjFacturaDevolucion.Folio = Folio
|
|
ObjFacturaDevolucion.Fecha = NowADS()
|
|
|
|
ObjFacturaDevolucion.TipoDocto = "Egs"
|
|
ObjFacturaDevolucion.Fecha = NowADS()
|
|
|
|
ObjFacturaDevolucion.Version = "4.0"
|
|
|
|
ObjFacturaDevolucion.CveMetodoPago33 = 1
|
|
ObjFacturaDevolucion.MetodoPago33 = "PUE - Pago en una sola exhibición"
|
|
ObjFacturaDevolucion.ClaveMetodoPagoSAT = "PUE"
|
|
|
|
Dim drtt As DataRow = GlobalDTTipoTransacciones.FiltroPrimero("CveTipoTransaccion =" & DdlTipoTransaccion.SelectedValue)
|
|
Dim dra As DataRow = GlobalDTVtaFormaPago.FiltroPrimero("CveFormaPago = " & drtt("CveFormaPago").ToString)
|
|
|
|
ObjFacturaDevolucion.CveFormaPago33 = dra("CveFormaPago").ToString.ToEntero
|
|
ObjFacturaDevolucion.FormaPago33 = dra("FormaPagoSAT").ToString
|
|
ObjFacturaDevolucion.FormaPagoSAT33 = dra("ClaveFormaPagoSAT").ToString
|
|
|
|
ObjFacturaDevolucion.CveSubProyecto = CveSubProyecto
|
|
ObjFacturaDevolucion.SetSubProyecto()
|
|
|
|
ObjFacturaDevolucion.CveCliente = CveCliente
|
|
ObjFacturaDevolucion.SetCliente()
|
|
|
|
Dim ObjCliente As New ClsClientes
|
|
If ObjCliente.GetClientes(ObjFacturaDevolucion.CveCliente, "-1", "-1", "-1", "-1", "-1", "-1", -1, UsuarioActual.CveEmpresa, -1, TipoCliente:=-1) Then
|
|
If ObjCliente.DtResultados.Rows.Count > 0 Then
|
|
|
|
ObjFacturaDevolucion.CveUsoCFDI = 2
|
|
ObjFacturaDevolucion.UsoCFDI = GlobalDTSATUsosCFDI.FiltroPrimeroValor("Descripcion", String.Format("CveUsoCFDI = {0}", 2))
|
|
ObjFacturaDevolucion.ClaveUsoCFDI = GlobalDTSATUsosCFDI.FiltroPrimeroValor("UsoCFDI", String.Format("CveUsoCFDI = {0}", 2))
|
|
|
|
ObjFacturaDevolucion.DtDetalle = CreaDTDetalleNC()
|
|
|
|
CargaImpuestos(ObjFacturaDevolucion, ListaVentasGenerarNC, ObjCliente.DesglosaIEPS, ObjCliente.RetIVA.ToDecimal, ObjCliente.RetISR.ToDecimal)
|
|
|
|
End If
|
|
End If
|
|
|
|
If ObjCliente.GetSucursales(CveCliente) Then
|
|
If ObjCliente.DtResultados.Rows.Count > 0 Then
|
|
ObjFacturaDevolucion.CveClienteSucursal = If(String.IsNullOrEmpty(ObjCliente.DtResultados.FiltroPrimeroValor("CveClienteSucursal", "Estatus = 'Activo'")), -1, ObjCliente.DtResultados.FiltroPrimeroValor("CveClienteSucursal", "Estatus = 'Activo'").ToEntero())
|
|
Else
|
|
ObjFacturaDevolucion.CveClienteSucursal = -1
|
|
End If
|
|
End If
|
|
ObjCliente.Dispose()
|
|
|
|
ObjFacturaDevolucion.CveTipoRelacion = 1
|
|
ObjFacturaDevolucion.TipoRelacion = "01"
|
|
ObjFacturaDevolucion.DtVentasRelacionadas = New DataTable
|
|
ObjFacturaDevolucion.DtVentasRelacionadas.Columns.Add("CveVenta", GetType(Integer))
|
|
|
|
Dim Fol As New List(Of String)
|
|
For Each Fac As Modelos.Factura In ListaVentasGenerarNC
|
|
Fol.Add(Fac.FolioFiscal)
|
|
|
|
Dim RowVenta As DataRow = ObjFacturaDevolucion.DtVentasRelacionadas.NewRow
|
|
RowVenta("CveVenta") = Fac.CveVenta
|
|
|
|
ObjFacturaDevolucion.DtVentasRelacionadas.Rows.Add(RowVenta)
|
|
Next
|
|
|
|
ObjFacturaDevolucion.UUIDRelacionados = Fol
|
|
|
|
Select Case ObjFacturaDevolucion.TipoDocto
|
|
Case "Ing"
|
|
ObjFacturaDevolucion.TipoDocumento = "Factura"
|
|
Case "REM"
|
|
ObjFacturaDevolucion.TipoDocumento = "Remision"
|
|
Case "Cot"
|
|
ObjFacturaDevolucion.TipoDocumento = "Cotizacion"
|
|
Case "Egs"
|
|
ObjFacturaDevolucion.TipoDocumento = "Nota de Crédito"
|
|
Case "Dev"
|
|
ObjFacturaDevolucion.TipoDocumento = "Nota de Devolución"
|
|
Case Else
|
|
ObjFacturaDevolucion.TipoDocumento = ""
|
|
End Select
|
|
|
|
ObjFacturaDevolucion.FechaPago = NowADS()
|
|
Dim DtVentasNC As DataTable = InicializaDTVentasNC()
|
|
|
|
Dim TotalImporte As Decimal = ObjFacturaDevolucion.DtDetalle.SUM("TotalImporte")
|
|
Dim ImporteIVA As Decimal = ObjFacturaDevolucion.DtDetalle.SUM("ImporteIVA")
|
|
Dim ImporteRetIVA As Decimal = ObjFacturaDevolucion.DtDetalle.SUM("ImporteRetIVA")
|
|
Dim ImporteRetISR As Decimal = ObjFacturaDevolucion.DtDetalle.SUM("ImporteRetISR")
|
|
Dim ImporteIEPS As Decimal = ObjFacturaDevolucion.DtDetalle.SUM("ImporteIEPS")
|
|
Dim Descuento As Decimal = ObjFacturaDevolucion.DtDetalle.SUM("Descuento")
|
|
Dim Amortizacion As Decimal = 0
|
|
|
|
Dim Total As Decimal = (TotalImporte + ImporteIVA + ImporteIEPS) - (ImporteRetIVA + ImporteRetISR + Descuento + Amortizacion)
|
|
|
|
'DETALLES
|
|
ObjFacturaDevolucion.SubTotal = TotalImporte
|
|
ObjFacturaDevolucion.Descuento = Descuento
|
|
ObjFacturaDevolucion.Amortizacion = Amortizacion
|
|
ObjFacturaDevolucion.IVA = ImporteIVA
|
|
ObjFacturaDevolucion.RetIVA = ImporteRetIVA
|
|
ObjFacturaDevolucion.RetISR = ImporteRetISR
|
|
ObjFacturaDevolucion.IEPS = ImporteIEPS
|
|
ObjFacturaDevolucion.Total = Total
|
|
ObjFacturaDevolucion.TotalOtrosConceptos = 0
|
|
|
|
For Each Fac As Modelos.Factura In ListaVentasGenerarNC
|
|
Dim Drt As DataRow = DtVentasNC.NewRow
|
|
Drt("CveVenta") = Fac.CveVenta
|
|
Drt("Importe") = Fac.DescuentoProntoPago
|
|
Drt("FolioFiscal") = Fac.FolioFiscal
|
|
DtVentasNC.Rows.Add(Drt)
|
|
Next
|
|
|
|
DtVentasNC.AcceptChanges()
|
|
|
|
ObjFacturaDevolucion.DtVentasNC = DtVentasNC
|
|
|
|
ObjFacturaDevolucion.Timbre = PreParaTimbre(ObjFacturaDevolucion, ListaVentasGenerarNC)
|
|
|
|
Try
|
|
Dim Resp As Modelos.Factura.MMensajeFactura = ObjFacturaDevolucion.EmitirFactura(False, Transac:=SqlTransaccion)
|
|
Retorno.Respuesta = Resp
|
|
Catch ex As Exception
|
|
OnError("Ocurrió un error al guardar la NC de pronto pago", ex)
|
|
Retorno.Respuesta = Nothing
|
|
End Try
|
|
Retorno.ObjFacturaNC = ObjFacturaDevolucion
|
|
|
|
Catch ex As Exception
|
|
OnError("Ocurrió un error al generar la NC de pronto pago", ex)
|
|
Retorno = Nothing
|
|
End Try
|
|
|
|
Return Retorno
|
|
|
|
End Function
|
|
|
|
Private Function PreParaTimbre(Obj As Modelos.Factura, ListaVentasGenerarNC As List(Of Modelos.Factura)) As CFDITimbre
|
|
Dim Timbre As New CFDITimbre
|
|
Timbre.Comprobante.TipoComprobante = If(Obj.TipoDocto.Contiene("Ing", "Ant"), "I", If(Obj.TipoDocto.Contiene("Egs", "Dev"), "E", ""))
|
|
Timbre.Comprobante.Folio = Obj.Folio.ToString()
|
|
Timbre.Comprobante.Serie = Obj.Serie
|
|
Timbre.Comprobante.Fecha = Obj.FechaCP
|
|
Timbre.Comprobante.FormadePago = Obj.FormaPagoSAT33
|
|
Timbre.Comprobante.CondicionesdePago = Obj.FormaPago33
|
|
Timbre.Comprobante.MetodoPago = Obj.ClaveMetodoPagoSAT
|
|
Timbre.Comprobante.SubTotal = Obj.SubTotal
|
|
Timbre.Comprobante.Descuentos = Obj.Descuento
|
|
Timbre.Comprobante.Moneda = Obj.MonedaSAT
|
|
Timbre.Comprobante.TipoCambio = If(Obj.CveMoneda = 1, "1", Obj.TipoCambio.ToString())
|
|
Timbre.Comprobante.Total = Obj.Total
|
|
|
|
Timbre.Comprobante.LugarExpedicion = Obj.SubProyecto.CP
|
|
If Timbre.Comprobante.LugarExpedicion = "" Then
|
|
Dim aa As String = "no se guardo lugar de expedicion"
|
|
aa.GuardaLog()
|
|
End If
|
|
|
|
Timbre.Comprobante.Confirmacion = ""
|
|
|
|
If Obj.FacturarSucursal Then
|
|
Timbre.Receptor.RFC = Obj.ClienteSucursal.RFC
|
|
Timbre.Receptor.Nombre = Obj.ClienteSucursal.Nombre
|
|
Timbre.Receptor.DomicilioFiscalReceptor = Obj.ClienteSucursal.CP
|
|
Else
|
|
Timbre.Receptor.RFC = Obj.Cliente.RFC
|
|
Timbre.Receptor.Nombre = Obj.Cliente.Nombre
|
|
Timbre.Receptor.DomicilioFiscalReceptor = Obj.Cliente.CP
|
|
End If
|
|
|
|
Timbre.Receptor.RegimenFiscalReceptor = Obj.Cliente.CodigoRegimenFiscal
|
|
|
|
Timbre.Receptor.ResidenciaFiscal = ""
|
|
Timbre.Receptor.NumeroRegistroTributario = ""
|
|
Timbre.Receptor.UsoCFDI = Obj.ClaveUsoCFDI
|
|
|
|
If ListaVentasGenerarNC IsNot Nothing Then
|
|
Timbre.CFDIRelacionados.UUID.Clear()
|
|
|
|
Dim RowTipoRelacion As DataRow = GlobalDTVtaTiposRelacion().FiltroPrimero($"CveTipoRelacion = {Obj.CveTipoRelacion}")
|
|
|
|
Timbre.CFDIRelacionados.TipoRelacion = RowTipoRelacion("SATClaveTipoRelacion").ToString()
|
|
Timbre.CFDIRelacionados.TipoRelacionTexto = RowTipoRelacion("SATTipoRelacion").ToString()
|
|
|
|
For Each Fac As Modelos.Factura In ListaVentasGenerarNC
|
|
Timbre.CFDIRelacionados.UUID.Add(Fac.FolioFiscal)
|
|
Next
|
|
End If
|
|
|
|
Dim totSubTotal As Decimal = If(UsuarioActual.Empresa.CvePAC = 3, Obj.DtDetalle.SUMD("Total"), Obj.SubTotal) 'Obj.SubTotal
|
|
Dim totIVA As Decimal = Obj.IVA
|
|
Dim totRetIVA As Decimal = Obj.RetIVA
|
|
Dim totRetISR As Decimal = Obj.RetISR
|
|
|
|
Dim i As Integer = 1
|
|
|
|
'detalles
|
|
Dim tPS As String = ""
|
|
|
|
For Each drr As DataRow In Obj.DtDetalle.Rows
|
|
If drr("PS").ToString().Length = 1 Then
|
|
tPS = drr("Obs").ToString()
|
|
Else
|
|
If drr("PS").ToString().Length = 0 Then
|
|
tPS = ""
|
|
Else
|
|
tPS = String.Format("{0} {1}", drr("PS"), drr("Obs"))
|
|
End If
|
|
End If
|
|
|
|
tPS = tPS.Replace("|", " ")
|
|
|
|
If tPS.Length >= 1000 Then
|
|
Dim tPSRecortado As String = tPS.Remove(999, tPS.Length - 999)
|
|
tPS = tPSRecortado
|
|
End If
|
|
|
|
'condicionante, especial
|
|
If UsuarioActual.CveEmpresa = 15 Then drr("UM") = "" ' les comentan que no debe de ir la etiqueta de "unidad" en el producto
|
|
|
|
Dim concepto As New CFDIConceptos With {.Cantidad = drr("Cantidad").ToString().ToDecimal,
|
|
.Descripcion = tPS,
|
|
.ValorUnitario = drr("PU").ToString().ToDecimal,
|
|
.Importe = If(UsuarioActual.Empresa.CvePAC = 3, drr("Total").ToString().ToDecimal.RoundSQL(2), drr("TotalImporte").ToString().ToDecimal),
|
|
.Descuento = drr("Descuento").ToString().ToDecimal.RoundSQL(2),
|
|
.Unidad = drr("UM").ToString(),
|
|
.ClaveUnidad = drr("SATClaveUM").ToString(),
|
|
.ClaveProdServ = drr("SATClaveProdServ").ToString(),
|
|
.Noidentificacion = drr("Noidentificacion").ToString(),
|
|
.CuentaPredial = drr("CuentaPredial").ToString(),
|
|
.ImporteGravaIVAAdicional = drr("ImporteIEPS").ToString().ToDecimal,
|
|
.ObjetoImpuesto = drr("CodigoObjetoImpuesto").ToString()}
|
|
'verifica suma subtotales
|
|
If i = Obj.DtDetalle.Rows.Count AndAlso totSubTotal.RoundSQL(2) <> concepto.Importe.RoundSQL(2) AndAlso Math.Abs(totSubTotal.RoundSQL(2) - concepto.Importe.RoundSQL(2)) <= 0.01 Then 'proceso de ajusta de decimales
|
|
concepto.Importe = totSubTotal
|
|
End If
|
|
totSubTotal = totSubTotal - concepto.Importe
|
|
|
|
'siempre estaremos agregando el iva, auqnue sea en importe cero o tasa cero, para que se emita la factura
|
|
' If drr("ImporteIVA").ToString().ToDouble > 0 Then
|
|
|
|
'si es ingreso amortizado por la totalidad, y arroja el valor total de cero, no debe de impuestos, y si la BASE de calculo es mayor a cero
|
|
If Timbre.Comprobante.Total > 0 AndAlso concepto.Importe - concepto.Descuento + concepto.ImporteGravaIVAAdicional > 0 Then
|
|
concepto.Impuestos.Add(New CFDIConceptosImpuestos With {.TrasladooRetencion = "T", .Base = (concepto.Importe - concepto.Descuento + concepto.ImporteGravaIVAAdicional).RoundSQL(6), .TasaOCuota = drr("PorcentajeIVA").ToString().ToDecimal, .Impuesto = "002", .Importe = drr("ImporteIVA").ToString().ToDecimal})
|
|
End If
|
|
|
|
If drr("ImporteIEPS").ToString().ToDouble > 0 Then
|
|
concepto.Impuestos.Add(New CFDIConceptosImpuestos With {.TrasladooRetencion = "T", .Base = (concepto.Importe - concepto.Descuento).RoundSQL(6), .TasaOCuota = drr("PorcentajeIEPS").ToString().ToDecimal, .Impuesto = "003", .Importe = drr("ImporteIEPS").ToString().ToDecimal})
|
|
End If
|
|
|
|
If drr("ImporteRetIVA").ToString().ToDouble > 0 Then 'si hay retenciones
|
|
concepto.Impuestos.Add(New CFDIConceptosImpuestos With {.TrasladooRetencion = "R", .Base = (concepto.Importe - concepto.Descuento).RoundSQL(6), .TasaOCuota = drr("PorcentajeRetIVA").ToString().ToDecimal, .Impuesto = "002", .Importe = drr("ImporteRetIVA").ToString().ToDecimal})
|
|
End If
|
|
|
|
If drr("ImporteRetISR").ToString().ToDouble > 0 Then 'retención de ISR
|
|
concepto.Impuestos.Add(New CFDIConceptosImpuestos With {.TrasladooRetencion = "R", .Base = (concepto.Importe - concepto.Descuento).RoundSQL(6), .TasaOCuota = drr("PorcentajeRetISR").ToString().ToDecimal, .Impuesto = "001", .Importe = drr("ImporteRetISR").ToString().ToDecimal})
|
|
End If
|
|
|
|
Timbre.Conceptos.Add(concepto)
|
|
i += 1
|
|
Next
|
|
|
|
Return Timbre
|
|
End Function
|
|
|
|
|
|
Private Sub AgregaTempDTNC(ByRef TmpDT As DataTable, CvePS As Integer, PS As String, Codigo As String, CodigoPS As String, CveTipoPS As Integer, CveTipoInvPS As Integer, CveUM As Integer, UM As String,
|
|
CveClasificacion As Integer, Clasificacion As String, CveProyecto As Integer, CveSubProyecto As Integer,
|
|
Obs As String, Cantidad As Double, PU As Double, PorcentajeIVA As Double, ImporteIVA As Double, PorcentajeRetIVA As Double, ImporteRetIVA As Double,
|
|
PorcentajeRetISR As Double, ImporteRetISR As Double, PorcentajeIEPS As Double, ImporteIEPS As Double, TipoDescuento As Integer, Descuento As Double,
|
|
Total As Double, Serie As String, TiempoEntrega As String, CvePresupuestoIngreso As Integer, EntregaDirecta As Integer, SATClaveProdServ As String,
|
|
SATClaveUM As String, CveContratoDetalle As Integer, CveVentaDetalle As Integer, CveMovimientoDetallePedido As Integer, CveOrdenCompraDetalle As Integer,
|
|
CveVentaDetalleRemision As Integer, CveVentaDetalleCotizacion As Integer)
|
|
|
|
Dim Row As DataRow = Nothing
|
|
Row = TmpDT.NewRow()
|
|
|
|
Row("Consec") = TmpDT.Rows.Count + 1
|
|
Row("Orden") = TmpDT.Rows.Count + 1
|
|
|
|
Row("CvePS") = CvePS
|
|
Row("PS") = PS
|
|
Row("Codigo") = Codigo
|
|
Row("CodigoPS") = CodigoPS
|
|
Row("CveTipoPS") = CveTipoPS
|
|
Row("CveTipoInvPS") = CveTipoInvPS
|
|
|
|
Row("CveUM") = CveUM
|
|
Row("UM") = UM
|
|
|
|
Row("CveClasificacion") = CveClasificacion
|
|
Row("Clasificacion") = Clasificacion
|
|
Row("CveProyecto") = CveProyecto
|
|
Row("Proyecto") = ""
|
|
Row("CveSubProyecto") = CveSubProyecto
|
|
Row("SubProyecto") = ""
|
|
|
|
Row("Obs") = Obs
|
|
Row("Cantidad") = Cantidad
|
|
Row("PU") = Math.Round(PU, 6)
|
|
Row("PorcentajeIVA") = PorcentajeIVA
|
|
Row("IVA") = PorcentajeIVA
|
|
Row("ImporteIVA") = Math.Round(ImporteIVA, 2)
|
|
Row("PorcentajeRetIVA") = PorcentajeRetIVA
|
|
Row("ImporteRetIVA") = Math.Round(ImporteRetIVA, 2)
|
|
Row("PorcentajeRetISR") = PorcentajeRetISR
|
|
Row("ImporteRetISR") = Math.Round(ImporteRetISR, 2)
|
|
Row("PorcentajeIEPS") = PorcentajeIEPS
|
|
Row("ImporteIEPS") = Math.Round(ImporteIEPS, 2)
|
|
Row("IEPS") = Math.Round(ImporteIEPS, 2)
|
|
Row("TipoDescuento") = TipoDescuento
|
|
Row("Descuento") = Math.Round(Descuento, 2)
|
|
Row("Total") = Math.Round(Total, 2)
|
|
Row("TotalImporte") = Math.Round(Total, 2)
|
|
|
|
Row("Serie") = Serie
|
|
Row("TiempoEntrega") = TiempoEntrega
|
|
Row("CvePresupuestoIngreso") = CvePresupuestoIngreso
|
|
Row("EntregaDirecta") = EntregaDirecta
|
|
Row("SATClaveProdServ") = SATClaveProdServ
|
|
Row("SATClaveUM") = SATClaveUM
|
|
|
|
'Contratos
|
|
Row("CveContratoDetalle") = CveContratoDetalle
|
|
Row("CveVentaDetalle") = CveVentaDetalle
|
|
Row("CveMovimientoDetallePedido") = CveMovimientoDetallePedido
|
|
Row("CveOrdenCompraDetalle") = CveOrdenCompraDetalle
|
|
Row("CveVentaDetalleRemision") = CveVentaDetalleRemision
|
|
Row("CveVentaDetalleCotizacion") = CveVentaDetalleCotizacion
|
|
Dim DrPS As DataRow = GlobalDTPS(UsuarioActual.CveEmpresa, CvePS:=CvePS).FiltroPrimero("")
|
|
If DrPS IsNot Nothing Then
|
|
Row("CodigoObjetoImpuesto") = DrPS("CodigoObjetoImpuesto")
|
|
End If
|
|
TmpDT.Rows.Add(Row)
|
|
End Sub
|
|
|
|
Private Sub CargaImpuestos(ByRef ObjFacturaDevolucion As Modelos.Factura, ListaVentasGenerarNC As List(Of Modelos.Factura), ClienteDesglosaIEPS As Boolean, ClienteRetIVA As Decimal, ClienteRetISR As Decimal)
|
|
Dim DtImpuestos As New DataTable
|
|
DtImpuestos.Columns.Add("ImportePU", GetType(Decimal))
|
|
DtImpuestos.Columns.Add("ImporteTotal", GetType(Decimal))
|
|
DtImpuestos.Columns.Add("PorcentajeIVA", GetType(Decimal))
|
|
DtImpuestos.Columns.Add("ImporteIVA", GetType(Decimal))
|
|
DtImpuestos.Columns.Add("PorcentajeRetIVA", GetType(Decimal))
|
|
DtImpuestos.Columns.Add("ImporteRetIVA", GetType(Decimal))
|
|
DtImpuestos.Columns.Add("PorcentajeRetISR", GetType(Decimal))
|
|
DtImpuestos.Columns.Add("ImporteRetISR", GetType(Decimal))
|
|
DtImpuestos.Columns.Add("PorcentajeIEPS", GetType(Decimal))
|
|
DtImpuestos.Columns.Add("ImporteIEPS", GetType(Decimal))
|
|
DtImpuestos.Columns.Add("CveSubProyecto", GetType(Integer))
|
|
DtImpuestos.AcceptChanges()
|
|
Dim AcumuladoNC As Decimal = 0
|
|
|
|
For Each Fac As Modelos.Factura In ListaVentasGenerarNC
|
|
DtImpuestos.Merge(CargaDtImpuestosNC(Fac.CveVenta, Fac.DescuentoProntoPago), True, MissingSchemaAction.Ignore)
|
|
Next
|
|
|
|
DtImpuestos = CargaTotalesImpuestos(DtImpuestos)
|
|
|
|
Dim DrSubProyecto As DataRow = GlobalDTSubProyectos(-1, ObjFacturaDevolucion.CveSubProyecto).Rows(0)
|
|
|
|
Dim Cantidad As Decimal = 1
|
|
Dim CveProyecto As Integer = DrSubProyecto("CveProyecto").ToString().ToEntero()
|
|
Dim CveSubProyecto As Integer = DrSubProyecto("CveSubProyecto").ToString.ToEntero
|
|
Dim SubProyecto As String = DrSubProyecto("SubProyecto").ToString
|
|
Dim Proyecto As String = DrSubProyecto("Proyecto").ToString
|
|
|
|
Dim CveSATNC As Integer
|
|
Dim ArrayNC As String() = UsuarioActual.Empresa.Funcionalidad(591).Split(",".ToCharArray())
|
|
Dim NCBonificacion As Integer = 0
|
|
If ArrayNC.Length > 6 Then 'CONCEPTO DE PRONTO PAGO
|
|
CveSATNC = ArrayNC(6).ToEntero()
|
|
End If
|
|
Dim DrPS As DataRow = GlobalDTPS(UsuarioActual.CveEmpresa, CvePS:=CveSATNC, AplicaParaVenta:=1).FiltroPrimero("")
|
|
|
|
For Each Dr As DataRow In DtImpuestos.Rows
|
|
AgregaTempDTNC(ObjFacturaDevolucion.DtDetalle, DrPS("CvePS").ToString.ToEntero, DrPS("PS").ToString, DrPS("Codigo").ToString, DrPS("PSCodigo").ToString, DrPS("CveTipoPS").ToString.ToEntero, DrPS("Inv_CveMetodoInventario").ToString.ToEntero,
|
|
DrPS("CveUM").ToString.ToEntero, DrPS("UnidadMedida").ToString, DrPS("CveClasificacion").ToString.ToEntero, DrPS("Clasificacion").ToString, CveProyecto, CveSubProyecto,
|
|
"", Cantidad, Dr("ImportePU").ToString.ToDecimal, Dr("PorcentajeIVA").ToString.ToDecimal, Dr("ImporteIVA").ToString.ToDecimal, Dr("PorcentajeRetIVA").ToString.ToDecimal, Dr("ImporteRetIVA").ToString.ToDecimal,
|
|
Dr("PorcentajeRetISR").ToString.ToDecimal, Dr("ImporteRetISR").ToString.ToDecimal, Dr("PorcentajeIEPS").ToString.ToDecimal, Dr("ImporteIEPS").ToString.ToDecimal, -1, 0.0, Dr("ImporteTotal").ToString.ToDecimal, "", "", -1, -1,
|
|
DrPS("SATClavePS").ToString, DrPS("SATClaveUnidadMedida").ToString, -1, -1, -1, -1, -1, -1)
|
|
Next
|
|
|
|
End Sub
|
|
|
|
Private Function CargaDtImpuestosNC(CveVentaNC As Integer, Importe As Decimal) As DataTable
|
|
Dim Total As Decimal = 0, SubTotal As Decimal = 0, Saldo As Decimal = 0
|
|
|
|
Dim TmpDT As DataTable = Nothing
|
|
Dim ObjVentas As New ClsVentas
|
|
|
|
If ObjVentas.GetVentaDetalle(CveVentaNC) Then
|
|
TmpDT = ObjVentas.DtResultados
|
|
TmpDT.Columns.Add("EntregaDirecta", GetType(Integer))
|
|
TmpDT.Columns.Add("CveMovimientoDetallePedido", GetType(Integer))
|
|
End If
|
|
|
|
If ObjVentas.GetVenta(CveVentaNC, UsuarioActual.CveEmpresa) Then
|
|
If ObjVentas.DtResultados.Rows.Count > 0 Then
|
|
Total = ObjVentas.DtResultados()(0)("Total").ToString.ToDecimal
|
|
SubTotal = ObjVentas.DtResultados()(0)("SubTotal").ToString.ToDecimal
|
|
End If
|
|
End If
|
|
ObjVentas.Dispose()
|
|
|
|
Dim DtImpuestosLocal As DataTable = TmpDT.FiltraParametros("", "", {"PorcentajeIVA", "PorcentajeRetIVA", "PorcentajeRetISR", "PorcentajeIEPS", "CveSubProyecto"}).Copy
|
|
DtImpuestosLocal.Columns.Add("ImportePU", GetType(Decimal))
|
|
DtImpuestosLocal.Columns.Add("ImporteTotal", GetType(Decimal))
|
|
DtImpuestosLocal.Columns.Add("ImporteIVA", GetType(Decimal))
|
|
DtImpuestosLocal.Columns.Add("ImporteRetIVA", GetType(Decimal))
|
|
DtImpuestosLocal.Columns.Add("ImporteRetISR", GetType(Decimal))
|
|
DtImpuestosLocal.Columns.Add("ImporteIEPS", GetType(Decimal))
|
|
|
|
Dim ImporteReferencia As Decimal = Total
|
|
Dim Porcentaje As Decimal = ((Importe * 100) / ImporteReferencia) / 100
|
|
Dim FiltroStr As String = ""
|
|
Dim ImporteTotalConcepto As Decimal = 0
|
|
For Each Dr As DataRow In DtImpuestosLocal.Rows
|
|
FiltroStr = String.Format("ISNULL(PorcentajeIVA,0) = {0} AND ISNULL(PorcentajeRetIVA,0) = {1} AND ISNULL(PorcentajeRetISR,0) = {2} AND ISNULL(PorcentajeIEPS,0) = {3} AND ISNULL(CveSubProyecto,0) = {4} ", Dr("PorcentajeIVA").ToString.ToDecimal, Dr("PorcentajeRetIVA").ToString.ToDecimal, Dr("PorcentajeRetISR").ToString.ToDecimal, Dr("PorcentajeIEPS").ToString.ToDecimal, Dr("CveSubProyecto"))
|
|
ImporteTotalConcepto = Porcentaje * (TmpDT.SUMD("TotalImporte", FiltroStr) - TmpDT.SUMD("Descuento", FiltroStr))
|
|
|
|
Dr("ImportePU") = ImporteTotalConcepto.RoundSQL(6)
|
|
Dr("ImporteTotal") = ImporteTotalConcepto.RoundSQL(2)
|
|
|
|
Dr("ImporteIVA") = (ImporteTotalConcepto * Dr("PorcentajeIVA").ToString().ToDecimal()).RoundSQL(2)
|
|
Dr("ImporteRetIVA") = (ImporteTotalConcepto * Dr("PorcentajeRetIVA").ToString().ToDecimal()).RoundSQL(2)
|
|
Dr("ImporteRetISR") = (ImporteTotalConcepto * Dr("PorcentajeRetISR").ToString().ToDecimal()).RoundSQL(2)
|
|
Dr("ImporteIEPS") = (ImporteTotalConcepto * Dr("PorcentajeIEPS").ToString().ToDecimal()).RoundSQL(2)
|
|
|
|
'Dr("ImporteIVA") = Math.Round(Porcentaje * TmpDT.SUM("ImporteIVA", FiltroStr), 2)
|
|
'Dr("ImporteRetIVA") = Math.Round(Porcentaje * TmpDT.SUM("ImporteRetIVA", FiltroStr), 2)
|
|
'Dr("ImporteRetISR") = Math.Round(Porcentaje * TmpDT.SUM("ImporteRetISR", FiltroStr), 2)
|
|
'Dr("ImporteIEPS") = Math.Round(Porcentaje * TmpDT.SUM("ImporteIEPS", FiltroStr), 2)
|
|
|
|
'(Dr("ImporteTotal").ToString.ToDecimal - Dr("ImporteIVA").ToString.ToDecimal - Dr("ImporteRetIVA").ToString.ToDecimal - Dr("ImporteRetISR").ToString.ToDecimal - Dr("ImporteIEPS").ToString.ToDecimal)
|
|
Next
|
|
'codigo para ajuste de centavo, si el importe total no cuadra con los totales
|
|
Dim difTmp As Decimal = Importe - (DtImpuestosLocal.SUMD("ImporteTotal") + DtImpuestosLocal.SUMD("ImporteIVA") + DtImpuestosLocal.SUMD("ImporteIEPS") - DtImpuestosLocal.SUMD("ImporteRetIVA") - DtImpuestosLocal.SUMD("ImporteRetISR"))
|
|
If Math.Abs(difTmp) >= 0.01 Then
|
|
'asusto la diferencia en el último concepto
|
|
Dim ImporteAjustado As Decimal = DtImpuestosLocal.Rows(DtImpuestosLocal.Rows.Count - 1)("ImporteTotal").ToString.ToDecimal + difTmp
|
|
DtImpuestosLocal.Rows(DtImpuestosLocal.Rows.Count - 1)("ImporteTotal") = ImporteAjustado
|
|
DtImpuestosLocal.Rows(DtImpuestosLocal.Rows.Count - 1)("ImportePU") = ImporteAjustado
|
|
End If
|
|
'CARGA FACTURA A LA CUAL SE APLICA LA NC
|
|
'CargaNCDT(CveVentaNC, Importe.ToDecimal)
|
|
Return DtImpuestosLocal
|
|
End Function
|
|
|
|
Private Function CargaTotalesImpuestos(DtImpuestos As DataTable) As DataTable
|
|
Dim query = From dr In DtImpuestos
|
|
Group By PorcentajeIVA = dr("PorcentajeIVA").ToString.ToDecimal,
|
|
PorcentajeRetIVA = dr("PorcentajeRetIVA").ToString.ToDecimal,
|
|
PorcentajeRetISR = dr("PorcentajeRetISR").ToString.ToDecimal,
|
|
PorcentajeIEPS = dr("PorcentajeIEPS").ToString.ToDecimal
|
|
Into x = Group
|
|
Select ImportePU = x.Sum(Function(s) s("ImportePU").ToString.ToDecimal),
|
|
ImporteTotal = x.Sum(Function(s) s("ImporteTotal").ToString.ToDecimal),
|
|
ImporteIVA = x.Sum(Function(s) Math.Round(s("ImporteIVA").ToString.ToDecimal, 2)), ' Math.Round(s("ImporteIVA").ToString.ToDecimal, 2)) * (1 + PorcentajeIEPS) * PorcentajeIVA,
|
|
ImporteRetIVA = x.Sum(Function(s) Math.Round(s("ImporteRetIVA").ToString.ToDecimal, 2)),' Math.Round(s("ImportePU").ToString.ToDecimal, 2)) * PorcentajeRetIVA,
|
|
ImporteRetISR = x.Sum(Function(s) Math.Round(s("ImporteRetISR").ToString.ToDecimal, 2)),' Math.Round(s("ImportePU").ToString.ToDecimal, 2)) * PorcentajeRetISR,
|
|
ImporteIEPS = x.Sum(Function(s) Math.Round(s("ImporteIEPS").ToString.ToDecimal, 2)), 'Math.Round(s("ImportePU").ToString.ToDecimal, 2)) * PorcentajeIEPS,
|
|
PorcentajeIVA = PorcentajeIVA,
|
|
PorcentajeRetIVA = PorcentajeRetIVA,
|
|
PorcentajeRetISR = PorcentajeRetISR,
|
|
PorcentajeIEPS = PorcentajeIEPS
|
|
|
|
Return query.QueryToDataTable(False)
|
|
End Function
|
|
|
|
Protected Function CreaDTDetalleNC() As DataTable
|
|
Dim TmpDT As New DataTable
|
|
TmpDT.Columns.Add("CveVenta", GetType(Integer))
|
|
TmpDT.Columns.Add("Consec", GetType(Integer))
|
|
TmpDT.Columns.Add("Cantidad", GetType(Decimal))
|
|
TmpDT.Columns.Add("Codigo", GetType(String))
|
|
TmpDT.Columns.Add("CveUM", GetType(Integer))
|
|
TmpDT.Columns.Add("UM", GetType(String))
|
|
TmpDT.Columns.Add("SATClaveUM", GetType(String))
|
|
TmpDT.Columns.Add("CveClasificacion", GetType(Integer))
|
|
TmpDT.Columns.Add("Clasificacion", GetType(String))
|
|
TmpDT.Columns.Add("CvePS", GetType(Integer))
|
|
TmpDT.Columns.Add("PS", GetType(String))
|
|
TmpDT.Columns.Add("CodigoPS", GetType(String))
|
|
TmpDT.Columns.Add("SATClaveProdServ", GetType(String))
|
|
TmpDT.Columns.Add("NoIdentificacion", GetType(String))
|
|
TmpDT.Columns.Add("CveTipoPS", GetType(Integer))
|
|
TmpDT.Columns.Add("CveTipoInvPS", GetType(Integer))
|
|
TmpDT.Columns.Add("Serie", GetType(String))
|
|
TmpDT.Columns.Add("CuentaPredial", GetType(String))
|
|
TmpDT.Columns.Add("Obs", GetType(String))
|
|
TmpDT.Columns.Add("TiempoEntrega", GetType(String))
|
|
TmpDT.Columns.Add("PU", GetType(Decimal))
|
|
TmpDT.Columns.Add("IVA", GetType(Decimal))
|
|
TmpDT.Columns.Add("ImporteIVA", GetType(Decimal))
|
|
TmpDT.Columns.Add("PorcentajeIVA", GetType(Decimal))
|
|
TmpDT.Columns.Add("ImporteRetIVA", GetType(Decimal))
|
|
TmpDT.Columns.Add("ImporteRetISR", GetType(Decimal))
|
|
TmpDT.Columns.Add("PorcentajeRetIVA", GetType(Decimal))
|
|
TmpDT.Columns.Add("PorcentajeRetISR", GetType(Decimal))
|
|
TmpDT.Columns.Add("ImporteIEPS", GetType(Decimal))
|
|
TmpDT.Columns.Add("IEPS", GetType(Decimal))
|
|
TmpDT.Columns.Add("PorcentajeIEPS", GetType(Decimal))
|
|
TmpDT.Columns.Add("Descuento", GetType(Decimal))
|
|
TmpDT.Columns.Add("TipoDescuento", GetType(Integer))
|
|
TmpDT.Columns.Add("TotalImporte", GetType(Decimal))
|
|
TmpDT.Columns.Add("Total", GetType(Decimal))
|
|
'Para uso del módulo contable
|
|
TmpDT.Columns.Add("AsientoContableVentas", GetType(Integer))
|
|
TmpDT.Columns.Add("AplicaParaConcepto", GetType(Boolean))
|
|
TmpDT.Columns.Add("CveProyecto", GetType(Integer))
|
|
TmpDT.Columns.Add("Proyecto", GetType(String))
|
|
TmpDT.Columns.Add("CveSubProyecto", GetType(Integer))
|
|
TmpDT.Columns.Add("SubProyecto", GetType(String))
|
|
TmpDT.Columns.Add("CveVentaDetallePadre", GetType(Integer))
|
|
'TipoDescuento: 1 = Descuento * PU; 2 = Descuento por Total del concepto
|
|
TmpDT.Columns.Add("CvePresupuestoIngreso", GetType(Integer))
|
|
TmpDT.Columns.Add("CveFuenteRecaudacion", GetType(Integer))
|
|
'Contratos
|
|
TmpDT.Columns.Add("CveContratoDetalle", GetType(Integer))
|
|
'Remisiones a Facturas
|
|
TmpDT.Columns.Add("CveVentaDetalle", GetType(Integer))
|
|
TmpDT.Columns.Add("CveVentaDetalleRemision", GetType(Integer))
|
|
TmpDT.Columns.Add("CveVentaDetalleCotizacion", GetType(Integer))
|
|
'Pedido2 a Facturas
|
|
TmpDT.Columns.Add("CveVentaDetallePedido2", GetType(Integer))
|
|
TmpDT.Columns.Add("Origen", GetType(Integer))
|
|
'Ordenes Servicio
|
|
TmpDT.Columns.Add("CveOS", GetType(Integer))
|
|
TmpDT.Columns.Add("CveOSDetalle", GetType(Integer))
|
|
TmpDT.Columns.Add("SeFacturara", GetType(Integer))
|
|
TmpDT.Columns.Add("Folio", GetType(Integer))
|
|
TmpDT.Columns.Add("Estatus", GetType(String))
|
|
'Ordenamiento
|
|
TmpDT.Columns.Add("Orden", GetType(Integer))
|
|
TmpDT.Columns.Add("TipoDocto", GetType(String))
|
|
'OC
|
|
TmpDT.Columns.Add("CveOrdenCompraDetalle", GetType(Integer))
|
|
TmpDT.Columns.Add("EntregaDirecta", GetType(Integer))
|
|
TmpDT.Columns.Add("CveMovimientoDetallePedido", GetType(Integer))
|
|
TmpDT.Columns.Add("CantidadFacturadaRem", GetType(Decimal))
|
|
TmpDT.Columns.Add("CantidadFacturadaCot", GetType(Decimal))
|
|
TmpDT.Columns.Add("CantidadFacturadaPed2", GetType(Decimal))
|
|
TmpDT.Columns.Add("CantidadInventario", GetType(Decimal))
|
|
TmpDT.Columns.Add("ClaveSATFraccionArancelaria", GetType(String))
|
|
TmpDT.Columns.Add("ClaveSATUnidadAduana", GetType(String))
|
|
TmpDT.Columns.Add("ClaveSATFraccionArancelariaDescripcion", GetType(String))
|
|
TmpDT.Columns.Add("ClaveSATUnidadAduanaDescripcion", GetType(String))
|
|
TmpDT.Columns.Add("CveTamaño", GetType(Integer))
|
|
TmpDT.Columns.Add("EsCargo", GetType(Boolean))
|
|
TmpDT.Columns.Add("CodigoObjetoImpuesto", GetType(String))
|
|
|
|
Return TmpDT
|
|
End Function
|
|
Private Function InicializaDTVentasNC() As DataTable
|
|
Dim DtVentasNC As New DataTable
|
|
DtVentasNC.Columns.Add("CveVenta", GetType(Integer))
|
|
DtVentasNC.Columns.Add("Importe", GetType(Decimal))
|
|
DtVentasNC.Columns.Add("FolioFiscal", GetType(String))
|
|
DtVentasNC.Columns.Add(New DataColumn With {.ColumnName = "TC", .DataType = GetType(Decimal), .DefaultValue = 1})
|
|
DtVentasNC.Columns.Add(New DataColumn With {.ColumnName = "TCCambioValuacion", .DataType = GetType(Decimal), .DefaultValue = 1})
|
|
DtVentasNC.Columns.Add(New DataColumn With {.ColumnName = "CveEstatusFactura", .DataType = GetType(Integer), .DefaultValue = -1})
|
|
|
|
Return DtVentasNC
|
|
End Function
|
|
#End Region
|
|
|
|
|
|
Private Sub LimpiaCampos()
|
|
TxtFolio.Text = ""
|
|
TxtObservaciones.Text = ""
|
|
TxtImporte.Text = ""
|
|
TxtTotal.Text = ""
|
|
TxtFechaDocumento.Text = NowADS().ToShortDateString
|
|
DdlCuenta.SelectedValue = "-1"
|
|
DdlTipoTransaccion.SelectedValue = "-1"
|
|
|
|
CFDIRelacionadoSustitucion = "-1"
|
|
FechaCorteIE = NowADS().ToDate
|
|
IDPoliza = -1
|
|
FolioIECancelado = ""
|
|
|
|
Anexo.Text = ""
|
|
|
|
If UsuarioActual.Empresa.UsaAC Then
|
|
TxtOtrosImportes.Text = ""
|
|
UpDatos.Update()
|
|
CargaDatos(-1)
|
|
Else
|
|
UpDatos.Update()
|
|
CargaDatos(If(Request("CveMoneda") IsNot Nothing AndAlso Request("CveMoneda").ToString.ToEntero > 0, Request("CveMoneda").ToString.ToEntero, -1))
|
|
End If
|
|
|
|
End Sub
|
|
|
|
Private Sub RblTipoPago_SelectedIndexChanged(sender As Object, e As EventArgs) Handles RblTipoPago.SelectedIndexChanged
|
|
Select Case RblTipoPago.SelectedValue
|
|
Case "1"
|
|
DdlProveedorPagoInt.Items.Clear()
|
|
DivDatosBancarios.Visible = True
|
|
TxtFolio.Enabled = True
|
|
divAbonese.Visible = True
|
|
divIntermediario.Visible = False
|
|
PanelIngresos.Visible = False
|
|
Case "3"
|
|
' Ingresos por comprobar
|
|
DdlProveedorPagoInt.Items.Clear()
|
|
DivDatosBancarios.Visible = False
|
|
PanelIngresos.Visible = True
|
|
TxtFolio.Enabled = True
|
|
divAbonese.Visible = True
|
|
divIntermediario.Visible = False
|
|
'filtro primero por los de la moneda
|
|
CargaIngresos(CveMonedaFiltro)
|
|
|
|
If ChkPagarDolares.Checked Then
|
|
CveMonedaPago = 2
|
|
CveMoneda = 1
|
|
TxtTCDolares.Attributes.Add("onkeyup", String.Format("FnCambia(0,0,0,0,1,{0});", 2))
|
|
Else
|
|
CveMonedaPago = 1
|
|
End If
|
|
CargaDatos(CveMoneda)
|
|
Case Else
|
|
|
|
divAbonese.Visible = False
|
|
Dim ObjProveedores As New ClsCompProveedores
|
|
ObjProveedores.GetProveedorProsepago(UsuarioActual.CveEmpresa)
|
|
|
|
divIntermediario.Visible = True
|
|
DdlProveedorPagoInt.DataSource = ObjProveedores.DtResultados
|
|
ObjProveedores.Dispose()
|
|
DdlProveedorPagoInt.DataBind()
|
|
|
|
DivDatosBancarios.Visible = False
|
|
TxtFolio.Enabled = False
|
|
PanelIngresos.Visible = False
|
|
|
|
End Select
|
|
|
|
CargaDatos(CveMoneda)
|
|
UpDatos.Update()
|
|
End Sub
|
|
|
|
Private Function CargaIngresos(tCveMoneda As Integer) As DataTable
|
|
Dim dtt As DataTable = Nothing
|
|
Dim Deudores As New ClsMovimientos
|
|
If Deudores.GetIngresosSaldosDetalle(CveCliente, tCveMoneda, UsuarioActual.CveEmpresa) Then
|
|
DdlIngreso.DataSource = Deudores.DtResultados.FiltraParametros("CveCliente > 0 AND Saldo > 0 AND CveIE > 0")
|
|
dtt = Deudores.DtResultados.FiltraParametros("CveCliente > 0 AND Saldo > 0 AND CveIE > 0")
|
|
End If
|
|
Deudores.Dispose()
|
|
|
|
DdlIngreso.DataBind()
|
|
DdlIngreso.Items.Insert(0, New ListItem("-", "-1"))
|
|
Return dtt
|
|
End Function
|
|
|
|
Private Function CargaPrestamos(tCveMoneda As Integer) As DataTable
|
|
Dim dtt As DataTable = Nothing
|
|
Dim Deudores As New ClsMovimientos
|
|
If Deudores.GetDocumentosxPagarDetalle(CveCliente, tCveMoneda, 2, UsuarioActual.CveEmpresa) Then
|
|
DdlPrestamo.DataSource = Deudores.DtResultados '.FiltraParametros("CveCliente > 0 AND Saldo > 0 AND CveIE > 0")
|
|
dtt = Deudores.DtResultados
|
|
End If
|
|
Deudores.Dispose()
|
|
|
|
DdlPrestamo.DataBind()
|
|
DdlPrestamo.Items.Insert(0, New ListItem("-", "-1"))
|
|
Return dtt
|
|
End Function
|
|
|
|
Protected Sub ChkAjusteOI_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ChkAjusteOI.CheckedChanged
|
|
|
|
If ChkAjusteOI.Checked Then
|
|
TxtOtrosImportes.Visible = True
|
|
TxtTotal.Visible = True
|
|
GvCxC.Columns(13).Visible = True
|
|
Else
|
|
TxtOtrosImportes.Visible = False
|
|
TxtTotal.Visible = False
|
|
GvCxC.Columns(13).Visible = False
|
|
TxtOtrosImportes.Text = ""
|
|
TxtTotal.Text = ""
|
|
RegistraScript("$get('TxtImporte').value = FormatoNumero(SumaValores(), 2);")
|
|
End If
|
|
|
|
UpDatos.Update()
|
|
UPVentas.Update()
|
|
End Sub
|
|
|
|
#Region " PAGAR CON PESOS "
|
|
Protected Sub ChkPagarPesos_CheckedChanged(sender As Object, e As EventArgs)
|
|
If ChkPagarPesos.Checked Then
|
|
DivTCDolaresDolares.Visible = False
|
|
RegistraScript("$get('DivTC').style.display = 'block';")
|
|
CargaCuentas()
|
|
If RblTipoPago.SelectedValue = "3" Then
|
|
CargaIngresos(1)
|
|
End If
|
|
TxtTC.Text = GlobalTipoCambio(Fecha).FormatoNumero(4)
|
|
Else
|
|
DivTCDolaresDolares.Visible = True
|
|
'RegistraScript("document.getElementById('DivTC').style.display = 'none';")
|
|
CargaCuentas()
|
|
TxtTCDolaresDolares.Text = GlobalTipoCambio(Fecha).FormatoNumero(4)
|
|
End If
|
|
UpDatos.Update()
|
|
|
|
CargaDatos(2)
|
|
RegistraScript("CambiaPesosDolares();")
|
|
End Sub
|
|
#End Region
|
|
|
|
#Region "PAGAR CON DOLARES"
|
|
Protected Sub ChkPagarDolares_CheckedChanged(sender As Object, e As EventArgs)
|
|
If ChkPagarDolares.Checked Then
|
|
DivTCDolares.Visible = True
|
|
CargaCuentas()
|
|
If RblTipoPago.SelectedValue = "3" Then
|
|
CargaIngresos(2)
|
|
RegistraScript("CambiaDolaresPesos();")
|
|
End If
|
|
TxtFechaDocumento.Attributes.Add("onchange", "CambiaTC(this);")
|
|
TxtTCDolares.Text = GlobalTipoCambio(Fecha).FormatoNumero(4)
|
|
Else
|
|
DivTCDolares.Visible = False
|
|
CargaCuentas()
|
|
TxtFechaDocumento.Attributes.Remove("onchange")
|
|
End If
|
|
UpDatos.Update()
|
|
|
|
CargaDatos(1)
|
|
RegistraScript("CambiaDolaresPesos();")
|
|
End Sub
|
|
#End Region
|
|
|
|
#Region " CUENTAS DEPOSITOS"
|
|
Private Sub CargaCuentasDepositos()
|
|
DdlCuentaDeposito.Items.Clear()
|
|
If DdlTipoTransaccion.SelectedValue.ToEntero > 0 Then ' transferencias y layout
|
|
trCuentaDeposito.Visible = False
|
|
|
|
Dim dtc As DataTable = GlobalDTCuentasDepositosClientes(UsuarioActual.CveEmpresa, CveCliente:=CveCliente)
|
|
|
|
If dtc IsNot Nothing Then
|
|
If DdlTipoTransaccion.SelectedValue = "9" Then
|
|
|
|
DdlCuentaDeposito.DataSource = dtc.FiltraParametros("EstatusPagoElectronico = 'True' AND Estatus ='True'")
|
|
|
|
If dtc.FiltraParametros("EstatusPagoElectronico = 'True' AND Estatus ='True'").Rows.Count > 0 Then
|
|
trCuentaDeposito.Visible = True
|
|
DdlCuentaDeposito.Items.Insert(0, New ListItem("Seleccione una cuenta", "-1"))
|
|
Else
|
|
BtnIEGuardar.Enabled = False
|
|
Alert("El Cliente no tiene ninguna cuenta deposito registrada ante el sistema BBVA BANCOMER", TipoMensaje.MsgAdvertencia)
|
|
End If
|
|
Else
|
|
DdlCuentaDeposito.DataSource = dtc.FiltraParametros("Estatus ='True'")
|
|
If dtc.Rows.Count >= 1 Then
|
|
trCuentaDeposito.Visible = True
|
|
DdlCuentaDeposito.Items.Insert(0, New ListItem("Seleccione una cuenta", "-1"))
|
|
End If
|
|
End If
|
|
|
|
End If
|
|
DdlCuentaDeposito.DataBind()
|
|
Else
|
|
trCuentaDeposito.Visible = False
|
|
DdlCuentaDeposito.Items.Clear()
|
|
End If
|
|
|
|
UpCuentaDeposito.Update()
|
|
UpDatos.Update()
|
|
|
|
End Sub
|
|
|
|
Private Sub RecargaCuentasDepositos()
|
|
|
|
Dim dr As DataRow = GlobalDTTipoTransacciones.FiltroPrimero(String.Format("CveTipoTransaccion = {0}", DdlTipoTransaccion.SelectedValue)) 'Egs o Ing
|
|
If dr IsNot Nothing Then
|
|
HdnTipoTransaccion.Value = dr("Tipo").ToString
|
|
HdnTipoTransaccionAbreviatura.Value = dr("Abreviatura").ToString
|
|
End If
|
|
CargaCuentasDepositos()
|
|
End Sub
|
|
Protected Sub DdlCuentaDeposito_SelectedIndexChanged(sender As Object, e As EventArgs)
|
|
Dim dtc As DataTable = GlobalDTCuentasDepositosClientes(UsuarioActual.CveEmpresa, CveCliente:=CveCliente, CveCuentaDeposito:=DdlCuentaDeposito.SelectedValue.ToEntero)
|
|
|
|
If dtc IsNot Nothing AndAlso dtc.Rows.Count = 1 Then
|
|
If dtc.Rows(0)("TieneCIE").ToString.ToEntero = 1 Then
|
|
TrReferenciaCIE.Visible = True
|
|
TxtReferenciaCIE.Text = dtc.Rows(0)("Referencia").ToString
|
|
Else
|
|
TrReferenciaCIE.Visible = False
|
|
End If
|
|
End If
|
|
|
|
UpCuentaDeposito.Update()
|
|
End Sub
|
|
#End Region
|
|
|
|
#Region " COMPLEMENTOS PAGO "
|
|
Private Function EmitirComplementoPago(CveIE As Integer, CveVentas As List(Of Integer), Series As List(Of String)) As String
|
|
|
|
If Not UsuarioActual.Empresa.FacturaProduccion Then
|
|
Return ""
|
|
End If
|
|
|
|
If Not ChkComplementoPago.Checked Then
|
|
Return ""
|
|
End If
|
|
|
|
Dim Retorno As New StringBuilder
|
|
|
|
'For i = 0 To CveVentas.Count - 1
|
|
Dim ObjBancos As New ClsBancos
|
|
|
|
If ObjBancos.GetComplementoPagosRep(-1, NowADS().AddYears(-2), NowADS(), CveIE, -1, 1, UsuarioActual.CveEmpresa, -1) Then
|
|
If Not ObjBancos.DtResultados.Rows.Count > 0 Then
|
|
ObjBancos.Dispose()
|
|
Alert("No se generaron complementos de pago porque no hay facturas con método de pago PPD", TipoMensaje.MsgAdvertencia)
|
|
Return ""
|
|
End If
|
|
End If
|
|
|
|
ObjBancos.IniciaTransacSQL()
|
|
|
|
If ObjBancos.GeneraTimbrePago(CveIE, -1, UsuarioActual, CveCliente, CFDIRelacionado:=CFDIRelacionadoSustitucion, EsRegeneracion:=False) Then
|
|
ObjBancos.Commit()
|
|
ComplementoSustitucionGenerado = True
|
|
|
|
PDFReciboDePagos(-1, -1, ObjBancos.CveComplementoPago, False)
|
|
|
|
'Dim LigaDescargaXML = $"../Empresas/{UsuarioActual.CveEmpresa}/XML/Pag/{ObjBancos.ComplementoSerieFolio}.xml"
|
|
'Dim LigaDescargaPDF = $"../Empresas/{UsuarioActual.CveEmpresa}/PDF/Pag/{ObjBancos.ComplementoSerieFolio}.pdf"
|
|
Retorno.AppendFormat(" Complemento de pago <strong>{0}</strong> <br>", ObjBancos.ComplementoSerieFolio)
|
|
Retorno.AppendFormat("<a class=""texto"" style='color:#337ab7' href=""/Compras/PopUpVerFactura.aspx?P={0}"" target=""_blank"">XML <i class=""fa fa-file""></i></i></a> ", Encripta(String.Format("OP=CompP&EXT=xml&SerieFolio={0}&CveComplementoPago={1}&CveIE={2}", ObjBancos.ComplementoSerieFolio, ObjBancos.CveComplementoPago, CveIE)))
|
|
Retorno.AppendFormat("<a class=""texto"" style='color:#337ab7' href=""/Compras/PopUpVerFactura.aspx?P={0}"" target=""_blank"">PDF <i class=""fa fa-ad-pdf""></i></i></i></a> ", Encripta(String.Format("OP=CompP&EXT=pdf&SerieFolio={0}&CveComplementoPago={1}&CveIE={2}", ObjBancos.ComplementoSerieFolio, ObjBancos.CveComplementoPago, CveIE)))
|
|
|
|
Dim ResultadoMail As Integer
|
|
Dim ObjMail As New ClsSisMail()
|
|
Dim LSRutasMail As New List(Of ClsSisMail.ArchivoMail)
|
|
LSRutasMail.Add(New ClsSisMail.ArchivoMail With {.Ruta = $"{UsuarioActual.Empresa.Ruta}\XML\Pag\{ObjBancos.ComplementoSerieFolio}.xml"})
|
|
LSRutasMail.Add(New ClsSisMail.ArchivoMail With {.Ruta = $"{UsuarioActual.Empresa.Ruta}\PDF\Pag\{ObjBancos.ComplementoSerieFolio}.pdf"})
|
|
|
|
'Dim Mail As String = "demo@adsistemas.mx"
|
|
Dim Asunto As String = "Envío de complemento de pago"
|
|
Dim Cuerpo As String = "Complemento de Pago"
|
|
|
|
If ObjMail.SendMail(UsuarioActual.Empresa, Mail, Asunto, Cuerpo, "", LSRutasMail) Then
|
|
ResultadoMail = 1
|
|
Else
|
|
ResultadoMail = 3
|
|
Alert("No se pudo enviar el correo", TipoMensaje.MsgAdvertencia)
|
|
End If
|
|
Else
|
|
ComplementoSustitucionGenerado = False
|
|
Retorno.AppendFormat($" Complemento de pago <b>NO</b> generado . {ObjBancos.Mensaje}")
|
|
ObjBancos.RollBack()
|
|
End If
|
|
|
|
ObjBancos.Dispose()
|
|
|
|
' Next
|
|
|
|
Return Retorno.ToString
|
|
End Function
|
|
|
|
|
|
#End Region
|
|
|
|
#Region "SALDAR CUENTAS"
|
|
|
|
Private Sub BtnSaldarCuentasIncobrables_Click(sender As Object, e As EventArgs) Handles BtnSaldarCuentasIncobrables.Click
|
|
Dim ObjConta As New ClsContabilidad
|
|
ObjConta.IniciaTransacSQL()
|
|
Dim CvePrePoliza As Integer = 0
|
|
Dim MsgError As String = ""
|
|
|
|
'Dim ObjIE As New ClsBancos
|
|
Dim FechaUltimaFluctuacion As Date = MinFecha
|
|
Dim TipoCambioFluctuacion As Decimal = 1
|
|
|
|
Dim tFecha As Date = TxtFechaIncobrable.Text.ToDate
|
|
Dim UltimaFluctuacion As MTipoCambioFluctuacion = GlobalTipoCambioUltimaFluctuacion(tFecha)
|
|
|
|
If UsuarioActual.Empresa.Funcionalidad(703) = "1" AndAlso UltimaFluctuacion IsNot Nothing Then
|
|
If UltimaFluctuacion.FechaFluctuacion <= tFecha Then
|
|
FechaUltimaFluctuacion = UltimaFluctuacion.FechaFluctuacion
|
|
TipoCambioFluctuacion = UltimaFluctuacion.TCFluctuacion
|
|
End If
|
|
End If
|
|
|
|
CvePrePoliza = ObjConta.AddPrePolizas("Bancos/ClientesAbonar/SaldarI", 47, 0, 0, 1, TxtFechaIncobrable.Text.ToDate, TxtObsSaldarIncobrable.Text.Trim, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa)
|
|
|
|
|
|
For Each gr As GridViewRow In GvCxC.Rows
|
|
If gr.FCCheckBox("Chk").Checked Then
|
|
Dim PorcentajePago As Decimal = gr.DataKey("Saldo").ToDecimal / gr.DataKey("Original").ToDecimal
|
|
Dim Saldo As Decimal = gr.DataKey("Saldo").ToDecimal
|
|
Dim RETIVA As Decimal = gr.DataKey("RetIVA").ToDecimal
|
|
Dim SubTotal As Decimal = PorcentajePago * (gr.DataKey("SubTotal").ToDecimal.RoundSQL - gr.DataKey("Descuento").ToDecimal.RoundSQL).RoundSQL
|
|
Dim IVA As Decimal = PorcentajePago * gr.DataKey("IVA").ToDecimal.RoundSQL
|
|
Dim IEPS As Decimal = PorcentajePago * gr.DataKey("IEPS").ToDecimal.RoundSQL
|
|
Dim TCVenta As Decimal = gr.DataKey("TipoCambio").ToDecimal
|
|
Dim FechaVenta As Date = gr.DataKey("Fecha").ToDate
|
|
Dim tCveMoneda As Integer = gr.DataKey("CveMoneda").ToEntero
|
|
Dim TCPago As Decimal = GlobalTipoCambio(TxtFechaIncobrable.Text.ToDate).FormatoNumero(4).ToDecimal
|
|
Dim CveConceptoDeduccion As Integer = DdlTipoDeduccion.SelectedValue.ToEntero
|
|
|
|
'si la fecha del documento es anterior a su ultima fluctuación. toma el Tc de la fluctuacion
|
|
If tCveMoneda = 2 Then
|
|
If FechaVenta < FechaUltimaFluctuacion Then
|
|
TCVenta = TipoCambioFluctuacion
|
|
End If
|
|
End If
|
|
'condicionante
|
|
Dim ClienteMovto As Boolean = True
|
|
Dim SubtotalMovto As Boolean = False
|
|
Dim CveConceptoCliente As Integer = 2
|
|
Dim ImpuestosMovto As Boolean = False
|
|
|
|
Dim CveSubProyecto As Integer = gr.DataKey("CveSubProyecto").ToEntero
|
|
Dim ConceptoPartida As String = TxtObsSaldarIncobrable.Text.Trim & " " & gr.DataKey("SerieFolio").ToString
|
|
|
|
'If CveConceptoDeduccion = 255 Then IdCuentaContableNoDeducible = UsuarioActual.Empresa.Funcionalidad(266).ToEntero
|
|
'If CveConceptoDeduccion = 179 Then IdCuentaContableNoDeducible = UsuarioActual.Empresa.Funcionalidad(559).ToEntero
|
|
'If CveConceptoDeduccion = 263 Then IdCuentaContableNoDeducible = UsuarioActual.Empresa.Funcionalidad(537).ToEntero
|
|
'If CveConceptoDeduccion = 252 Then IdCuentaContableNoDeducible = UsuarioActual.Empresa.Funcionalidad(581).ToEntero
|
|
|
|
If UsuarioActual.CveEmpresa.Contiene(4, 7, 11, 12, 122) Then
|
|
|
|
ClienteMovto = False : Saldo = Saldo * -1
|
|
ImpuestosMovto = True : IVA = IVA * -1
|
|
RETIVA = ((SubTotal * RETIVA / gr.DataKey("SubTotal").ToDecimal.RoundSQL) * -1).RoundSQL(2)
|
|
CveConceptoCliente = 1
|
|
End If
|
|
|
|
Dim UsaComplementaria As Boolean = True
|
|
|
|
'If UsuarioActual.CveEmpresa = 119 Then
|
|
' UsaComplementaria = True
|
|
'End If
|
|
|
|
If MsgError = "" Then
|
|
Dim ConPreP As ConceptosTipoSaldo = ClsPaginas.ObtenerCveConceptoPrePoliza(6, tCveMoneda, True, 1)
|
|
'normal
|
|
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, ClienteMovto, Saldo, Saldo, ConPreP.CveConcepto, gr.DataKey("SerieFolio").ToString, ConceptoPartida, CveCliente:=gr.DataKey("CveCliente").ToEntero, CveVenta:=gr.DataKey("CveVenta").ToEntero, TipoCambio:=TCVenta, TipoCambioPago:=TCPago) Then
|
|
MsgError = "Ocurrio un error al saldar el movimiento"
|
|
End If
|
|
|
|
If UsaComplementaria AndAlso tCveMoneda = 2 Then
|
|
'complementaria
|
|
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, ClienteMovto, 0, If(CveMonedaFiltro = 1, Saldo, (Saldo * TCVenta) - Saldo).RoundSQL, ConPreP.CveConceptoComplementario, gr.DataKey("SerieFolio").ToString, ConceptoPartida, CveCliente:=gr.DataKey("CveCliente").ToEntero, CveVenta:=gr.DataKey("CveVenta").ToEntero, ImporteME:=Saldo, TipoCambio:=TCVenta, TipoCambioPago:=TCPago) Then
|
|
MsgError = "Ocurrio un error al saldar el movimiento"
|
|
End If
|
|
End If
|
|
|
|
'fluctuación.
|
|
If tCveMoneda = 2 Then
|
|
Dim ImporteFluctuacion As Decimal = 0
|
|
ImporteFluctuacion = Saldo * (TCPago - TCVenta)
|
|
|
|
If CveSubProyecto <= 0 Then
|
|
MsgError = $"No se pudo obtener el sub proyecto de la venta {gr.DataKey("SerieFolio").ToString}"
|
|
End If
|
|
|
|
If TCPago > TCVenta Then
|
|
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, Math.Abs(ImporteFluctuacion), Math.Abs(ImporteFluctuacion), 64, gr.DataKey("SerieFolio").ToString, ConceptoPartida, CveCliente:=gr.DataKey("CveCliente").ToEntero, CveVenta:=gr.DataKey("CveVenta").ToEntero, TipoCambio:=TCVenta, TipoCambioPago:=TCPago, CveSubProyecto:=CveSubProyecto) Then
|
|
MsgError = "Ocurrio un error al saldar el movimiento"
|
|
End If
|
|
Else
|
|
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, Math.Abs(ImporteFluctuacion), Math.Abs(ImporteFluctuacion), 65, gr.DataKey("SerieFolio").ToString, ConceptoPartida, CveCliente:=gr.DataKey("CveCliente").ToEntero, CveVenta:=gr.DataKey("CveVenta").ToEntero, TipoCambio:=TCVenta, TipoCambioPago:=TCPago, CveSubProyecto:=CveSubProyecto) Then
|
|
MsgError = "Ocurrio un error al saldar el movimiento"
|
|
End If
|
|
End If
|
|
|
|
'cuando hay pago en dólares, se ajusta el concepto de subtotal,
|
|
SubTotal = (Saldo * TCVenta) + ImporteFluctuacion - (IVA * TCVenta) - (IEPS * TCVenta)
|
|
|
|
End If
|
|
|
|
If (IVA > 0 Or UsuarioActual.CveEmpresa.Contiene(4, 7, 11, 12, 122) And IVA < 0) AndAlso Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, ImpuestosMovto, IVA, If(CveMonedaFiltro = 1, IVA, IVA * TCVenta), 13, gr.DataKey("SerieFolio").ToString, ConceptoPartida, CveCliente:=gr.DataKey("CveCliente").ToEntero, CveVenta:=gr.DataKey("CveVenta").ToEntero, PorcentajeImpuesto:=gr.DataKey("PorcentajeIVA").ToDecimal, TipoCambio:=TCVenta, TipoCambioPago:=TCPago) Then
|
|
MsgError = "Ocurrio un error al saldar el movimiento"
|
|
End If
|
|
If (RETIVA > 0 Or UsuarioActual.CveEmpresa.Contiene(4, 7, 11, 12, 122) And RETIVA < 0) AndAlso Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, ClienteMovto, RETIVA, If(CveMonedaFiltro = 1, RETIVA, RETIVA * TCVenta), 8, gr.DataKey("SerieFolio").ToString, ConceptoPartida, CveCliente:=gr.DataKey("CveCliente").ToEntero, CveVenta:=gr.DataKey("CveVenta").ToEntero, TipoCambio:=TCVenta, TipoCambioPago:=TCPago) Then
|
|
MsgError = "Ocurrio un error al saldar el movimiento"
|
|
End If
|
|
If IEPS > 0 AndAlso Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, ImpuestosMovto, IEPS, If(CveMonedaFiltro = 1, IEPS, IEPS * TCVenta), 38, gr.DataKey("SerieFolio").ToString, ConceptoPartida, CveCliente:=gr.DataKey("CveCliente").ToEntero, CveVenta:=gr.DataKey("CveVenta").ToEntero, TipoCambio:=TCVenta, TipoCambioPago:=TCPago) Then
|
|
MsgError = "Ocurrio un error al saldar el movimiento"
|
|
End If
|
|
'al gasto,Subtotal
|
|
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, SubtotalMovto, SubTotal, SubTotal, CveConceptoDeduccion, gr.DataKey("SerieFolio").ToString, ConceptoPartida, CveCliente:=gr.DataKey("CveCliente").ToEntero, CveVenta:=gr.DataKey("CveVenta").ToEntero, CveSubProyecto:=CveSubProyecto, CveCuenta:=-1, TipoCambio:=TCVenta, TipoCambioPago:=TCPago) Then
|
|
MsgError = "Ocurrio un error al saldar el movimiento"
|
|
End If
|
|
|
|
If ObjConta.ValidacionesPrePoliza(CvePrePoliza, UsuarioActual, Opcion:=5) Then
|
|
If ObjConta.ValorPolizaDescuadre > 0 Then
|
|
MsgError = ObjConta.MensajePolizaDescuadre + " " + ObjConta.ValorDiferencia
|
|
GuardaLogAD($"Ventas/ClientesAbonar | Error:{ObjConta.MensajePolizaDescuadre} Diferencia:{ObjConta.ValorDiferencia} | CvePrePoliza:{CvePrePoliza}", "LogPrePolizas")
|
|
Exit For
|
|
End If
|
|
End If
|
|
End If
|
|
End If
|
|
Next
|
|
|
|
If MsgError = "" Then
|
|
'ObjConta.RollBack()
|
|
ObjConta.Commit()
|
|
CargaDatos(CveMonedaFiltro)
|
|
RegistraScript("$('#ModalSaldarCuentaIncobrable').modal('hide')")
|
|
Alert(String.Format("Los movimientos se saldaron correctamente. <br/> <a href='/Contabilidad/RegPrePoliza.aspx?CvePrePoliza={0}' class='Texto'>Ver PrePóliza</a>", CvePrePoliza), TipoMensaje.MsgInformacion)
|
|
BtnSaldarCuentasIncobrables.Visible = False
|
|
Else
|
|
ObjConta.RollBack()
|
|
Alert(MsgError, TipoMensaje.MsgError)
|
|
End If
|
|
|
|
|
|
ObjConta.Dispose()
|
|
End Sub
|
|
|
|
|
|
Private Sub ValidaCuentaDePagoFormaDePago()
|
|
|
|
If Not (DdlTipoTransaccion.SelectedValue.ToEntero > 0 And DdlCuenta.SelectedValue.ToEntero > 0) Then
|
|
Exit Sub
|
|
End If
|
|
|
|
Dim DTTipoTransacciones As DataTable = GlobalDTTipoTransacciones.FiltraParametros($"CveTipoTransaccion={DdlTipoTransaccion.SelectedValue}")
|
|
Dim DTCuentas As DataTable = GlobalDTBancosCuentas(UsuarioActual.CveUsuario, CveEmpresa:=UsuarioActual.CveEmpresa).FiltraParametros($"CveCuenta={DdlCuenta.SelectedValue}")
|
|
|
|
Dim ClaveFormaPagoSAT As String = ""
|
|
Dim Cuentapago As String = ""
|
|
Dim CuentaBeneficiario As String = ""
|
|
|
|
|
|
If DTTipoTransacciones.Rows.Count > 0 Then
|
|
ClaveFormaPagoSAT = DTTipoTransacciones.Rows(0)("ClaveFormaPagoSAT").ToString
|
|
Else
|
|
Alert("La forma de pago no tiene una forma de pago SAT", TipoMensaje.MsgAdvertencia)
|
|
Exit Sub
|
|
End If
|
|
|
|
If DTCuentas.Rows.Count > 0 Then
|
|
CuentaBeneficiario = DTCuentas.Rows(0)("NumCuenta").ToString
|
|
Else
|
|
Alert("No se pudo encontrar la cuenta", TipoMensaje.MsgAdvertencia)
|
|
Exit Sub
|
|
End If
|
|
|
|
|
|
Dim Mensaje As String = ""
|
|
Cuentapago = ""
|
|
|
|
|
|
Select Case ClaveFormaPagoSAT.ToString
|
|
Case "01"
|
|
' no tiene restricciones
|
|
Case "02"
|
|
If Cuentapago <> "" AndAlso Not Cuentapago.Length.Contiene(11, 18) Then
|
|
Mensaje = "La cuenta ordenante no cumple con el formato esperado."
|
|
End If
|
|
|
|
If CuentaBeneficiario <> "" AndAlso Not (CuentaBeneficiario.Length.Contiene(10, 11, 15, 16, 18, 50)) Then
|
|
Mensaje = $"{Mensaje} La Cuenta Beneficiario no cumple con el formato esperado."
|
|
End If
|
|
Case "03"
|
|
If Cuentapago <> "" AndAlso Not Cuentapago.Length.Contiene(10, 16, 18) Then
|
|
Mensaje = "La cuenta ordenante no cumple con el formato esperado."
|
|
End If
|
|
If CuentaBeneficiario <> "" AndAlso Not (CuentaBeneficiario.Length.Contiene(10, 18)) Then
|
|
Mensaje = $"{Mensaje} La Cuenta Beneficiario no cumple con el formato esperado."
|
|
End If
|
|
Case "04"
|
|
|
|
If Cuentapago <> "" AndAlso Not Cuentapago.Length.Contiene(16) Then
|
|
Mensaje = "La cuenta ordenante no cumple con el formato esperado."
|
|
End If
|
|
|
|
If CuentaBeneficiario <> "" AndAlso Not (CuentaBeneficiario.Length.Contiene(10, 11, 15, 16, 18, 50)) Then
|
|
Mensaje = $"{Mensaje} La Cuenta Beneficiario no cumple con el formato esperado."
|
|
End If
|
|
|
|
Case "05"
|
|
If Cuentapago <> "" AndAlso Not Cuentapago.Length.Contiene(10, 11, 15, 16, 18, 50) Then
|
|
Mensaje = "La cuenta ordenante no cumple con el formato esperado."
|
|
End If
|
|
|
|
If CuentaBeneficiario <> "" AndAlso Not (CuentaBeneficiario.Length.Contiene(10, 11, 15, 16, 18, 50)) Then
|
|
Mensaje = $"{Mensaje} La Cuenta Beneficiario no cumple con el formato esperado."
|
|
End If
|
|
Case "06"
|
|
If Cuentapago <> "" AndAlso Not Cuentapago.Length.Contiene(10) Then
|
|
Mensaje = "La cuenta ordenante no cumple con el formato esperado."
|
|
End If
|
|
|
|
CuentaBeneficiario = ""
|
|
Case "28"
|
|
If Cuentapago <> "" AndAlso Not Cuentapago.Length.Contiene(16) Then
|
|
Mensaje = "La cuenta ordenante no cumple con el formato esperado."
|
|
End If
|
|
|
|
If CuentaBeneficiario <> "" AndAlso Not (CuentaBeneficiario.Length.Contiene(10, 11, 15, 16, 18, 50)) Then
|
|
Mensaje = $"{Mensaje} La Cuenta Beneficiario no cumple con el formato esperado."
|
|
End If
|
|
Case "29"
|
|
If Cuentapago <> "" AndAlso Not Cuentapago.Length.Contiene(15, 16) Then
|
|
Mensaje = "La cuenta ordenante no cumple con el formato esperado."
|
|
End If
|
|
|
|
If CuentaBeneficiario <> "" AndAlso Not (CuentaBeneficiario.Length.Contiene(10, 11, 15, 16, 18, 50)) Then
|
|
Mensaje = $"{Mensaje} La Cuenta Beneficiario no cumple con el formato esperado."
|
|
End If
|
|
|
|
Case Else
|
|
|
|
End Select
|
|
|
|
LblValidaCeuntaTipoTransaccion.Text = Mensaje
|
|
If Not Mensaje.Length = 0 Then
|
|
'Alert(Mensaje, TipoMensaje.MsgAdvertencia)
|
|
LblValidaCeuntaTipoTransaccion.Visible = True
|
|
Else
|
|
LblValidaCeuntaTipoTransaccion.Visible = False
|
|
End If
|
|
|
|
UpGuardar.Update()
|
|
|
|
End Sub
|
|
|
|
#End Region
|
|
|
|
Protected Sub BtnCambiaTipoMoneda_Click(sender As Object, e As EventArgs)
|
|
CambiaTipoMoneda()
|
|
End Sub
|
|
Private Sub CambiaTipoMoneda()
|
|
|
|
Fecha = If(UsuarioActual.CveEmpresa = 13, TxtFechaDocumento.Text.ToDate.AddDays(-1), TxtFechaDocumento.Text.ToDate).ToDate
|
|
|
|
If TxtTC.Visible Then
|
|
TxtTC.Text = GlobalTipoCambio(Fecha).FormatoNumero(4)
|
|
End If
|
|
|
|
If DivTCDolares.Visible Then
|
|
TxtTCDolares.Text = GlobalTipoCambio(Fecha).FormatoNumero(4)
|
|
End If
|
|
|
|
If DivTCDolaresDolares.Visible Then
|
|
TxtTCDolaresDolares.Text = GlobalTipoCambio(Fecha).FormatoNumero(4)
|
|
End If
|
|
|
|
Dim moneda As Integer = GlobalDTBancosCuentas(-1, CveEmpresa:=UsuarioActual.CveEmpresa).FiltroPrimeroValor("CveMoneda", $"CveEmpresa = {UsuarioActual.CveEmpresa} AND CveCuenta = {DdlCuenta.SelectedValue.ToEntero}").ToEntero
|
|
If CveMonedaFiltro = -1 Then
|
|
RegistraScript(String.Format("FnCambia(0,0,0,0,-1,{0});", moneda))
|
|
Else
|
|
RegistraScript(String.Format("FnCambia(0,0,0,0,1,{0});", moneda))
|
|
End If
|
|
|
|
UpDatos.Update()
|
|
End Sub
|
|
|
|
Private Sub DdlIngreso_SelectedIndexChanged(sender As Object, e As EventArgs) Handles DdlIngreso.SelectedIndexChanged
|
|
'saco la moneda de la selección
|
|
HdnIngresoImporte.Value = "0"
|
|
If DdlIngreso.SelectedValue.ToEntero > 0 Then
|
|
Dim Banco As New ClsBancos
|
|
|
|
If Banco.GetBancosIE(DdlIngreso.SelectedValue.ToEntero, UsuarioActual.CveEmpresa) Then
|
|
CveMonedaPago = Banco.CveMoneda
|
|
Dim Deudores As New ClsMovimientos
|
|
If Deudores.GetIngresosSaldosDetalle(CveCliente, -1, UsuarioActual.CveEmpresa) Then
|
|
HdnIngresoImporte.Value = Deudores.DtResultados.FiltroPrimeroValor("Saldo", String.Format("CveIE = {0}", DdlIngreso.SelectedValue))
|
|
TxtTCDolares.Text = Deudores.DtResultados.FiltroPrimeroValor("TipoCambio", String.Format("CveIE = {0}", DdlIngreso.SelectedValue))
|
|
FechaIngreso = Deudores.DtResultados.FiltroPrimeroValor("FechaDocumento", String.Format("CveIE = {0}", DdlIngreso.SelectedValue)).ToDate
|
|
End If
|
|
Deudores.Dispose()
|
|
End If
|
|
Banco.Dispose()
|
|
Else
|
|
CveMonedaPago = -1
|
|
End If
|
|
If CveMonedaPago = 1 Then
|
|
'DivTC.Visible = True
|
|
DivTCDolares.Visible = False
|
|
TxtTC.Attributes.Add("onkeyup", String.Format("FnCambia(0,0,0,0,-1,{0});", CveMonedaPago))
|
|
ElseIf CveMonedaPago = 2 Then
|
|
'DivTC.Visible = False
|
|
RegistraScript("document.getElementById('DivTC').style.display = 'none';")
|
|
DivTCDolares.Visible = True
|
|
TxtTCDolares.Attributes.Add("onkeyup", String.Format("FnCambia(0,0,0,0,-1,{0});", CveMonedaPago))
|
|
End If
|
|
|
|
CargaDatos(CveMoneda)
|
|
|
|
End Sub
|
|
|
|
Private Sub RVTxtFechaDocumento_Init(sender As Object, e As EventArgs) Handles RVTxtFechaDocumento.Init
|
|
RVTxtFechaDocumento.MaximumValue = NowADS().ToShortDateString
|
|
Calendario.EndDate = NowADS()
|
|
|
|
End Sub
|
|
|
|
|
|
#Region "LIQUIDACION"
|
|
|
|
Protected Sub TimTiempo_Tick(sender As Object, e As EventArgs)
|
|
Dim a As String = "se recarga para que no pierda sesión el registro puede tardar más de una hora en llenar todos los datos" 'solo para que se ejecute sin que afecte a lo demás
|
|
End Sub
|
|
|
|
Protected Sub ChkLiquidacion_CheckedChanged(sender As Object, e As EventArgs)
|
|
ActivaDesactivaLiquidacion()
|
|
End Sub
|
|
|
|
Private Sub ActivaDesactivaLiquidacion()
|
|
|
|
If ChkLiquidacion.Checked Then
|
|
TimTiempo.Enabled = True 'para que no me saque
|
|
GvCxC.Columns(4).Visible = False
|
|
GvCxC.Columns(5).Visible = False
|
|
GvCxC.Columns(6).Visible = False
|
|
GvCxC.Columns(7).Visible = False
|
|
|
|
'16-24
|
|
GvCxC.Columns(16).Visible = True
|
|
GvCxC.Columns(17).Visible = True
|
|
GvCxC.Columns(18).Visible = True
|
|
GvCxC.Columns(19).Visible = True
|
|
GvCxC.Columns(20).Visible = True
|
|
GvCxC.Columns(21).Visible = True
|
|
GvCxC.Columns(22).Visible = True
|
|
GvCxC.Columns(23).Visible = True
|
|
GvCxC.Columns(24).Visible = True
|
|
GvCxC.Columns(25).Visible = True
|
|
GvCxC.Columns(26).Visible = True
|
|
GvCxC.Columns(27).Visible = True 'anticipos
|
|
GvCxC.Columns(28).Visible = True 'anticipos2
|
|
|
|
GvCxC.Columns(29).Visible = False
|
|
GvCxC.Columns(30).Visible = False
|
|
|
|
|
|
Else
|
|
TimTiempo.Enabled = False
|
|
GvCxC.Columns(4).Visible = True
|
|
GvCxC.Columns(5).Visible = True
|
|
GvCxC.Columns(6).Visible = True
|
|
GvCxC.Columns(7).Visible = True
|
|
|
|
GvCxC.Columns(16).Visible = False
|
|
GvCxC.Columns(17).Visible = False
|
|
GvCxC.Columns(18).Visible = False
|
|
GvCxC.Columns(19).Visible = False
|
|
GvCxC.Columns(20).Visible = False
|
|
GvCxC.Columns(21).Visible = False
|
|
GvCxC.Columns(22).Visible = False
|
|
GvCxC.Columns(23).Visible = False
|
|
GvCxC.Columns(24).Visible = False
|
|
GvCxC.Columns(25).Visible = False
|
|
GvCxC.Columns(26).Visible = False
|
|
GvCxC.Columns(27).Visible = False 'anticipos
|
|
GvCxC.Columns(28).Visible = False 'anticipos2
|
|
|
|
GvCxC.Columns(29).Visible = True
|
|
GvCxC.Columns(30).Visible = True
|
|
|
|
End If
|
|
|
|
UPVentas.Update()
|
|
End Sub
|
|
|
|
#End Region
|
|
|
|
Protected Sub LnkAccionesModalSeleccionLayout_Click(sender As Object, e As EventArgs)
|
|
|
|
TxtModalLayoutExcel.Text = "[]"
|
|
UpModalSeleccionLayout.Update()
|
|
RegistraScript("$('#ModalSeleccionLayout').modal('show');")
|
|
|
|
End Sub
|
|
|
|
Protected Sub LnkSeleccionLayout_Click(sender As Object, e As EventArgs)
|
|
|
|
Dim ProcesoOK As Boolean = True
|
|
Dim CountRegistros As Integer = 0
|
|
Dim TotalSeleccion As Decimal = 0D
|
|
|
|
Dim SBNoEncontradosEnLista As New StringBuilder
|
|
Dim SBPagoMayorASaldo As New StringBuilder
|
|
|
|
If TxtModalLayoutExcel.getfiles().Archivos.Count > 0 Then
|
|
Dim file As Archivo = TxtModalLayoutExcel.getfiles().Archivos(0)
|
|
Dim Directorio As String = Server.MapPath("~") & file.path
|
|
Dim Tipo As String = If(file.Extension.Contiene("xlsx", "xlsx", "xlsm", "xlsb"), "EXCEL", "CSV")
|
|
|
|
Dim DTExcel As New DataTable
|
|
Dim ErrorArchivo As Boolean = False
|
|
Dim ErrorExcel As Boolean = False
|
|
|
|
DTExcel = ReadExcelFile(Directorio + file.filename, True)
|
|
|
|
If Not DTExcel.Columns(0).ColumnName.ToUpper = "FOLIO" Then
|
|
Alert("El nombre de la primera columna debe ser 'Folio'. Favor de corregirlo", TipoMensaje.MsgAdvertencia)
|
|
Exit Sub
|
|
End If
|
|
|
|
If Not DTExcel.Columns(1).ColumnName.ToUpper = "IMPORTE PAGO" Then
|
|
Alert("El nombre de la segunda columna debe ser 'Importe Pago'.Favor de corregirlo." & DTExcel.Columns(1).ColumnName, TipoMensaje.MsgAdvertencia)
|
|
Exit Sub
|
|
End If
|
|
|
|
If UsuarioActual.Empresa.Funcionalidad(590) = "1" Then
|
|
ChkLiquidacion.Checked = True
|
|
ActivaDesactivaLiquidacion()
|
|
End If
|
|
|
|
For Each Drow As DataRow In DTExcel.Rows
|
|
|
|
Dim SerieFolioBusqueda As String = Drow("Folio").ToString.Trim.ToUpper
|
|
Dim ImportePago As Decimal = Drow("Importe Pago").ToString.ToDecimal.RoundSQL(2)
|
|
Dim SerieFolioEncontrado As Boolean = False
|
|
|
|
If ImportePago >= 0 Then
|
|
|
|
For Each GvRow As GridViewRow In GvCxC.Rows
|
|
|
|
Dim SerieFolioGv As String = GvRow.DataKey("SerieFolio").Trim.ToUpper
|
|
|
|
If SerieFolioBusqueda = SerieFolioGv Then
|
|
SerieFolioEncontrado = True
|
|
Dim SaldoGV As Decimal = GvRow.DataKey("Saldo").ToDecimal
|
|
If ImportePago = 0 Then ImportePago = SaldoGV 'si no se especifica cantidad toma la totalidad del saldo
|
|
Dim Diferencia As Decimal = SaldoGV - ImportePago
|
|
|
|
If Diferencia < 0 Then
|
|
|
|
If Math.Abs(Diferencia) > 0.01 Then
|
|
SBPagoMayorASaldo.AppendLine($"Factura: {SerieFolioBusqueda} Importe de pago {ImportePago.ToString("###,###,###.00")} es mayor al saldo {SaldoGV.ToString("###,###,###.00")} <br/>")
|
|
ProcesoOK = False
|
|
Exit For
|
|
Else
|
|
ImportePago = SaldoGV
|
|
End If
|
|
End If
|
|
|
|
GvRow.FCCheckBox("Chk").Checked = True
|
|
GvRow.FCTextBox("TxtAbonar").Text = ImportePago.ToString("###,###,###.00")
|
|
|
|
If UsuarioActual.Empresa.Funcionalidad(590) = "1" Then
|
|
|
|
GvRow.FCDropDownList("DdlTG").SelectedTextExist(Drow("Tipo").ToString)
|
|
GvRow.FCTextBox("TxtLiqCol1").Text = Drow("Comisión").ToString
|
|
GvRow.FCTextBox("TxtLiqCol2").Text = Drow("Gastos").ToString
|
|
GvRow.FCTextBox("TxtLiqCol3").Text = Drow("Inspeccion").ToString
|
|
GvRow.FCTextBox("TxtLiqCol4").Text = Drow("Seguro").ToString
|
|
GvRow.FCTextBox("TxtLiqCol5").Text = Drow("AduanaMex").ToString
|
|
GvRow.FCTextBox("TxtLiqCol6").Text = Drow("Diversos").ToString
|
|
GvRow.FCTextBox("TxtLiqCol7").Text = Drow("AduanaUSA").ToString
|
|
GvRow.FCTextBox("TxtLiqCol8").Text = Drow("MaterialEmpaque").ToString
|
|
GvRow.FCTextBox("TxtLiqCol9").Text = Drow("Semilla").ToString
|
|
GvRow.FCTextBox("TxtLiqCol10").Text = Drow("Fletes").ToString
|
|
|
|
GvRow.FCDropDownList("DdlAnti").SelectedTextLikeIfExist(Drow("FolioAnticipo1").ToString)
|
|
GvRow.FCTextBox("TxtAmort").Text = Drow("ImporteAnticipo1").ToString
|
|
GvRow.FCDropDownList("DdlAnti2").SelectedTextLikeIfExist(Drow("FolioAnticipo2").ToString)
|
|
GvRow.FCTextBox("TxtAmort2").Text = Drow("ImporteAnticipo2").ToString
|
|
|
|
End If
|
|
|
|
TotalSeleccion = TotalSeleccion + ImportePago
|
|
CountRegistros = CountRegistros + 1
|
|
|
|
Exit For
|
|
End If
|
|
Next
|
|
|
|
If Not SerieFolioEncontrado Then
|
|
SBNoEncontradosEnLista.AppendLine($"{SerieFolioBusqueda}<br>")
|
|
End If
|
|
End If
|
|
Next
|
|
|
|
Else
|
|
Alert("Se debe seleccionar un archivo", TipoMensaje.MsgError)
|
|
End If
|
|
|
|
If ProcesoOK Then
|
|
|
|
Alert($"Facturas seleccionadas: {CountRegistros} <br/>{SBNoEncontradosEnLista.ToString}")
|
|
RegistraScript("$('#ModalSeleccionLayout').modal('hide');")
|
|
TxtImporte.Text = TotalSeleccion.ToString("###,###,###.00")
|
|
|
|
UPVentas.Update()
|
|
UpDatos.Update()
|
|
Else
|
|
|
|
If SBPagoMAyorASaldo.ToString.Length > 0 Then
|
|
Alert($"Facturas con pagos mayores a saldo:<br/>{SBPagoMAyorASaldo.ToString}", TipoMensaje.MsgAdvertencia)
|
|
End If
|
|
|
|
End If
|
|
|
|
|
|
End Sub
|
|
|
|
'Public Sub SelectedTextLikeIfExist(ByRef Rbl As RadioButtonList, Value As String)
|
|
' Try
|
|
|
|
' For Each item As ListItem In Rbl.Items
|
|
' If item.Value.Contains(Value) Then
|
|
' item.Selected = True
|
|
' End If
|
|
' Next
|
|
' Catch ex As Exception
|
|
|
|
' End Try
|
|
'End Sub
|
|
|
|
Protected Sub LnkDescargaFormato_Click(sender As Object, e As EventArgs)
|
|
|
|
Dim Directorio As String = ""
|
|
Directorio = ModExtensiones.DirectorioBaseEmpresas & "Empresas\Grales\LayoutPagoCliente.xlsx"
|
|
If UsuarioActual.Empresa.Funcionalidad(590) = "1" Then
|
|
Directorio = ModExtensiones.DirectorioBaseEmpresas & "Empresas\Grales\LayoutPagoClienteLiquidacion.xlsx"
|
|
End If
|
|
|
|
If Not (Directorio = "") Then
|
|
|
|
Dim Archivo As New IO.FileInfo(Directorio)
|
|
If Archivo.Exists Then
|
|
Response.Clear()
|
|
Response.ClearHeaders()
|
|
Response.ClearContent()
|
|
Response.AddHeader("Content-Disposition", "attachment; filename=" + Archivo.Name)
|
|
Response.AddHeader("Content-Length", Archivo.Length.ToString())
|
|
Response.ContentType = "text/plain"
|
|
Response.Flush()
|
|
Response.TransmitFile(Archivo.FullName)
|
|
Response.End()
|
|
End If
|
|
End If
|
|
|
|
End Sub
|
|
End Class
|