This commit is contained in:
2025-06-06 09:17:40 -07:00
85 changed files with 28836 additions and 10053 deletions

View File

@@ -8,6 +8,7 @@ Imports System.IO
Imports System.Net
Imports System.Net.Http
Imports Extensiones
Imports Microsoft.JScript
Imports Microsoft.Reporting.WebForms
Imports Newtonsoft.Json
Imports Newtonsoft.Json.Linq
@@ -4107,7 +4108,7 @@ Partial Class Clientes
Private Sub GenerarPDFCrystal(Optional Formato As String = "PDF")
Dim Archivo As New System.IO.FileInfo(String.Format("{0}Formatos/RepClientesCxC.rpt", UsuarioActual.Empresa.Ruta))
Dim Archivo As New System.IO.FileInfo(String.Format("{0}Formatos/RepClientesCxC.mrt", UsuarioActual.Empresa.Ruta))
Dim RutaReporteGrales As New System.IO.FileInfo($"{DirectorioEmpresas}Grales\Formatos\RepClientesCxC.rpt")
Dim Imagen As New System.IO.FileInfo($"{UsuarioActual.Empresa.Ruta}/Logo.png")
@@ -4134,8 +4135,8 @@ Partial Class Clientes
Dim TipoDocto As String = If(DdlTipoDocto.GetSelectedValuesM = "", "-1", DdlTipoDocto.GetSelectedValuesM)
Dim TipoDocto2 As String = If(DdlTipoDocto.GetSelectedValuesM = "", "-1", DdlTipoDocto.GetSelectedValuesM(True))
Dim FechaVencimientoI As DateTime = If(TxtFechaVICxP.Text = "", MinFecha, TxtFechaVICxP.Text.ToDate())
Dim FechaVencimientoF As DateTime = If(TxtFechaVFCxP.Text = "", MaxFecha, TxtFechaVFCxP.Text.ToDate())
Dim FechaVencimientoF As DateTime = If(TxtFechaVFCxP.Text = "", MaxFecha, TxtFechaVFCxP.Text.ToDate())
Dim ObjMovtos As New ClsMovimientos()
If ObjMovtos.GetCxCClienteDetalle(CveCliente, FI, FF, -1, -1, UsuarioActual.CveEmpresa, DdlSucursalCliente.SelectedValue.ToEntero(), FechaVencimientoI:=FechaVencimientoI, FechaVencimientoF:=FechaVencimientoF) Then
DtCxCFact = If(DdlTipoCuentasCxC.SelectedValue = "-1", ObjMovtos.DtResultados.FiltraParametros("", "TipoDocto").Copy, ObjMovtos.DtResultados.FiltraParametros("Tipo = 'Act'", "TipoDocto"))
@@ -4332,23 +4333,46 @@ Partial Class Clientes
Catch ex As Exception
OnError("Ocurrió error al mandar MAIL de Orden de Compra", ex)
End Try
Else
If Archivo.Exists Then
Dim ArchivoSti As New System.IO.FileInfo(String.Format("{0}Formatos/RepClientesCxC.mrt", UsuarioActual.Empresa.Ruta))
If ArchivoSti.Exists Then
Dim listass As New List(Of ReportParameter)
For Each item As CrystalParametro In lista
listass.Add(New ReportParameter(item.Nombre, item.Valor.ToString()))
Next
ImprimirPDFStimul($"{UsuarioActual.Empresa.Ruta}Formatos/RepClientesCxC.mrt", DtCxCFact2.FiltraParametros("", "CveMoneda,Fecha"), listass, "Estado de cuenta", Formato)
Else
ImprimirbytesPDF(ImprimirPDFCrystal($"{UsuarioActual.Empresa.Ruta}Formatos/RepClientesCxC.rpt", DtCxCFact2.FiltraParametros("", "CveMoneda,Fecha"), lista, "Estado de cuenta", Formato), "Estado de cuenta", Formato)
End If
Else
ImprimirbytesPDF(ImprimirPDFCrystal(RutaReporteGrales.FullName, DtCxCFact2.FiltraParametros("", "CveMoneda,Fecha"), lista, "Estado de cuenta", Formato), "Estado de cuenta", Formato)
Else
Dim ParametrosStimul As New List(Of ReportParameter)
For Each item As CrystalParametro In lista
ParametrosStimul.Add(New ReportParameter(item.Nombre, item.Valor.ToString()))
Next
If Archivo.Exists Then
ImprimirPDFStimul(Archivo.FullName, DtCxCFact2.FiltraParametros("", "CveMoneda,Fecha"), ParametrosStimul, "Estado de cuenta", Formato)
Else
Archivo = New System.IO.FileInfo(String.Format("{0}Grales/Formatos/RepClientesCxC.mrt", DirectorioEmpresas))
If Archivo.Exists Then
ImprimirPDFStimul(Archivo.FullName, DtCxCFact2.FiltraParametros("", "CveMoneda,Fecha"), ParametrosStimul, "Estado de cuenta", Formato)
Else
Archivo = New System.IO.FileInfo(String.Format("{0}Formatos/RepClientesCxC.rpt", UsuarioActual.Empresa.Ruta))
If Archivo.Exists Then
ImprimirbytesPDF(ImprimirPDFCrystal(Archivo.FullName, DtCxCFact2.FiltraParametros("", "CveMoneda,Fecha"), lista, "Estado de cuenta", Formato), "Estado de cuenta", Formato)
Else
ImprimirbytesPDF(ImprimirPDFCrystal(String.Format("{0}Grales/Formatos/RepClientesCxC.rpt", DirectorioEmpresas), DtCxCFact2.FiltraParametros("", "CveMoneda,Fecha"), lista, "Estado de cuenta", Formato), "Estado de cuenta", Formato)
End If
End If
End If
'If Archivo.Exists Then
' Dim ArchivoSti As New System.IO.FileInfo(String.Format("{0}Formatos/RepClientesCxC.mrt", UsuarioActual.Empresa.Ruta))
' If ArchivoSti.Exists Then
' Dim listass As New List(Of ReportParameter)
' For Each item As CrystalParametro In lista
' listass.Add(New ReportParameter(item.Nombre, item.Valor.ToString()))
' Next
' ImprimirPDFStimul($"{UsuarioActual.Empresa.Ruta}Formatos/RepClientesCxC.mrt", DtCxCFact2.FiltraParametros("", "CveMoneda,Fecha"), listass, "Estado de cuenta", Formato)
' Else
' ImprimirbytesPDF(ImprimirPDFCrystal($"{UsuarioActual.Empresa.Ruta}Formatos/RepClientesCxC.rpt", DtCxCFact2.FiltraParametros("", "CveMoneda,Fecha"), lista, "Estado de cuenta", Formato), "Estado de cuenta", Formato)
' End If
'Else
' ImprimirbytesPDF(ImprimirPDFCrystal(RutaReporteGrales.FullName, DtCxCFact2.FiltraParametros("", "CveMoneda,Fecha"), lista, "Estado de cuenta", Formato), "Estado de cuenta", Formato)
'End If
End If
Else
Dim lista As New List(Of CrystalParametro)
@@ -4384,22 +4408,48 @@ Partial Class Clientes
drr("Saldo") = 0
drr("SaldoAnticipo") = 0
drr("CveMoneda") = 1
DtCxCFact2.Rows.Add(drr)
DtCxCFact2.Rows.Add(drr)
Dim ParametrosStimul As New List(Of ReportParameter)
For Each item As CrystalParametro In lista
ParametrosStimul.Add(New ReportParameter(item.Nombre, item.Valor.ToString()))
Next
If Archivo.Exists Then
Dim ArchivoSti As New System.IO.FileInfo(String.Format("{0}Formatos/RepClientesCxC.mrt", UsuarioActual.Empresa.Ruta))
If ArchivoSti.Exists Then
Dim listass As New List(Of ReportParameter)
For Each item As CrystalParametro In lista
listass.Add(New ReportParameter(item.Nombre, item.Valor.ToString()))
Next
ImprimirPDFStimul($"{UsuarioActual.Empresa.Ruta}Formatos/RepClientesCxC.mrt", DtCxCFact2.FiltraParametros("", "CveMoneda,Fecha"), listass, "Estado de cuenta", Formato)
Else
ImprimirbytesPDF(ImprimirPDFCrystal($"{UsuarioActual.Empresa.Ruta}Formatos/RepClientesCxC.rpt", DtCxCFact2.FiltraParametros("", "CveMoneda,Fecha"), lista, "Estado de cuenta", Formato), "Estado de cuenta", Formato)
End If
Else
ImprimirbytesPDF(ImprimirPDFCrystal(RutaReporteGrales.FullName, DtCxCFact2.FiltraParametros("", "CveMoneda,Fecha"), lista, "Estado de cuenta", Formato), "Estado de cuenta", Formato)
If Archivo.Exists Then
ImprimirPDFStimul(Archivo.FullName, DtCxCFact2.FiltraParametros("", "CveMoneda,Fecha"), ParametrosStimul, "Estado de cuenta", Formato)
Else
Archivo = New System.IO.FileInfo(String.Format("{0}Grales/Formatos/RepClientesCxC.mrt", DirectorioEmpresas))
If Archivo.Exists Then
ImprimirPDFStimul(Archivo.FullName, DtCxCFact2.FiltraParametros("", "CveMoneda,Fecha"), ParametrosStimul, "Estado de cuenta", Formato)
Else
Archivo = New System.IO.FileInfo(String.Format("{0}Formatos/RepClientesCxC.rpt", UsuarioActual.Empresa.Ruta))
If Archivo.Exists Then
ImprimirbytesPDF(ImprimirPDFCrystal(Archivo.FullName, DtCxCFact2.FiltraParametros("", "CveMoneda,Fecha"), lista, "Estado de cuenta", Formato), "Estado de cuenta", Formato)
Else
ImprimirbytesPDF(ImprimirPDFCrystal(String.Format("{0}Grales/Formatos/RepClientesCxC.rpt", DirectorioEmpresas), DtCxCFact2.FiltraParametros("", "CveMoneda,Fecha"), lista, "Estado de cuenta", Formato), "Estado de cuenta", Formato)
End If
End If
End If
'If Archivo.Exists Then
' Dim ArchivoSti As New System.IO.FileInfo(String.Format("{0}Formatos/RepClientesCxC.mrt", UsuarioActual.Empresa.Ruta))
' If ArchivoSti.Exists Then
' Dim listass As New List(Of ReportParameter)
' For Each item As CrystalParametro In lista
' listass.Add(New ReportParameter(item.Nombre, item.Valor.ToString()))
' Next
' ImprimirPDFStimul($"{UsuarioActual.Empresa.Ruta}Formatos/RepClientesCxC.mrt", DtCxCFact2.FiltraParametros("", "CveMoneda,Fecha"), listass, "Estado de cuenta", Formato)
' Else
' ImprimirbytesPDF(ImprimirPDFCrystal($"{UsuarioActual.Empresa.Ruta}Formatos/RepClientesCxC.rpt", DtCxCFact2.FiltraParametros("", "CveMoneda,Fecha"), lista, "Estado de cuenta", Formato), "Estado de cuenta", Formato)
' End If
'Else
' ImprimirbytesPDF(ImprimirPDFCrystal(RutaReporteGrales.FullName, DtCxCFact2.FiltraParametros("", "CveMoneda,Fecha"), lista, "Estado de cuenta", Formato), "Estado de cuenta", Formato)
'End If
End If
End Sub
Private Sub MandaCorreoEstadoCuenta(UsuarioActual As Usuario, CveEmpresa As Integer, CveCliente As Integer, File As Byte(), Para As String, Asunto As String, Body As String, Optional GuardarBitacora As Boolean = False)
@@ -10898,19 +10948,24 @@ Partial Class Clientes
Dim PorcentajePagoDevDin As Decimal = (gvr.DataKey("Saldo").ToDecimal / gvr.DataKey("Total").ToDecimal).RoundSQL(6)
Dim tCveConcepto As Integer
ImporteAplicar = gvr.DataKey("Saldo").ToDecimal
Dim CveVentaAmortizacion As Integer = -1
If gvr.DataKey("Tipo") = "IxC" Then
tCveConcepto = 92 : tTipoMovto = False
ElseIf gvr.DataKey("Tipo").Contiene("Dev", "NC") Then
tCveConcepto = 12 : ImporteAplicar = -ImporteAplicar : tTipoMovto = True
CveVentaAmortizacion = gvr.DataKey("CveVenta").ToEntero
tCveConcepto = 91 : ImporteAplicar = ImporteAplicar : tTipoMovto = False
ElseIf gvr.DataKey("Tipo").Contiene("Ant") Then
tCveConcepto = 11 : ImporteAplicar = ImporteAplicar : tTipoMovto = False
End If
ImporteAplicarMN = (ImporteAplicar * If(tCveMoneda = 1, 1, tTipoCambio)).RoundSQL()
If Not ObjMov.AddPrePolizasDetalle(CvePrePoliza, tTipoMovto, ImporteAplicar, ImporteAplicarMN, tCveConcepto, ReferenciaAplicar, ConceptoAplicar, CveIE:=gvr.DataKey("CveIE").ToEntero, CveVenta:=gvr.DataKey("CveVenta").ToEntero, CveCliente:=CveCliente, ImporteME:=ImporteAplicarME) Then
If Not ObjMov.AddPrePolizasDetalle(CvePrePoliza, tTipoMovto, ImporteAplicar, ImporteAplicarMN, tCveConcepto, ReferenciaAplicar, ConceptoAplicar, CveIE:=gvr.DataKey("CveIE").ToEntero, CveVenta:=gvr.DataKey("CveVenta").ToEntero, CveCliente:=CveCliente, ImporteME:=ImporteAplicarME, CveVentaAmortizacion:=CveVentaAmortizacion) Then
MsgError = "Ocurrió un error al registrar el asiento de pago de devolución"
Exit For
End If
'IMPUESTOS
If gvr.DataKey("IVA").ToDecimal > 0 Then
tImporte = -(gvr.DataKey("IVA").ToDecimal * PorcentajePagoDevDin).RoundSQL
@@ -10923,6 +10978,7 @@ Partial Class Clientes
Exit For
End If
End If
If gvr.DataKey("IEPS").ToDecimal > 0 Then
tImporte = (gvr.DataKey("IEPS").ToDecimal * PorcentajePagoDevDin).RoundSQL
If Not ObjMov.AddPrePolizasDetalle(CvePrePoliza, True, tImporte, tImporte, 39, ReferenciaAplicar, ConceptoAplicar, CveIE:=CveIE, CveVenta:=gvr.DataKey("CveVenta").ToEntero, CveCliente:=CveCliente, ImporteME:=ImporteAplicarME) Then
@@ -10930,6 +10986,7 @@ Partial Class Clientes
Exit For
End If
End If
If gvr.DataKey("RetIVA").ToDecimal > 0 Then
tImporte = (gvr.DataKey("RetIVA").ToDecimal * PorcentajePagoDevDin).RoundSQL
If Not ObjMov.AddPrePolizasDetalle(CvePrePoliza, False, tImporte, tImporte, 62, ReferenciaAplicar, ConceptoAplicar, CveIE:=CveIE, CveVenta:=gvr.DataKey("CveVenta").ToEntero, CveCliente:=CveCliente, ImporteME:=ImporteAplicarME) Then
@@ -10937,6 +10994,7 @@ Partial Class Clientes
Exit For
End If
End If
If gvr.DataKey("RetISR").ToDecimal > 0 Then
tImporte = (gvr.DataKey("RetISR").ToDecimal * PorcentajePagoDevDin).RoundSQL
If Not ObjMov.AddPrePolizasDetalle(CvePrePoliza, False, tImporte, tImporte, 63, ReferenciaAplicar, ConceptoAplicar, CveIE:=CveIE, CveVenta:=gvr.DataKey("CveVenta").ToEntero, CveCliente:=CveCliente, ImporteME:=ImporteAplicarME) Then
@@ -10944,6 +11002,7 @@ Partial Class Clientes
Exit For
End If
End If
End If
Next

