This commit is contained in:
2025-05-23 10:40:13 -07:00
30 changed files with 1524 additions and 220 deletions

View File

@@ -222,7 +222,7 @@
</div>
<div class="portlet-body">
<div class="row">
<div class="col-md-12">
<div class="col-md-6">
<asp:RadioButtonList AutoPostBack="true" OnSelectedIndexChanged="RblTipo_SelectedIndexChanged" RepeatDirection="Horizontal" ID="RblTipo" runat="server">
<asp:ListItem Selected="true" Value="Imp" Text="Importe Fijo" />
<asp:ListItem Value="Por" Text="Porcentaje" />
@@ -230,18 +230,26 @@
<asp:HiddenField ID="HdnTipo" runat="server" ClientIDMode="Static" Value="1" />
</div>
</div>
<div class="row">
<div class="col-md-3">
<div runat="Server" id="ImporteFijo" class="form-group form-md-line-input input-iconright" style="width: 100%">
<asp:TextBox ID="TxtImporte" runat="server" CssClass="form-control" CausesValidation="true"></asp:TextBox>
<ajax:FilteredTextBoxExtender ID="FilteredTextBoxExtender1" runat="server" TargetControlID="TxtImporte" FilterType="Numbers, Custom" ValidChars="." />
<label for="<%= TxtImporte.ClientID.ToString()%>">
<asp:Literal ID="LtlImporte" runat="server" Text="Precio nuevo:"></asp:Literal></label>
<i>
<asp:Literal ID="LtlSimbolo" runat="server" Text="$"></asp:Literal></i>
</div>
<div class="row" style="display: flex;">
<div class="form-group form-md-line-input input-iconright col-md-3">
<asp:TextBox ID="TxtImporte" runat="server" CssClass="form-control" CausesValidation="true"></asp:TextBox>
<ajax:FilteredTextBoxExtender ID="FilteredTextBoxExtender1" runat="server" TargetControlID="TxtImporte" FilterType="Numbers, Custom" ValidChars="." />
<label for="<%= TxtImporte.ClientID.ToString()%>">
<asp:Literal ID="LtlImporte" runat="server" Text="Precio nuevo:"></asp:Literal></label>
<i>
<asp:Literal ID="LtlSimbolo" runat="server" Text="$"></asp:Literal></i>
</div>
<div class="form-group form-md-line-input input-iconright col-md-3" id="DivTipoPorcentaje" runat="server" visible="false">
<asp:DropDownList ID="DdlTipoPorcentaje" runat="server" CssClass="form-control input-sm select2me">
<asp:ListItem Text="Precio actual" Value="1" Selected="True"></asp:ListItem>
<asp:ListItem Text="Último costo" Value="2"></asp:ListItem>
<asp:ListItem Text="Costo promedio" Value="3"></asp:ListItem>
</asp:DropDownList>
<label for="<%= DdlTipoPorcentaje.ClientID.ToString()%>">Precio base:</label>
<i></i>
</div>
<div class="col-md-1">
<label></label>
<a class="btn btn-default" onclick="CambiaImporte();">Aplicar</a>
</div>
</div>
@@ -258,6 +266,7 @@
<a class="btn btn-default" onclick="CambiaPrecio();">Aplicar Precio Min.</a>
</div>
</div>
<br />
<div class="row">
<div class="col-md-12" style="display: flex; justify-content: center;">
<asp:LinkButton ID="BtnGuardar" runat="server" AlternateText="Actualizar" CausesValidation="True" CssClass="btn btn-primary" Text="Actualizar Seleccionadas" ValidationGroup="GrpGuardar" />
@@ -313,8 +322,16 @@
<ajax:ValidatorCalloutExtender ID="VCTxtPrecioMinimo" runat="server" HighlightCssClass="vco" TargetControlID="REVTxtPrecioMinimo" Width="300px"></ajax:ValidatorCalloutExtender>--%>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="UltimoCosto" ItemStyle-Width="5%" HeaderText="Ult.Costo" DataFormatString="{0:#,##0.00}" ItemStyle-HorizontalAlign="Right" />
<asp:BoundField DataField="CostoPromedio" ItemStyle-Width="5%" HeaderText="Costo Prom." DataFormatString="{0:#,##0.00}" ItemStyle-HorizontalAlign="Right" />
<asp:TemplateField ItemStyle-Width="5%" HeaderText="Ult.Costo" ItemStyle-HorizontalAlign="Right">
<ItemTemplate>
<asp:Label ID="LtlUltimoCosto" runat="server" Text='<%# Eval("UltimoCosto", "{0:#,##0.00}")%>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField ItemStyle-Width="5%" HeaderText="Costo Prom." ItemStyle-HorizontalAlign="Right">
<ItemTemplate>
<asp:Label ID="LtlCostoPromedio" runat="server" Text='<%# Eval("CostoPromedio", "{0:#,##0.00}")%>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="UnidadMedida" NullDisplayText="N/A" ItemStyle-Width="2.5%" HeaderText="U.M." />
<asp:BoundField DataField="Moneda" NullDisplayText="N/A" ItemStyle-Width="2.5%" HeaderText="Moneda" ItemStyle-HorizontalAlign="Left" />
<asp:BoundField DataField="VentaMinima" NullDisplayText="N/A" ItemStyle-Width="10%" HeaderText="E. Mínimo" ItemStyle-HorizontalAlign="right" Visible="false" />
@@ -890,11 +907,11 @@
}
function CambiaImporte() {
var topLevelElem = document.getElementById("form1");
var checks = topLevelElem.getElementsByTagName("input");
var idd = '';
let topLevelElem = document.getElementById("form1");
let checks = topLevelElem.getElementsByTagName("input");
let idd = '';
var valor = $('#<%= TxtImporte.ClientID %>').val();
let valor = ToDouble($('#<%= TxtImporte.ClientID %>').val());
for (var i = 0; i < checks.length; i++) {
if (checks[i].type == "checkbox") {
@@ -905,14 +922,54 @@
//ASIGNAR PRECIO NUEVO
if (tipo == '1') {
$get('C_GVPrecios_TxtPrecio_' + idd).value = FormatoNumero(ToDouble(valor), 2);
$get('C_GVPrecios_TxtPrecio_' + idd).value = FormatoNumero(valor, 2);
}
//AUMENTAR PRECIO POR PORCENTAJE
if (tipo == '2') {
let precioActual = ToDouble($get('C_GVPrecios_LtlPrecio_' + idd).innerText.replace(" ", "").replace("$", "").replace(",",""));
let precioRef = 0;
let precioNuevo = ToDouble(((valor / 100) * precioActual) + precioActual)
let precioActual = 0;
let ultimoCosto = 0;
let costoPromedio = 0;
if ($get('C_GVPrecios_LtlPrecio_' + idd)) {
precioActual = ToDouble($get('C_GVPrecios_LtlPrecio_' + idd).innerText.replace(" ", "").replace("$", "").replace(",", ""));
}
if ($get('C_GVPrecios_LtlUltimoCosto_' + idd)) {
ultimoCosto = ToDouble($get('C_GVPrecios_LtlUltimoCosto_' + idd).innerText.replace(" ", "").replace("$", "").replace(",", ""));
}
if ($get('C_GVPrecios_LtlCostoPromedio_' + idd)) {
costoPromedio = ToDouble($get('C_GVPrecios_LtlCostoPromedio_' + idd).innerText.replace(" ", "").replace("$", "").replace(",", ""));
}
let Referencia = $get('C_DdlTipoPorcentaje').value;
//PRECIO ACTUAL
if (Referencia == '1') {
precioRef = precioActual;
}
//ULTIMO COSTO
if (Referencia == '2') {
if (ultimoCosto > 0 && ultimoCosto != 'NaN') {
precioRef = ultimoCosto;
} else {
precioRef = precioActual;
}
}
//COSTO PROMEDIO
if (Referencia == '3') {
if (costoPromedio > 0 && costoPromedio != 'NaN') {
precioRef = costoPromedio;
} else {
precioRef = precioActual;
}
}
let precioNuevo = ToDouble(((valor / 100) * precioRef) + precioRef);
$get('C_GVPrecios_TxtPrecio_' + idd).value = FormatoNumero(precioNuevo, 2);
}

View File

@@ -336,10 +336,12 @@ Partial Class Ventas_ActualizarPrecios
LtlImporte.Text = "Precio nuevo:"
LtlSimbolo.Text = "$"
HdnTipo.Value = "1"
DivTipoPorcentaje.Visible = False
Else
LtlImporte.Text = "Porcentaje a incrementar:"
LtlSimbolo.Text = "%"
HdnTipo.Value = "2"
DivTipoPorcentaje.Visible = True
End If
UPPrecioLista.Update()
End Sub

View File

@@ -42,7 +42,7 @@
<asp:RadioButtonList ID="RblTipoPago" AutoPostBack="true" runat="server" RepeatDirection="Horizontal">
<asp:ListItem Value="1" Selected="true">Banco &nbsp;</asp:ListItem>
<asp:ListItem Value="3">Ingresos x Comprobar</asp:ListItem>
<%-- <asp:ListItem Value="2" >Pago Intermediario</asp:ListItem>--%>
<%-- <asp:ListItem Value="2" >Pago Intermediario</asp:ListItem>--%>
</asp:RadioButtonList>
</div>
<div class="col-md-5">
@@ -208,10 +208,10 @@
<div class="col-md-2">
<asp:TextBox ID="TxtAnticipo" runat="server" Width="100px" ClientIDMode="Static" />
</div>
<div class="col-md-1" runat="server" id="DivAntSubProyectoTexto" visible="false">Sucursal:</div>
<div class="col-md-2" runat="server" id="DivAntSubProyecto" visible="false">
<div class="col-md-1" runat="server" id="DivAntSubProyectoTexto" visible="false">Sucursal:</div>
<div class="col-md-2" runat="server" id="DivAntSubProyecto" visible="false">
<asp:DropDownList runat="server" ID="DdlSubProyectos" CssClass="form-control input-sm select2me" DataValueField="CveSubProyecto" DataTextField="SubProyecto" Class="table-group-action-input form-control input-inline input-small input-sm">
</asp:DropDownList>
</asp:DropDownList>
</div>
<div class="col-md-3" runat="server" id="Div4" visible="false">
</div>
@@ -257,9 +257,9 @@
<div class="col-md-3">
<asp:TextBox ID="TxtImporteDeduccionesPago" runat="server" Width="100px" onkeyup="FormatoMoneda(this)" ClientIDMode="Static"></asp:TextBox>
</div>
<div class="col-md-2">
<div class="col-md-2">
</div>
<div class="col-md-3">
<div class="col-md-3">
</div>
</div>
@@ -312,7 +312,7 @@
<asp:UpdatePanel ID="UpGuardar" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<%-- <br />
<%-- <br />
<div class="row">
<div class="col-lg-2" style="text-align:right!important;max-width:15%!important">
@@ -333,54 +333,54 @@
</div>--%>
<table class="Widthall" style="height:50px!important">
<table class="Widthall" style="height: 50px!important">
<tr>
<td style="text-align: right; width: 15%">
<asp:CheckBox Text=" Seguir Registrando Pagos" ID="ChkSeguirRegistrando" CssClass="md-checksd" runat="server" />
</td>
<td style="text-align: left; width: 15%">
<asp:CheckBox Text=" Emitir complemento de pago" ID="ChkComplementoPago" Visible="true" CssClass="md-checksd" runat="server" AutoPostBack="true" OnCheckedChanged="ChkComplementoPago_CheckedChanged" />
<br />
<asp:Label ID="LblValidaCeuntaTipoTransaccion" runat="server" Visible="false" ForeColor="Red"></asp:Label>
<asp:CheckBox Text=" Emitir complemento de pago" ID="ChkComplementoPago" Visible="true" CssClass="md-checksd" runat="server" AutoPostBack="true" OnCheckedChanged="ChkComplementoPago_CheckedChanged" />
<br />
<asp:Label ID="LblValidaCeuntaTipoTransaccion" runat="server" Visible="false" ForeColor="Red"></asp:Label>
</td>
<td style="text-align: left; width: 14%">
<td style="text-align: left; width: 14%">
<div runat="server" id="DvFechaEmision" visible="false">
<div runat="server" id="DvFechaEmision" visible="false">
<table>
<td style="white-space: nowrap;">Fecha Emisión:</td>
<td>
<div class="input-group input-sm input-small date date-picker " data-date-format="dd/mm/yyyy" style="width: 110px !important; padding: 0px;">
<asp:TextBox ID="TxtFechaEmision" runat="server" CssClass="form-control"></asp:TextBox>
<span class="input-group-btn ">
<asp:LinkButton runat="server" ID="LnkImgTxtFechaEmision" class="btn default"><i class="fa fa-calendar"></i></asp:LinkButton>
</span>
</div>
<table>
<td style="white-space: nowrap;">Fecha Emisión:</td>
<td>
<div class="input-group input-sm input-small date date-picker " data-date-format="dd/mm/yyyy" style="width: 110px !important; padding: 0px;">
<asp:TextBox ID="TxtFechaEmision" runat="server" CssClass="form-control"></asp:TextBox>
<span class="input-group-btn ">
<asp:LinkButton runat="server" ID="LnkImgTxtFechaEmision" class="btn default"><i class="fa fa-calendar"></i></asp:LinkButton>
</span>
</div>
<ajax:MaskedEditExtender ID="METxtFechaEmision" runat="server" TargetControlID="TxtFechaEmision" Mask="99/99/9999" MaskType="Date" DisplayMoney="Left" AcceptNegative="Left"></ajax:MaskedEditExtender>
<ajax:CalendarExtender ID="CETxtFechaEmision" runat="server" TargetControlID="TxtFechaEmision" PopupButtonID="LnkImgTxtFechaEmision" PopupPosition="BottomRight" Enabled="True"></ajax:CalendarExtender>
<asp:RequiredFieldValidator ID="RfvTxtFechaEmision" runat="server" ControlToValidate="TxtFechaEmision" Display="None" ErrorMessage="El campo <b>''Fecha de Emisión''</b> es requerido por la aplicación, por favor ingrese una fecha." ValidationGroup="GrpGuardar"></asp:RequiredFieldValidator>
<asp:CompareValidator ID="CVTxtFechaEmision" runat="server" ControlToValidate="TxtFechaEmision" Display="None" ErrorMessage="El campo <b>''Fecha de Emisión''</b> no tienes el formato correcto, por favor intente de nuevo con el siguiente formato: (dd/mm/yyyy)." Operator="DataTypeCheck" Type="Date" ValidationGroup="GrpGuardar"></asp:CompareValidator>
<ajax:MaskedEditExtender ID="METxtFechaEmision" runat="server" TargetControlID="TxtFechaEmision" Mask="99/99/9999" MaskType="Date" DisplayMoney="Left" AcceptNegative="Left"></ajax:MaskedEditExtender>
<ajax:CalendarExtender ID="CETxtFechaEmision" runat="server" TargetControlID="TxtFechaEmision" PopupButtonID="LnkImgTxtFechaEmision" PopupPosition="BottomRight" Enabled="True"></ajax:CalendarExtender>
<asp:RequiredFieldValidator ID="RfvTxtFechaEmision" runat="server" ControlToValidate="TxtFechaEmision" Display="None" ErrorMessage="El campo <b>''Fecha de Emisión''</b> es requerido por la aplicación, por favor ingrese una fecha." ValidationGroup="GrpGuardar"></asp:RequiredFieldValidator>
<asp:CompareValidator ID="CVTxtFechaEmision" runat="server" ControlToValidate="TxtFechaEmision" Display="None" ErrorMessage="El campo <b>''Fecha de Emisión''</b> no tienes el formato correcto, por favor intente de nuevo con el siguiente formato: (dd/mm/yyyy)." Operator="DataTypeCheck" Type="Date" ValidationGroup="GrpGuardar"></asp:CompareValidator>
<%--<asp:RangeValidator ID="RVTxtFechaEmision" runat="server" Display="None" ErrorMessage="<b><span style='text-decoration: underline'>ERROR:</span></b> <br/> La fecha del documento no puede ser superior a la fecha actual" ControlToValidate="TxtFechaDocumento" MinimumValue="01/01/1900" Type="Date" ValidationGroup="GrpGuardar"></asp:RangeValidator>--%>
<ajax:ValidatorCalloutExtender ID="ValidatorCalloutExtender8" runat="server" HighlightCssClass="vco" TargetControlID="RfvTxtFechaEmision" Width="350px"></ajax:ValidatorCalloutExtender>
<ajax:ValidatorCalloutExtender ID="ValidatorCalloutExtender9" runat="server" HighlightCssClass="vco" TargetControlID="CVTxtFechaEmision" Width="350px"></ajax:ValidatorCalloutExtender>
<%--<ajax:ValidatorCalloutExtender ID="ValidatorCalloutExtender10" runat="server" HighlightCssClass="vco" TargetControlID="RVTxtFechaEmision" Width="350px"></ajax:ValidatorCalloutExtender>--%>
</td>
</table>
<%--<asp:RangeValidator ID="RVTxtFechaEmision" runat="server" Display="None" ErrorMessage="<b><span style='text-decoration: underline'>ERROR:</span></b> <br/> La fecha del documento no puede ser superior a la fecha actual" ControlToValidate="TxtFechaDocumento" MinimumValue="01/01/1900" Type="Date" ValidationGroup="GrpGuardar"></asp:RangeValidator>--%>
</div>
</td>
<td style="text-align: center;width: 10%">
<ajax:ValidatorCalloutExtender ID="ValidatorCalloutExtender8" runat="server" HighlightCssClass="vco" TargetControlID="RfvTxtFechaEmision" Width="350px"></ajax:ValidatorCalloutExtender>
<ajax:ValidatorCalloutExtender ID="ValidatorCalloutExtender9" runat="server" HighlightCssClass="vco" TargetControlID="CVTxtFechaEmision" Width="350px"></ajax:ValidatorCalloutExtender>
<%--<ajax:ValidatorCalloutExtender ID="ValidatorCalloutExtender10" runat="server" HighlightCssClass="vco" TargetControlID="RVTxtFechaEmision" Width="350px"></ajax:ValidatorCalloutExtender>--%>
</td>
</table>
</div>
</td>
<td style="text-align: center; width: 10%">
<asp:Button ID="BtnIEGuardar" runat="server" Text="Guardar" ValidationGroup="GrpGuardar" class="btn btn-primary" />
</td>
<td style="text-align: right; width: 45%">
<input type="text" id="TxtBusqueda" class="form-control input-sm" onkeyup="<%= String.Format("FiltrarTabla('TxtBusqueda','{0}')", GvCxC.ClientID) %>" style="display: inline-block; margin-right: -20px; width: 125px;" />
<a href="javascript:;" onclick="<%= String.Format("FiltrarTabla('TxtBusqueda','{0}')", GvCxC.ClientID) %>" style="margin-top: -3px; margin-right: 20px" class="btn btn-circle btn-sm label-info"><i class="icon-magnifier"></i></a>
<input type="text" id="TxtBusqueda" class="form-control input-sm" onkeyup="<%= String.Format("FiltrarTabla('TxtBusqueda','{0}')", GvCxC.ClientID) %>" style="display: inline-block; margin-right: -20px; width: 125px;" />
<a href="javascript:;" onclick="<%= String.Format("FiltrarTabla('TxtBusqueda','{0}')", GvCxC.ClientID) %>" style="margin-top: -3px; margin-right: 20px" class="btn btn-circle btn-sm label-info"><i class="icon-magnifier"></i></a>
</td>
</tr>
</table>
@@ -716,7 +716,7 @@
<asp:ListItem Text="Gasto No Deducible" Value="255" Selected="True"></asp:ListItem>
<asp:ListItem Text="Incobrable No Deducible" Value="179"></asp:ListItem>
<asp:ListItem Text="Incobrable Deducible" Value="263"></asp:ListItem>
<asp:ListItem Text="Reservas" Value="252"></asp:ListItem>
<asp:ListItem Text="Reservas" Value="252"></asp:ListItem>
</asp:DropDownList>
</div>
</div>
@@ -738,6 +738,41 @@
</div>
</div>
</div>
<div id="ModalCorte" class="modal ADS fade" role="dialog">
<div class="modal-dialog">
<!-- Modal content-->
<div class="modal-content">
<div class="modal-header ">
<button type="button" class="close" data-dismiss="modal">&times;</button>
<h4 class="modal-title">Corte de caja</h4>
</div>
<div class="modal-body">
<asp:UpdatePanel runat="server" ID="UpModalCorte" UpdateMode="Conditional">
<ContentTemplate>
<div class="alert alert-warning">Debe seleccionar un corte de caja</div>
<div class="row">
<label class="col-xs-2 control-label">Corte:</label>
<div class="col-xs-10">
<asp:DropDownList ID="DdlCorteCaja" runat="server" CssClass="form-control input-sm select2me" DataTextField="DescripcionCorte" DataValueField="CveCorte" Width="100%" ValidationGroup="GrpPago"></asp:DropDownList>
<asp:RequiredFieldValidator ID="RFVCorteCaja" runat="server" ControlToValidate="DdlCorteCaja" InitialValue="-1" Display="None" ErrorMessage="<b><span style='text-decoration: underline'>ERROR:</span></b><br />El campo <b>''Corte de caja''</b> es necesario, por favor seleccione uno." ValidationGroup="GrpPago"></asp:RequiredFieldValidator>
<ajax:ValidatorCalloutExtender ID="VCECorteCaja" runat="server" HighlightCssClass="vco" TargetControlID="RFVCorteCaja" Width="300px"></ajax:ValidatorCalloutExtender>
</div>
</div>
</ContentTemplate>
</asp:UpdatePanel>
</div>
<div class="modal-footer">
<asp:UpdatePanel runat="server" UpdateMode="Conditional">
<ContentTemplate>
<asp:Button ID="BtnGenerarPago" runat="server" CssClass="btn btn-primary" Text="Pagar" ValidationGroup="GrpPago" />
<button type="button" class="btn btn-danger" data-dismiss="modal">Cancelar</button>
</ContentTemplate>
</asp:UpdatePanel>
</div>
</div>
</div>
</div>
<%-- FIN MODAL SALDAR INCOBRABLE--%>
<%--<div id="ModalVincularIntermediario" class="modal ADS fade" role="dialog">

View File

@@ -695,9 +695,38 @@ Partial Class Ventas_ClientesAbonar
End If
End Sub
Protected Sub BtnIEGuardar_Click(sender As Object, e As EventArgs) Handles BtnIEGuardar.Click
'VERIFICA SI HAY CORTE ANTES DE HACER EL PAGO
If UsuarioActual.Empresa.Funcionalidad(382) = "1" AndAlso CveCorte <= 0 Then
Dim ObjPVenta As New ClsPuntoVenta
If ObjPVenta.GetVta_Cortes(TxtFechaDocumento.Text, TxtFechaDocumento.Text, -1, -1, UsuarioActual.CveEmpresa, -1) Then
DdlCorteCaja.DataSource = ObjPVenta.DtResultados.FiltraParametros($"CveSubProyecto={CveSubProyecto}")
DdlCorteCaja.DataBind()
End If
ObjPVenta.Dispose()
DdlCorteCaja.Items.Insert(0, New ListItem("Seleccione", "-1"))
UpModalCorte.Update()
RegistraScript("$('#ModalCorte').modal({backdrop: 'static', keyboard: false}, 'show')")
Else
GenerarPago()
End If
End Sub
Protected Sub BtnGenerarPago_Click(sender As Object, e As EventArgs) Handles BtnGenerarPago.Click
CveCorte = DdlCorteCaja.SelectedValue.ToEntero()
If CveCorte <= 0 Then
Alert("Debe seleccionar un corte", TipoMensaje.MsgAdvertencia)
Exit Sub
End If
GenerarPago()
End Sub
Private Sub GenerarPago()
Dim FechaEmision As Date = MinFecha
If ChkComplementoPago.Checked AndAlso UsuarioActual.Empresa.Funcionalidad(382) = "1" Then
@@ -1549,7 +1578,6 @@ Partial Class Ventas_ClientesAbonar
If MsgError = "" Then
LimpiaCampos()
End If
End Sub
Private Function TimbrarFactura(ByRef ObjFactura As Modelos.Factura, ByRef SeTimbro As Boolean) As String