cambios 17/02/2026

This commit is contained in:
2026-02-17 13:47:52 +01:00
parent 79ae74ee26
commit 28e20494ae
51 changed files with 3199 additions and 691 deletions

View File

@@ -1,4 +1,4 @@
<tsWPF:tsUserControl xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
<tsWPFCore:tsUserControl xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
@@ -7,10 +7,10 @@
xmlns:dxg="http://schemas.devexpress.com/winfx/2008/xaml/grid"
xmlns:dxe="http://schemas.devexpress.com/winfx/2008/xaml/editors"
xmlns:dx="http://schemas.devexpress.com/winfx/2008/xaml/core"
xmlns:tsWPF="clr-namespace:tsWPFCore;assembly=tsWPFCore" xmlns:Serialization="clr-namespace:DevExpress.Xpf.LayoutControl.Serialization;assembly=DevExpress.Xpf.LayoutControl.v23.2" x:Class="ucProducto"
xmlns:tsWPFCore="clr-namespace:tsWPFCore;assembly=tsWPFCore" xmlns:Serialization="clr-namespace:DevExpress.Xpf.LayoutControl.Serialization;assembly=DevExpress.Xpf.LayoutControl.v23.2" x:Class="ucProducto"
xmlns:sys="clr-namespace:System;assembly=mscorlib"
mc:Ignorable="d" d:DesignHeight="768" d:DesignWidth="1366">
<tsWPF:tsUserControl.Resources>
<tsWPFCore:tsUserControl.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/tsWPFCore;component/Plantillas.xaml" />
@@ -25,53 +25,77 @@
</Style>
</ResourceDictionary>
</tsWPF:tsUserControl.Resources>
</tsWPFCore:tsUserControl.Resources>
<Grid x:Name="contenido" HorizontalAlignment="Stretch" Width="Auto">
<dxlc:LayoutControl x:Name="LayoutControl1" Orientation="Vertical">
<dxlc:LayoutGroup Header="Datos Producto" x:Name="lgDetalle" View="GroupBox" IsLocked="True" Width="Auto" HorizontalAlignment="Stretch">
<dxlc:LayoutGroup Orientation="Vertical" Width="1250" HorizontalAlignment="Left">
<dxlc:LayoutGroup Orientation="Vertical">
<dxlc:LayoutGroup Orientation="Horizontal">
<tsWPF:tsLayoutItem Label="Código:" Width="240">
<tsWPF:tsLayoutItem.PropiedadesTS>
<tsWPF:PropiedadesTS />
</tsWPF:tsLayoutItem.PropiedadesTS>
<dxe:TextEdit TabIndex="2" EditValue="{Binding Codigo, Mode=TwoWay, NotifyOnSourceUpdated=True, NotifyOnValidationError=true, ValidatesOnExceptions=true}" />
</tsWPF:tsLayoutItem>
<tsWPF:tsLayoutItem Label="Descripción:">
<tsWPF:tsLayoutItem.PropiedadesTS>
<tsWPF:PropiedadesTS Obligatorio="True" Unico="True" />
</tsWPF:tsLayoutItem.PropiedadesTS>
<dxe:TextEdit EditValue="{Binding Descripcion, Mode=TwoWay, NotifyOnSourceUpdated=True, NotifyOnValidationError=true, ValidatesOnExceptions=true}" TabIndex="3" x:Name="teNIF" />
</tsWPF:tsLayoutItem>
<tsWPF:tsLayoutItem Label="Tipo:">
<tsWPF:tsLayoutItem.PropiedadesTS>
<tsWPF:PropiedadesTS UsualCorreccion="False" />
</tsWPF:tsLayoutItem.PropiedadesTS>
<dxe:ComboBoxEdit x:Name="cbTipo" ValueMember="Valor" DisplayMember="Descripcion" EditValue="{Binding Tipo, Mode=TwoWay, NotifyOnSourceUpdated=True, NotifyOnValidationError=true, ValidatesOnExceptions=true}" TabIndex="14" AutoComplete="True" />
</tsWPF:tsLayoutItem>
<tsWPF:tsLayoutItem Label="Fecha Baja:" Width="200">
<tsWPF:tsLayoutItem.PropiedadesTS>
<tsWPF:PropiedadesTS UsualCorreccion="False" />
</tsWPF:tsLayoutItem.PropiedadesTS>
<dxe:DateEdit EditValue="{Binding FechaBaja, Mode=TwoWay, NotifyOnSourceUpdated=True, NotifyOnValidationError=true, ValidatesOnExceptions=true}" TabIndex="4" />
</tsWPF:tsLayoutItem>
<dxlc:LayoutGroup Header="Datos Producto" x:Name="lgDetalle" View="GroupBox" IsLocked="True" Width="Auto" HorizontalAlignment="Stretch" ItemLabelsAlignment="Local" IsCollapsible="True">
<dxlc:LayoutGroup Orientation="Vertical">
<dxlc:LayoutGroup HorizontalAlignment="Left" Width="1280">
<dxlc:LayoutGroup Orientation="Vertical">
<dxlc:LayoutGroup >
<dxlc:LayoutGroup Orientation="Vertical" Width="240" ItemLabelsAlignment="Local">
<tsWPFCore:tsLayoutItem Label="Nº Producto:">
<tsWPFCore:tsLayoutItem.PropiedadesTS>
<tsWPFCore:PropiedadesTS Modificable="NoModificable" />
</tsWPFCore:tsLayoutItem.PropiedadesTS>
<dxe:TextEdit TabIndex="99" EditValue="{Binding NumeroProductoTMP, Mode=OneWay, NotifyOnSourceUpdated=True, NotifyOnValidationError=true, ValidatesOnExceptions=true}" />
</tsWPFCore:tsLayoutItem>
<tsWPFCore:tsLayoutItem Label="Fecha Baja:">
<tsWPFCore:tsLayoutItem.PropiedadesTS>
<tsWPFCore:PropiedadesTS UsualCorreccion="False" />
</tsWPFCore:tsLayoutItem.PropiedadesTS>
<dxe:DateEdit EditValue="{Binding FechaBaja, Mode=TwoWay, NotifyOnSourceUpdated=True, NotifyOnValidationError=true, ValidatesOnExceptions=true}" TabIndex="4" />
</tsWPFCore:tsLayoutItem>
</dxlc:LayoutGroup>
<dxlc:LayoutGroup Orientation="Vertical" Width="380">
<tsWPFCore:tsLayoutItem Label="Código:" >
<tsWPFCore:tsLayoutItem.PropiedadesTS>
<tsWPFCore:PropiedadesTS Unico="True" />
</tsWPFCore:tsLayoutItem.PropiedadesTS>
<dxe:TextEdit TabIndex="2" EditValue="{Binding Codigo, Mode=TwoWay, NotifyOnSourceUpdated=True, NotifyOnValidationError=true, ValidatesOnExceptions=true}" />
</tsWPFCore:tsLayoutItem>
<tsWPFCore:tsLayoutItem Label="Facturar como venta/servicio por defecto.:">
<tsWPFCore:tsLayoutItem.PropiedadesTS>
<tsWPFCore:PropiedadesTS />
</tsWPFCore:tsLayoutItem.PropiedadesTS>
<dxe:CheckEdit EditValue="{Binding FacturarComoVentaPorDefecto, Mode=TwoWay, NotifyOnSourceUpdated=True, NotifyOnValidationError=true, ValidatesOnExceptions=true}" TabIndex="9" />
</tsWPFCore:tsLayoutItem>
</dxlc:LayoutGroup>
<dxlc:LayoutGroup Orientation="Vertical">
<tsWPFCore:tsLayoutItem Label="Descripción:">
<tsWPFCore:tsLayoutItem.PropiedadesTS>
<tsWPFCore:PropiedadesTS Obligatorio="True" Unico="True" />
</tsWPFCore:tsLayoutItem.PropiedadesTS>
<dxe:TextEdit EditValue="{Binding Descripcion, Mode=TwoWay, NotifyOnSourceUpdated=True, NotifyOnValidationError=true, ValidatesOnExceptions=true}" TabIndex="3" x:Name="teNIF" />
</tsWPFCore:tsLayoutItem>
<tsWPFCore:tsLayoutItem Label="Tipo:">
<tsWPFCore:tsLayoutItem.PropiedadesTS>
<tsWPFCore:PropiedadesTS Obligatorio="True" />
</tsWPFCore:tsLayoutItem.PropiedadesTS>
<dxe:ComboBoxEdit x:Name="cbTipo" ValueMember="Valor" DisplayMember="Descripcion" EditValue="{Binding Tipo, Mode=TwoWay, NotifyOnSourceUpdated=True, NotifyOnValidationError=true, ValidatesOnExceptions=true}" TabIndex="14" AutoComplete="True" />
</tsWPFCore:tsLayoutItem>
</dxlc:LayoutGroup>
</dxlc:LayoutGroup>
<tsWPFCore:tsLayoutItem Label="Observaciones:" >
<dxe:TextEdit EditValue="{Binding Observaciones, Mode=TwoWay, NotifyOnSourceUpdated=True, NotifyOnValidationError=true, ValidatesOnExceptions=true}" TabIndex="10" />
</tsWPFCore:tsLayoutItem>
</dxlc:LayoutGroup>
</dxlc:LayoutGroup>
<tsWPF:tsLayoutItem Label="Observaciones:">
<dxe:TextEdit EditValue="{Binding Observaciones, Mode=TwoWay, NotifyOnSourceUpdated=True, NotifyOnValidationError=true, ValidatesOnExceptions=true}" TabIndex="10" />
</tsWPF:tsLayoutItem>
</dxlc:LayoutGroup>
</dxlc:LayoutGroup>
<dxlc:LayoutGroup Header="Tarifas" View="GroupBox" IsLocked="True" Width="Auto" HorizontalAlignment="Stretch" ItemLabelsAlignment="Local">
<dxlc:LayoutGroup Width="400">
<tsWPF:tsLayoutItem Label="Precio:">
<dxlc:LayoutGroup Header="Precios" View="GroupBox" IsLocked="True" Width="Auto" HorizontalAlignment="Stretch" ItemLabelsAlignment="Local">
<dxlc:LayoutGroup Width="900">
<tsWPFCore:tsLayoutItem Label="Precio Venta:">
<dxe:TextEdit TabIndex="11" Mask="c4" MaskType="Numeric" MaskUseAsDisplayFormat="True" EditValue="{Binding PrecioVenta, Converter={StaticResource DoubleToDecimalConverter}, Mode=TwoWay, NotifyOnSourceUpdated=True, NotifyOnValidationError=true, ValidatesOnExceptions=true}" />
</tsWPF:tsLayoutItem>
<tsWPF:tsLayoutItem Label="Precio Costo:">
</tsWPFCore:tsLayoutItem>
<tsWPFCore:tsLayoutItem Label="Precio Alquiler Mensual:">
<dxe:TextEdit TabIndex="12" Mask="c4" MaskType="Numeric" MaskUseAsDisplayFormat="True" EditValue="{Binding PrecioAlquilerMensual, Converter={StaticResource DoubleToDecimalConverter}, Mode=TwoWay, NotifyOnSourceUpdated=True, NotifyOnValidationError=true, ValidatesOnExceptions=true}" />
</tsWPFCore:tsLayoutItem>
<tsWPFCore:tsLayoutItem Label="Ultimo Precio Compra:">
<dxe:TextEdit TabIndex="13" Mask="c4" MaskType="Numeric" MaskUseAsDisplayFormat="True" EditValue="{Binding UltimoPrecioCompra, Converter={StaticResource DoubleToDecimalConverter}, Mode=TwoWay, NotifyOnSourceUpdated=True, NotifyOnValidationError=true, ValidatesOnExceptions=true}" />
</tsWPF:tsLayoutItem>
</tsWPFCore:tsLayoutItem>
</dxlc:LayoutGroup>
</dxlc:LayoutGroup>
@@ -82,39 +106,285 @@
</dx:DXTabControl.View>
<dx:DXTabItem Header="Stocks">
<dxlc:LayoutGroup Orientation="Vertical">
<dxlc:LayoutGroup Header="Descglose por almacenes" View="GroupBox">
<tsWPF:tsGridControl x:Name="gcStocksAlmacenes" NombreTablaBase="desgloseproductos" TabIndex="41">
<tsWPF:tsGridControl.PropiedadesTS>
<tsWPF:PropiedadesTS Modificable="NoModificable" />
</tsWPF:tsGridControl.PropiedadesTS>
<tsWPF:tsGridControl.View>
<tsWPF:tsTableView ShowGroupPanel="false" x:Name="tvStocksAlmacenes" IsDetailButtonVisibleBinding="{Binding Row.ContieneHijos}">
</tsWPF:tsTableView>
</tsWPF:tsGridControl.View>
<dxlc:LayoutGroup Header="Desglose por almacenes" View="GroupBox">
<tsWPFCore:tsGridControl x:Name="gcStocksAlmacenes" NombreTablaBase="desgloseproductos" TabIndex="41">
<tsWPFCore:tsGridControl.PropiedadesTS>
<tsWPFCore:PropiedadesTS Modificable="NoModificable" />
</tsWPFCore:tsGridControl.PropiedadesTS>
<tsWPFCore:tsGridControl.View>
<tsWPFCore:tsTableView ShowGroupPanel="false" x:Name="tvStocksAlmacenes" IsDetailButtonVisibleBinding="{Binding Row.ContieneHijos}">
</tsWPFCore:tsTableView>
</tsWPFCore:tsGridControl.View>
<dxg:GridControl.Columns>
<tsWPF:tsGridColumn FieldName="Almacen" Header="Almacén" IsSmart="True" Width="450" SoloLectura="True" CellTemplate="{DynamicResource VerDetalleTemplate}" />
<tsWPF:tsGridColumn FieldName="TipoAlmacen" Header="Tipo Almacén" IsSmart="True" Width="200" SoloLectura="True" />
<tsWPF:tsGridColumn FieldName="Unidades" IsSmart="True" Width="100">
<tsWPFCore:tsGridColumn FieldName="Almacen" Header="Almacén" IsSmart="True" Width="450" SoloLectura="True" CellTemplate="{DynamicResource VerDetalleTemplate}" />
<tsWPFCore:tsGridColumn FieldName="TipoAlmacen" Header="Tipo Almacén" IsSmart="True" Width="200" SoloLectura="True" />
<tsWPFCore:tsGridColumn FieldName="Unidades" IsSmart="True" Width="100">
<dxg:GridColumn.EditSettings>
<dxe:TextEditSettings MaskType="Numeric" Mask="n0" MaskUseAsDisplayFormat="True" HorizontalContentAlignment="Right" />
</dxg:GridColumn.EditSettings>
</tsWPF:tsGridColumn>
</tsWPFCore:tsGridColumn>
</dxg:GridControl.Columns>
</tsWPF:tsGridControl>
</tsWPFCore:tsGridControl>
</dxlc:LayoutGroup>
<dxlc:LayoutGroup Header="Unidades" View="GroupBox" IsLocked="True" Width="Auto" HorizontalAlignment="Stretch" ItemLabelsAlignment="Local" IsCollapsible="True" >
<dxlc:LayoutGroup Orientation="Vertical">
<dxlc:LayoutGroup Orientation="Vertical" ItemLabelsAlignment="Local">
<dxlc:LayoutGroup Orientation="Horizontal" Width="1000" Height="120">
<dxlc:LayoutGroup Orientation="Vertical" Width="250" HorizontalAlignment="Left">
<tsWPFCore:tsLayoutItem Label="Uds. Iniciales/Fabricadas:">
<tsWPFCore:tsLayoutItem.PropiedadesTS>
<tsWPFCore:PropiedadesTS Modificable="NoModificable" />
</tsWPFCore:tsLayoutItem.PropiedadesTS>
<dxe:TextEdit TabIndex="14" Mask="N0" MaskType="Numeric" MaskUseAsDisplayFormat="True" EditValue="{Binding UnidadesInicialesOFabricadas, Converter={StaticResource DoubleToDecimalConverter}, Mode=TwoWay, NotifyOnSourceUpdated=True, NotifyOnValidationError=true, ValidatesOnExceptions=true}" />
</tsWPFCore:tsLayoutItem>
<tsWPFCore:tsLayoutItem Label="Unidades Desechadas:">
<tsWPFCore:tsLayoutItem.PropiedadesTS>
<tsWPFCore:PropiedadesTS Modificable="NoModificable" />
</tsWPFCore:tsLayoutItem.PropiedadesTS>
<dxe:TextEdit TabIndex="29" Mask="N0" MaskType="Numeric" MaskUseAsDisplayFormat="True" EditValue="{Binding UnidadesDesechadas, Converter={StaticResource DoubleToDecimalConverter}, Mode=OneWay, NotifyOnSourceUpdated=True, NotifyOnValidationError=true, ValidatesOnExceptions=true}" />
</tsWPFCore:tsLayoutItem>
<tsWPFCore:tsLayoutItem Label="Total Unidades:" FontWeight="Bold">
<tsWPFCore:tsLayoutItem.PropiedadesTS>
<tsWPFCore:PropiedadesTS Modificable="NoModificable" />
</tsWPFCore:tsLayoutItem.PropiedadesTS>
<dxe:TextEdit TabIndex="39" Mask="N0" MaskType="Numeric" MaskUseAsDisplayFormat="True" EditValue="{Binding TotalUnidades, Converter={StaticResource DoubleToDecimalConverter}, Mode=TwoWay, NotifyOnSourceUpdated=True, NotifyOnValidationError=true, ValidatesOnExceptions=true}" />
</tsWPFCore:tsLayoutItem>
<tsWPFCore:tsLayoutItem Label="Unidades Disponibles:" FontWeight="Bold">
<tsWPFCore:tsLayoutItem.PropiedadesTS>
<tsWPFCore:PropiedadesTS Modificable="NoModificable" />
</tsWPFCore:tsLayoutItem.PropiedadesTS>
<dxe:TextEdit TabIndex="39" Mask="N0" MaskType="Numeric" MaskUseAsDisplayFormat="True" EditValue="{Binding UnidadesDisponibles, Converter={StaticResource DoubleToDecimalConverter}, Mode=OneWay, NotifyOnSourceUpdated=True, NotifyOnValidationError=true, ValidatesOnExceptions=true}" />
</tsWPFCore:tsLayoutItem>
</dxlc:LayoutGroup>
<dxlc:LayoutGroup Orientation="Vertical" Width="700">
<dxlc:LayoutGroup>
<dxlc:LayoutGroup Orientation="Vertical" Width="200">
<tsWPFCore:tsLayoutItem Label="Unidades Compradas:">
<tsWPFCore:tsLayoutItem.PropiedadesTS>
<tsWPFCore:PropiedadesTS Modificable="NoModificable" />
</tsWPFCore:tsLayoutItem.PropiedadesTS>
<dxe:TextEdit TabIndex="19" Mask="N0" MaskType="Numeric" MaskUseAsDisplayFormat="True" EditValue="{Binding UnidadesCompradas, Converter={StaticResource DoubleToDecimalConverter}, Mode=OneWay, NotifyOnSourceUpdated=True, NotifyOnValidationError=true, ValidatesOnExceptions=true}" />
</tsWPFCore:tsLayoutItem>
<tsWPFCore:tsLayoutItem Label="Unidades Vendidas:">
<tsWPFCore:tsLayoutItem.PropiedadesTS>
<tsWPFCore:PropiedadesTS Modificable="NoModificable" />
</tsWPFCore:tsLayoutItem.PropiedadesTS>
<dxe:TextEdit TabIndex="24" Mask="N0" MaskType="Numeric" MaskUseAsDisplayFormat="True" EditValue="{Binding UnidadesVendidas, Converter={StaticResource DoubleToDecimalConverter}, Mode=OneWay, NotifyOnSourceUpdated=True, NotifyOnValidationError=true, ValidatesOnExceptions=true}" />
</tsWPFCore:tsLayoutItem>
</dxlc:LayoutGroup>
<dxlc:LayoutGroup Orientation="Vertical" Width="250">
<tsWPFCore:tsLayoutItem Label="Unidades Subarrendadas:">
<tsWPFCore:tsLayoutItem.PropiedadesTS>
<tsWPFCore:PropiedadesTS Modificable="NoModificable" />
</tsWPFCore:tsLayoutItem.PropiedadesTS>
<dxe:TextEdit TabIndex="24" Mask="N0" MaskType="Numeric" MaskUseAsDisplayFormat="True" EditValue="{Binding UnidadesSubAlquiladas, Converter={StaticResource DoubleToDecimalConverter}, Mode=OneWay, NotifyOnSourceUpdated=True, NotifyOnValidationError=true, ValidatesOnExceptions=true}" />
</tsWPFCore:tsLayoutItem>
<tsWPFCore:tsLayoutItem Label="Unidades Alquiladas:">
<tsWPFCore:tsLayoutItem.PropiedadesTS>
<tsWPFCore:PropiedadesTS Modificable="NoModificable" />
</tsWPFCore:tsLayoutItem.PropiedadesTS>
<dxe:TextEdit TabIndex="29" Mask="N0" MaskType="Numeric" MaskUseAsDisplayFormat="True" EditValue="{Binding UnidadesAlquiladas, Converter={StaticResource DoubleToDecimalConverter}, Mode=OneWay, NotifyOnSourceUpdated=True, NotifyOnValidationError=true, ValidatesOnExceptions=true}" />
</tsWPFCore:tsLayoutItem>
</dxlc:LayoutGroup>
<dxlc:LayoutGroup Orientation="Vertical" VerticalAlignment="Bottom" >
<tsWPFCore:tsLayoutItem Label="Unidades En Reparación:">
<tsWPFCore:tsLayoutItem.PropiedadesTS>
<tsWPFCore:PropiedadesTS Modificable="NoModificable" />
</tsWPFCore:tsLayoutItem.PropiedadesTS>
<dxe:TextEdit TabIndex="29" Mask="N0" MaskType="Numeric" MaskUseAsDisplayFormat="True" EditValue="{Binding UnidadesAveriadas, Converter={StaticResource DoubleToDecimalConverter}, Mode=OneWay, NotifyOnSourceUpdated=True, NotifyOnValidationError=true, ValidatesOnExceptions=true}" />
</tsWPFCore:tsLayoutItem>
</dxlc:LayoutGroup>
</dxlc:LayoutGroup>
<dxlc:LayoutGroup Header="LayoutGroup" Orientation="Vertical">
<TextBlock Margin="5,2,0,0" Text="(Stock Inicial + Unidades Compradas + Unidades Subarrendadas - Unidades Desechadas - Unidades Vendidas)" FontWeight="Bold" Height="22"></TextBlock>
<TextBlock Margin="5,0,0,0" Text="(Total Unidades - Unidades Alquiladas - Unidades En Reparacion)" FontWeight="Bold"></TextBlock>
</dxlc:LayoutGroup>
</dxlc:LayoutGroup>
</dxlc:LayoutGroup>
</dxlc:LayoutGroup>
</dxlc:LayoutGroup>
</dxlc:LayoutGroup>
</dxlc:LayoutGroup>
</dx:DXTabItem>
<dx:DXTabItem Header="Stocks Por Empresas">
<tsWPFCore:tsGridControl x:Name="gcStocksEmpresas" TabIndex="41">
<tsWPFCore:tsGridControl.PropiedadesTS>
<tsWPFCore:PropiedadesTS Modificable="NoModificable" />
</tsWPFCore:tsGridControl.PropiedadesTS>
<tsWPFCore:tsGridControl.View>
<tsWPFCore:tsTableView ShowGroupPanel="false" x:Name="tvStocksEmpresas" >
</tsWPFCore:tsTableView>
</tsWPFCore:tsGridControl.View>
<dxg:GridControl.Columns>
<tsWPFCore:tsGridColumn FieldName="NombreEmpresa" Header="Empresa" IsSmart="True" Width="300" SoloLectura="True" />
<tsWPFCore:tsGridColumn FieldName="TotalUnidades" IsSmart="True" Width="95">
<dxg:GridColumn.EditSettings>
<dxe:TextEditSettings MaskType="Numeric" Mask="n0" MaskUseAsDisplayFormat="True" HorizontalContentAlignment="Right" />
</dxg:GridColumn.EditSettings>
</tsWPFCore:tsGridColumn>
<tsWPFCore:tsGridColumn FieldName="UnidadesCompradas" IsSmart="True" Width="130">
<dxg:GridColumn.EditSettings>
<dxe:TextEditSettings MaskType="Numeric" Mask="n0" MaskUseAsDisplayFormat="True" HorizontalContentAlignment="Right" />
</dxg:GridColumn.EditSettings>
</tsWPFCore:tsGridColumn>
<tsWPFCore:tsGridColumn FieldName="UnidadesAlquiladas" IsSmart="True" Width="130">
<dxg:GridColumn.EditSettings>
<dxe:TextEditSettings MaskType="Numeric" Mask="n0" MaskUseAsDisplayFormat="True" HorizontalContentAlignment="Right" />
</dxg:GridColumn.EditSettings>
</tsWPFCore:tsGridColumn>
<tsWPFCore:tsGridColumn FieldName="UnidadesAveriadas" IsSmart="True" Width="130">
<dxg:GridColumn.EditSettings>
<dxe:TextEditSettings MaskType="Numeric" Mask="n0" MaskUseAsDisplayFormat="True" HorizontalContentAlignment="Right" />
</dxg:GridColumn.EditSettings>
</tsWPFCore:tsGridColumn>
<tsWPFCore:tsGridColumn FieldName="UnidadesVendidas" IsSmart="True" Width="130">
<dxg:GridColumn.EditSettings>
<dxe:TextEditSettings MaskType="Numeric" Mask="n0" MaskUseAsDisplayFormat="True" HorizontalContentAlignment="Right" />
</dxg:GridColumn.EditSettings>
</tsWPFCore:tsGridColumn>
<tsWPFCore:tsGridColumn FieldName="UnidadesSubAlquiladas" IsSmart="True" Width="150">
<dxg:GridColumn.EditSettings>
<dxe:TextEditSettings MaskType="Numeric" Mask="n0" MaskUseAsDisplayFormat="True" HorizontalContentAlignment="Right" />
</dxg:GridColumn.EditSettings>
</tsWPFCore:tsGridColumn>
<tsWPFCore:tsGridColumn FieldName="UnidadesDesechadas" IsSmart="True" Width="130">
<dxg:GridColumn.EditSettings>
<dxe:TextEditSettings MaskType="Numeric" Mask="n0" MaskUseAsDisplayFormat="True" HorizontalContentAlignment="Right" />
</dxg:GridColumn.EditSettings>
</tsWPFCore:tsGridColumn>
<tsWPFCore:tsGridColumn FieldName="UnidadesDisponibles" IsSmart="True" Width="130">
<dxg:GridColumn.EditSettings>
<dxe:TextEditSettings MaskType="Numeric" Mask="n0" MaskUseAsDisplayFormat="True" HorizontalContentAlignment="Right" />
</dxg:GridColumn.EditSettings>
</tsWPFCore:tsGridColumn>
</dxg:GridControl.Columns>
</tsWPFCore:tsGridControl>
</dx:DXTabItem>
<dx:DXTabItem Header="Desglose de Material">
<tsWPFCore:tsGridControl x:Name="gcDesglose" NombreTablaBase="desgloseproductos" TabIndex="41">
<tsWPFCore:tsGridControl.PropiedadesTSGC>
<tsWPFCore:PropiedadesTSGC CamposUnicos="idProducto" />
</tsWPFCore:tsGridControl.PropiedadesTSGC>
<tsWPFCore:tsGridControl.View>
<tsWPFCore:tsTableView ShowGroupPanel="false" x:Name="tvdesglose" IsDetailButtonVisibleBinding="{Binding Row.ContieneHijos}">
<dxg:TableView.FormatConditions>
<dxg:FormatCondition Expression="[ContieneHijos]" FieldName="{x:Null}">
<dx:Format Foreground="Blue" FontWeight="Bold" />
</dxg:FormatCondition>
</dxg:TableView.FormatConditions>
</tsWPFCore:tsTableView>
</tsWPFCore:tsGridControl.View>
<dxg:GridControl.Columns>
<tsWPFCore:tsGridColumn FieldName="productos1.idProducto" Header="Código" IsSmart="True" Width="90" SoloLectura="True" CellTemplate="{DynamicResource VerDetalleTemplate}" />
<tsWPFCore:tsGridColumn FieldName="productos1.Descripcion" Header="Descripcion" IsSmart="True" Width="250" SoloLectura="True" />
<tsWPFCore:tsGridColumn FieldName="Unidades" Header="Unidades" IsSmart="True" Width="70">
<dxg:GridColumn.EditSettings>
<dxe:TextEditSettings MaskType="Numeric" Mask="n0" MaskUseAsDisplayFormat="True" HorizontalContentAlignment="Right" />
</dxg:GridColumn.EditSettings>
</tsWPFCore:tsGridColumn>
<tsWPFCore:tsGridColumn FieldName="UnidadesMinimas" Header="Unidades Mínimas" IsSmart="True" Width="140">
<dxg:GridColumn.EditSettings>
<dxe:TextEditSettings MaskType="Numeric" Mask="n0" MaskUseAsDisplayFormat="True" HorizontalContentAlignment="Right" />
</dxg:GridColumn.EditSettings>
</tsWPFCore:tsGridColumn>
<tsWPFCore:tsGridColumn FieldName="UnidadesMaximas" Header="Unidades Máximas" IsSmart="True" Width="140">
<dxg:GridColumn.EditSettings>
<dxe:TextEditSettings MaskType="Numeric" Mask="n0" MaskUseAsDisplayFormat="True" HorizontalContentAlignment="Right" />
</dxg:GridColumn.EditSettings>
</tsWPFCore:tsGridColumn>
</dxg:GridControl.Columns>
<dxg:GridControl.DetailDescriptor>
<dxg:TabViewDetailDescriptor>
<dxg:TabViewDetailDescriptor.DetailDescriptors>
<dxg:DataControlDetailDescriptor ItemsSourcePath="productos1.desgloseproductos">
<dxg:DataControlDetailDescriptor.DataControl>
<tsWPFCore:tsGridControl x:Name="gcDesgloseHijos">
<dxg:GridControl.View>
<dxg:TableView x:Name="tvDesgloseHijos" DetailHeaderContent="Desglose Producto" ShowGroupPanel="False" RowStyle="{StaticResource RejillaAnidadaStyle}" IsDetailButtonVisibleBinding="{Binding Row.ContieneHijos}" />
</dxg:GridControl.View>
<dxg:GridControl.Columns>
<tsWPFCore:tsGridColumn FieldName="productos1.idProducto" Header="Código" IsSmart="True" Width="90" SoloLectura="True" CellTemplate="{DynamicResource VerDetalleTemplate}" />
<tsWPFCore:tsGridColumn FieldName="productos1.Descripcion" Header="Descripcion" IsSmart="True" Width="250" SoloLectura="True" />
<tsWPFCore:tsGridColumn FieldName="Unidades" Header="Unidades" IsSmart="True" Width="70">
<dxg:GridColumn.EditSettings>
<dxe:TextEditSettings MaskType="Numeric" Mask="n0" MaskUseAsDisplayFormat="True" HorizontalContentAlignment="Right" />
</dxg:GridColumn.EditSettings>
</tsWPFCore:tsGridColumn>
<tsWPFCore:tsGridColumn FieldName="UnidadesMinimas" Header="Unidades Mínimas" IsSmart="True" Width="140">
<dxg:GridColumn.EditSettings>
<dxe:TextEditSettings MaskType="Numeric" Mask="n0" MaskUseAsDisplayFormat="True" HorizontalContentAlignment="Right" />
</dxg:GridColumn.EditSettings>
</tsWPFCore:tsGridColumn>
<tsWPFCore:tsGridColumn FieldName="UnidadesMaximas" Header="Unidades Máximas" IsSmart="True" Width="140">
<dxg:GridColumn.EditSettings>
<dxe:TextEditSettings MaskType="Numeric" Mask="n0" MaskUseAsDisplayFormat="True" HorizontalContentAlignment="Right" />
</dxg:GridColumn.EditSettings>
</tsWPFCore:tsGridColumn>
</dxg:GridControl.Columns>
<!--<dx:DXTabItem Header="Albaranes en los que aparece">
<tsWPF:tsGridControl x:Name="gcAlbaranes" TabIndex="43">
<tsWPF:tsGridControl.PropiedadesTS>
<tsWPF:PropiedadesTS Modificable="NoModificable" />
</tsWPF:tsGridControl.PropiedadesTS>
<tsWPF:tsGridControl.View>
<tsWPF:tsTableView ShowSearchPanelMode="Always" ShowTotalSummary="True" x:Name="tvProductosAoV" ShowGroupFooters="True" />
</tsWPF:tsGridControl.View>
<dxg:GridControl.DetailDescriptor>
<dxg:TabViewDetailDescriptor>
<dxg:TabViewDetailDescriptor.DetailDescriptors>
<dxg:DataControlDetailDescriptor ItemsSourcePath="productos1.desgloseproductos">
<dxg:DataControlDetailDescriptor.DataControl>
<tsWPFCore:tsGridControl x:Name="gcDesgloseNietos">
<dxg:GridControl.View>
<dxg:TableView x:Name="tvDesgloseNietos" DetailHeaderContent="Desglose Producto" ShowGroupPanel="False" RowStyle="{StaticResource RejillaAnidadaNietaStyle}" IsDetailButtonVisibleBinding="{Binding Row.ContieneHijos}" />
</dxg:GridControl.View>
<dxg:GridControl.Columns>
<tsWPFCore:tsGridColumn FieldName="productos1.idProducto" Header="Código" IsSmart="True" Width="90" SoloLectura="True" CellTemplate="{DynamicResource VerDetalleTemplate}" />
<tsWPFCore:tsGridColumn FieldName="productos1.Descripcion" Header="Descripcion" IsSmart="True" Width="250" SoloLectura="True" />
<tsWPFCore:tsGridColumn FieldName="Unidades" Header="Unidades" IsSmart="True" Width="70">
<dxg:GridColumn.EditSettings>
<dxe:TextEditSettings MaskType="Numeric" Mask="n0" MaskUseAsDisplayFormat="True" HorizontalContentAlignment="Right" />
</dxg:GridColumn.EditSettings>
</tsWPFCore:tsGridColumn>
<tsWPFCore:tsGridColumn FieldName="UnidadesMinimas" Header="Unidades Mínimas" IsSmart="True" Width="140">
<dxg:GridColumn.EditSettings>
<dxe:TextEditSettings MaskType="Numeric" Mask="n0" MaskUseAsDisplayFormat="True" HorizontalContentAlignment="Right" />
</dxg:GridColumn.EditSettings>
</tsWPFCore:tsGridColumn>
<tsWPFCore:tsGridColumn FieldName="UnidadesMaximas" Header="Unidades Máximas" IsSmart="True" Width="140">
<dxg:GridColumn.EditSettings>
<dxe:TextEditSettings MaskType="Numeric" Mask="n0" MaskUseAsDisplayFormat="True" HorizontalContentAlignment="Right" />
</dxg:GridColumn.EditSettings>
</tsWPFCore:tsGridColumn>
</dxg:GridControl.Columns>
</tsWPFCore:tsGridControl>
</dxg:DataControlDetailDescriptor.DataControl>
</dxg:DataControlDetailDescriptor>
</dxg:TabViewDetailDescriptor.DetailDescriptors>
</dxg:TabViewDetailDescriptor>
</dxg:GridControl.DetailDescriptor>
</tsWPFCore:tsGridControl>
</dxg:DataControlDetailDescriptor.DataControl>
</dxg:DataControlDetailDescriptor>
</dxg:TabViewDetailDescriptor.DetailDescriptors>
</dxg:TabViewDetailDescriptor>
</dxg:GridControl.DetailDescriptor>
</tsWPFCore:tsGridControl>
</dx:DXTabItem>
<dx:DXTabItem Header="Albaranes en los que aparece">
<tsWPFCore:tsGridControl x:Name="gcAlbaranes" TabIndex="43">
<tsWPFCore:tsGridControl.PropiedadesTS>
<tsWPFCore:PropiedadesTS Modificable="NoModificable" />
</tsWPFCore:tsGridControl.PropiedadesTS>
<tsWPFCore:tsGridControl.View>
<tsWPFCore:tsTableView ShowSearchPanelMode="Always" ShowTotalSummary="True" x:Name="tvProductosAoV" ShowGroupFooters="True" />
</tsWPFCore:tsGridControl.View>
<dxg:GridColumn FieldName="NumeroAlbaran" Header="Nº Albarán" IsSmart="True" Width="120" CellTemplate="{DynamicResource VerDetalleTemplate}" />
<dxg:GridColumn FieldName="albaranes.Fecha" Header="Fecha" IsSmart="True" Width="150">
<dxg:GridColumn.EditSettings>
@@ -129,71 +399,18 @@
</dxg:GridColumn.EditSettings>
</dxg:GridColumn>
<dxg:GridColumn FieldName="Entidad" Header="Cliente/Proveedor" Width="300" IsSmart="True" CellTemplate="{DynamicResource VerDetalleTemplate}" />
<dxg:GridColumn FieldName="albaranes.DescripcionEvento" Header="Evento" Width="300" />
<dxg:GridColumn FieldName="albaranes.DescripcionObra" Header="Obra" Width="300" />
<dxg:GridColumn FieldName="EsVenta" IsSmart="True" Width="60">
<dxg:GridColumn.EditSettings>
<dxe:CheckEditSettings IsThreeState="False">
</dxe:CheckEditSettings>
</dxg:GridColumn.EditSettings>
</dxg:GridColumn>
</tsWPF:tsGridControl>
</tsWPFCore:tsGridControl>
</dx:DXTabItem>
<dx:DXTabItem Header="Facturas en las que aparece">
<tsWPF:tsGridControl x:Name="gcFacturas" TabIndex="43">
<tsWPF:tsGridControl.PropiedadesTS>
<tsWPF:PropiedadesTS Modificable="NoModificable" />
</tsWPF:tsGridControl.PropiedadesTS>
<tsWPF:tsGridControl.View>
<tsWPF:tsTableView ShowSearchPanelMode="Always" ShowTotalSummary="True" x:Name="tvFacturas" ShowGroupFooters="True" />
</tsWPF:tsGridControl.View>
<dxg:GridColumn FieldName="NumeroFactura" Header="Nº Factura" IsSmart="True" Width="120" CellTemplate="{DynamicResource VerDetalleTemplate}" />
<dxg:GridColumn FieldName="idFacturaNavigation.Fecha" Header="Fecha" IsSmart="True" Width="150">
<dxg:GridColumn.EditSettings>
<dxe:DateEditSettings DisplayFormat="dd/MM/yyyy" />
</dxg:GridColumn.EditSettings>
</dxg:GridColumn>
<dxg:GridColumn FieldName="AlmacenOrigen" Header="Almacén Origen" IsSmart="True" Width="300" />
<dxg:GridColumn FieldName="AlmacenDestino" Header="Almacén Destino" IsSmart="True" Width="300" />
<dxg:GridColumn FieldName="Cantidad" Header="Cantidad" IsSmart="True" Width="70">
<dxg:GridColumn.EditSettings>
<dxe:TextEditSettings MaskType="Numeric" Mask="n0" MaskUseAsDisplayFormat="True" HorizontalContentAlignment="Right" />
</dxg:GridColumn.EditSettings>
</dxg:GridColumn>
<dxg:GridColumn FieldName="Entidad" Header="Cliente/Proveedor" Width="300" IsSmart="True" CellTemplate="{DynamicResource VerDetalleTemplate}" />
<dxg:GridColumn FieldName="albaranes.DescripcionEvento" Header="Evento" Width="300" />
<dxg:GridColumn FieldName="EsVenta" IsSmart="True" Width="60">
<dxg:GridColumn.EditSettings>
<dxe:CheckEditSettings IsThreeState="False">
</dxe:CheckEditSettings>
</dxg:GridColumn.EditSettings>
</dxg:GridColumn>
</tsWPF:tsGridControl>
</dx:DXTabItem>
<dx:DXTabItem Header="Registro de cambios">
<dxlc:LayoutGroup Orientation="Vertical">
<tsWPF:tsGridControl x:Name="gcLogs" TabIndex="45">
<tsWPF:tsGridControl.PropiedadesTS>
<tsWPF:PropiedadesTS Modificable="NoModificable" />
</tsWPF:tsGridControl.PropiedadesTS>
<dxg:GridControl.View>
<tsWPF:tsTableView x:Name="tvLogs" ShowSearchPanelMode="Default" ShowGroupPanel="False" />
</dxg:GridControl.View>
<dxg:GridControl.Columns>
<dxg:GridColumn FieldName="idLog" Header="Nº Cambio" IsSmart="True" CellTemplate="{DynamicResource VerDetalleTemplate}" />
<dxg:GridColumn FieldName="FechaHora" Header="Fecha Hora Cambio">
<dxg:GridColumn.EditSettings>
<dxe:TextEditSettings MaskType="DateTime" MaskUseAsDisplayFormat="True" Mask="dd/MM/yyyy HH:mm" />
</dxg:GridColumn.EditSettings>
</dxg:GridColumn>
<dxg:GridColumn FieldName="Usuario" Header="Usuario" Width="250" IsSmart="True" />
<dxg:GridColumn FieldName="ip" Header="Dirección IP" IsSmart="True" Width="150" />
</dxg:GridControl.Columns>
</tsWPF:tsGridControl>
</dxlc:LayoutGroup>
</dx:DXTabItem>-->
</dx:DXTabControl>
</dxlc:LayoutControl>
</Grid>
</tsWPF:tsUserControl>
</tsWPFCore:tsUserControl>

