private static void AddPOReceiptToBill(PXGraph graph, APInvoiceEntry invoiceEntry, EntityValueField receiptNbr)
        {
            var receiptExtension = graph.GetExtension <PO.GraphExtensions.APInvoiceSmartPanel.AddPOReceiptExtension>();

            POReceipt line = (POReceipt)(receiptExtension.poreceiptslist.Select().Where(x => ((POReceipt)x).ReceiptNbr == receiptNbr.Value).FirstOrDefault());

            if (line == null)
            {
                throw new PXException($"Purchase Receipt {receiptNbr.Value} was not found.");
            }

            line.Selected = true;



            receiptExtension.poreceiptslist.Update(line);

            receiptExtension.addPOReceipt2.Press();
        }
Ejemplo n.º 2
0
        public void InvoicePOReceipt(
            POReceipt receipt,
            DocumentList <APInvoice> list,
            bool saveAndAdd,
            bool usePOParemeters,
            bool keepOrderTaxes,
            bool errorIfUnreleasedAPExists,
            APInvoiceEntry_Extension.InvoicePOReceiptDel baseMetod)
        {
            baseMetod(receipt, list, saveAndAdd, usePOParemeters, keepOrderTaxes, errorIfUnreleasedAPExists);
            bool?autoCreateInvoice = receipt.AutoCreateInvoice;
            bool flag = true;

            if (!(autoCreateInvoice.GetValueOrDefault() == flag & autoCreateInvoice.HasValue))
            {
                return;
            }
            DateTime?dueDate;

            TermsAttribute.CalcTermsDates(SelectFrom <Terms> .Where <Terms.termsID.IsEqual <APInvoice.termsID.FromCurrent> > .View.Select((PXGraph)this.Base), receipt.GetExtension <POReceiptExt>().UsrSuppInvDate, out dueDate, out DateTime? _);
            this.Base.CurrentDocument.SetValueExt <APInvoice.dueDate>(this.Base.CurrentDocument.Current, (object)dueDate);
        }
Ejemplo n.º 3
0
        public virtual void POReceipt_ReceiptNbr_FieldSelecting(PXCache sender, PXFieldSelectingEventArgs e)
        {
            POReceipt row = (POReceipt)e.Row;
            APInvoice doc = Base.Document.Current;

            if (row != null && doc != null)
            {
                PXResultset <POOrderReceiptLink> receiptLinks = PXSelectGroupBy <POOrderReceiptLink, Where <POOrderReceiptLink.receiptNbr, Equal <Required <POReceipt.receiptNbr> > >,
                                                                                 Aggregate <GroupBy <POOrderReceiptLink.curyID> > > .Select(Base, row.ReceiptNbr);

                if (receiptLinks.Count == 0)
                {
                    return;
                }
                else if (receiptLinks.Count > 1 || ((POOrderReceiptLink)receiptLinks.First()).CuryID != doc.CuryID)
                {
                    string       fieldName = typeof(POReceipt.curyID).Name;
                    PXErrorLevel msgLevel  = PXErrorLevel.RowWarning;
                    e.ReturnState = PXFieldState.CreateInstance(e.ReturnState, typeof(String), false, null, null, null, null, null, fieldName,
                                                                null, null, AP.Messages.APDocumentCurrencyDiffersFromSourcePODocument, msgLevel, null, null, null, PXUIVisibility.Undefined, null, null, null);
                    e.IsAltered = true;
                }
            }
        }
