Exemplo n.º 1
0
    public void SaveCollectionTimeAndDateToDisbursement(int requisitionId, string collectionPoint, DateTime date, string time)
    {
        EFBroker_Disbursement.UpdateRetrievalStatus(requisitionId, "Closed");

        List <Disbursement> disbursementList = EFBroker_Disbursement.GetDisbursmentListbyRetrievalID(requisitionId);

        Random r = new Random();

        foreach (Disbursement d in disbursementList)
        {
            string depCode = d.Department.DeptCode;
            if (EFBroker_DeptEmployee.GetCollectionPointbyDeptCode(depCode).CollectionPoint1 == collectionPoint)////////////////The ObjectContext instance has been disposed and can no longer be used for operations that require a connection."}
            {
                d.CollectionDate = date;
                d.CollectionTime = time;
                int value = r.Next(1000, 9999);
                d.AccessCode = value.ToString();
                d.Status     = "Ready";
                EFBroker_Disbursement.UpdateDisbursement(d);

                //Thread,asynctask for email
                Thread emailThread = new Thread(() => SendEmailToDepartmentRepresentative(depCode, d, collectionPoint));
                emailThread.Start();
                //
            }
        }
    }
Exemplo n.º 2
0
    // need to reset ActualQty To Zero before += rsub.ActualQty;, because same item code from different department has same ActualQty now
    public void SaveActualQtyBreakdownByDepartment(int requisitionId, List <RetrievalShortfallItemSub> retrievalShortfallItemSubListOfList)
    {
        List <Disbursement> disbursementList = EFBroker_Disbursement.GetDisbursmentListbyRetrievalID(requisitionId);

        resetActualQtyToZero(retrievalShortfallItemSubListOfList, disbursementList);

        foreach (RetrievalShortfallItemSub rsub in retrievalShortfallItemSubListOfList)
        {
            foreach (Disbursement d in disbursementList)
            {
                if (rsub.DeptCode == d.DeptCode)
                {
                    foreach (Disbursement_Item di in d.Disbursement_Item)
                    {
                        if (rsub.ItemCode == di.ItemCode)
                        {
                            //find the correct Disbursement_Item to save
                            di.ActualQty += rsub.ActualQty;
                            // di.ActualQty = rsub.ActualQty;
                            EFBroker_Disbursement.UpdateDisbursementItem(di);
                        }
                    }
                }
            }
        }
        return;
    }
Exemplo n.º 3
0
    //populate shortfall data for sub gridview
    public List <RetrievalShortfallItemSub> DisplayRetrievalShortfallSubGridView(int requisitionId, string shortfallItemCode)
    {
        List <RetrievalShortfallItemSub> RetrievalShortfallItemSubGridViewList = new List <RetrievalShortfallItemSub>();

        List <Disbursement> disbursementList = EFBroker_Disbursement.GetDisbursmentListbyRetrievalID(requisitionId);

        int i = 0;

        foreach (Disbursement d in disbursementList)
        {
            foreach (Requisition r in EFBroker_Requisition.GetRequisitionListByDisbursementID(d.DisbursementID))
            {
                //if only one departmentName
                string departmentName = d.Department.DeptName.ToString();
                string departmentCode = d.Department.DeptCode.ToString();
                try
                {
                    int requestedQty = EFBroker_Requisition.FindReqItemsByReqIDItemID(r.RequisitionID, shortfallItemCode).RequestedQty ?? 0; //if RequestedQty is null, assign to 0

                    //actualQty(0) bind with avialableQty(retrievedQty)
                    RetrievalShortfallItemSub rsfs = new RetrievalShortfallItemSub((DateTime)r.RequestDate, departmentName, departmentCode, requestedQty, 0, shortfallItemCode);
                    RetrievalShortfallItemSubGridViewList.Add(rsfs);
                    i++;
                }
                catch (Exception e)
                {
                    continue;
                }
            }
        }

        return(RetrievalShortfallItemSubGridViewList);
    }
Exemplo n.º 4
0
    //in android
    //update actual qty for non-shortfall disbursement items when generate disbursement button clicked in RetrievalListDetail page at werehouse
    public List <RetrievalShortfallItem> UpdateRetrieval(int requisitionId, Dictionary <string, int> retrievedData)
    {
        //update retrieval status
        EFBroker_Disbursement.UpdateRetrievalStatus(requisitionId, "InProgress");

        List <Disbursement> disbursementList = EFBroker_Disbursement.GetDisbursmentListbyRetrievalID(requisitionId);

        foreach (KeyValuePair <string, int> kvp in retrievedData)
        {
            string itemCode = kvp.Key;

            foreach (Disbursement d in disbursementList)
            {
                foreach (Disbursement_Item dI in d.Disbursement_Item)
                {
                    if (dI.ItemCode.Equals(itemCode))
                    {
                        dI.ActualQty = kvp.Value;
                        EFBroker_Disbursement.UpdateDisbursementItem(dI);
                    }
                }
            }
        }
        //call CheckShortfall method after button generate disbursement clicked in RetrievalListDetail page at werehouse
        return(CheckShortfall(requisitionId, retrievedData));
    }
