Код: Выделить всё
interface _kor_akt_otgruz 'Акт отгрузок с выбором' escclose;
show at(,,30,);
const
xlColorBlack = 0;
end;
table struct vivoddan
(
datotg:date,
nomer:string,
org:string,
summapol:double,
datopl:date,
datfactopl:date,
summoplach:double,
xxx:string
)
with index
(idx1=datotg+org+nomer);
Table struct tKatPodr
(
nrec:comp,
name:string[40]
)
with index
(idx1=nrec, idx2=name);
create view
var
date1:date
date2:date
dat1:date
dat2:date
as select *
from
sklorder
,katsopr
,basedoc
,katorg
,basefin
, tkatpodr _katpodr
, katpodr
, tkatpodr
WHERE
((
katpodr.nrec==_katpodr.nrec
and 0==SKLORDER.sp
and 1==SKLORDER.vidorder
and KATPODR.nrec==SKLORDER.cpodr
and dat1<<=SKLORDER.dord
and dat2>>=SKLORDER.dord
and SKLORDER.csopr==KATSOPR.nrec
and KATSOPR.corg==KATORG.nrec
and KATSOPR.CSTEPDOC==STEPDOC.nrec
and Stepdoc.cbasedoc==BASEDOC.nrec
and basedoc.nrec == basefin.cbasedoc
))
;
screen srcsclad show at(,,,3);
fields date1:,noprotect;
date2:,noprotect;
buttons
cmOk, default;
cmCancel;
<<
.@@@@@@@@@ .@@@@@@@@@
<. ОК .> <. Выход .>
>>
end;
panel psclad show at(,4,,);
browse brsclad;
table katpodr;
fields
if (isValid(#_katpodr), 'v', ''):[1],skip, {FONT = { Italic = IF( isvalid(tn_katpodr),True, false)}}, {FONT = { COLOR = IF( isvalid(tn_katpodr), 3, 0)}};
katpodr.name 'Наименование склада':[30],protect, {FONT = { COLOR = IF( isvalid(tn_katpodr), 3, 0)}};
end;
end;
handleevent
cmInit:
{
//getfirst katpodr;
date1:=date(1,month(cur_date),year(cur_date));
date2:=Cur_Date;
//getfirst katpodr;
}
cmMarkUnMark:
{ message ('cmMarkUnMark');
if not isValid(#_katpodr)
{
insert in tkatpodr set
nrec:=katpodr.nrec,
name:=katpodr.name;
if getnext katpodr = tsOk {}
}
else
{
delete from tkatpodr where ((katpodr.nrec==tkatpodr.nrec));
if getnext katpodr = tsOk {}
}
RescanPanel (#katpodr);
}
cmSelectAll: //message ('cmSelectAll');
{
PushPos(tnkatpodr);
_loop katpodr if not isValid(#_katpodr) insert in tkatpodr set tkatpodr.nrec:=katpodr.nrec,
name:=katpodr.name;
PopPos(tnkatpodr);
RescanPanel (#katpodr);
}
cmUnSelectAll:// message ('cmUnSelectAll');
{
PushPos(tnkatpodr);
// _loop katpodr if isValid(#_katpodr) delete from _katpodr where ((katpodr.nrec==nrec));
delete all from tkatpodr;
PopPos(tnkatpodr);
RescanPanel (#katpodr);
}
cmInvertAll: //message ('cmInvertAll');
{ // Обработка клавиши "Gray *"
PushPos(tnkatpodr);
_loop katpodr
if not isValid(#_katpodr)
{
insert in tkatpodr set nrec:=katpodr.nrec,
name:=katpodr.name;
}
else
{
delete from tkatpodr where ((katpodr.nrec==tkatpodr.nrec));
}
PopPos(tnkatpodr);
RescanPanel (#katpodr);
};
cmOk:
{
var
filename:string;
var itogs:double;
filename:=GetStringParameter('Files','OutputFilesDirectory',0)+'отгрузки'+DatetoStr(cur_Date,'DDMMYYYY')+'.xls';
xlCreateExcel(filename,true);
dat1:=date1;
dat2:=date2;
var summ:double;
if getfirst tkatpodr<>tsOk then
{
message('Препараты не выбраны');
exit;
}
StartNewVisual(vtRotateVisual, vfTimer+vfBreak+vfConfirm,'Идет расчет реальных отгрузок...', RecordsInTable(#sklorder));
var i:integer;
i:=3;
summ:=0;
delete all vivoddan;
xlSetCellStringValue('Акт расчетов между "Вектор-Медика"(Комитент) и ООО "Вектор-Фарм"(коммисионер) по договору-комиссии 2906/2012 на совершение сделок по продаже товара от 29.06.2012г. по состоянию на "__"______2012г.',1,1,1,1);
xlSetCellStringValue('№',2,1,2,1);
xlSetCellStringValue('Дата отгрузки',2,2,2,2);
xlSetCellStringValue('№ товарной накладной',2,3,2,3);
xlSetCellStringValue('Организация Покупатель',2,4,2,4);
xlSetCellStringValue('Сумма отгрузки с НДС',2,5,2,5);
xlSetCellStringValue('Дата оплаты по договору с Покупателем',2,6,2,6);
xlSetCellStringValue('Фактическая дата оплаты Покупателем',2,7,2,7);
xlSetCellStringValue('Фактическая сумма оплаты',2,8,2,8);
xlSetCellStringValue('Срок оплаты Комиссионера Комитенту',2,9,2,9);
xlSetCellStringValue('Фактическая сумма оплаты Комиссионера Комитенту',2,10,2,10);
xlSetCellStringValue('Дата фактической оплаты Комиссионера Комитенту',2,11,2,11);
xlSetCellStringValue('Остаток неоплаченной Комитенту задолжности',2,12,2,12);
xlSetCellStringValue('Сумма комиссионного вознаграждения Комиссионера',2,13,2,13);
xlSetCellStringValue('Сумма фактической оплаты комиссионного вознаграждения',2,14,2,14);
xlSetCellStringValue('Итого задолжность Комиссионера по договору комиссии',2,15,2,15);
//message('мы выбрали'+katpodr.name);
_loop sklorder
{
if ((getfirst fastfirstrow KATSOPR)=0) {
if (KATSOPR.vidsopr=201) {
if GetFirst vivoddan where((sklorder.dord==vivoddan.datotg and katorg.name==vivoddan.org and katsopr.nsopr==vivoddan.nomer))<>tsOk
then
{
insert in vivoddan set vivoddan.datotg:=sklorder.dord,
vivoddan.nomer:=katsopr.nsopr,
vivoddan.org:=katorg.name,
vivoddan.summapol:=katsopr.summa,
vivoddan.datopl:=Add_Day(basedoc.ddoc,BASEDOC.KOLDN),
vivoddan.summoplach:=0,
vivoddan.xxx:=basedoc.nodoc,
vivoddan.datfactopl:=basefin.ddoc;
_loop basefin update current vivoddan set
vivoddan.summoplach:=basefin.summa+vivoddan.summoplach,
vivoddan.datfactopl:=if(vivoddan.datfactopl>basefin.ddoc,basefin.ddoc,vivoddan.datfactopl);
}
else update current vivoddan set vivoddan.summapol:=vivoddan.summapol+katsopr.summa;
}
}
}
itogs:=0;
_loop vivoddan
{
xlSetCellFormula(i-1,i,1,i,1);
xlSetCellFormula(vivoddan.datotg,i,2,i,2);
xlSetCellFormula(vivoddan.nomer,i,3,i,3);
xlSetCellFormula(vivoddan.org,i,4,i,4);
xlSetCellFormula(DoubleToStr(vivoddan.summapol,'666666666,888'),i,5,i,5);
xlSetCellFormula(vivoddan.datopl,i,6,i,6);
xlSetCellFormula(if(vivoddan.datfactopl>0,vivoddan.datfactopl,''),i,7,i,7);
xlSetCellFormula(DoubleToStr(vivoddan.summoplach,'666666666,888'),i,8,i,8);
//xlSetCellFormula(vivoddan.xxx,i,8,i,8);
itogs:=vivoddan.summapol+itogs;
i:=i+1;
}
xlSetCellFormula('ИТОГО:',i,4,i,4);
xlSetCellFormula(DoubleToStr(itogs,'666666666,888'),i,5,i,5);
StopVisual('Опрерации завершена!',0);
//xlPageSetupOrientation({xlPortrait=1|xlLandscape=2});
xlSetActiveSheetByName('ОТГРУЗКА');
xlMergeCells(1,1,1,15);
xlSetColumnWidth(3,2,1,i,15);
xlSetColumnWidth(10,2,2,i,3);
xlSetColumnWidth(50,2,4,i,4);
xlSetColumnWidth(15,2,5,i,15);
xlWrapText(1,1,i,15);
xlFrameCells ( xlBorderL, xlThin, xlLineStyleNone, xlColorBlack, 2, 1, i, 15 );
xlFrameCells ( xlBorderR, xlThin, xlLineStyleNone, xlColorBlack, 2, 1, i, 15 );
xlFrameCells ( xlBorderT, xlThin, xlLineStyleNone, xlColorBlack, 2, 1, i, 15 );
xlFrameCells ( xlBorderB, xlThin, xlLineStyleNone, xlColorBlack, 2, 1, i, 15 );
xlFrameCells ( xlInsideV, xlThin, xlLineStyleNone, xlColorBlack, 2, 1, i, 15 );
xlFrameCells ( xlInsideH, xlThin, xlLineStyleNone, xlColorBlack, 2, 1, i, 15 );
xlFreeze(3,1);
XLSETBACKCOLOR (16370100, 2 , 1 , 2 , 15);
xlKillExcel;
}
end;
end.