Ejemplo n.º 4
0
        public virtual IEnumerable pOreceiptslist()
        {
            APInvoice doc = Base.Document.Current;

            if (doc?.VendorID == null ||
                doc.VendorLocationID == null ||
                doc.DocType != APDocType.Invoice &&
                doc.DocType != APDocType.DebitAdj)
            {
                yield break;
            }

            string poReceiptType = doc.DocType == APDocType.Invoice
                                ? POReceiptType.POReceipt
                                : POReceiptType.POReturn;

            Dictionary <APTran, int> usedReceipt = new Dictionary <APTran, int>(new POReceiptComparer());

            int count;

            foreach (APTran aPTran in Base.Transactions.Cache.Inserted)
            {
                if (aPTran.ReceiptNbr != null)
                {
                    usedReceipt.TryGetValue(aPTran, out count);
                    usedReceipt[aPTran] = count + 1;
                }
            }

            foreach (APTran aPTran in Base.Transactions.Cache.Deleted)
            {
                if (aPTran.ReceiptNbr != null && Base.Transactions.Cache.GetStatus(aPTran) != PXEntryStatus.InsertedDeleted)
                {
                    usedReceipt.TryGetValue(aPTran, out count);
                    usedReceipt[aPTran] = count - 1;
                }
            }

            foreach (APTran aPTran in Base.Transactions.Cache.Updated)
            {
                string originalValue = (string)Base.Transactions.Cache.GetValueOriginal <APTran.receiptNbr>(aPTran);
                if (aPTran.ReceiptNbr != originalValue)
                {
                    if (originalValue != null)
                    {
                        APTran originTran = new APTran {
                            ReceiptNbr = originalValue
                        };
                        usedReceipt.TryGetValue(originTran, out count);
                        usedReceipt[originTran] = count - 1;
                    }
                    if (aPTran.ReceiptNbr != null)
                    {
                        usedReceipt.TryGetValue(aPTran, out count);
                        usedReceipt[aPTran] = count + 1;
                    }
                }
            }

            PXSelectBase <POReceipt> cmd = new PXSelectJoinGroupBy <
                POReceipt,
                InnerJoin <POReceiptLineS, On <POReceiptLineS.receiptNbr, Equal <POReceipt.receiptNbr> >,
                           LeftJoin <APTran, On <APTran.released, Equal <False>,
                                                 And <Where <POReceiptLineS.pOAccrualType, Equal <POAccrualType.receipt>,
                                                             And <APTran.receiptNbr, Equal <POReceiptLineS.receiptNbr>,
                                                                  And <APTran.receiptType, Equal <POReceiptLineS.receiptType>,
                                                                       And <APTran.receiptLineNbr, Equal <POReceiptLineS.lineNbr>,
                                                                            Or <POReceiptLineS.pOAccrualType, Equal <POAccrualType.order>,
                                                                                And <APTran.pOOrderType, Equal <POReceiptLineS.pOType>,
                                                                                     And <APTran.pONbr, Equal <POReceiptLineS.pONbr>,
                                                                                          And <APTran.pOLineNbr, Equal <POReceiptLineS.pOLineNbr> > > > > > > > > > > > >,
                Where <POReceipt.hold, Equal <False>,
                       And <POReceipt.released, Equal <True>,
                            And <POReceipt.receiptType, Equal <Required <POReceipt.receiptType> >,
                                 And <APTran.refNbr, IsNull,
                                      And <POReceiptLineS.unbilledQty, Greater <decimal0>,
                                           And <Where <POReceiptLineS.pONbr, Equal <Current <POReceiptFilter.orderNbr> >,
                                                       Or <Current <POReceiptFilter.orderNbr>, IsNull> > > > > > > >,
                Aggregate <
                    GroupBy <POReceipt.receiptType,
                             GroupBy <POReceipt.receiptNbr,
                                      Sum <POReceiptLineS.receiptQty,
                                           Sum <POReceiptLineS.unbilledQty,
                                                Count <POReceiptLineS.lineNbr> > > > > > >(Base);

            if (Base.APSetup.Current.RequireSingleProjectPerDocument == true)
            {
                cmd.WhereAnd <Where <POReceipt.projectID, Equal <Current <APInvoice.projectID> > > >();
            }

            if (PXAccess.FeatureInstalled <FeaturesSet.vendorRelations>())
            {
                cmd.Join <LeftJoin <POOrder, On <POOrder.orderType, Equal <POReceiptLineS.pOType>, And <POOrder.orderNbr, Equal <POReceiptLineS.pONbr> > > > >();

                cmd.WhereAnd <Where <POReceipt.vendorID, Equal <Current <APInvoice.suppliedByVendorID> >,
                                     And <POReceipt.vendorLocationID, Equal <Current <APInvoice.suppliedByVendorLocationID> >,
                                          And <Where <POOrder.payToVendorID, IsNull, Or <POOrder.payToVendorID, Equal <Current <APInvoice.vendorID> > > > > > > >();
            }
            else
            {
                cmd.WhereAnd <Where <POReceipt.vendorID, Equal <Current <APInvoice.vendorID> >,
                                     And <POReceipt.vendorLocationID, Equal <Current <APInvoice.vendorLocationID> > > > >();
            }

            foreach (PXResult <POReceipt, POReceiptLineS, APTran> result in cmd.View.SelectMultiBound(new object[] { doc }, poReceiptType))
            {
                POReceipt receipt = result;
                APTran    aPTran  = new APTran {
                    ReceiptNbr = receipt.ReceiptNbr
                };

                if (usedReceipt.TryGetValue(aPTran, out count))
                {
                    usedReceipt.Remove(aPTran);

                    if (count < result.RowCount)
                    {
                        yield return(receipt);
                    }
                }
                else
                {
                    yield return(receipt);
                }
            }

            foreach (APTran deletedTran in usedReceipt.Where(_ => _.Value < 0).Select(_ => _.Key))
            {
                yield return(PXSelect <POReceipt, Where <POReceipt.receiptNbr, Equal <Required <APTran.receiptNbr> > > >
                             .SelectSingleBound(Base, new object[] { }, deletedTran.ReceiptNbr)
                             .RowCast <POReceipt>()
                             .First());
            }
        }
