Saturday, September 28, 2019

Sales Price WMS

Public void God_SalesPriceWMSChangeQty()
{
    InventTable                     inventTableLoc;
    God_AlternativeItems            _God_AlternativeItems;
    Amount4decimal                  amount,amount1,factorconv;
    CustParameters                  _custparamenter;
    SalesTable                      SalesTableLoc;
    CustGroup                       CustGroup;
    CustTable                       CustTable;
    real                            margin, totalamount;

    InventTrans                     inventtrans;
    InventSum                       inventsum;
       int                             i=0;
    boolean                         flag =true;
    InventTransOrigin               InventTransOrigin;

    //  Sample Sales Order Calculation

        select SalesTableLoc
          where SalesTableLoc.SalesId == this.SalesId
            && SalesTableLoc.God_SampleType == "SAMPLE  ORDER";
            {
                if(SalesTableLoc)
                {
              //  select god_marginsamplerate
                //            from _custparameters;
                 if(!amount)
                     amount =  this.GOD_averageCostPriceUnitWMSChangeQty(this.ItemID);

                if(!amount)
                    {
                    amount = InventTableModule::find(this.ItemId,ModuleInventPurchSales::Invent).Price;

                    amount =                UnitOfMeasureConverter::convert(amount,
                                        UnitOfMeasure::unitOfMeasureIdBySymbol(this.SalesUnit),
                                        UnitOfMeasure::unitOfMeasureIdBySymbol(InventTableModule::find(this.ItemId,ModuleInventPurchSales::Invent).UnitId),NoYes::Yes,
                                         InventTable::itemProduct(this.ItemId),NoYes::No,NoYes::No);


                }
                margin = amount * CustParameters::find().god_marginsamplerate/100;
                totalamount = amount + margin;
                this.salesprice = round(totalamount,0.01);
                this.lineamount = this.calclineamount();
            }
        }


    // Subsidiary Sales CAlculation

    select SalesTableLoc
          where SalesTableLoc.SalesId == this.SalesId
            && SalesTableLoc.God_subsidiarySales == NoYes::Yes;
        {
            if(SalesTableLoc)
            {
                   while select  inventtrans order by inventtrans.DateFinancial desc
                    where inventtrans.ItemId == this.ItemId
                    && inventtrans.StatusReceipt == StatusReceipt::Purchased
                    join InventTransOrigin
                    where InventTransOrigin.RecId == inventtrans.InventTransOrigin
                    && InventTransOrigin.ReferenceCategory == InventTransType::Purch
                {
                        if(inventtrans)
                        {
                            i++;
                            if(i == 1)
                            {
                              amount=   round(inventTrans.CostValue() / inventtrans.Qty,0.01);

                                amount = UnitOfMeasureConverter::convert(amount,
                                        UnitOfMeasure::unitOfMeasureIdBySymbol(this.SalesUnit),
                                        UnitOfMeasure::unitOfMeasureIdBySymbol(InventTableModule::find(this.ItemId,ModuleInventPurchSales::Invent).UnitId),NoYes::Yes,
                                         InventTable::itemProduct(this.ItemId),NoYes::No);
                              break;
                            }
                        }
                }

                 if(!amount)
                     amount = this.GOD_averageCostPriceUnitWMSChangeQty(this.ItemID); //amount =  round(inventsum::find(salesline.ItemId,SalesLine.InventDimId).averageCostPrice(),0.01);

                 if(!amount)
                {
                    amount = InventTableModule::find(this.ItemId,ModuleInventPurchSales::Invent).Price;
                    amount =                UnitOfMeasureConverter::convert(amount,
                                        UnitOfMeasure::unitOfMeasureIdBySymbol(this.SalesUnit),
                                        UnitOfMeasure::unitOfMeasureIdBySymbol(InventTableModule::find(this.ItemId,ModuleInventPurchSales::Invent).UnitId),NoYes::Yes,
                                         InventTable::itemProduct(this.ItemId),NoYes::No);
                }
                margin = amount * CustGroup::find(this.CustGroup).GOD_MarkupPercentage/100;
                totalamount = amount + margin;
                this.salesprice = round(totalamount,0.01);
                //  salesquotationline.lineamount = salesquotationline.calclineamount();
                this.lineamount = this.calclineamount();
            }
        }

// End Code
        }

No comments:

Post a Comment