'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("{1}", 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
Venta" 'GlobalDTClasificaciones(UsuarioActual.CveEmpresa, CveClasificacion:=CveClasificacionCol1).FiltroPrimeroValor("Clasificacion").Substring(0, 10) GvCxC.Columns(18).HeaderText = "Gastos
Manejo" 'GlobalDTClasificaciones(UsuarioActual.CveEmpresa, CveClasificacion:=CveClasificacionCol2).FiltroPrimeroValor("Clasificacion").Substring(0, 12) GvCxC.Columns(19).HeaderText = "Servicio
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
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
USA" 'GlobalDTClasificaciones(UsuarioActual.CveEmpresa, CveClasificacion:=CveClasificacionCol7).FiltroPrimeroValor("Clasificacion").Substring(0, 12) GvCxC.Columns(24).HeaderText = "Material
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
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("Ir", 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 = "" 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 If ChkComplementoPago.Checked Then Dim objGral As New ClsGralFolios Dim SalirDeMetodo As Boolean = False If objGral.GetFolios("CP", UsuarioActual.CveEmpresa) Then If Not objGral.DtResultados.Rows.Count > 0 Then Alert("No se cuenta con folios para emitir complemento de pago", TipoMensaje.MsgAdvertencia) SalirDeMetodo = True End If End If objGral.Dispose() If SalirDeMetodo Then Exit Sub End If End If '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:
") 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") }
") ValFechaDocumento = True ElseIf AnioFactura = AnioDocumento And MesFactura > MesDocumento Then FoliosFechasValFechaDocumento.AppendLine($"Folio: { gvRowVal.DataKey("SerieFolio") } fecha: {gvRowVal.DataKey("Fecha").ToDate.ToString("dd/MM/yyyy") }
") 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:

" 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 {1}
", CveIE, ObjIE.Folio) If IDPoliza > 0 Then StrMsg.AppendFormat("Poliza: {1}
", 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.

Folio: {1}
", RespuestaNotaCredito.Respuesta.CveVenta, RespuestaNotaCredito.Respuesta.SerieFolio) End If Next Alert($"{StrMsg.ToString}

{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 {0}
", ObjBancos.ComplementoSerieFolio) Retorno.AppendFormat("XML    ", Encripta(String.Format("OP=CompP&EXT=xml&SerieFolio={0}&CveComplementoPago={1}&CveIE={2}", ObjBancos.ComplementoSerieFolio, ObjBancos.CveComplementoPago, CveIE))) Retorno.AppendFormat("PDF   ", 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 NO 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.
Ver PrePóliza", 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 If String.IsNullOrEmpty(DTCuentas.Rows(0)("CLABE").ToString) Then CuentaBeneficiario = DTCuentas.Rows(0)("NumCuenta").ToString Else CuentaBeneficiario = DTCuentas.Rows(0)("CLABE").ToString End If 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")}
") 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}
") End If End If Next Else Alert("Se debe seleccionar un archivo", TipoMensaje.MsgError) End If If ProcesoOK Then Alert($"Facturas seleccionadas: {CountRegistros}
{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:
{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