Exemplo n.º 1
0
        //------------------------------------------------------------------------------------

        #endregion

        //------------------------------------------------------------------------------------

        #region Buttons

        //------------------------------------------------------------------------------------

        protected void btnExport_Click(object sender, EventArgs e)
        {
            int importedInvoiceId = 0;

            int.TryParse(this.cboFile.SelectedValue, out importedInvoiceId);

            int businessTypeId = 0;

            int.TryParse(cboBusinessType.SelectedValue, out businessTypeId);

            List <int> selectedOrderIDs = new List <int>();

            selectedOrderIDs = this.GetOrderIdsForExport();

            List <int> importedInvoiceItemIDsToExclude = new List <int>();

            importedInvoiceItemIDsToExclude = this.GetImportedInvoiceItemIDsToExclude();

            if (selectedOrderIDs.Count > 0)
            {
                Facade.ImportedInvoice facimportedInvoice = new Facade.ImportedInvoice();
                DataSet ds = facimportedInvoice.GetOrdersForMatchingExport(importedInvoiceId, businessTypeId, selectedOrderIDs, importedInvoiceItemIDsToExclude);

                Facade.ExtraType          facExtraTypes = new Orchestrator.Facade.ExtraType();
                List <Entities.ExtraType> extraTypes    = facExtraTypes.GetForIsEnabled(true);

                foreach (Entities.ExtraType et in extraTypes)
                {
                    ds.Tables[0].Columns.Add("[" + et.Description + "]", typeof(decimal));
                }

                // Extra data
                foreach (DataRow dr in ds.Tables[0].Rows)
                {
                    DataRow[] extraRows = ds.Tables[1].Select("OrderID = " + dr["OrderID"]);
                    foreach (DataRow extra in extraRows)
                    {
                        if (dr.Table.Columns.Contains("[" + extra["ExtraType"] + "]"))
                        {
                            dr["[" + extra["ExtraType"] + "]"] = extra["ExtraAmount"];
                        }
                    }
                }

                Session["__ExportDS"] = ds.Tables[0];
                Response.Redirect("../reports/csvexport.aspx?filename=InvoiceMatchingExport.CSV");
            }
            else
            {
                this.lblStatus.Text = "0 Orders could be exported.";
            }
        }
Exemplo n.º 2
0
        //------------------------------------------------------------------------------------

        private void RebindGrid()
        {
            int importedInvoiceId = 0;

            int.TryParse(this.cboFile.SelectedValue, out importedInvoiceId);

            int businessTypeId = 0;

            int.TryParse(cboBusinessType.SelectedValue, out businessTypeId);

            Func <IEnumerable <DataRow>, decimal> getImportedItemDifferenceAmount = drs =>
                                                                                    drs.Any(dr => dr.Field <int>("ImportedInvoiceItemID") == -1) ? drs.First(dr => dr.Field <int>("ImportedInvoiceItemID") == -1).Field <decimal>("DifferenceAmount") : 0m;

            Func <IEnumerable <DataRow>, decimal> getImportedItemDifferenceWeightAmount = drs =>
                                                                                          drs.Any(dr => dr.Field <int>("ImportedInvoiceItemID") == -1) ? drs.First(dr => dr.Field <int>("ImportedInvoiceItemID") == -1).Field <decimal>("DifferenceWeightAmount") : 0m;

            Func <IEnumerable <DataRow>, string> getOrderStatus = drs =>
                                                                  drs.Any(dr => dr.Field <int>("ImportedInvoiceItemID") == -1) ? drs.First(dr => dr.Field <int>("ImportedInvoiceItemID") == -1).Field <string>("OrderStatus") : String.Empty;

            Func <IEnumerable <DataRow>, string> getLoadNumber = drs =>
                                                                 drs.Any(dr => dr.Field <int>("ImportedInvoiceItemID") == -1) ? drs.First(dr => dr.Field <int>("ImportedInvoiceItemID") == -1).Field <string>("Ref2") : String.Empty;

            Func <IEnumerable <DataRow>, string> getDocketNumber = drs =>
                                                                   drs.Any(dr => dr.Field <int>("ImportedInvoiceItemID") == -1) ? drs.First(dr => dr.Field <int>("ImportedInvoiceItemID") == -1).Field <string>("Ref1") : String.Empty;

            Func <IEnumerable <DataRow>, string> getShipmentNumber = drs =>
                                                                     drs.Any(dr => dr.Field <int>("ImportedInvoiceItemID") == -1) ? drs.First(dr => dr.Field <int>("ImportedInvoiceItemID") == -1).Field <string>("Ref3") : String.Empty;

            Func <IEnumerable <DataRow>, bool> getCanBeInvoiced = drs =>
                                                                  drs.Any(dr => dr.Field <int>("ImportedInvoiceItemID") == -1 && dr.Field <int?>("PreinvoiceId") == null && dr.Field <int?>("InvoiceId") == null) ? true : false;

            Facade.ImportedInvoice facimportedInvoice = new Facade.ImportedInvoice();
            DataSet ds = facimportedInvoice.GetImportedInvoiceItems(importedInvoiceId, businessTypeId);

            if (ds != null)
            {
                var queryInvoiceItems = ds.Tables[0].Rows.Cast <DataRow>().AsEnumerable();
                var resultRows        = from row in queryInvoiceItems
                                        where row["OrderID"] != System.DBNull.Value
                                        group row by row["OrderID"] into g
                                        select new ResultType()
                {
                    ImportedInvoiceItemID = -1,                  // we don't need to set this as it is not used for matched orders
                    OrderID                = Convert.ToInt32(g.Key),
                    OrderStatus            = getOrderStatus(g),
                    Ref1                   = getDocketNumber(g),
                    Ref2                   = getLoadNumber(g),
                    Ref3                   = getShipmentNumber(g),
                    CanBeInvoiced          = getCanBeInvoiced(g),
                    DifferenceAmount       = getImportedItemDifferenceAmount(g),
                    DifferenceWeightAmount = getImportedItemDifferenceWeightAmount(g),
                    OrderCount             = g.Count(),
                    Items                  = g
                };

                var unMatched = from row in queryInvoiceItems
                                where row["OrderID"] == System.DBNull.Value
                                group row by row["ImportedInvoiceItemID"] into g
                                select new ResultType()
                {
                    ImportedInvoiceItemID = g.First().Field <int>("ImportedInvoiceItemID"),
                    OrderID                = -1,
                    OrderStatus            = String.Empty,
                    Ref1                   = g.First().Field <string>("Ref1"),
                    Ref2                   = g.First().Field <string>("Ref2"),
                    Ref3                   = g.First().Field <string>("Ref3"),
                    CanBeInvoiced          = false,
                    DifferenceAmount       = 0m,
                    DifferenceWeightAmount = 0m,
                    OrderCount             = 1,
                    Items                  = g
                };

                resultRows = resultRows.Concat(unMatched);
                resultRows = resultRows.OrderBy(res => res.Ref2).ThenBy(res => res.Ref1);

                lvPreInvoiceItems.DataSource = resultRows;
                lvPreInvoiceItems.DataBind();

                var queryAdditionalItems = ds.Tables[1].Rows.Cast <DataRow>().AsEnumerable();

                lvAdditional.DataSource = queryAdditionalItems;
                lvAdditional.DataBind();
            }
        }