По отчетам

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

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

Ответить
korvanakorvana
Местный житель
Сообщения: 429
Зарегистрирован: 24 сен 2008, 11:53

По отчетам

Сообщение korvanakorvana »

Вот у меня есть отчетная форма . Печатает счет фактуры.
Как сделать чтобы все цены выводились в евро и долларах .
какие функции использовать?



.LinkForm 'SCHETFACT_NEW_CAN_2_010907' Prototype is PRBDOC
.Group 'Продажа'
.NameInList 'Счет-фактура с спецификацией из накладных Канада v2 (01.08.07)'
!----------------------------------------
.create view vSpStep
from
SpStep (ReadOnly),
KatParty (ReadOnly)
where
((
PosNRec == SpStep.nRec
and SpStep.cParty == KatParty.nRec
));

.Create view SchKpp
from
BaseDoc (ReadOnly),
KatOrg OrgFrom (ReadOnly),
KatOrg OrgTo (ReadOnly),
KatOrg OrgPol (ReadOnly) ,
Dogovor AppDogovor (ReadOnly) ,
BaseFin (ReadOnly)
where
((
BaseDocNrec == BaseDoc.nRec
and BaseDoc.corg==OrgTo.nrec
and BaseDoc.cGrOtpr==OrgFrom.nrec
and BaseDoc.cGrPol==OrgPol.nrec
and BaseDoc.cDogovor==Dogovor.nrec
and BaseDoc.cAppDogovor==AppDogovor.nrec
and BaseDocNrec == BaseFin.cBaseDoc
));

.Create view SchNakl
as select * From
StepDoc
,KatSopr
,SpsOpr
,KatMC
,KatParty
,KatOtpEd
Where
((
BaseDocNrec == StepDoc.cBaseDoc
and StepDoc.NRec == KatSopr.cStepDoc
and KatSopr.Nrec == SpsOpr.cSopr
and SpsOpr.cMCUsl == KatMC.nRec
and SpsOpr.cMCUsl == KatUsl.nRec
and SpsOpr.cParty == KatParty.nRec
and SpsOpr.cOtpEd == KatOtpEd.nRec
));

