Страница 1 из 1

Остаток платежа по договору

Добавлено: 17 дек 2008, 21:27
Pasynkova
Здравствуйте!
Подскажите пожалуйста как из договоров можно вычесть платежки???
Нужно вычислить остатки платежа по договору.
использую такие таблицы:

Код: Выделить всё

Dogovor.cBaseDoc==BaseDoc.nrec  and
BaseDoc.cStepdoc==Stepdoc.nrec    and
Stepdoc.cPlPor     == PlPor.nrec
В синтаксисе могла ошибиться (писала по памяти :)), но использую эти таблицы и не получается :eek:

Добавлено: 18 дек 2008, 07:05
Алексей
не получится.
попробуйте basedoc связать с basefin
а из basefin уже в платежку. только не помню на память напрямую, или через хоз.операцию делается.

Добавлено: 18 дек 2008, 10:53
galover
Pasynkova

Код: Выделить всё

private function GetSumPlatByDogovor(dogNRec : comp) : double;
{
    result := 0;
 
    _loop BaseFin where ((dogNRec == BaseFin.CDogovor))
    {
        if (getFirst fastfirstrow PlPor where ((BaseFin.CPlPor == PlPor.NRec)) = tsOk)
        {
           if (PlPor.DatOb <> Date(0,0,0))  // Была фактическая оплата
              result += PlPor.SumPlat 
        }
    }
}

Добавлено: 18 дек 2008, 11:10
edward_K
я бы в этой функции сумму брал из basefin поскольку в общем случае платеж может пройти по нескольким до/договорам. При этом вы получите задваивание суммы.

Добавлено: 18 дек 2008, 11:16
Алексей
edward_K +1 стопудов получат! и потом долго будут искать "почему расходится" :)

Добавлено: 18 дек 2008, 13:54
galover
edward_K
да ошибся, тогда:

Код: Выделить всё

private function GetSumPlatByDogovor(dogNRec : comp) : double;
{
    result := 0;
 
    _loop BaseFin where ((dogNRec == BaseFin.CDogovor))
    {
        if (BaseFin.CPlPor->DatOb <> Date(0,0,0))  // Была фактическая оплата
              result += BaseFin.Summa;
    }
} 

Добавлено: 30 дек 2008, 10:15
Pasynkova
Нужно еще брать платежи по приложениям к договору, для этого по BaseFin нужно использовать ключь CDOGOVOR; CAPPDOGOVOR; CCALPLAN

Код: Выделить всё

 _loop BaseFin where ((  
                           Dogovor.cdogovor     == BaseFin.CDogovor        and
                           Dogovor.NRec           == BaseFin.CAppDogovor  and
                           CalPlan.nrec              == BaseFin.CCalPlan
                         )) 
Складывается впечатление что он вообще BaseFin не заходит... :-(

Добавлено: 31 дек 2008, 10:31
edward_K
то ято вы написаои приемлмсо только для соглашений. Да и план может стоять товарный или финансовый.