#Include "inkey.ch"
Function uTransA()
Local aSet, aSetKey, bScr, aLastDate, FileNtx
Local xTop:=1,W:=21, WZ1:=3, W1:=7, WZ2:=1, W2:=1, WZ3:=3, W3:=0,zTop //
Private _numrec:=0, yTop, SortSeek, SortSeek1, mSortSeek, TekInit:=0,_ScrInit,_ScrPost
Private aTop,aBot,aLeft,aColHead,aRef,aPict,aBlockCols,aCurProc,aaDel,aHeads,aColors,aColors1,aValid,aWhen,aPost, aSortSeek, aFindMacro,anRowAct,aHotKey,aType,aGetBlock
Private bTop,bBot,bLeft,bColHead,bRef,bPict,bBlockCols,bCurProc,bDel, bHeads,bColors,bColors1,bValid,bWhen,bPost,bScrInit,bnRowAct,bScrPost
Private cTop, cBot, cColHead, cBlockCols, cCurProc, cDel, cInsWork, cFindMacro
Private gTop, gLeft, gRef, gHeads, gPost, gScrInit
Private hTop, hBot, hColHead,hRef, hBlockCols, hFindMacro
If .T. //
// AltD()
W3:=W-WZ1-W1-WZ2-W2-WZ3-1
// 1 окно
// aTop:=4
// aBot:=11
aLeft:=10
aTop:=xTop+WZ1
aBot:=aTop+W1
// 2 окно
yTop:=aBot+WZ2+W2
zTop:=yTop+1
// bTop:=17
// bBot:=21
bTop:=zTop+Wz3
bBot:=bTop+W3
bLeft:=17
//
cTop:=3
cBot:=21
gTop := 5
gLeft :=10
hTop:=3
hBot:=21
//
bScr:=SaveScreen()
aSet:=SAVESET()
aSetKey:=SaveSetKey()
// SetKey(K_F4,{||NewRec()})
SetKey(K_CTRL_F5,{||aStatus()})
SetLastKey(0)
//AltD()
//задание параметров первой прямоугольной области
DispBox(xTop,0,bBot+1,79,( Chr( 201 ) + Chr( 205 ) + Chr( 187 ) + Chr( 186 ) + Chr( 188 ) + Chr( 205 ) + Chr( 200 ) + Chr( 186 )+' ' ) ,"W+/B")
//задание параметров второй прямоугольной области
DispBox(zTop,0,bBot+1,79,( Chr( 204 ) + Chr( 205 ) + Chr( 185 ) + Chr( 186 ) + Chr( 188 ) + Chr( 205 ) + Chr( 200 ) + Chr( 186 )+' ' ) ,"W+/B")
SayScreen( "════════╦══════╦════════════════════╦══════════════╦══════════╦═════════╦═════",XTop,1,'W+/B')
SayScreen( " Дата ║Номер ║ Перевозчик ║ Водитель ║Сумма общ ║ Вес ║Расст",XTop+1,1,'W+/B')
SayScreen("╠════════╩══════╩════════════════════╩══════════════╩══════════╩═════════╩═════╣",XTop+2,0,'W+/B')
SayScreen("╟──────────────────────────────────────────────────────────────────────────────╢",aBot+1,0,'W+/B')
// SayScreen( X ,aBot+2,1,'W+/B')
SayScreen( "════════╦══════╦════════════════════╦═════════════════╦═════════════════╦═════",zTop,1,'W+/B')
SayScreen( " Дата ║Номер ║ Клиент ║ Менеджер ║ Город ║Расст",zTop+1,1,'W+/B')
SayScreen("╠════════╩══════╩════════════════════╩═════════════════╩═════════════════╩═════╣",zTop+2,0,'W+/B')
SayScreen( 'Учет автотранспотра',xTop,2,'G/B')
SayScreen( 'Отвоз/привоз/маршрут',zTop,2,'G/B')
SayScreen('Сумма отв',aBot+WZ2,2,'G/B')
SayScreen('Сумма прив',aBot+WZ2,12,'G/B')
SayScreen('Доп расход',aBot+WZ2,23,'G/B')
SayScreen('Марка маш.Г/П',aBot+WZ2,34,'G/B')
SayScreen('Телефон',aBot+WZ2,50,'G/B')
SayScreen('Дата от.',aBot+WZ2,62,'G/B')
SayScreen('Дата пр.',aBot+WZ2,71,'G/B')
DBPush()
Netuse('Docs', LoadPath() + 'Sclad\mDoc.dbf')
Docs->(OrdSetFocus('mDoc_D'))
Netuse('Trans', LoadPath() + 'Sclad\uTrans.dbf')
Trans->(OrdSetFocus('uTrans_D'))
NetUse('Transm', LoadPath() + 'Sclad\uTransm.dbf')
TransM->(OrdSetFocus('LINK'))
NetUse('Part1', LoadPath() + 'Partner.dbf')
Part1->(OrdSetFocus('CODE'))
Trans->(F_SETRELATION("Part1","UPPER(Code)"))
NetUse('Part2', LoadPath() + 'Partner.dbf')
FileNtx:=MkTempIndex({'Upper(Code)','Upper(ShortName)','Upper(Code)','Upper(ShortName)'},{'','','!Empty(UMNGZ)','!Empty(UMNGZ)'},{'Code','Name','MngZ1','MNGZ2'})
TransM->(F_SETRELATION("Part2","UPPER(AgentCode)"))
NetUse('Prim1', LoadPath() + 'Sclad\mPrim.dbf')
Prim1->(OrdSetFocus('Prim_Mng'))
Part2->(F_SETRELATION("Prim1","UPPER(umngz)"))
NetUse('Prim2', LoadPath() + 'Sclad\mPrim.dbf')
Prim2->(OrdSetFocus('MPrim'))
NetUse('Gorod', LoadPath() + 'uGorod.dbf')
Gorod->(OrdSetFocus('Gorod'))
NetUse('GorodM', LoadPath() + 'uGorodM.dbf')
GorodM->(OrdSetFocus('Gorod'))
// Справочник клиентов
_ScrInit:={||Part2->(OrdSetFocus('MNGZ1')),2}
_ScrPost:={|| Part2->(OrdSetFocus('CODE')),2}
SortSeek:={;
{"- по коду ","- по коду ", 'Code','UPPER(aIn[1])',,,,'CODE'},;
{"- по наименованию","- по наименованию", 'ShortName','UPPER(aIn[1])',,,,'Name'}}
SortSeek1:={;
{"- по коду ","- по коду ", 'Code','UPPER(aIn[1])',,,,'MNGZ1'},;
{"- по наименованию","- по наименованию", 'ShortName','UPPER(aIn[1])',,,,'MNGZ2'}}
Part2->( MAKEREFER("SP1","Справочник клиентов",1,{" Шифр ","Наименование"},;
{2,8,15}, "n/w,w+/n",{"Code",'Shortname'},{'aIn[3]','aIn[4]'},'UPPER(aIn[3])',;
{{||Field->Code},{||Field->ShortNAME}};
,SortSeek,,,,,,,,;
,,,,,,,,'cFind$UPPER(ShortName)'))
Part2->( MAKEREFER("SP2","Справочник клиентов",1,{" Шифр ","Наименование","Менеджер"},;
{2,8,15}, "n/w,w+/n",{"Code",'Shortname'},{'aIn[1]','aIn[2]'},'UPPER(aIn[1])',;
{{||Field->Code},{||Field->ShortNAME},{||Left(Prim1->Name,20)}};
,SortSeek1,,,,,,,,;
,,,,,,,,'cFind$UPPER(ShortName)'))
Prim2->( MAKEREFER("SM2","Справочник менеджеров",3,{"Наименование"},;
{1,17,11}, "n/w,w+/n",{"Name"},{'aIn[3]'},'UPPER(aIn[3])',;
{{||Field->Name}};
,,,,,,,,,;
,,,,,,,,'cFind$UPPER(Name)'))
Gorod->( MAKEREFER("Gor","Справочник городов",1,{"Город"},;
{2,8,15}, "n/w,w+/n",{"Name"},{'aIn[1]'},'UPPER(aIn[1])',;
{{||Field->NAME}};
,,{{'Город............','Name'}},,,,,,,;
,,,,,,,,'cFind$UPPER(Name)'))
Gorod->( MAKEREFER("Gor1","Справочник городов",1,{"Город"},;
{2,8,15}, "n/w,w+/n",{"Name"},{'aIn[2]'},'UPPER(aIn[2])',;
{{||Field->NAME}};
,,{{'Город............','Name'}},,,,,,,;
,,,,,,,,'cFind$UPPER(Name)'))
// Настройки 1 initlist'a
aColHead:=78
//Заголовки колонок реестра
aBlockCols:={;
{{||DtoC(Field->Date)},0},;
{{||Field->NumDoc},9},;
{{||Left(Field->Name,20)},16},;
{{||Left(Field->Voditel,14)},37},;
{{||Str(Field->Sum_Ot+Field->Sum_Pr+Field->Sum_Dop,10,2)},52},;
{{||Str(Field->Ves_Ot/1000,4,1)+'/'+Str(Field->Ves_Pr/1000,4,1)},63},;
{{||Str(Field->KM,5,0)},73};
}
// поля ввода
aHeads:={;
{"Дата........................: ","Date"},;
{"Номер.......................: ","NumDOc"},;
{"Шифр перевозчика............: ","Code"},;
{"Перевозчик..................: ","Name"},;
{"Водитель....................: ","Voditel"},;
{"Направление.................: ","Napr"},;
{"Сумма отвоза................: ","Sum_Ot"},;
{"Сумма привоза...............: ","Sum_Pr"},;
{"Сумма прочее................: ","Sum_Dop"},;
{"Масса отвоза кг.............: ","Ves_Ot"},;
{"Масса привоза кг............: ","Ves_Pr"},;
{"Общее расстояние............: ","KM"},;
{"Марка А/М, грузоподъемность.: ","AM_GP"},;
{"Телефон.....................: ","Tel"};
}
//Запрещение удаления в таблице
aaDel:={||.F.}
aWhen:={{||aBefore1()},{||.f.},,{||.f.},,}
aValid:={,,,,,,,,,,,,,{||uCheckIn()}}
aPict:={,,,'@S25','@S16',,'999999999999.99','999999999999.99','999999999999.99','99999','99999','99999','XXXXXXXXXXXXXXX','XXXXXXXXXXX'}
aPost:={||aSaveRec()}
aFindMacro:='cFind$UPPER(Name)'
aSortSeek:={;
{"- по дате ","- по Дате ", 'Date','UPPER(UPPER(DTOS(aIn[1])))',,,,'uTrans_D'},;
{"- по номеру ","- по номеру ", 'NumDoc','UPPER(aIn[1])',,,,'uTrans_N'}}
// aHotKey:={;
// {;
// {'Ctrl+F5 - Статус',K_CTRL_F5,{||aStatus()},1},;
// {'Ctrl+F7 - Таблица расстояний',K_CTRL_F7,{||uRasst()},1};
// },;
// {},;
// {};
// }
aColors :={||Iif( Field->Status = ' ' ,"W+/B",Iif(Field->Status = '1', 'GR+/B',Iif(Field->Status = '2','G+/B','BG+/B')))}
aColors1:={||Iif( Field->Status = ' ' ,"N/W",Iif(Field->Status = '1', 'GR/W',Iif(Field->Status = '2','G/W','B/W')))}
aType:={{.F.,'В оба конца '},{.T.,'В один нонец'}}
aGetBlock:={,,,,,{|x|ROTATEBLOCK(x,aType,"aIn[6]")}}
aRef:={,,'SP1',,,{|x|ROTATEANDREADER(x,aType)}}
// Настройки 2 initlist'a
bColHead:=78
// dCurProc:={||2}
bRef:={'SP2',,'SM2'}
//Заголовки колонок реестра
bBlockCols:={;
{{||DtoC(Field->Date)},0},;
{{||Field->NumDoc},9},;
{{||Left(Field->AgentName,20)},16},;
{{||Left(Field->Prim,17)},37},;
{{||Left(Part2->uGorod,17)},55},;
{{||Iif(Field->KM=0,' ',Str(Field->KM,5))},73};
}
//Описание полей ввода
bHeads:={;
{"Шифр.........: ","AgentCode"},;
{"Организация..: ","AgentName"},;
{"Менеджер.....: ","Prim"},;
{"Вес..........: ","Ves"}}
bWhen:={{||bBefore(1)},{||.F.},{||bBefore(3)},{||bBefore(4)}}
bValid:={{||bValid(1)},,,}
bPost:={||bSaveRec()}
bScrPost:={||uCalcRasst()}
bDel:={||bCheckDel()}
bPict:={,,'@S25'}
bColors :={||Iif( Field->Vid = '2' ,'BG+/B',Iif( Empty(Field->NumDoc) ,'GR+/B','W+/B'))}
bColors1:={||Iif( Field->Vid = '2' ,'B/W',Iif( Empty(Field->NumDoc) ,'GR/W','N/W') )}
bHotKey:={;
{;
{'Ctrl+F7 - Таблица расстояний',K_CTRL_F7,{||uRasst()},1},;
{'Ctrl+'+Chr(24)+ ' - вверх',K_CTRL_UP,{||uIndUp()},1},;
{'Ctrl+'+Chr(25)+ ' - вниз',K_CTRL_DOWN,{||uIndDown()},1};
},;
{},;
{}}
// Настройки Отвоз initlist'a
cColHead:=55
//Заголовки колонок реестра
cBlockCols:={;
{{||If(AScan(cInsWork,Docs->(RecNo()))>0, Chr(251),' ')},0},;
{{||DtoC(Field->Date)},2},;
{{||Field->NumDoc},11},;
{{||Left(Field->AgentName,20)},18},;
{{||Left(Field->Prim,16)},39};
}
cDel:={||.F.}
cFindMacro:='cFind$UPPER(AgentName)'
// Настройки Расстояния initlist'a
hColHead:=57
//Заголовки колонок реестра
hBlockCols:={;
{{||Field->Name},0},;
{{||Field->Gorod},26},;
{{||Str(Field->KM,5)},52};
}
hHeads:={;
{"Город........: ","Name"},;
{"Направление..: ","Gorod"},;
{"Расстояние...: ","KM"};
}
hWhen:={{||.F.}}
hRef:={,'Gor1'}
// hDel:={||.F.}
hFindMacro:='cFind$UPPER(Name)'
//
gScrInit:={||DispBox(gTop,gLeft,gTop+3,gLeft+47,'╔═╗║╝═╚║ ',"N/BG") ,;
SayScreen('[Не указан город]',gTop,gLeft+ 17,'GR+/BG'),;
SayScreen('Клиент......:',gTop+1,gLeft+ 2,'N/BG'),;
SayScreen(Part2->Code,gTop+1,gLeft+ 15,'B/W'),;
SayScreen(Part2->ShortName,gTop+1,gLeft+ 22,'B/BG'),;
SayScreen('Город.......:',gTop+2,gLeft+ 2,'N/BG'),;
1}
gRef:={'Gor'}
gPost:={||uPostGor()}
gHeads:={;
{{gTop+2,gLeft+ 15},"uGorod"};
}
//
Do While INIT1(.T.).And.INIT2(.T.)
EndDo
RstTempIndex(FileNtx, 'Part2')
Part2->(Ordsetfocus('MngZ_Name'))
Prim1->(DbCloseArea())
Part2->(DbCloseArea())
Part1->(DbCloseArea())
Trans->(DbCloseArea())
Transm->(DbCloseArea())
DBPOP()
RestSetKey(aSetKey)
RESTSET(aSet)
RestScreen(,,,,bScr)
EndIf
Return .T.
Function INIT1(lFlag)
//altd()
//Заголовки над полями
aCurProc:={||MOVE1(lFlag,@anRowAct,m->_numrec,RecNo())}
//Комментарии
If lFlag
TekInit:=1
SayStr(1)// строка подсказки
EndIf
// вызов функции
// AltD()
Trans->(InitList(aTop,aBot,aColHead,aBlockCols,aCurProc,aHeads,m->aRef,aPict,aWhen,aValid,,aaDel,,aSortSeek,,aPost,,aGetBlock,aColors,aColors1,,,aFindMacro,,,,,,anrowact))//,aHotKey))
Iif(lFlag, TekInit:=0,)
Return !(LastKey()=27.Or.LastKey()=-9)
//Второй инитлист
Function INIT2(lFlag)
Local aSetKey
// AltD()
bCurProc:={||MOVE2(lFlag,@bnRowAct)}
If lFlag
TekInit:=2
SayStr(2)
aSetKey:=SaveSetKey()
SetKey(K_F4,{||NewRec()})
// SetKey(K_CTRL_UP,{||uIndUp()})
// SetKey(K_CTRL_DOWN,{||uIndDown()})
// SetKey(K_CTRL_F7,{||uRasst()})
EndIf
TransM->(SetScope('STR(uLink,17,0)',Str(Trans->ID,17,0)))
TransM->(DbGoTop())
// AltD()
TransM->(InitList(bTop,bBot,bColHead,bBlockCols,bCurProc,bHeads,m->bRef,bPict,bWhen,bVAlid,,bDel,,,,bPost,,,bColors,bColors1,,bScrPost,,,,,,,,m->bHotKey))
If lFlag
TekInit:=0
RestSetKey(aSetKey)
EndIf
Return !(LastKey()=27.Or.LastKey()=-9)
Function MOVE1(_xlActiv,hnRowAct,xRec,xRec1)
Local m1end, m1Ar
m1End:=2
// AltD()
m1Ar:=Trans->( QScroll() )
hnRowAct:=m1Ar[6]
If LastKey()=9
// Trans->(QOFF())
SetLastKey(0)
m1End:=0
Else
If LastKey()=-9
If uCheckEx()
m1End:=0
Else
m1End:=2
EndIf
Else
If xRec ==NIL.Or.xRec<>xRec1
Init2(.F.)
m->_numrec:=xRec1
EndIf
If _xlActiv
m1End:=2
SayScreen( Str(Trans->Sum_Ot,10,2), yTop,1,'N/W')
SayScreen( Str(Trans->Sum_Pr,10,2), yTop,12,'N/W')
SayScreen( Str(Trans->Sum_Dop,10,2), yTop,23,'N/W')
SayScreen( Trans->AM_GP, yTop,34,'N/W')
If Empty(Trans->Tel)
SayScreen( Right(' '+ AllTrim(SubStr(Part1->Telefon1,1,6))+' '+ AllTrim(SubStr(Part1->Telefon1,7,7)),11), yTop,50,'B/W')
Else
SayScreen(Trans->Tel,yTop,50,'N/W')
EndIf
SayScreen( DtoC(Trans->Date_Ot), yTop,62,'N/W')
SayScreen( DtoC(Trans->Date_pr), yTop,71,'N/W')
Else
QOff()
m1End:=0
EndIf
EndIf
EndIf
Function MOVE2(_lActiv,rnRowAct)
Local m2End,m2Ar
// AltD()
m2Ar:=TransM->(QScroll())
rnRowAct:=m2Ar[6]
If LastKey()=9.Or.!_lActiv
TransM->(QOFF())
SetLastKey(0)
m2End:=0
Else
//Altd()
If LastKey()=-9
If uCheckEx()
m2End:=0
Else
m2End:=2
EndIf
Else
m2End:=2
EndIf
EndIf
Return m2End
|