.Create view SchKatSopr
var KatSoprcStepDoc: comp
as select * From KatSopr
Where
((
KatSoprcStepDoc == KatSopr.cStepDoc
));
!-------------------------------------------------------------------
.var
SrcCountry, // Новые графы СФ "Страна происхождения"
GTDNumber : string; // "Номер ГТД"
AddrDost : string; // «Адрес доставки»
gtsum : double;
gtitog: double;
.endvar
!-------------------------------------------------------------------
.var
zam_dir,
zam_buh : string;
BdnRec:comp
Akciz : double
CenaAk : double
SumAk : double
totSumAk : double
gt_kpp: string;
gt_korr_schet: string;
.endvar
.fields
nomer
ddoc
post
adpost+' Телефон '+telpost
innpost+if(SchKpp.OrgFrom.kpp<>'','/'+SchKpp.OrgFrom.kpp,'')
Grpost
gradpost
if (AddrDost<>'-', grpol+', '+ AddrDost, grpol+', '+ gradpol)
// grpol
// gradpol
if (SchKpp.BaseFin.Ddoc < SchKpp.Basedoc.Ddoc and SchKpp.BaseFin.NoDoc<>'', SchKpp.BaseFin.nodoc , ' ')
if (SchKpp.BaseFin.Ddoc < SchKpp.Basedoc.DDoc and SchKpp.BaseFin.NoDoc<>'', DateToStr(SchKpp.BaseFin.ddoc,'DD/MM/YYYYг.') , ' ')
pol
adpol+' Телефон '+telpol
innpol +' / '+ gt_kpp
if (SchKpp.Dogovor.nodoc<>'','Договор N '+ SchKpp.Dogovor.nodoc+' от '+ SchKpp.Dogovor.ddoc+'г.',’’)
if (SchKpp.AppDogovor.nodoc<>'', ' , cпецификация N '+ SchKpp.AppDogovor.nodoc+' от '+ SchKpp.AppDogovor.ddoc+'г.',’’)
pname
.endfields
.{
.{table 'SchKpp.BaseDoc'
.}
.begin
!--------------------------------------
#include SFBla2vp.frn
!--------------------------------------
BdnRec:= BaseDocNrec
RunInterface(‘_gt_addr_dost’, grpol , 1, BdnRec, 2, AddrDost);
gtsum := 0;
gtitog := 0;
gt_kpp := if(SchKpp.OrgTo.kpp<>'',SchKpp.OrgTo.kpp,'');
gt_kpp := if (grpol =’Филиал ЗАО НПК "Катрен" в г.Красногорск’, ‘504402001’, gt_kpp);
gt_kpp := if (grpol =’Аптечный склад ЗАО НПК "Катрен" г.Бердск’, ‘544532001’, gt_kpp);
end.
СЧЕТ-ФАКТУРА N ^ от ^

Продавец ^
Адрес ^
ИНН/КПП продавца ^
Грузоотправитель и его адрес ^, ^
Грузополучатель и его адрес ^
.{table 'SchKpp.BaseFin'
.}
К платежно-расчетному документу N ^ от ^
.{table 'SchKpp.BaseDoc'
.}
Покупатель ^
Адрес ^
ИНН/КПП покупателя ^
Основание ^^

^
.{CheckEnter ISEXCLASS
.}
.{CheckEnter ISGROUP
.}
Наименование товара (описание выполненных работ, оказанных услуг), имущественного права Единица измерения Коли-чество Цена (тариф) за единицу измерения Стоимость товаров (работ, услуг), имущественных прав, всего без налога В том числе акциз Нало-говая ставка Сумма налога Стоимость товаров (работ, услуг), имущественных прав, всего с учетом налога Страна происхождения Номер таможенной декларации
1 2 3 4 5 6 7 8 9 10 11
.{
.}
.fields
if (SchNakl.SpsOpr.PrMc=1, SchNakl.KatMC.Name, SchNakl.KatUsl.Name)
locase(SchNakl.KatOtpEd.Name)
doubletostr(round( SchNakl.SpsOpr.KolFact,2),'666`666`666.88')
doubletostr(round( SchNakl.SpsOpr.Price,2),'666`666`666.88')
If (SchNakl.KatSopr.vHodNal=1,( doubletostr(round(SchNakl.SpSopr.Price* SchNakl.SpSopr.KolFact- SchNakl.SpSopr.SumNDS,2),'666`666`666.88')), doubletostr(round(SchNakl.SpSopr.Price* SchNakl.SpSopr.KolFact,2),'666`666`666.88'))
doubletostr (round( SchNakl.spsopr.sumnds*100/ If (SchNakl.KatSopr.vHodNal=1, SchNakl.SpSopr.Price* SchNakl.SpSopr.KolFact- SchNakl.SpSopr.SumNDS, SchNakl.SpSopr.Price* SchNakl.SpSopr.KolFact),2), '666`666`666')
doubletostr(round(SchNakl.spsopr.sumnds,2),'666`666`666.88')
If (SchNakl.KatSopr.vHodNal=1,( doubletostr(round(SchNakl.SpSopr.Price* SchNakl.SpSopr.KolFact,2),'666`666`666.88')), doubletostr(round(SchNakl.SpSopr.Price* SchNakl.SpSopr.KolFact+ SchNakl.SpSopr.SumNDS,2),'666`666`666.88'))
.endfields
.{table ‘SchNakl.StepDoc’;
.{table ‘SchNakl.KatSopr’;
.{table ‘SchNakl.SpsOpr’;
.begin
var ExAttrFun : iExAttr;
var ExClassFun : iExClass;
var cAttr : comp;
var wTypAttr, wClassCode : word;
var sRet: string;

sRet := '';
if GetVIPInterface( ExClassFun ) {
wClassCode := ExClassFun.GetCode( coKatParty, 'Страна происхождения' );
sRet := ExClassFun.GetSegName( coKatParty, wClassCode, SchNakl.KatParty.nRec );
SrcCountry := if(sRet = '', 'Россия', sRet);
FreeVIPInterface( ExClassFun );
}

if GetVIPInterface( ExAttrFun ) {
if ExAttrFun.GetAttr( coKatParty, 'ГТД', cAttr, wTypAttr ) = 0 {
sRet := ExAttrFun.GetValue( coKatParty, cAttr, SchNakl.KatParty.nRec, wTypAttr );
GTDNumber := if(sRet = '', '-', sRet);
}
else GTDNumber := '-';
FreeVIPInterface( ExAttrFun );
}

gtsum := If (SchNakl.KatSopr.vHodNal=1, round(SchNakl.SpSopr.Price* SchNakl.SpSopr.KolFact,2), round(SchNakl.SpSopr.Price* SchNakl.SpSopr.KolFact+ SchNakl.SpSopr.SumNDS,2))
gtitog := gtitog + gtsum;

end.
.fields
SrcCountry
GTDNumber
.endfields
^ ^ ^ ^ ^ 0.00 ^ ^ ^ ^ ^
.}
.}
.}
.fields
doubletostr(round(n2 ,2),'666`666`666.88') //всего ндс
k1-p2 // всего сумма с ндс
k3 // сумма с ндс прописью
// Director
// Main_Buh
.endfields
Всего к оплате ^ &&'&&&'&&&'&&&.&&

Итого прописью: ^

* - препараты входящие в перечень жизненно необходимых и важнейших лекарственных средств(Распоряжение Правительства №376-р от 29.03.2007г.)

.begin
if (instr('Гутова', Director)>0)
zam_dir := ' по приказу N 32 от 01.08.2007г. Сметанина Т.М.';
else
zam_dir := ' по приказу N 34/1 от 24.11.2008г. Сметанина Т.М.';

if(instr('Вострикова', Main_Buh)>0)
zam_buh := ' по приказу N 32 от 01.08.2007г. Колмакова М.А.';
else
zam_buh := ' по приказу N 24 от 01.08.2007г Колмакова М.А.';

if (round(gtitog ,1) <> round(k1-p2 ,1)) message (‘Сумма по накладной не соответствует сумме по документу основанию ! ’ + string(round(gtitog ,2)) + ‘<>’ + string (round(k1-p2 ,2)));
end.
.fields
Director
zam_dir
Main_Buh
zam_buh
page_symb
.endfields
Руководитель предприятия: _________________________ ^
(^)

Главный бухгалтер: _________________________ ^
(^)
Примечания.
Первый экземпляр - покупателю, второй экземпляр - продавцу.
.if DELIMITER
----------------------------------------------------------------------------------------------------------------------------
.else
.end
^
.fields
nomer
ddoc
.endfields
Счет-факутра № ^от^

.}
.endform
korvanakorvana
Местный житель
Сообщения: 429
Зарегистрирован: 24 сен 2008, 11:53

Сообщение korvanakorvana »

народ подскажите кто знает :lol:
RAJAH
Местный житель
Сообщения: 932
Зарегистрирован: 18 фев 2008, 12:49

Сообщение RAJAH »

Странно... А почему счета-фактуры печатать из документов-оснований? Можно из KLVAL и CURSVAL пересчитывать на требуемую дату (klval.nrec /== cursval.kodvalut)
PViP
Местный житель
Сообщения: 254
Зарегистрирован: 08 июн 2007, 08:26
Откуда: Красноярск
Контактная информация:

Сообщение PViP »

korvanakorvana, либо ручками из каталога курсов выбирать курс и переводить цену в рублях в нужную цену
Ответить