View File

@@ -1,14 +1,13 @@
Imports bdGrupoSanchoToro.db
Imports DevExpress.Xpf.Bars
Imports bdGrupoSanchoToro.db.tscGrupoSanchoToro
Imports bdGrupoSanchoToro.db.Utilidades
Imports DevExpress.Xpf.Grid
Imports System.Collections
Imports tsWPFCore
Imports DevExpress.Xpf.Core
Imports DevExpress.XtraSplashScreen
Imports System.Collections
Imports bdGrupoSanchoToro.db
Imports bdGrupoSanchoToro.db.productos
Imports bdGrupoSanchoToro.db.Utilidades
Imports DevExpress.Xpf.Bars
Imports DevExpress.Xpf.Core
Imports DevExpress.Xpf.Grid
Imports DevExpress.XtraSplashScreen
Imports Microsoft.EntityFrameworkCore
Imports tsWPFCore
Public Class ucProducto
@@ -20,31 +19,31 @@ Public Class ucProducto
Public Overrides Function EstablecedcPrincipal(Optional Background As Boolean = False, Optional FuerzaNuevo As Boolean = False, Optional Refrescar As Boolean = False) As tsUtilidades.EstadosAplicacion
Dim NuevoEstado As tsUtilidades.EstadosAplicacion
If idLog.HasValue Then
Try
Dim log = bd.logs.First(Function(x) x.idLog = idLog)
ra = tsUtilidades.Utilidades.DeserializarSinErrores(log.Log, GetType(productos))
If ra.idUsuarioCreador.HasValue Then ra.idUsuarioCreadorNavigation = bd.usuarios.FirstOrDefault(Function(x) x.idUsuario = ra.idUsuarioCreador.Value)
If ra.idUsuarioModificador.HasValue Then ra.idUsuarioModificadorNavigation = bd.usuarios.FirstOrDefault(Function(x) x.idUsuario = ra.idUsuarioModificador.Value)
If bd.logs.Any(Function(x) x.idRelacionado = log.idLog AndAlso x.Aplicacion = "ARTICULOS") Then
Dim entspol = bd.logs.First(Function(x) x.idRelacionado = log.idLog AndAlso x.Aplicacion = "ARTICULOS")
Dim ld = tsUtilidades.Utilidades.DeserializarSinErrores(entspol.Log, GetType(List(Of articulos)))
For Each d In ld
ra.articulos.Add(d)
Next
End If
NuevoEstado = tsUtilidades.EstadosAplicacion.ModificandoRegistro
Catch EX As Exception
Throw New Exception("No ha sido posible mostrar el registro del cambio (id " & idLog.Value.ToString & ").", EX)
End Try
'Try
' Dim log = bd.logs.First(Function(x) x.idLog = idLog)
' ra = tsUtilidades.Utilidades.DeserializarSinErrores(log.LogXML, GetType(productos))
' If ra.idUsuarioCreador.HasValue Then ra.idUsuarioCreadorNavigation = bd.usuarios.FirstOrDefault(Function(x) x.idUsuario = ra.idUsuarioCreador.Value)
' If ra.idUsuarioModificador.HasValue Then ra.idUsuarioModificadorNavigation = bd.usuarios.FirstOrDefault(Function(x) x.idUsuario = ra.idUsuarioModificador.Value)
' If bd.logs.Any(Function(x) x.idRelacionado = log.idLog AndAlso x.Aplicacion = "ARTICULOS") Then
' Dim entspol = bd.logs.First(Function(x) x.idRelacionado = log.idLog AndAlso x.Aplicacion = "ARTICULOS")
' Dim ld = tsUtilidades.Utilidades.DeserializarSinErrores(entspol.LogXML, GetType(List(Of articulos)))
' For Each d In ld
' ra.articulos.Add(d)
' Next
' End If
' NuevoEstado = tsUtilidades.EstadosAplicacion.ModificandoRegistro
'Catch EX As Exception
' Throw New Exception("No ha sido posible mostrar el registro del cambio (id " & idLog.Value.ToString & ").", EX)
'End Try
Else
If Estado = tsUtilidades.EstadosAplicacion.Nuevo OrElse _idproducto Is Nothing OrElse FuerzaNuevo Then
ra = New productos
'ra.TotalUnidades = 0
'ra.UnidadesVendidas = 0
'ra.UnidadesAlquiladas = 0
'ra.UnidadesAveriadas = 0
'ra.UnidadesDesechadas = 0
'ra.FacturarComoVentaPorDefecto = False
ra.TotalUnidades = 0
ra.UnidadesVendidas = 0
ra.UnidadesAlquiladas = 0
ra.UnidadesAveriadas = 0
ra.UnidadesDesechadas = 0
ra.FacturarComoVentaPorDefecto = False
Me.DataContext = ra
_idproducto = Nothing
NuevoEstado = tsUtilidades.EstadosAplicacion.Nuevo
@@ -53,14 +52,17 @@ Public Class ucProducto
NuevoEstado = tsUtilidades.EstadosAplicacion.ModificandoRegistro
End If
End If
' Me.gcLogs.ItemsSource = bd.logs.Where(Function(x) x.id = ra.idProducto AndAlso x.Aplicacion = "PRODUCTOS").ToList
' Me.gcLogs.ItemsSource = bd.logs.Where(Function(x) x.id = ra.idProducto AndAlso x.Aplicacion = "PRODUCTOS").ToList
Me.gcDesglose.ItemsSource = ra.DesgloseMaterial
'Me.gcServicios.ItemsSource = ra.DesgloseServicios
If ra.Servicio Then
If ra.Tipo <> TipoProductoEnum.SERVICIO Then
Me.gcStocksAlmacenes.ItemsSource = ObtieneISAlmacenes()
Me.gcStocksEmpresas.ItemsSource = ra.DesgloseUnidades
Else
Me.gcStocksAlmacenes.ItemsSource = Nothing
Me.gcStocksEmpresas.ItemsSource = Nothing
End If
Me.gcAlbaranes.ItemsSource = bd.detallesalbaranes.Include(Function(x) x.idAlbaranNavigation.idEntidadNavigation).Where(Function(x) x.idProducto = ra.idProducto).OrderByDescending(Function(x) x.idAlbaranNavigation.Fecha).ToList
Me.DataContext = ra
' gcArticulos.ItemsSource = ra.articulos
@@ -165,7 +167,8 @@ Public Class ucProducto
Try
Dim idprs = ra.articulos.Where(Function(x) x.idProveedor.HasValue).Select(Function(x) x.idProveedor.Value).ToArray
Me.cbTipo.ItemsSource = tsUtilidades.DescripcionValor.EnumADescripcionValor(GetType(bdGrupoSanchoToro.db.productos.TipoProductoEnum)).ToList
Me.cbTipo.ItemsSource = tsUtilidades.DescripcionValor.EnumADescripcionValor(GetType(bdGrupoSanchoToro.db.productos.TipoProductoEnum)) _
.OrderBy(Function(x) x.Valor).ToList
Catch ex As Exception
Throw New Exception(ex.Message, ex)
End Try
@@ -201,11 +204,34 @@ Public Class ucProducto
Private Sub ucProducto_DespuesGuardar(sender As Object, e As ItemClickEventArgs, OpcionGuardado As Integer) Handles Me.DespuesGuardar
Try
_idproducto = ra.idProducto
ra.RefrescaCamposTemporales()
If RecalcularStocks Then
RecalcularStocks = False
DXSplashScreen.Show(Of tsWPFCore.SplashScreenTecnosis)()
DXSplashScreen.SetState("Recalculando Stocks ...")
Dim lp As New List(Of productos)
lp.Add(ra)
bdGrupoSanchoToro.db.productos.RecalculaStocks(bd, lp)
DXSplashScreen.Close()
End If
RefrescaUC()
Catch ex As Exception
If DXSplashScreen.IsActive Then DXSplashScreen.Close()
Throw New Exception(ex.Message, ex)
End Try
End Sub
Private Sub ucProducto_Enlazar(Celda As EditGridCellData, Defecto As Boolean) Handles Me.Enlazar
Select Case Celda.Column.FieldName.ToLower
Case "productos1.idproducto"
Dim dp As desgloseproductos = Celda.Row
Dim id As Integer = dp.idProducto
Dim uc As New ucProducto(id)
FuncionesDinamicas.AbrirAP(uc, OtrosParametros)
'Case "idlog"
' Dim log As logs = gcLogs.CurrentItem
' Dim id As Integer = log.idLog
@@ -215,9 +241,9 @@ Public Class ucProducto
Case "almacen"
Dim st As stocks = Celda.Row
FuncionesDinamicas.AbrirAP(New ucAlmacen(st.idAlmacen), OtrosParametros)
'Case "numeroalbaran"
' Dim al As detallesalbaranes = Celda.Row
' FuncionesDinamicas.AbrirAP(New ucAlbaran(al.idAlbaran), OtrosParametros)
Case "numeroalbaran"
Dim al As detallesalbaranes = Celda.Row
FuncionesDinamicas.AbrirAP(New ucAlbaran(al.idAlbaran), OtrosParametros)
Case "entidad"
Dim da As detallesalbaranes = Celda.Row
If da.idAlbaranNavigation.idEntidad.HasValue Then FuncionesDinamicas.AbrirAP(New ucEntidad(da.idAlbaranNavigation.idEntidad.Value), OtrosParametros)
@@ -237,46 +263,42 @@ Public Class ucProducto
Private RecalcularStocks As Boolean
'Private Sub ucProducto_AntesGuardar(sender As Object, e As ItemClickEventArgs, ByRef Cancelar As Boolean, ByRef MensajesError As Hashtable, EliminacionManual As Integer) Handles Me.AntesGuardar
' '
' ' Esto se hace para evitar error duplicate entry en el intercambio de numero de series
' '
' Try
' Dim bdtmp = tscGrupoSanchoToro.NuevoContexto()
' Dim arts = bdtmp.articulos.Where(Function(x) x.idProducto = ra.idProducto).ToList
' For Each art In arts
' If ra.articulos.Any(Function(x) x.idArticulo <> art.idArticulo AndAlso art.CodigoArticulo = x.CodigoArticulo) Then
' art.CodigoArticulo = Nothing
' End If
' Next
' 'If Estado = tsUtilidades.EstadosAplicacion.ModificandoRegistro Then
' ' Dim raant = bdtmp.productos.First(Function(x) x.idProducto = ra.idProducto)
' ' If (ra.Tipo = TipoProductoEnum.ELEMENTO_FINAL_TRIBUNA OrElse ra.Tipo = TipoProductoEnum.ELEMENTO_FINAL_CARPA OrElse ra.Tipo <= TipoProductoEnum.OTROS) AndAlso
' ' Not (raant.Tipo = TipoProductoEnum.ELEMENTO_FINAL_TRIBUNA OrElse raant.Tipo = TipoProductoEnum.ELEMENTO_FINAL_CARPA OrElse raant.Tipo <= TipoProductoEnum.OTROS) Then
' ' RecalcularStocks = True
' ' Else
' ' If Not (ra.Tipo = TipoProductoEnum.ELEMENTO_FINAL_TRIBUNA OrElse ra.Tipo = TipoProductoEnum.ELEMENTO_FINAL_CARPA OrElse ra.Tipo <= TipoProductoEnum.OTROS) AndAlso
' ' (raant.Tipo = TipoProductoEnum.ELEMENTO_FINAL_TRIBUNA OrElse raant.Tipo = TipoProductoEnum.ELEMENTO_FINAL_CARPA OrElse raant.Tipo <= TipoProductoEnum.OTROS) Then
' ' For i = ra.stocks.Count - 1 To 0
' ' bd.stocks.Remove(ra.stocks(i))
' ' Next
' ' ra.TotalUnidades = 0
' ' ra.UnidadesInicialesOFabricadas = 0
' ' ra.UnidadesCompradas = 0
' ' ra.UnidadesVendidas = 0
' ' ra.UnidadesAlquiladas = 0
' ' ra.UnidadesAveriadas = 0
' ' ra.UnidadesDesechadas = 0
' ' ra.UnidadesSubAlquiladas = 0
' ' End If
' ' End If
' 'End If
Private Sub ucProducto_AntesGuardar(sender As Object, e As ItemClickEventArgs, ByRef Cancelar As Boolean, ByRef MensajesError As Hashtable, EliminacionManual As Integer) Handles Me.AntesGuardar
'
' Esto se hace para evitar error duplicate entry en el intercambio de numero de series
'
Try
Dim bdtmp = tscGrupoSanchoToro.NuevoContexto()
Dim arts = bdtmp.articulos.Where(Function(x) x.idProducto = ra.idProducto).ToList
For Each art In arts
If ra.articulos.Any(Function(x) x.idArticulo <> art.idArticulo AndAlso art.CodigoArticulo = x.CodigoArticulo) Then
art.CodigoArticulo = Nothing
End If
Next
If Estado = tsUtilidades.EstadosAplicacion.ModificandoRegistro Then
Dim raant = bdtmp.productos.First(Function(x) x.idProducto = ra.idProducto)
If ra.Tipo <> TipoProductoEnum.SERVICIO Then
RecalcularStocks = True
Else
For i = ra.stocks.Count - 1 To 0
bd.stocks.Remove(ra.stocks(i))
Next
ra.TotalUnidades = 0
ra.UnidadesInicialesOFabricadas = 0
ra.UnidadesCompradas = 0
ra.UnidadesVendidas = 0
ra.UnidadesAlquiladas = 0
ra.UnidadesAveriadas = 0
ra.UnidadesDesechadas = 0
ra.UnidadesSubAlquiladas = 0
End If
End If
' bdtmp.GuardarCambios()
' Catch ex As Exception
' Throw New Exception(ex.Message, ex)
' End Try
'End Sub
bdtmp.GuardarCambios()
Catch ex As Exception
Throw New Exception(ex.Message, ex)
End Try
End Sub
Private Sub ucProducto_EstadoCambiado(EstadoAnterior As tsUtilidades.EstadosAplicacion, EstadoNuevo As tsUtilidades.EstadosAplicacion) Handles Me.EstadoCambiado
If idLog.HasValue Then
@@ -288,22 +310,22 @@ Public Class ucProducto
Private Sub ucProducto_EjecutarAccion(sender As Object, e As ItemClickEventArgs, idAccion As Integer) Handles Me.EjecutarAccion
'Select Case idAccion
' Case 1 ' AÑADIR PRODUCTOS AL DESGLOSE
' Dim prsact = ra.DesgloseMaterial.Select(Function(x) x.idProducto).ToList
' Dim maxasc = ra.NivelMaximoAscendientes
' Dim lproductos = bd.productos.ToList.Where(Function(x) (maxasc + x.NivelMaximoDescendientes) < 3 AndAlso ra.ContieneAscendiente(x.idProducto) = False AndAlso prsact.Contains(x.idProducto) = False).ToList
' Dim dxw As New dxwProductos(lproductos)
' If dxw.ShowDialog Then
' Dim prod = lproductos.First(Function(x) x.idProducto = dxw.idProducto)
' Dim nd As New desgloseproductos
' With nd
' .idProductoNavigation = prod
' .Unidades = 1
' .UnidadesMaximas = 1
' .UnidadesMinimas = 1
' End With
' ra.desgloseproductosidProductoNavigation.Add(nd)
' ra.RefrescaCamposTemporales()
' End If
'End Select
End Sub
Private Sub ucProducto_AntesGuardar(sender As Object, e As ItemClickEventArgs, ByRef Cancelar As Boolean, ByRef MensajesError As Hashtable, EliminacionManual As Integer) Handles Me.AntesGuardar
ra.idEmpresa = EmpresaActual.idEmpresa
Dim hte As New Hashtable
ra.idEmpresa = EmpresaActual.idEmpresa
Dim almexi = bd.productos.FirstOrDefault(Function(x) x.idProducto <> ra.idProducto AndAlso x.Descripcion = ra.Descripcion AndAlso x.idEmpresa = EmpresaActual.idEmpresa)
If almexi IsNot Nothing Then
hte.Add("ALMACENAR-PRODUCTO_DUPLIADO", "Producto Duplicado")
End If
If hte.Count > 0 Then
MensajesError = hte
Cancelar = True
End If
End Sub
End Class

