From 85629bc3b8651c123c97688d035c42e8b5b75af7 Mon Sep 17 00:00:00 2001 From: janeth arvizu Date: Thu, 17 Oct 2019 14:07:58 -0700 Subject: [PATCH] =?UTF-8?q?Ampli=C3=B3=20campo=20Importe?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Bancos/IE.aspx | 3130 +++++++++---------- Compras/RepNotasCredito.aspx.vb | 562 ++-- Contabilidad/RepIVA.aspx | 536 ++-- Contabilidad/RepIVA.aspx.cs | 630 ++-- Empresas/Grales/Formatos/RepClientesCxC.rpt | Bin 262144 -> 262144 bytes 5 files changed, 2429 insertions(+), 2429 deletions(-) diff --git a/Bancos/IE.aspx b/Bancos/IE.aspx index e47da35f1..5d8bd47e6 100644 --- a/Bancos/IE.aspx +++ b/Bancos/IE.aspx @@ -1,1565 +1,1565 @@ -<%@ Page Title="" Language="VB" MasterPageFile="~/Site.master" AutoEventWireup="false" CodeFile="IE.aspx.vb" Inherits="Bancos_IE" ValidateRequest="false" %> - - - - - - - - - - -   - - - -
  • - Listado Facturas Pagadas -
  • -
  • - Imprimir -
  • - - -
  • - Complemento Pago -
  • -
    -
    - -
  • - Actualizar Tipo Cambio -
  • - - <%--
  • - Emitir Complemento de Pago -
  • --%> - - - -
  • - Cheque Devuelto -
  • -
  • - Cancelar Movimiento -
  • -
  • - Eliminar Movimiento -
  • -
  • - Refacturar Complemento -
  • -
  • - Cancelar - - <%-- data-original-title="¿Está seguro que desea cancelar el documento?" data-btn-ok-label="si" Style="color: #686868;"> - -
  • -
    -
    - - - - -
  • - Contabilizar -
  • -
  • - Descontabilizar -
  • - -
    - - - - -
    - -
  • - Envíar Comprobante Mail -
  • - - - -
  • - Ajustar -
  • -
    -
    - -
    - - - - - -
    -
    -
    -
    -
    -
    - -   - - <%----%> Comprobante -   - -
    - -
    - - - - - -
    - -
    -
    - -
    - - - - - -
    -
    - - -
    -
    -
    - -
    - -
    -
    - -
    - -
    - -
    -
    -
    - - -
    -
    -
    - -
    - -
    -
    - - - - -
    - - - - - - - -
    -
    -
    - -
    - - - -
    -
    - -
    - $ - -
    -
    -
    -
    -
    Interes:
    -
    - $ - -
    -
    - -
    - -
    -
    - -
    - $ - - - -
    -
    - - - - -
    - - Clientes - Proveedor - Viaticos - Personal - - - - - - - - - - - - - - - - -
    -
    - -
    - - -
    -
    -
    -
    -
    - -
    -
    - -
    - $ - - -
    -
    -
    - - - - -
    - -
    -
    -
    -
    - - - - - -
    -
    - -
    - -
    - -
    -
    -
    - -
    - -
    -
    -
    -
    - -
    - -
    -
    - -
    -
    -
    - - - -
    - -
    - - - - - -
    -
    -
    -
    - - - -
    - - -
    - - - - - - -
    -
    -
    -
    - -
    - -
    - -
    - <%-- - -
    - - - -
    -
    -
    --%> -
    - - - -
    - -
    - -
    -
    -
    -
    - -
    - -
    - -
    -
    - -
    - -
    - -
    -
    - - - -
    - -
    - - - - -
    -
    -
    - -
    - - - -
    -
    -
    -
    - -
    - -
    - - -
    -
    - -
    - -
    - -
    -
    -
    - -
    - - -
    -
    - -
    -
    -
    -
    - -
    - -
    -
    -
    - -
    - - - - - - - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - -
    -
    - -
    -
    - - - -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - - - - - - - - - - - - - - - - -
    - -
    -
    -
    -
    - - - -
    -
    -
    - -
    -
    -
    -
    - - - - - - - - - - - -
    - -
    -
    - - - - - - <%-- - - - - --%> - - - - - - - - - - - - - - - - - -
    CveIE: - -
    Tipo de Documento: - - - -
    Fecha Aplicación -
    - - - - -
    - - - <%-- - - - - --%> - -
    -
    - - -
    Complemento de pago Sustituto de: - -
    -
    -
    -
    - - - -
    -
    - Cargar Comprobante - - - - - - - - - - - -
    - -
    -
    - Nota: Si ya tiene un comprobante este sera reemplazado. -
    -
    -
    -
    -
    - -
    -
    -
    - - - - - - - - - - - - - - - - - - - -
    Moneda: - - - - - -
    Registró: -
    F. Registró: -
    Tipo Cambio: -
    -
    -
    - -
    -
    -
    - - <%-- - - - --%> - - - - - - - - - <%-- - - - - - - - - - - - --%> -
    Es Abono en Cuenta: - -
    Aplica Impuestos: - -
    No Deducible: - -
    Fue Impreso: - -
    Fue Conciliado: - -
     Fecha Aplicado:  -
    -
    -
    -
    -
    - - - - - - - - -
    Depositado : - Ir -
    -
    -
    -
    - -
    -
    - - - -
    -
    - - - - -
    -
    -
    -
    - - Datos Generales Cancelación -
    -
    -
    -
    -
    -
    - -
    -
    -
    - - - - - - - - - - - - - - - - - -
    Usuario: - -
    Fecha Cancelación: - -
    Fecha Registro: - -
    - - - -
    -
    -
    -
    - -
    -
    - -
    - -
    -
    - -
    - -
    -
    - - - - - - -
    - - - - - - - - - - -
    - -
    - -
    - -
    -
    -
    -
    - <%----%> - Bitacora -
    -
    -
    - <%--
    - - Agregar -
    --%> -
    - - -
    -
    -
    -
    - - - - - - Fecha - - - - - - Fecha Agenda - - - - - - Usuario - - - - - - Descripción - - - - - - Archivo - - - - - - - - - - - - - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    - - Historial de Modificación -
    -
    -
    -
    -
    -
    -
    - - - - Fecha - - - - - - - - - - -
    -
    -
    -
    - <%-- MODAL BITACORA --%> - - - - - - - - - <%-- COMPLEMENTOS PAGO --%> - - - <%-- ACTUALIZAR TIPO CAMBIO PREPOLIZA --%> - - - - - - - - - - - - -
    - - - - +<%@ Page Title="" Language="VB" MasterPageFile="~/Site.master" AutoEventWireup="false" CodeFile="IE.aspx.vb" Inherits="Bancos_IE" ValidateRequest="false" %> + + + + + + + + + + +   + + + +
  • + Listado Facturas Pagadas +
  • +
  • + Imprimir +
  • + + +
  • + Complemento Pago +
  • +
    +
    + +
  • + Actualizar Tipo Cambio +
  • + + <%--
  • + Emitir Complemento de Pago +
  • --%> + + + +
  • + Cheque Devuelto +
  • +
  • + Cancelar Movimiento +
  • +
  • + Eliminar Movimiento +
  • +
  • + Refacturar Complemento +
  • +
  • + Cancelar + + <%-- data-original-title="¿Está seguro que desea cancelar el documento?" data-btn-ok-label="si" Style="color: #686868;"> + +
  • +
    +
    + + + + +
  • + Contabilizar +
  • +
  • + Descontabilizar +
  • + +
    + + + + +
    + +
  • + Envíar Comprobante Mail +
  • + + + +
  • + Ajustar +
  • +
    +
    + +
    + + + + + +
    +
    +
    +
    +
    +
    + +   + + <%----%> Comprobante +   + +
    + +
    + + + + + +
    + +
    +
    + +
    + + + + + +
    +
    + + +
    +
    +
    + +
    + +
    +
    + +
    + +
    + +
    +
    +
    + + +
    +
    +
    + +
    + +
    +
    + + + + +
    + + + + + + + +
    +
    +
    + +
    + + + +
    +
    + +
    + $ + +
    +
    +
    +
    +
    Interes:
    +
    + $ + +
    +
    + +
    + +
    +
    + +
    + $ + + + +
    +
    + + + + +
    + + Clientes + Proveedor + Viaticos - Personal + + + + + + + + + + + + + + + + +
    +
    + +
    + + +
    +
    +
    +
    +
    + +
    +
    + +
    + $ + + +
    +
    +
    + + + + +
    + +
    +
    +
    +
    + + + + + +
    +
    + +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    +
    + +
    + +
    +
    + +
    +
    +
    + + + +
    + +
    + + + + + +
    +
    +
    +
    + + + +
    + + +
    + + + + + + +
    +
    +
    +
    + +
    + +
    + +
    + <%-- + +
    + + + +
    +
    +
    --%> +
    + + + +
    + +
    + +
    +
    +
    +
    + +
    + +
    + +
    +
    + +
    + +
    + +
    +
    + + + +
    + +
    + + + + +
    +
    +
    + +
    + + + +
    +
    +
    +
    + +
    + +
    + + +
    +
    + +
    + +
    + +
    +
    +
    + +
    + + +
    +
    + +
    +
    +
    +
    + +
    + +
    +
    +
    + +
    + + + + + + + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    +
    + +
    +
    + + + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + +
    + +
    +
    +
    +
    + + + +
    +
    +
    + +
    +
    +
    +
    + + + + + + + + + + + +
    + +
    +
    + + + + + + <%-- + + + + --%> + + + + + + + + + + + + + + + + + +
    CveIE: + +
    Tipo de Documento: + + + +
    Fecha Aplicación +
    + + + + +
    + + + <%-- + + + + --%> + +
    +
    + + +
    Complemento de pago Sustituto de: + +
    +
    +
    +
    + + + +
    +
    + Cargar Comprobante + + + + + + + + + + + +
    + +
    +
    + Nota: Si ya tiene un comprobante este sera reemplazado. +
    +
    +
    +
    +
    + +
    +
    +
    + + + + + + + + + + + + + + + + + + + +
    Moneda: + + + + + +
    Registró: +
    F. Registró: +
    Tipo Cambio: +
    +
    +
    + +
    +
    +
    + + <%-- + + + --%> + + + + + + + + + <%-- + + + + + + + + + + + --%> +
    Es Abono en Cuenta: + +
    Aplica Impuestos: + +
    No Deducible: + +
    Fue Impreso: + +
    Fue Conciliado: + +
     Fecha Aplicado:  +
    +
    +
    +
    +
    + + + + + + + + +
    Depositado : + Ir +
    +
    +
    +
    + +
    +
    + + + +
    +
    + + + + +
    +
    +
    +
    + + Datos Generales Cancelación +
    +
    +
    +
    +
    +
    + +
    +
    +
    + + + + + + + + + + + + + + + + + +
    Usuario: + +
    Fecha Cancelación: + +
    Fecha Registro: + +
    + + + +
    +
    +
    +
    + +
    +
    + +
    + +
    +
    + +
    + +
    +
    + + + + + + +
    + + + + + + + + + + +
    + +
    + +
    + +
    +
    +
    +
    + <%----%> + Bitacora +
    +
    +
    + <%--
    + + Agregar +
    --%> +
    + + +
    +
    +
    +
    + + + + + + Fecha + + + + + + Fecha Agenda + + + + + + Usuario + + + + + + Descripción + + + + + + Archivo + + + + + + + + + + + + + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + + Historial de Modificación +
    +
    +
    +
    +
    +
    +
    + + + + Fecha + + + + + + + + + + +
    +
    +
    +
    + <%-- MODAL BITACORA --%> + + + + + + + + + <%-- COMPLEMENTOS PAGO --%> + + + <%-- ACTUALIZAR TIPO CAMBIO PREPOLIZA --%> + + + + + + + + + + + + +
    + + + + diff --git a/Compras/RepNotasCredito.aspx.vb b/Compras/RepNotasCredito.aspx.vb index f5d63a35b..cd955ec5c 100644 --- a/Compras/RepNotasCredito.aspx.vb +++ b/Compras/RepNotasCredito.aspx.vb @@ -1,281 +1,281 @@ -Option Explicit On -Option Strict On - -Imports System.Data -Imports Extensiones -Imports Microsoft.Reporting.WebForms - -Partial Class Compras_RepNotasCredito - Inherits ClsPaginas - -#Region "PROPIEDADES" - Private Property DtDatos As DataTable - Get - DtDatos = CType(ViewState("DtDatos"), DataTable) - End Get - Set(value As DataTable) - ViewState("DtDatos") = value - End Set - End Property -#End Region - Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load - If Not Page.IsPostBack Then - DdlProveedores.DataSource = GlobalDTCompProveedores(UsuarioActual.CveEmpresa) - DdlProveedores.DataBind() - TxtFechaSaldar.Text = Now.ToShortDateString - CargaDatos() - End If - End Sub - - Private Sub CargaDatos() - Dim ObjCompras As New ClsCompras - Dim FechaI, FechaF As String - - If txtFechaI.Text <> "" Then FechaI = txtFechaI.Text Else FechaI = "-1" - If txtFechaF.Text <> "" Then FechaF = txtFechaF.Text Else FechaF = "-1" - - - If ObjCompras.GetNotasCreditoRep(DdlProveedores.SelectedValue.ToEntero, DdlOpcion.SelectedValue.ToEntero, FechaI, FechaF, UsuarioActual.CveEmpresa) Then - DtDatos = ObjCompras.DtResultados - CargaGrid("") - Else - Alert("Ocurrió un error al obtener el catálogo de Notas de Crédito", Extensiones.TipoMensaje.MsgError) - End If - - ObjCompras.Dispose() - End Sub - - Protected Sub GvDatos_RowDataBound(sender As Object, e As GridViewRowEventArgs) - If e.Row.RowType = DataControlRowType.DataRow Then - e.Row.FCHyperLink("HLRazonSocial").NavigateUrl = String.Format("/Compras/Proveedores.aspx?CveProveedor={0}", e.Row.DBCampo("CveProveedor")) - e.Row.FCHyperLink("HLSerieFolio").NavigateUrl = String.Format("/Compras/Compras.aspx?CveCompra={0}", e.Row.DBCampo("CveCompra")) - - End If - End Sub - - Protected Sub BtnConsultar_Click(sender As Object, e As EventArgs) - CargaDatos() - End Sub - - Protected Sub ImgExcel_Click(sender As Object, e As EventArgs) Handles ImgExcel.Click - GvDatos.ExportToExcel("RepNotasCredito." & Now.ToShortDateString) - - End Sub - - - Private Sub GenerarPDF(Optional Formato As String = "PDF") - If DtDatos IsNot Nothing Then - Dim StrFiltro As New StringBuilder - 'StrFiltro.AppendFormat(String.Format("Proveedor: {0}, Estatus: {1}", DdlProveedores.SelectedItem.Text, DdlOpcion.SelectedItem.Text)) - ' If DdlTipoComprobante.SelectedValue <> "-1" Then StrFiltro.AppendFormat(" Tipo Documento: {0}", DdlTipoComprobante.SelectedItem.Text) - If DdlProveedores.SelectedValue <> "-1" Then StrFiltro.AppendFormat(" Proveedor: {0}", DdlProveedores.SelectedItem.Text) - If DdlOpcion.SelectedValue <> "-1" Then StrFiltro.AppendFormat(" Estatus: {0}", DdlOpcion.SelectedItem.Text) - - If txtFechaI.Text <> "" Then StrFiltro.AppendFormat(" Fecha Inicio : {0}", txtFechaI.Text.ToDate.ToShortDateString) - If txtFechaF.Text <> "" Then StrFiltro.AppendFormat(" Fecha Fin : {0}", txtFechaF.Text.ToDate.ToShortDateString) - - - Dim Imagen As New System.IO.FileInfo(String.Format("{0}/Logo.png", UsuarioActual.Empresa.Ruta)) - Dim logouri = String.Format("{0}://{1}:{2}/Empresas/{3}/Logo.png", Request.Url.Scheme, Request.Url.Host, Request.Url.Port, UsuarioActual.CveEmpresa) - 'Dim dt As DataTable = DtVentas.FiltraParametros("", "Orden") '.FiltraParametros("Total > 0", DistinctColumns:={"GPO", "Cantidad", "SubTotal", "Descuento", "Amortizacion", "IVA", "Total"}) - Dim FechaI, FechaF As String - FechaI = If(txtFechaI.Text = "" Or txtFechaI.Text = "__/__/____", "-1", txtFechaI.Text) - FechaF = If(txtFechaF.Text = "" Or txtFechaF.Text = "__/__/____", "-1", txtFechaF.Text) - Dim params As New List(Of ReportParameter) - - params.Add(New ReportParameter("NombreEmpresa", UsuarioActual.Empresa.Empresa)) - params.Add(New ReportParameter("FechaInicio", FechaI)) - params.Add(New ReportParameter("FechaFin", FechaF)) - params.Add(New ReportParameter("UsuarioImprimio", UsuarioActual.Nombre)) - params.Add(New ReportParameter("FechaImpresion", Now.ToDateTime.ToShortDateString)) - params.Add(New ReportParameter("Filtros", StrFiltro.ToString)) - - If Imagen.Exists Then - params.Add(New ReportParameter("LogoPath", logouri)) - Else - params.Add(New ReportParameter("LogoPath", "")) - End If - ImprimirPDF("Empresas/Grales/Formatos/RepNotasCredito.rdlc", DtDatos, params, String.Format("ReporteVentas-{0}", Now.ToDateTime.ToShortDateString), Formato:=Formato) - Else - Alert("No hay datos consultados", TipoMensaje.MsgAdvertencia) - End If - - End Sub - - Protected Sub ImgImprimir_Click(sender As Object, e As EventArgs) Handles ImgImprimir.Click - GenerarPDF() - End Sub - - Private Sub LnkHabilitarSaldar_Click(sender As Object, e As EventArgs) Handles LnkHabilitarSaldar.Click - For Each gr As GridViewRow In GvDatos.Rows - If gr.DataKey("CveCompra") <> "" Then - gr.FCCheckBox("Chk").Visible = True - HLSaldar.Visible = True - LnkHabilitarSaldar.Visible = False - UpDatos.Update() - End If - Next - End Sub - - Protected Sub BtnSaldar_Click(sender As Object, e As EventArgs) - Dim ObjConta As New ClsContabilidad - ObjConta.IniciaTransacSQL() - Dim CvePrePoliza As Integer = 0 - Dim MsgError As String = "" - Dim IdCtaContable As Integer = 0 - Dim IdCtaContableComplementaria As Integer = 0 - Dim Importe As Decimal = 0 - Dim ImporteMN As Decimal = 0 - Dim ImporteComplementaria As Decimal = 0 - Dim CveMoneda As Integer = 0 - Dim TC As Decimal = GlobalTipoCambio(TxtFechaSaldar.Text.ToDate).ToDecimal - Dim TCCompra As Decimal = 0 - Dim Concepto As String = TxtConcepto.Text - Dim UsaComplementaria As Boolean = UsuarioActual.CveEmpresa.Contiene(119) - Dim MensajeAlert = New StringBuilder - - For Each gr As GridViewRow In GvDatos.Rows - If gr.FCCheckBox("Chk").Checked Then - IdCtaContable = 0 - IdCtaContableComplementaria = 0 - Importe = gr.DataKey("Saldo").ToDecimal.RoundSQL - ImporteMN = gr.DataKey("Saldo").ToDecimal.RoundSQL - TCCompra = gr.DataKey("TipoCambio").ToDecimal - CveMoneda = gr.DataKey("CveMoneda").ToEntero - - CvePrePoliza = ObjConta.AddPrePolizas("Compras/RepNotasCredito", 103, gr.DataKey("Saldo").ToDecimal, gr.DataKey("Saldo").ToDecimal, gr.DataKey("CveMoneda").ToEntero, Now, "Saldado manual", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa) - - If CveMoneda > 1 Then - IdCtaContable = gr.DataKey("IdCtaContExtranjera").ToEntero - ImporteMN = (gr.DataKey("Saldo").ToDecimal * TCCompra).RoundSQL - Else - IdCtaContable = gr.DataKey("IdCtaContProveedores").ToEntero - End If - - If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, -Importe, "", 18, Concepto, TxtFechaSaldar.Text.ToDate, IdCtaContable, -1, gr.DataKey("CveIE").ToEntero, CveProveedor:=gr.DataKey("CveProveedor").ToEntero, CvePersonal:=gr.DataKey("CvePersonal").ToEntero, ImporteMX:=-If(CveMoneda > 1 AndAlso UsaComplementaria, Importe, ImporteMN), ImporteME:=-If(CveMoneda > 1, Importe, 0), CveCompra:=gr.DataKey("CveCompra").ToEntero, CveCompraAmortizacion:=gr.DataKey("CveCompra").ToEntero, TipoCambio:=TCCompra) Then - MsgError = "Ocurrio un Error al saldar el movimiento" - End If - - If UsaComplementaria AndAlso CveMoneda > 1 Then - ImporteComplementaria = (Importe * TCCompra - Importe).RoundSQL - IdCtaContableComplementaria = gr.DataKey("IdCtaContComplementaria").ToEntero - If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, -ImporteComplementaria, "", 235, Concepto, TxtFechaSaldar.Text.ToDate, IdCtaContableComplementaria, -1, CveCompra:=gr.DataKey("CveCompra").ToEntero, CveCompraAmortizacion:=gr.DataKey("CveCompra").ToEntero, CvePersonal:=gr.DataKey("CvePersonal").ToEntero, CveProveedor:=gr.DataKey("CveProveedor").ToEntero, ImporteMX:=-ImporteComplementaria, ImporteME:=-ImporteComplementaria, TipoCambioPago:=TC, TipoCambio:=TCCompra) Then - MsgError = "Ocurrio un Error al saldar el movimiento" - End If - End If - - IdCtaContable = UsuarioActual.Empresa.Funcionalidad(564).ToString.ToEntero - If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, Importe, "", 211, Concepto, TxtFechaSaldar.Text.ToDate, IdCtaContable, -1, gr.DataKey("CveIE").ToEntero, ImporteMX:=If(CveMoneda > 1, (Importe * TC), Importe).RoundSQL, CveCuenta:=-1, CveCompra:=gr.DataKey("CveCompra").ToEntero, CveProveedor:=gr.DataKey("CveProveedor").ToEntero) Then - MsgError = "Ocurrio un Error al saldar el movimiento" - End If - - If TC <> TCCompra AndAlso CveMoneda > 1 AndAlso UsaComplementaria Then - Dim difFluctuacion As Decimal = TC - TCCompra - Dim CveConceptoFluctua As Integer = 64 '64.ganacia, 65.perdida - Dim TipoMovtoFluctua As Boolean = True - Dim IdCtaContableFluctua As Integer - Dim CveCuenta As Integer = 0 - If difFluctuacion < 0 Then - CveConceptoFluctua = 65 - TipoMovtoFluctua = False - IdCtaContableFluctua = UsuarioActual.Empresa.IdCuentaPerdidaCambiaria - CveCuenta = UsuarioActual.Empresa.CveCuentaPerdidaCambiaria - Else - CveConceptoFluctua = 64 - TipoMovtoFluctua = True - IdCtaContableFluctua = UsuarioActual.Empresa.IdCuentaGananciaCambiaria - CveCuenta = UsuarioActual.Empresa.CveCuentaGananciaCambiaria - End If - Dim ImporteFluctuacion As Decimal = Math.Abs((Importe * difFluctuacion).RoundSQL) - - If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, TipoMovtoFluctua, ImporteFluctuacion, "", CveConceptoFluctua, Concepto, Now, IdCtaContableFluctua, -1, CveCompra:=gr.DataKey("CveCompra").ToEntero, CveProveedor:=gr.DataKey("CveProveedor").ToEntero, ImporteMX:=ImporteFluctuacion, ImporteME:=ImporteFluctuacion, TipoCambio:=TCCompra, TipoCambioPago:=TC, CveCuenta:=CveCuenta) Then - MsgError = "Ocurrio un Error al saldar el movimiento" - End If - End If - - If ObjConta.ValidacionPrePolizaCuadre(CvePrePoliza, 5) Then - If ObjConta.ValorPolizaDescuadre > 0 Then - MsgError = ObjConta.MensajePolizaDescuadre - GuardaLogAD($"Ventas/Ventas-ProcesoPrePolizas | Error:{ObjConta.MensajePolizaDescuadre} Diferencia:{ObjConta.ValorDiferencia} | CvePrePoliza:{CvePrePoliza}", "LogPrePolizas") - End If - End If - - If UsuarioActual.Empresa.Funcionalidad(200) = "1" AndAlso MsgError = "" Then - If ObjConta.ContabilizarPrePoliza(CvePrePoliza, UsuarioActual.CveUsuario, UsuarioActual.Empresa) Then - If MensajeAlert.ToString = "" Then - MensajeAlert.AppendFormat("Los siguientes movimientos fueron saldados correctamente:
    ") - End If - MensajeAlert.AppendFormat("", ObjConta.ContaIdPoliza, ObjConta.ContaFolio) - End If - End If - - If MsgError <> "" Then Exit For - - End If - Next - - - If MsgError = "" Then - ObjConta.Commit() - If MensajeAlert.ToString <> "" Then - Alert(MensajeAlert.ToString) - Else - Alert("Los movimientos fueron saldados correctamente.") - End If - Alert(MensajeAlert.ToString) - CargaDatos() - HLSaldar.Visible = False - RegistraScript("$('#DivSaldar').modal('hide')") - LnkHabilitarSaldar.Visible = True - Else - ObjConta.RollBack() - Alert(MsgError, TipoMensaje.MsgError) - End If - ObjConta.Dispose() - End Sub - Protected Sub LnkSaldar_Click(sender As Object, e As EventArgs) - - End Sub - - -#Region "O R D E N A M I E N T O" - Protected Sub LbOrden_Click(ByVal sender As Object, ByVal e As EventArgs) - Dim Orden As String = "" - Dim Campo As String = "" - Dim Literal As Literal = Nothing - Const OrdenInicial As String = "" - Dim Arg(2) As String - - Arg = CType(sender, LinkButton).CommandArgument().ToString.Split(";"c) - Campo = Arg(0) - Literal = CType(CType(sender, LinkButton).NamingContainer.FindControl("Img" & Campo.Replace(", ", "_")), Literal) - - If ViewState(String.Format("O{0}", Campo)) IsNot Nothing AndAlso ViewState(String.Format("O{0}", Campo)).ToString = String.Format("{0} DESC", Campo) Then - ViewState(String.Format("O{0}", Campo)) = String.Format("{0} ASC", Campo) - Literal.Text = String.Format("") - Else - ViewState(String.Format("O{0}", Campo)) = String.Format("{0} DESC", Campo) - Literal.Text = String.Format("") - End If - Orden = OrdenInicial & ViewState(String.Format("O{0}", Campo)).ToString - ViewState("Orden") = Orden - CargaGrid(Orden) - End Sub - - Protected Sub CargaGrid(Orden As String) - Dim DV As DataView = Nothing - DV = New DataView(DtDatos, "", Orden, DataViewRowState.CurrentRows) - If Orden <> String.Empty Then - GvDatos.DataSource = DV.ToTable() - Else - GvDatos.DataSource = DtDatos - End If - - GvDatos.DataBind() - UpDatos.Update() - DV.Dispose() - End Sub -#End Region - - -End Class +Option Explicit On +Option Strict On + +Imports System.Data +Imports Extensiones +Imports Microsoft.Reporting.WebForms + +Partial Class Compras_RepNotasCredito + Inherits ClsPaginas + +#Region "PROPIEDADES" + Private Property DtDatos As DataTable + Get + DtDatos = CType(ViewState("DtDatos"), DataTable) + End Get + Set(value As DataTable) + ViewState("DtDatos") = value + End Set + End Property +#End Region + Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load + If Not Page.IsPostBack Then + DdlProveedores.DataSource = GlobalDTCompProveedores(UsuarioActual.CveEmpresa) + DdlProveedores.DataBind() + TxtFechaSaldar.Text = Now.ToShortDateString + CargaDatos() + End If + End Sub + + Private Sub CargaDatos() + Dim ObjCompras As New ClsCompras + Dim FechaI, FechaF As String + + If txtFechaI.Text <> "" Then FechaI = txtFechaI.Text Else FechaI = "-1" + If txtFechaF.Text <> "" Then FechaF = txtFechaF.Text Else FechaF = "-1" + + + If ObjCompras.GetNotasCreditoRep(DdlProveedores.SelectedValue.ToEntero, DdlOpcion.SelectedValue.ToEntero, FechaI, FechaF, UsuarioActual.CveEmpresa) Then + DtDatos = ObjCompras.DtResultados + CargaGrid("") + Else + Alert("Ocurrió un error al obtener el catálogo de Notas de Crédito", Extensiones.TipoMensaje.MsgError) + End If + + ObjCompras.Dispose() + End Sub + + Protected Sub GvDatos_RowDataBound(sender As Object, e As GridViewRowEventArgs) + If e.Row.RowType = DataControlRowType.DataRow Then + e.Row.FCHyperLink("HLRazonSocial").NavigateUrl = String.Format("/Compras/Proveedores.aspx?CveProveedor={0}", e.Row.DBCampo("CveProveedor")) + e.Row.FCHyperLink("HLSerieFolio").NavigateUrl = String.Format("/Compras/Compras.aspx?CveCompra={0}", e.Row.DBCampo("CveCompra")) + + End If + End Sub + + Protected Sub BtnConsultar_Click(sender As Object, e As EventArgs) + CargaDatos() + End Sub + + Protected Sub ImgExcel_Click(sender As Object, e As EventArgs) Handles ImgExcel.Click + GvDatos.ExportToExcel("RepNotasCredito." & Now.ToShortDateString) + + End Sub + + + Private Sub GenerarPDF(Optional Formato As String = "PDF") + If DtDatos IsNot Nothing Then + Dim StrFiltro As New StringBuilder + 'StrFiltro.AppendFormat(String.Format("Proveedor: {0}, Estatus: {1}", DdlProveedores.SelectedItem.Text, DdlOpcion.SelectedItem.Text)) + ' If DdlTipoComprobante.SelectedValue <> "-1" Then StrFiltro.AppendFormat(" Tipo Documento: {0}", DdlTipoComprobante.SelectedItem.Text) + If DdlProveedores.SelectedValue <> "-1" Then StrFiltro.AppendFormat(" Proveedor: {0}", DdlProveedores.SelectedItem.Text) + If DdlOpcion.SelectedValue <> "-1" Then StrFiltro.AppendFormat(" Estatus: {0}", DdlOpcion.SelectedItem.Text) + + If txtFechaI.Text <> "" Then StrFiltro.AppendFormat(" Fecha Inicio : {0}", txtFechaI.Text.ToDate.ToShortDateString) + If txtFechaF.Text <> "" Then StrFiltro.AppendFormat(" Fecha Fin : {0}", txtFechaF.Text.ToDate.ToShortDateString) + + + Dim Imagen As New System.IO.FileInfo(String.Format("{0}/Logo.png", UsuarioActual.Empresa.Ruta)) + Dim logouri = String.Format("{0}://{1}:{2}/Empresas/{3}/Logo.png", Request.Url.Scheme, Request.Url.Host, Request.Url.Port, UsuarioActual.CveEmpresa) + 'Dim dt As DataTable = DtVentas.FiltraParametros("", "Orden") '.FiltraParametros("Total > 0", DistinctColumns:={"GPO", "Cantidad", "SubTotal", "Descuento", "Amortizacion", "IVA", "Total"}) + Dim FechaI, FechaF As String + FechaI = If(txtFechaI.Text = "" Or txtFechaI.Text = "__/__/____", "-1", txtFechaI.Text) + FechaF = If(txtFechaF.Text = "" Or txtFechaF.Text = "__/__/____", "-1", txtFechaF.Text) + Dim params As New List(Of ReportParameter) + + params.Add(New ReportParameter("NombreEmpresa", UsuarioActual.Empresa.Empresa)) + params.Add(New ReportParameter("FechaInicio", FechaI)) + params.Add(New ReportParameter("FechaFin", FechaF)) + params.Add(New ReportParameter("UsuarioImprimio", UsuarioActual.Nombre)) + params.Add(New ReportParameter("FechaImpresion", Now.ToDateTime.ToShortDateString)) + params.Add(New ReportParameter("Filtros", StrFiltro.ToString)) + + If Imagen.Exists Then + params.Add(New ReportParameter("LogoPath", logouri)) + Else + params.Add(New ReportParameter("LogoPath", "")) + End If + ImprimirPDF("Empresas/Grales/Formatos/RepNotasCredito.rdlc", DtDatos, params, String.Format("ReporteVentas-{0}", Now.ToDateTime.ToShortDateString), Formato:=Formato) + Else + Alert("No hay datos consultados", TipoMensaje.MsgAdvertencia) + End If + + End Sub + + Protected Sub ImgImprimir_Click(sender As Object, e As EventArgs) Handles ImgImprimir.Click + GenerarPDF() + End Sub + + Private Sub LnkHabilitarSaldar_Click(sender As Object, e As EventArgs) Handles LnkHabilitarSaldar.Click + For Each gr As GridViewRow In GvDatos.Rows + If gr.DataKey("CveCompra") <> "" Then + gr.FCCheckBox("Chk").Visible = True + HLSaldar.Visible = True + LnkHabilitarSaldar.Visible = False + UpDatos.Update() + End If + Next + End Sub + + Protected Sub BtnSaldar_Click(sender As Object, e As EventArgs) + Dim ObjConta As New ClsContabilidad + ObjConta.IniciaTransacSQL() + Dim CvePrePoliza As Integer = 0 + Dim MsgError As String = "" + Dim IdCtaContable As Integer = 0 + Dim IdCtaContableComplementaria As Integer = 0 + Dim Importe As Decimal = 0 + Dim ImporteMN As Decimal = 0 + Dim ImporteComplementaria As Decimal = 0 + Dim CveMoneda As Integer = 0 + Dim TC As Decimal = GlobalTipoCambio(TxtFechaSaldar.Text.ToDate).ToDecimal + Dim TCCompra As Decimal = 0 + Dim Concepto As String = TxtConcepto.Text + Dim UsaComplementaria As Boolean = UsuarioActual.CveEmpresa.Contiene(119) + Dim MensajeAlert = New StringBuilder + + For Each gr As GridViewRow In GvDatos.Rows + If gr.FCCheckBox("Chk").Checked Then + IdCtaContable = 0 + IdCtaContableComplementaria = 0 + Importe = gr.DataKey("Saldo").ToDecimal.RoundSQL + ImporteMN = gr.DataKey("Saldo").ToDecimal.RoundSQL + TCCompra = gr.DataKey("TipoCambio").ToDecimal + CveMoneda = gr.DataKey("CveMoneda").ToEntero + + CvePrePoliza = ObjConta.AddPrePolizas("Compras/RepNotasCredito", 103, gr.DataKey("Saldo").ToDecimal, gr.DataKey("Saldo").ToDecimal, gr.DataKey("CveMoneda").ToEntero, Now, "Saldado manual", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa) + + If CveMoneda > 1 Then + IdCtaContable = gr.DataKey("IdCtaContExtranjera").ToEntero + ImporteMN = (gr.DataKey("Saldo").ToDecimal * TCCompra).RoundSQL + Else + IdCtaContable = gr.DataKey("IdCtaContProveedores").ToEntero + End If + + If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, -Importe, "", 18, Concepto, TxtFechaSaldar.Text.ToDate, IdCtaContable, -1, gr.DataKey("CveIE").ToEntero, CveProveedor:=gr.DataKey("CveProveedor").ToEntero, CvePersonal:=gr.DataKey("CvePersonal").ToEntero, ImporteMX:=-If(CveMoneda > 1 AndAlso UsaComplementaria, Importe, ImporteMN), ImporteME:=-If(CveMoneda > 1, Importe, 0), CveCompra:=gr.DataKey("CveCompra").ToEntero, CveCompraAmortizacion:=gr.DataKey("CveCompra").ToEntero, TipoCambio:=TCCompra) Then + MsgError = "Ocurrio un Error al saldar el movimiento" + End If + + If UsaComplementaria AndAlso CveMoneda > 1 Then + ImporteComplementaria = (Importe * TCCompra - Importe).RoundSQL + IdCtaContableComplementaria = gr.DataKey("IdCtaContComplementaria").ToEntero + If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, -ImporteComplementaria, "", 235, Concepto, TxtFechaSaldar.Text.ToDate, IdCtaContableComplementaria, -1, CveCompra:=gr.DataKey("CveCompra").ToEntero, CveCompraAmortizacion:=gr.DataKey("CveCompra").ToEntero, CvePersonal:=gr.DataKey("CvePersonal").ToEntero, CveProveedor:=gr.DataKey("CveProveedor").ToEntero, ImporteMX:=-ImporteComplementaria, ImporteME:=-ImporteComplementaria, TipoCambioPago:=TC, TipoCambio:=TCCompra) Then + MsgError = "Ocurrio un Error al saldar el movimiento" + End If + End If + + IdCtaContable = UsuarioActual.Empresa.Funcionalidad(564).ToString.ToEntero + If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, Importe, "", 211, Concepto, TxtFechaSaldar.Text.ToDate, IdCtaContable, -1, gr.DataKey("CveIE").ToEntero, ImporteMX:=If(CveMoneda > 1, (Importe * TC), Importe).RoundSQL, CveCuenta:=-1, CveCompra:=gr.DataKey("CveCompra").ToEntero, CveProveedor:=gr.DataKey("CveProveedor").ToEntero) Then + MsgError = "Ocurrio un Error al saldar el movimiento" + End If + + If TC <> TCCompra AndAlso CveMoneda > 1 AndAlso UsaComplementaria Then + Dim difFluctuacion As Decimal = TC - TCCompra + Dim CveConceptoFluctua As Integer = 64 '64.ganacia, 65.perdida + Dim TipoMovtoFluctua As Boolean = True + Dim IdCtaContableFluctua As Integer + Dim CveCuenta As Integer = 0 + If difFluctuacion < 0 Then + CveConceptoFluctua = 65 + TipoMovtoFluctua = False + IdCtaContableFluctua = UsuarioActual.Empresa.IdCuentaPerdidaCambiaria + CveCuenta = UsuarioActual.Empresa.CveCuentaPerdidaCambiaria + Else + CveConceptoFluctua = 64 + TipoMovtoFluctua = True + IdCtaContableFluctua = UsuarioActual.Empresa.IdCuentaGananciaCambiaria + CveCuenta = UsuarioActual.Empresa.CveCuentaGananciaCambiaria + End If + Dim ImporteFluctuacion As Decimal = Math.Abs((Importe * difFluctuacion).RoundSQL) + + If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, TipoMovtoFluctua, ImporteFluctuacion, "", CveConceptoFluctua, Concepto, Now, IdCtaContableFluctua, -1, CveCompra:=gr.DataKey("CveCompra").ToEntero, CveProveedor:=gr.DataKey("CveProveedor").ToEntero, ImporteMX:=ImporteFluctuacion, ImporteME:=ImporteFluctuacion, TipoCambio:=TCCompra, TipoCambioPago:=TC, CveCuenta:=CveCuenta) Then + MsgError = "Ocurrio un Error al saldar el movimiento" + End If + End If + + If ObjConta.ValidacionPrePolizaCuadre(CvePrePoliza, 5) Then + If ObjConta.ValorPolizaDescuadre > 0 Then + MsgError = ObjConta.MensajePolizaDescuadre + GuardaLogAD($"Ventas/Ventas-ProcesoPrePolizas | Error:{ObjConta.MensajePolizaDescuadre} Diferencia:{ObjConta.ValorDiferencia} | CvePrePoliza:{CvePrePoliza}", "LogPrePolizas") + End If + End If + + If UsuarioActual.Empresa.Funcionalidad(200) = "1" AndAlso MsgError = "" Then + If ObjConta.ContabilizarPrePoliza(CvePrePoliza, UsuarioActual.CveUsuario, UsuarioActual.Empresa) Then + If MensajeAlert.ToString = "" Then + MensajeAlert.AppendFormat("Los siguientes movimientos fueron saldados correctamente:
    ") + End If + MensajeAlert.AppendFormat("", ObjConta.ContaIdPoliza, ObjConta.ContaFolio) + End If + End If + + If MsgError <> "" Then Exit For + + End If + Next + + + If MsgError = "" Then + ObjConta.Commit() + If MensajeAlert.ToString <> "" Then + Alert(MensajeAlert.ToString) + Else + Alert("Los movimientos fueron saldados correctamente.") + End If + Alert(MensajeAlert.ToString) + CargaDatos() + HLSaldar.Visible = False + RegistraScript("$('#DivSaldar').modal('hide')") + LnkHabilitarSaldar.Visible = True + Else + ObjConta.RollBack() + Alert(MsgError, TipoMensaje.MsgError) + End If + ObjConta.Dispose() + End Sub + Protected Sub LnkSaldar_Click(sender As Object, e As EventArgs) + + End Sub + + +#Region "O R D E N A M I E N T O" + Protected Sub LbOrden_Click(ByVal sender As Object, ByVal e As EventArgs) + Dim Orden As String = "" + Dim Campo As String = "" + Dim Literal As Literal = Nothing + Const OrdenInicial As String = "" + Dim Arg(2) As String + + Arg = CType(sender, LinkButton).CommandArgument().ToString.Split(";"c) + Campo = Arg(0) + Literal = CType(CType(sender, LinkButton).NamingContainer.FindControl("Img" & Campo.Replace(", ", "_")), Literal) + + If ViewState(String.Format("O{0}", Campo)) IsNot Nothing AndAlso ViewState(String.Format("O{0}", Campo)).ToString = String.Format("{0} DESC", Campo) Then + ViewState(String.Format("O{0}", Campo)) = String.Format("{0} ASC", Campo) + Literal.Text = String.Format("") + Else + ViewState(String.Format("O{0}", Campo)) = String.Format("{0} DESC", Campo) + Literal.Text = String.Format("") + End If + Orden = OrdenInicial & ViewState(String.Format("O{0}", Campo)).ToString + ViewState("Orden") = Orden + CargaGrid(Orden) + End Sub + + Protected Sub CargaGrid(Orden As String) + Dim DV As DataView = Nothing + DV = New DataView(DtDatos, "", Orden, DataViewRowState.CurrentRows) + If Orden <> String.Empty Then + GvDatos.DataSource = DV.ToTable() + Else + GvDatos.DataSource = DtDatos + End If + + GvDatos.DataBind() + UpDatos.Update() + DV.Dispose() + End Sub +#End Region + + +End Class diff --git a/Contabilidad/RepIVA.aspx b/Contabilidad/RepIVA.aspx index 254800fc3..fe925144c 100644 --- a/Contabilidad/RepIVA.aspx +++ b/Contabilidad/RepIVA.aspx @@ -1,268 +1,268 @@ -<%@ Page Title="" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true" CodeFile="RepIVA.aspx.cs" Inherits="Contabilidad_RepIVA" %> - - - - - - - - Reporte de Impuestos - - -
  • - PDF -
  • -
  • - Excel -
  • -
  • - Ver Dlls en pesos -
  • - - - -
  • - Generar DIOT -
  • - -
    - - - -
    -
    - - - - - - - -
    -
    -
    - -
    -
    -
    - -
    -
    - - - - - - - - - - -   -
    -
    - -
    -
    - - - - - - - - - - -
    -
    - -
    - - - - -
    -
    -
    -
    -
    -
    -
    -
    -
    - - - - - - - - -
    - - -

    IVA Trasladado

    - - - - - - - - - - - - - - - - - - - - - -
    -
    -
    - -
    -

    IEPS por Porcentaje

    - - - - - - - - - -
    -
    -

    IVA por Porcentaje

    - - - - - - - - -
    -
    -
    - -
    -
    - - - -

    IVA Acreditable

    - - - - - - - - - - - - - - - - - RetIVA
    Hon/Ser.Prof.
    -
    - - - -
    - - - - - - - - - <%-- - - - --%> - - - - - -
    -
    - -
    -

    IVA por Porcentaje

    - - - - - - - - -
    - -
    -
    -
    - -
    -
    - - - - - -
    - - - +<%@ Page Title="" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true" CodeFile="RepIVA.aspx.cs" Inherits="Contabilidad_RepIVA" %> + + + + + + + + Reporte de Impuestos + + +
  • + PDF +
  • +
  • + Excel +
  • +
  • + Ver Dlls en pesos +
  • + + + +
  • + Generar DIOT +
  • + +
    + + + +
    +
    + + + + + + + +
    +
    +
    + +
    +
    +
    + +
    +
    + + + + + + + + + + +   +
    +
    + +
    +
    + + + + + + + + + + +
    +
    + +
    + + + + +
    +
    +
    +
    +
    +
    +
    +
    +
    + + + + + + + + +
    + + +

    IVA Trasladado

    + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    + +
    +

    IEPS por Porcentaje

    + + + + + + + + + +
    +
    +

    IVA por Porcentaje

    + + + + + + + + +
    +
    +
    + +
    +
    + + + +

    IVA Acreditable

    + + + + + + + + + + + + + + + + + RetIVA
    Hon/Ser.Prof.
    +
    + + + +
    + + + + + + + + + <%-- + + + --%> + + + + + +
    +
    + +
    +

    IVA por Porcentaje

    + + + + + + + + +
    + +
    +
    +
    + +
    +
    + + + + + +
    + + + diff --git a/Contabilidad/RepIVA.aspx.cs b/Contabilidad/RepIVA.aspx.cs index 0730328b1..176f60830 100644 --- a/Contabilidad/RepIVA.aspx.cs +++ b/Contabilidad/RepIVA.aspx.cs @@ -1,316 +1,316 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Web; -using System.Web.UI.WebControls; -using Extensiones; -using System.Data; -using static Extensiones.ModExtensiones; -using Microsoft.Reporting.WebForms; -using System.Activities.Expressions; -using System.Text; -using System.IO; - -public partial class Contabilidad_RepIVA : ClsPaginas -{ - #region PROPIEDADES - - private DataTable DtIVATrasladado - { - get { return DtIVATrasladado = (DataTable)ViewState["DtIVATrasladado"]; } - set { ViewState["DtIVATrasladado"] = value; } - } - private DataTable DtIVAAcreditable - { - get { return DtIVAAcreditable = (DataTable)ViewState["DtIVAAcreditable"]; } - set { ViewState["DtIVAAcreditable"] = value; } - } - private double TCEspecifico - { - get { return TCEspecifico = (double)ViewState["TCEspecifico"]; } - set { ViewState["TCEspecifico"] = value; } - } - - private int TipoCambio - { - get { return TipoCambio = (int)ViewState["TipoCambio"]; } - set { ViewState["TipoCambio"] = value; } - } - - #endregion - protected void Page_Load(object sender, EventArgs e) - { - if (!IsPostBack) - { - InicializaValores(); - - } - } - - public void InicializaValores() - { - TipoCambio = 1; - TCEspecifico = -1; - txtFechaI.Text = $"01/{DateTime.Now.Month}/{DateTime.Now.Year}"; - txtFechaF.Text = DateTime.Now.ToShortDateString(); - - LnkAccionesDIOT.Visible = true; - - } - - public void Consulta() - { - if (TipoCambio == 3 && TxtEspecifico.Text != "") { TCEspecifico = TxtEspecifico.Text.ToDouble(); } else { TCEspecifico = -1; } - int Conciliado = DdlTipoMovto.SelectedValue.ToEntero(); - LblMsgAcreditable.Text = ""; // lbl de mensajes de negativos - - ClsContabilidad ObjCont = new ClsContabilidad(); - if (ObjCont.GetRepIVA(txtFechaI.Text.ToDate(), txtFechaF.Text.ToDate(), 1, UsuarioActual.CveUsuario, Conciliado, UsuarioActual.CveEmpresa, TipoCambio, TCEspecifico)) - { - GvT.DataSource = ObjCont.DtResultados; - DtIVATrasladado = ObjCont.DtResultados; - if (ObjCont.GetRepIVAAcumulado(txtFechaI.Text.ToDate(), txtFechaF.Text.ToDate(), Conciliado, 1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa)) - { - GvIEPSA.DataSource = ObjCont.DtResultados; - } - - if (ObjCont.GetRepIVAAcumulado(txtFechaI.Text.ToDate(), txtFechaF.Text.ToDate(), Conciliado, 2, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa)) - { - GvIVAA.DataSource = ObjCont.DtResultados; - } - - } - if (ObjCont.GetRepIVA(txtFechaI.Text.ToDate(), txtFechaF.Text.ToDate(), 2, UsuarioActual.CveUsuario, Conciliado, UsuarioActual.CveEmpresa, TipoCambio, TCEspecifico)) - { - GvA.DataSource = ObjCont.DtResultados; - DtIVAAcreditable = ObjCont.DtResultados; - if (DtIVAAcreditable.FiltraParametros("IVA < 0 OR IEPS < 0 ").Rows.Count > 0) - { - LblMsgAcreditable.Text = "La información presenta importes en negativo, estos no se incluirán en el archivo generado para DIOT"; - } - - - if (ObjCont.GetRepIVAAcumulado(txtFechaI.Text.ToDate(), txtFechaF.Text.ToDate(), Conciliado, 3, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa)) - { - GvIVA2.DataSource = ObjCont.DtResultados; - } - - - } - ObjCont.Dispose(); - GvT.DataBind(); - GvA.DataBind(); - GvIEPSA.DataBind(); - GvIVAA.DataBind(); - GvIVA2.DataBind(); - UpDatos.Update(); - } - - protected void BtnConsultar_Click(object sender, EventArgs e) - { - Consulta(); - } - - protected void GvIVATrasladado_RowDataBound(object sender, GridViewRowEventArgs e) - { - if (e.Row.RowType == DataControlRowType.DataRow) - { - if (e.Row.DBCampo("CveVenta").ToEntero() < 1) - { - e.Row.CssClass = "Totales"; - } - } - } - - protected void GvIVAAcreditable_RowDataBound(object sender, GridViewRowEventArgs e) - { - if (e.Row.RowType == DataControlRowType.DataRow) - { - if (e.Row.DBCampo("CveCompra").ToEntero() < 1) - { - e.Row.CssClass = "Totales"; - } - if (e.Row.DBCampo("PorcentajeIVA").ToDecimal() > 0 ) - { - Decimal SubTotal = (e.Row.DBCampo("SubTotal16").ToDecimal() > 0? e.Row.DBCampo("SubTotal16").ToDecimal() : (e.Row.DBCampo("SubTotal8").ToDecimal() > 0? e.Row.DBCampo("SubTotal8").ToDecimal() : (Decimal)0.0) ); - - Decimal dif = Math.Round(SubTotal * e.Row.DBCampo("PorcentajeIVA").ToDecimal(), 2) - Math.Round(e.Row.DBCampo("IVA").ToDecimal(), 2); - if (dif > 1) - { - e.Row.ForeColor = System.Drawing.Color.Red; - e.Row.Cells[0].Text = e.Row.Cells[0].Text + "Err"; - - e.Row.ToolTip = "Dif:" + dif.ToString() + "- Sub:" + e.Row.DBCampo("SubTotal")+ " - IVA:"+ e.Row.DBCampo("IVA"); - } - } - } - } - - protected void LnkPdf_Click(object sender, EventArgs e) - { - Imprimir("PDF"); - } - - protected void LnkExcel_Click(object sender, EventArgs e) - { - Imprimir("EXCEL"); - } - - public void Imprimir(String Opcion) - { - String FechaF; - if (txtFechaF.Text == "" || txtFechaF.Text == "__/__/____") { FechaF = "-1"; } else { FechaF = $" Fecha Final: {txtFechaF.Text}"; } - String FechaI; - if (txtFechaI.Text == "" || txtFechaI.Text == "__/__/____") { FechaI = "-1"; } else { FechaI = $" Fecha Inicial: {txtFechaI.Text}"; } - if (DtIVATrasladado.Rows.Count > 0 || DtIVAAcreditable.Rows.Count > 0) - { - System.IO.FileInfo Imagen; - String logouri = ""; - - if (UsuarioActual.CveEmpresa.Contiene(119)) - { - Imagen = new System.IO.FileInfo(String.Format("{0}/Logo.jpg", UsuarioActual.Empresa.Ruta)); - logouri = String.Format("{0}://{1}:{2}/Empresas/{3}/Logo.jpg", Request.Url.Scheme, Request.Url.Host, Request.Url.Port, UsuarioActual.CveEmpresa); - } - else - { - Imagen = new System.IO.FileInfo(String.Format("{0}/Logo.png", UsuarioActual.Empresa.Ruta)); - logouri = String.Format("{0}://{1}:{2}/Empresas/{3}/Logo.png", Request.Url.Scheme, Request.Url.Host, Request.Url.Port, UsuarioActual.CveEmpresa); - } - - List para = new List(); - para.Add(new CrystalParametro("Empresa", UsuarioActual.Empresa.Empresa)); - para.Add(new CrystalParametro("UsuarioImprimio", UsuarioActual.Nombre)); - para.Add(new CrystalParametro("Filtros", $"Filtros: {FechaI}{FechaF}")); - if (Imagen.Exists) - { - para.Add(new CrystalParametro("LogoPath", logouri)); - } - else - { - para.Add(new CrystalParametro("LogoPath", "")); - } - - DataTable Dt = TT.ActiveTabIndex == 0 ? DtIVATrasladado.Copy() : DtIVAAcreditable.Copy(); - string Formato = TT.ActiveTabIndex == 0 ? "RepIVA.rpt" : "RepIVAAcreditable.rpt"; - para.Add(new CrystalParametro("Excel", Formato)); - - ImprimirbytesPDF(ImprimirPDFCrystal(Server.MapPath($"~/Empresas/Grales/Formatos/{Formato}"),Dt,para, "Reporte de IVA", Opcion), "Reporte de IVA", Opcion); - } - else - { - Alert("No hay datos consultados", TipoMensaje.MsgAdvertencia); - } - } - - protected void BtnTipoCambio_Click(object sender, EventArgs e) - { - Consulta(); - RegistraScript(String.Format("$('#{0}').modal('hide');", "DivTipoCambio")); - } - - protected void RblTipoCambio_SelectedIndexChanged(object sender, EventArgs e) - { - TipoCambio = RblTipoCambio.SelectedValue.ToEntero(); - if (TipoCambio == 3) - { - LiEspecifico.Visible = true; - TCEspecifico = get_GlobalTipoCambio(DateTime.Now).ToString().ToDouble(); - TxtEspecifico.Text = TCEspecifico.ToString(); - } - else - { - LiEspecifico.Visible = false; - } - UpBodyTipoCambio.Update(); - } - - - protected string GenerarDIOT() - { - System.Text.StringBuilder Respuesta = new System.Text.StringBuilder(); - - - - return Respuesta.ToString(); - } - - protected void LnkAccionesDIOT_Click(object sender, EventArgs e) - { - - ClsContabilidad Objconta = new ClsContabilidad(); - StringBuilder SBDIOT = new StringBuilder(); - int Conciliado = DdlTipoMovto.SelectedValue.ToEntero(); - - if (Objconta.GetRepIVA(txtFechaI.Text.ToDate(), txtFechaF.Text.ToDate(), 2, UsuarioActual.CveUsuario, Conciliado, UsuarioActual.CveEmpresa, TipoCambio, TCEspecifico)) - { - - foreach (DataRow Drow in Objconta.DtResultados.FiltraParametros("CveCompra is null and CveProveedor > 0 and SubTotal >= 1 ").Rows) // and(IVA > 1 OR IEPS > 0) - { - SBDIOT.AppendLine( - Drow["TipoTercero"].ToString() + "|" + - Drow["TipoOperacion"].ToString() + "|" + - Drow["RFC"].ToString() +"|"+ - Drow["NumeroIDFiscal"].ToString() + "|" + - Drow["NombreExtranjero"].ToString() +"|"+ - Drow["PaisResidencia"].ToString() + "|" + - Drow["Nacionalidad"].ToString() +"|"+ - LV(Drow["valorActos1516"].ToString()) + "|"+ - LV(Drow["valorActos15"].ToString()) + "|" + - LV(Drow["ValorIvaNo1516"].ToString()) +"|"+ - - LV(Drow["valorActos1011"].ToString()) + "|" + - LV(Drow["valorActos10"].ToString()) + "|" + - LV(Drow["valorActosImp8"].ToString()) + "|" + - LV(Drow["ValorIvaNo10"].ToString()) + "|" + - LV(Drow["ValorIvaNo08"].ToString()) + "|" + - - LV(Drow["valorActosImp1516"].ToString()) + "|" + - LV(Drow["ValorIvaNoImp16"].ToString()) + "|" + - - LV(Drow["valorActosImp10"].ToString()) + "|" + - LV(Drow["ValorIvaNoImp10"].ToString()) + "|" + - - LV(Drow["IvaExentoImpo"].ToString()) + "|"+ - LV(Drow["IVACero"].ToString()) + "|" + - LV(Drow["IvaExento"].ToString()) + "|"+ - LV(Drow["IvaRetenido"].ToString()) + "|" + - LV(Drow["IvaDevoluciones"].ToString()) + "|"); - } - } - - Objconta.Dispose(); - - //MemoryStream ms = new MemoryStream(); - //TextWriter tw = new StreamWriter(ms, System.Text.Encoding.UTF8); - - //tw.Write(SBDIOT.ToString()); - - //tw.Flush(); - - //byte[] bytes = ms.ToArray(); - //ms.Close(); - - //Response.Clear(); - //Response.AppendHeader("Content-Length", text.Length.ToString()); - //Response.ContentType = "text/plain"; - //Response.AddHeader("content-disposition", $"attachment; filename=DIOT_{ txtFechaI.Text.ToDate().ToString("ddMMyyyy") }_{txtFechaI.Text.ToDate().ToString("ddMMyyyy") }.txt"); - //Response.BinaryWrite(bytes); - //Response.End(); - - Response.Clear(); - Response.ClearHeaders(); - - Response.AppendHeader("Content-Length", SBDIOT.ToString().Length.ToString()); - Response.ContentType = "text/plain"; - Response.AppendHeader("Content-Disposition", $"attachment;filename=DIOT_{ txtFechaI.Text.ToDate().ToString("ddMMyyyy") }_{txtFechaI.Text.ToDate().ToString("ddMMyyyy") }.txt"); - - Response.Write(SBDIOT.ToString()); - Response.End(); - } - - protected string LV(string Valor ) - { - return (Valor.ToDecimal() > 0) ? Valor.ToDecimal().ToString().FormatoNumero(0).Replace(",", string.Empty) : ""; - } +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; +using System.Web.UI.WebControls; +using Extensiones; +using System.Data; +using static Extensiones.ModExtensiones; +using Microsoft.Reporting.WebForms; +using System.Activities.Expressions; +using System.Text; +using System.IO; + +public partial class Contabilidad_RepIVA : ClsPaginas +{ + #region PROPIEDADES + + private DataTable DtIVATrasladado + { + get { return DtIVATrasladado = (DataTable)ViewState["DtIVATrasladado"]; } + set { ViewState["DtIVATrasladado"] = value; } + } + private DataTable DtIVAAcreditable + { + get { return DtIVAAcreditable = (DataTable)ViewState["DtIVAAcreditable"]; } + set { ViewState["DtIVAAcreditable"] = value; } + } + private double TCEspecifico + { + get { return TCEspecifico = (double)ViewState["TCEspecifico"]; } + set { ViewState["TCEspecifico"] = value; } + } + + private int TipoCambio + { + get { return TipoCambio = (int)ViewState["TipoCambio"]; } + set { ViewState["TipoCambio"] = value; } + } + + #endregion + protected void Page_Load(object sender, EventArgs e) + { + if (!IsPostBack) + { + InicializaValores(); + + } + } + + public void InicializaValores() + { + TipoCambio = 1; + TCEspecifico = -1; + txtFechaI.Text = $"01/{DateTime.Now.Month}/{DateTime.Now.Year}"; + txtFechaF.Text = DateTime.Now.ToShortDateString(); + + LnkAccionesDIOT.Visible = true; + + } + + public void Consulta() + { + if (TipoCambio == 3 && TxtEspecifico.Text != "") { TCEspecifico = TxtEspecifico.Text.ToDouble(); } else { TCEspecifico = -1; } + int Conciliado = DdlTipoMovto.SelectedValue.ToEntero(); + LblMsgAcreditable.Text = ""; // lbl de mensajes de negativos + + ClsContabilidad ObjCont = new ClsContabilidad(); + if (ObjCont.GetRepIVA(txtFechaI.Text.ToDate(), txtFechaF.Text.ToDate(), 1, UsuarioActual.CveUsuario, Conciliado, UsuarioActual.CveEmpresa, TipoCambio, TCEspecifico)) + { + GvT.DataSource = ObjCont.DtResultados; + DtIVATrasladado = ObjCont.DtResultados; + if (ObjCont.GetRepIVAAcumulado(txtFechaI.Text.ToDate(), txtFechaF.Text.ToDate(), Conciliado, 1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa)) + { + GvIEPSA.DataSource = ObjCont.DtResultados; + } + + if (ObjCont.GetRepIVAAcumulado(txtFechaI.Text.ToDate(), txtFechaF.Text.ToDate(), Conciliado, 2, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa)) + { + GvIVAA.DataSource = ObjCont.DtResultados; + } + + } + if (ObjCont.GetRepIVA(txtFechaI.Text.ToDate(), txtFechaF.Text.ToDate(), 2, UsuarioActual.CveUsuario, Conciliado, UsuarioActual.CveEmpresa, TipoCambio, TCEspecifico)) + { + GvA.DataSource = ObjCont.DtResultados; + DtIVAAcreditable = ObjCont.DtResultados; + if (DtIVAAcreditable.FiltraParametros("IVA < 0 OR IEPS < 0 ").Rows.Count > 0) + { + LblMsgAcreditable.Text = "La información presenta importes en negativo, estos no se incluirán en el archivo generado para DIOT"; + } + + + if (ObjCont.GetRepIVAAcumulado(txtFechaI.Text.ToDate(), txtFechaF.Text.ToDate(), Conciliado, 3, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa)) + { + GvIVA2.DataSource = ObjCont.DtResultados; + } + + + } + ObjCont.Dispose(); + GvT.DataBind(); + GvA.DataBind(); + GvIEPSA.DataBind(); + GvIVAA.DataBind(); + GvIVA2.DataBind(); + UpDatos.Update(); + } + + protected void BtnConsultar_Click(object sender, EventArgs e) + { + Consulta(); + } + + protected void GvIVATrasladado_RowDataBound(object sender, GridViewRowEventArgs e) + { + if (e.Row.RowType == DataControlRowType.DataRow) + { + if (e.Row.DBCampo("CveVenta").ToEntero() < 1) + { + e.Row.CssClass = "Totales"; + } + } + } + + protected void GvIVAAcreditable_RowDataBound(object sender, GridViewRowEventArgs e) + { + if (e.Row.RowType == DataControlRowType.DataRow) + { + if (e.Row.DBCampo("CveCompra").ToEntero() < 1) + { + e.Row.CssClass = "Totales"; + } + if (e.Row.DBCampo("PorcentajeIVA").ToDecimal() > 0 ) + { + Decimal SubTotal = (e.Row.DBCampo("SubTotal16").ToDecimal() > 0? e.Row.DBCampo("SubTotal16").ToDecimal() : (e.Row.DBCampo("SubTotal8").ToDecimal() > 0? e.Row.DBCampo("SubTotal8").ToDecimal() : (Decimal)0.0) ); + + Decimal dif = Math.Round(SubTotal * e.Row.DBCampo("PorcentajeIVA").ToDecimal(), 2) - Math.Round(e.Row.DBCampo("IVA").ToDecimal(), 2); + if (dif > 1) + { + e.Row.ForeColor = System.Drawing.Color.Red; + e.Row.Cells[0].Text = e.Row.Cells[0].Text + "Err"; + + e.Row.ToolTip = "Dif:" + dif.ToString() + "- Sub:" + e.Row.DBCampo("SubTotal")+ " - IVA:"+ e.Row.DBCampo("IVA"); + } + } + } + } + + protected void LnkPdf_Click(object sender, EventArgs e) + { + Imprimir("PDF"); + } + + protected void LnkExcel_Click(object sender, EventArgs e) + { + Imprimir("EXCEL"); + } + + public void Imprimir(String Opcion) + { + String FechaF; + if (txtFechaF.Text == "" || txtFechaF.Text == "__/__/____") { FechaF = "-1"; } else { FechaF = $" Fecha Final: {txtFechaF.Text}"; } + String FechaI; + if (txtFechaI.Text == "" || txtFechaI.Text == "__/__/____") { FechaI = "-1"; } else { FechaI = $" Fecha Inicial: {txtFechaI.Text}"; } + if (DtIVATrasladado.Rows.Count > 0 || DtIVAAcreditable.Rows.Count > 0) + { + System.IO.FileInfo Imagen; + String logouri = ""; + + if (UsuarioActual.CveEmpresa.Contiene(119)) + { + Imagen = new System.IO.FileInfo(String.Format("{0}/Logo.jpg", UsuarioActual.Empresa.Ruta)); + logouri = String.Format("{0}://{1}:{2}/Empresas/{3}/Logo.jpg", Request.Url.Scheme, Request.Url.Host, Request.Url.Port, UsuarioActual.CveEmpresa); + } + else + { + Imagen = new System.IO.FileInfo(String.Format("{0}/Logo.png", UsuarioActual.Empresa.Ruta)); + logouri = String.Format("{0}://{1}:{2}/Empresas/{3}/Logo.png", Request.Url.Scheme, Request.Url.Host, Request.Url.Port, UsuarioActual.CveEmpresa); + } + + List para = new List(); + para.Add(new CrystalParametro("Empresa", UsuarioActual.Empresa.Empresa)); + para.Add(new CrystalParametro("UsuarioImprimio", UsuarioActual.Nombre)); + para.Add(new CrystalParametro("Filtros", $"Filtros: {FechaI}{FechaF}")); + if (Imagen.Exists) + { + para.Add(new CrystalParametro("LogoPath", logouri)); + } + else + { + para.Add(new CrystalParametro("LogoPath", "")); + } + + DataTable Dt = TT.ActiveTabIndex == 0 ? DtIVATrasladado.Copy() : DtIVAAcreditable.Copy(); + string Formato = TT.ActiveTabIndex == 0 ? "RepIVA.rpt" : "RepIVAAcreditable.rpt"; + para.Add(new CrystalParametro("Excel", Formato)); + + ImprimirbytesPDF(ImprimirPDFCrystal(Server.MapPath($"~/Empresas/Grales/Formatos/{Formato}"),Dt,para, "Reporte de IVA", Opcion), "Reporte de IVA", Opcion); + } + else + { + Alert("No hay datos consultados", TipoMensaje.MsgAdvertencia); + } + } + + protected void BtnTipoCambio_Click(object sender, EventArgs e) + { + Consulta(); + RegistraScript(String.Format("$('#{0}').modal('hide');", "DivTipoCambio")); + } + + protected void RblTipoCambio_SelectedIndexChanged(object sender, EventArgs e) + { + TipoCambio = RblTipoCambio.SelectedValue.ToEntero(); + if (TipoCambio == 3) + { + LiEspecifico.Visible = true; + TCEspecifico = get_GlobalTipoCambio(DateTime.Now).ToString().ToDouble(); + TxtEspecifico.Text = TCEspecifico.ToString(); + } + else + { + LiEspecifico.Visible = false; + } + UpBodyTipoCambio.Update(); + } + + + protected string GenerarDIOT() + { + System.Text.StringBuilder Respuesta = new System.Text.StringBuilder(); + + + + return Respuesta.ToString(); + } + + protected void LnkAccionesDIOT_Click(object sender, EventArgs e) + { + + ClsContabilidad Objconta = new ClsContabilidad(); + StringBuilder SBDIOT = new StringBuilder(); + int Conciliado = DdlTipoMovto.SelectedValue.ToEntero(); + + if (Objconta.GetRepIVA(txtFechaI.Text.ToDate(), txtFechaF.Text.ToDate(), 2, UsuarioActual.CveUsuario, Conciliado, UsuarioActual.CveEmpresa, TipoCambio, TCEspecifico)) + { + + foreach (DataRow Drow in Objconta.DtResultados.FiltraParametros("CveCompra is null and CveProveedor > 0 and SubTotal >= 1 ").Rows) // and(IVA > 1 OR IEPS > 0) + { + SBDIOT.AppendLine( + Drow["TipoTercero"].ToString() + "|" + + Drow["TipoOperacion"].ToString() + "|" + + Drow["RFC"].ToString() +"|"+ + Drow["NumeroIDFiscal"].ToString() + "|" + + Drow["NombreExtranjero"].ToString() +"|"+ + Drow["PaisResidencia"].ToString() + "|" + + Drow["Nacionalidad"].ToString() +"|"+ + LV(Drow["valorActos1516"].ToString()) + "|"+ + LV(Drow["valorActos15"].ToString()) + "|" + + LV(Drow["ValorIvaNo1516"].ToString()) +"|"+ + + LV(Drow["valorActos1011"].ToString()) + "|" + + LV(Drow["valorActos10"].ToString()) + "|" + + LV(Drow["valorActosImp8"].ToString()) + "|" + + LV(Drow["ValorIvaNo10"].ToString()) + "|" + + LV(Drow["ValorIvaNo08"].ToString()) + "|" + + + LV(Drow["valorActosImp1516"].ToString()) + "|" + + LV(Drow["ValorIvaNoImp16"].ToString()) + "|" + + + LV(Drow["valorActosImp10"].ToString()) + "|" + + LV(Drow["ValorIvaNoImp10"].ToString()) + "|" + + + LV(Drow["IvaExentoImpo"].ToString()) + "|"+ + LV(Drow["IVACero"].ToString()) + "|" + + LV(Drow["IvaExento"].ToString()) + "|"+ + LV(Drow["IvaRetenido"].ToString()) + "|" + + LV(Drow["IvaDevoluciones"].ToString()) + "|"); + } + } + + Objconta.Dispose(); + + //MemoryStream ms = new MemoryStream(); + //TextWriter tw = new StreamWriter(ms, System.Text.Encoding.UTF8); + + //tw.Write(SBDIOT.ToString()); + + //tw.Flush(); + + //byte[] bytes = ms.ToArray(); + //ms.Close(); + + //Response.Clear(); + //Response.AppendHeader("Content-Length", text.Length.ToString()); + //Response.ContentType = "text/plain"; + //Response.AddHeader("content-disposition", $"attachment; filename=DIOT_{ txtFechaI.Text.ToDate().ToString("ddMMyyyy") }_{txtFechaI.Text.ToDate().ToString("ddMMyyyy") }.txt"); + //Response.BinaryWrite(bytes); + //Response.End(); + + Response.Clear(); + Response.ClearHeaders(); + + Response.AppendHeader("Content-Length", SBDIOT.ToString().Length.ToString()); + Response.ContentType = "text/plain"; + Response.AppendHeader("Content-Disposition", $"attachment;filename=DIOT_{ txtFechaI.Text.ToDate().ToString("ddMMyyyy") }_{txtFechaI.Text.ToDate().ToString("ddMMyyyy") }.txt"); + + Response.Write(SBDIOT.ToString()); + Response.End(); + } + + protected string LV(string Valor ) + { + return (Valor.ToDecimal() > 0) ? Valor.ToDecimal().ToString().FormatoNumero(0).Replace(",", string.Empty) : ""; + } } \ No newline at end of file diff --git a/Empresas/Grales/Formatos/RepClientesCxC.rpt b/Empresas/Grales/Formatos/RepClientesCxC.rpt index 85aa597c69364c21b9fd2e6557043933b0a09f14..3e2e401dded312041b9b8db870620bd5c632bd52 100644 GIT binary patch delta 23732 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%0A7w~FBe09Az`Il7A^m=s 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 W3yt>g6r-8)c!^2Xcyx