Merge branch 'master' of http://192.168.10.111:8383/SIG
This commit is contained in:
@@ -7697,7 +7697,7 @@ Public Class ClsVentas
|
||||
End Function
|
||||
|
||||
|
||||
Public Function GetSMSIndicadores(Opcion As Integer, FechaInicio As Date, FechaFin As Date, CveUsuario As Integer, CveEmpresa As Integer) As Boolean
|
||||
Public Function GetSMSIndicadores(Opcion As Integer, FechaInicio As Date, FechaFin As Date, CveUsuario As Integer, CveVendedor As Integer, CveUsuarioTecnico As Integer, CveEmpresa As Integer) As Boolean
|
||||
Dim Retorno As Boolean = False
|
||||
DataAdapter("PA_SMS_IndicadoresGet")
|
||||
With SqlAdapter.SelectCommand.Parameters
|
||||
@@ -7705,6 +7705,8 @@ Public Class ClsVentas
|
||||
.Add("@FechaInicio", SqlDbType.Date).Value = FechaInicio
|
||||
.Add("@FechaFin", SqlDbType.Date).Value = FechaFin
|
||||
.Add("@CveUsuario", SqlDbType.Int).Value = CveUsuario
|
||||
.Add("@CveVendedor", SqlDbType.Int).Value = CveVendedor
|
||||
.Add("@CveUsuarioTecnico", SqlDbType.Int).Value = CveUsuarioTecnico
|
||||
.Add("@CveEmpresa", SqlDbType.Int).Value = CveEmpresa
|
||||
End With
|
||||
Try
|
||||
|
||||
@@ -132,7 +132,8 @@ Public Class E140 : Implements IHttpHandler, IRequiresSessionState
|
||||
Dim data As New JArray
|
||||
Dim dtt As New DataTable
|
||||
Dim ObjVentas As New ClsVentas
|
||||
If ObjVentas.GetRepRemisionesSinFacturar(Now.AddYears(-2).ToShortDateString, Now.ToShortDateString, Now.ToShortDateString, CveSubProyecto, -1, -1, "-1", CveEmpresa, CveUsuarioConsulta:=100, PrimerProducto:=True) Then
|
||||
Dim FechaInicio As String = Now.AddYears(-2).ToShortDateString
|
||||
If ObjVentas.GetRepRemisionesSinFacturar(FechaInicio, Now.AddDays(1).ToShortDateString, Now.AddDays(1).ToShortDateString, CveSubProyecto, -1, -1, "-1", CveEmpresa, CveUsuarioConsulta:=100, PrimerProducto:=True) Then
|
||||
dtt = ObjVentas.DtResultados.FiltraParametros("CveVenta > 0")
|
||||
End If
|
||||
ObjVentas.Dispose()
|
||||
@@ -296,6 +297,7 @@ Public Class E140 : Implements IHttpHandler, IRequiresSessionState
|
||||
End If
|
||||
Else
|
||||
TieneError = True
|
||||
MsgError = "Falta información para completar la venta."
|
||||
End If
|
||||
End If
|
||||
If Not TieneError Then
|
||||
|
||||
@@ -372,7 +372,7 @@
|
||||
<ContentTemplate>
|
||||
<br />
|
||||
<div style="height: 250px; overflow-x: scroll">
|
||||
<asp:GridView ID="GvFacturas" runat="server" AutoGenerateColumns="False" DataKeyNames="CveVenta, CvePrePoliza, CveIE, TipoCambio, CveMoneda, CveCliente, Importe, SerieFolio,CveCuenta,CveSubProyecto" CssClass="table table-striped table-advance table-hover" Style="text-align: center; float: right; width: 100%;" GridLines="None">
|
||||
<asp:GridView ID="GvFacturas" runat="server" AutoGenerateColumns="False" DataKeyNames="CveVenta, CvePrePoliza, CveIE, TipoCambio, CveMoneda, CveCliente, Importe, SerieFolio,CveCuenta,CveSubProyecto,SobranteFaltante" CssClass="table table-striped table-advance table-hover" Style="text-align: center; float: right; width: 100%;" GridLines="None">
|
||||
<Columns>
|
||||
<asp:TemplateField>
|
||||
<HeaderTemplate>
|
||||
|
||||
@@ -323,8 +323,17 @@ Partial Class Bancos_DepositosCaja
|
||||
End If
|
||||
End If
|
||||
|
||||
NuevaCvePrePoliza = ObjConta.AddPrePolizas("DepCaja", 13, TotalImportePrePoliza, TotalImportePrePoliza, CveMoneda, Fecha, $"Depósito Bancario - {DdlTipoDeposito.SelectedItem.Text}", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveTipoPoliza:=1)
|
||||
Dim ImporteSobFaltante As Decimal = 0
|
||||
|
||||
If UsuarioActual.Empresa.Funcionalidad(382) = "1" Then
|
||||
For Each Gvr As GridViewRow In GvFacturas.Rows
|
||||
If Gvr.FCCheckBox("ChkFactura").Checked Then
|
||||
ImporteSobFaltante += Gvr.DataKey("SobranteFaltante").ToDecimal()
|
||||
End If
|
||||
Next
|
||||
End If
|
||||
|
||||
NuevaCvePrePoliza = ObjConta.AddPrePolizas("DepCaja", 13, TotalImportePrePoliza, TotalImportePrePoliza, CveMoneda, Fecha, $"Depósito Bancario - {DdlTipoDeposito.SelectedItem.Text} {If(ImporteSobFaltante <> 0, $"- Sobrante/faltante: ${ImporteSobFaltante:N2}", "")}", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveTipoPoliza:=1)
|
||||
|
||||
|
||||
Dim CveTransaccionBanco As Integer = DdlTipoDeposito.SelectedValue.ToEntero
|
||||
|
||||
@@ -1363,7 +1363,7 @@
|
||||
</ItemTemplate>
|
||||
</asp:TemplateField>
|
||||
<%--4--%>
|
||||
<asp:BoundField ItemStyle-Width="120px" HeaderText="P.U." DataField="PU" DataFormatString="{0:#,##0.00####}" ItemStyle-HorizontalAlign="Right" />
|
||||
<asp:BoundField ItemStyle-Width="120px" HeaderText="P.U." DataField="PU" DataFormatString="{0:#,##0.######}" ItemStyle-HorizontalAlign="Right" />
|
||||
<%--5--%>
|
||||
<asp:TemplateField ItemStyle-Width="10%">
|
||||
<ItemTemplate>
|
||||
|
||||
@@ -17545,7 +17545,7 @@ Partial Class Compras_Compras
|
||||
End If
|
||||
If TxtDescuento.Text.ToDouble > 0 Then TrDescuento.Visible = True
|
||||
|
||||
If ActualizaTotales And UsuarioActual.CveEmpresa = 72 Or Not CveCompraFactura > 0 Then
|
||||
If ActualizaTotales And (UsuarioActual.CveEmpresa = 72 Or Not CveCompraFactura > 0) Then
|
||||
TxtTotal.Text = Total.ToString.FormatoNumero()
|
||||
If CveCompra > 0 AndAlso CveCompraFactura = 0 Then
|
||||
TxtIVA.Text = IVA.ToString.FormatoNumero()
|
||||
|
||||
@@ -1168,7 +1168,7 @@ Partial Class Compras_eFacturas
|
||||
'End If
|
||||
|
||||
Dim Funcionalidad123 As Integer = UsuarioActual.Empresa.Funcionalidad(123).ToEntero
|
||||
If Funcionalidad123 > 0 Then
|
||||
If Funcionalidad123 > 0 AndAlso Not e.Row.DataKey("CveFactura").ToEntero.Contiene(1223188) Then
|
||||
If NowADS().Day >= Funcionalidad123 Then
|
||||
Dim FechaLimite As Date = New Date(NowADS().Year, NowADS().Month, 1)
|
||||
If e.Row.DBCampo("FechaFactura").ToDate < FechaLimite Then
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<%@ Page Title="" Language="VB" MasterPageFile="~/Site.master" AutoEventWireup="false" CodeFile="DiarioPagos.aspx.vb" Inherits="Contabilidad_DiarioPagos" %>
|
||||
<%@ Page Title="" Language="VB" MasterPageFile="~/Site.master" AutoEventWireup="false" CodeFile="DiarioPagos.aspx.vb" Inherits="Contabilidad_DiarioPagos" ValidateRequest="false" %>
|
||||
<%@ Import Namespace="Extensiones" %>
|
||||
|
||||
<asp:Content ID="Content1" ContentPlaceHolderID="H" runat="Server">
|
||||
|
||||
@@ -1217,8 +1217,8 @@
|
||||
<Paragraph>
|
||||
<TextRuns>
|
||||
<TextRun>
|
||||
<Value>CAMELIA No.Ext: 619, Col: Libertad,
|
||||
CP: 83130, Hermosillo,Sonora, México</Value>
|
||||
<Value>SIMON BLEY No.Ext: 355, No.Int: A, Col: Olivares,
|
||||
CP: 83180, Hermosillo,Sonora, México</Value>
|
||||
<Style>
|
||||
<FontFamily>Calibri</FontFamily>
|
||||
<FontSize>9pt</FontSize>
|
||||
|
||||
@@ -1471,20 +1471,8 @@
|
||||
<Paragraph>
|
||||
<TextRuns>
|
||||
<TextRun>
|
||||
<Value>SIMON BLEY 355, COL. OLIVARES</Value>
|
||||
<Style>
|
||||
<FontFamily>Calibri</FontFamily>
|
||||
<FontSize>9pt</FontSize>
|
||||
<FontWeight>Normal</FontWeight>
|
||||
</Style>
|
||||
</TextRun>
|
||||
</TextRuns>
|
||||
<Style />
|
||||
</Paragraph>
|
||||
<Paragraph>
|
||||
<TextRuns>
|
||||
<TextRun>
|
||||
<Value>HERMOSILLO SONORA CP 83180 MEXICO</Value>
|
||||
<Value>SIMON BLEY No.Ext: 355, No.Int: A, Col: Olivares,
|
||||
CP: 83180, Hermosillo,Sonora, México</Value>
|
||||
<Style>
|
||||
<FontFamily>Calibri</FontFamily>
|
||||
<FontSize>9pt</FontSize>
|
||||
|
||||
@@ -1385,20 +1385,8 @@
|
||||
<Paragraph>
|
||||
<TextRuns>
|
||||
<TextRun>
|
||||
<Value>CAMELIA 619 LIBERTAD HERMOSILLO</Value>
|
||||
<Style>
|
||||
<FontFamily>Calibri</FontFamily>
|
||||
<FontSize>9pt</FontSize>
|
||||
<FontWeight>Normal</FontWeight>
|
||||
</Style>
|
||||
</TextRun>
|
||||
</TextRuns>
|
||||
<Style />
|
||||
</Paragraph>
|
||||
<Paragraph>
|
||||
<TextRuns>
|
||||
<TextRun>
|
||||
<Value>HERMOSILLO SONORA CP 83130 MEXICO</Value>
|
||||
<Value>SIMON BLEY No.Ext: 355, No.Int: A, Col: Olivares,
|
||||
CP: 83180, Hermosillo,Sonora, México</Value>
|
||||
<Style>
|
||||
<FontFamily>Calibri</FontFamily>
|
||||
<FontSize>9pt</FontSize>
|
||||
|
||||
@@ -630,8 +630,11 @@
|
||||
<Paragraph>
|
||||
<TextRuns>
|
||||
<TextRun>
|
||||
<Value>Camelia No. Ext. 619</Value>
|
||||
<Style />
|
||||
<Value>SIMON BLEY No.Ext: 355, No.Int: A, </Value>
|
||||
<Style>
|
||||
<FontFamily>Calibri</FontFamily>
|
||||
<FontWeight>Normal</FontWeight>
|
||||
</Style>
|
||||
</TextRun>
|
||||
</TextRuns>
|
||||
<Style>
|
||||
@@ -641,8 +644,11 @@
|
||||
<Paragraph>
|
||||
<TextRuns>
|
||||
<TextRun>
|
||||
<Value>Col. Libertad C.P. 83130</Value>
|
||||
<Style />
|
||||
<Value>Col: Olivares, CP: 83180,</Value>
|
||||
<Style>
|
||||
<FontFamily>Calibri</FontFamily>
|
||||
<FontWeight>Normal</FontWeight>
|
||||
</Style>
|
||||
</TextRun>
|
||||
</TextRuns>
|
||||
<Style>
|
||||
@@ -652,8 +658,11 @@
|
||||
<Paragraph>
|
||||
<TextRuns>
|
||||
<TextRun>
|
||||
<Value>México</Value>
|
||||
<Style />
|
||||
<Value> Hermosillo,Sonora, México</Value>
|
||||
<Style>
|
||||
<FontFamily>Calibri</FontFamily>
|
||||
<FontWeight>Normal</FontWeight>
|
||||
</Style>
|
||||
</TextRun>
|
||||
</TextRuns>
|
||||
<Style>
|
||||
|
||||
206
Inicio.aspx
206
Inicio.aspx
@@ -66,10 +66,9 @@
|
||||
margin-left: 28%;
|
||||
}
|
||||
|
||||
.calendariobody label {
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
.calendariobody label {
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
.tareasinicio tr td:nth-child(1) {
|
||||
}
|
||||
@@ -107,11 +106,11 @@
|
||||
display: block;
|
||||
}
|
||||
|
||||
#moopio a:hover {
|
||||
background-color: rgba(0,0,0,0.5);
|
||||
transform: scale(1.2);
|
||||
cursor: default;
|
||||
}
|
||||
#moopio a:hover {
|
||||
background-color: rgba(0,0,0,0.5);
|
||||
transform: scale(1.2);
|
||||
cursor: default;
|
||||
}
|
||||
|
||||
|
||||
.MultiLineTextBox {
|
||||
@@ -124,7 +123,29 @@
|
||||
}
|
||||
|
||||
|
||||
//#region highcharts
|
||||
|
||||
|
||||
#divsmsdash {
|
||||
/* Estilo general compacto */
|
||||
--hcg-font-size: 8px !important;
|
||||
--hcg-padding: 4px;
|
||||
--hcg-border-radius: 6px;
|
||||
}
|
||||
.dashboard-container {
|
||||
font-size: 16px; /* Tamaño base */
|
||||
}
|
||||
.highcharts-data-table table {
|
||||
/* Estilo general compacto */
|
||||
--hcg-font-size: 8px !important;
|
||||
--hcg-padding: 4px;
|
||||
--hcg-border-radius: 6px;
|
||||
}
|
||||
|
||||
#divsmsdash .hcg-theme-default, .highcharts-datagrid-theme-default {
|
||||
--hcg-font-size: 10px;
|
||||
--hcg-padding: 5px;
|
||||
}
|
||||
|
||||
.highcharts-figure,
|
||||
.highcharts-data-table table {
|
||||
min-width: 310px;
|
||||
@@ -176,78 +197,78 @@
|
||||
margin: 0.3rem 10px;
|
||||
}
|
||||
h1#title {
|
||||
padding-top: 10px;
|
||||
margin: 0;
|
||||
background-color: #3d3d3d;
|
||||
text-align: center;
|
||||
color: #fff;
|
||||
}
|
||||
padding-top: 10px;
|
||||
margin: 0;
|
||||
background-color: #3d3d3d;
|
||||
text-align: center;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
#kpi-vitamin-a .highcharts-dashboards-component-title::before,
|
||||
#kpi-iron .highcharts-dashboards-component-title::before {
|
||||
width: 14px;
|
||||
height: 14px;
|
||||
border-radius: 28px;
|
||||
display: inline-block;
|
||||
padding: 0;
|
||||
margin-right: 4px;
|
||||
background-color: var(--highcharts-color-0);
|
||||
content: " ";
|
||||
}
|
||||
#kpi-vitamin-a .highcharts-dashboards-component-title::before,
|
||||
#kpi-iron .highcharts-dashboards-component-title::before {
|
||||
width: 14px;
|
||||
height: 14px;
|
||||
border-radius: 28px;
|
||||
display: inline-block;
|
||||
padding: 0;
|
||||
margin-right: 4px;
|
||||
background-color: var(--highcharts-color-0);
|
||||
content: " ";
|
||||
}
|
||||
|
||||
#kpi-iron .highcharts-dashboards-component-title::before {
|
||||
background-color: var(--highcharts-color-2);
|
||||
}
|
||||
#kpi-iron .highcharts-dashboards-component-title::before {
|
||||
background-color: var(--highcharts-color-2);
|
||||
}
|
||||
|
||||
#kpi-vitamin-a .highcharts-dashboards-component-kpi-subtitle,
|
||||
#kpi-iron .highcharts-dashboards-component-kpi-subtitle {
|
||||
margin-top: 10px;
|
||||
font-size: 1.2em;
|
||||
color: var(--highcharts-neutral-color-60);
|
||||
}
|
||||
#kpi-vitamin-a .highcharts-dashboards-component-kpi-subtitle,
|
||||
#kpi-iron .highcharts-dashboards-component-kpi-subtitle {
|
||||
margin-top: 10px;
|
||||
font-size: 1.2em;
|
||||
color: var(--highcharts-neutral-color-60);
|
||||
}
|
||||
|
||||
#kpi-vitamin-a .highcharts-dashboards-component-kpi-value,
|
||||
#kpi-iron .highcharts-dashboards-component-kpi-value {
|
||||
font-size: 4em;
|
||||
line-height: 2.4rem;
|
||||
margin-top: 10px;
|
||||
color: var(--highcharts-color-0);
|
||||
}
|
||||
#kpi-vitamin-a .highcharts-dashboards-component-kpi-value,
|
||||
#kpi-iron .highcharts-dashboards-component-kpi-value {
|
||||
font-size: 4em;
|
||||
line-height: 2.4rem;
|
||||
margin-top: 10px;
|
||||
color: var(--highcharts-color-0);
|
||||
}
|
||||
|
||||
#kpi-iron .highcharts-dashboards-component-kpi-value {
|
||||
color: var(--highcharts-color-2);
|
||||
}
|
||||
#kpi-iron .highcharts-dashboards-component-kpi-value {
|
||||
color: var(--highcharts-color-2);
|
||||
}
|
||||
|
||||
#dashboard-col-1 .highcharts-color-0 {
|
||||
fill: var(--highcharts-color-2);
|
||||
stroke: var(--highcharts-color-2);
|
||||
}
|
||||
#dashboard-col-1 .highcharts-color-0 {
|
||||
fill: var(--highcharts-color-2);
|
||||
stroke: var(--highcharts-color-2);
|
||||
}
|
||||
|
||||
#kpi-vitamin-a .highcharts-dashboards-component-kpi-value::after,
|
||||
#kpi-iron .highcharts-dashboards-component-kpi-value::after {
|
||||
content: "";
|
||||
display: block;
|
||||
font-size: 1rem;
|
||||
}
|
||||
#kpi-vitamin-a .highcharts-dashboards-component-kpi-value::after,
|
||||
#kpi-iron .highcharts-dashboards-component-kpi-value::after {
|
||||
content: "";
|
||||
display: block;
|
||||
font-size: 1rem;
|
||||
}
|
||||
|
||||
.highcharts-plot-line {
|
||||
stroke-dasharray: 2px;
|
||||
stroke: var(--highcharts-color-3);
|
||||
}
|
||||
.highcharts-plot-line {
|
||||
stroke-dasharray: 2px;
|
||||
stroke: var(--highcharts-color-3);
|
||||
}
|
||||
|
||||
.highcharts-plot-line-label {
|
||||
fill: var(--highcharts-color-3);
|
||||
}
|
||||
.highcharts-plot-line-label {
|
||||
fill: var(--highcharts-color-3);
|
||||
}
|
||||
|
||||
.highcharts-description {
|
||||
padding: 0 20px;
|
||||
}
|
||||
.highcharts-description {
|
||||
padding: 0 20px;
|
||||
}
|
||||
|
||||
#kpi-vitamin-a,
|
||||
#kpi-iron {
|
||||
flex: 1 1 100%;
|
||||
height: 205px;
|
||||
}
|
||||
#kpi-vitamin-a,
|
||||
#kpi-iron {
|
||||
flex: 1 1 100%;
|
||||
height: 205px;
|
||||
}
|
||||
|
||||
/* LARGE */
|
||||
@media (max-width: 1200px) {
|
||||
@@ -473,7 +494,7 @@
|
||||
flex: 1 1 50%;
|
||||
}
|
||||
}
|
||||
//#endregion
|
||||
|
||||
|
||||
</style>
|
||||
|
||||
@@ -498,7 +519,7 @@
|
||||
</asp:Content>
|
||||
<asp:Content ID="Content3" ContentPlaceHolderID="C" runat="Server">
|
||||
|
||||
<asp:UpdatePanel ID="UPPIndicador" UpdateMode="Conditional" runat="server">
|
||||
<asp:UpdatePanel ID="UPPIndicador" UpdateMode="Conditional" runat="server" class="row">
|
||||
<ContentTemplate>
|
||||
<div style="background-color: #F9F9F9;">
|
||||
<br />
|
||||
@@ -506,10 +527,10 @@
|
||||
<div class="col-md-2"></div>
|
||||
<div class="col-md-3">
|
||||
Indicador
|
||||
<asp:DropDownList ID="DdlFiltroIndicador" CssClass="form-control select2me" runat="server" OnSelectedIndexChanged="DdlFiltroIndicador_SelectedIndexChanged">
|
||||
<asp:ListItem Text="Gerencial" Selected="true" Value="Ger"></asp:ListItem>
|
||||
<asp:ListItem Text="Recursos Humanos" Value="RH"></asp:ListItem>
|
||||
</asp:DropDownList>
|
||||
<asp:DropDownList ID="DdlFiltroIndicador" CssClass="form-control select2me" runat="server" OnSelectedIndexChanged="DdlFiltroIndicador_SelectedIndexChanged">
|
||||
<asp:ListItem Text="Gerencial" Selected="true" Value="Ger"></asp:ListItem>
|
||||
<asp:ListItem Text="Recursos Humanos" Value="RH"></asp:ListItem>
|
||||
</asp:DropDownList>
|
||||
</div>
|
||||
<div class="col-md-1"></div>
|
||||
<div class="col-md-3">
|
||||
@@ -527,10 +548,33 @@
|
||||
</div>
|
||||
</div>
|
||||
<br />
|
||||
<div class="row" runat="server" id="divsms1">
|
||||
<div class="row" >
|
||||
<div id="divsmsdash" />
|
||||
</div>
|
||||
<div class="row" style="width: 95%; margin-right: 2.5%; margin-left: 2.5%;" runat="server" id="divsms1" visible="false">
|
||||
<asp:UpdatePanel ID="UpdatePanel2" UpdateMode="Conditional" runat="server">
|
||||
<ContentTemplate>
|
||||
<div class="row" >
|
||||
<div class="col-md-1">Opción:</div>
|
||||
<div class="col-md-3">
|
||||
<asp:DropDownList ID="DdlSMSOpciones" runat="server" AutoPostBack="true" OnSelectedIndexChanged="DdlSMSOpciones_SelectedIndexChanged">
|
||||
<asp:ListItem Text="Vendedor" Value="1" />
|
||||
<asp:ListItem Text="Gerente Ventas" Value="2" Selected="True" />
|
||||
<asp:ListItem Text="Almacen" Value="3" />
|
||||
<asp:ListItem Text="Técnico" Value="4" />
|
||||
<asp:ListItem Text="Gerente Técnico" Value="5" />
|
||||
</asp:DropDownList>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<asp:DropDownList ID="DdlSMSVendedores" runat="server" DataTextField="Vendedor" DataValueField="CveVendedor" Visible="false" AutoPostBack="true" OnSelectedIndexChanged="DdlSMSVendedores_SelectedIndexChanged">
|
||||
</asp:DropDownList>
|
||||
<asp:DropDownList ID="DdlSMSTecnico" runat="server" DataTextField="Nombre" DataValueField="CveUsuario" Visible="false" AutoPostBack="true" OnSelectedIndexChanged="DdlSMSTecnico_SelectedIndexChanged" >
|
||||
</asp:DropDownList>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row" >
|
||||
<div id="divsmsdash" />
|
||||
</div>
|
||||
</ContentTemplate>
|
||||
</asp:UpdatePanel>
|
||||
</div>
|
||||
<br />
|
||||
|
||||
<asp:UpdatePanel ID="UPComunicado" UpdateMode="Conditional" runat="server">
|
||||
|
||||
762
Inicio.aspx.vb
762
Inicio.aspx.vb
@@ -4,7 +4,6 @@ Imports System.Web.Services
|
||||
Imports Newtonsoft.Json
|
||||
Imports ADSNetLibrary.SIGAPI.Models.CRM.Request
|
||||
Imports ADSNetLibrary.SIGAPI.Services.CRM
|
||||
Imports ADSNetLibrary.SIGAPI.Models.CRM.Response
|
||||
|
||||
Partial Class Inicio
|
||||
Inherits ClsPaginas
|
||||
@@ -191,8 +190,18 @@ Partial Class Inicio
|
||||
If UsuarioActual.TienePermisoProceso(343) Then MuestraPsProximosAVencer()
|
||||
If UsuarioActual.TienePermisoProceso(344) Then MuestraRSCOProximosAVencer()
|
||||
|
||||
If UsuarioActual.Empresa.Funcionalidad(578) = "1" AndAlso UsuarioActual.CveRol.Contiene(1577, 1639, 1573) Then
|
||||
CargaKPICirugias()
|
||||
If UsuarioActual.Empresa.Funcionalidad(578) = "1" AndAlso UsuarioActual.CveUsuario = 3964 Then 'AndAlso UsuarioActual.CveRol.Contiene(1577, 1639, 1573) Then
|
||||
Dim Opcion As Integer = 1
|
||||
Dim CveVendedor As Integer = -1
|
||||
Dim CveUsuarioTecnico As Integer = -1
|
||||
divsms1.Visible = True
|
||||
If UsuarioActual.CveRol = 1577 Then
|
||||
Opcion = 1 'vendedor
|
||||
CveVendedor = UsuarioActual.CveVendedor
|
||||
ElseIf UsuarioActual.CveRol.Contiene(1639, 1573) Then ' rol admin. 1573
|
||||
Opcion = 2 'gerente ventas
|
||||
End If
|
||||
CargaKPICirugias(Opcion, CveVendedor, CveUsuarioTecnico)
|
||||
End If
|
||||
|
||||
If (UsuarioActual.CveRol = 1062) Or (UsuarioActual.CveUsuario = 100) Then
|
||||
@@ -1613,26 +1622,18 @@ Partial Class Inicio
|
||||
|
||||
|
||||
#Region "S M S - I N D I C A D O R E S"
|
||||
Private Sub CargaKPICirugias()
|
||||
Private Sub CargaKPICirugias(Opcion As Integer, Optional CveVendedor As Integer = -1, Optional CveUsuarioTecnico As Integer = -1)
|
||||
|
||||
DivIndicadores.InnerHtml = ""
|
||||
Dim Opcion As Integer = 1
|
||||
Dim dtIndicadores As DataTable = Nothing
|
||||
Dim dtRH As DataTable = Nothing
|
||||
|
||||
Dim Gral As New ClsVentas
|
||||
Dim ds As DataSet = Nothing
|
||||
|
||||
If UsuarioActual.CveRol = 1577 Then
|
||||
Opcion = 1 'vendedor
|
||||
ElseIf UsuarioActual.CveRol.Contiene(1639, 1573) Then ' rol admin. 1573
|
||||
Opcion = 2 'gerente ventas
|
||||
End If
|
||||
|
||||
Dim FechaI As Date = Now.FirstDayOfMonth
|
||||
Dim FechaF As Date = Now.LastDayOfMonth
|
||||
|
||||
If Gral.GetSMSIndicadores(Opcion, FechaI, FechaF, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa) Then
|
||||
If Gral.GetSMSIndicadores(Opcion, FechaI, FechaF, UsuarioActual.CveUsuario, CveVendedor, CveUsuarioTecnico, UsuarioActual.CveEmpresa) Then
|
||||
ds = Gral.DataSetResultados
|
||||
End If
|
||||
'0-ventas totales, 1-comisiones totales, 2-medicos sin consumo, 3-top10medicos, 4-top5marcas, 5-num pacientes
|
||||
@@ -1640,64 +1641,70 @@ Partial Class Inicio
|
||||
Dim StrTexto As New StringBuilder
|
||||
Dim StrSource As New StringBuilder
|
||||
Dim ComisionVendedor, ComisionTecnico, VentasTotales As Decimal
|
||||
Dim TextoKPIVendedores As String
|
||||
Dim NumPacientes As Integer = 0
|
||||
Dim TextoKPIVendedores As String = ""
|
||||
Dim dtt As DataTable
|
||||
|
||||
If Opcion = 1 Then
|
||||
If ds IsNot Nothing AndAlso ds.Tables.Count > 0 Then
|
||||
|
||||
If Opcion = 1 Then
|
||||
#Region "VENDEDORES"
|
||||
|
||||
dtt = ds.Tables(0)
|
||||
If dtt IsNot Nothing Then
|
||||
VentasTotales = dtt.FiltroPrimeroValor("Importe").ToDecimal
|
||||
End If
|
||||
dtt = ds.Tables(1)
|
||||
If dtt IsNot Nothing Then
|
||||
ComisionVendedor = dtt.FiltroPrimeroValor("ComisionVendedor").ToDecimal
|
||||
ComisionTecnico = dtt.FiltroPrimeroValor("ComisionTecnico").ToDecimal
|
||||
End If
|
||||
dtt = ds.Tables(0)
|
||||
If dtt IsNot Nothing Then
|
||||
VentasTotales = dtt.FiltroPrimeroValor("Importe").ToDecimal
|
||||
End If
|
||||
dtt = ds.Tables(1)
|
||||
If dtt IsNot Nothing Then
|
||||
ComisionVendedor = dtt.FiltroPrimeroValor("ComisionVendedor").ToDecimal
|
||||
ComisionTecnico = dtt.FiltroPrimeroValor("ComisionTecnico").ToDecimal
|
||||
End If
|
||||
|
||||
dtt = ds.Tables(2)
|
||||
'médicos sin consumo
|
||||
If dtt IsNot Nothing AndAlso dtt.Rows.Count > 0 Then
|
||||
dtt = ds.Tables(2)
|
||||
'médicos sin consumo
|
||||
If dtt IsNot Nothing AndAlso dtt.Rows.Count > 0 Then
|
||||
|
||||
For Each dr As DataRow In dtt.Rows
|
||||
StrTexto.AppendFormat("['{0}'],", dr("NombreMedico"))
|
||||
Next
|
||||
StrTexto.Length -= 1
|
||||
StrSource.Append("{id:'dtmedsinconsumo',type:'JSON',options:{firstRowAsNames:false,columnNames:['Medico'],data:[")
|
||||
StrSource.Append(StrTexto.ToString)
|
||||
StrSource.Append("]}}")
|
||||
For Each dr As DataRow In dtt.Rows
|
||||
StrTexto.AppendFormat("['{0}'],", dr("NombreMedico"))
|
||||
Next
|
||||
StrTexto.Length -= 1
|
||||
StrSource.Append("{id:'dtmedsinconsumo',type:'JSON',options:{firstRowAsNames:false,columnNames:['Medico'],data:[")
|
||||
StrSource.Append(StrTexto.ToString)
|
||||
StrSource.Append("]}}")
|
||||
|
||||
End If
|
||||
'top 10 medicos
|
||||
dtt = ds.Tables(3)
|
||||
StrTexto.Clear()
|
||||
If dtt IsNot Nothing AndAlso dtt.Rows.Count > 0 Then
|
||||
For Each dr As DataRow In dtt.FiltraParametros("Importe > 0").Rows
|
||||
StrTexto.AppendFormat("['{0}',{1}],", dr("Medico"), dr("Importe"))
|
||||
Next
|
||||
StrTexto.Length -= 1
|
||||
StrSource.Append(",{id:'dtmedtop10',type:'JSON',options:{firstRowAsNames:false,columnNames:['Medico','Importe'],data:[")
|
||||
StrSource.Append(StrTexto.ToString)
|
||||
StrSource.Append("]}}")
|
||||
End If
|
||||
'top 5 marcas
|
||||
dtt = ds.Tables(4)
|
||||
StrTexto.Clear()
|
||||
'top 5 marcas
|
||||
If dtt IsNot Nothing AndAlso dtt.Rows.Count > 0 Then
|
||||
For Each dr As DataRow In dtt.FiltraParametros("Importe > 0").Rows
|
||||
StrTexto.AppendFormat("['{0}',{1}],", dr("Marca"), dr("Importe"))
|
||||
Next
|
||||
StrTexto.Length -= 1
|
||||
StrSource.Append(",{id:'dttop5marcas',type:'JSON',options:{firstRowAsNames:false,columnNames:['Marca','Importe'],data:[")
|
||||
StrSource.Append(StrTexto.ToString)
|
||||
StrSource.Append("]}}")
|
||||
End If
|
||||
'Dim TextoKPIVendedores As String = "Highcharts.setOptions({chart:{styledMode:true}});Dashboards.board('divsmsdash',{dataPool:{connectors:[{id:'micro-element',type:'JSON',options:{firstRowAsNames:false,columnNames:['Food','Vitamin A','Iron'],data:[['Beef Liver',6421,6.5],['Lamb Liver',2122,6.5],['Cod Liver Oil',1350,0.9],['Mackerel',388,1],['Tuna',214,0.6]]}}]},editMode:{enabled:true,contextMenu:{enabled:true}},components:[{type:'KPI',renderTo:'kpi-vitamin-a',value:900,valueFormat:'{value}',title:'Vitamin A',subtitle:'daily recommended dose'},{type:'KPI',renderTo:'kpi-iron',value:8,title:'Iron',valueFormat:'{value}',subtitle:'daily recommended dose'},{sync:{visibility:true,highlight:true,extremes:true},connector:{id:'micro-element',columnAssignment:[{seriesId:'Vitamin A',data:['Food','Vitamin A']}]},renderTo:'dashboard-col-0',type:'Highcharts',chartOptions:{xAxis:{type:'category',accessibility:{description:'Groceries'}},yAxis:{title:{text:'mcg'},plotLines:[{value:900,zIndex:7,dashStyle:'shortDash',label:{text:'RDA',align:'right',style:{color:'#B73C28'}}}]},credits:{enabled:false},plotOptions:{series:{marker:{radius:6}}},legend:{enabled:true,verticalAlign:'top'},chart:{animation:false,type:'column',spacing:[30,30,30,20]},title:{text:''},tooltip:{valueSuffix:' mcg',stickOnContact:true},lang:{accessibility:{chartContainerLabel:'Vitamin A in food. Highcharts Interactive Chart.'}},accessibility:{description:'The chart is displaying the Vitamin A amount in micrograms for some groceries. There is a plotLine demonstrating the daily Recommended Dietary Allowance (RDA) of 900 micrograms.',point:{valueSuffix:' mcg'}}}},{renderTo:'dashboard-col-1',sync:{visibility:true,highlight:true,extremes:true},connector:{id:'micro-element',columnAssignment:[{seriesId:'Iron',data:['Food','Iron']}]},type:'Highcharts',chartOptions:{xAxis:{type:'category',accessibility:{description:'Groceries'}},yAxis:{title:{text:'mcg'},max:8,plotLines:[{value:8,dashStyle:'shortDash',label:{text:'RDA',align:'right',style:{color:'#B73C28'}}}]},credits:{enabled:false},plotOptions:{series:{marker:{radius:6}}},title:{text:''},legend:{enabled:true,verticalAlign:'top'},chart:{animation:false,type:'column',spacing:[30,30,30,20]},tooltip:{valueSuffix:' mcg',stickOnContact:true},lang:{accessibility:{chartContainerLabel:'Iron in food. Highcharts Interactive Chart.'}},accessibility:{description:'The chart is displaying the Iron amount in micrograms for some groceries. There is a plotLine demonstrating the daily Recommended Dietary Allowance (RDA) of 8 micrograms.',point:{valueSuffix:' mcg'}}}},{renderTo:'dashboard-col-2',connector:{id:'micro-element'},type:'DataGrid',sync:{highlight:true,visibility:true},dataGridOptions:{credits:{enabled:false}}}]},true);
|
||||
|
||||
TextoKPIVendedores = "Highcharts.setOptions({lang: { decimalPoint: '.', thousandsSep: ','},chart:{styledMode:true}});Dashboards.board('divsmsdash',{dataPool:{connectors:[" & StrSource.ToString & "]},editMode: {
|
||||
End If
|
||||
'top 10 medicos
|
||||
dtt = ds.Tables(3)
|
||||
StrTexto.Clear()
|
||||
If dtt IsNot Nothing AndAlso dtt.Rows.Count > 0 Then
|
||||
For Each dr As DataRow In dtt.FiltraParametros("Importe > 0").Rows
|
||||
StrTexto.AppendFormat("['{0}',{1}],", dr("Medico"), dr("Importe"))
|
||||
Next
|
||||
StrTexto.Length -= 1
|
||||
StrSource.Append(",{id:'dtmedtop10',type:'JSON',options:{firstRowAsNames:false,columnNames:['Medico','Importe'],data:[")
|
||||
StrSource.Append(StrTexto.ToString)
|
||||
StrSource.Append("]}}")
|
||||
End If
|
||||
'top 5 marcas
|
||||
dtt = ds.Tables(4)
|
||||
StrTexto.Clear()
|
||||
'top 5 marcas
|
||||
If dtt IsNot Nothing AndAlso dtt.Rows.Count > 0 Then
|
||||
For Each dr As DataRow In dtt.FiltraParametros("Importe > 0").Rows
|
||||
StrTexto.AppendFormat("['{0}',{1}],", dr("Marca"), dr("Importe"))
|
||||
Next
|
||||
StrTexto.Length -= 1
|
||||
StrSource.Append(",{id:'dttop5marcas',type:'JSON',options:{firstRowAsNames:false,columnNames:['Marca','Importe'],data:[")
|
||||
StrSource.Append(StrTexto.ToString)
|
||||
StrSource.Append("]}}")
|
||||
End If
|
||||
'Dim TextoKPIVendedores As String = "Highcharts.setOptions({chart:{styledMode:true}});Dashboards.board('divsmsdash',{dataPool:{connectors:[{id:'micro-element',type:'JSON',options:{firstRowAsNames:false,columnNames:['Food','Vitamin A','Iron'],data:[['Beef Liver',6421,6.5],['Lamb Liver',2122,6.5],['Cod Liver Oil',1350,0.9],['Mackerel',388,1],['Tuna',214,0.6]]}}]},editMode:{enabled:true,contextMenu:{enabled:true}},components:[{type:'KPI',renderTo:'kpi-vitamin-a',value:900,valueFormat:'{value}',title:'Vitamin A',subtitle:'daily recommended dose'},{type:'KPI',renderTo:'kpi-iron',value:8,title:'Iron',valueFormat:'{value}',subtitle:'daily recommended dose'},{sync:{visibility:true,highlight:true,extremes:true},connector:{id:'micro-element',columnAssignment:[{seriesId:'Vitamin A',data:['Food','Vitamin A']}]},renderTo:'dashboard-col-0',type:'Highcharts',chartOptions:{xAxis:{type:'category',accessibility:{description:'Groceries'}},yAxis:{title:{text:'mcg'},plotLines:[{value:900,zIndex:7,dashStyle:'shortDash',label:{text:'RDA',align:'right',style:{color:'#B73C28'}}}]},credits:{enabled:false},plotOptions:{series:{marker:{radius:6}}},legend:{enabled:true,verticalAlign:'top'},chart:{animation:false,type:'column',spacing:[30,30,30,20]},title:{text:''},tooltip:{valueSuffix:' mcg',stickOnContact:true},lang:{accessibility:{chartContainerLabel:'Vitamin A in food. Highcharts Interactive Chart.'}},accessibility:{description:'The chart is displaying the Vitamin A amount in micrograms for some groceries. There is a plotLine demonstrating the daily Recommended Dietary Allowance (RDA) of 900 micrograms.',point:{valueSuffix:' mcg'}}}},{renderTo:'dashboard-col-1',sync:{visibility:true,highlight:true,extremes:true},connector:{id:'micro-element',columnAssignment:[{seriesId:'Iron',data:['Food','Iron']}]},type:'Highcharts',chartOptions:{xAxis:{type:'category',accessibility:{description:'Groceries'}},yAxis:{title:{text:'mcg'},max:8,plotLines:[{value:8,dashStyle:'shortDash',label:{text:'RDA',align:'right',style:{color:'#B73C28'}}}]},credits:{enabled:false},plotOptions:{series:{marker:{radius:6}}},title:{text:''},legend:{enabled:true,verticalAlign:'top'},chart:{animation:false,type:'column',spacing:[30,30,30,20]},tooltip:{valueSuffix:' mcg',stickOnContact:true},lang:{accessibility:{chartContainerLabel:'Iron in food. Highcharts Interactive Chart.'}},accessibility:{description:'The chart is displaying the Iron amount in micrograms for some groceries. There is a plotLine demonstrating the daily Recommended Dietary Allowance (RDA) of 8 micrograms.',point:{valueSuffix:' mcg'}}}},{renderTo:'dashboard-col-2',connector:{id:'micro-element'},type:'DataGrid',sync:{highlight:true,visibility:true},dataGridOptions:{credits:{enabled:false}}}]},true);
|
||||
dtt = ds.Tables(5)
|
||||
StrTexto.Clear()
|
||||
If dtt IsNot Nothing AndAlso dtt.Rows.Count > 0 Then
|
||||
NumPacientes = dtt.FiltroPrimeroValor("NumeroPacientes").ToEntero
|
||||
End If
|
||||
TextoKPIVendedores = "Highcharts.setOptions({lang: { decimalPoint: '.', thousandsSep: ','},chart:{styledMode:true}});Dashboards.board('divsmsdash',{dataPool:{connectors:[" & StrSource.ToString & "]},editMode: {
|
||||
enabled: false,
|
||||
contextMenu: { enabled: true }
|
||||
},
|
||||
@@ -1757,8 +1764,8 @@ Partial Class Inicio
|
||||
},{
|
||||
type: 'KPI',
|
||||
renderTo: 'kpi-iron3',
|
||||
value: 18,
|
||||
title: 'Personas',
|
||||
value: " & NumPacientes & ",
|
||||
title: 'Pacientes',
|
||||
valueFormat: '{value}',
|
||||
subtitle: '-'
|
||||
},{
|
||||
@@ -1844,96 +1851,100 @@ Partial Class Inicio
|
||||
},
|
||||
dataGridOptions: {
|
||||
caption: {
|
||||
text: 'Médicos sin consumo en +30d',
|
||||
rowHeight: 20, // ⬅️ Altura de cada fila en píxeles
|
||||
style: {
|
||||
fontSize: '8px',
|
||||
fontWeight: 'bold'
|
||||
}
|
||||
text: 'Médicos sin consumo en +30d'
|
||||
},style: {
|
||||
maxHeight: '350px',
|
||||
overflowY: 'auto'
|
||||
overflowY: 'auto',
|
||||
fontSize: '7pt',
|
||||
fontWeight: 'normal'
|
||||
},
|
||||
credits: { enabled: false }
|
||||
, cellStyle: {
|
||||
fontWeight: 'normal',
|
||||
fontSize: '8px'
|
||||
}
|
||||
}
|
||||
}]
|
||||
}, true); "
|
||||
#End Region
|
||||
|
||||
Else
|
||||
ElseIf Opcion = 2 Then
|
||||
#Region "GERENTE"
|
||||
|
||||
dtt = ds.Tables(0)
|
||||
If dtt IsNot Nothing Then
|
||||
VentasTotales = dtt.FiltroPrimeroValor("Importe").ToDecimal
|
||||
End If
|
||||
dtt = ds.Tables(1)
|
||||
StrTexto.Clear()
|
||||
'ventas por mes
|
||||
If dtt IsNot Nothing Then
|
||||
For Each dr As DataRow In dtt.FiltraParametros("AnioAnterior > 0 or AnioActual > 0", "MesNum").Rows
|
||||
StrTexto.AppendFormat("['{0}',{1}, {2}],", dr("Mes"), dr("AnioAnterior"), dr("AnioActual"))
|
||||
Next
|
||||
StrTexto.Length -= 1
|
||||
StrSource.Append("{id:'dtmesxmes',type:'JSON',options:{firstRowAsNames:false,columnNames:['Mes','Anterior','Actual'],data:[")
|
||||
StrSource.Append(StrTexto.ToString)
|
||||
StrSource.Append("]}}")
|
||||
End If
|
||||
dtt = ds.Tables(0)
|
||||
If dtt IsNot Nothing Then
|
||||
VentasTotales = dtt.FiltroPrimeroValor("Importe").ToDecimal
|
||||
End If
|
||||
dtt = ds.Tables(1)
|
||||
StrTexto.Clear()
|
||||
'ventas por mes
|
||||
If dtt IsNot Nothing Then
|
||||
For Each dr As DataRow In dtt.FiltraParametros("AnioAnterior > 0 or AnioActual > 0", "MesNum").Rows
|
||||
StrTexto.AppendFormat("['{0}',{1}, {2}],", dr("Mes"), dr("AnioAnterior"), dr("AnioActual"))
|
||||
Next
|
||||
StrTexto.Length -= 1
|
||||
StrSource.Append("{id:'dtmesxmes',type:'JSON',options:{firstRowAsNames:false,columnNames:['Mes','Anterior','Actual'],data:[")
|
||||
StrSource.Append(StrTexto.ToString)
|
||||
StrSource.Append("]}}")
|
||||
End If
|
||||
|
||||
dtt = ds.Tables(2)
|
||||
StrTexto.Clear()
|
||||
'médicos sin consumo
|
||||
If dtt IsNot Nothing AndAlso dtt.Rows.Count > 0 Then
|
||||
dtt = ds.Tables(2)
|
||||
StrTexto.Clear()
|
||||
'médicos sin consumo
|
||||
If dtt IsNot Nothing AndAlso dtt.Rows.Count > 0 Then
|
||||
|
||||
For Each dr As DataRow In dtt.Rows
|
||||
StrTexto.AppendFormat("['{0}','{1}'],", dr("NombreMedico"), dr("Vendedor"))
|
||||
Next
|
||||
StrTexto.Length -= 1
|
||||
StrSource.Append(",{id:'dtmedsinconsumo',type:'JSON',options:{firstRowAsNames:false,columnNames:['Medico','Vendedor'],data:[")
|
||||
StrSource.Append(StrTexto.ToString)
|
||||
StrSource.Append("]}}")
|
||||
End If
|
||||
'vendedores
|
||||
dtt = ds.Tables(3)
|
||||
StrTexto.Clear()
|
||||
If dtt IsNot Nothing AndAlso dtt.Rows.Count > 0 Then
|
||||
For Each dr As DataRow In dtt.FiltraParametros("Importe > 0").Rows
|
||||
StrTexto.AppendFormat("['{0}',{1}],", dr("Vendedor"), dr("Importe"))
|
||||
Next
|
||||
StrTexto.Length -= 1
|
||||
StrSource.Append(",{id:'dtvendedores',type:'JSON',options:{firstRowAsNames:false,columnNames:['Vendedor','Importe'],data:[")
|
||||
StrSource.Append(StrTexto.ToString)
|
||||
StrSource.Append("]}}")
|
||||
End If
|
||||
'top 10 medicos
|
||||
dtt = ds.Tables(4)
|
||||
StrTexto.Clear()
|
||||
If dtt IsNot Nothing AndAlso dtt.Rows.Count > 0 Then
|
||||
For Each dr As DataRow In dtt.FiltraParametros("Importe > 0").Rows
|
||||
StrTexto.AppendFormat("['{0}',{1}],", dr("Medico"), dr("Importe"))
|
||||
Next
|
||||
StrTexto.Length -= 1
|
||||
StrSource.Append(",{id:'dtmedtop10',type:'JSON',options:{firstRowAsNames:false,columnNames:['Medico','Importe'],data:[")
|
||||
StrSource.Append(StrTexto.ToString)
|
||||
StrSource.Append("]}}")
|
||||
End If
|
||||
'top 5 marcas
|
||||
dtt = ds.Tables(5)
|
||||
StrTexto.Clear()
|
||||
'top 5 marcas
|
||||
If dtt IsNot Nothing AndAlso dtt.Rows.Count > 0 Then
|
||||
For Each dr As DataRow In dtt.FiltraParametros("Importe > 0").Rows
|
||||
StrTexto.AppendFormat("['{0}',{1}],", dr("Marca"), dr("Importe"))
|
||||
Next
|
||||
StrTexto.Length -= 1
|
||||
StrSource.Append(",{id:'dttop5marcas',type:'JSON',options:{firstRowAsNames:false,columnNames:['Marca','Importe'],data:[")
|
||||
StrSource.Append(StrTexto.ToString)
|
||||
StrSource.Append("]}}")
|
||||
For Each dr As DataRow In dtt.Rows
|
||||
StrTexto.AppendFormat("['{0}','{1}'],", dr("NombreMedico"), dr("Vendedor"))
|
||||
Next
|
||||
StrTexto.Length -= 1
|
||||
StrSource.Append(",{id:'dtmedsinconsumo',type:'JSON',options:{firstRowAsNames:false,columnNames:['Medico','Vendedor'],data:[")
|
||||
StrSource.Append(StrTexto.ToString)
|
||||
StrSource.Append("]}}")
|
||||
End If
|
||||
'vendedores
|
||||
dtt = ds.Tables(3)
|
||||
StrTexto.Clear()
|
||||
If dtt IsNot Nothing AndAlso dtt.Rows.Count > 0 Then
|
||||
For Each dr As DataRow In dtt.FiltraParametros("Importe > 0").Rows
|
||||
StrTexto.AppendFormat("['{0}',{1},'/a/a.aspx?CveI=1'],", If(dr("Vendedor").ToString.Length > 10, dr("Vendedor").ToString.Substring(0, 10), dr("Vendedor")), dr("Importe"))
|
||||
Next
|
||||
StrTexto.Length -= 1
|
||||
StrSource.Append(",{id:'dtvendedores',type:'JSON',options:{firstRowAsNames:false,columnNames:['Vendedor','Importe','Url'],data:[")
|
||||
StrSource.Append(StrTexto.ToString)
|
||||
StrSource.Append("]}}")
|
||||
End If
|
||||
'top 10 medicos
|
||||
dtt = ds.Tables(4)
|
||||
StrTexto.Clear()
|
||||
If dtt IsNot Nothing AndAlso dtt.Rows.Count > 0 Then
|
||||
For Each dr As DataRow In dtt.FiltraParametros("Importe > 0").Rows
|
||||
StrTexto.AppendFormat("['{0}',{1}],", dr("Medico"), dr("Importe"))
|
||||
Next
|
||||
StrTexto.Length -= 1
|
||||
StrSource.Append(",{id:'dtmedtop10',type:'JSON',options:{firstRowAsNames:false,columnNames:['Medico','Importe'],data:[")
|
||||
StrSource.Append(StrTexto.ToString)
|
||||
StrSource.Append("]}}")
|
||||
End If
|
||||
'top 5 marcas
|
||||
dtt = ds.Tables(5)
|
||||
StrTexto.Clear()
|
||||
If dtt IsNot Nothing AndAlso dtt.Rows.Count > 0 Then
|
||||
For Each dr As DataRow In dtt.FiltraParametros("Importe > 0").Rows
|
||||
StrTexto.AppendFormat("['{0}',{1},'https://www.google.com'],", dr("Marca"), dr("Importe"))
|
||||
Next
|
||||
StrTexto.Length -= 1
|
||||
StrSource.Append(",{id:'dttop5marcas',type:'JSON',options:{firstRowAsNames:false,columnNames:['Marca','Importe','Url'],data:[")
|
||||
StrSource.Append(StrTexto.ToString)
|
||||
StrSource.Append("]}}")
|
||||
|
||||
End If
|
||||
'Dim TextoKPIVendedores As String = "Highcharts.setOptions({chart:{styledMode:true}});Dashboards.board('divsmsdash',{dataPool:{connectors:[{id:'micro-element',type:'JSON',options:{firstRowAsNames:false,columnNames:['Food','Vitamin A','Iron'],data:[['Beef Liver',6421,6.5],['Lamb Liver',2122,6.5],['Cod Liver Oil',1350,0.9],['Mackerel',388,1],['Tuna',214,0.6]]}}]},editMode:{enabled:true,contextMenu:{enabled:true}},components:[{type:'KPI',renderTo:'kpi-vitamin-a',value:900,valueFormat:'{value}',title:'Vitamin A',subtitle:'daily recommended dose'},{type:'KPI',renderTo:'kpi-iron',value:8,title:'Iron',valueFormat:'{value}',subtitle:'daily recommended dose'},{sync:{visibility:true,highlight:true,extremes:true},connector:{id:'micro-element',columnAssignment:[{seriesId:'Vitamin A',data:['Food','Vitamin A']}]},renderTo:'dashboard-col-0',type:'Highcharts',chartOptions:{xAxis:{type:'category',accessibility:{description:'Groceries'}},yAxis:{title:{text:'mcg'},plotLines:[{value:900,zIndex:7,dashStyle:'shortDash',label:{text:'RDA',align:'right',style:{color:'#B73C28'}}}]},credits:{enabled:false},plotOptions:{series:{marker:{radius:6}}},legend:{enabled:true,verticalAlign:'top'},chart:{animation:false,type:'column',spacing:[30,30,30,20]},title:{text:''},tooltip:{valueSuffix:' mcg',stickOnContact:true},lang:{accessibility:{chartContainerLabel:'Vitamin A in food. Highcharts Interactive Chart.'}},accessibility:{description:'The chart is displaying the Vitamin A amount in micrograms for some groceries. There is a plotLine demonstrating the daily Recommended Dietary Allowance (RDA) of 900 micrograms.',point:{valueSuffix:' mcg'}}}},{renderTo:'dashboard-col-1',sync:{visibility:true,highlight:true,extremes:true},connector:{id:'micro-element',columnAssignment:[{seriesId:'Iron',data:['Food','Iron']}]},type:'Highcharts',chartOptions:{xAxis:{type:'category',accessibility:{description:'Groceries'}},yAxis:{title:{text:'mcg'},max:8,plotLines:[{value:8,dashStyle:'shortDash',label:{text:'RDA',align:'right',style:{color:'#B73C28'}}}]},credits:{enabled:false},plotOptions:{series:{marker:{radius:6}}},title:{text:''},legend:{enabled:true,verticalAlign:'top'},chart:{animation:false,type:'column',spacing:[30,30,30,20]},tooltip:{valueSuffix:' mcg',stickOnContact:true},lang:{accessibility:{chartContainerLabel:'Iron in food. Highcharts Interactive Chart.'}},accessibility:{description:'The chart is displaying the Iron amount in micrograms for some groceries. There is a plotLine demonstrating the daily Recommended Dietary Allowance (RDA) of 8 micrograms.',point:{valueSuffix:' mcg'}}}},{renderTo:'dashboard-col-2',connector:{id:'micro-element'},type:'DataGrid',sync:{highlight:true,visibility:true},dataGridOptions:{credits:{enabled:false}}}]},true);
|
||||
End If
|
||||
dtt = ds.Tables(6)
|
||||
StrTexto.Clear()
|
||||
If dtt IsNot Nothing AndAlso dtt.Rows.Count > 0 Then
|
||||
NumPacientes = dtt.FiltroPrimeroValor("NumeroPacientes").ToEntero
|
||||
End If
|
||||
'Dim TextoKPIVendedores As String = "Highcharts.setOptions({chart:{styledMode:true}});Dashboards.board('divsmsdash',{dataPool:{connectors:[{id:'micro-element',type:'JSON',options:{firstRowAsNames:false,columnNames:['Food','Vitamin A','Iron'],data:[['Beef Liver',6421,6.5],['Lamb Liver',2122,6.5],['Cod Liver Oil',1350,0.9],['Mackerel',388,1],['Tuna',214,0.6]]}}]},editMode:{enabled:true,contextMenu:{enabled:true}},components:[{type:'KPI',renderTo:'kpi-vitamin-a',value:900,valueFormat:'{value}',title:'Vitamin A',subtitle:'daily recommended dose'},{type:'KPI',renderTo:'kpi-iron',value:8,title:'Iron',valueFormat:'{value}',subtitle:'daily recommended dose'},{sync:{visibility:true,highlight:true,extremes:true},connector:{id:'micro-element',columnAssignment:[{seriesId:'Vitamin A',data:['Food','Vitamin A']}]},renderTo:'dashboard-col-0',type:'Highcharts',chartOptions:{xAxis:{type:'category',accessibility:{description:'Groceries'}},yAxis:{title:{text:'mcg'},plotLines:[{value:900,zIndex:7,dashStyle:'shortDash',label:{text:'RDA',align:'right',style:{color:'#B73C28'}}}]},credits:{enabled:false},plotOptions:{series:{marker:{radius:6}}},legend:{enabled:true,verticalAlign:'top'},chart:{animation:false,type:'column',spacing:[30,30,30,20]},title:{text:''},tooltip:{valueSuffix:' mcg',stickOnContact:true},lang:{accessibility:{chartContainerLabel:'Vitamin A in food. Highcharts Interactive Chart.'}},accessibility:{description:'The chart is displaying the Vitamin A amount in micrograms for some groceries. There is a plotLine demonstrating the daily Recommended Dietary Allowance (RDA) of 900 micrograms.',point:{valueSuffix:' mcg'}}}},{renderTo:'dashboard-col-1',sync:{visibility:true,highlight:true,extremes:true},connector:{id:'micro-element',columnAssignment:[{seriesId:'Iron',data:['Food','Iron']}]},type:'Highcharts',chartOptions:{xAxis:{type:'category',accessibility:{description:'Groceries'}},yAxis:{title:{text:'mcg'},max:8,plotLines:[{value:8,dashStyle:'shortDash',label:{text:'RDA',align:'right',style:{color:'#B73C28'}}}]},credits:{enabled:false},plotOptions:{series:{marker:{radius:6}}},title:{text:''},legend:{enabled:true,verticalAlign:'top'},chart:{animation:false,type:'column',spacing:[30,30,30,20]},tooltip:{valueSuffix:' mcg',stickOnContact:true},lang:{accessibility:{chartContainerLabel:'Iron in food. Highcharts Interactive Chart.'}},accessibility:{description:'The chart is displaying the Iron amount in micrograms for some groceries. There is a plotLine demonstrating the daily Recommended Dietary Allowance (RDA) of 8 micrograms.',point:{valueSuffix:' mcg'}}}},{renderTo:'dashboard-col-2',connector:{id:'micro-element'},type:'DataGrid',sync:{highlight:true,visibility:true},dataGridOptions:{credits:{enabled:false}}}]},true);
|
||||
|
||||
TextoKPIVendedores = "Highcharts.setOptions({lang: { decimalPoint: '.', thousandsSep: ','},chart:{styledMode:true}});Dashboards.board('divsmsdash',{dataPool:{connectors:[" & StrSource.ToString & "]},editMode: {
|
||||
TextoKPIVendedores = "Highcharts.setOptions({lang: { decimalPoint: '.', thousandsSep: ','},chart:{styledMode:true}});Dashboards.board('divsmsdash',{dataPool:{connectors:[" & StrSource.ToString & "]},editMode: {
|
||||
enabled: false,
|
||||
contextMenu: { enabled: true }
|
||||
},
|
||||
@@ -1979,8 +1990,8 @@ Partial Class Inicio
|
||||
},{
|
||||
type: 'KPI',
|
||||
renderTo: 'kpi-iron3',
|
||||
value: 18,
|
||||
title: 'Personas',
|
||||
value: " & NumPacientes & ",
|
||||
title: 'Pacientes',
|
||||
valueFormat: '{value}',
|
||||
subtitle: '-'
|
||||
},{
|
||||
@@ -2021,40 +2032,54 @@ Partial Class Inicio
|
||||
lang: { accessibility: { chartContainerLabel: '' } }
|
||||
}
|
||||
}, {
|
||||
renderTo: 'dashboard-col-1',
|
||||
sync: {
|
||||
visibility: true,
|
||||
highlight: true,
|
||||
extremes: true
|
||||
},
|
||||
connector: {
|
||||
id: 'dttop5marcas',
|
||||
columnAssignment: [{
|
||||
seriesId: 'Top 5 Marcas',
|
||||
data: ['Marca', 'Importe']
|
||||
}]
|
||||
},
|
||||
type: 'Highcharts',
|
||||
chartOptions: {
|
||||
xAxis: {
|
||||
type: 'category',
|
||||
accessibility: { description: 'Groceries' }
|
||||
renderTo: 'dashboard-col-1',
|
||||
connector: {
|
||||
id: 'dttop5marcas',
|
||||
columnAssignment: [{
|
||||
seriesId: 'Top 5 Marcas',
|
||||
data: ['Marca', 'Importe','Url']
|
||||
}]
|
||||
},
|
||||
yAxis: { title: { text: '' } },
|
||||
credits: { enabled: false },
|
||||
title: { text: '' },
|
||||
legend: { enabled: true, verticalAlign: 'top' },
|
||||
chart: {
|
||||
animation: false, type: 'bar',
|
||||
spacing: [30, 30, 30, 20]
|
||||
},
|
||||
tooltip: { valueSuffix: ' ', stickOnContact: true },
|
||||
lang: { accessibility: {
|
||||
chartContainerLabel: 'Iron in food. Highcharts ' + 'Interactive Chart.'
|
||||
type: 'Highcharts',
|
||||
chartOptions: {
|
||||
chart: {
|
||||
type: 'bar',
|
||||
animation: false,
|
||||
spacing: [30, 30, 30, 20]
|
||||
},
|
||||
title: { text: '' },
|
||||
credits: { enabled: false },
|
||||
legend: { enabled: true, verticalAlign: 'top' },
|
||||
xAxis: {
|
||||
type: 'category',
|
||||
accessibility: { description: 'Groceries' }
|
||||
},
|
||||
yAxis: { title: { text: '' } },
|
||||
tooltip: {
|
||||
valueSuffix: ' ',
|
||||
stickOnContact: true
|
||||
},
|
||||
plotOptions: {
|
||||
series: {
|
||||
cursor: 'pointer',
|
||||
point: {
|
||||
events: {
|
||||
click: function () {
|
||||
const url = this.options?.Url;
|
||||
|
||||
console.log('URL del punto:', url);
|
||||
if (url) {
|
||||
window.open(url, '_blank');
|
||||
} else {
|
||||
alert('No se encontró la URL del punto.');
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}, {
|
||||
}, {
|
||||
renderTo: 'dashboard-col-3',
|
||||
sync: {
|
||||
visibility: true,
|
||||
@@ -2065,24 +2090,67 @@ Partial Class Inicio
|
||||
id: 'dtvendedores',
|
||||
columnAssignment: [{
|
||||
seriesId: 'Vendedores',
|
||||
data: ['Vendedor', 'Importe']
|
||||
data: ['Vendedor', 'Importe','Url']
|
||||
}]
|
||||
},
|
||||
type: 'Highcharts',
|
||||
chartOptions: {
|
||||
xAxis: {
|
||||
type: 'category',
|
||||
accessibility: { description: 'Groceries' }
|
||||
accessibility: { description: '' }
|
||||
},
|
||||
yAxis: { title: { text: '' } },
|
||||
credits: { enabled: false },
|
||||
title: { text: '' },
|
||||
plotOptions: {
|
||||
pie: {
|
||||
allowPointSelect: true,
|
||||
cursor: 'pointer',
|
||||
dataLabels: [{
|
||||
enabled: true,
|
||||
distance: 20
|
||||
}, {
|
||||
enabled: true,
|
||||
distance: -40,
|
||||
format: '{point.percentage:.1f}%',
|
||||
style: {
|
||||
fontSize: '1.2em',
|
||||
textOutline: 'none',
|
||||
opacity: 0.7
|
||||
},
|
||||
filter: {
|
||||
operator: '>',
|
||||
property: 'percentage',
|
||||
value: 10
|
||||
}
|
||||
}]
|
||||
}
|
||||
},
|
||||
title: { text: 'Vendedores' },
|
||||
legend: { enabled: true, verticalAlign: 'top' },
|
||||
chart: {
|
||||
animation: false, type: 'bar',
|
||||
spacing: [30, 30, 30, 20]
|
||||
animation: false, type: 'pie'
|
||||
},
|
||||
tooltip: { valueSuffix: ' ', stickOnContact: true },
|
||||
tooltip: {
|
||||
pointFormat: '{series.name}: <b>{point.percentage:.1f}%</b><br>Valor: <b>{point.y}</b>'
|
||||
},
|
||||
plotOptions: {
|
||||
pie: {
|
||||
allowPointSelect: true,
|
||||
cursor: 'pointer',
|
||||
dataLabels: {
|
||||
enabled: true,
|
||||
format: '<b>{point.name}</b>: {point.percentage:.1f} %'
|
||||
},
|
||||
point: {
|
||||
events: {
|
||||
click: function () {
|
||||
const url = this.options?.Url;
|
||||
if (url) window.open(url, '_blank');
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
lang: { accessibility: {
|
||||
chartContainerLabel: 'Iron in food. Highcharts ' + 'Interactive Chart.'
|
||||
}
|
||||
@@ -2140,25 +2208,311 @@ Partial Class Inicio
|
||||
highlight: true,
|
||||
visibility: true
|
||||
},
|
||||
dataGridOptions: {
|
||||
dataGridOptions: {
|
||||
caption: {
|
||||
text: 'Médicos sin consumo en +30d',
|
||||
rowHeight: 20, // Altura de cada fila en píxeles
|
||||
style: {
|
||||
fontSize: '8pt',
|
||||
fontWeight: 'bold'
|
||||
}
|
||||
text: 'Médicos sin consumo en +30d'
|
||||
},style: {
|
||||
maxHeight: '350px',
|
||||
overflowY: 'auto'
|
||||
overflowY: 'auto',
|
||||
fontSize: '7pt',
|
||||
fontWeight: 'normal'
|
||||
},
|
||||
credits: { enabled: false }
|
||||
, cellStyle: {
|
||||
fontWeight: 'normal',
|
||||
fontSize: '8px'
|
||||
}
|
||||
}
|
||||
}]
|
||||
}, true); "
|
||||
#End Region
|
||||
|
||||
ElseIf Opcion = 3 Then
|
||||
#Region "ALMACEN"
|
||||
Dim TotalEntregas, TotalRecoleciones, ProductosConExistencia, Ingresadas, NoUsadas As Integer
|
||||
Dim EntregasDiarias As Decimal = 0
|
||||
dtt = ds.Tables(0)
|
||||
If dtt IsNot Nothing Then
|
||||
TotalEntregas = dtt.FiltroPrimeroValor("TotalEntregas").ToEntero
|
||||
TotalRecoleciones = dtt.FiltroPrimeroValor("TotalRecoleccion").ToEntero
|
||||
ProductosConExistencia = dtt.FiltroPrimeroValor("ProductosExistencias").ToEntero
|
||||
Ingresadas = dtt.FiltroPrimeroValor("Ingresadas").ToEntero
|
||||
NoUsadas = dtt.FiltroPrimeroValor("NoUsadas").ToEntero
|
||||
EntregasDiarias = dtt.FiltroPrimeroValor("EntregasDiarias").ToDecimal
|
||||
End If
|
||||
|
||||
TextoKPIVendedores = "Highcharts.setOptions({lang: { decimalPoint: '.', thousandsSep: ','},chart:{styledMode:true}});Dashboards.board('divsmsdash',{dataPool:{connectors:[" & StrSource.ToString & "]},editMode: {
|
||||
enabled: false,
|
||||
contextMenu: { enabled: true }
|
||||
},
|
||||
gui: {
|
||||
layouts: [{
|
||||
rows: [{
|
||||
cells: [{
|
||||
id: 'kpi-wrapper',
|
||||
layout: {
|
||||
rows: [{
|
||||
cells: [{
|
||||
id: 'kpi-iron0'
|
||||
}, {
|
||||
id: 'kpi-iron1'
|
||||
}, {
|
||||
id: 'kpi-iron2'
|
||||
}]
|
||||
},{
|
||||
cells: [{
|
||||
id: 'kpi-iron3'
|
||||
}, {
|
||||
id: 'kpi-iron4'
|
||||
}, {
|
||||
id: 'kpi-iron5'
|
||||
}]
|
||||
}]
|
||||
}
|
||||
}]
|
||||
}]
|
||||
}]
|
||||
},
|
||||
components: [{
|
||||
type: 'KPI',
|
||||
renderTo: 'kpi-iron0',
|
||||
value: " & TotalEntregas & ",
|
||||
valueFormat: '{value}',
|
||||
title: 'Total Entrega',
|
||||
subtitle: '-'
|
||||
}, {
|
||||
type: 'KPI',
|
||||
renderTo: 'kpi-iron1',
|
||||
value: " & TotalRecoleciones & ",
|
||||
title: 'Total Recolecciones',
|
||||
valueFormat: '{value}',
|
||||
valueStyle: { color: '#198754'},
|
||||
subtitle: ''
|
||||
}, {
|
||||
type: 'KPI',
|
||||
renderTo: 'kpi-iron2',
|
||||
value: " & ProductosConExistencia & ",
|
||||
title: 'Productos con Existencia',
|
||||
valueFormat: '{value}',
|
||||
subtitle: '-'
|
||||
},{
|
||||
type: 'KPI',
|
||||
renderTo: 'kpi-iron3',
|
||||
value: " & Ingresadas & ",
|
||||
title: 'Ingresadas',
|
||||
valueFormat: '{value}',
|
||||
subtitle: '-'
|
||||
},{
|
||||
type: 'KPI',
|
||||
renderTo: 'kpi-iron4',
|
||||
value: " & NoUsadas & ",
|
||||
title: 'No usadas',
|
||||
valueFormat: '{value}',
|
||||
subtitle: '-'
|
||||
},{
|
||||
type: 'KPI',
|
||||
renderTo: 'kpi-iron5',
|
||||
value: " & EntregasDiarias & ",
|
||||
title: 'Prom Entrega diaria',
|
||||
valueFormat: '{value:,.2f}',
|
||||
subtitle: '-'
|
||||
} ]
|
||||
}, true); "
|
||||
#End Region
|
||||
ElseIf Opcion = 4 Then
|
||||
#Region "TECNICO"
|
||||
Dim CirugiasDiaSiguiente, Comision, NumCirugias As Integer
|
||||
Dim MontoCirugias As Decimal = 0
|
||||
dtt = ds.Tables(0)
|
||||
If dtt IsNot Nothing Then
|
||||
CirugiasDiaSiguiente = dtt.FiltroPrimeroValor("CirugiasDiaSiguiente").ToEntero
|
||||
Comision = dtt.FiltroPrimeroValor("Comision").ToEntero
|
||||
NumCirugias = dtt.FiltroPrimeroValor("NumCirugias").ToEntero
|
||||
MontoCirugias = dtt.FiltroPrimeroValor("MontoCirugias").ToDecimal
|
||||
End If
|
||||
|
||||
TextoKPIVendedores = "Highcharts.setOptions({lang: { decimalPoint: '.', thousandsSep: ','},chart:{styledMode:true}});Dashboards.board('divsmsdash',{dataPool:{connectors:[" & StrSource.ToString & "]},editMode: {
|
||||
enabled: false,
|
||||
contextMenu: { enabled: true }
|
||||
},
|
||||
gui: {
|
||||
layouts: [{
|
||||
rows: [{
|
||||
cells: [{
|
||||
id: 'kpi-wrapper',
|
||||
layout: {
|
||||
rows: [{
|
||||
cells: [{
|
||||
id: 'kpi-iron0'
|
||||
}, {
|
||||
id: 'kpi-iron1'
|
||||
}]
|
||||
},{
|
||||
cells: [{
|
||||
id: 'kpi-iron2'
|
||||
},{
|
||||
id: 'kpi-iron3'
|
||||
} ]
|
||||
}]
|
||||
}
|
||||
}]
|
||||
}]
|
||||
}]
|
||||
},
|
||||
components: [{
|
||||
type: 'KPI',
|
||||
renderTo: 'kpi-iron0',
|
||||
value: " & CirugiasDiaSiguiente & ",
|
||||
valueFormat: '{value}',
|
||||
title: 'Cirugías Dia Sig',
|
||||
subtitle: '-'
|
||||
}, {
|
||||
type: 'KPI',
|
||||
renderTo: 'kpi-iron1',
|
||||
value: " & Comision & ",
|
||||
title: '$ Comisión',
|
||||
valueFormat: '{value:,.2f}',
|
||||
valueStyle: { color: '#198754'},
|
||||
subtitle: ''
|
||||
}, {
|
||||
type: 'KPI',
|
||||
renderTo: 'kpi-iron2',
|
||||
value: " & NumCirugias & ",
|
||||
title: '# Cirugías',
|
||||
valueFormat: '{value}',
|
||||
subtitle: '-'
|
||||
},{
|
||||
type: 'KPI',
|
||||
renderTo: 'kpi-iron3',
|
||||
value: " & MontoCirugias & ",
|
||||
title: '$ Cirugías',
|
||||
valueFormat: '{value:,.2f}',
|
||||
subtitle: '-'
|
||||
} ]
|
||||
}, true); "
|
||||
#End Region
|
||||
ElseIf Opcion = 5 Then
|
||||
#Region "GERENTE TECNICO"
|
||||
Dim CirugiasAsistidas As Integer
|
||||
Dim MontoCirugias, TicketPromedio As Decimal
|
||||
dtt = ds.Tables(0)
|
||||
If dtt IsNot Nothing Then
|
||||
CirugiasAsistidas = dtt.FiltroPrimeroValor("CirugiasAsistidas").ToEntero
|
||||
TicketPromedio = dtt.FiltroPrimeroValor("TicketPromedio").ToDecimal
|
||||
End If
|
||||
'top cirugias técnicos
|
||||
dtt = ds.Tables(1)
|
||||
StrTexto.Clear()
|
||||
If dtt IsNot Nothing AndAlso dtt.Rows.Count > 0 Then
|
||||
For Each dr As DataRow In dtt.FiltraParametros("Cantidad > 0").Rows
|
||||
StrTexto.AppendFormat("['{0}',{1}],", dr("NombreTecnico"), dr("Cantidad"))
|
||||
Next
|
||||
StrTexto.Length -= 1
|
||||
StrSource.Append("{id:'dttecnicos',type:'JSON',options:{firstRowAsNames:false,columnNames:['NombreTecnico','Cantidad'],data:[")
|
||||
StrSource.Append(StrTexto.ToString)
|
||||
StrSource.Append("]}}")
|
||||
End If
|
||||
|
||||
TextoKPIVendedores = "Highcharts.setOptions({lang: { decimalPoint: '.', thousandsSep: ','},chart:{styledMode:true}});Dashboards.board('divsmsdash',{dataPool:{connectors:[" & StrSource.ToString & "]},editMode: {
|
||||
enabled: false,
|
||||
contextMenu: { enabled: true }
|
||||
},
|
||||
gui: {
|
||||
layouts: [{
|
||||
rows: [{
|
||||
cells: [{
|
||||
id: 'kpi-wrapper',
|
||||
layout: {
|
||||
rows: [{
|
||||
cells: [{
|
||||
id: 'kpi-vitamin-a'
|
||||
},{
|
||||
id: 'kpi-iron3'
|
||||
}]
|
||||
}]
|
||||
}
|
||||
}]
|
||||
}, {
|
||||
cells: [{
|
||||
id: 'dashboard-col-3'
|
||||
}]
|
||||
}]
|
||||
}]
|
||||
},
|
||||
components: [{
|
||||
type: 'KPI',
|
||||
renderTo: 'kpi-vitamin-a',
|
||||
value: " & CirugiasAsistidas & ",
|
||||
valueFormat: '{value}',
|
||||
title: 'Cirugías Asistidas',
|
||||
subtitle: '-'
|
||||
},{
|
||||
type: 'KPI',
|
||||
renderTo: 'kpi-iron',
|
||||
value: " & TicketPromedio & ",
|
||||
title: 'Ticket Promedio',
|
||||
valueFormat: '{value}',
|
||||
subtitle: '-'
|
||||
}, {
|
||||
renderTo: 'dashboard-col-3',
|
||||
sync: {
|
||||
visibility: true,
|
||||
highlight: true,
|
||||
extremes: true
|
||||
},
|
||||
connector: {
|
||||
id: 'dttecnicos',
|
||||
columnAssignment: [{
|
||||
seriesId: 'Técnicos',
|
||||
data: ['NombreTecnico', 'Cantidad']
|
||||
}]
|
||||
},
|
||||
type: 'Highcharts',
|
||||
chartOptions: {
|
||||
xAxis: {
|
||||
type: 'category',
|
||||
accessibility: { description: '' }
|
||||
},
|
||||
yAxis: { title: { text: '' } },
|
||||
credits: { enabled: false },
|
||||
|
||||
title: { text: 'Técnicos' },
|
||||
legend: { enabled: true, verticalAlign: 'top' },
|
||||
chart: {
|
||||
animation: false, type: 'pie'
|
||||
},
|
||||
tooltip: {
|
||||
pointFormat: '{series.name}: <b>{point.percentage:.1f}%</b><br>Valor: <b>{point.y}</b>'
|
||||
},
|
||||
plotOptions: {
|
||||
pie: {
|
||||
allowPointSelect: true,
|
||||
cursor: 'pointer',
|
||||
dataLabels: {
|
||||
enabled: true,
|
||||
format: '<b>{point.name}</b>: {point.percentage:.1f} %'
|
||||
},
|
||||
point: {
|
||||
events: {
|
||||
click: function () {
|
||||
const url = this.options?.Url;
|
||||
if (url) window.open(url, '_blank');
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
lang: { accessibility: {
|
||||
chartContainerLabel: 'Iron in food. Highcharts ' + 'Interactive Chart.'
|
||||
}
|
||||
}
|
||||
}
|
||||
}]
|
||||
}, true); "
|
||||
#End Region
|
||||
End If
|
||||
RegistraScript(TextoKPIVendedores, "top10")
|
||||
End If
|
||||
RegistraScript(TextoKPIVendedores, "top10")
|
||||
|
||||
dtIndicadores = Nothing
|
||||
dtRH = Nothing
|
||||
@@ -2166,4 +2520,34 @@ Partial Class Inicio
|
||||
End Sub
|
||||
|
||||
#End Region
|
||||
|
||||
Protected Sub DdlSMSOpciones_SelectedIndexChanged(sender As Object, e As EventArgs)
|
||||
If DdlSMSOpciones.SelectedValue = "1" Then
|
||||
DdlSMSVendedores.DataSource = GlobalDTVendedores(UsuarioActual.CveEmpresa).FiltraParametros("CveEstatus=1")
|
||||
DdlSMSVendedores.DataBind()
|
||||
DdlSMSVendedores.Visible = True
|
||||
DdlSMSTecnico.Visible = False
|
||||
CargaKPICirugias(DdlSMSOpciones.SelectedValue.ToEntero, DdlSMSVendedores.SelectedValue.ToEntero)
|
||||
ElseIf DdlSMSOpciones.SelectedValue = "4" Then
|
||||
DdlSMSTecnico.DataSource = GlobalDTUsuarios(-1, CveEmpresa:=UsuarioActual.CveEmpresa).FiltraParametros("CveRol = 1582")
|
||||
DdlSMSTecnico.DataBind()
|
||||
DdlSMSTecnico.Items.Insert(0, New ListItem("Todos", "-1"))
|
||||
DdlSMSTecnico.Visible = True
|
||||
DdlSMSVendedores.Visible = False
|
||||
CargaKPICirugias(DdlSMSOpciones.SelectedValue.ToEntero, -1, DdlSMSTecnico.SelectedValue.ToEntero)
|
||||
Else
|
||||
DdlSMSVendedores.Visible = False
|
||||
DdlSMSTecnico.Visible = False
|
||||
CargaKPICirugias(DdlSMSOpciones.SelectedValue.ToEntero)
|
||||
End If
|
||||
|
||||
End Sub
|
||||
|
||||
Protected Sub DdlSMSVendedores_SelectedIndexChanged(sender As Object, e As EventArgs)
|
||||
CargaKPICirugias(DdlSMSOpciones.SelectedValue.ToEntero, DdlSMSVendedores.SelectedValue.ToEntero)
|
||||
End Sub
|
||||
|
||||
Protected Sub DdlSMSTecnico_SelectedIndexChanged(sender As Object, e As EventArgs)
|
||||
CargaKPICirugias(DdlSMSOpciones.SelectedValue.ToEntero, -1, DdlSMSTecnico.SelectedValue.ToEntero)
|
||||
End Sub
|
||||
End Class
|
||||
|
||||
@@ -200,7 +200,6 @@ Partial Class Inventarios_PaquetesArmadoDesarmado
|
||||
Private Sub InicializaValores()
|
||||
CreaDtSeriesDesarmado()
|
||||
|
||||
|
||||
'CARGA PS PAQUETES
|
||||
DdlPaqueteArmado.DataSource = GlobalDTPS(UsuarioActual.CveEmpresa).FiltraParametros("CvePSPaquete > 0")
|
||||
DdlPaqueteArmado.DataBind()
|
||||
@@ -278,9 +277,9 @@ Partial Class Inventarios_PaquetesArmadoDesarmado
|
||||
Dim ObjProductosServicios As New ClsProductosServicios
|
||||
DtDatosArmado = New DataTable
|
||||
|
||||
Dim drP As DataRow = GlobalDTPS(UsuarioActual.CveEmpresa, CvePS:=DdlPaqueteArmado.SelectedValue.ToEntero).FiltroPrimero("")
|
||||
Dim drP As DataRow = GlobalDTPSSimplificado(UsuarioActual.CveEmpresa, CvePS:=DdlPaqueteArmado.SelectedValue.ToEntero).FiltroPrimero("")
|
||||
|
||||
Dim CveUMTemp As Integer = drP("CveUM").ToString.ToEntero
|
||||
Dim CveUMTemp As Integer = drP("CveUnidadMedida").ToString.ToEntero
|
||||
If ObjProductosServicios.GetPaqueteDetalle(DdlPaqueteArmado.SelectedValue.ToEntero, UsuarioActual.CveEmpresa, CveUMTemp, TxtCantidadArmado.Text.ToDouble, DdlAlmacenArmado.SelectedValue.ToEntero, TxtFechaArmado.Text.ToDate, CveVendedor:=CveVendedor, CveCliente:=If(UsuarioActual.Empresa.Funcionalidad(146) = "1", -1, CveCliente)) Then
|
||||
DtDatosArmado = ObjProductosServicios.DtResultados.FiltraParametros("CveTipoPS = 2").Copy
|
||||
Else
|
||||
@@ -296,7 +295,6 @@ Partial Class Inventarios_PaquetesArmadoDesarmado
|
||||
CveVendedor = If(RowApartadosArmado.Visible, DdlVendedorArmado.SelectedValue.ToEntero, -1)
|
||||
CveCliente = If(RowClienteArmado.Visible, DdlClienteArmado.SelectedValue.ToEntero, -1)
|
||||
|
||||
|
||||
If DtDatosArmado.Rows.Count > 0 Then
|
||||
For Each Dr As DataRow In DtDatosArmado.Rows
|
||||
Dr("Cantidad") = Dr("Cantidad").ToString.ToDecimal * TxtCantidadArmado.Text.ToDecimal
|
||||
@@ -323,8 +321,6 @@ Partial Class Inventarios_PaquetesArmadoDesarmado
|
||||
End If
|
||||
|
||||
|
||||
|
||||
|
||||
If AplicaSeriePaquete Or AplicaLotePaquete Or AplicaCaducidadPaquete Then
|
||||
DivSeriesPaqueteArmado.Visible = True
|
||||
Dim Dt As New DataTable
|
||||
@@ -403,10 +399,9 @@ Partial Class Inventarios_PaquetesArmadoDesarmado
|
||||
GvSeriesPaqueteDesarmado.DataBind()
|
||||
BtnAgregarSerieDesarmado.Enabled = True
|
||||
|
||||
Dim drP As DataRow = GlobalDTPSSimplificado(UsuarioActual.CveEmpresa, CvePS:=DdlPaqueteDesarmado.SelectedValue.ToEntero).FiltroPrimero("")
|
||||
|
||||
Dim drP As DataRow = GlobalDTPS(UsuarioActual.CveEmpresa, CvePS:=DdlPaqueteDesarmado.SelectedValue.ToEntero).FiltroPrimero("")
|
||||
|
||||
Dim CveUMTemp As Integer = drP("CveUM").ToString.ToEntero
|
||||
Dim CveUMTemp As Integer = drP("CveUnidadMedida").ToString.ToEntero
|
||||
CveVendedor = If(RowApartadosDesarmado.Visible, DdlVendedorDesarmado.SelectedValue.ToEntero, -1)
|
||||
CveCliente = If(RowClienteDesarmado.Visible, DdlClienteDesarmado.SelectedValue.ToEntero, -1)
|
||||
Dim FechaFin As String = TxtFechaDesarmado.Text.ToDateTime.ToString("yyyy/MM/dd 23:59")
|
||||
@@ -506,7 +501,6 @@ Partial Class Inventarios_PaquetesArmadoDesarmado
|
||||
Alert("No hay ningun registro para generar el movimiento. Por favor rectifique y vuelva a intentar.", TipoMensaje.MsgAdvertencia)
|
||||
Exit Sub
|
||||
End If
|
||||
|
||||
Guardar(1)
|
||||
End Sub
|
||||
|
||||
@@ -568,7 +562,6 @@ Partial Class Inventarios_PaquetesArmadoDesarmado
|
||||
Alert("Es necesario ingresas todos las fechas de caducidad de los componentes.", TipoMensaje.MsgAdvertencia)
|
||||
Exit Sub
|
||||
End If
|
||||
|
||||
End If
|
||||
|
||||
Else
|
||||
@@ -580,23 +573,17 @@ Partial Class Inventarios_PaquetesArmadoDesarmado
|
||||
End If
|
||||
|
||||
If gvr.DataKey("AplicaCaducidad") = "True" Then
|
||||
|
||||
If gvr.FCTextBox("TxtCaducidad").Text.ToDate <= MinFecha Then
|
||||
Alert("Es necesario ingresas todos las fechas de caducidad de los componentes.", TipoMensaje.MsgAdvertencia)
|
||||
Exit Sub
|
||||
End If
|
||||
|
||||
End If
|
||||
End If
|
||||
|
||||
|
||||
|
||||
Next
|
||||
Case 2 ' DESARMADO
|
||||
For Each gvr As GridViewRow In GvDatosDesarmado.Rows
|
||||
|
||||
If gvr.DataKey("AplicaSerie") = "True" Then
|
||||
|
||||
'If gvr.DataKey("AplicaSerie") = "True" Then
|
||||
' 'If gvr.DataKey("Cantidad").ToEntero <> DtDatosDetalle.FiltraParametros(String.Format("ConsecId = {0}", gvr.DataKey("Consec"))).Rows.Count Then
|
||||
' ' Alert("Es necesario ingresas todas las series de los componentes.", TipoMensaje.MsgAdvertencia)
|
||||
@@ -619,15 +606,11 @@ Partial Class Inventarios_PaquetesArmadoDesarmado
|
||||
End If
|
||||
|
||||
If gvr.DataKey("AplicaCaducidad") = "True" Then
|
||||
|
||||
If gvr.FCTextBox("TxtCaducidad").Text.ToDate <= MinFecha Then
|
||||
Alert("Es necesario ingresas todos las fechas de caducidad de los componentes.", TipoMensaje.MsgAdvertencia)
|
||||
Exit Sub
|
||||
End If
|
||||
|
||||
End If
|
||||
|
||||
|
||||
Next
|
||||
End Select
|
||||
|
||||
@@ -683,26 +666,20 @@ Partial Class Inventarios_PaquetesArmadoDesarmado
|
||||
|
||||
For Each GvRow As GridViewRow In GvDatosArmado.Rows
|
||||
|
||||
FechaCaducidad = If(CBool(GvRow.DataKey("AplicaCaducidad")) AndAlso GvRow.FCTextBox("TxtCaducidad").ToString().ToDate > MinFecha, GvRow.FCTextBox("TxtCaducidad").Text.ToDate, MinFecha)
|
||||
FechaCaducidad = If(CBool(GvRow.DataKey("AplicaCaducidad")) AndAlso GvRow.FCTextBox("TxtCaducidad").Text.ToDate > MinFecha, GvRow.FCTextBox("TxtCaducidad").Text.ToDate, MinFecha)
|
||||
Lote = If(CBool(GvRow.DataKey("AplicaLote")), GvRow.FCTextBox("TxtLote").Text.Trim, "-1")
|
||||
|
||||
If UsuarioActual.Empresa.Funcionalidad(578).ToEntero = 1 Then
|
||||
|
||||
Dim DdlCaducidadProducto As DropDownList = GvRow.FCDropDownList("DdlCaducidadProducto")
|
||||
Dim ArrayCaducidad As String() = DdlCaducidadProducto.SelectedValue.Split("|"c)
|
||||
If UsuarioActual.Empresa.Funcionalidad(578) = "1" Then
|
||||
Dim ArrayCaducidad As String() = GvRow.FCDropDownList("DdlCaducidadProducto").SelectedValue.Split("|"c)
|
||||
Lote = ArrayCaducidad(0)
|
||||
FechaCaducidad = ArrayCaducidad(1).ToDate
|
||||
|
||||
End If
|
||||
|
||||
Dim Existencia As Decimal = ObjInventarioVal.GetExistenciasPS(GvRow.DataKey("CvePS").ToEntero, GvRow.DataKey("CveUM").ToEntero, UsuarioActual.CveEmpresa, CveAlmacen:=DdlAlmacenArmado.SelectedValue.ToEntero(), FechaMovto:=TxtFechaArmado.Text.ToDateTime.ToString("yyyy/MM/dd HH:mm"), Serie:="-1", Lote:=Lote, FechaCaducidad:=FechaCaducidad)
|
||||
|
||||
|
||||
If GvRow.DataKey("Cantidad").ToDecimal > Existencia Then
|
||||
TieneErrorExistencia = True
|
||||
|
||||
TextoError.AppendFormat("<b> - {0}</b> Existencia: {1:#,##0.##} <br/>", GvRow.DataKey("CodigoPS"), Existencia)
|
||||
|
||||
End If
|
||||
|
||||
''If Dr("CantidadGV").ToString().ToDecimal > 0 Then
|
||||
@@ -758,16 +735,10 @@ Partial Class Inventarios_PaquetesArmadoDesarmado
|
||||
RegistraScript("playsonidito('142608__autistic-lucario__error.wav')")
|
||||
Exit Sub
|
||||
End If
|
||||
|
||||
End If
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Dim ObjInventario As New ClsInventarios
|
||||
Dim ObjConta As New ClsContabilidad(ObjInventario.IniciaTransacSQL())
|
||||
|
||||
Dim TieneError As Boolean = False
|
||||
Dim MensajeError As String = ""
|
||||
|
||||
@@ -801,13 +772,10 @@ Partial Class Inventarios_PaquetesArmadoDesarmado
|
||||
Dim Lote As String = If(Gvr.FCTextBox("TxtLote").Text = "", "-1", Gvr.FCTextBox("TxtLote").Text)
|
||||
Dim FechaCaducidad As String = If(Gvr.FCTextBox("TxtCaducidad").Text = "", "-1", Gvr.FCTextBox("TxtCaducidad").Text)
|
||||
|
||||
If UsuarioActual.Empresa.Funcionalidad(578).ToEntero = 1 Then
|
||||
|
||||
Dim DdlCaducidadProducto As DropDownList = Gvr.FCDropDownList("DdlCaducidadProducto")
|
||||
Dim ArrayCaducidad As String() = DdlCaducidadProducto.SelectedValue.Split("|"c)
|
||||
If UsuarioActual.Empresa.Funcionalidad(578) = "1" Then
|
||||
Dim ArrayCaducidad As String() = Gvr.FCDropDownList("DdlCaducidadProducto").SelectedValue.Split("|"c)
|
||||
Lote = ArrayCaducidad(0)
|
||||
FechaCaducidad = ArrayCaducidad(1)
|
||||
|
||||
End If
|
||||
|
||||
Dim CveSeccionAlmacen As Integer = Gvr.FCDropDownList("DdlSeccionAlmacen").SelectedValue.ToEntero()
|
||||
@@ -826,11 +794,7 @@ Partial Class Inventarios_PaquetesArmadoDesarmado
|
||||
Exit For
|
||||
End If
|
||||
Next
|
||||
|
||||
If TieneError Then
|
||||
Exit For
|
||||
End If
|
||||
|
||||
If TieneError Then Exit For
|
||||
Else
|
||||
If Not ObjInventario.AddMovimientoDetalle(CveMovimientoSalida, Gvr.DataKey("Cantidad").ToString.ToDecimal, Gvr.DataKey("CveUM").ToString.ToEntero,
|
||||
Gvr.DataKey("CvePS").ToString.ToEntero, 0, -1, CveSeccionAlmacen:=CveSeccionAlmacen, Lote:=Lote,
|
||||
@@ -860,16 +824,15 @@ Partial Class Inventarios_PaquetesArmadoDesarmado
|
||||
PUTemp = PUTemp / TxtCantidadArmado.Text.ToDecimal
|
||||
Dim CvePSTemp = CvePaqueteArmado
|
||||
Dim CveSeccionAlmacen As Integer = -1
|
||||
Dim Drp As DataRow = GlobalDTPS(UsuarioActual.CveEmpresa, CvePS:=CvePaqueteArmado).FiltroPrimero("")
|
||||
Dim Drp As DataRow = GlobalDTPSSimplificado(UsuarioActual.CveEmpresa, CvePS:=CvePaqueteArmado).FiltroPrimero("")
|
||||
|
||||
Dim CveUMTemp As Integer = Drp("CveUM").ToString.ToEntero
|
||||
Dim CveUMTemp As Integer = Drp("CveUnidadMedida").ToString.ToEntero
|
||||
Dim AplicaSeccion As Boolean = CBool(Drp("AplicaSeccion"))
|
||||
If AplicaSeccion Then
|
||||
CveSeccionAlmacen = GlobalDTInvPSSeccionesAlmacen(UsuarioActual.CveEmpresa, CveAlmacenArmado, CvePaqueteArmado).FiltroPrimeroValor("CveSeccionAlmacen").ToEntero
|
||||
End If
|
||||
|
||||
|
||||
If AplicaSeriePaquete Then
|
||||
If AplicaSeriePaquete Or AplicaLotePaquete Or AplicaCaducidadPaquete Then
|
||||
Dim ContadorPaquete = 1
|
||||
Dim DtSeriesComponentes As New DataTable
|
||||
For Each Gvr As GridViewRow In GvSeriesPaqueteArmado.Rows
|
||||
@@ -900,7 +863,6 @@ Partial Class Inventarios_PaquetesArmadoDesarmado
|
||||
Next
|
||||
End If
|
||||
Next
|
||||
|
||||
ContadorPaquete = ContadorPaquete + 1
|
||||
Next
|
||||
Else
|
||||
@@ -934,7 +896,7 @@ Partial Class Inventarios_PaquetesArmadoDesarmado
|
||||
|
||||
Dim CvePSTemp As Integer = CvePaqueteDesarmado
|
||||
Dim CveSeccionAlmacen As Integer = -1
|
||||
Dim Drp As DataRow = GlobalDTPS(UsuarioActual.CveEmpresa, CvePS:=CvePaqueteDesarmado).FiltroPrimero("")
|
||||
Dim Drp As DataRow = GlobalDTPSSimplificado(UsuarioActual.CveEmpresa, CvePS:=CvePaqueteDesarmado).FiltroPrimero("")
|
||||
|
||||
Dim CveUMTemp As Integer = Drp("CveUM").ToString.ToEntero
|
||||
'Dim AplicaSeccion As Boolean = CBool(Drp("AplicaSeccion"))
|
||||
@@ -1070,9 +1032,9 @@ Partial Class Inventarios_PaquetesArmadoDesarmado
|
||||
|
||||
If Not TieneError Then
|
||||
Dim Msg As New StringBuilder
|
||||
Msg.AppendFormat("<br/>El Movimiento de salida se registro con el Folio: <b><a href=""/Inventarios/EntradasSalidas.aspx?CveMovimiento={0}"" target=""_blank"">{1}</a></b>", CveMovimientoSalida, FolioSalida)
|
||||
Msg.AppendFormat("<br/>El Movimiento de salida se registro con el Folio: <b><a href=""/Inventarios/EntradasSalidas.aspx?CveMovimiento={0}"" target=""_blank"" class='Texto'>{1}</a></b>", CveMovimientoSalida, FolioSalida)
|
||||
Msg.AppendFormat("<br/><a class=""Texto"" target='_blank' href=""/Compras/PopUpVerFactura.aspx?P={0}"">Imprimir Movimiento</a> ", Encripta(String.Format("OP=Alm&CveMovimiento={0}", CveMovimientoSalida)))
|
||||
Msg.AppendFormat("<br/><br/><br/>El Movimiento de entrada se registro con el Folio: <b><a href=""/Inventarios/EntradasSalidas.aspx?CveMovimiento={0}"" target=""_blank"">{1}</a></b>", CveMovimientoEntrada, FolioEntrada)
|
||||
Msg.AppendFormat("<br/><br/>El Movimiento de entrada se registro con el Folio: <b><a href=""/Inventarios/EntradasSalidas.aspx?CveMovimiento={0}"" target=""_blank"" class='Texto'>{1}</a></b>", CveMovimientoEntrada, FolioEntrada)
|
||||
Msg.AppendFormat("<br/><a class=""Texto"" target='_blank' href=""/Compras/PopUpVerFactura.aspx?P={0}"">Imprimir Movimiento</a> ", Encripta(String.Format("OP=Alm&CveMovimiento={0}", CveMovimientoEntrada)))
|
||||
Alert(Msg.ToString, TipoMensaje.MsgInformacion)
|
||||
ObjInventario.Commit()
|
||||
@@ -1659,8 +1621,8 @@ Partial Class Inventarios_PaquetesArmadoDesarmado
|
||||
End If
|
||||
|
||||
Dim AplicaCaducidad = False
|
||||
If GlobalDTPS(UsuarioActual.CveEmpresa, CvePS:=CvePSSerieLote).FiltraParametros("").Rows(0) IsNot Nothing Then
|
||||
AplicaCaducidad = If(GlobalDTPS(UsuarioActual.CveEmpresa, CvePS:=CvePSSerieLote).FiltraParametros("").Rows(0)("AplicaCaducidad").ToString = "True", True, False)
|
||||
If GlobalDTPSSimplificado(UsuarioActual.CveEmpresa, CvePS:=CvePSSerieLote).FiltraParametros("").Rows(0) IsNot Nothing Then
|
||||
AplicaCaducidad = If(GlobalDTPSSimplificado(UsuarioActual.CveEmpresa, CvePS:=CvePSSerieLote).FiltraParametros("").Rows(0)("AplicaCaducidad").ToString = "True", True, False)
|
||||
End If
|
||||
|
||||
Row("ConsecId") = CveConsecSerieLote
|
||||
@@ -1754,7 +1716,7 @@ Partial Class Inventarios_PaquetesArmadoDesarmado
|
||||
|
||||
'VERIFICA EXISTENCIAS
|
||||
Dim ObjInventarios As New ClsInventarios
|
||||
Dim CveUMTemp = GlobalDTPS(UsuarioActual.CveEmpresa, CvePS:=CvePaqueteDesarmado).FiltroPrimeroValor("CveUM").ToEntero
|
||||
Dim CveUMTemp = GlobalDTPSSimplificado(UsuarioActual.CveEmpresa, CvePS:=CvePaqueteDesarmado).FiltroPrimeroValor("CveUM").ToEntero
|
||||
Dim Existencia = ObjInventarios.GetExistenciasPS(CvePaqueteDesarmado, CveUMTemp, UsuarioActual.CveEmpresa, CveAlmacenDesarmado, FechaMovto:=TxtFechaDesarmado.Text.ToDateTime.ToString("yyyy/MM/dd HH:mm"), Serie:=Serie,
|
||||
CveVendedor:=CveVendedor, CveCliente:=If(UsuarioActual.Empresa.Funcionalidad(146) = "1", -1, CveCliente), Lote:=Lote, FechaCaducidad:=FechaCaducidad)
|
||||
|
||||
|
||||
@@ -1382,13 +1382,14 @@ Partial Class Sistemas_UsuarioDetalle
|
||||
' End If
|
||||
|
||||
'RECARGA GLOBAL ESTATUS
|
||||
GlobalDTOCEstatusUsuarios(tCveEmpresa) = Nothing
|
||||
|
||||
'If ObjOC.GetEstatusUsuarios(-1, -1, -1, -1, -1) Then Application("GlobalDTOCEstatusUsuarios") = ObjOC.DtResultados Else Application("GlobalDTOCEstatusUsuarios") = Nothing
|
||||
|
||||
|
||||
'RECARGA GLOBAL ALMACEN
|
||||
'If ObjUsuarios.GetAlmacen(-1, UsuarioActual.CveEmpresa) Then Application("GlobalDTAlmacenUsuarios") = ObjUsuarios.DtResultados Else Application("GlobalDTAlmacenUsuarios") = Nothing
|
||||
GlobalDTOCEstatus(tCveEmpresa) = Nothing
|
||||
GlobalDTOCEstatusUsuarios(tCveEmpresa) = Nothing
|
||||
|
||||
'If ObjOC.GetEstatusUsuarios(-1, -1, -1, -1, -1) Then Application("GlobalDTOCEstatusUsuarios") = ObjOC.DtResultados Else Application("GlobalDTOCEstatusUsuarios") = Nothing
|
||||
|
||||
|
||||
'RECARGA GLOBAL ALMACEN
|
||||
'If ObjUsuarios.GetAlmacen(-1, UsuarioActual.CveEmpresa) Then Application("GlobalDTAlmacenUsuarios") = ObjUsuarios.DtResultados Else Application("GlobalDTAlmacenUsuarios") = Nothing
|
||||
GlobalDTAlmacenUsuarios(-1, tCveEmpresa) = Nothing
|
||||
|
||||
'RECARGA GLOBAL EMPRESAS USUARIOS
|
||||
|
||||
@@ -315,6 +315,14 @@ Partial Class Ventas_ActualizarPrecios
|
||||
GvMultiple.DataBind()
|
||||
End If
|
||||
|
||||
'sms, ocultar las últimos 2 columnas, solo mostrar la columna de precio
|
||||
If UsuarioActual.Empresa.Funcionalidad(578) = "1" Then
|
||||
If Not UsuarioActual.TienePermisoProceso(201) Then 'puede ver importes de inventario
|
||||
GvMultiple.Columns(GvMultiple.Columns.Count - 1).Visible = False
|
||||
GvMultiple.Columns(GvMultiple.Columns.Count - 2).Visible = False
|
||||
End If
|
||||
End If
|
||||
|
||||
UpDescargar.Update()
|
||||
UpDatos.Update()
|
||||
UPPrecioLista.Update()
|
||||
@@ -998,7 +1006,6 @@ Partial Class Ventas_ActualizarPrecios
|
||||
Dim TxtId As String = "TxtPrecio_" + (colIndex - 1).ToString()
|
||||
|
||||
If indiceColumna <= DtPreciosMultiple.Columns.Count - 1 Then
|
||||
|
||||
Dim CvePrecioLista As Integer = GvMultiple.HeaderRow.FCLabel(LtlId).Attributes().Item("cvepreciolista").ToEntero()
|
||||
Dim Precio As Decimal = GvRow.FCTextBox(TxtId).Text.ToDecimal()
|
||||
TieneError = Not ObjPS.UpdatePSPreciosLista(Precio, CvePrecioLista, 0, CvePS, UsuarioActual.CveUsuario, NowADS(), True)
|
||||
@@ -1009,30 +1016,23 @@ Partial Class Ventas_ActualizarPrecios
|
||||
Dim splitValues As String() = text.Split("|"c)
|
||||
|
||||
If splitValues.Length > 1 Then
|
||||
|
||||
Dim PrecioLista As String = splitValues(1)
|
||||
|
||||
Dim DrPS = DtPS.FiltroPrimero($"CvePS = {CvePS}")
|
||||
If DrPS IsNot Nothing Then
|
||||
TieneError = ActualizarPreciosFranquicia(ObjPS, DrPS("Codigo").ToString(), Precio, 0, PrecioLista, UpdatePrecioMinimo:=False)
|
||||
Else
|
||||
TieneError = True
|
||||
End If
|
||||
|
||||
End If
|
||||
|
||||
Else
|
||||
Exit For
|
||||
End If
|
||||
|
||||
If TieneError Then
|
||||
Exit For
|
||||
End If
|
||||
End If
|
||||
|
||||
Next
|
||||
End If
|
||||
|
||||
Next
|
||||
Catch ex As Exception
|
||||
OnError("Ocurrió un error al actualizar precios", ex)
|
||||
|
||||
@@ -2606,18 +2606,7 @@ Partial Class Clientes
|
||||
If DdlTipoCliente.SelectedValue = "1" Then
|
||||
If TxtContacto.Text.Trim() = "" Then InformacionCompleta = False
|
||||
If TxtRepresentanteLegal.Text.Trim() = "" Then InformacionCompleta = False
|
||||
'si es el concepto de pagaré
|
||||
Dim tPagare As Integer = 0
|
||||
For Each dRow As GridViewRow In GvDocumentosCliente.Rows
|
||||
Dim CveDocumentacion As Integer = dRow.DataKey("CveDocumentacion").ToEntero()
|
||||
If CveDocumentacion = 265 Then tPagare = 1
|
||||
Next
|
||||
If tPagare = 0 Then InformacionCompleta = False
|
||||
tPagare = 0 'valida que cuando menos tenga una cuenta
|
||||
For Each dRow As GridViewRow In GvBancosCuentas.Rows
|
||||
tPagare = 1
|
||||
Next
|
||||
If tPagare = 0 Then InformacionCompleta = False
|
||||
|
||||
End If
|
||||
End If
|
||||
|
||||
|
||||
@@ -1539,8 +1539,6 @@
|
||||
}
|
||||
|
||||
$("#LblTotalAnticipos").text(FormatoNumero(FnSumaValoresAnt(), 2));
|
||||
|
||||
// $get('HdnVentaSaldo').value = Total - FnSumaValoresAnt();
|
||||
}
|
||||
|
||||
function FnSumaValoresAnt() {
|
||||
@@ -1589,7 +1587,12 @@
|
||||
$get("TxtCambio").value = FormatoNumero(cambio);
|
||||
|
||||
} else {
|
||||
$get("TxtFaltante").value = FormatoNumero(cambio);
|
||||
if (cambio == 'NaN') {
|
||||
$get("TxtFaltante").value = "0.00";
|
||||
} else {
|
||||
$get("TxtFaltante").value = FormatoNumero(cambio);
|
||||
}
|
||||
|
||||
$get("ChkSobFaltante").checked = true;
|
||||
$get("TxtCambio").value = "";
|
||||
}
|
||||
@@ -1618,8 +1621,15 @@
|
||||
}
|
||||
|
||||
function ValidaSobranteFaltante() {
|
||||
if (ToDouble($get("TxtFaltante").value) > 1) {
|
||||
alert("El sobrante/faltante no debe ser mayor a 1");
|
||||
|
||||
let sobFaltantePermitido = 1;
|
||||
|
||||
if (<%= If(UsuarioActual.Empresa.CveEmpresa = 189, 1, 0)%> == 1) {
|
||||
sobFaltantePermitido = 10;
|
||||
}
|
||||
|
||||
if (ToDouble($get("TxtFaltante").value) > sobFaltantePermitido) {
|
||||
alert("El sobrante/faltante no debe ser mayor a " + sobFaltantePermitido);
|
||||
$get("TxtFaltante").value = "";
|
||||
$get("ChkSobFaltante").checked = false;
|
||||
} else {
|
||||
@@ -1630,11 +1640,20 @@
|
||||
function CargaSobranteFaltante() {
|
||||
$('#ChkSobFaltante').change(function () {
|
||||
if (this.checked == true) {
|
||||
if (ToDouble($get("TxtCambio").value) > 1) {
|
||||
alert("El sobrante/faltante no debe ser mayor a 1")
|
||||
let sobFaltantePermitido = 1;
|
||||
|
||||
if (<%= If(UsuarioActual.Empresa.CveEmpresa = 189, 1, 0)%> == 1) {
|
||||
sobFaltantePermitido = 10;
|
||||
}
|
||||
if (ToDouble($get("TxtCambio").value) > sobFaltantePermitido) {
|
||||
alert("El sobrante/faltante no debe ser mayor a " + sobFaltantePermitido)
|
||||
$get("ChkSobFaltante").checked = false;
|
||||
} else {
|
||||
$get("TxtFaltante").value = $get("TxtCambio").value;
|
||||
if ($get("TxtCambio").value == 'NaN') {
|
||||
$get("TxtFaltante").value = "0.00";
|
||||
} else {
|
||||
$get("TxtFaltante").value = $get("TxtCambio").value;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -593,13 +593,19 @@ Partial Class Ventas_PVCobranza
|
||||
Faltante = Math.Abs(TxtFaltante.Text.ToDecimal())
|
||||
End If
|
||||
|
||||
If Faltante > 1 Then
|
||||
Alert("El faltante no puede ser mayor a 1.00", TipoMensaje.MsgAdvertencia)
|
||||
Dim sobFaltantePermitido = 1
|
||||
|
||||
If UsuarioActual.CveEmpresa = 189 Then
|
||||
sobFaltantePermitido = 10
|
||||
End If
|
||||
|
||||
If Faltante > sobFaltantePermitido Then
|
||||
Alert($"El faltante no puede ser mayor a {sobFaltantePermitido}", TipoMensaje.MsgAdvertencia)
|
||||
Exit Sub
|
||||
End If
|
||||
|
||||
If Sobrante > 1 Then
|
||||
Alert("El sobrante no puede ser mayor a 1.00", TipoMensaje.MsgAdvertencia)
|
||||
If Sobrante > sobFaltantePermitido Then
|
||||
Alert($"El sobrante no puede ser mayor a {sobFaltantePermitido}", TipoMensaje.MsgAdvertencia)
|
||||
Exit Sub
|
||||
End If
|
||||
|
||||
@@ -956,7 +962,7 @@ Partial Class Ventas_PVCobranza
|
||||
GuardaLog(ex.ToString())
|
||||
End Try
|
||||
|
||||
If MsgError = "" AndAlso Not ChkSobFaltante.Checked Then
|
||||
If MsgError = "" Then
|
||||
If ObjConta.ValidacionesPrePoliza(CvePrePoliza, UsuarioActual, Opcion:=5, CveVenta:=CveVenta) Then
|
||||
If ObjConta.ValorPolizaDescuadre > 0 Then
|
||||
GuardaLogAD($"Ventas/Ventas-NCGeneradas | Error:{ObjConta.MensajePolizaDescuadre} Diferencia:{ObjConta.ValorDiferencia} | CvePrePoliza:{CvePrePoliza}", "LogPrePolizas")
|
||||
|
||||
Reference in New Issue
Block a user