Тема: SalesTotals
Показать сообщение отдельно
Старый 27.02.2006, 12:30   #2  
George Nordic is offline
George Nordic
Модератор
Аватар для George Nordic
Злыдни
 
4,479 / 1250 (50) ++++++++
Регистрация: 17.12.2003
Адрес: Moscow
Записей в блоге: 9
Лови!
X++:
//GNRD
static void TutorialSalesTotals(Args _args)
{
    SalesTable                      salesTable;
    SalesTable                      salesTableLocal;
    SalesTotals                     salesTotals;
    SalesPickingListJournalTable    SPLJT1;
    SalesPickingListJournalTable    SPLJT;
    int z;
    ;
    info("Пример рассчета SalesTotals по отборочной накладной.");

    while select salesId
        from  salesTableLocal
        group by SalesId
        join  * //SalesId
            from  SPLJT1
            where SPLJT1.SalesId    == salesTableLocal.SalesId

    {
        select firstfast firstonly salesTable
            where salesTable.SalesId == salesTableLocal.SalesId;

        salesTotals = salesTotals::construct(salesTable);


        info(strfmt("SalesId:%1\tCustAccount:%2\tSalesTotals:%3\tSalesBalance:%4\tSalesDiscount:%5\tSalesTax:%6\tCostValue:%7\tMargin:%8\tCurrencyCode:%9",
                salesTable.SalesId,
                salesTable.CustAccount,
                salesTotals.totalAmount(),
                salesTotals.totalBalance(),
                salesTotals.totalLineDisc(),
                salesTotals.totalTaxAmount(),
                salesTotals.totalCostValue(),
                salesTotals.totalContributionMargin(),
                salesTotals.currencyCode()));

        while select SPLJT
            where SPLJT.SalesId == salesTable.SalesId
        {
            salesTotals = salesTotals::construct(salesTable, 0, AccountOrder::Auto, SPLJT.ParmId, salesTable.SalesId, DocumentStatus::PickingList);
            info(strfmt("SalesId:%1\tPickingListJournalId:%2\tParmId:%3\tDate:%4\tSalesQty:%5\tSalesTotals:%6\tSalesBalance:%7\tSalesDiscount:%8\tSalesTax:%9\tCostValue:%10\tMargin:%11\tCurrencyCode:%12",
                    SalesTable.SalesId,
                    SPLJT.PickingListId,
                    SPLJT.ParmId,
                    SPLJT.PickingListDate,
                    salesTotals.totalQty(),
                    salesTotals.totalAmount(),
                    salesTotals.totalBalance(),
                    salesTotals.totalLineDisc(),
                    salesTotals.totalTaxAmount(),
                    salesTotals.totalCostValue(),
                    salesTotals.totalContributionMargin(),
                    salesTotals.currencyCode()));
        }
    }
}
Надеюсь, поможет разобраться в общих чертах..
Обрати внимание, что SalesTotals не просто считает, он еще роется по провокам, в частности, корректировка налогов.

Хм. Если ты там его не докурочил его окончательно

Георгий