--Campo ultimo costo en alta de producto

This commit is contained in:
2025-03-11 18:56:08 -07:00
parent 8bf4209bc7
commit f5e9cb1b43
3 changed files with 102 additions and 85 deletions

View File

@@ -415,7 +415,7 @@ Public Class ClsProductosServicios
Optional RegistroRSCO As String = "-1", Optional FechaVigenciaRSCO As Date = MinFecha, Optional VigenciaIndeterminadaRSCO As Boolean = False, Optional CveTipoEmpacado As Integer = -1, Optional CveTipoOrganico As Integer = -1,
Optional NombreComercial As String = "", Optional NotasAdicionales As String = "", Optional EcommerceEtiquetas As String = "", Optional ActivoEcommerce As Boolean = False, Optional EcommercePrecio As Decimal = 0,
Optional CveClasificacionEcommerce As Integer = -1, Optional EcommerceCantidad As Decimal = 0, Optional CodigoAlterno As String = "-1", Optional PSAlterno As String = "-1", Optional ProductoExhibicion As Boolean = False,
Optional Imagen As String = "", Optional PorcentajeMinimoUtilidad As Decimal = 0, Optional CveSelectiva As Integer = -1) As Integer
Optional Imagen As String = "", Optional PorcentajeMinimoUtilidad As Decimal = 0, Optional CveSelectiva As Integer = -1, Optional UltimoCosto As Decimal = 0) As Integer
Dim Retorno As Integer = -1
DataAdapter("PA_ProductosServiciosAdd")
@@ -527,6 +527,7 @@ Public Class ClsProductosServicios
.Add("@Imagen", SqlDbType.VarChar).Value = Imagen
.Add("@PorcentajeMinimoUtilidad", SqlDbType.Decimal).Value = PorcentajeMinimoUtilidad
.Add("@CveSelectiva", SqlDbType.Int).Value = CveSelectiva
.Add("@UltimoCosto", SqlDbType.Money).Value = UltimoCosto
End With
Try

View File

