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

Программирование на Атлантисе (VIP, FCOM, ARD), FastReport

Модераторы: m0p3e, edward_K, Модераторы

Ответить
Pasynkova
Посетитель
Сообщения: 40
Зарегистрирован: 29 окт 2008, 13:00

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

Сообщение Pasynkova »

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

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

Dogovor.cBaseDoc==BaseDoc.nrec  and
BaseDoc.cStepdoc==Stepdoc.nrec    and
Stepdoc.cPlPor     == PlPor.nrec
В синтаксисе могла ошибиться (писала по памяти :)), но использую эти таблицы и не получается :eek:
Алексей
Местный житель
Сообщения: 2896
Зарегистрирован: 24 июн 2005, 12:12
Откуда: Иркутская область

Сообщение Алексей »

не получится.
попробуйте basedoc связать с basefin
а из basefin уже в платежку. только не помню на память напрямую, или через хоз.операцию делается.
galover
Местный житель
Сообщения: 794
Зарегистрирован: 16 ноя 2007, 13:52

Сообщение 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 
        }
    }
}
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Сообщение edward_K »

я бы в этой функции сумму брал из basefin поскольку в общем случае платеж может пройти по нескольким до/договорам. При этом вы получите задваивание суммы.
Алексей
Местный житель
Сообщения: 2896
Зарегистрирован: 24 июн 2005, 12:12
Откуда: Иркутская область

Сообщение Алексей »

edward_K +1 стопудов получат! и потом долго будут искать "почему расходится" :)
galover
Местный житель
Сообщения: 794
Зарегистрирован: 16 ноя 2007, 13:52

Сообщение 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;
    }
} 
Pasynkova
Посетитель
Сообщения: 40
Зарегистрирован: 29 окт 2008, 13:00

Сообщение Pasynkova »

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

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

 _loop BaseFin where ((  
                           Dogovor.cdogovor     == BaseFin.CDogovor        and
                           Dogovor.NRec           == BaseFin.CAppDogovor  and
                           CalPlan.nrec              == BaseFin.CCalPlan
                         )) 
Складывается впечатление что он вообще BaseFin не заходит... :-(
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Сообщение edward_K »

то ято вы написаои приемлмсо только для соглашений. Да и план может стоять товарный или финансовый.
Ответить