Esempio n. 1
0
 public static string SELECT(ProductInfo item)
 {
     return(SELECT(new Library.Store.QueryConditions {
         Producto = item
     }));
 }
Esempio n. 2
0
        public MovimientosStockListPorExpedienteRpt GetMovimientosStockListAgrupado(ExpedienteList items,
                                                                                    ProductInfo producto,
                                                                                    SerieInfo serie,
                                                                                    ReportFilter filter,
                                                                                    ReportFormat format)
        {
            MovimientosStockListPorExpedienteRpt doc = new MovimientosStockListPorExpedienteRpt();
            List <ExpedientePrint> pList             = new List <ExpedientePrint>();
            List <StockPrint>      movs = new List <StockPrint>();
            StockList stocks            = null;

            int movsCount = 0;

            foreach (ExpedientInfo item in items)
            {
                if (filter.SoloStock)
                {
                    if ((item.StockKilos == 0) || (item.StockBultos == 0))
                    {
                        continue;
                    }
                }

                movsCount = movs.Count;
                stocks    = (item.Stocks == null) ? StockList.GetListByExpediente(item.Oid, false) : item.Stocks;
                foreach (StockInfo stock in stocks)
                {
                    if (filter.SoloMermas)
                    {
                        if ((stock.OidAlbaran != 0) || (stock.Kilos >= 0))
                        {
                            continue;
                        }
                    }

                    if ((filter.FechaIni <= stock.Fecha) && (stock.Fecha <= filter.FechaFin))
                    {
                        if ((producto == null) && (serie == null))
                        {
                            movs.Add(StockPrint.New(stock));
                        }
                        else if (producto != null)
                        {
                            if ((producto.Oid == stock.OidProducto) && (serie == null))
                            {
                                movs.Add(StockPrint.New(stock));
                            }
                            else if ((producto.Oid == stock.OidProducto) && (serie.Oid == stock.OidSerie))
                            {
                                movs.Add(StockPrint.New(stock));
                            }
                        }
                        else if (serie.Oid == stock.OidSerie)
                        {
                            movs.Add(StockPrint.New(stock));
                        }
                    }
                }

                if (movsCount < movs.Count)
                {
                    pList.Add(item.GetPrintObject());
                }
            }

            //Si no existen conceptos, no tiene sentido un informe detallado. Además, falla en Crystal Reports
            if (movs.Count <= 0)
            {
                return(null);
            }

            doc.SetDataSource(pList);
            doc.Subreports["StocksSubReport"].SetDataSource(movs);

            FormatHeader(doc);
            FormatReport(doc, filter, format);

            return(doc);
        }
        internal static Decimal GetPrecioProveedor(ProductoProveedorInfo productoProveedor, BatchInfo partida, ProductInfo producto, ETipoFacturacion tipo)
        {
            Decimal          precio          = 0;
            ETipoFacturacion tipoFacturacion = tipo;

            if (productoProveedor != null)
            {
                precio          = (productoProveedor.ETipoDescuento == ETipoDescuento.Precio) ? productoProveedor.Precio : producto.PrecioCompra;
                tipoFacturacion = productoProveedor.ETipoFacturacion;
            }
            else
            {
                precio          = producto.PrecioCompra;
                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, 2));
        }
