239 lines
11 KiB
C#
239 lines
11 KiB
C#
using System;
|
|
using System.ComponentModel;
|
|
using System.ComponentModel.DataAnnotations.Schema;
|
|
using System.Linq;
|
|
using static bdGrupoSanchoToro.db.productos;
|
|
|
|
namespace bdGrupoSanchoToro.db
|
|
{
|
|
|
|
public partial class detallesalbaranes
|
|
{
|
|
|
|
private double? _UnidadesRecogidasTmp;
|
|
|
|
[NotMapped]
|
|
public double? UnidadesRecogidasTmp
|
|
{
|
|
get
|
|
{
|
|
if (_UnidadesRecogidasTmp.HasValue == false)
|
|
_UnidadesRecogidasTmp = Cantidad;
|
|
return _UnidadesRecogidasTmp;
|
|
}
|
|
set
|
|
{
|
|
_UnidadesRecogidasTmp = value;
|
|
}
|
|
}
|
|
|
|
[NotMapped]
|
|
public string Producto
|
|
{
|
|
get
|
|
{
|
|
return this.idProductoNavigation.Descripcion;
|
|
}
|
|
}
|
|
public string NumeroAlbaran
|
|
{
|
|
get
|
|
{
|
|
return this.idAlbaranNavigation.NumeroAlbaran;
|
|
}
|
|
}
|
|
public DateOnly FechaAlbaran
|
|
{
|
|
get
|
|
{
|
|
return this.idAlbaranNavigation.Fecha;
|
|
}
|
|
}
|
|
public string AlmacenOrigen
|
|
{
|
|
get
|
|
{
|
|
if (this.idAlbaranNavigation.idAlmacenOrigen.HasValue)
|
|
{
|
|
return this.idAlbaranNavigation.idAlmacenOrigenNavigation.Descripcion;
|
|
}
|
|
else
|
|
{
|
|
return "";
|
|
}
|
|
}
|
|
}
|
|
public string AlmacenDestino
|
|
{
|
|
get
|
|
{
|
|
if (idAlbaranNavigation.idAlmacenDestino.HasValue)
|
|
{
|
|
return idAlbaranNavigation.idAlmacenDestinoNavigation.Descripcion;
|
|
}
|
|
else
|
|
{
|
|
return "";
|
|
}
|
|
}
|
|
}
|
|
public string Entidad
|
|
{
|
|
get
|
|
{
|
|
return this.idAlbaranNavigation.Entidad;
|
|
}
|
|
}
|
|
public void ActualizaProducto(bdGrupoSanchoToro.tscGrupoSanchoToro bd, albaranes.TipoAlbaranEnum Tipo, int Factor,int Empresa)
|
|
{
|
|
try
|
|
{
|
|
var pr = bd.productos.First(x => x.idProducto == this.idProducto);
|
|
if (pr.Tipo < (int)TipoProductoEnum.SERVICIO )
|
|
{
|
|
almacenes almo;
|
|
almacenes almd;
|
|
if (Tipo==albaranes.TipoAlbaranEnum.RECOGIDA || Tipo==albaranes.TipoAlbaranEnum.DEVOLUCION_SUBALQUILER)
|
|
{
|
|
almo = this.idAlbaranRecogidaNavigation.idAlmacenOrigen.HasValue ? bd.almacenes.First(x => x.idAlmacen == idAlbaranRecogidaNavigation.idAlmacenOrigen) : (almacenes)null;
|
|
almd = this.idAlbaranRecogidaNavigation.idAlmacenDestino.HasValue ? bd.almacenes.First(x => x.idAlmacen == this.idAlbaranRecogidaNavigation.idAlmacenDestino) : (almacenes)null;
|
|
// Tipo = (albaranes.TipoAlbaranEnum)this.idAlbaranRecogidaNavigation.Tipo;
|
|
}
|
|
else
|
|
{
|
|
almo = this.idAlbaranNavigation.idAlmacenOrigen.HasValue ? bd.almacenes.First(x => x.idAlmacen == idAlbaranNavigation.idAlmacenOrigen) : (almacenes)null;
|
|
almd = this.idAlbaranNavigation.idAlmacenDestino.HasValue ? bd.almacenes.First(x => x.idAlmacen == this.idAlbaranNavigation.idAlmacenDestino) : (almacenes)null;
|
|
// Tipo = (albaranes.TipoAlbaranEnum)this.idAlbaranNavigation.Tipo;
|
|
}
|
|
switch (Tipo)
|
|
{
|
|
case albaranes.TipoAlbaranEnum.COMPRA:
|
|
{
|
|
this.ActStockPorAlmacen(bd, Factor, almd.idAlmacen, pr.idProducto);
|
|
pr.UnidadesCompradas += this.Cantidad * (double)Factor;
|
|
pr.ActualizaUnidades(TipoUnidadesEnum.COMPRADAS, Empresa, this.Cantidad * (double)Factor);
|
|
this.ActStockGlobal(bd, pr, (almacenes.TipoAlmacenEnum)almd.Tipo, true, Factor, Empresa);
|
|
break;
|
|
}
|
|
case albaranes.TipoAlbaranEnum.FABRICACION:
|
|
case albaranes.TipoAlbaranEnum.REGULARIZACION_STOCK:
|
|
{
|
|
this.ActStockPorAlmacen(bd, Factor, almd.idAlmacen, pr.idProducto);
|
|
pr.UnidadesInicialesOFabricadas += this.Cantidad * (double)Factor;
|
|
pr.ActualizaUnidades(TipoUnidadesEnum.INICIALES_O_FABRICADAS, Empresa, this.Cantidad * (double)Factor);
|
|
this.ActStockGlobal(bd, pr, (almacenes.TipoAlmacenEnum)almd.Tipo, true, Factor, Empresa);
|
|
break;
|
|
}
|
|
case albaranes.TipoAlbaranEnum.CAMBIO_ALMACEN:
|
|
{
|
|
this.ActStockPorAlmacen(bd, Factor * -1, almo.idAlmacen, pr.idProducto);
|
|
this.ActStockGlobal(bd, pr, (almacenes.TipoAlmacenEnum)almo.Tipo, false, Factor * -1, Empresa);
|
|
|
|
this.ActStockPorAlmacen(bd, Factor, almd.idAlmacen, pr.idProducto);
|
|
this.ActStockGlobal(bd, pr, (almacenes.TipoAlmacenEnum)almd.Tipo, false, Factor, Empresa);
|
|
break;
|
|
}
|
|
case albaranes.TipoAlbaranEnum.ENTREGA:
|
|
{
|
|
this.ActStockPorAlmacen(bd, Factor * -1, almo.idAlmacen, pr.idProducto);
|
|
this.ActStockGlobal(bd,pr, (almacenes.TipoAlmacenEnum)almo.Tipo, this.EsVenta, Factor * -1, Empresa);
|
|
if (this.EsVenta == false)
|
|
{
|
|
pr.UnidadesAlquiladas += this.Cantidad * (double)Factor;
|
|
pr.ActualizaUnidades(TipoUnidadesEnum.ALQUILADAS, Empresa, this.Cantidad * (double)Factor);
|
|
}
|
|
else
|
|
{
|
|
pr.UnidadesVendidas += this.Cantidad * (double)Factor;
|
|
pr.ActualizaUnidades(TipoUnidadesEnum.VENDIDAS, Empresa, this.Cantidad * (double)Factor);
|
|
}
|
|
|
|
break;
|
|
}
|
|
case albaranes.TipoAlbaranEnum.RECOGIDA:
|
|
{
|
|
this.ActStockPorAlmacen(bd, Factor, almd.idAlmacen, pr.idProducto);
|
|
this.ActStockGlobal(bd,pr, (almacenes.TipoAlmacenEnum)almd.Tipo, false, Factor, Empresa);
|
|
pr.UnidadesAlquiladas += this.Cantidad * (double)Factor * (double)-1;
|
|
pr.ActualizaUnidades(TipoUnidadesEnum.ALQUILADAS, Empresa, this.Cantidad * (double)Factor * (double)-1);
|
|
break;
|
|
}
|
|
case albaranes.TipoAlbaranEnum.SUBALQUILER:
|
|
{
|
|
this.ActStockPorAlmacen(bd, Factor, almd.idAlmacen, pr.idProducto);
|
|
this.ActStockGlobal(bd,pr, (almacenes.TipoAlmacenEnum)almd.Tipo, true, Factor, Empresa);
|
|
pr.UnidadesSubAlquiladas += this.Cantidad * (double)Factor;
|
|
pr.ActualizaUnidades(TipoUnidadesEnum.SUBALQUILADAS, Empresa, this.Cantidad * (double)Factor);
|
|
break;
|
|
}
|
|
case albaranes.TipoAlbaranEnum.DEVOLUCION_SUBALQUILER:
|
|
{
|
|
this.ActStockPorAlmacen(bd, Factor * -1, almo.idAlmacen, pr.idProducto);
|
|
this.ActStockGlobal(bd,pr, (almacenes.TipoAlmacenEnum)almo.Tipo, true, Factor * -1, Empresa);
|
|
pr.UnidadesSubAlquiladas += this.Cantidad * (double)Factor * (double)-1;
|
|
pr.ActualizaUnidades(TipoUnidadesEnum.SUBALQUILADAS, Empresa, this.Cantidad * (double)Factor * (double)-1);
|
|
break;
|
|
}
|
|
}
|
|
bd.GuardarCambios();
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
throw new Exception(ex.Message, ex);
|
|
}
|
|
}
|
|
private void ActStockPorAlmacen(bdGrupoSanchoToro.tscGrupoSanchoToro bd, int Factor, int idAlmacen, int idProducto)
|
|
{
|
|
try
|
|
{
|
|
var st = bd.stocks.FirstOrDefault(x => x.idProducto == idProducto && x.idAlmacen == idAlmacen);
|
|
if (st is null)
|
|
{
|
|
st = new stocks();
|
|
st.idProducto = idProducto;
|
|
st.idAlmacen = idAlmacen;
|
|
st.Unidades = 0d;
|
|
bd.stocks.Add(st);
|
|
}
|
|
st.Unidades += this.Cantidad * (double)Factor;
|
|
bd.GuardarCambios();
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
throw new Exception(ex.Message, ex);
|
|
}
|
|
}
|
|
private void ActStockGlobal(bdGrupoSanchoToro.tscGrupoSanchoToro bd, productos pr, almacenes.TipoAlmacenEnum TipoAlmacen, bool ActTotalUnidades, int Factor,int Empresa)
|
|
{
|
|
try
|
|
{
|
|
switch (TipoAlmacen)
|
|
{
|
|
// Case almacenes.TipoAlmacenEnum.ALMACEN
|
|
case almacenes.TipoAlmacenEnum.TALLER_REPARACIONES:
|
|
{
|
|
pr.UnidadesAveriadas += this.Cantidad * (double)Factor;
|
|
break;
|
|
}
|
|
case almacenes.TipoAlmacenEnum.UNIDADES_DESCARTADAS:
|
|
{
|
|
pr.UnidadesDesechadas += this.Cantidad * (double)Factor;
|
|
break;
|
|
}
|
|
}
|
|
if (ActTotalUnidades)
|
|
{
|
|
pr.TotalUnidades += this.Cantidad * (double)Factor;
|
|
pr.ActualizaUnidades(TipoUnidadesEnum.TOTAL, Empresa, this.Cantidad * (double)Factor);
|
|
}
|
|
bd.GuardarCambios();
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
throw new Exception(ex.Message, ex);
|
|
}
|
|
|
|
}
|
|
}
|
|
} |