Agregar archivos de proyecto.
This commit is contained in:
460
GestionGrupoSanchoToro/Compras/ucFacturaRecibida.xaml
Normal file
460
GestionGrupoSanchoToro/Compras/ucFacturaRecibida.xaml
Normal file
@@ -0,0 +1,460 @@
|
||||
<tsWPF: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"
|
||||
xmlns:dxb="http://schemas.devexpress.com/winfx/2008/xaml/bars"
|
||||
xmlns:dxlc="http://schemas.devexpress.com/winfx/2008/xaml/layoutcontrol" xmlns:dxdo="http://schemas.devexpress.com/winfx/2008/xaml/docking"
|
||||
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:sys="clr-namespace:System;assembly=mscorlib"
|
||||
xmlns:tsWPF="clr-namespace:tsWPFCore;assembly=tsWPFCore" xmlns:Serialization="clr-namespace:DevExpress.Xpf.LayoutControl.Serialization;assembly=DevExpress.Xpf.LayoutControl.v23.2" x:Class="ucFacturaRecibida"
|
||||
mc:Ignorable="d" d:DesignHeight="768" d:DesignWidth="1400">
|
||||
<tsWPF:tsUserControl.Resources>
|
||||
<ResourceDictionary>
|
||||
<ResourceDictionary.MergedDictionaries>
|
||||
<ResourceDictionary Source="pack://application:,,,/tsWPFCore;component/Plantillas.xaml" />
|
||||
</ResourceDictionary.MergedDictionaries>
|
||||
<Style x:Key="RejillaAnidadaStyle" TargetType="{x:Type dxg:RowControl}">
|
||||
<Setter Property="Background" Value="#B0E0E6" />
|
||||
</Style>
|
||||
</ResourceDictionary>
|
||||
</tsWPF:tsUserControl.Resources>
|
||||
<Grid x:Name="contenido" HorizontalAlignment="Stretch" Width="Auto">
|
||||
<dxlc:LayoutControl x:Name="LayoutControl1" Orientation="Vertical">
|
||||
<dxlc:LayoutGroup Header="Datos De la Factura" View="GroupBox" IsLocked="True" Width="Auto" HorizontalAlignment="Stretch" Orientation="Vertical">
|
||||
<dxlc:LayoutGroup Orientation="Horizontal">
|
||||
<dxlc:LayoutGroup Orientation="Vertical" Width="840">
|
||||
<dxlc:LayoutGroup Orientation="Horizontal">
|
||||
<tsWPF:tsLayoutItem Label="Nº Registro:" Width="180">
|
||||
<tsWPF:tsLayoutItem.PropiedadesTS>
|
||||
<tsWPF:PropiedadesTS UsualCorreccion="False" Modificable="NoModificable" />
|
||||
</tsWPF:tsLayoutItem.PropiedadesTS>
|
||||
<dxe:TextEdit EditValue="{Binding idFactura, Mode=TwoWay, NotifyOnSourceUpdated=True, NotifyOnValidationError=true, ValidatesOnExceptions=true}" TabIndex="100" NullText="« AUTOMÁTICO »">
|
||||
<dxe:TextEdit.NullValue>
|
||||
<sys:Int32>0</sys:Int32>
|
||||
</dxe:TextEdit.NullValue>
|
||||
</dxe:TextEdit>
|
||||
</tsWPF:tsLayoutItem>
|
||||
<tsWPF:tsLayoutItem Label="Fecha Registro:" Width="200">
|
||||
<tsWPF:tsLayoutItem.PropiedadesTS>
|
||||
<tsWPF:PropiedadesTS />
|
||||
</tsWPF:tsLayoutItem.PropiedadesTS>
|
||||
<dxe:DateEdit EditValue="{Binding FechaRegistro, Mode=TwoWay, NotifyOnSourceUpdated=True, NotifyOnValidationError=true, ValidatesOnExceptions=true}" TabIndex="101" DisplayFormatString="yyyy/MM/dd HH:mm" />
|
||||
</tsWPF:tsLayoutItem>
|
||||
<tsWPF:tsLayoutItem Label="Razón Social:">
|
||||
<tsWPF:tsLayoutItem.PropiedadesTS>
|
||||
<tsWPF:PropiedadesTS Obligatorio="True" />
|
||||
</tsWPF:tsLayoutItem.PropiedadesTS>
|
||||
<dxe:ComboBoxEdit x:Name="cbRazonSocial" AutoComplete="True" ValidateOnTextInput="False" IsTextEditable="True" DisplayMember="RazonSocialNIF" ValueMember="idEntidad" EditValue="{Binding idProveedor_Nulable, Mode=TwoWay, NotifyOnSourceUpdated=True, NotifyOnValidationError=true, ValidatesOnExceptions=true}" AllowDefaultButton="False" TabIndex="1">
|
||||
<dxe:ComboBoxEdit.Buttons>
|
||||
<dxe:ButtonInfo x:Name="biBuscarProveedor" GlyphKind="Search" IsDefaultButton="False" Click="BiBuscarProveedor_Click" />
|
||||
</dxe:ComboBoxEdit.Buttons>
|
||||
</dxe:ComboBoxEdit>
|
||||
</tsWPF:tsLayoutItem>
|
||||
|
||||
</dxlc:LayoutGroup>
|
||||
<dxlc:LayoutGroup Orientation="Horizontal">
|
||||
<tsWPF:tsLayoutItem Label="Categoría:" >
|
||||
<dxe:ComboBoxEdit x:Name="cbCategoria" EditValue="{Binding idCategoria, Mode=TwoWay, NotifyOnSourceUpdated=True, NotifyOnValidationError=true, ValidatesOnExceptions=true}" ValueMember="idEnumeracion" DisplayMember="Descripcion" AutoComplete="True" IncrementalFiltering="True" ImmediatePopup="True" TabIndex="4" />
|
||||
</tsWPF:tsLayoutItem>
|
||||
<tsWPF:tsLayoutItem Label="Fecha Pago:" Width="250">
|
||||
<tsWPF:tsLayoutItem.PropiedadesTS>
|
||||
<tsWPF:PropiedadesTS UsualCorreccion="False" Modificable="NoModificable" />
|
||||
</tsWPF:tsLayoutItem.PropiedadesTS>
|
||||
<dxe:DateEdit EditValue="{Binding FechaPago, Mode=TwoWay, NotifyOnSourceUpdated=True, NotifyOnValidationError=true, ValidatesOnExceptions=true}" TabIndex="5" />
|
||||
</tsWPF:tsLayoutItem>
|
||||
</dxlc:LayoutGroup>
|
||||
<tsWPF:tsLayoutItem Label="Observaciones:">
|
||||
<dxe:TextEdit EditValue="{Binding Observaciones, Mode=TwoWay, NotifyOnSourceUpdated=True, NotifyOnValidationError=true, ValidatesOnExceptions=true}" TabIndex="6" />
|
||||
</tsWPF:tsLayoutItem>
|
||||
</dxlc:LayoutGroup>
|
||||
<dxlc:LayoutGroup Orientation="Horizontal">
|
||||
<dxlc:LayoutGroup Orientation="Vertical" Width="420">
|
||||
<dxlc:LayoutGroup>
|
||||
|
||||
<tsWPF:tsLayoutItem Label="Nº Factura:">
|
||||
<tsWPF:tsLayoutItem.PropiedadesTS>
|
||||
<tsWPF:PropiedadesTS Obligatorio="True" />
|
||||
</tsWPF:tsLayoutItem.PropiedadesTS>
|
||||
<dxe:TextEdit EditValue="{Binding NumeroFactura, Mode=TwoWay, NotifyOnSourceUpdated=True, NotifyOnValidationError=true, ValidatesOnExceptions=true}" TabIndex="2" Mask="G" MaskUseAsDisplayFormat="True" />
|
||||
</tsWPF:tsLayoutItem>
|
||||
|
||||
|
||||
|
||||
<tsWPF:tsLayoutItem Label="Fecha Factura:">
|
||||
<tsWPF:tsLayoutItem.PropiedadesTS>
|
||||
<tsWPF:PropiedadesTS Obligatorio="True" />
|
||||
</tsWPF:tsLayoutItem.PropiedadesTS>
|
||||
<dxe:DateEdit EditValue="{Binding FechaFactura, Mode=TwoWay, NotifyOnSourceUpdated=True, NotifyOnValidationError=true, ValidatesOnExceptions=true, Converter={StaticResource DateOnlyToDateTimeConverter}}" TabIndex="3" />
|
||||
</tsWPF:tsLayoutItem>
|
||||
|
||||
|
||||
</dxlc:LayoutGroup>
|
||||
<tsWPF:tsLayoutItem Label="Usuario:">
|
||||
<tsWPF:tsLayoutItem.PropiedadesTS>
|
||||
<tsWPF:PropiedadesTS UsualCorreccion="False" Modificable="NoModificable" />
|
||||
</tsWPF:tsLayoutItem.PropiedadesTS>
|
||||
<dxe:TextEdit EditValue="{Binding idUsuarioNavigation.Nombre, Mode=TwoWay, NotifyOnSourceUpdated=True, NotifyOnValidationError=true, ValidatesOnExceptions=true}" TabIndex="200" />
|
||||
</tsWPF:tsLayoutItem>
|
||||
</dxlc:LayoutGroup>
|
||||
</dxlc:LayoutGroup>
|
||||
|
||||
|
||||
</dxlc:LayoutGroup>
|
||||
|
||||
|
||||
|
||||
|
||||
</dxlc:LayoutGroup>
|
||||
<dxlc:LayoutGroup Header="Datos del Proveedor" View="GroupBox" Width="Auto" HorizontalAlignment="Stretch" x:Name="lgDatosProveedor" IsCollapsible="True" IsCollapsed="False">
|
||||
<dxlc:LayoutGroup Orientation="Vertical" Width="465">
|
||||
<tsWPF:tsLayoutItem Label="Direccion:">
|
||||
<tsWPF:tsLayoutItem.PropiedadesTS>
|
||||
<tsWPF:PropiedadesTS Modificable="NoModificable" />
|
||||
</tsWPF:tsLayoutItem.PropiedadesTS>
|
||||
<dxe:TextEdit EditValue="{Binding Direccion, Mode=TwoWay, NotifyOnSourceUpdated=True, NotifyOnValidationError=true, ValidatesOnExceptions=true}" x:Name="teDireccionProveedor" TabIndex="7" />
|
||||
</tsWPF:tsLayoutItem>
|
||||
<dxlc:LayoutGroup>
|
||||
<tsWPF:tsLayoutItem Label="Teléfono 1:" Width="230">
|
||||
<tsWPF:tsLayoutItem.PropiedadesTS>
|
||||
<tsWPF:PropiedadesTS Modificable="NoModificable" UsualCorreccion="False" MayusculasMinusculas="Normal" />
|
||||
</tsWPF:tsLayoutItem.PropiedadesTS>
|
||||
<dxe:TextEdit EditValue="{Binding Telefono1, Mode=TwoWay, NotifyOnSourceUpdated=True, NotifyOnValidationError=true, ValidatesOnExceptions=true}" x:Name="teTelefono1Proveedor" TabIndex="11" />
|
||||
</tsWPF:tsLayoutItem>
|
||||
<tsWPF:tsLayoutItem Label="Teléfono 2:">
|
||||
<tsWPF:tsLayoutItem.PropiedadesTS>
|
||||
<tsWPF:PropiedadesTS Modificable="NoModificable" UsualCorreccion="False" />
|
||||
</tsWPF:tsLayoutItem.PropiedadesTS>
|
||||
<dxe:TextEdit EditValue="{Binding Telefono2, Mode=TwoWay, NotifyOnSourceUpdated=True, NotifyOnValidationError=true, ValidatesOnExceptions=true}" x:Name="teTelefono2Proveedor" TabIndex="12" />
|
||||
</tsWPF:tsLayoutItem>
|
||||
</dxlc:LayoutGroup>
|
||||
|
||||
</dxlc:LayoutGroup>
|
||||
<dxlc:LayoutGroup Orientation="Vertical" Width="800">
|
||||
<dxlc:LayoutGroup>
|
||||
<tsWPF:tsLayoutItem Label="Código Postal:" Width="190">
|
||||
<tsWPF:tsLayoutItem.PropiedadesTS>
|
||||
<tsWPF:PropiedadesTS Modificable="NoModificable" />
|
||||
</tsWPF:tsLayoutItem.PropiedadesTS>
|
||||
<dxe:TextEdit EditValue="{Binding CodigoPostal, Mode=TwoWay, NotifyOnSourceUpdated=True, NotifyOnValidationError=true, ValidatesOnExceptions=true}" TabIndex="8" />
|
||||
</tsWPF:tsLayoutItem>
|
||||
<tsWPF:tsLayoutItem Label="Población:" x:Name="Poblacion" Width="318">
|
||||
<tsWPF:tsLayoutItem.PropiedadesTS>
|
||||
<tsWPF:PropiedadesTS Modificable="NoModificable" />
|
||||
</tsWPF:tsLayoutItem.PropiedadesTS>
|
||||
<dxe:TextEdit EditValue="{Binding Poblacion, Mode=OneWay, NotifyOnSourceUpdated=True, NotifyOnValidationError=true, ValidatesOnExceptions=true}" TabIndex="9" />
|
||||
</tsWPF:tsLayoutItem>
|
||||
<tsWPF:tsLayoutItem Label="Provincia:">
|
||||
<tsWPF:tsLayoutItem.PropiedadesTS>
|
||||
<tsWPF:PropiedadesTS Modificable="NoModificable" />
|
||||
</tsWPF:tsLayoutItem.PropiedadesTS>
|
||||
<dxe:TextEdit EditValue="{Binding Provincia, Mode=OneWay, NotifyOnSourceUpdated=True, NotifyOnValidationError=true, ValidatesOnExceptions=true}" TabIndex="10" />
|
||||
</tsWPF:tsLayoutItem>
|
||||
</dxlc:LayoutGroup>
|
||||
<tsWPF:tsLayoutItem Label="Email:" Width="512" HorizontalAlignment="Left">
|
||||
<tsWPF:tsLayoutItem.PropiedadesTS>
|
||||
<tsWPF:PropiedadesTS Modificable="NoModificable" MayusculasMinusculas="Normal" />
|
||||
</tsWPF:tsLayoutItem.PropiedadesTS>
|
||||
<dxe:TextEdit EditValue="{Binding Email, Mode=TwoWay, NotifyOnSourceUpdated=True, NotifyOnValidationError=true, ValidatesOnExceptions=true}" x:Name="teEmailProveedor" TabIndex="13" />
|
||||
</tsWPF:tsLayoutItem>
|
||||
|
||||
</dxlc:LayoutGroup>
|
||||
</dxlc:LayoutGroup>
|
||||
<dx:DXTabControl x:Name="DXTabPersonal1" Width="Auto" HorizontalAlignment="Stretch">
|
||||
<dx:DXTabControl.View>
|
||||
<dx:TabControlScrollView />
|
||||
</dx:DXTabControl.View>
|
||||
<dx:DXTabItem Header="Detalle Factura">
|
||||
<dxlc:LayoutGroup Orientation="Vertical">
|
||||
<tsWPF:tsGridControl x:Name="gcDetalle" TabIndex="25" >
|
||||
<tsWPF:tsGridControl.PropiedadesTSGC>
|
||||
<tsWPF:PropiedadesTSGC CamposObligatorios="idProducto,Cantidad,Precio,idTipoIva" />
|
||||
</tsWPF:tsGridControl.PropiedadesTSGC>
|
||||
<tsWPF:tsGridControl.PropiedadesTS>
|
||||
<tsWPF:PropiedadesTS />
|
||||
</tsWPF:tsGridControl.PropiedadesTS>
|
||||
<tsWPF:tsGridControl.View>
|
||||
<tsWPF:tsTableView x:Name="tvDetalle" ShowGroupPanel="False" NewItemRowPosition="Bottom" TabIndex="14" EnableImmediatePosting="True" >
|
||||
</tsWPF:tsTableView>
|
||||
</tsWPF:tsGridControl.View>
|
||||
|
||||
<dxg:GridColumn FieldName="idProducto" Header="Producto" Width="400">
|
||||
<dxg:GridColumn.EditSettings>
|
||||
<dxe:ComboBoxEditSettings x:Name="cbProducto" ValueMember="idProducto" DisplayMember="Descripcion" AllowDefaultButton="False" AutoComplete="True">
|
||||
<dxe:ComboBoxEditSettings.Buttons>
|
||||
<dxe:ButtonInfo x:Name="biBuscarProducto" GlyphKind="Search" IsDefaultButton="False" Click="BiBuscarProducto_Click" />
|
||||
</dxe:ComboBoxEditSettings.Buttons>
|
||||
</dxe:ComboBoxEditSettings>
|
||||
</dxg:GridColumn.EditSettings>
|
||||
</dxg:GridColumn>
|
||||
<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="Precio" IsSmart="True" Width="70">
|
||||
<dxg:GridColumn.EditSettings>
|
||||
<dxe:TextEditSettings MaskType="Numeric" Mask="c4" MaskUseAsDisplayFormat="True" HorizontalContentAlignment="Right" />
|
||||
</dxg:GridColumn.EditSettings>
|
||||
</dxg:GridColumn>
|
||||
<tsWPF:tsGridColumn FieldName="Importe" IsSmart="True" Width="80" SoloLectura="True">
|
||||
<dxg:GridColumn.EditSettings>
|
||||
<dxe:TextEditSettings MaskType="Numeric" Mask="c4" MaskUseAsDisplayFormat="True" HorizontalContentAlignment="Right" />
|
||||
</dxg:GridColumn.EditSettings>
|
||||
</tsWPF:tsGridColumn>
|
||||
<tsWPF:tsGridColumn FieldName="idTipoIva" Header="% IVA" IsSmart="True" Width="100" >
|
||||
<tsWPF:tsGridColumn.EditSettings>
|
||||
<dxe:ComboBoxEditSettings x:Name="cbIva" ValueMember="idEnumeracion" DisplayMember="Descripcion" AllowDefaultButton="False" AutoComplete="True" />
|
||||
</tsWPF:tsGridColumn.EditSettings>
|
||||
</tsWPF:tsGridColumn>
|
||||
<tsWPF:tsGridColumn FieldName="Observaciones" Header="Observaciones" IsSmart="True" Width="380" />
|
||||
</tsWPF:tsGridControl>
|
||||
</dxlc:LayoutGroup>
|
||||
</dx:DXTabItem>
|
||||
<dx:DXTabItem Header="Pagos">
|
||||
<dxlc:LayoutGroup Orientation="Vertical">
|
||||
|
||||
<dxlc:LayoutGroup Orientation="Vertical" Header="Recibos" View="GroupBox">
|
||||
<tsWPF:tsGridControl TabIndex="29" x:Name="gcRecibos" NombreTablaBase="movimientoscaja">
|
||||
<tsWPF:tsGridControl.View>
|
||||
<tsWPF:tsTableView ShowTotalSummary="False" ShowGroupPanel="False" x:Name="tvRecibos" NewItemRowPosition="Bottom" AutoWidth="False" AllowGrouping="False" TabIndex="15" />
|
||||
</tsWPF:tsGridControl.View>
|
||||
<tsWPF:tsGridControl.PropiedadesTS>
|
||||
<tsWPF:PropiedadesTS UsualCorreccion="True" />
|
||||
</tsWPF:tsGridControl.PropiedadesTS>
|
||||
<tsWPF:tsGridControl.PropiedadesTSGC>
|
||||
<tsWPF:PropiedadesTSGC CamposObligatorios="Fecha,FechaCreacion,idCaja" />
|
||||
</tsWPF:tsGridControl.PropiedadesTSGC>
|
||||
<tsWPF:tsGridControl.Columns>
|
||||
<dxg:GridColumn FieldName="ImporteNegativo" Width="150" Header="Importe">
|
||||
<dxg:GridColumn.EditSettings>
|
||||
<dxe:TextEditSettings MaskUseAsDisplayFormat="True" MaskType="Numeric" Mask="c2" />
|
||||
</dxg:GridColumn.EditSettings>
|
||||
</dxg:GridColumn>
|
||||
<dxg:GridColumn Width="150" Header="Fecha Pago" FieldName="Fecha" SortOrder="Ascending" SortIndex="0" />
|
||||
|
||||
<tsWPF:tsGridColumn Width="250" Header="Caja" FieldName="idCaja">
|
||||
<tsWPF:tsGridColumn.EditSettings>
|
||||
<dxe:ComboBoxEditSettings ValueMember="idCaja" PopupWidth="600" x:Name="cbCaja" IncrementalFiltering="True" DisplayMember="Descripcion" AutoComplete="True" />
|
||||
</tsWPF:tsGridColumn.EditSettings>
|
||||
</tsWPF:tsGridColumn>
|
||||
<dxg:GridColumn FieldName="Observaciones" Header="Observaciones" Width="350" />
|
||||
<tsWPF:tsGridColumn Width="120" IsSmart="True" Header="Fecha Creación" FieldName="FechaCreacion" SoloLectura="True" />
|
||||
<tsWPF:tsGridColumn Width="90" Header="Nº Pago" HorizontalHeaderContentAlignment="Center" FieldName="idMovimiento" SoloLectura="True" />
|
||||
</tsWPF:tsGridControl.Columns>
|
||||
</tsWPF:tsGridControl>
|
||||
</dxlc:LayoutGroup>
|
||||
</dxlc:LayoutGroup>
|
||||
</dx:DXTabItem>
|
||||
<dx:DXTabItem Header="Documentos" Height="22" VerticalAlignment="Top">
|
||||
<tsWPF:tsGridControl x:Name="gcDocumentos" NombreTablaBase="documentosfacturasrecibidas" TabIndex="24">
|
||||
<tsWPF:tsGridControl.PropiedadesTS>
|
||||
<tsWPF:PropiedadesTS UsualCorreccion="True" />
|
||||
</tsWPF:tsGridControl.PropiedadesTS>
|
||||
<tsWPF:tsGridControl.View>
|
||||
<tsWPF:tsTableView x:Name="tvDocumentos" ShowTotalSummary="False" AllowGrouping="False" ShowGroupPanel="False" AutoWidth="False" NewItemRowPosition="Bottom" PreviewKeyDown="tvDocumentos_PreviewKeyDown" />
|
||||
</tsWPF:tsGridControl.View>
|
||||
<dxg:GridColumn FieldName="Descripcion" Header="Descripción" Width="500">
|
||||
<dxg:GridColumn.EditSettings>
|
||||
<dxe:TextEditSettings TextWrapping="Wrap" AcceptsReturn="True" />
|
||||
</dxg:GridColumn.EditSettings>
|
||||
</dxg:GridColumn>
|
||||
<tsWPF:tsGridColumn Width="250" Header="Tipo" FieldName="Tipo">
|
||||
<tsWPF:tsGridColumn.EditSettings>
|
||||
<dxe:ComboBoxEditSettings ValueMember="Valor" PopupWidth="600" x:Name="cbTipoDocumento" IncrementalFiltering="True" DisplayMember="Descripcion" AutoComplete="True" />
|
||||
</tsWPF:tsGridColumn.EditSettings>
|
||||
</tsWPF:tsGridColumn>
|
||||
|
||||
|
||||
<tsWPF:tsGridColumn FieldName="idFicheroNavigation.NombreFichero" Header="Fichero" Width="300" x:Name="gcNombreFichero">
|
||||
<dxg:GridColumn.EditSettings>
|
||||
<dxe:ButtonEditSettings x:Name="btFichero" IsTextEditable="False">
|
||||
<dxe:ButtonEditSettings.Buttons>
|
||||
<dxe:ButtonInfo GlyphKind="Search" Click="VerDocumento" />
|
||||
</dxe:ButtonEditSettings.Buttons>
|
||||
</dxe:ButtonEditSettings>
|
||||
</dxg:GridColumn.EditSettings>
|
||||
</tsWPF:tsGridColumn>
|
||||
<tsWPF:tsGridColumn FieldName="Fecha" Header="Fecha" Width="140" SoloLectura="True">
|
||||
<dxg:GridColumn.EditSettings>
|
||||
<dxe:DateEditSettings DisplayFormat="dd/MM/yyyy HH:mm" />
|
||||
</dxg:GridColumn.EditSettings>
|
||||
</tsWPF:tsGridColumn>
|
||||
</tsWPF:tsGridControl>
|
||||
</dx:DXTabItem>
|
||||
<dx:DXTabItem Header="Registro de cambios">
|
||||
<dxlc:LayoutGroup Orientation="Vertical">
|
||||
<tsWPF:tsGridControl x:Name="gcLogs" TabIndex="21">
|
||||
<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:DXTabItem Header="Registro de cambios" >
|
||||
<dxlc:LayoutGroup Orientation="Vertical">
|
||||
<tsWPF:tsGridControl x:Name="gcLogs" TabIndex="21" >
|
||||
<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="usuarios.Nombre" 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:LayoutGroup View="GroupBox" x:Name="lgTotalesClase" IsCollapsible="True" IsLocked="True" Height="Auto" HorizontalAlignment="Stretch" Header="Totales">
|
||||
<dxlc:LayoutGroup Orientation="Vertical" HorizontalAlignment="Left" Width="150">
|
||||
|
||||
|
||||
<tsWPF:tsLayoutItem Label="% I.V.A. 1:">
|
||||
<tsWPF:tsLayoutItem.PropiedadesTS>
|
||||
<tsWPF:PropiedadesTS Modificable="NoModificable" />
|
||||
</tsWPF:tsLayoutItem.PropiedadesTS>
|
||||
<dxe:TextEdit TabIndex="16" HorizontalAlignment="Stretch" EditValue="{Binding PorcentajeIVA1, Mode=TwoWay, NotifyOnSourceUpdated=True, NotifyOnValidationError=true, ValidatesOnExceptions=true}" />
|
||||
</tsWPF:tsLayoutItem>
|
||||
|
||||
|
||||
<tsWPF:tsLayoutItem Label="% I.V.A. 2:">
|
||||
<tsWPF:tsLayoutItem.PropiedadesTS>
|
||||
<tsWPF:PropiedadesTS Modificable="NoModificable" />
|
||||
</tsWPF:tsLayoutItem.PropiedadesTS>
|
||||
<dxe:TextEdit TabIndex="19" HorizontalAlignment="Stretch" EditValue="{Binding PorcentajeIVA2, Mode=TwoWay, NotifyOnSourceUpdated=True, NotifyOnValidationError=true, ValidatesOnExceptions=true}" />
|
||||
</tsWPF:tsLayoutItem>
|
||||
<tsWPF:tsLayoutItem Label="% I.V.A. 3:">
|
||||
<tsWPF:tsLayoutItem.PropiedadesTS>
|
||||
<tsWPF:PropiedadesTS Modificable="NoModificable" />
|
||||
</tsWPF:tsLayoutItem.PropiedadesTS>
|
||||
<dxe:TextEdit TabIndex="22" HorizontalAlignment="Stretch" EditValue="{Binding PorcentajeIVA3, Mode=TwoWay, NotifyOnSourceUpdated=True, NotifyOnValidationError=true, ValidatesOnExceptions=true}" />
|
||||
</tsWPF:tsLayoutItem>
|
||||
|
||||
</dxlc:LayoutGroup>
|
||||
<dxlc:LayoutGroup Orientation="Vertical" HorizontalAlignment="Left" Width="230">
|
||||
<tsWPF:tsLayoutItem Label="Base Imponible 1:" >
|
||||
<tsWPF:tsLayoutItem.PropiedadesTS>
|
||||
<tsWPF:PropiedadesTS Modificable="NoModificable" UsualCorreccion="False" />
|
||||
</tsWPF:tsLayoutItem.PropiedadesTS>
|
||||
<dxe:TextEdit TabIndex="17" Mask="c2" MaskType="Numeric" MaskUseAsDisplayFormat="True" IsReadOnly="True" EditValue="{Binding BaseImponible1, Mode=TwoWay, NotifyOnSourceUpdated=True, NotifyOnValidationError=true, ValidatesOnExceptions=true}" x:Name="teBI1" />
|
||||
</tsWPF:tsLayoutItem>
|
||||
<tsWPF:tsLayoutItem Label="Base Imponible 2:">
|
||||
<tsWPF:tsLayoutItem.PropiedadesTS>
|
||||
<tsWPF:PropiedadesTS Modificable="NoModificable" UsualCorreccion="False" />
|
||||
</tsWPF:tsLayoutItem.PropiedadesTS>
|
||||
<dxe:TextEdit TabIndex="20" Mask="c2" MaskType="Numeric" MaskUseAsDisplayFormat="True" IsReadOnly="True" EditValue="{Binding BaseImponible2, Mode=TwoWay, NotifyOnSourceUpdated=True, NotifyOnValidationError=true, ValidatesOnExceptions=true}" x:Name="teBI2" />
|
||||
</tsWPF:tsLayoutItem>
|
||||
<tsWPF:tsLayoutItem Label="Base Imponible 3:">
|
||||
<tsWPF:tsLayoutItem.PropiedadesTS>
|
||||
<tsWPF:PropiedadesTS Modificable="NoModificable" UsualCorreccion="False" />
|
||||
</tsWPF:tsLayoutItem.PropiedadesTS>
|
||||
<dxe:TextEdit TabIndex="23" Mask="c2" MaskType="Numeric" MaskUseAsDisplayFormat="True" IsReadOnly="True" EditValue="{Binding BaseImponible3, Mode=TwoWay, NotifyOnSourceUpdated=True, NotifyOnValidationError=true, ValidatesOnExceptions=true}" x:Name="teBI3" />
|
||||
</tsWPF:tsLayoutItem>
|
||||
<tsWPF:tsLayoutItem Label="Base Imponible Exenta:">
|
||||
<tsWPF:tsLayoutItem.PropiedadesTS>
|
||||
<tsWPF:PropiedadesTS Modificable="NoModificable" UsualCorreccion="False" />
|
||||
</tsWPF:tsLayoutItem.PropiedadesTS>
|
||||
<dxe:TextEdit TabIndex="23" Mask="c2" MaskType="Numeric" MaskUseAsDisplayFormat="True" IsReadOnly="True" EditValue="{Binding BaseImponibleExenta, Mode=TwoWay, NotifyOnSourceUpdated=True, NotifyOnValidationError=true, ValidatesOnExceptions=true}" />
|
||||
</tsWPF:tsLayoutItem>
|
||||
</dxlc:LayoutGroup>
|
||||
<dxlc:LayoutGroup Orientation="Vertical" HorizontalAlignment="Left" Width="180">
|
||||
<tsWPF:tsLayoutItem Label="Importe IVA 1:">
|
||||
<tsWPF:tsLayoutItem.PropiedadesTS>
|
||||
<tsWPF:PropiedadesTS UsualCorreccion="False" />
|
||||
</tsWPF:tsLayoutItem.PropiedadesTS>
|
||||
<dxe:TextEdit TabIndex="18" Mask="c2" MaskType="Numeric" MaskUseAsDisplayFormat="True" EditValue="{Binding CuotaIVA1, Mode=TwoWay , NotifyOnSourceUpdated=True, NotifyOnValidationError=true, ValidatesOnExceptions=true}" x:Name="teCuotaIVA1" />
|
||||
</tsWPF:tsLayoutItem>
|
||||
<tsWPF:tsLayoutItem Label="Importe IVA 2:">
|
||||
<tsWPF:tsLayoutItem.PropiedadesTS>
|
||||
<tsWPF:PropiedadesTS UsualCorreccion="False" />
|
||||
</tsWPF:tsLayoutItem.PropiedadesTS>
|
||||
<dxe:TextEdit TabIndex="21" Mask="c2" MaskType="Numeric" MaskUseAsDisplayFormat="True" EditValue="{Binding CuotaIVA2, Mode=TwoWay, NotifyOnSourceUpdated=True, NotifyOnValidationError=true, ValidatesOnExceptions=true}" x:Name="teCuotaIVA2"/>
|
||||
</tsWPF:tsLayoutItem>
|
||||
<tsWPF:tsLayoutItem Label="Importe IVA 3:">
|
||||
<tsWPF:tsLayoutItem.PropiedadesTS>
|
||||
<tsWPF:PropiedadesTS UsualCorreccion="False" />
|
||||
</tsWPF:tsLayoutItem.PropiedadesTS>
|
||||
<dxe:TextEdit TabIndex="24" Mask="c2" MaskType="Numeric" MaskUseAsDisplayFormat="True" EditValueType="{x:Type sys:Double}" EditValue="{Binding CuotaIVA3, Mode=TwoWay , NotifyOnSourceUpdated=True, NotifyOnValidationError=true, ValidatesOnExceptions=true}" x:Name="teCuotaIVA3" />
|
||||
</tsWPF:tsLayoutItem>
|
||||
|
||||
</dxlc:LayoutGroup>
|
||||
<dxlc:LayoutGroup Orientation="Vertical" Width="250" HorizontalAlignment="Left">
|
||||
<tsWPF:tsLayoutItem Label="Total Base Imponible:" FontWeight="SemiBold">
|
||||
<tsWPF:tsLayoutItem.PropiedadesTS>
|
||||
<tsWPF:PropiedadesTS Modificable="NoModificable" UsualCorreccion="False" />
|
||||
</tsWPF:tsLayoutItem.PropiedadesTS>
|
||||
<dxe:TextEdit TabIndex="25" Mask="c2" MaskType="Numeric" MaskUseAsDisplayFormat="True" IsReadOnly="True" FontWeight="Bold" EditValue="{Binding TotalBaseImponible, Mode=TwoWay, NotifyOnSourceUpdated=True, NotifyOnValidationError=true, ValidatesOnExceptions=true}" />
|
||||
</tsWPF:tsLayoutItem>
|
||||
<tsWPF:tsLayoutItem Label="Total IVA:" FontWeight="SemiBold">
|
||||
<tsWPF:tsLayoutItem.PropiedadesTS>
|
||||
<tsWPF:PropiedadesTS Modificable="NoModificable" UsualCorreccion="False" />
|
||||
</tsWPF:tsLayoutItem.PropiedadesTS>
|
||||
<dxe:TextEdit TabIndex="27" Mask="c2" MaskType="Numeric" MaskUseAsDisplayFormat="True" IsReadOnly="True" FontWeight="Bold" EditValue="{Binding TotalIVA, Mode=TwoWay, NotifyOnSourceUpdated=True, NotifyOnValidationError=true, ValidatesOnExceptions=true}" />
|
||||
</tsWPF:tsLayoutItem>
|
||||
</dxlc:LayoutGroup>
|
||||
<dxlc:LayoutGroup Orientation="Vertical" Width="200" HorizontalAlignment="Left">
|
||||
<tsWPF:tsLayoutItem Label="% I.R.P.F:" FontWeight="SemiBold">
|
||||
<tsWPF:tsLayoutItem.PropiedadesTS>
|
||||
<tsWPF:PropiedadesTS UsualCorreccion="False" />
|
||||
</tsWPF:tsLayoutItem.PropiedadesTS>
|
||||
<dxe:TextEdit TabIndex="26" Mask="N0" MaskType="Numeric" MaskUseAsDisplayFormat="True" IsReadOnly="True" FontWeight="Bold" EditValue="{Binding PorcentajeIRPF, Mode=TwoWay, NotifyOnSourceUpdated=True, NotifyOnValidationError=true, ValidatesOnExceptions=true}" />
|
||||
</tsWPF:tsLayoutItem>
|
||||
<tsWPF:tsLayoutItem Label="Cuota I.R.P.F.:" FontWeight="SemiBold">
|
||||
<tsWPF:tsLayoutItem.PropiedadesTS>
|
||||
<tsWPF:PropiedadesTS UsualCorreccion="False" />
|
||||
</tsWPF:tsLayoutItem.PropiedadesTS>
|
||||
<dxe:TextEdit TabIndex="28" Mask="c2" MaskType="Numeric" MaskUseAsDisplayFormat="True" IsReadOnly="True" FontWeight="Bold" EditValue="{Binding IRPF, Mode=TwoWay, NotifyOnSourceUpdated=True, NotifyOnValidationError=true, ValidatesOnExceptions=true}" />
|
||||
</tsWPF:tsLayoutItem>
|
||||
</dxlc:LayoutGroup>
|
||||
<dxlc:LayoutGroup Orientation="Vertical" Width="270" HorizontalAlignment="Left">
|
||||
<tsWPF:tsLayoutItem Label="Total Factura:" FontWeight="Bold">
|
||||
<tsWPF:tsLayoutItem.PropiedadesTS>
|
||||
<tsWPF:PropiedadesTS Modificable="NoModificable" UsualCorreccion="False" />
|
||||
</tsWPF:tsLayoutItem.PropiedadesTS>
|
||||
<dxe:TextEdit TabIndex="29" Mask="c2" MaskType="Numeric" MaskUseAsDisplayFormat="True" IsReadOnly="True" FontWeight="Bold" EditValue="{Binding TotalFactura, Mode=TwoWay, NotifyOnSourceUpdated=True, NotifyOnValidationError=true, ValidatesOnExceptions=true}" />
|
||||
</tsWPF:tsLayoutItem>
|
||||
<tsWPF:tsLayoutItem FontWeight="Bold" Label="Importe Pagado:">
|
||||
<tsWPF:tsLayoutItem.PropiedadesTS>
|
||||
<tsWPF:PropiedadesTS Modificable="NoModificable" UsualCorreccion="False" />
|
||||
</tsWPF:tsLayoutItem.PropiedadesTS>
|
||||
<dxe:TextEdit TabIndex="30" Mask="c2" MaskType="Numeric" MaskUseAsDisplayFormat="True" IsReadOnly="True" FontWeight="Bold" EditValue="{Binding ImportePagado, Mode=TwoWay, NotifyOnSourceUpdated=True, NotifyOnValidationError=true, ValidatesOnExceptions=true}" />
|
||||
</tsWPF:tsLayoutItem>
|
||||
|
||||
<tsWPF:tsLayoutItem FontWeight="Bold" Label="Pendiente Pago:">
|
||||
<tsWPF:tsLayoutItem.PropiedadesTS>
|
||||
<tsWPF:PropiedadesTS Modificable="NoModificable" UsualCorreccion="False" />
|
||||
</tsWPF:tsLayoutItem.PropiedadesTS>
|
||||
<dxe:TextEdit TabIndex="31" Mask="c2" MaskType="Numeric" MaskUseAsDisplayFormat="True" IsReadOnly="True" FontWeight="Bold" EditValue="{Binding ImportePendiente, Mode=OneWay, NotifyOnSourceUpdated=True, NotifyOnValidationError=true, ValidatesOnExceptions=true}" />
|
||||
</tsWPF:tsLayoutItem>
|
||||
</dxlc:LayoutGroup>
|
||||
|
||||
|
||||
</dxlc:LayoutGroup>
|
||||
</dxlc:LayoutControl>
|
||||
</Grid>
|
||||
</tsWPF:tsUserControl>
|
||||
683
GestionGrupoSanchoToro/Compras/ucFacturaRecibida.xaml.vb
Normal file
683
GestionGrupoSanchoToro/Compras/ucFacturaRecibida.xaml.vb
Normal file
@@ -0,0 +1,683 @@
|
||||
Imports DevExpress.Xpf.Editors
|
||||
Imports DevExpress.Xpf.LayoutControl
|
||||
Imports tsWPFCore
|
||||
Imports System.ComponentModel
|
||||
Imports System.Data
|
||||
Imports DevExpress.Xpf.Editors.Validation
|
||||
Imports DevExpress.Xpf.Editors.Helpers
|
||||
Imports DevExpress.Xpf.Core
|
||||
Imports tsWPFCore.modExtensiones
|
||||
Imports System.Data.Common
|
||||
Imports bdGrupoSanchoToro.db
|
||||
Imports tsUtilidades.Datos
|
||||
Imports DevExpress.Xpf.Bars
|
||||
Imports DevExpress.Xpf.Grid
|
||||
Imports System.Collections
|
||||
Imports tsEFCore8.Extensiones
|
||||
Imports bdGrupoSanchoToro.db.Utilidades
|
||||
|
||||
Imports tsUtilidades.Enumeraciones
|
||||
Imports tsUtilidades
|
||||
Imports bdGrupoSanchoToro.db.productos
|
||||
Imports System.IO
|
||||
Imports Microsoft.Win32
|
||||
Imports tsUtilidades.Extensiones
|
||||
|
||||
'TODO: Comprobar cuando se puede modificar una factura (o eliminar)
|
||||
Public Class ucFacturaRecibida
|
||||
Private bd As tscGrupoSanchoToro
|
||||
Friend _idFactura As Nullable(Of Integer)
|
||||
Private lProductos As List(Of productos)
|
||||
Private ivas As List(Of enumeraciones)
|
||||
Friend idLog As Integer?
|
||||
Dim ra As facturasrecibidas
|
||||
Public Overrides Sub Cargado()
|
||||
Me.Tipo_ucControlBusqueda = GetType(ucFacturasRecibidas)
|
||||
End Sub
|
||||
|
||||
Public Overrides Sub EstableceDataContextSecundarios(Optional Background As Boolean = False)
|
||||
Try
|
||||
lProductos = bd.productos.OrderBy(Function(x) x.Descripcion).ToList
|
||||
Dim lProductosFra = ra.detallesfacturasrecibidas.Select(Function(x) x.idProducto).ToArray
|
||||
lProductos = lProductos.Where(Function(x) x.FechaBaja Is Nothing OrElse lProductosFra.Contains(x.idProducto)).ToList
|
||||
cbProducto.ItemsSource = lProductos
|
||||
|
||||
|
||||
'For Each d In ra.detallesfacturasrecibidas
|
||||
' If Not ivas.Contains(d.PorcentajeIVA) Then ivas.Add(d.PorcentajeIVA)
|
||||
'Next
|
||||
|
||||
cbIva.ItemsSource = ivas
|
||||
cbTipoDocumento.ItemsSource = tsUtilidades.DescripcionValor.EnumADescripcionValor(GetType(bdGrupoSanchoToro.db.documentosfacturasrecibidas.TipoDocumentoFacturaEnum)).OrderBy(Function(x) x.Descripcion)
|
||||
cbCategoria.ItemsSource = bd.enumeraciones.Where(Function(x) x.idGrupoEnumeracionNavigation.Grupo = "CATFR").OrderBy(Function(x) x.Descripcion).ToList
|
||||
Dim plantillas As List(Of tsWPFCore.Plantilla) = Comun.ObtienePlantillas(bd, {"GRUPLA.FACREC"}, False)
|
||||
Me.ContenedorAplicacion.cbPlantillaAImprimir.ItemsSource = plantillas
|
||||
If plantillas.Count > 0 Then
|
||||
Me.ContenedorAplicacion.bePlantilla.EditValue = plantillas.First.idPlantilla
|
||||
End If
|
||||
Catch ex As Exception
|
||||
Throw New Exception(ex.Message, ex)
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
|
||||
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
|
||||
|
||||
ivas = bd.enumeraciones.Where(Function(x) x.idGrupoEnumeracionNavigation.Grupo = "PIVA").OrderBy(Function(x) x.ValorNumerico2).ToList
|
||||
|
||||
If idLog.HasValue Then
|
||||
Try
|
||||
Dim log = bd.logs.First(Function(x) x.idLog = idLog)
|
||||
ra = tsUtilidades.Utilidades.DeserializarSinErrores(log.Log, GetType(facturasrecibidas))
|
||||
If ra.idUsuario.HasValue Then ra.idUsuarioNavigation = bd.usuarios.FirstOrDefault(Function(x) x.idUsuario = ra.idUsuario.Value)
|
||||
Dim df = bd.logs.FirstOrDefault(Function(x) x.idRelacionado = log.idLog AndAlso x.Aplicacion = "DETALLESFACTURASRECIBIDAS")
|
||||
If df IsNot Nothing Then
|
||||
Dim ld = tsUtilidades.Utilidades.DeserializarSinErrores(df.Log, GetType(List(Of detallesfacturasrecibidas)))
|
||||
For Each d In ld
|
||||
ra.detallesfacturasrecibidas.Add(d)
|
||||
Next
|
||||
End If
|
||||
Dim mv = bd.logs.FirstOrDefault(Function(x) x.idRelacionado = log.idLog AndAlso x.Aplicacion = "MOVIMIENTOSCAJA_FR")
|
||||
If mv IsNot Nothing Then
|
||||
Dim ld = tsUtilidades.Utilidades.DeserializarSinErrores(mv.Log, GetType(List(Of movimientoscaja)))
|
||||
For Each d In ld
|
||||
ra.movimientoscaja.Add(d)
|
||||
Next
|
||||
End If
|
||||
Dim lent = bd.logs.FirstOrDefault(Function(x) x.idRelacionado = log.idLog AndAlso x.Aplicacion = "ENTIDADES")
|
||||
If lent IsNot Nothing Then
|
||||
Dim ent = tsUtilidades.Utilidades.DeserializarSinErrores(lent.Log, GetType(entidades))
|
||||
ra.idProveedorNavigation = ent
|
||||
lgDatosProveedor.DataContext = ra.idProveedorNavigation
|
||||
End If
|
||||
Dim lfic = bd.logs.FirstOrDefault(Function(x) x.idRelacionado = log.idLog AndAlso x.Aplicacion = "FICHEROS")
|
||||
If lfic IsNot Nothing Then
|
||||
Dim fic = tsUtilidades.Utilidades.DeserializarSinErrores(lfic.Log, GetType(db.ficheros))
|
||||
ra.idFicheroNavigation = fic
|
||||
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 FuerzaNuevo OrElse _idFactura Is Nothing Then
|
||||
ra = New facturasrecibidas
|
||||
ra.FechaFactura = DateOnly.FromDateTime(Today)
|
||||
_idFactura = Nothing
|
||||
ra.FechaRegistro = DateOnly.FromDateTime(Today)
|
||||
NuevoEstado = tsUtilidades.EstadosAplicacion.Nuevo
|
||||
lgDatosProveedor.DataContext = ra.idProveedorNavigation
|
||||
Else
|
||||
ra = bd.facturasrecibidas.First(Function(x) x.idFactura = _idFactura)
|
||||
NuevoEstado = tsUtilidades.EstadosAplicacion.ModificandoRegistro
|
||||
lgDatosProveedor.DataContext = ra.idProveedorNavigation
|
||||
End If
|
||||
End If
|
||||
cbIVA.ItemsSource = ivas
|
||||
Dim lCajas = bd.cajas.Where(Function(x) x.idEmpresa = EmpresaActual.idEmpresa).ToList.Where(Function(x) (x.FechaBaja.HasValue = False OrElse ra.movimientoscaja.Any(Function(y) y.idCaja = x.idCaja))).OrderBy(Function(x) x.Descripcion).ToList
|
||||
Me.cbCaja.ItemsSource = lCajas
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
cbRazonSocial.ItemsSource = bd.entidades.Where(Function(x) x.idEmpresa = EmpresaActual.idEmpresa AndAlso ((x.EsProveedor AndAlso x.FechaBaja.HasValue = False) OrElse x.idEntidad = ra.idProveedor)).ToList
|
||||
gcDetalle.ItemsSource = ra.detallesfacturasrecibidas
|
||||
gcRecibos.ItemsSource = ra.movimientoscaja
|
||||
gcDocumentos.ItemsSource = ra.documentosfacturasrecibidas
|
||||
Me.gcLogs.ItemsSource = bd.logs.Where(Function(x) x.id = ra.idFactura AndAlso x.Aplicacion = "FACTURASRECIBIDAS").ToList
|
||||
|
||||
'Dim Acciones As New List(Of tsWPFCore.Accion)
|
||||
'Acciones.Add(New Accion With {
|
||||
' .idAccion = 1,
|
||||
' .Descripcion = "AGREGAR PRODUCTOS PENDIENTES DE FACTURAR"})
|
||||
'Acciones.Add(New Accion With {
|
||||
' .idAccion = 2,
|
||||
' .Descripcion = "SALDAR FACTURA POR CAJA CONTADO"})
|
||||
'Acciones.Add(New Accion With {
|
||||
' .idAccion = 3,
|
||||
' .Descripcion = "SALDAR FACTURA POR TPV"})
|
||||
'Acciones.Add(New Accion With {
|
||||
' .idAccion = 4,
|
||||
' .Descripcion = "SALDAR FACTURA POR BANCO"})
|
||||
'Me.ContenedorAplicacion.cbAcciones.ItemsSource = Acciones
|
||||
'Me.ContenedorAplicacion.beAcciones.EditValue = Acciones.First.idAccion
|
||||
Me.DataContext = ra
|
||||
Return NuevoEstado
|
||||
End Function
|
||||
|
||||
Public Overrides Function ObtieneBD() As tsUtilidades.ItsContexto
|
||||
bd = tscGrupoSanchoToro.NuevoContexto
|
||||
Return bd
|
||||
End Function
|
||||
|
||||
Public Overrides ReadOnly Property NombreTablaBase As String
|
||||
Get
|
||||
Return "facturasrecibidas"
|
||||
End Get
|
||||
End Property
|
||||
|
||||
'Public Overrides ReadOnly Property CampoIndice As String
|
||||
' Get
|
||||
' Return "idFactura"
|
||||
' End Get
|
||||
'End Property
|
||||
Public Overrides ReadOnly Property idRegistroAplicacionActual As String
|
||||
Get
|
||||
If idLog.HasValue Then
|
||||
Return "Gastos / Factura Proveedor R.C.:" & idLog.ToString
|
||||
Else
|
||||
If Me.Estado = tsUtilidades.EstadosAplicacion.Nuevo Then
|
||||
Return "Gastos / Factura Proveedor.Nuevo"
|
||||
Else
|
||||
Return "Gastos / Factura Proveedor." & DirectCast(Me.DataContext, facturasrecibidas).idFactura.ToString
|
||||
End If
|
||||
End If
|
||||
End Get
|
||||
End Property
|
||||
|
||||
Public Overrides ReadOnly Property DescripcionRegistro As String
|
||||
Get
|
||||
Return "Gastos / Factura Proveedor"
|
||||
End Get
|
||||
End Property
|
||||
|
||||
Public Sub New(Optional idFactura As Integer? = Nothing)
|
||||
|
||||
' Llamada necesaria para el diseñador.
|
||||
InitializeComponent()
|
||||
_idFactura = idFactura
|
||||
' Agregue cualquier inicialización después de la llamada a InitializeComponent().
|
||||
|
||||
End Sub
|
||||
|
||||
|
||||
|
||||
|
||||
Public Overrides Sub EstableceTitulo()
|
||||
If idLog.HasValue Then
|
||||
Dim fr As facturasrecibidas = Me.DataContext
|
||||
Me.docpanel.Caption = "R.C. Gastos / Factura de Proveedor " & fr.NumeroFactura
|
||||
Me.docpanel.Tag = "R.C. Gastos / Factura Recibida." & fr.NumeroFactura
|
||||
Else
|
||||
If Me.Estado = tsUtilidades.EstadosAplicacion.ModificandoRegistro Then
|
||||
Dim fr As facturasrecibidas = Me.DataContext
|
||||
Me.docpanel.Caption = " Gastos / Factura de Proveedor " & fr.NumeroFactura
|
||||
Me.docpanel.Tag = " Gastos / Factura Recibida." & fr.NumeroFactura
|
||||
Else
|
||||
Me.docpanel.Caption = " Gastos / Factura de Proveedor Nueva"
|
||||
Me.docpanel.Tag = " Gastos / FacturaRecibida.Nuevo"
|
||||
End If
|
||||
End If
|
||||
' End If
|
||||
'End If
|
||||
End Sub
|
||||
|
||||
Public Overrides Function ObtienePermisos() As tsUtilidades.Permisos
|
||||
Dim pers = Comun.ObtienePermisos(Me.bd, "AP.ADMINISTRATIVOS", idUsuario)
|
||||
' pers.Eliminar = False
|
||||
Return pers
|
||||
End Function
|
||||
|
||||
|
||||
Private Sub ap_ValidarControl(sender As Object, e As ValidationEventArgs, ByRef ev As ErrorValidacion, ByRef ValorOriginalCambiado As Object) Handles Me.ValidarControl
|
||||
Dim pts As PropiedadesTS = sender.parent.propiedadests
|
||||
Try
|
||||
If Not pts Is Nothing Then
|
||||
Me.ErroresValidacion.EliminaError("validando-" & pts.NombreCampo)
|
||||
Dim ra As facturasrecibidas = Me.DataContext
|
||||
Select Case pts.NombreCampo.ToLower
|
||||
Case "idproveedor_nulable"
|
||||
Dim id As Integer = e.Value
|
||||
Dim ent = bd.entidades.First(Function(x) x.idEntidad = id)
|
||||
lgDatosProveedor.DataContext = ent
|
||||
End Select
|
||||
End If
|
||||
Catch ex As Exception
|
||||
Dim sCodigoError As String = "validando-"
|
||||
If pts IsNot Nothing Then
|
||||
sCodigoError &= pts.NombreCampo
|
||||
End If
|
||||
ev = New ErrorValidacion(sCodigoError, sender, ex.Message, ex, DevExpress.XtraEditors.DXErrorProvider.ErrorType.Critical)
|
||||
e.IsValid = False
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
|
||||
Private Sub ap_DespuesGuardar(sender As Object, e As ItemClickEventArgs, OpcionGuardado As Integer) Handles Me.DespuesGuardar
|
||||
_idFactura = ra.idFactura
|
||||
RefrescaUC()
|
||||
' Me.gcRecibos.ItemsSource = ra.movimientoscaja
|
||||
' Me.gcLogs.ItemsSource = bd.logs.Where(Function(x) x.id = ra.idFactura AndAlso x.Aplicacion = "FACTURASRECIBIDAS").ToList
|
||||
End Sub
|
||||
|
||||
|
||||
Private Sub ap_Enlazar(Celda As EditGridCellData, Defecto As Boolean) Handles Me.Enlazar
|
||||
Dim ra As facturasrecibidas = Me.DataContext
|
||||
Select Case Celda.Column.FieldName.ToLower
|
||||
Case "idlog"
|
||||
Dim log As logs = gcLogs.CurrentItem
|
||||
Dim id As Integer = log.idLog
|
||||
Dim uc As New ucFacturaRecibida
|
||||
uc.idLog = log.idLog
|
||||
FuncionesDinamicas.AbrirAP(uc, OtrosParametros)
|
||||
End Select
|
||||
'Select Case Celda.Column.FieldName.ToLower
|
||||
' Case "numeroalbaranentrega"
|
||||
' Dim ra = DirectCast(Me.gcDetalle.CurrentItem, detallesfacturasrecibidas)
|
||||
' Dim id As Integer = ra.detallesalbaranes.idAlbaranEntrega
|
||||
' FuncionesDinamicas.AbrirAP(New ucAlbaranEntrega(id), OtrosParametros)
|
||||
' Case "numeroalbaranrecogida"
|
||||
' Dim ra = DirectCast(Me.gcDetalle.CurrentItem, detallesfacturasrecibidas)
|
||||
' Dim id As Integer = ra.detallesalbaranes.idAlbaranRecogida
|
||||
' FuncionesDinamicas.AbrirAP(New ucAlbaranRecogida(id), OtrosParametros)
|
||||
'End Select
|
||||
End Sub
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Private Sub ap_EstadoCambiado(EstadoAnterior As tsUtilidades.EstadosAplicacion, EstadoNuevo As tsUtilidades.EstadosAplicacion) Handles Me.EstadoCambiado
|
||||
Select Case EstadoNuevo
|
||||
Case EstadosAplicacion.ModificandoRegistro
|
||||
Dim ra As facturasrecibidas = Me.DataContext
|
||||
|
||||
' Dim ra As albaranesrecogida = Me.DataContext
|
||||
' If ra.detallesfacturasrecibidas.ToList.Any(Function(x) x.idAlbaranRecogida.HasValue OrElse (x.idUltimaFactura.HasValue AndAlso (x.facturasrecibidas.Fecha > ra.Fecha.Date))) Then me.EstableceSoloLectura()
|
||||
End Select
|
||||
If idLog.HasValue Then EstableceSoloLectura()
|
||||
EstableceSoloLecturaCI()
|
||||
End Sub
|
||||
|
||||
|
||||
Private Sub BiBuscarProducto_Click(sender As Object, e As RoutedEventArgs)
|
||||
'Dim dxw As New dxwProductos(lProductos)
|
||||
'If dxw.ShowDialog Then
|
||||
' If gcDetalle.CurrentItem Is Nothing Then tvDetalle.AddNewRow()
|
||||
' Dim def As detallesfacturasrecibidas = gcDetalle.CurrentItem
|
||||
' Dim prod = lProductos.First(Function(x) x.idProducto = dxw.idProducto)
|
||||
' def.idProducto = prod.idProducto
|
||||
' RellenaDatosProducto(def)
|
||||
' tvDetalle.MoveNextCell()
|
||||
' gcDetalle.RefreshRow(tvDetalle.FocusedRowHandle)
|
||||
'End If
|
||||
If tvDetalle.ActiveEditor Is Nothing Then
|
||||
Dispatcher.BeginInvoke(New Action(Sub() tvDetalle.ShowEditor()), System.Windows.Threading.DispatcherPriority.Render)
|
||||
End If
|
||||
|
||||
Dim dxw As New dxwProductos(lProductos)
|
||||
If dxw.ShowDialog Then
|
||||
If gcDetalle.CurrentItem Is Nothing Then tvDetalle.AddNewRow()
|
||||
Dim def As detallesfacturasrecibidas = gcDetalle.CurrentItem
|
||||
Dim prod = lProductos.First(Function(x) x.idProducto = dxw.idProducto)
|
||||
def.idProducto = prod.idProducto
|
||||
If tvDetalle.ActiveEditor IsNot Nothing Then tvDetalle.ActiveEditor.EditValue = prod.idProducto
|
||||
tvDetalle.PostEditor()
|
||||
tvDetalle.CloseEditor()
|
||||
gcDetalle.RefreshRow(tvDetalle.FocusedRowHandle)
|
||||
End If
|
||||
End Sub
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Private Sub ap_AntesGuardar(sender As Object, e As ItemClickEventArgs, ByRef Cancelar As Boolean, ByRef MensajesError As Hashtable, OpcionGuardado As Integer) Handles Me.AntesGuardar
|
||||
|
||||
ra.idUsuario = idUsuario
|
||||
Dim hte As New Hashtable
|
||||
If ra.detallesfacturasrecibidas.Count = 0 Then
|
||||
hte.Add("ALMACENAR-DETALLE_OBLIGATORIO", "Es obligatorio introducir al menos un artículo")
|
||||
End If
|
||||
If bd.facturasrecibidas.Any(Function(x) x.NumeroFactura = ra.NumeroFactura AndAlso x.idProveedor = ra.idProveedor AndAlso x.idFactura <> ra.idFactura) Then
|
||||
hte.Add("ALMACENAR-YA-EXISTE-OTRA-FACTURA", "Ya existe esta factura del mismo cliente registrada")
|
||||
End If
|
||||
If ra.TotalFactura = 0 Then
|
||||
hte.Add("ALMACENAR-IMPORTE_0", "El total de la factura no puede ser 0")
|
||||
End If
|
||||
If Math.Abs(ra.ImportePagado) > Math.Abs(ra.TotalFactura) Then
|
||||
hte.Add("ALMACENAR-IMPORTE_PAGADO_SUPERIOR", "El importe pagado de los recibos no puede superar al total de la factura")
|
||||
End If
|
||||
|
||||
If hte.Count > 0 Then
|
||||
MensajesError = hte
|
||||
Cancelar = True
|
||||
Else
|
||||
For Each mv In ra.movimientoscaja
|
||||
mv.Tipo = TipoMovimientoEnum.RECIBO_PROVEEDOR
|
||||
If mv.idUsuario.HasValue = False Then mv.idUsuario = idUsuario
|
||||
Next
|
||||
For Each d In ra.documentosfacturasrecibidas
|
||||
If d.idUsuario.HasValue = False Then d.idUsuario = idUsuario
|
||||
Next
|
||||
If ra.ImportePendiente = 0 Then
|
||||
ra.FechaPago = DateOnly.FromDateTime(ra.movimientoscaja.OrderByDescending(Function(x) x.Fecha).First.Fecha)
|
||||
Else
|
||||
ra.FechaPago = Nothing
|
||||
End If
|
||||
If ra.PorcentajeIVA2.HasValue = False Then
|
||||
ra.BaseImponible2 = Nothing
|
||||
ra.CuotaIVA2 = Nothing
|
||||
End If
|
||||
If ra.PorcentajeIVA3.HasValue = False Then
|
||||
ra.BaseImponible3 = Nothing
|
||||
ra.CuotaIVA3 = Nothing
|
||||
End If
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Private Sub tvDetalle_CellValueChanged(sender As Object, e As CellValueChangedEventArgs) Handles tvDetalle.CellValueChanged
|
||||
Try
|
||||
Dim def As detallesfacturasrecibidas = e.Row
|
||||
Select Case e.Column.FieldName.ToLower
|
||||
Case "idproducto"
|
||||
RellenaDatosProducto(def)
|
||||
'Case "cantidad", "precio"
|
||||
' def.RefrescaImporte()
|
||||
Case "idtipoiva"
|
||||
Dim idTIVA = CInt(e.Value)
|
||||
def.PorcentajeIVA = ivas.First(Function(x) x.idEnumeracion = idTIVA).ValorNumerico1
|
||||
End Select
|
||||
Catch ex As Exception
|
||||
|
||||
End Try
|
||||
End Sub
|
||||
Private Sub RellenaDatosProducto(dea As detallesfacturasrecibidas)
|
||||
Dim ae As facturasrecibidas = Me.DataContext
|
||||
Dim pr = lProductos.First(Function(x) x.idProducto = dea.idProducto)
|
||||
dea.Precio = pr.UltimoPrecioCompra
|
||||
If dea.Cantidad = 0 Then dea.Cantidad = 1
|
||||
'dea.RefrescaImporte()
|
||||
End Sub
|
||||
|
||||
Private Sub BiBuscarProveedor_Click(sender As Object, e As RoutedEventArgs)
|
||||
If Me.ContenedorAplicacion.btGuardar.IsEnabled Then
|
||||
Dim dxw As New dxwEntidades(bd, False, True)
|
||||
If dxw.ShowDialog Then
|
||||
Dim ra As facturasrecibidas = Me.DataContext
|
||||
Dim ent = bd.entidades.First(Function(x) x.idEntidad = dxw.Entidad.idEntidad)
|
||||
ra.idProveedorNavigation = ent
|
||||
ra.idProveedor_Nulable = ent.idEntidad
|
||||
lgDatosProveedor.DataContext = ent
|
||||
End If
|
||||
End If
|
||||
End Sub
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Private Sub ap_ImprimirPlantilla(sender As Object, e As ItemClickEventArgs, idPlantilla As Integer) Handles Me.ImprimirPlantilla
|
||||
Imprimir(idPlantilla, False, 1)
|
||||
End Sub
|
||||
Private Sub Imprimir(idPlantilla As Integer, ImpresoraDefecto As Boolean, Copias As Integer)
|
||||
|
||||
Dim ds As List(Of facturasrecibidas)
|
||||
Dim pl = bd.plantillas.AsNoTracking.Where(Function(x) x.idPlantilla = idPlantilla).Select(Function(x) New With {.Fichero = x.idFicheroNavigation.Fichero, .Tipo = x.idGrupoNavigation.Codigo}).FirstOrDefault
|
||||
ds = New List(Of facturasrecibidas)
|
||||
ds.Add(ra)
|
||||
Informes.ImprimirPlantilla(bd, pl.Fichero, ds, ImpresoraDefecto, Copias)
|
||||
|
||||
End Sub
|
||||
|
||||
|
||||
'Private Sub ap_EjecutarAccion(sender As Object, e As ItemClickEventArgs, idAccion As Integer) Handles Me.EjecutarAccion
|
||||
|
||||
|
||||
'End Sub
|
||||
|
||||
|
||||
Private Sub tvDetalle_RowUpdated(sender As Object, e As DevExpress.Xpf.Grid.RowEventArgs) Handles tvDetalle.RowUpdated
|
||||
Call CalculaTotales()
|
||||
End Sub
|
||||
Sub CalculaTotales()
|
||||
Dim ra As facturasrecibidas = Me.DataContext
|
||||
Dim ivas(2) As Double?
|
||||
For Each df In ra.detallesfacturasrecibidas.Where(Function(x) x.PorcentajeIVA.HasValue).ToList
|
||||
For i = 0 To 3
|
||||
If i = 3 Then Throw New Exception("Demasiados tipos de iva en la misma factura.")
|
||||
If ivas(i).HasValue = False OrElse ivas(i).Value = df.PorcentajeIVA Then
|
||||
ivas(i) = df.PorcentajeIVA
|
||||
Exit For
|
||||
End If
|
||||
Next
|
||||
Next
|
||||
ra.PorcentajeIVA1 = ivas(0)
|
||||
ra.PorcentajeIVA2 = ivas(1)
|
||||
ra.PorcentajeIVA3 = ivas(2)
|
||||
ra.BaseImponibleExenta = ra.detallesfacturasrecibidas.Where(Function(x) x.PorcentajeIVA.HasValue = False).Sum(Function(x) x.Importe)
|
||||
ra.BaseImponible1 = Nothing
|
||||
ra.BaseImponible2 = Nothing
|
||||
ra.BaseImponible3 = Nothing
|
||||
If ivas(0).HasValue Then ra.BaseImponible1 = ra.detallesfacturasrecibidas.Where(Function(x) x.PorcentajeIVA.HasValue AndAlso x.PorcentajeIVA = ivas(0)).Sum(Function(x) x.Importe)
|
||||
If ivas(1).HasValue Then ra.BaseImponible2 = ra.detallesfacturasrecibidas.Where(Function(x) x.PorcentajeIVA.HasValue AndAlso x.PorcentajeIVA = ivas(1)).Sum(Function(x) x.Importe)
|
||||
If ivas(2).HasValue Then ra.BaseImponible3 = ra.detallesfacturasrecibidas.Where(Function(x) x.PorcentajeIVA.HasValue AndAlso x.PorcentajeIVA = ivas(2)).Sum(Function(x) x.Importe)
|
||||
'ra.BaseImponible2 = If(ivas(2).HasValue, ra.detallesfacturasrecibidas.Where(Function(x) x.PorcentajeIVA = ivas(1)).Sum(Function(x) x.Importe), 0)
|
||||
'ra.BaseImponible3 = If(ivas(2).HasValue, ra.detallesfacturasrecibidas.Where(Function(x) x.PorcentajeIVA = ivas(2)).Sum(Function(x) x.Importe), 0)
|
||||
ra.TotalBaseImponible = Math.Round(ra.detallesfacturasrecibidas.Sum(Function(x) x.Importe), 2)
|
||||
CalculaIRPF(ra)
|
||||
CalculaCuotasIVA(ra)
|
||||
CalculaTotalesFinales(ra)
|
||||
End Sub
|
||||
Public Sub CalculaIRPF(F As facturasrecibidas)
|
||||
F.IRPF = Math.Round(F.TotalBaseImponible * F.PorcentajeIRPF / 100, 2, MidpointRounding.AwayFromZero)
|
||||
End Sub
|
||||
Public Sub CalculaCuotasIVA(F As facturasrecibidas)
|
||||
F.CuotaIVA1 = Nothing
|
||||
F.CuotaIVA2 = Nothing
|
||||
F.CuotaIVA3 = Nothing
|
||||
If F.PorcentajeIVA1.HasValue Then
|
||||
F.CuotaIVA1 = Math.Round(F.BaseImponible1.Value * F.PorcentajeIVA1.Value / 100, 2, MidpointRounding.AwayFromZero)
|
||||
End If
|
||||
If F.PorcentajeIVA2.HasValue Then
|
||||
F.CuotaIVA2 = Math.Round(F.BaseImponible2.Value * F.PorcentajeIVA2.Value / 100, 2, MidpointRounding.AwayFromZero)
|
||||
End If
|
||||
If F.PorcentajeIVA3.HasValue Then
|
||||
F.CuotaIVA3 = Math.Round(F.BaseImponible3.Value * F.PorcentajeIVA3.Value / 100, 2, MidpointRounding.AwayFromZero)
|
||||
End If
|
||||
End Sub
|
||||
Public Sub CalculaTotalesFinales(ra As facturasrecibidas)
|
||||
ra.TotalIVA = If(ra.CuotaIVA1.HasValue, ra.CuotaIVA1.Value, 0) + If(ra.CuotaIVA2.HasValue, ra.CuotaIVA2.Value, 0) + If(ra.CuotaIVA3.HasValue, ra.CuotaIVA3.Value, 0)
|
||||
ra.TotalFactura = Math.Round(ra.TotalBaseImponible + ra.TotalIVA - ra.IRPF, 2, MidpointRounding.AwayFromZero)
|
||||
ra.ImportePagado = Math.Round(ra.movimientoscaja.Sum(Function(x) x.ImporteNegativo), 2, MidpointRounding.AwayFromZero)
|
||||
|
||||
End Sub
|
||||
Private Sub tvDetalle_ValidaFila(sender As Object, e As DevExpress.Xpf.Grid.GridRowValidationEventArgs) Handles tvDetalle.ValidateRow
|
||||
'Dim df As detallesfacturasrecibidas = e.Row
|
||||
'Dim htErrores = New Hashtable
|
||||
'If df.Cantidad = 0 Then
|
||||
' DXMessageBox.Show("La Cantidad no puede ser 0", "Error")
|
||||
' e.SetError("La Cantidad no puede ser 0")
|
||||
' e.IsValid = False
|
||||
'End If
|
||||
Try
|
||||
Dim htErrores = New Hashtable
|
||||
ErroresValidacion.LimpiarErrores("TSGC-" & gcDetalle.PropiedadesTS.NumeroObjeto.ToString & ":" & e.RowHandle.ToString & ":")
|
||||
Dim df As detallesfacturasrecibidas = e.Row
|
||||
|
||||
If df.Cantidad = 0 Then
|
||||
htErrores.Add("Cantidad0", "La Cantidad no puede ser 0")
|
||||
End If
|
||||
|
||||
If htErrores.Count > 0 Then
|
||||
Me.AgregaErroresTSGC(gcDetalle, htErrores, e)
|
||||
End If
|
||||
Catch ex As Exception
|
||||
FuncionesDinamicas.ErrorNoControladoAp(Me, ex)
|
||||
DXMessageBox.Show(ex.Message, "Error")
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
Private Sub gcDetalle_DespuesEliminar(gc As tsGridControl) Handles gcDetalle.DespuesEliminar
|
||||
CalculaTotales()
|
||||
End Sub
|
||||
|
||||
Private Sub tvRecibos_ValidaFila(sender As Object, e As GridRowValidationEventArgs) Handles tvRecibos.ValidateRow
|
||||
'Dim mv As movimientoscaja = e.Row
|
||||
'If mv.Importe = 0 Then
|
||||
' DXMessageBox.Show("El Importe no puede ser 0", "Error")
|
||||
' e.SetError("El Importe no puede ser 0")
|
||||
' e.IsValid = False
|
||||
'End If
|
||||
Try
|
||||
Dim htErrores = New Hashtable
|
||||
ErroresValidacion.LimpiarErrores("TSGC-" & gcRecibos.PropiedadesTS.NumeroObjeto.ToString & ":" & e.RowHandle.ToString & ":")
|
||||
Dim mv As movimientoscaja = e.Row
|
||||
|
||||
If mv.Importe = 0 Then
|
||||
htErrores.Add("Importe0", "El Importe no puede ser 0")
|
||||
End If
|
||||
If htErrores.Count > 0 Then
|
||||
Me.AgregaErroresTSGC(gcRecibos, htErrores, e)
|
||||
End If
|
||||
Catch ex As Exception
|
||||
FuncionesDinamicas.ErrorNoControladoAp(Me, ex)
|
||||
DXMessageBox.Show(ex.Message, "Error")
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
Private Sub gcRecibos_DespuesEliminar(gc As tsGridControl) Handles gcRecibos.DespuesEliminar
|
||||
CalculaTotales()
|
||||
End Sub
|
||||
|
||||
Private Sub tvRecibos_RowUpdated(sender As Object, e As RowEventArgs) Handles tvRecibos.RowUpdated
|
||||
Dim ra As facturasrecibidas = Me.DataContext
|
||||
CalculaTotalesFinales(ra)
|
||||
End Sub
|
||||
|
||||
Private Sub tvRecibos_InitNewRow(sender As Object, e As InitNewRowEventArgs) Handles tvRecibos.InitNewRow
|
||||
gcRecibos.SetCellValue(e.RowHandle, "Fecha", Now)
|
||||
gcRecibos.SetCellValue(e.RowHandle, "FechaCreacion", Now)
|
||||
End Sub
|
||||
|
||||
Private Sub ucFacturaRecibida_CampoActualizado(sender As Object, e As DataTransferEventArgs) Handles Me.CampoActualizado
|
||||
Dim pts As PropiedadesTS = sender.parent.propiedadests
|
||||
If Not pts Is Nothing Then
|
||||
Dim ra As facturasrecibidas = Me.DataContext
|
||||
Select Case pts.NombreCampo.ToLower
|
||||
Case "porcentajeirpf"
|
||||
CalculaIRPF(ra)
|
||||
CalculaTotalesFinales(ra)
|
||||
Case "cuotaiva1", "cuotaiva2", "cuotaiva3", "irpf"
|
||||
CalculaTotalesFinales(ra)
|
||||
Case "idproveedor_nulable"
|
||||
ra.idProveedorNavigation = bd.entidades.First(Function(x) x.idEntidad = ra.idProveedor)
|
||||
End Select
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Private Sub tvDetalle_InitNewRow(sender As Object, e As InitNewRowEventArgs) Handles tvDetalle.InitNewRow
|
||||
gcDetalle.SetCellValue(e.RowHandle, "idTipoIVA", ivas.OrderByDescending(Function(x) x.ValorNumerico1).First.idEnumeracion)
|
||||
End Sub
|
||||
|
||||
|
||||
|
||||
Private Sub tvDetalle_PreviewKeyDown(sender As Object, e As Input.KeyEventArgs) Handles tvDetalle.PreviewKeyDown
|
||||
If e.Key = Key.F6 Then
|
||||
Select Case gcDetalle.CurrentColumn.FieldName.ToLower
|
||||
Case "idproducto"
|
||||
tvDetalle.ShowEditor()
|
||||
BiBuscarProducto_Click(Nothing, Nothing)
|
||||
End Select
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Private Sub cbRazonSocial_PreviewKeyDown(sender As Object, e As Input.KeyEventArgs) Handles cbRazonSocial.PreviewKeyDown
|
||||
If e.Key = Key.F6 Then
|
||||
BiBuscarProveedor_Click(Nothing, Nothing)
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Private Sub gcRecibos_AntesEliminar(gc As tsGridControl, ByRef Cancelar As Boolean) Handles gcRecibos.AntesEliminar
|
||||
Dim da As movimientoscaja = gc.CurrentItem
|
||||
If da.idMovimientoCierre.HasValue Then
|
||||
DXMessageBox.Show("No se puede eliminar un pago ya que está cerrado")
|
||||
Cancelar = True
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Private Sub tvDocumentos_ValidateRow(sender As Object, e As GridRowValidationEventArgs) Handles tvDocumentos.ValidateRow
|
||||
Dim ges As documentosfacturasrecibidas = gcDocumentos.CurrentItem
|
||||
If ges.idUsuario.HasValue = False Then
|
||||
ges.idUsuario = bdGrupoSanchoToro.db.Utilidades.idUsuario
|
||||
End If
|
||||
End Sub
|
||||
Private Sub VerDocumento(sender As System.Object, e As System.Windows.RoutedEventArgs)
|
||||
Try
|
||||
Dim exp As documentosfacturasrecibidas = gcDocumentos.CurrentItem
|
||||
If exp IsNot Nothing AndAlso exp.idFicheroNavigation IsNot Nothing AndAlso exp.idFicheroNavigation.NombreFichero IsNot Nothing AndAlso exp.idFicheroNavigation.Fichero IsNot Nothing Then
|
||||
Dim sftmp As String = tsUtilidades.Utilidades.ObtieneDirectorioAleatorio("GrupoSanchoToro") & "\" & exp.idFicheroNavigation.NombreFichero
|
||||
tsUtilidades.Utilidades.ByteArrayAFichero(exp.idFicheroNavigation.Fichero, sftmp, True)
|
||||
tsUtilidades.Sistema.EjecutaFichero(sftmp)
|
||||
End If
|
||||
Catch ex As Exception
|
||||
End Try
|
||||
End Sub
|
||||
Private Sub Examinar(sender As System.Object, e As System.Windows.RoutedEventArgs) Handles btFichero.DefaultButtonClick
|
||||
Try
|
||||
If gcDocumentos.CurrentItem Is Nothing Then tvDocumentos.AddNewRow()
|
||||
Dim exp As documentosfacturasrecibidas = gcDocumentos.CurrentItem
|
||||
Dim ofd As New OpenFileDialog
|
||||
If ofd.ShowDialog() Then
|
||||
Dim fin As New FileInfo(ofd.FileName)
|
||||
If fin.Length > 1024 * 1024 * 50 Then
|
||||
DXMessageBox.Show("El fichero no puede ser mayor de 50 Mb", "Atención")
|
||||
Else
|
||||
Dim f() As Byte = IO.File.ReadAllBytes(ofd.FileName)
|
||||
Dim idTipoDocumentoExp = bd.enumeraciones.First(Function(x) x.Codigo = "TIPFIC.EXPENT").idEnumeracion
|
||||
If exp.idFicheroNavigation Is Nothing Then
|
||||
Dim fi As New db.ficheros
|
||||
exp.idFicheroNavigation = fi
|
||||
End If
|
||||
exp.idFicheroNavigation.NombreFichero = IO.Path.GetFileName(ofd.FileName)
|
||||
exp.idFicheroNavigation.Fichero = f
|
||||
exp.idFicheroNavigation.Fecha = Now
|
||||
exp.idFicheroNavigation.Descripcion = exp.Descripcion.Acortar(80)
|
||||
exp.idFicheroNavigation.idTipo = idTipoDocumentoExp
|
||||
exp.Fecha = Now
|
||||
Dim usu = bd.usuarios.First(Function(x) x.idUsuario = bdGrupoSanchoToro.db.Utilidades.idUsuario)
|
||||
exp.idUsuario = bdGrupoSanchoToro.db.Utilidades.idUsuario
|
||||
exp.idUsuarioNavigation = usu
|
||||
tvDocumentos.MoveNextCell()
|
||||
gcDocumentos.RefreshRow(tvDocumentos.FocusedRowHandle)
|
||||
End If
|
||||
End If
|
||||
Catch ex As Exception
|
||||
DXMessageBox.Show(ex.Message, "Error")
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
Private Sub tvDocumentos_PreviewKeyDown(sender As Object, e As KeyEventArgs)
|
||||
If e.Key = Key.F6 AndAlso gcDocumentos.CurrentColumn.FieldName.ToLower = "ficheros.nombrefichero" Then
|
||||
Examinar(Nothing, Nothing)
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Private Sub tvDocumentos_InitNewRow(sender As Object, e As InitNewRowEventArgs) Handles tvDocumentos.InitNewRow
|
||||
gcDocumentos.SetCellValue(e.RowHandle, "Fecha", Now)
|
||||
End Sub
|
||||
|
||||
Private Sub teBI1_EditValueChanged(sender As Object, e As EditValueChangedEventArgs) Handles teBI1.EditValueChanged
|
||||
EstableceSoloLectura(teCuotaIVA1, ra IsNot Nothing AndAlso ra.BaseImponible1.HasValue AndAlso ra.BaseImponible1.Value <> 0)
|
||||
End Sub
|
||||
Private Sub teBI2_EditValueChanged(sender As Object, e As EditValueChangedEventArgs) Handles teBI1.EditValueChanged
|
||||
EstableceSoloLectura(teCuotaIVA2, ra IsNot Nothing AndAlso ra.BaseImponible2.HasValue AndAlso ra.BaseImponible2.Value <> 0)
|
||||
End Sub
|
||||
Private Sub teBI3_EditValueChanged(sender As Object, e As EditValueChangedEventArgs) Handles teBI1.EditValueChanged
|
||||
EstableceSoloLectura(teCuotaIVA3, ra IsNot Nothing AndAlso ra.BaseImponible3.HasValue AndAlso ra.BaseImponible3.Value <> 0)
|
||||
End Sub
|
||||
Private Sub EstableceSoloLecturaCI()
|
||||
EstableceSoloLectura(teCuotaIVA1, ra IsNot Nothing AndAlso ra.BaseImponible1.HasValue AndAlso ra.BaseImponible1.Value <> 0)
|
||||
EstableceSoloLectura(teCuotaIVA2, ra IsNot Nothing AndAlso ra.BaseImponible2.HasValue AndAlso ra.BaseImponible2.Value <> 0)
|
||||
EstableceSoloLectura(teCuotaIVA3, ra IsNot Nothing AndAlso ra.BaseImponible3.HasValue AndAlso ra.BaseImponible3.Value <> 0)
|
||||
End Sub
|
||||
|
||||
End Class
|
||||
|
||||
196
GestionGrupoSanchoToro/Compras/ucFacturasRecibidas.xaml
Normal file
196
GestionGrupoSanchoToro/Compras/ucFacturasRecibidas.xaml
Normal file
@@ -0,0 +1,196 @@
|
||||
<tsWPF: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"
|
||||
xmlns:dxlc="http://schemas.devexpress.com/winfx/2008/xaml/layoutcontrol"
|
||||
xmlns:dxe="http://schemas.devexpress.com/winfx/2008/xaml/editors"
|
||||
xmlns:dxg="http://schemas.devexpress.com/winfx/2008/xaml/grid" xmlns:tsWPF="clr-namespace:tsWPFCore;assembly=tsWPFCore" x:Class="ucFacturasRecibidas"
|
||||
mc:Ignorable="d"
|
||||
d:DesignHeight="768" d:DesignWidth="1366">
|
||||
<tsWPF:tsUserControl.Resources>
|
||||
<ResourceDictionary>
|
||||
<ResourceDictionary.MergedDictionaries>
|
||||
<ResourceDictionary Source="pack://application:,,,/tsWPFCore;component/Plantillas.xaml" />
|
||||
</ResourceDictionary.MergedDictionaries>
|
||||
</ResourceDictionary>
|
||||
</tsWPF:tsUserControl.Resources>
|
||||
<Grid>
|
||||
<dxlc:LayoutControl Orientation="Vertical">
|
||||
<dxlc:LayoutGroup View="GroupBox" Header="Búsqueda Rápida" Orientation="Vertical" x:Name="BusquedaRapida">
|
||||
<dxlc:LayoutGroup Width="900" HorizontalAlignment="Left" >
|
||||
<dxlc:LayoutGroup Orientation="Vertical">
|
||||
<dxlc:LayoutGroup>
|
||||
<tsWPF:tsLayoutItem Label="Fecha Inicio (Factura):" TabIndex="8" >
|
||||
<dxe:DateEdit x:Name="teFechaInicio" TabIndex="2" />
|
||||
</tsWPF:tsLayoutItem>
|
||||
<tsWPF:tsLayoutItem Label="Fecha Fin (Factura):" TabIndex="1" >
|
||||
<dxe:DateEdit x:Name="teFechaFin" TabIndex="3" />
|
||||
</tsWPF:tsLayoutItem>
|
||||
<tsWPF:tsLayoutItem Label="Mostar solo las no Enviadas a la Asesoría:" HorizontalAlignment="Left" HorizontalContentAlignment="Left" TabIndex="1" >
|
||||
<dxe:CheckEdit x:Name="cbSoloPendientes" IsChecked="False" />
|
||||
</tsWPF:tsLayoutItem>
|
||||
</dxlc:LayoutGroup>
|
||||
<tsWPF:tsLayoutItem Label="Búsqueda:" FontWeight="Bold" >
|
||||
<dxe:TextEdit x:Name="teBusqueda" TabIndex="0" FontWeight="Normal" />
|
||||
</tsWPF:tsLayoutItem>
|
||||
</dxlc:LayoutGroup>
|
||||
<Button Content="Buscar" Height="25" Width="100" x:Name="btBuscar" Click="BtBuscar_Click" IsDefault="True" TabIndex="1" />
|
||||
</dxlc:LayoutGroup>
|
||||
<dxlc:LayoutItem Label="Campos de búsqueda:">
|
||||
<Border BorderThickness="1" BorderBrush="Black" >
|
||||
<StackPanel Orientation="Horizontal" >
|
||||
<TextBlock x:Name="tbCamposBusqueda" Text="Razón Social, NIF, Nº Factura, Obras"/>
|
||||
<TextBlock Margin="20,0,0,0" Text="(En Blanco Muestra Todos)" FontWeight="Bold" ></TextBlock>
|
||||
</StackPanel>
|
||||
</Border>
|
||||
</dxlc:LayoutItem>
|
||||
</dxlc:LayoutGroup>
|
||||
<tsWPF:tsGridControl x:Name="gc" TabIndex="1" >
|
||||
|
||||
<tsWPF:tsGridControl.PropiedadesTS>
|
||||
<tsWPF:PropiedadesTS Modificable="NoModificable" />
|
||||
</tsWPF:tsGridControl.PropiedadesTS>
|
||||
|
||||
<tsWPF:tsGridControl.PropiedadesTSGC>
|
||||
<tsWPF:PropiedadesTSGC />
|
||||
</tsWPF:tsGridControl.PropiedadesTSGC>
|
||||
<dxg:GridControl.Columns>
|
||||
<tsWPF:tsGridColumn FieldName="idFactura" Width="120" IsSmart="True" Header="Nº Registro" CellTemplate="{DynamicResource VerDetalleTemplate}" Fixed="Left" />
|
||||
<tsWPF:tsGridColumn FieldName="FechaRegistro" Header="Fecha Registro" IsSmart="True" Width="100" >
|
||||
<tsWPF:tsGridColumn.EditSettings>
|
||||
<dxe:DateEditSettings DisplayFormat="d"/>
|
||||
</tsWPF:tsGridColumn.EditSettings>
|
||||
</tsWPF:tsGridColumn>
|
||||
<tsWPF:tsGridColumn FieldName="NumeroFactura" Width="150" IsSmart="True" Header="Nº Factura Proveedor" />
|
||||
<tsWPF:tsGridColumn FieldName="FechaFactura" Header="Fecha Factura" IsSmart="True" Width="100" >
|
||||
<tsWPF:tsGridColumn.EditSettings>
|
||||
<dxe:DateEditSettings DisplayFormat="d"/>
|
||||
</tsWPF:tsGridColumn.EditSettings>
|
||||
</tsWPF:tsGridColumn>
|
||||
<tsWPF:tsGridColumn FieldName="idProveedorNavigation.RazonSocial" Header="Razón Social" Width="300" IsSmart="True" CellTemplate="{DynamicResource VerDetalleTemplate}" />
|
||||
<tsWPF:tsGridColumn FieldName="idProveedorNavigation.NIF" Header="N.I.F." Width="100" IsSmart="True" />
|
||||
<tsWPF:tsGridColumn FieldName="BaseImponible1" HorizontalHeaderContentAlignment="Right" Width="100" >
|
||||
<tsWPF:tsGridColumn.EditSettings>
|
||||
<dxe:TextEditSettings DisplayFormat="c2" HorizontalContentAlignment="Right" />
|
||||
</tsWPF:tsGridColumn.EditSettings>
|
||||
</tsWPF:tsGridColumn>
|
||||
<tsWPF:tsGridColumn FieldName="PorcentajeIVA1" Header="% IVA 1" HorizontalHeaderContentAlignment="Right" Width="100" >
|
||||
<tsWPF:tsGridColumn.EditSettings>
|
||||
<dxe:TextEditSettings DisplayFormat="n0" HorizontalContentAlignment="Right" />
|
||||
</tsWPF:tsGridColumn.EditSettings>
|
||||
</tsWPF:tsGridColumn>
|
||||
<tsWPF:tsGridColumn FieldName="CuotaIVA1" Header="IVA 1" HorizontalHeaderContentAlignment="Right" Width="100" >
|
||||
<tsWPF:tsGridColumn.EditSettings>
|
||||
<dxe:TextEditSettings DisplayFormat="c2" HorizontalContentAlignment="Right" />
|
||||
</tsWPF:tsGridColumn.EditSettings>
|
||||
</tsWPF:tsGridColumn>
|
||||
|
||||
<tsWPF:tsGridColumn FieldName="BaseImponible2" HorizontalHeaderContentAlignment="Right" Width="100" >
|
||||
<tsWPF:tsGridColumn.EditSettings>
|
||||
<dxe:TextEditSettings DisplayFormat="c2" HorizontalContentAlignment="Right" />
|
||||
</tsWPF:tsGridColumn.EditSettings>
|
||||
</tsWPF:tsGridColumn>
|
||||
<tsWPF:tsGridColumn FieldName="PorcentajeIVA2" Header="% IVA 2" HorizontalHeaderContentAlignment="Right" Width="100" >
|
||||
<tsWPF:tsGridColumn.EditSettings>
|
||||
<dxe:TextEditSettings DisplayFormat="n0" HorizontalContentAlignment="Right" />
|
||||
</tsWPF:tsGridColumn.EditSettings>
|
||||
</tsWPF:tsGridColumn>
|
||||
<tsWPF:tsGridColumn FieldName="CuotaIVA2" Header="IVA 2" HorizontalHeaderContentAlignment="Right" Width="100" >
|
||||
<tsWPF:tsGridColumn.EditSettings>
|
||||
<dxe:TextEditSettings DisplayFormat="c2" HorizontalContentAlignment="Right" />
|
||||
</tsWPF:tsGridColumn.EditSettings>
|
||||
</tsWPF:tsGridColumn>
|
||||
|
||||
<tsWPF:tsGridColumn FieldName="BaseImponible3" HorizontalHeaderContentAlignment="Right" Width="100" >
|
||||
<tsWPF:tsGridColumn.EditSettings>
|
||||
<dxe:TextEditSettings DisplayFormat="c2" HorizontalContentAlignment="Right" />
|
||||
</tsWPF:tsGridColumn.EditSettings>
|
||||
</tsWPF:tsGridColumn>
|
||||
<tsWPF:tsGridColumn FieldName="PorcentajeIVA3" Header="% IVA 3" HorizontalHeaderContentAlignment="Right" Width="100" >
|
||||
<tsWPF:tsGridColumn.EditSettings>
|
||||
<dxe:TextEditSettings DisplayFormat="n0" HorizontalContentAlignment="Right" />
|
||||
</tsWPF:tsGridColumn.EditSettings>
|
||||
</tsWPF:tsGridColumn>
|
||||
<tsWPF:tsGridColumn FieldName="CuotaIVA3" Header="IVA 3" HorizontalHeaderContentAlignment="Right" Width="100" >
|
||||
<tsWPF:tsGridColumn.EditSettings>
|
||||
<dxe:TextEditSettings DisplayFormat="c2" HorizontalContentAlignment="Right" />
|
||||
</tsWPF:tsGridColumn.EditSettings>
|
||||
</tsWPF:tsGridColumn>
|
||||
<tsWPF:tsGridColumn FieldName="PorcentajeIRPF" Header="% IRPF" HorizontalHeaderContentAlignment="Right" Width="100" >
|
||||
<tsWPF:tsGridColumn.EditSettings>
|
||||
<dxe:TextEditSettings DisplayFormat="n0" HorizontalContentAlignment="Right" />
|
||||
</tsWPF:tsGridColumn.EditSettings>
|
||||
</tsWPF:tsGridColumn>
|
||||
<tsWPF:tsGridColumn FieldName="IRPF" HorizontalHeaderContentAlignment="Right" Width="100" >
|
||||
<tsWPF:tsGridColumn.EditSettings>
|
||||
<dxe:TextEditSettings DisplayFormat="c2" HorizontalContentAlignment="Right" />
|
||||
</tsWPF:tsGridColumn.EditSettings>
|
||||
</tsWPF:tsGridColumn>
|
||||
|
||||
<tsWPF:tsGridColumn FieldName="TotalFactura" HorizontalHeaderContentAlignment="Right" Width="100" >
|
||||
<tsWPF:tsGridColumn.EditSettings>
|
||||
<dxe:TextEditSettings DisplayFormat="c2" HorizontalContentAlignment="Right" />
|
||||
</tsWPF:tsGridColumn.EditSettings>
|
||||
</tsWPF:tsGridColumn>
|
||||
<tsWPF:tsGridColumn FieldName="ImportePagado" HorizontalHeaderContentAlignment="Right" Width="100" >
|
||||
<tsWPF:tsGridColumn.EditSettings>
|
||||
<dxe:TextEditSettings DisplayFormat="c2" HorizontalContentAlignment="Right" />
|
||||
</tsWPF:tsGridColumn.EditSettings>
|
||||
</tsWPF:tsGridColumn>
|
||||
<tsWPF:tsGridColumn FieldName="FechaPago" IsSmart="True" Width="100" >
|
||||
<tsWPF:tsGridColumn.EditSettings>
|
||||
<dxe:DateEditSettings DisplayFormat="d"/>
|
||||
</tsWPF:tsGridColumn.EditSettings>
|
||||
</tsWPF:tsGridColumn>
|
||||
<tsWPF:tsGridColumn FieldName="ImportePendiente" HorizontalHeaderContentAlignment="Right" Width="120" >
|
||||
<tsWPF:tsGridColumn.EditSettings>
|
||||
<dxe:TextEditSettings DisplayFormat="c2" HorizontalContentAlignment="Right" />
|
||||
</tsWPF:tsGridColumn.EditSettings>
|
||||
</tsWPF:tsGridColumn>
|
||||
<tsWPF:tsGridColumn FieldName="idCategoriaNavigation.Descripcion" Width="150" IsSmart="True" Header="Categoría" />
|
||||
<tsWPF:tsGridColumn FieldName="FechaEnvioAsesoria" Header="Fecha Envío Asesoría" IsSmart="True" Width="150" AllowPrinting="False" >
|
||||
<dxg:GridColumn.EditSettings>
|
||||
<dxe:TextEditSettings MaskType="DateTime" MaskUseAsDisplayFormat="True" Mask="dd/MM/yyyy HH:mm" />
|
||||
</dxg:GridColumn.EditSettings>
|
||||
|
||||
</tsWPF:tsGridColumn>
|
||||
<tsWPF:tsGridColumn FieldName="Observaciones" Width="400" IsSmart="True" AllowPrinting="False" />
|
||||
<tsWPF:tsGridColumn FieldName="idUsuarioNavigation.Nombre" Header="Usuario" Width="150" IsSmart="True" AllowPrinting="False" />
|
||||
<tsWPF:tsGridColumn FieldName="NumeroDocumentos" Header="Nº Docs. Adjuntos" HorizontalHeaderContentAlignment="Right" AllowPrinting="False" Width="120" >
|
||||
<tsWPF:tsGridColumn.EditSettings>
|
||||
<dxe:TextEditSettings DisplayFormat="N0" HorizontalContentAlignment="Right" />
|
||||
</tsWPF:tsGridColumn.EditSettings>
|
||||
</tsWPF:tsGridColumn>
|
||||
</dxg:GridControl.Columns>
|
||||
<dxg:GridControl.View>
|
||||
<tsWPF:tsTableView x:Name="tv" ShowSearchPanelMode="Always" ShowGroupPanel="True" ShowTotalSummary="True" ShowGroupFooters="True" />
|
||||
</dxg:GridControl.View>
|
||||
<tsWPF:tsGridControl.TotalSummary>
|
||||
<dxg:GridSummaryItem FieldName="TotalFactura" SummaryType="Sum" ShowInColumn="TotalFactura" DisplayFormat=" {0:c2}"/>
|
||||
<dxg:GridSummaryItem FieldName="BaseImponible1" SummaryType="Sum" ShowInColumn="BaseImponible1" DisplayFormat=" {0:c2}"/>
|
||||
<dxg:GridSummaryItem FieldName="BaseImponible2" SummaryType="Sum" ShowInColumn="BaseImponible2" DisplayFormat=" {0:c2}"/>
|
||||
<dxg:GridSummaryItem FieldName="BaseImponible3" SummaryType="Sum" ShowInColumn="BaseImponible3" DisplayFormat=" {0:c2}"/>
|
||||
<dxg:GridSummaryItem FieldName="CuotaIVA1" SummaryType="Sum" ShowInColumn="CuotaIVA1" DisplayFormat=" {0:c2}"/>
|
||||
<dxg:GridSummaryItem FieldName="CuotaIVA2" SummaryType="Sum" ShowInColumn="CuotaIVA2" DisplayFormat=" {0:c2}"/>
|
||||
<dxg:GridSummaryItem FieldName="CuotaIVA3" SummaryType="Sum" ShowInColumn="CuotaIVA3" DisplayFormat=" {0:c2}"/>
|
||||
<dxg:GridSummaryItem FieldName="ImportePagado" SummaryType="Sum" ShowInColumn="ImportePagado" DisplayFormat=" {0:c2}"/>
|
||||
<dxg:GridSummaryItem FieldName="ImportePendiente" SummaryType="Sum" ShowInColumn="ImportePendiente" DisplayFormat=" {0:c2}"/>
|
||||
<dxg:GridSummaryItem SummaryType="Count" Alignment="Right" />
|
||||
</tsWPF:tsGridControl.TotalSummary>
|
||||
<dxg:GridControl.GroupSummary>
|
||||
<dxg:GridSummaryItem FieldName="TotalFactura" SummaryType="Sum" ShowInGroupColumnFooter="TotalFactura" DisplayFormat=" {0:c2}"/>
|
||||
<dxg:GridSummaryItem FieldName="BaseImponible1" SummaryType="Sum" ShowInGroupColumnFooter="BaseImponible1" DisplayFormat=" {0:c2}"/>
|
||||
<dxg:GridSummaryItem FieldName="BaseImponible2" SummaryType="Sum" ShowInGroupColumnFooter="BaseImponible2" DisplayFormat=" {0:c2}"/>
|
||||
<dxg:GridSummaryItem FieldName="BaseImponible3" SummaryType="Sum" ShowInGroupColumnFooter="BaseImponible3" DisplayFormat=" {0:c2}"/>
|
||||
<dxg:GridSummaryItem FieldName="CuotaIVA1" SummaryType="Sum" ShowInGroupColumnFooter="CuotaIVA1" DisplayFormat=" {0:c2}"/>
|
||||
<dxg:GridSummaryItem FieldName="CuotaIVA2" SummaryType="Sum" ShowInGroupColumnFooter="CuotaIVA2" DisplayFormat=" {0:c2}"/>
|
||||
<dxg:GridSummaryItem FieldName="CuotaIVA3" SummaryType="Sum" ShowInGroupColumnFooter="CuotaIVA3" DisplayFormat=" {0:c2}"/>
|
||||
<dxg:GridSummaryItem FieldName="ImportePagado" SummaryType="Sum" ShowInGroupColumnFooter="ImportePagado" DisplayFormat=" {0:c2}"/>
|
||||
<dxg:GridSummaryItem FieldName="ImportePendiente" SummaryType="Sum" ShowInGroupColumnFooter="ImportePendiente" DisplayFormat=" {0:c2}"/>
|
||||
<dxg:GridSummaryItem SummaryType="Count" Alignment="Right" />
|
||||
</dxg:GridControl.GroupSummary>
|
||||
</tsWPF:tsGridControl>
|
||||
</dxlc:LayoutControl>
|
||||
</Grid>
|
||||
</tsWPF:tsUserControl>
|
||||
286
GestionGrupoSanchoToro/Compras/ucFacturasRecibidas.xaml.vb
Normal file
286
GestionGrupoSanchoToro/Compras/ucFacturasRecibidas.xaml.vb
Normal file
@@ -0,0 +1,286 @@
|
||||
|
||||
Imports bdGrupoSanchoToro.db
|
||||
Imports System.Data.Entity
|
||||
Imports DevExpress.Xpf.Core
|
||||
Imports tsWPFCore
|
||||
Imports System.Collections
|
||||
Imports DevExpress.Xpf.Bars
|
||||
Imports System.Threading.Tasks
|
||||
Imports System.Linq.Dynamic
|
||||
Imports bdGrupoSanchoToro.db.Utilidades
|
||||
Imports bdGrupoSanchoToro.db.tscGrupoSanchoToro
|
||||
Imports Microsoft.Win32
|
||||
Imports System.IO
|
||||
Imports tsEFCore8.Extensiones
|
||||
Imports DevExpress.Mvvm.Native
|
||||
|
||||
Public Class ucFacturasRecibidas
|
||||
|
||||
|
||||
Private bd As tscGrupoSanchoToro
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Public Sub New()
|
||||
|
||||
' Esta llamada es exigida por el diseñador.
|
||||
InitializeComponent()
|
||||
' Agregue cualquier inicialización después de la llamada a InitializeComponent().
|
||||
|
||||
End Sub
|
||||
|
||||
|
||||
Public Overrides Sub Cargado()
|
||||
ContenedorAplicacion.btGuardar.IsVisible = False
|
||||
ContenedorAplicacion.siEstado.IsVisible = False
|
||||
Dim Hoy = Date.Today
|
||||
teFechaFin.EditValue = Hoy
|
||||
teFechaInicio.EditValue = New Date(Hoy.Year, 1, 1)
|
||||
GridSeleccion = gc
|
||||
Me.HabilitarRefresco = True
|
||||
End Sub
|
||||
|
||||
|
||||
|
||||
Public Overrides Function EstablecedcPrincipal(Optional Background As Boolean = False, Optional FuerzaNuevo As Boolean = False, Optional Refrescar As Boolean = False) As tsUtilidades.EstadosAplicacion
|
||||
If Background OrElse Refrescar Then ObtienefacturasAsync(bd, Background)
|
||||
Return tsUtilidades.EstadosAplicacion.AplicacionSinIndice
|
||||
End Function
|
||||
|
||||
Public Overrides Sub EstableceDataContextSecundarios(Optional Background As Boolean = False)
|
||||
Dim Acciones As New List(Of tsWPFCore.Accion)
|
||||
Acciones.Add(New Accion With {
|
||||
.idAccion = 1,
|
||||
.Descripcion = "GENERA EXCEL DE FACTURAS SELECCIONADAS"})
|
||||
Acciones.Add(New Accion With {
|
||||
.idAccion = 2,
|
||||
.Descripcion = "ENVIA EXCEL Y FRAS. IMPRESAS SELECCIONADAS A ASESORIA"})
|
||||
Me.ContenedorAplicacion.cbAcciones.ItemsSource = Acciones
|
||||
Me.ContenedorAplicacion.beAcciones.EditValue = Acciones.First.idAccion
|
||||
End Sub
|
||||
|
||||
Public Overrides Sub EstableceTitulo()
|
||||
Me.docpanel.Caption = "Facturas de Proveedores/Gastos"
|
||||
End Sub
|
||||
|
||||
Public Overrides ReadOnly Property idRegistroAplicacionActual As String
|
||||
Get
|
||||
Return "FacturasRecibidas"
|
||||
End Get
|
||||
End Property
|
||||
|
||||
Public Overrides ReadOnly Property NombreTablaBase As String
|
||||
Get
|
||||
Return "facturasrecibidas"
|
||||
End Get
|
||||
End Property
|
||||
|
||||
Public Overrides ReadOnly Property DescripcionRegistro As String
|
||||
Get
|
||||
Return "Facturas de Proveedores"
|
||||
End Get
|
||||
End Property
|
||||
|
||||
Public Overrides Function ObtieneBD() As tsUtilidades.ItsContexto
|
||||
bd = tscGrupoSanchoToro.NuevoContexto()
|
||||
Return bd
|
||||
End Function
|
||||
|
||||
|
||||
|
||||
Public Overrides Function ObtienePermisos() As tsUtilidades.Permisos
|
||||
Dim per = Comun.ObtienePermisos(Me.bd, "AP.ADMINISTRATIVOS", idUsuario)
|
||||
per.Eliminar = False
|
||||
Return per
|
||||
|
||||
End Function
|
||||
|
||||
Private Sub Nuevo() Handles Me.BotonNuevoPulsado
|
||||
FuncionesDinamicas.AbrirAP(New ucFacturaRecibida, OtrosParametros)
|
||||
End Sub
|
||||
|
||||
Private Sub ap_Enlazar(Celda As DevExpress.Xpf.Grid.EditGridCellData, Defecto As Boolean) Handles Me.Enlazar
|
||||
Dim ra = DirectCast(Me.gc.CurrentItem, facturasrecibidas)
|
||||
Select Case Celda.Column.FieldName.ToLower
|
||||
Case "idfactura"
|
||||
Dim id As Integer = ra.idFactura
|
||||
FuncionesDinamicas.AbrirAP(New ucFacturaRecibida(id), OtrosParametros)
|
||||
Case "idproveedornavigation.razonsocial"
|
||||
Dim id As Integer = ra.idProveedor
|
||||
FuncionesDinamicas.AbrirAP(New ucEntidad(id), OtrosParametros)
|
||||
End Select
|
||||
End Sub
|
||||
|
||||
Private Sub ap_AntesGuardar(sender As Object, e As ItemClickEventArgs, ByRef Cancelar As Boolean, ByRef MensajesError As Hashtable, OpcionGuardado As Integer) Handles Me.AntesGuardar
|
||||
|
||||
End Sub
|
||||
Public Function ObtieneFacturasRecibidas(ByRef DataContext As Object, TextoBusqueda As String, FechaInicio As DateOnly?, FechaFin As DateOnly?, SoloPendientes As Boolean) As List(Of facturasrecibidas)
|
||||
Dim rs As IQueryable(Of facturasrecibidas)
|
||||
Dim lf As New List(Of facturasrecibidas)
|
||||
Dim iNumExc As Integer = 0
|
||||
Do
|
||||
Try
|
||||
rs = bd.facturasrecibidas.Where(Function(x) x.idProveedorNavigation.idEmpresa = EmpresaActual.idEmpresa) _
|
||||
.Include(Function(x) x.idProveedorNavigation) _
|
||||
.Include(Function(x) x.idUsuarioNavigation) _
|
||||
.Include(Function(x) x.documentosfacturasrecibidas) _
|
||||
.AsQueryable
|
||||
If FechaInicio.HasValue Then
|
||||
rs = rs.Where(Function(x) x.FechaFactura >= FechaInicio.Value)
|
||||
End If
|
||||
If FechaFin.HasValue Then
|
||||
rs = rs.Where(Function(x) x.FechaFactura <= FechaFin.Value)
|
||||
End If
|
||||
If SoloPendientes Then
|
||||
rs = rs.Where(Function(x) x.fechaEnvioAsesoria.HasValue = False)
|
||||
End If
|
||||
If TextoBusqueda <> "" Then
|
||||
Dim CamposBusquedaNumericos() As String = {"idFactura"}
|
||||
Dim CamposBusquedaAlfabeticos() As String = {"idProveedorNavigation.RazonSocial", "idProveedorNavigation.NIF", "NumeroFactura"}
|
||||
Dim parametros(0) As Object
|
||||
Dim ExpresionBusqueda = tsWPFCore.Utilidades.Varias.GeneraExpresionBusqueda(TextoBusqueda, CamposBusquedaNumericos, CamposBusquedaAlfabeticos, Nothing)
|
||||
rs = rs.Where(ExpresionBusqueda)
|
||||
End If
|
||||
lf = rs.OrderByDescending(Function(x) x.FechaFactura).ToList
|
||||
Exit Do
|
||||
Catch ex As Exception
|
||||
iNumExc += 1
|
||||
If iNumExc > 3 Then
|
||||
rs = Nothing
|
||||
Exit Do
|
||||
End If
|
||||
End Try
|
||||
Loop
|
||||
Return lf
|
||||
End Function
|
||||
|
||||
Public Async Sub ObtienefacturasAsync(bd As tscGrupoSanchoToro, Background As Boolean)
|
||||
Try
|
||||
Dim rs As New List(Of facturasrecibidas)
|
||||
Dim Busqueda = If(Me.teBusqueda.EditValue Is Nothing, "", Me.teBusqueda.EditValue)
|
||||
Dim fi As DateOnly? : If teFechaInicio.EditValue IsNot Nothing Then fi = DateOnly.FromDateTime(teFechaInicio.EditValue)
|
||||
Dim ff As DateOnly? : If teFechaFin.EditValue IsNot Nothing Then ff = DateOnly.FromDateTime(teFechaFin.EditValue)
|
||||
Dim bPendientes As Boolean = cbSoloPendientes.IsChecked
|
||||
If Background Then
|
||||
Me.ContenedorAplicacion.IsEnabled = False
|
||||
Await Task.Run(Sub()
|
||||
rs = ObtieneFacturasRecibidas(bd, Busqueda, fi, ff, bPendientes)
|
||||
End Sub)
|
||||
Else
|
||||
If DXSplashScreen.IsActive = False Then DXSplashScreen.Show(Of tsWPFCore.SplashScreenTecnosis)()
|
||||
DXSplashScreen.SetState("Buscando Facturas Recibidas ...")
|
||||
rs = ObtieneFacturasRecibidas(bd, Busqueda, fi, ff, bPendientes)
|
||||
End If
|
||||
|
||||
gc.ItemsSource = rs
|
||||
DataContext = rs
|
||||
Catch ex As Exception
|
||||
If DXSplashScreen.IsActive Then DXSplashScreen.Close()
|
||||
DXMessageBox.Show(ex.Message, "Error")
|
||||
Finally
|
||||
Me.ContenedorAplicacion.IsEnabled = True
|
||||
If DXSplashScreen.IsActive Then DXSplashScreen.Close()
|
||||
End Try
|
||||
End Sub
|
||||
Private Sub BtBuscar_Click(sender As Object, e As RoutedEventArgs)
|
||||
ObtienefacturasAsync(bd, False)
|
||||
End Sub
|
||||
|
||||
Private Sub ucFacturasRecibidas_EjecutarAccion(sender As Object, e As ItemClickEventArgs, idAccion As Integer) Handles Me.EjecutarAccion
|
||||
Try
|
||||
' Dim ra As entidades = Me.DataContext
|
||||
Dim tf As List(Of facturasrecibidas) = gc.ItemsSource
|
||||
Dim fras = gc.ElementosSeleccionados.Cast(Of facturasrecibidas).ToList
|
||||
If fras.Count = 0 Then
|
||||
DXMessageBox.Show("Antes debe seleccionar alguna factura recibida", "Atención")
|
||||
Else
|
||||
|
||||
Select Case idAccion
|
||||
Case 1
|
||||
Try
|
||||
Dim sfd As New SaveFileDialog
|
||||
sfd.FileName = IO.Path.GetDirectoryName("Exportacion") & ("FacturasRecibidas.xlsx").Trim
|
||||
sfd.Filter = "Fichero Excel (*.xls, *.xlsx, *.csv)|*.xls;*.xlsx;*.csv"
|
||||
sfd.DefaultExt = ".xlsx"
|
||||
If sfd.ShowDialog Then
|
||||
gc.ItemsSource = fras
|
||||
Select Case IO.Path.GetExtension(sfd.FileName).ToLower
|
||||
Case ".xls"
|
||||
tv.ExportToXls(sfd.FileName)
|
||||
Case ".xlsx"
|
||||
tv.ExportToXlsx(sfd.FileName)
|
||||
Case ".csv"
|
||||
tv.ExportToCsv(sfd.FileName)
|
||||
End Select
|
||||
tsUtilidades.Sistema.EjecutaFichero(sfd.FileName)
|
||||
End If
|
||||
Catch ex As Exception
|
||||
Throw New Exception(ex.Message, ex)
|
||||
Finally
|
||||
gc.ItemsSource = tf
|
||||
End Try
|
||||
Case 2
|
||||
Try
|
||||
Dim sCorreo = bd.enumeraciones.First(Function(x) x.Codigo = "CONF.EMAILASESORIA").ValorAlfabeticoLargo
|
||||
Dim dxnc = New dxwEnvioCorreo(sCorreo, "", "", EmpresaActual.RazonSocial & " - Adjunto le remitimos listado de facturas recibidas solicitadas", "Distinguidos Sres., " & vbCrLf & "Adjunto le remitimos listado de facturas solicitadas", "FacturasRecibidas.zip")
|
||||
If dxnc.ShowDialog Then
|
||||
Dim cta = bd.cuentascorreo.First(Function(x) x.Codigo = "DEFECTO" AndAlso x.idEmpresa = EmpresaActual.idEmpresa)
|
||||
gc.ItemsSource = fras
|
||||
Dim ms As New MemoryStream
|
||||
tv.ExportToXlsx(ms)
|
||||
|
||||
Dim bFacturas = ms.ToArray
|
||||
DXSplashScreen.Show(Of tsWPFCore.SplashScreenTecnosis)()
|
||||
Dim dArchivos As New Dictionary(Of String, Byte())
|
||||
dArchivos.Add("FacturasRecibidas_" & Today.ToString("yyyy-MM-dd") & ".xlsx", bFacturas)
|
||||
For Each fr In fras
|
||||
DXSplashScreen.SetState("Generando archivos de la factura " & fr.NumeroFactura & ", por favor espere ...")
|
||||
Dim doc = fr.documentosfacturasrecibidas.FirstOrDefault(Function(x) x.Tipo = documentosfacturasrecibidas.TipoDocumentoFacturaEnum.FACTURA_IMPRESA)
|
||||
If doc IsNot Nothing Then
|
||||
dArchivos.Add(fr.NumeroFactura.Replace("/", "-").Replace("\", "-") & ".pdf", doc.idFicheroNavigation.Fichero)
|
||||
Else
|
||||
Throw New Exception("No se ha adjuntado la factura impresa de la factura " & fr.NumeroFactura)
|
||||
End If
|
||||
Next
|
||||
DXSplashScreen.SetState("Comprimiendo Archivos, por favor espere ...")
|
||||
Dim bzip = tsUtilidades.zip.ComprimirArchivos(dArchivos)
|
||||
bdGrupoSanchoToro.db.correos.GeneraRegistroCorreon(bd, dxnc._Asunto, dxnc._Cuerpo, cta, dxnc._Destinatarios, dxnc._CC, dxnc._BCC, bzip, dxnc._Adjunto,, "FACTURASRECIBIDAS")
|
||||
For Each f In fras
|
||||
f.FechaEnvioAsesoria = Now
|
||||
Next
|
||||
bd.GuardarCambios()
|
||||
End If
|
||||
Catch ex As Exception
|
||||
If ex.Message.StartsWith("No se ha adjuntado la factura impresa de la factura") = False Then Throw New Exception(ex.Message, ex)
|
||||
If DXSplashScreen.IsActive Then DXSplashScreen.Close()
|
||||
DXMessageBox.Show(ex.Message, "Atención")
|
||||
Finally
|
||||
gc.ItemsSource = tf
|
||||
End Try
|
||||
End Select
|
||||
End If
|
||||
Catch ex As Exception
|
||||
FuncionesDinamicas.ErrorNoControladoAp(Me, ex)
|
||||
'Comun.GeneraRegistroCorreoExcepcion(bd, ex, "ucEntidad_EjecutarAccion")
|
||||
If DXSplashScreen.IsActive Then DXSplashScreen.Close()
|
||||
DXMessageBox.Show("Error " & ex.Message, "Error")
|
||||
Finally
|
||||
If DXSplashScreen.IsActive Then DXSplashScreen.Close()
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
'Private Sub ap_ImprimirPlantilla(sender As Object, e As ItemClickEventArgs, idPlantilla As Integer) Handles me.ImprimirPlantilla
|
||||
' Dim ds As List(Of facturas)
|
||||
' Dim pl As plantillas = (From p In bd.plantillas Where p.idPlantilla = idPlantilla).First
|
||||
' Dim sTipo As String = pl.enumeraciones.Codigo
|
||||
' Dim al As facturas = Me.DataContext
|
||||
' ds = New List(Of facturas)
|
||||
' ds.Add(al)
|
||||
' Select Case sTipo
|
||||
' Case "GRUPLA.AV-ALBARANES"
|
||||
' Informes.ImprimirPlantilla(bd, idPlantilla, ds, False)
|
||||
' End Select
|
||||
'End Sub
|
||||
End Class
|
||||
144
GestionGrupoSanchoToro/Compras/ucPagoMultipleFacturas.xaml
Normal file
144
GestionGrupoSanchoToro/Compras/ucPagoMultipleFacturas.xaml
Normal file
@@ -0,0 +1,144 @@
|
||||
<tsWPF: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"
|
||||
xmlns:dxlc="http://schemas.devexpress.com/winfx/2008/xaml/layoutcontrol"
|
||||
xmlns:dxe="http://schemas.devexpress.com/winfx/2008/xaml/editors"
|
||||
xmlns:dxg="http://schemas.devexpress.com/winfx/2008/xaml/grid" xmlns:tsWPF="clr-namespace:tsWPFCore;assembly=tsWPFCore" x:Class="ucPagoMultipleFacturas"
|
||||
mc:Ignorable="d"
|
||||
d:DesignHeight="768" d:DesignWidth="1366">
|
||||
<tsWPF:tsUserControl.Resources>
|
||||
<ResourceDictionary>
|
||||
<ResourceDictionary.MergedDictionaries>
|
||||
<ResourceDictionary Source="pack://application:,,,/tsWPFCore;component/Plantillas.xaml" />
|
||||
</ResourceDictionary.MergedDictionaries>
|
||||
</ResourceDictionary>
|
||||
</tsWPF:tsUserControl.Resources>
|
||||
<Grid>
|
||||
<dxlc:LayoutControl Orientation="Vertical">
|
||||
<dxlc:LayoutGroup View="GroupBox" Header="Seleccione Cliente para el Pago Múltiple" x:Name="lgFiltrosBusquedaRapida" Width="Auto" HorizontalAlignment="Stretch" >
|
||||
<tsWPF:tsLayoutItem Label="Razón Social:" Width="500" >
|
||||
<tsWPF:tsLayoutItem.PropiedadesTS>
|
||||
<tsWPF:PropiedadesTS />
|
||||
</tsWPF:tsLayoutItem.PropiedadesTS>
|
||||
<dxe:ComboBoxEdit x:Name="cbRazonSocial" AutoComplete="True" ValidateOnTextInput="False" IsTextEditable="True" DisplayMember="RazonSocial" ValueMember="idEntidad" AllowDefaultButton="False" TabIndex="0">
|
||||
<dxe:ComboBoxEdit.Buttons>
|
||||
<dxe:ButtonInfo x:Name="biBuscarCliente" GlyphKind="Search" IsDefaultButton="False" Click="BiBuscarCliente_Click" />
|
||||
</dxe:ComboBoxEdit.Buttons>
|
||||
</dxe:ComboBoxEdit>
|
||||
</tsWPF:tsLayoutItem>
|
||||
<Button Content="Mostrar Facturas Pendientes de Pago" Height="25" Width="250" x:Name="btMostrar" Click="btMostrar_Click" IsDefault="True" TabIndex="1" Margin="20,0,0,0" />
|
||||
</dxlc:LayoutGroup>
|
||||
<dxlc:LayoutGroup>
|
||||
<tsWPF:tsGridControl x:Name="gcFacturas" TabIndex="2" >
|
||||
<tsWPF:tsGridControl.PropiedadesTSGC>
|
||||
<tsWPF:PropiedadesTSGC />
|
||||
</tsWPF:tsGridControl.PropiedadesTSGC>
|
||||
<dxg:GridControl.Columns>
|
||||
<tsWPF:tsGridColumn Header="Seleccionar" FieldName="Marca_TMP" Width="80" IsSmart="True" SoloLectura="False" >
|
||||
<tsWPF:tsGridColumn.EditSettings>
|
||||
<dxe:CheckEditSettings IsThreeState="False" />
|
||||
</tsWPF:tsGridColumn.EditSettings>
|
||||
</tsWPF:tsGridColumn>
|
||||
<tsWPF:tsGridColumn FieldName="NumeroFactura" Width="120" IsSmart="True" Header="Nº Factura" CellTemplate="{DynamicResource VerDetalleTemplate}" SoloLectura="True" />
|
||||
<tsWPF:tsGridColumn FieldName="idClienteNavigation.RazonSocial" Header="Razón Social" Width="300" IsSmart="True" CellTemplate="{DynamicResource VerDetalleTemplate}" SoloLectura="True" />
|
||||
<tsWPF:tsGridColumn FieldName="idClienteNavigation.NIF" Header="N.I.F." Width="100" IsSmart="True" SoloLectura="True" />
|
||||
<tsWPF:tsGridColumn FieldName="FechaFactura" Header="Fecha Factura" IsSmart="True" Width="100" SoloLectura="True" >
|
||||
<tsWPF:tsGridColumn.EditSettings>
|
||||
<dxe:DateEditSettings DisplayFormat="d"/>
|
||||
</tsWPF:tsGridColumn.EditSettings>
|
||||
</tsWPF:tsGridColumn>
|
||||
<tsWPF:tsGridColumn FieldName="TotalBaseImponible" HorizontalHeaderContentAlignment="Right" Width="100" SoloLectura="True" >
|
||||
<tsWPF:tsGridColumn.EditSettings>
|
||||
<dxe:TextEditSettings DisplayFormat="c2" HorizontalContentAlignment="Right" />
|
||||
</tsWPF:tsGridColumn.EditSettings>
|
||||
</tsWPF:tsGridColumn>
|
||||
<tsWPF:tsGridColumn FieldName="TotalIVA" HorizontalHeaderContentAlignment="Right" Width="100" SoloLectura="True" >
|
||||
<tsWPF:tsGridColumn.EditSettings>
|
||||
<dxe:TextEditSettings DisplayFormat="c2" HorizontalContentAlignment="Right" />
|
||||
</tsWPF:tsGridColumn.EditSettings>
|
||||
</tsWPF:tsGridColumn>
|
||||
<tsWPF:tsGridColumn FieldName="TotalFactura" HorizontalHeaderContentAlignment="Right" Width="100" SoloLectura="True" >
|
||||
<tsWPF:tsGridColumn.EditSettings>
|
||||
<dxe:TextEditSettings DisplayFormat="c2" HorizontalContentAlignment="Right" />
|
||||
</tsWPF:tsGridColumn.EditSettings>
|
||||
</tsWPF:tsGridColumn>
|
||||
<tsWPF:tsGridColumn FieldName="ImportePagado" HorizontalHeaderContentAlignment="Right" Width="100" SoloLectura="True" >
|
||||
<tsWPF:tsGridColumn.EditSettings>
|
||||
<dxe:TextEditSettings DisplayFormat="c2" HorizontalContentAlignment="Right" />
|
||||
</tsWPF:tsGridColumn.EditSettings>
|
||||
</tsWPF:tsGridColumn>
|
||||
|
||||
<tsWPF:tsGridColumn FieldName="ImportePendiente" HorizontalHeaderContentAlignment="Right" Width="120" SoloLectura="True" >
|
||||
<tsWPF:tsGridColumn.EditSettings>
|
||||
<dxe:TextEditSettings DisplayFormat="c2" HorizontalContentAlignment="Right" />
|
||||
</tsWPF:tsGridColumn.EditSettings>
|
||||
</tsWPF:tsGridColumn>
|
||||
|
||||
|
||||
<tsWPF:tsGridColumn FieldName="Observaciones" Width="400" IsSmart="True" SoloLectura="True"/>
|
||||
<tsWPF:tsGridColumn FieldName="usuarios.Usuario" Header="Usuario" Width="150" IsSmart="True" SoloLectura="True"/>
|
||||
</dxg:GridControl.Columns>
|
||||
<dxg:GridControl.View>
|
||||
<dxg:TableView x:Name="tv" ShowSearchPanelMode="Always" ShowGroupPanel="True" ShowTotalSummary="True" ShowGroupFooters="True" />
|
||||
</dxg:GridControl.View>
|
||||
<tsWPF:tsGridControl.TotalSummary>
|
||||
<dxg:GridSummaryItem FieldName="BaseImponible" SummaryType="Sum" ShowInColumn="TotalBaseImponible" DisplayFormat=" {0:c2}"/>
|
||||
<!--<dxg:GridSummaryItem FieldName="Descuento" SummaryType="Sum" ShowInColumn="Descuento" DisplayFormat=" {0:c2}"/>-->
|
||||
<dxg:GridSummaryItem FieldName="IVA" SummaryType="Sum" ShowInColumn="IVA" DisplayFormat=" {0:c2}"/>
|
||||
<dxg:GridSummaryItem FieldName="TotalFactura" SummaryType="Sum" ShowInColumn="TotalFactura" DisplayFormat=" {0:c2}"/>
|
||||
<dxg:GridSummaryItem FieldName="ImportePagado" SummaryType="Sum" ShowInColumn="ImportePagado" DisplayFormat=" {0:c2}"/>
|
||||
<dxg:GridSummaryItem FieldName="ImportePendiente" SummaryType="Sum" ShowInColumn="ImportePendiente" DisplayFormat=" {0:c2}"/>
|
||||
<dxg:GridSummaryItem SummaryType="Count" ShowInColumn="entidades.RazonSocial" DisplayFormat="Nº Facturas: {0:n0}" />
|
||||
</tsWPF:tsGridControl.TotalSummary>
|
||||
<dxg:GridControl.GroupSummary>
|
||||
<dxg:GridSummaryItem FieldName="ImporteBruto" SummaryType="Sum" ShowInGroupColumnFooter="ImporteBruto" DisplayFormat=" {0:c2}"/>
|
||||
<!--<dxg:GridSummaryItem FieldName="Descuento" SummaryType="Sum" ShowInGroupColumnFooter="Descuento" DisplayFormat=" {0:c2}"/>-->
|
||||
<dxg:GridSummaryItem FieldName="IVA" SummaryType="Sum" ShowInGroupColumnFooter="IVA" DisplayFormat=" {0:c2}"/>
|
||||
<dxg:GridSummaryItem FieldName="TotalFactura" SummaryType="Sum" ShowInGroupColumnFooter="TotalFactura" DisplayFormat=" {0:c2}"/>
|
||||
<dxg:GridSummaryItem FieldName="ImportePagado" SummaryType="Sum" ShowInGroupColumnFooter="ImportePagado" DisplayFormat=" {0:c2}"/>
|
||||
<dxg:GridSummaryItem FieldName="ImportePendiente" SummaryType="Sum" ShowInGroupColumnFooter="ImportePendiente" DisplayFormat=" {0:c2}"/>
|
||||
<dxg:GridSummaryItem SummaryType="Count" ShowInGroupColumnFooter="entidades.RazonSocial" DisplayFormat=" {0:n0}" />
|
||||
</dxg:GridControl.GroupSummary>
|
||||
</tsWPF:tsGridControl>
|
||||
</dxlc:LayoutGroup>
|
||||
|
||||
<dxlc:LayoutGroup View="GroupBox" Header="Seleccione Datos del Pago" Width="Auto" HorizontalAlignment="Stretch" >
|
||||
|
||||
<dxlc:LayoutGroup Orientation="Vertical" Width="850">
|
||||
<dxlc:LayoutGroup >
|
||||
<tsWPF:tsLayoutItem Label="Total Facturas A Pagar:" Width="300" HorizontalAlignment="Left">
|
||||
<tsWPF:tsLayoutItem.PropiedadesTS>
|
||||
<tsWPF:PropiedadesTS Modificable="NoModificable" />
|
||||
</tsWPF:tsLayoutItem.PropiedadesTS>
|
||||
<dxe:TextEdit x:Name="teTotalAPagar" IsReadOnly="True" Mask="C2" MaskType="Numeric" MaskUseAsDisplayFormat="True" TabIndex="3" />
|
||||
</tsWPF:tsLayoutItem>
|
||||
<tsWPF:tsLayoutItem Label="Caja:" Width="300">
|
||||
<tsWPF:tsLayoutItem.PropiedadesTS>
|
||||
<tsWPF:PropiedadesTS />
|
||||
</tsWPF:tsLayoutItem.PropiedadesTS>
|
||||
<dxe:ComboBoxEdit x:Name="cbCaja" AutoComplete="True" DisplayMember="Descripcion" ValueMember="idCaja" TabIndex="4" AllowNullInput="True" />
|
||||
</tsWPF:tsLayoutItem>
|
||||
<tsWPF:tsLayoutItem Label="Fecha Pago:">
|
||||
<tsWPF:tsLayoutItem.PropiedadesTS>
|
||||
<tsWPF:PropiedadesTS UsualCorreccion="True" />
|
||||
</tsWPF:tsLayoutItem.PropiedadesTS>
|
||||
<dxe:DateEdit x:Name="deFechaPago" AllowNullInput="False" TabIndex="5" />
|
||||
</tsWPF:tsLayoutItem>
|
||||
</dxlc:LayoutGroup>
|
||||
|
||||
<tsWPF:tsLayoutItem Label="Observaciones:" >
|
||||
<tsWPF:tsLayoutItem.PropiedadesTS>
|
||||
<tsWPF:PropiedadesTS UsualCorreccion="True" />
|
||||
</tsWPF:tsLayoutItem.PropiedadesTS>
|
||||
<dxe:TextEdit x:Name="teObservaciones" TabIndex="6" MaxLength="200" />
|
||||
</tsWPF:tsLayoutItem>
|
||||
</dxlc:LayoutGroup>
|
||||
|
||||
<Button Content="Cobrar Facturas Seleccionadas" Height="25" Width="250" x:Name="btPagar" Click="btPagar_Click" IsDefault="True" TabIndex="6" Margin="20,0,0,0" />
|
||||
</dxlc:LayoutGroup>
|
||||
<dxlc:LayoutGroup Orientation="Vertical"/>
|
||||
</dxlc:LayoutControl>
|
||||
</Grid>
|
||||
</tsWPF:tsUserControl>
|
||||
202
GestionGrupoSanchoToro/Compras/ucPagoMultipleFacturas.xaml.vb
Normal file
202
GestionGrupoSanchoToro/Compras/ucPagoMultipleFacturas.xaml.vb
Normal file
@@ -0,0 +1,202 @@
|
||||
|
||||
|
||||
|
||||
|
||||
Imports bdGrupoSanchoToro.tscGrupoSanchoToro
|
||||
Imports DevExpress.Xpf.Core
|
||||
Imports tsWPFCore
|
||||
Imports Microsoft.Win32
|
||||
Imports DevExpress.Xpf.Grid
|
||||
Imports bdGrupoSanchoToro.db.Utilidades
|
||||
Imports bdGrupoSanchoToro.db
|
||||
|
||||
|
||||
Public Class ucPagoMultipleFacturas
|
||||
|
||||
|
||||
Private bd As bdGrupoSanchoToro.tscGrupoSanchoToro
|
||||
|
||||
|
||||
Public Sub New()
|
||||
|
||||
' Esta llamada es exigida por el diseñador.
|
||||
InitializeComponent()
|
||||
' Agregue cualquier inicialización después de la llamada a InitializeComponent().
|
||||
|
||||
End Sub
|
||||
|
||||
|
||||
|
||||
Public Overrides Sub Cargado()
|
||||
ContenedorAplicacion.btGuardar.IsVisible = True
|
||||
ContenedorAplicacion.btNuevo.IsVisible = False
|
||||
ContenedorAplicacion.siEstado.IsVisible = False
|
||||
Me.HabilitarRefresco = False
|
||||
End Sub
|
||||
|
||||
|
||||
|
||||
Public Overrides Function EstablecedcPrincipal(Optional Background As Boolean = False, Optional FuerzaNuevo As Boolean = False, Optional Refrescar As Boolean = False) As tsUtilidades.EstadosAplicacion
|
||||
cbRazonSocial.ItemsSource = bd.entidades.Where(Function(x) x.EsCliente AndAlso x.idEmpresa = EmpresaActual.idEmpresa).ToList
|
||||
cbCaja.ItemsSource = bd.cajas.OrderBy(Function(x) x.Descripcion AndAlso x.idEmpresa = EmpresaActual.idEmpresa).ToList
|
||||
deFechaPago.EditValue = Now.Date
|
||||
Return tsUtilidades.EstadosAplicacion.AplicacionSinIndice
|
||||
End Function
|
||||
|
||||
Public Overrides Sub EstableceDataContextSecundarios(Optional Background As Boolean = False)
|
||||
|
||||
End Sub
|
||||
|
||||
Public Overrides Sub EstableceTitulo()
|
||||
Me.docpanel.Caption = "Cobro Múltiple de Fras. Clientes"
|
||||
End Sub
|
||||
|
||||
Public Overrides ReadOnly Property idRegistroAplicacionActual As String
|
||||
Get
|
||||
Return "PagoMultiple"
|
||||
End Get
|
||||
End Property
|
||||
|
||||
Public Overrides ReadOnly Property NombreTablaBase As String
|
||||
Get
|
||||
Return "facturas"
|
||||
End Get
|
||||
End Property
|
||||
|
||||
Public Overrides ReadOnly Property DescripcionRegistro As String
|
||||
Get
|
||||
Return "Cobro Multiple de Facturas A Clientes"
|
||||
End Get
|
||||
End Property
|
||||
|
||||
Public Overrides Function ObtieneBD() As tsUtilidades.ItsContexto
|
||||
bd = tscGrupoSanchoToro.NuevoContexto
|
||||
Return bd
|
||||
End Function
|
||||
|
||||
|
||||
|
||||
Public Overrides Function ObtienePermisos() As tsUtilidades.Permisos
|
||||
Dim per = Comun.ObtienePermisos(Me.bd, "AP.ADMINISTRATIVOS", idUsuario)
|
||||
per.Eliminar = False
|
||||
per.Nuevos = False
|
||||
per.Modificar = False
|
||||
Return per
|
||||
|
||||
End Function
|
||||
|
||||
|
||||
Private Sub ap_Enlazar(Celda As DevExpress.Xpf.Grid.EditGridCellData, Defecto As Boolean) Handles Me.Enlazar
|
||||
Dim ra = DirectCast(Me.gcFacturas.CurrentItem, facturas)
|
||||
Select Case Celda.Column.FieldName.ToLower
|
||||
Case "numerofactura"
|
||||
Dim id As Integer = ra.idFactura
|
||||
FuncionesDinamicas.AbrirAP(New ucFacturaEmitida(id), OtrosParametros)
|
||||
Case "idclientenavigation.razonsocial"
|
||||
Dim id As Integer = ra.idCliente
|
||||
FuncionesDinamicas.AbrirAP(New ucEntidad(id), OtrosParametros)
|
||||
End Select
|
||||
|
||||
End Sub
|
||||
Private Sub btMostrar_Click(sender As Object, e As RoutedEventArgs)
|
||||
Try
|
||||
If cbRazonSocial.EditValue Is Nothing Then
|
||||
DXMessageBox.Show("Seleccione primero el cliente", "Atención")
|
||||
Else
|
||||
If DXSplashScreen.IsActive = False Then DXSplashScreen.Show(Of SplashScreenTecnosis)()
|
||||
DXSplashScreen.SetState("Buscando facturas ...")
|
||||
Dim idcliente As Integer = cbRazonSocial.EditValue
|
||||
Dim facs = bd.facturas.Include(Function(x) x.movimientoscaja).Include(Function(x) x.idClienteNavigation).Include(Function(x) x.idUsuarioNavigation).Where(Function(x) x.idCliente = idcliente).OrderBy(Function(x) x.FechaFactura).ToList.Where(Function(x) x.ImportePendiente <> 0).ToList
|
||||
Me.gcFacturas.ItemsSource = facs
|
||||
CalculaTotalAPagar()
|
||||
End If
|
||||
If DXSplashScreen.IsActive Then DXSplashScreen.Close()
|
||||
Catch ex As Exception
|
||||
If DXSplashScreen.IsActive Then DXSplashScreen.Close()
|
||||
FuncionesDinamicas.ErrorNoControladoAp(Me, ex)
|
||||
DXMessageBox.Show(ex.Message, "Error")
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
|
||||
|
||||
Private Sub BiBuscarCliente_Click(sender As Object, e As RoutedEventArgs)
|
||||
Dim dxw As New dxwEntidades(bd, True, False)
|
||||
If dxw.ShowDialog Then
|
||||
cbRazonSocial.EditValue = dxw.Entidad.idEntidad
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Private Sub CalculaTotalAPagar()
|
||||
Dim lf As List(Of facturas) = Me.gcFacturas.ItemsSource
|
||||
lf = lf.Where(Function(x) x.Marca_TMP).ToList
|
||||
|
||||
Dim TotalFacturas = lf.Sum(Function(x) x.ImportePendiente)
|
||||
|
||||
teTotalAPagar.EditValue = Math.Round(TotalFacturas, 2, MidpointRounding.AwayFromZero)
|
||||
End Sub
|
||||
|
||||
|
||||
Private Sub tvMovimientos_CellValueChanging(sender As Object, e As CellValueChangedEventArgs) Handles tv.CellValueChanging
|
||||
tv.CommitEditing()
|
||||
CalculaTotalAPagar()
|
||||
End Sub
|
||||
|
||||
Private Sub btPagar_Click(sender As Object, e As RoutedEventArgs)
|
||||
Try
|
||||
If deFechaPago.EditValue Is Nothing Then Throw New Exception("La fecha de pago es obligatoria")
|
||||
Dim FechaPago As Date = deFechaPago.EditValue
|
||||
If cbCaja.EditValue Is Nothing Then Throw New Exception("La caja de pago es obligatoria")
|
||||
Dim lf As List(Of facturas) = Me.gcFacturas.ItemsSource
|
||||
lf = lf.Where(Function(x) x.Marca_TMP).ToList
|
||||
Dim idCaja As Integer = cbCaja.EditValue
|
||||
Dim cj = bd.cajas.First(Function(x) x.idCaja = idCaja)
|
||||
If lf.Count = 0 Then Throw New Exception("Seleccione al menos una factura para pagar")
|
||||
|
||||
Dim lr As New List(Of movimientoscaja)
|
||||
For Each f In lf
|
||||
Dim nm As New movimientoscaja
|
||||
With nm
|
||||
.idFacturaNavigation = f
|
||||
.Importe = f.ImportePendiente
|
||||
.Tipo = TipoMovimientoEnum.RECIBO_CLIENTE
|
||||
.idCaja = idCaja
|
||||
.Fecha = FechaPago
|
||||
.FechaCreacion = Now
|
||||
.idUsuario = idUsuario
|
||||
.Observaciones = If(teObservaciones.EditValue IsNot Nothing, teObservaciones.EditValue.ToString, "")
|
||||
.EstableceNumeroRecibo()
|
||||
End With
|
||||
f.ImportePagado = Math.Round(f.movimientoscaja.Sum(Function(x) x.Importe), 2, MidpointRounding.AwayFromZero)
|
||||
f.FechaPago = New DateOnly(FechaPago.Year, FechaPago.Month, FechaPago.Day)
|
||||
f.movimientoscaja.Add(nm)
|
||||
bd.SaveChanges()
|
||||
lr.Add(nm)
|
||||
Next
|
||||
teObservaciones.EditValue = ""
|
||||
Dim cp As String = "RECIBO"
|
||||
Dim pl = bd.plantillas.First(Function(x) x.Codigo = cp)
|
||||
DXMessageBox.Show("Se han pagado " & lf.Count.ToString & " facturas. Seleccione ahora el fichero dónde se guardará el pdf de los recibos correspondientes.", "Atención")
|
||||
Dim b() As Byte = Informes.GuardaInformeEnPdf(bd, pl.idPlantilla, lr)
|
||||
|
||||
Dim sfd As New SaveFileDialog
|
||||
sfd.FileName = "Pago Facturas " & FechaPago.ToString("yyyy-MM-dd") & ".pdf"
|
||||
sfd.Filter = "Fichero PDF|*.pdf"
|
||||
sfd.DefaultExt = ".pdf"
|
||||
If sfd.ShowDialog Then
|
||||
IO.File.WriteAllBytes(sfd.FileName, b)
|
||||
tsUtilidades.Sistema.EjecutaFichero(sfd.FileName)
|
||||
End If
|
||||
' Informes.ImprimirPlantilla(bd, pl.idFicheroNavigation.Fichero, lr, False, 1)
|
||||
RefrescaAplicaciones()
|
||||
btMostrar_Click(Nothing, Nothing)
|
||||
Catch ex As Exception
|
||||
DXMessageBox.Show(ex.Message, "Atención")
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
Private Sub cbRazonSocial_PreviewKeyDown(sender As Object, e As KeyEventArgs) Handles cbRazonSocial.PreviewKeyDown
|
||||
If e.Key = Key.F6 Then BiBuscarCliente_Click(Nothing, Nothing)
|
||||
End Sub
|
||||
|
||||
End Class
|
||||
Reference in New Issue
Block a user