Ejemplo n.º 5
0
        private string InsertIntoPOReceipts(POLineItem pPOLine, POReceipt pPOReceipt)
        {
            try
            {
                cmd.CommandText = @"
                    INSERT INTO [dbo].[POReceipts]
                    (
                        BusinessUnitCode, 
                        BusinessUnit, 
                        PONumber, 

                        ReceiptNumber, DeliveryDate, ItemId, QuantityOrdered, QuantityReceived, QuantityRemaining, 
                        UnitOfMeasure, UnitPrice, TotalPrice, VendorID, Description, POLineNumber, 
                        IssueType, CurrencyLineCost, CurrencyUnitCost, LoadedCost, StatusDescription, 
                        PackingSlipNum, Status, Tax1, Tax2, Consignment, MatRecTransID

                    ) VALUES (
                        @BUSINESSUNITCODE, 
                        @BUSINESSUNITNAME, 
                        @PONUMBER, 

                        @RECEIPTNUMBER, @DELIVERYDATE, @ITEMID, @QUANTITYORDERED, @QUANTITYRECEIVED, @QUANTITYREMAINING, 
                        @UNITOFMEASURE, @UNITPRICE, @TOTALPRICE, @VENDORID, @DESCRIPTION, @POLINENUMBER, 
                        @ISSUETYPE, @CURRENCYLINECOST, @CURRENCYUNITCOST, @LOADEDCOST, @STATUSDESCRIPTION, 
                        @PACKINGSLIPNUM, @STATUS, @TAX1, @TAX2, @CONSIGNMENT, @MATRECTRANSID

                    )";
                cmd.Parameters.Clear();
                cmd.Parameters.Add(new SqlParameter("@BUSINESSUNITCODE", "2022"));
                cmd.Parameters.Add(new SqlParameter("@BUSINESSUNITNAME", "Kaiser"));
                cmd.Parameters.Add(new SqlParameter("@PONUMBER", poheader.ponum == null ? "" : poheader.ponum));
                cmd.Parameters.Add(new SqlParameter("@RECEIPTNUMBER", ""));
                cmd.Parameters.Add(new SqlParameter("@DELIVERYDATE", (object)pPOReceipt.actualdate ?? DBNull.Value));
                cmd.Parameters.Add(new SqlParameter("@ITEMID", pPOLine.itemnum == null ? "" : pPOLine.itemnum));
                cmd.Parameters.Add(new SqlParameter("@QUANTITYORDERED", pPOReceipt.quantity == null ? 0 : pPOReceipt.quantity));
                cmd.Parameters.Add(new SqlParameter("@QUANTITYRECEIVED", pPOReceipt.quantity == null ? 0 : pPOReceipt.quantity));
                cmd.Parameters.Add(new SqlParameter("@QUANTITYREMAINING", pPOReceipt.quantity == null ? 0 : pPOReceipt.quantity));
                cmd.Parameters.Add(new SqlParameter("@UNITOFMEASURE", pPOLine.orderunit == null ? "" : pPOLine.orderunit));
                cmd.Parameters.Add(new SqlParameter("@UNITPRICE", pPOLine.unitcost == null ? 0 : pPOLine.unitcost));
                cmd.Parameters.Add(new SqlParameter("@TOTALPRICE", pPOReceipt.loadedcost == null ? 0 : pPOReceipt.loadedcost));
                cmd.Parameters.Add(new SqlParameter("@VENDORID", poheader.vendor == null ? "" : poheader.vendor));
                cmd.Parameters.Add(new SqlParameter("@DESCRIPTION", pPOReceipt.status_description == null ? "" : pPOReceipt.status_description));
                cmd.Parameters.Add(new SqlParameter("@POLINENUMBER", pPOLine.polinenum == null ? 0 : pPOLine.polinenum));
                cmd.Parameters.Add(new SqlParameter("@ISSUETYPE", pPOReceipt.issuetype == null ? "" : pPOReceipt.issuetype));
                cmd.Parameters.Add(new SqlParameter("@CURRENCYLINECOST", pPOReceipt.currencylinecost == null ? 0 : pPOReceipt.currencylinecost));
                cmd.Parameters.Add(new SqlParameter("@CURRENCYUNITCOST", pPOReceipt.currencyunitcost == null ? 0 : pPOReceipt.currencyunitcost));
                cmd.Parameters.Add(new SqlParameter("@LOADEDCOST", pPOReceipt.loadedcost == null ? 0 : pPOReceipt.loadedcost));
                cmd.Parameters.Add(new SqlParameter("@STATUSDESCRIPTION", pPOReceipt.status_description == null ? "" : pPOReceipt.status_description));
                cmd.Parameters.Add(new SqlParameter("@PACKINGSLIPNUM", pPOReceipt.packingslipnum == null ? "" : pPOReceipt.packingslipnum));
                cmd.Parameters.Add(new SqlParameter("@STATUS", pPOReceipt.status == null ? "" : pPOReceipt.status));
                cmd.Parameters.Add(new SqlParameter("@TAX1", pPOReceipt.tax1 == null ? 0 : pPOReceipt.tax1));
                cmd.Parameters.Add(new SqlParameter("@TAX2", pPOReceipt.tax2 == null ? 0 : pPOReceipt.tax2));
                cmd.Parameters.Add(new SqlParameter("@CONSIGNMENT", pPOReceipt.consignment == null ? false : pPOReceipt.consignment));
                cmd.Parameters.Add(new SqlParameter("@MATRECTRANSID", pPOReceipt.matrectransid == null ? 0 : pPOReceipt.matrectransid));
                cmd.ExecuteNonQuery();
            }
            catch (Exception ex)
            {
                tr.Rollback();
                return("insertion failed (InsertIntoPOReceipts): " + ex.Message);
            }
            return("succeeded");
        }