@@ -114,7 +114,7 @@
<asp:TextBox ID="TxtCodigo" CssClass="form-control " runat="server" MaxLength="50"></asp:TextBox>
<label class="truncate" style="padding-left: 16px;" for="<%= TxtCodigo.ClientID.ToString()%>">Código:</label>
<i></i>
<asp:Button ID="BtnConsultaCodigo" runat="server" Text="" Visible="false" style="display:none;" OnClick="BtnConsultaCodigo_Click" />
<asp:Button ID="BtnConsultaCodigo" runat="server" Text="" Visible="false" Style="display: none;" OnClick="BtnConsultaCodigo_Click" />
</asp:Panel>
</div>
<div class="form-group form-md-line-input input-iconright col-xs-4">
@@ -647,42 +647,42 @@
</div>
</div>
</div>
<div class="row">
<div class="col-md-12" id="DivListaPrecios" runat="server" visible="false">
<div class="portlet xspadding light bordered">
<div class="portlet-title">
<div class="caption font-green">
<i class="icon-briefcase font-green"></i>
<span class="caption-subject bold uppercase">Lista de Precios &nbsp;&nbsp;</span>
</div>
<div class="actions">
<div class="btn-group">
</div>
</div>
</div>
<div class="portlet-body form">
<div class="row">
<div class="col-md-12">
<asp:GridView ID="GvPLMultiple" Width="100%" runat="server" GridLines="None" ClientIDMode="Static" AutoGenerateColumns="false" DataKeyNames="CvePrecioLista,PrecioLista,Precio"
CssClass="table table-striped table-advance table-hover ScrollAD mysmallbtn" data-sort="true" EmptyDataText="No se encontraron registros" OnRowDataBound="GvMultiple_RowDataBound">
<Columns>
<asp:BoundField DataField="PrecioLista" HeaderText="Lista de Precio" />
<asp:TemplateField ItemStyle-HorizontalAlign="Right">
<HeaderTemplate>
<asp:Label ID="LtlLista" runat="server">Precio</asp:Label>
</HeaderTemplate>
<ItemTemplate>
<asp:TextBox ID="TxtPrecio" runat="server" MaxLength="39" Text='<%# Eval("Precio") %>' onkeypress="return onlyNumberKey(event)" Style="text-align: right !important;"></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-md-12" id="DivListaPrecios" runat="server" visible="false">
<div class="portlet xspadding light bordered">
<div class="portlet-title">
<div class="caption font-green">
<i class="icon-briefcase font-green"></i>
<span class="caption-subject bold uppercase">Lista de Precios &nbsp;&nbsp;</span>
</div>
<div class="actions">
<div class="btn-group">
</div>
</div>
</div>
<div class="portlet-body form">
<div class="row">
<div class="col-md-12">
<asp:GridView ID="GvPLMultiple" Width="100%" runat="server" GridLines="None" ClientIDMode="Static" AutoGenerateColumns="false" DataKeyNames="CvePrecioLista,PrecioLista,Precio"
CssClass="table table-striped table-advance table-hover ScrollAD mysmallbtn" data-sort="true" EmptyDataText="No se encontraron registros" OnRowDataBound="GvMultiple_RowDataBound">
<Columns>
<asp:BoundField DataField="PrecioLista" HeaderText="Lista de Precio" />
<asp:TemplateField ItemStyle-HorizontalAlign="Right">
<HeaderTemplate>
<asp:Label ID="LtlLista" runat="server">Precio</asp:Label>
</HeaderTemplate>
<ItemTemplate>
<asp:TextBox ID="TxtPrecio" runat="server" MaxLength="39" Text='<%# Eval("Precio") %>' onkeypress="return onlyNumberKey(event)" Style="text-align: right !important;"></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-md-12" id="DivImagen" runat="server" visible="false">
<div class="portlet xspadding light bordered">
@@ -761,7 +761,7 @@
</div>
</div>
</div>
</div>
</div>
</ContentTemplate>
@@ -1206,11 +1206,12 @@
</div>
<div class="row" style="margin-top: 5px;">
<label class="col-md-6 truncate">Ultimo Costo</label>
<div class="col-md-1">
<div class="col-md-1" id="DivUltimoCosto" runat="server">
<asp:Label ID="LblUltimoCosto" runat="server"></asp:Label>
</div>
<div class="col-md-5" runat="server" id="DVEditaUltimoCosto" visible="false" style="text-align:left">
<asp:LinkButton ID="LnkEditarUltimoCostoMostrarModal" runat="server" CssClass="btn btn-circle btn-sm green" OnClick="LnkEditarUltimoCostoMostrarModal_Click" Text="<i class='fa fa-pencil'></i>" />
<div class="col-md-5" runat="server" style="text-align: left">
<asp:TextBox ID="TxtUltimoCosto" CssClass="form-control " runat="server" Visible="false" Width="150px"></asp:TextBox>
<asp:LinkButton ID="LnkEditarUltimoCostoMostrarModal" runat="server" visible="false" CssClass="btn btn-circle btn-sm green" OnClick="LnkEditarUltimoCostoMostrarModal_Click" Text="<i class='fa fa-pencil'></i>" />
</div>
</div>
<div class="row" style="margin-top: 5px;">
@@ -2529,7 +2530,7 @@
</asp:UpdatePanel>
<%-- <asp:UpdatePanel runat="server" ID="UpUltimoCostoModal" UpdateMode="Conditional">
<%-- <asp:UpdatePanel runat="server" ID="UpUltimoCostoModal" UpdateMode="Conditional">
<ContentTemplate>
<div id="" class="modal fade" role="dialog">
<div class="modal-dialog">
@@ -2559,37 +2560,37 @@
</asp:UpdatePanel>--%>
<div id="DVUltimoCostoModal" class="modal ADS fade" role="dialog">
<div class="modal-dialog">
<asp:UpdatePanel ID="UpUltimoCostoModal" class="modal-content rowpadding" tabindex="-1" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
<h4 class="modal-title">Actualizar Ultimo Costo</h4>
</div>
<div class="modal-body">
<div class="form-group form-md-line-input input-iconright" style="width:100px">
<asp:TextBox ID="TxtUltimoCostoModal" runat="server" Width="100px" CausesValidation="true" CssClass="form-control" onkeyup="FormatoMoneda6Decimales(this)" ></asp:TextBox>
<label for="<%= TxtUltimoCostoModal.ClientID.ToString()%>">Ultimo Costo:</label>
<asp:RequiredFieldValidator ID="RfvTxtUltimoCostoModal" runat="server" CssClass="help-block errorimput" ControlToValidate="TxtUltimoCostoModal" ErrorMessage="<b><span style='text-decoration: underline'>ERROR:</span></b><br />El campo <b>''Ultimo Costo''</b> es necesario, por favor ingréselo." ValidationGroup="GrpUltimoCostoModal"></asp:RequiredFieldValidator>
<i></i>
<div id="DVUltimoCostoModal" class="modal ADS fade" role="dialog">
<div class="modal-dialog">
<asp:UpdatePanel ID="UpUltimoCostoModal" class="modal-content rowpadding" tabindex="-1" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
<h4 class="modal-title">Actualizar Ultimo Costo</h4>
</div>
</div>
<div class="modal-footer" style="display: block">
<asp:UpdatePanel ID="UpdatePanel4" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<asp:Button ID="BtnGuardarUltimoCostoModal" runat="server" Text="Guardar" CssClass="btn btn-sm blue" OnClick="BtnGuardarUltimoCostoModal_Click" ValidationGroup="GrpUltimoCostoModal" />
<asp:Button ID="Button2" runat="server" Text="Cancelar" CssClass="btn btn-sm default" data-dismiss="modal" />
</ContentTemplate>
</asp:UpdatePanel>
</div>
</ContentTemplate>
</asp:UpdatePanel>
</div>
</div>
<div class="modal-body">
<div class="form-group form-md-line-input input-iconright" style="width: 100px">
<asp:TextBox ID="TxtUltimoCostoModal" runat="server" Width="100px" CausesValidation="true" CssClass="form-control" onkeyup="FormatoMoneda6Decimales(this)"></asp:TextBox>
<label for="<%= TxtUltimoCostoModal.ClientID.ToString()%>">Ultimo Costo:</label>
<asp:RequiredFieldValidator ID="RfvTxtUltimoCostoModal" runat="server" CssClass="help-block errorimput" ControlToValidate="TxtUltimoCostoModal" ErrorMessage="<b><span style='text-decoration: underline'>ERROR:</span></b><br />El campo <b>''Ultimo Costo''</b> es necesario, por favor ingréselo." ValidationGroup="GrpUltimoCostoModal"></asp:RequiredFieldValidator>
<i></i>
</div>
</div>
<div class="modal-footer" style="display: block">
<asp:UpdatePanel ID="UpdatePanel4" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<asp:Button ID="BtnGuardarUltimoCostoModal" runat="server" Text="Guardar" CssClass="btn btn-sm blue" OnClick="BtnGuardarUltimoCostoModal_Click" ValidationGroup="GrpUltimoCostoModal" />
<asp:Button ID="Button2" runat="server" Text="Cancelar" CssClass="btn btn-sm default" data-dismiss="modal" />
</ContentTemplate>
</asp:UpdatePanel>
</div>
</ContentTemplate>
</asp:UpdatePanel>
</div>
</div>
@@ -2792,38 +2793,38 @@
}
function FormatoMoneda6Decimales(t) {
function FormatoMoneda6Decimales(t) {
var input = t.value.replace(/[^0-9.]/g, "");
var firstDotIndex = input.indexOf(".");
if (firstDotIndex !== -1) {
var beforeDot = input.substring(0, firstDotIndex + 1);
var afterDot = input.substring(firstDotIndex + 1).replace(/\./g, "");
input = beforeDot + afterDot;
}
var decimalIndex = input.indexOf(".");
var integerPart = decimalIndex !== -1 ? input.slice(0, decimalIndex) : input;
var decimalPart = decimalIndex !== -1 ? input.slice(decimalIndex + 1) : "";
if (integerPart === "" && decimalIndex === 0) {
integerPart = "0";
}
if (decimalPart.length > 6) {
decimalPart = decimalPart.substring(0, 6);
}
var reversed = integerPart.split("").reverse().join("");
reversed = reversed.replace(/(\d{3})(?=\d)/g, "$1,");
integerPart = reversed.split("").reverse().join("");
t.value = decimalIndex !== -1
? integerPart + "." + decimalPart
: integerPart;

View File

@@ -356,10 +356,18 @@ Partial Class ProductosyServicios
End If
If CvePS > 0 And UsuarioActual.TienePermisoProceso(402) Then
DVEditaUltimoCosto.Visible = True
If UsuarioActual.TienePermisoProceso(402) Then
If CvePS > 0 Then
LnkEditarUltimoCostoMostrarModal.Visible = True
Else
DivUltimoCosto.Visible = False
End If
TxtUltimoCosto.Visible = True
UpConta.Update()
End If
End If
End Sub
@@ -1423,6 +1431,13 @@ Partial Class ProductosyServicios
End Sub
Protected Sub BtnGuardar_Click(sender As Object, e As System.EventArgs) Handles BtnGuardar.Click
If UsuarioActual.Empresa.Funcionalidad(382) = "1" AndAlso CvePS <= 0 AndAlso DdlTipoPS.SelectedValue = "2" Then
If TxtUltimoCosto.Text.ToDecimal() <= 0 Then
Alert("El campo 'Ultimo costo' es requerido.", TipoMensaje.MsgAdvertencia)
Exit Sub
End If
End If
If DdlFraccionArancelaria.SelectedValue.ToEntero > 0 AndAlso TxtCodigo.Text.Trim.Length = 0 Then
Alert("El campo Numero de Parte / Código es requerido (al seleccionar una Fracción Arancelaria el campo Numero de Parte / Código se vuelve requerido).", TipoMensaje.MsgAdvertencia)
@@ -1583,7 +1598,7 @@ Partial Class ProductosyServicios
CveObjetoImpuesto:=DdlObjetoImpuesto.SelectedValue.ToEntero, Litraje:=TxtLitraje.Text.ToDecimal, RegistroRSCO:=TxtRegistroRSCO.Text, FechaVigenciaRSCO:=TxtFechaVigenciaRSCO.Text.ToDate, VigenciaIndeterminadaRSCO:=ChkFechaIndeterminadaRSCO.Checked,
NombreComercial:=TxtNombreComercial.Text.Trim, NotasAdicionales:=TxtEcommerceNota.Text.Trim, EcommerceEtiquetas:=TxtEcommerceEtiquetas.Text.Trim.Replace(".", ""), EcommercePrecio:=TxtEcommercePrecio.Text.Trim.ToDecimal,
CveClasificacionEcommerce:=DdlEcommerceClasificacion.SelectedValue.ToEntero, EcommerceCantidad:=TxtEcommerceCantidad.Text.Trim.ToDecimal, CodigoAlterno:=TxtCodigoAlterno.Text.Trim, PSAlterno:=TxtPSAlterno.Text.Trim, ProductoExhibicion:=ChkPSExhibicion.Checked,
PorcentajeMinimoUtilidad:=TxtPorMinimoUtilidad.Text.ToDecimal(), CveSelectiva:=DdlSelectiva.SelectedValue.ToEntero()) > 0 Then
PorcentajeMinimoUtilidad:=TxtPorMinimoUtilidad.Text.ToDecimal(), CveSelectiva:=DdlSelectiva.SelectedValue.ToEntero(), UltimoCosto:=TxtUltimoCosto.Text.ToDecimal()) > 0 Then
ViewState("CvePS") = ObjProductosServicios.CvePS
For Each GVR As GridViewRow In GvImpuestosLocales.Rows
If GVR.FCCheckBox("ChkDeduccion").Checked Then