View File

@@ -60,14 +60,14 @@ Public Class ucProductos
Public Overrides Function EstableceDCPrincipal(Optional Background As Boolean = False, Optional FuerzaNuevo As Boolean = False, Optional Refrescar As Boolean = False) As tsUtilidades.EstadosAplicacion
If Refrescar OrElse Background Then ObtieneproductosAsync(bd, Background)
'If Me.ContenedorAplicacion.cbAcciones.ItemsSource Is Nothing Then
' Dim Acciones As New List(Of tsWPFCore.Accion)
' Acciones.Add(New Accion With {
' .idAccion = 1,
' .Descripcion = "CORREGIR STOCK"})
' Me.ContenedorAplicacion.cbAcciones.ItemsSource = Acciones
' Me.ContenedorAplicacion.beAcciones.EditValue = Acciones.First.idAccion
'End If
If Me.ContenedorAplicacion.cbAcciones.ItemsSource Is Nothing Then
Dim Acciones As New List(Of tsWPFCore.Accion)
Acciones.Add(New Accion With {
.idAccion = 1,
.Descripcion = "CORREGIR STOCK"})
Me.ContenedorAplicacion.cbAcciones.ItemsSource = Acciones
Me.ContenedorAplicacion.beAcciones.EditValue = Acciones.First.idAccion
End If
Return tsUtilidades.EstadosAplicacion.AplicacionSinIndice
@@ -128,7 +128,7 @@ Public Class ucProductos
End Sub
Public Function Obtieneproductos(TextoBusqueda As String, IncluirBajas As Boolean) As List(Of productos)
Dim iqPr = bd.productos.Where(Function(x) x.idEmpresa = EmpresaActual.idEmpresa)
Dim iqPr = bd.productos.AsQueryable
If IncluirBajas Then iqPr = iqPr.Where(Function(x) x.FechaBaja Is Nothing).OrderBy(Function(x) x.Descripcion)
Dim rs As List(Of productos)
Do
@@ -187,6 +187,19 @@ Public Class ucProductos
teBusqueda.SelectAll()
End Sub
Private Sub ucProductos_EjecutarAccion(sender As Object, e As ItemClickEventArgs, idAccion As Integer) Handles Me.EjecutarAccion
Try
Select Case idAccion
Case 1 ' RECALCULA STOCKS DE TODOS LOS PRODUCTOS
If DXSplashScreen.IsActive = False Then DXSplashScreen.Show(Of tsWPFCore.SplashScreenTecnosis)()
DXSplashScreen.SetState("Recalculando stocks ...")
Dim lp = bd.detallesalbaranes.Where(Function(x) x.idAlbaranRecogida.HasValue = False).Select(Function(x) x.idProductoNavigation).Distinct().ToList()
bdGrupoSanchoToro.db.productos.RecalculaStocks(bd, lp)
DXSplashScreen.Close()
End Select
Catch ex As Exception
If DXSplashScreen.IsActive Then DXSplashScreen.Close()
FuncionesDinamicas.ErrorNoControladoAp(Me, ex)
End Try
End Sub
End Class