Exemplo n.º 5
0
    //discard invalid disbursement and set requisitioin status to PRORITY if all qty zero
    public bool CheckInvalidDisbursement(int rId)
    {
        List <Disbursement> disbList = EFBroker_Disbursement.GetDisbursmentListbyRetrievalID(rId);

        Dictionary <Disbursement, bool> chkDisbStatus = new Dictionary <Disbursement, bool>();

        bool valid = false;

        foreach (Disbursement d in disbList)
        {
            foreach (Disbursement_Item di in d.Disbursement_Item)
            {
                if (di.ActualQty != 0)
                {
                    valid = true;
                }
            }
            chkDisbStatus.Add(d, valid);
        }

        if (!valid)
        {
            List <Requisition> reqList = new List <Requisition>();

            foreach (Disbursement d in disbList)
            {
                Requisition r = EFBroker_Requisition.GetRequisitionByDisbID(d.DisbursementID);
                r.Status         = "Priority";
                r.DisbursementID = null;
                EFBroker_Requisition.UpdateRequisition(r);

                d.Status = "Invalid";
                EFBroker_Disbursement.UpdateDisbursement(d);
            }
        }

        valid = false;

        foreach (KeyValuePair <Disbursement, bool> kvp in chkDisbStatus)
        {
            //if 1 of the disbursement is true => valid is true
            if (kvp.Value)
            {
                valid = true;
            }
        }

        if (!valid)  //   valid = false;
        {
            EFBroker_Disbursement.UpdateRetrievalStatus(rId, "Invalid");
        }

        return(valid);
    }
Exemplo n.º 6
0
    //udpate acuatal quantity if no shortfall
    public void UpdateAllActaulQty(int requisitionId)
    {
        List <Disbursement> disbursementList = EFBroker_Disbursement.GetDisbursmentListbyRetrievalID(requisitionId);


        foreach (Disbursement d in disbursementList)
        {
            foreach (Disbursement_Item dI in d.Disbursement_Item)
            {
                dI.ActualQty = dI.TotalRequestedQty;
                EFBroker_Disbursement.UpdateDisbursementItem(dI);
            }
        }
    }
Exemplo n.º 7
0
    // filter out different Department which has same collect point
    public List <CollectionPointItem> DisplayCollectionPoint(int requisitionId)
    {
        List <Disbursement> disbursementList = EFBroker_Disbursement.GetDisbursmentListbyRetrievalID(requisitionId);

        List <CollectionPointItem> collectionPointItemList = new List <CollectionPointItem>();

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

        foreach (Disbursement d in disbursementList)
        {
            if (CollectionLocationIDList.Count != 0)
            {
                bool add = true;
                foreach (int cID in CollectionLocationIDList)
                {
                    if (d.Department.CollectionLocationID == cID)
                    {
                        add = false;
                    }
                }
                if (add)
                {
                    CollectionLocationIDList.Add((int)d.Department.CollectionLocationID);
                    CollectionPointItem c1 = CreateCollectionPointItemList(d);
                    collectionPointItemList.Add(c1);
                }
            }
            else
            {
                CollectionLocationIDList.Add((int)d.Department.CollectionLocationID);
                CollectionPointItem c2 = CreateCollectionPointItemList(d);
                collectionPointItemList.Add(c2);
            }
        }
        return(collectionPointItemList);
    }
Exemplo n.º 8
0
    public List <RetrievalListDetailItem> DisplayRetrievalListDetail(int requisitionId)
    {
        List <RetrievalListDetailItem> retrievalListDetailItemDisplayList = new List <RetrievalListDetailItem>();

        //get retrievalStatus by requisitionId

        string retrievalStatus = EFBroker_Disbursement.GetRetrievalStatusByRequisitionId(requisitionId);

        // dictionary with itemcode + totalrequestedQty
        Dictionary <string, int> itemcodeAndTotalRequestedQtyDictionary = new Dictionary <string, int>();

        HashSet <String> uniqueItemcodeHashSet = new HashSet <string>();

        List <Disbursement> disbursementList = EFBroker_Disbursement.GetDisbursmentListbyRetrievalID(requisitionId);

        // remove repeated itemcode in disbursementList
        foreach (Disbursement d in disbursementList)
        {
            foreach (Disbursement_Item dI in d.Disbursement_Item)
            {
                uniqueItemcodeHashSet.Add(dI.ItemCode);
            }
        }

        // accumulate totalRequestedQty if there is same itemCode in Disbursement, then
        foreach (string i in uniqueItemcodeHashSet)
        {
            string itemCode          = i;
            int    totalRequestedQty = 0;
            foreach (Disbursement d in disbursementList)
            {
                foreach (Disbursement_Item dI in d.Disbursement_Item)
                {
                    if (dI.ItemCode == itemCode)
                    {
                        totalRequestedQty += (int)dI.TotalRequestedQty;
                    }
                }
            }
            itemcodeAndTotalRequestedQtyDictionary.Add(itemCode, totalRequestedQty);
        }

        //create RetrievalListDetailItem to display in DisplayRetrievalListDetail base on retrievalStatus
        foreach (KeyValuePair <string, int> kvp in itemcodeAndTotalRequestedQtyDictionary)
        {
            int retrievedQty = 0;
            if (retrievalStatus == "Pending")
            {
                //default retrievedQty is same as totalRequestedQty
                retrievedQty = kvp.Value;
            }
            if (retrievalStatus == "InProgress")
            {
                //retrievedQty is same as value which inputted in warehouse
                retrievedQty = EFBroker_Disbursement.GetRetrievedQtyByRequisitionIdNItemCode(requisitionId, kvp.Key);
            }

            Item   item        = EFBroker_Item.GetItembyItemCode(kvp.Key);
            string bin         = item.Bin;
            string description = item.Description;

            RetrievalListDetailItem retDetail = new RetrievalListDetailItem(bin, description, kvp.Value, kvp.Key, retrievedQty);
            retrievalListDetailItemDisplayList.Add(retDetail);
        }
        return(retrievalListDetailItemDisplayList);
    }