View File

@@ -2390,8 +2390,16 @@ Partial Class Ventas_PVCobranza
Next
End If
Dim CveVenta As Integer = gvr.DataKey("CveVenta").ToEntero()
Dim CveIE As Integer = gvr.DataKey("CveIE").ToEntero()
Dim CveVenta As Integer = -1
Dim CveIE As Integer = -1
If gvr.DataKey("Tipo").Contiene("NC", "Ant") Then
CveVenta = gvr.DataKey("CveVenta").ToEntero()
End If
If gvr.DataKey("Tipo").Contiene("IxC") Then
CveIE = gvr.DataKey("CveIE").ToEntero()
End If
Dim ObjVta As New ClsVentas
If ObjVta.AddAutorizacionLimite(UsuarioActual.CveEmpresa, CveCliente, CveVendedor, Saldo, CveEstatus:=0, CveUsuario:=UsuarioActual.CveUsuario, TipoAutorizacion:=1, TipoDocumento:="Ant", DiasVencidos:=1, CveVenta:=CveVenta, CveIE:=CveIE) Then

View File

@@ -420,11 +420,15 @@
<li>
<asp:LinkButton ID="LnkEnvioDeCorreoFactura" runat="server" CausesValidation="False" OnClick="LnkEnvioDeCorreoFactura_Click" Visible="false"> <i class="fa fa-envelope-o" aria-hidden="true"></i> Envio De Correo</asp:LinkButton>
</li>
<li>
<asp:LinkButton ID="LnkExportarExcelCot" runat="server" CausesValidation="False" OnClick="LnkExportarExcelCot_Click" Visible="false"> <i class="fa fa-file-excel-o" aria-hidden="true"></i> Exportar a Excel</asp:LinkButton>
</li>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="LnkImprimir" EventName="Click" />
<asp:PostBackTrigger ControlID="LnkImprimirFormatoCicovisa" />
<asp:PostBackTrigger ControlID="LnkImprimirFormatoTelcel" />
<asp:PostBackTrigger ControlID="LnkExportarExcelCot" />
</Triggers>
</asp:UpdatePanel>
</asp:Content>
@@ -1284,7 +1288,7 @@
</table>
<asp:GridView ID="GvPS" GridLines="None" runat="server" data-tableheader="#tbps" ShowHeader="true" AutoGenerateColumns="False"
DataKeyNames="Consec,CvePS,Total, IEPS, CveClasificacion,Clasificacion,CveUM,UM,CveProyecto,CveSubProyecto,TipoDocto,PS,Obs,Cantidad,PU,Descuento,IVA,ImporteIVA,CantidadInventario,CantidadFacturadaRem,CveVentaDetalle,CvePromocionDetalle,CvePrecioLista"
DataKeyNames="Consec,CvePS,Total, IEPS, CveClasificacion,Clasificacion,CveUM,UM,CveProyecto,CveSubProyecto,TipoDocto,PS,Obs,Cantidad,PU,Descuento,IVA,ImporteIVA,CantidadInventario,CantidadFacturadaRem,CveVentaDetalle,CvePromocionDetalle,CvePrecioLista,Codigo,NumeroParte,TotalImporte"
CssClass="table table-striped table-advance table-hover Widthall Sortable mysmallbtn ScrollAD" Style="min-width: 980px;">
<Columns>
<%--0--%>