Esempio n. 4
0
        public ReportClass GetDetailReport(InputInvoiceInfo item, FormatConfFacturaAlbaranReport conf)
        {
            if (item == null)
            {
                return(null);
            }

            List <InputInvoiceLinePrint> conceptos = new List <InputInvoiceLinePrint>();
            List <InputInvoicePrint>     pList     = new List <InputInvoicePrint>();

            foreach (InputInvoiceLineInfo cfi in item.Conceptos)
            {
                conceptos.Add(cfi.GetPrintObject());
            }

            //Si no existen conceptos, no tiene sentido un informe detallado. Además, falla en Crystal Reports
            if (conceptos.Count <= 0)
            {
                return(null);
            }

            pList.Add(item.GetPrintObject());

            ProductList productos = ProductList.GetList(false);

            foreach (InputInvoiceLinePrint cfp in conceptos)
            {
                if (cfp.OidProducto == 0)
                {
                    continue;
                }
                ProductInfo prod = productos.GetItem(cfp.OidProducto);
                if (prod != null)
                {
                    if (prod.AyudaKilo > 0)
                    {
                        cfp.Concepto += " *";
                    }
                }
            }

            List <ImpuestoResumen> irpf_list = new List <ImpuestoResumen>();

            foreach (DictionaryEntry irpf in item.GetIRPF())
            {
                irpf_list.Add((ImpuestoResumen)irpf.Value);
            }

            ReportClass doc = null;

            try
            {
                doc = GetReportFromName("Invoice", "InputInvoiceRpt");
            }
            catch
            {
                doc = new InputInvoiceRpt();
            }

            doc.Subreports["LinesSubRpt"].SetDataSource(conceptos);
            if (doc.Subreports["IRPFSubListRpt"] != null)
            {
                doc.Subreports["IRPFSubListRpt"].SetDataSource(irpf_list);
            }

            doc.SetDataSource(pList);
            CompanyInfo company = CompanyInfo.Get(Schema.Oid, false);

            doc.SetParameterValue("nombreEmpresa", company.Name);
            doc.SetParameterValue("dirEmpresa", company.Direccion);
            doc.SetParameterValue("dir2Empresa", company.CodPostal + ". " + company.Municipio + ". " + company.Provincia);
            doc.SetParameterValue("CIFEmpresa", company.VatNumber);
            doc.SetParameterValue("nota", conf.nota);
            doc.SetParameterValue("copia", (conf.copia != null) ? conf.copia : string.Empty);
            doc.SetParameterValue("cuentaBancaria", (conf.cuenta_bancaria != string.Empty) ? conf.cuenta_bancaria : company.CuentaBancaria);

            return(doc);
        }
        public static string SELECT(ProductInfo product,
                                    ETipoExpediente expedientType,
                                    ExpedientInfo expedient,
                                    DateTime date)
        {
            string ba = nHManager.Instance.GetSQLTable(typeof(moleQule.Store.Data.BatchRecord));
            string st = nHManager.Instance.GetSQLTable(typeof(moleQule.Store.Data.StockRecord));
            string ex = nHManager.Instance.GetSQLTable(typeof(moleQule.Store.Data.ExpedientRecord));
            string pr = nHManager.Instance.GetSQLTable(typeof(moleQule.Store.Data.ProductRecord));
            string su = nHManager.Instance.GetSQLTable(typeof(moleQule.Store.Data.SupplierRecord));
            string sr = nHManager.Instance.GetSQLTable(typeof(AlmacenRecord));

            //LOS PRODUCTOS QUE HAN SIDO INCLUIDOS EN ALGUN EXPEDIENTE Y TIENEN SALIDAS DE STOCK
            string query =
                FIELDS() + @"
            FROM " + ba + @" AS PA
            INNER JOIN " + sr + @" AS AL ON AL.""OID"" = PA.""OID_ALMACEN""
            INNER JOIN (SELECT ""OID_BATCH"", SUM(""KILOS"") AS ""ENTRADA""
                        FROM " + st + @"
                        WHERE ""KILOS"" > 0 
                            AND ""FECHA"" <= '" + date.ToString("MM/dd/yyyy") + @"'
                        GROUP BY ""OID_BATCH"")
                AS SA ON PA.""OID"" = SA.""OID_BATCH""
            INNER JOIN (SELECT ""OID_BATCH"", SUM(""KILOS"") AS ""SALIDA""
                        FROM " + st + @"
                        WHERE ""KILOS"" < 0 
                            AND ""FECHA"" <= '" + date.ToString("MM/dd/yyyy") + @"'
                        GROUP BY ""OID_BATCH"")
                AS SB ON PA.""OID"" = SB.""OID_BATCH""
            INNER JOIN " + ex + @" AS E ON E.""OID"" = PA.""OID_EXPEDIENTE""
            INNER JOIN " + pr + @" AS P ON P.""OID"" = PA.""OID_PRODUCTO""
            INNER JOIN " + su + @" AS PR ON PR.""OID"" = PA.""OID_PROVEEDOR""
            WHERE TRUE";

            if (product != null)
            {
                query += @" 
                AND P.""OID"" = " + product.Oid;
            }

            if (expedientType != ETipoExpediente.Todos)
            {
                query += @"
                AND E.""TIPO_EXPEDIENTE"" = " + (long)expedientType;

                if (expedient != null)
                {
                    query += @"
                    AND E.""OID"" = " + expedient.Oid;
                }
            }

            query += @"
            UNION ";

            //LOS PRODUCTOS QUE NO TIENEN SALIDAS DE STOCK
            query +=
                FIELDS() + @"
            FROM " + ba + @" AS PA
            INNER JOIN " + sr + @" AS AL ON AL.""OID"" = PA.""OID_ALMACEN""
            INNER JOIN " + ex + @" AS E ON E.""OID"" = PA.""OID_EXPEDIENTE""
            INNER JOIN " + pr + @" AS P ON P.""OID"" = PA.""OID_PRODUCTO""
            INNER JOIN " + su + @" AS PR ON PR.""OID"" = PA.""OID_PROVEEDOR""
            INNER JOIN (SELECT ""OID_BATCH"", SUM(""KILOS"") AS ""ENTRADA"", 0 AS ""SALIDA""
                        FROM " + st + @"
                        WHERE ""KILOS"" > 0 
                            AND ""FECHA"" <= '" + date.ToString("MM/dd/yyyy") + @"'
                        GROUP BY ""OID_BATCH"")
                AS SA ON PA.""OID"" = SA.""OID_BATCH""
            WHERE PA.""OID"" NOT IN (SELECT DISTINCT ""OID_BATCH""
                                    FROM " + st + @"
                                    WHERE ""KILOS"" < 0 
                                        AND ""FECHA"" <= '" + date.ToString("MM/dd/yyyy") + "')";

            if (product != null)
            {
                query += @"
                AND P.""OID"" = " + product.Oid;
            }

            if (expedientType != ETipoExpediente.Todos)
            {
                query += @"
                AND E.""TIPO_EXPEDIENTE"" = " + (long)expedientType;

                if (expedient != null)
                {
                    query += @"
                    AND E.""OID"" = " + expedient.Oid;
                }
            }

            if (expedientType == ETipoExpediente.Todos)
            {
                //LOS PRODUCTOS QUE EXISTEN PERO NO HAN SIDO INCLUIDOS EN NINGUN EXPEDIENTE
                query += @"
                UNION ";

                query += @"
                SELECT P.""OID"" AS ""OID_PRODUCTO_PROVEEDOR""
                        ,AL.""CODIGO"" AS ""ID_ALMACEN""
                        ,AL.""NOMBRE"" AS ""ALMACEN""
                        ,P.""OID"" AS ""OID_PRODUCTO""
                        ,P.""CODIGO_ADUANERO"" AS ""CODIGO_PRODUCTO""
                        ,P.""NOMBRE"" AS ""PRODUCTO""
                        ,'' AS ""EXPEDIENTE""
                        ,'' AS ""CONTENEDOR""
                        ,0 AS ""TIPO_EXPEDIENTE""
                        ,PR.""NOMBRE"" AS ""PROVEEDOR""
                        ,P.""PRECIO_COMPRA"" AS ""PCD""
                        ,P.""PRECIO_VENTA"" AS ""PVP""
                        ,0 AS ""COSTE_KILO""
                        0 AS ""ENTRADA"", 0 AS ""SALIDA""
                FROM " + pr + @"AS P
                LEFT JOIN " + ba + @" AS PA ON P.""OID"" = PA.""OID_PRODUCTO""
                INNER JOIN " + sr + @" AS AL ON AL.""OID"" = PA.""OID_ALMACEN""
                LEFT JOIN " + su + @" AS PR ON PR.""OID"" = PA.""OID_PROVEEDOR""
                WHERE P.""OID"" NOT IN (SELECT ""OID_PRODUCTO"" FROM " + ba + ")";

                if (product != null)
                {
                    query += @"
                    AND P.""OID"" = " + product.Oid;
                }
            }

            query += @"
            ORDER BY ""PRODUCTO""";

            return(query);
        }