public virtual void Vende(Budget proforma, SerieInfo serie, ClienteInfo cliente, ProductInfo producto, BatchInfo partida) { if (cliente == null) { throw new iQException(Library.Invoice.Resources.Messages.NO_CLIENTE_SELECTED); } if (cliente.Productos == null) { cliente.LoadChilds(typeof(ProductoCliente), true); } ProductoClienteInfo productoCliente = cliente.Productos.GetByProducto(producto.Oid); if (partida == null) { CopyFrom(proforma, producto); } else { CopyFrom(partida); } SetTipoFacturacion(productoCliente, producto); SetImpuestos(serie, cliente, producto); Precio = producto.GetPrecioVenta(productoCliente, partida, ETipoFacturacion); }
/// <summary> /// Actualiza el precio en base a si se factura por kilo o bulto /// </summary> public virtual void UpdatePrecio(ProductInfo p, BatchInfo pexp, ProductoClienteInfo pci) { if (FacturacionBulto) { if (pci != null && pci.FacturacionBulto) { Precio = pci.Precio; } else if (pci == null) { Precio = p.PrecioVenta * pexp.KilosPorBulto; } else if (!pci.FacturacionBulto) { Precio = p.PrecioVenta; } } else { if (pci != null && pci.FacturacionBulto) { Precio = pci.Precio / pexp.KilosPorBulto; } else { Precio = p.PrecioVenta; } } }
internal static Decimal GetDescuentoCliente(ProductoClienteInfo productoCliente, Decimal pDescuento) { Decimal p_descuento = pDescuento; if (productoCliente != null) { p_descuento = (productoCliente.ETipoDescuento == ETipoDescuento.Porcentaje) ? productoCliente.PDescuento : pDescuento; } return(Decimal.Round(p_descuento, 2)); }
public Decimal GetDescuento(ProductInfo producto, BatchInfo partida) { if (Productos == null) { LoadChilds(typeof(ProductoCliente), false); } long oid_producto = (producto != null) ? producto.Oid : partida.Oid; ProductoClienteInfo producto_cliente = Productos.GetByProducto(oid_producto); return(ProductoClienteInfo.GetDescuentoCliente(producto_cliente, PDescuento)); }
internal void CopyValues(ProductoClienteInfo source) { if (source == null) { return; } _record.CopyValues(source.Base.Record); _producto = source.Producto; _oid_familia = source.OidFamilia; _oid_impuesto = source.OidImpuesto; _p_impuesto = source.PImpuesto; }
public virtual void SetTipoFacturacion(ProductoClienteInfo pci, ProductInfo product) { if (pci != null) { FacturacionBulto = pci.FacturacionBulto; } else if (product != null) { FacturacionBulto = !(product.ETipoFacturacion == ETipoFacturacion.Peso); } else { FacturacionBulto = false; } }
public Decimal GetPrecio(ProductInfo producto, BatchInfo partida, ETipoFacturacion tipo) { if (Productos == null) { LoadChilds(typeof(ProductoCliente), false); } long oid_producto = (producto != null) ? producto.Oid : partida.OidProducto; producto = (producto != null) ? producto : ProductInfo.Get(oid_producto, false, true); ProductoClienteInfo producto_cliente = Productos.GetByProducto(oid_producto); Decimal precio = producto.GetPrecioVenta(producto_cliente, partida, tipo); return(precio); }
public virtual void SetTipoFacturacion(ClienteInfo client, ProductInfo product) { if (client == null) { throw new iQException(Library.Invoice.Resources.Messages.NO_CLIENTE_SELECTED); } if (client.Productos == null) { client.LoadChilds(typeof(ProductoCliente), true); } ProductoClienteInfo pci = client.Productos.GetItemByProperty("OidProducto", product.Oid); SetTipoFacturacion(pci, product); }
internal static Decimal GetPrecioCliente(ProductoClienteInfo productoCliente, BatchInfo partida, ProductInfo producto, ETipoFacturacion tipo) { Decimal precio = 0; ETipoFacturacion tipoFacturacion = tipo; if (productoCliente != null) { precio = (productoCliente.ETipoDescuento == Common.ETipoDescuento.Precio) ? productoCliente.Precio : producto.PrecioVenta; tipoFacturacion = productoCliente.ETipoFacturacion; } else { precio = producto.PrecioVenta; tipoFacturacion = producto.ETipoFacturacion; } Decimal kilosBulto = (partida != null) ? partida.KilosPorBulto : producto.KilosBulto; kilosBulto = (kilosBulto == 0) ? 1 : kilosBulto; switch (tipo) { case ETipoFacturacion.Peso: if (tipoFacturacion != ETipoFacturacion.Peso) { precio = precio * kilosBulto; } break; default: if (tipoFacturacion == ETipoFacturacion.Peso) { precio = precio / kilosBulto; } break; } return(Decimal.Round(precio, ModulePrincipal.GetNDecimalesPreciosSetting())); }