View File

@@ -14,6 +14,7 @@ Imports Extensiones
Imports Microsoft.Reporting.WebForms
Imports Modelos
Imports Newtonsoft.Json.Linq
Imports GemBox.Spreadsheet
Partial Class Ventas
Inherits ClsPaginas
@@ -2345,6 +2346,15 @@ Partial Class Ventas
End Set
End Property
Private Property TieneFacturasCanceladas As Integer
Get
Return IfNull(ViewState("TieneFacturasCanceladas"), "0", ViewState("TieneFacturasCanceladas")).ToString().ToEntero()
End Get
Set(value As Integer)
ViewState("TieneFacturasCanceladas") = value
End Set
End Property
Private Property TieneBloqueoPorCreditoVencimiento As Integer
Get
Return IfNull(ViewState("TieneBloqueoPorCreditoVencimiento"), "0", ViewState("TieneBloqueoPorCreditoVencimiento")).ToString().ToEntero()
@@ -4982,6 +4992,11 @@ Partial Class Ventas
If DbRowVenta("TipoDocto").ToString() = "Egs" Then
If ObjVentas.GetVentasRelacionadas(CveVenta, UsuarioActual.CveEmpresa, TipoRelacion:=2) Then
DtVentasRelacionadas = ObjVentas.DtResultados.FiltraParametros("TipoDocto IN ('Ing','Ant','Egs','Dev')")
If DtAntRelacionados IsNot Nothing AndAlso DtAntRelacionados.FiltraParametros("TipoEstatus = 5").Rows.Count > 0 Then
TieneFacturasCanceladas = 1
End If
End If
End If
@@ -6386,6 +6401,18 @@ Partial Class Ventas
Next
End If
Dim PuedeVerCosto As Boolean = UsuarioActual.TienePermisoProceso(385)
If PuedeVerCosto AndAlso DbRowVenta("TipoDocto").ToString() = "Cot" Then
GvPS.Columns(10).Visible = True
thCosto.Visible = True
thCosto2.Visible = True
LnkExportarExcelCot.Visible = True
UpnTools.Update()
UpPS.Update()
End If
End If
End Using
End If
@@ -7799,7 +7826,7 @@ Partial Class Ventas
Dim ValorAutorizacion As String = UsuarioActual.Empresa.Funcionalidad(595)
'solo para bdh, que se generen NC
If UsuarioActual.Empresa.Funcionalidad(531) = "1" Then DdlSolCreditoTipoDocto.Items.Add(New ListItem("Nota de crédito", "Egs"))
If UsuarioActual.Empresa.Funcionalidad(531) = "1" AndAlso DdlSolCreditoTipoDocto.Items.FindByValue("Egs") Is Nothing Then DdlSolCreditoTipoDocto.Items.Add(New ListItem("Nota de crédito", "Egs"))
Me.Bloqueada = False
'OBLIGAR PAGO DE CONTADO SI EL CLIENTE NO PERMITE CREDITO
If Not EsFilial AndAlso (Not UsuarioActual.Empresa.Funcionalidad(702).Contiene("1")) AndAlso Me.PermiteCredito = False AndAlso ((DdlTipoComprobante.SelectedValue.Contiene("Ing", "Ant", "Rem", "Cot") AndAlso CveVenta < 1) OrElse (DdlTipoComprobante.SelectedValue.Contiene("Ing", "Ant", "Rem", "Cot", "PA") AndAlso EsCreaApartirDe) OrElse (DdlTipoComprobante.SelectedValue.Contiene("Cot") AndAlso CveVenta > 0)) Then
@@ -8390,15 +8417,19 @@ Partial Class Ventas
If Not CBool(ObjClie.DtResultados.FiltroPrimeroValor("InformacionCompleta")) Then
Dim OpcionMsg As String = String.Format("El Cliente se encuentra bloqueado por la siguiente razón: <br> <br> {0}", "Información incompleta")
Alert(OpcionMsg, TipoMensaje.MsgAdvertencia)
BtnEmitirImprimir.Visible = False
BtnsFacturar.Visible = False
BtnGenerarRemision.Visible = False
TieneBloqueoPorCreditoVencimiento = 1
End If
End If
ObjClie.Dispose()
If TieneBloqueoPorCreditoVencimiento = 1 Then
BtnEmitirImprimir.Visible = False
BtnsFacturar.Visible = False
BtnGenerarRemision.Visible = False
UpFacturar.Update()
End If
End If
@@ -9143,10 +9174,10 @@ Partial Class Ventas
End If
End If
If CveVenta <= 0 Then
Dim PuedeVerCosto As Boolean = UsuarioActual.TienePermisoProceso(201) OrElse UsuarioActual.TienePermisoProceso(385)
Dim PuedeVerCosto As Boolean = UsuarioActual.TienePermisoProceso(385)
If UsuarioActual.Empresa.Funcionalidad(382) = "1" AndAlso PuedeVerCosto Then
If UsuarioActual.Empresa.Funcionalidad(382) = "1" AndAlso PuedeVerCosto Then
If CveVenta <= 0 Then
If e.Row.DBCampo("PU").ToDecimal() > 0 Then
e.Row.FCLabel("LblCosto").Text = String.Format("{0:N2}", e.Row.DBCampo("Costo").ToDecimal())
e.Row.FCLabel("LblCostoPorcentaje").Text = String.Format("{0:N2} %", ((e.Row.DBCampo("PU").ToDecimal() - e.Row.DBCampo("Costo").ToDecimal()) / e.Row.DBCampo("PU").ToDecimal()) * 100D)
@@ -9154,6 +9185,14 @@ Partial Class Ventas
e.Row.FCLabel("LblCosto").Text = ""
e.Row.FCLabel("LblCostoPorcentaje").Text = ""
End If
ElseIf CveVenta > 0 Then
If e.Row.DBCampo("PU").ToDecimal() > 0 Then
e.Row.FCLabel("LblCosto").Text = String.Format("{0:N2}", e.Row.DBCampo("UltimoCosto").ToDecimal())
e.Row.FCLabel("LblCostoPorcentaje").Text = String.Format("{0:N2} %", ((e.Row.DBCampo("PU").ToDecimal() - e.Row.DBCampo("UltimoCosto").ToDecimal()) / e.Row.DBCampo("PU").ToDecimal()) * 100D)
Else
e.Row.FCLabel("LblCosto").Text = ""
e.Row.FCLabel("LblCostoPorcentaje").Text = ""
End If
End If
End If
@@ -13742,7 +13781,13 @@ Partial Class Ventas
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
If Me.CveVenta = 4381091 Then
Timbre.Comprobante.Fecha = Obj.Fecha
Else
Timbre.Comprobante.Fecha = Obj.FechaCP
End If
Timbre.Comprobante.CondicionesdePago = If(UsuarioActual.CveEmpresa.Contiene(15, 76, 198), "No Aplica", Obj.FormaPago)
Timbre.Comprobante.MetodoPago = GlobalDTVtaMetodoPago.FiltroPrimeroValor("ClaveMetodoPagoSAT", $"CveMetodoPago = {Obj.CveMetodoPago}") ' Obj.ClaveMetodoPagoSAT
@@ -18406,6 +18451,11 @@ Partial Class Ventas
Exit Sub
End If
If TieneFacturasCanceladas = 1 Then
Alert("La factura relacionada esta cancelada", TipoMensaje.MsgAdvertencia)
Exit Sub
End If
If UsuarioActual.Empresa.TipoFacturacion = "CFDi" Then
If UsuarioActual.Empresa.FacturaProduccion Then
@@ -18940,7 +18990,7 @@ Partial Class Ventas
If UsuarioActual.CveEmpresa = 189 Then
AgregarPSAutomaticamente = False
Dim PuedeVerCosto As Boolean = UsuarioActual.TienePermisoProceso(201) OrElse UsuarioActual.TienePermisoProceso(385)
Dim PuedeVerCosto As Boolean = UsuarioActual.TienePermisoProceso(385)
Dim Costo As Decimal = 0
@@ -22597,9 +22647,9 @@ Partial Class Ventas
' HlAgregarExcel.Visible = True
End If
Dim PuedeVerCosto As Boolean = UsuarioActual.TienePermisoProceso(201) OrElse UsuarioActual.TienePermisoProceso(385)
Dim PuedeVerCosto As Boolean = UsuarioActual.TienePermisoProceso(385)
If (CveVenta <= 0 OrElse EsCreaApartirDe) AndAlso UsuarioActual.Empresa.Funcionalidad(382) = "1" AndAlso DdlTipoComprobante.SelectedValue = "Cot" AndAlso PuedeVerCosto Then
If UsuarioActual.Empresa.Funcionalidad(382) = "1" AndAlso DdlTipoComprobante.SelectedValue = "Cot" AndAlso PuedeVerCosto Then
GvPS.Columns(10).Visible = True
thCosto.Visible = True
thCosto2.Visible = True
@@ -38491,6 +38541,22 @@ Partial Class Ventas
Exit Sub
End If
'SI ESTA BLOQUEADO Y NO ES POR INFO INCOMPLETA, DEJAR MANDAR SOLICITUD DE AUTORIZACION
If UsuarioActual.Empresa.Funcionalidad(531) = "1" Then
Dim InformacionCompleta As Boolean = False
Dim ObjClie As New ClsClientes
If ObjClie.GetClienteInformacionCompleta(CveCliente, UsuarioActual.CveEmpresa) Then
InformacionCompleta = CBool(ObjClie.DtResultados.FiltroPrimeroValor("InformacionCompleta"))
End If
ObjClie.Dispose()
If InformacionCompleta AndAlso TieneBloqueoPorCreditoVencimiento = 1 Then
If DdlSolCreditoTipoDocto.Items.FindByValue("Ing") Is Nothing Then
DdlSolCreditoTipoDocto.Items.Insert(0, New ListItem("Ingreso", "Ing"))
End If
End If
End If
TxtImporteSolicitud.Text = ""
DdlSolCreditoTipoDocto_SelectedIndexChanged(Nothing, EventArgs.Empty)
RegistraScript("$('#DivModalSolicitarCredito').modal('show')")
@@ -41735,5 +41801,71 @@ Partial Class Ventas
End Try
End Sub
Protected Sub LnkExportarExcelCot_Click(sender As Object, e As EventArgs)
Dim DtExcel As DataTable = (From row As GridViewRow In GvPS.Rows.Cast(Of GridViewRow)
Where row.RowType = DataControlRowType.DataRow
Select New With
{
.Codigo = row.DataKey("Codigo").Trim(),
.NumeroParte = row.DataKey("NumeroParte").Trim(),
.Descripcion = row.DataKey("PS").Trim(),
.Medida = row.DataKey("UM").Trim(),
.Cantidad = row.FCLiteral("LtlCantidad").Text.Trim().ToDecimal(),
.Precio = row.FCLiteral("LtlPU").Text.Trim().ToDecimal(),
.SubImporte = row.DataKey("TotalImporte").ToDecimal(),
.MargenUtilidad = row.FCLabel("LblCostoPorcentaje").Text.Replace("%", "").Replace(" ", "").Trim().ToDecimal(),
.UltimoCosto = row.FCLabel("LblCosto").Text.Trim().ToDecimal()
}).QueryToDataTable(True)
If DtExcel.Rows.Count < 1 Then
Alert("No hay resultados en la busqueda.", TipoMensaje.MsgAdvertencia)
Exit Sub
End If
Dim folio = LblSerie.Text + "-" + TxtFolio.Text
DtExcel.TableName = folio
DtExcel.Columns("Codigo").ColumnName = "Código"
DtExcel.Columns("Descripcion").ColumnName = "Descripción"
DtExcel.Columns("NumeroParte").ColumnName = "Número de parte"
DtExcel.Columns("SubImporte").ColumnName = "Sub-Importe"
DtExcel.Columns("MargenUtilidad").ColumnName = "Margen de utilidad"
DtExcel.Columns("UltimoCosto").ColumnName = "Último costo"
SpreadsheetInfo.SetLicense(ModExtensiones.SerialGemBoxSpreadsheet)
Dim FileExcel As New ExcelFile()
Dim worksheet As ExcelWorksheet = FileExcel.Worksheets.Add(DtExcel.TableName)
worksheet.InsertDataTable(DtExcel, New InsertDataTableOptions() With
{
.ColumnHeaders = True,
.StartRow = 0,
.StartColumn = 0
})
worksheet.Rows(0).Style.FillPattern.SetPattern(FillPatternStyle.Solid, SpreadsheetColor.FromArgb(75, 119, 190), SpreadsheetColor.FromArgb(255, 255, 255))
worksheet.Rows(0).Style.Font.Color = SpreadsheetColor.FromArgb(255, 255, 255)
'CANTIDAD
worksheet.Columns(4).Style.NumberFormat = "#,##0.00"
'PRECIO
worksheet.Columns(5).Style.NumberFormat = "$#,##0.00_);($#,##0.00)"
'IMPORTE
worksheet.Columns(6).Style.NumberFormat = "$#,##0.00_);($#,##0.00)"
'UTILIDAD
worksheet.Columns(7).Style.NumberFormat = "#,##0.00"
'ULTIMO COSTO
worksheet.Columns(8).Style.NumberFormat = "$#,##0.00_);($#,##0.00)"
Dim columnCount As Integer = worksheet.CalculateMaxUsedColumns()
For i As Integer = 0 To columnCount
worksheet.Columns(i).AutoFit(1, worksheet.Rows(0), worksheet.Rows(worksheet.Rows.Count - 1))
Next
FileExcel.Save(Response, $"{folio}.xlsx", SaveOptions.XlsxDefault)
End Sub
End Class