//Function u2Init()
Local cInsDB1, cInsDB2, cInsIdx1, cInsIdx2, aInsStru, I, N, K, K1, J:=0 , CB:=.T.//,BB:={}
Local aSet, aSetKey//, aScr:=WSelect()
Local bScr, VK := Chr(10)+Chr(13)
Local aKval, aEd, aFas, Ch:=.T.,A:={}
Private aRef, aSortSeek1,cGr,cName,cHeads,cWhen,cGrup:='00001',cValid, _numrec:=0, aKeyFirst:=.F., DocNo:='Новый ',aKols:={},aLinks:={}
// AltD()
If AllTrim(pCodeOper)='03' //отпуск на фасцех
bScr:=SaveScreen()
aSet:=SAVESET()
aSetKey:=SaveSetKey()
// WSelect(0)
SetLastKey(0)
NetUse('MLabel1',LoadPath() +'\Sclad\Mlabel.dbf')
MLabel1->(ORDSETFOCUS('MLabel_S'))
DBPUSH('MKART','MKART')
DBPUSH('MGrup','Mgrup')
DBPUSH('Mlabel','MLabel')
DBPUSH('Spr_Part','TAG_NUM')
DBPUSH('Mdocm','mdocm',,{'UPPER(Sclad+Vid+Type+CodeDoc+NumDoc+DTOS(Date))',Upper(MDoc->Sclad+MDoc->Vid+MDoc->Type+MDoc->CodeDoc+MDoc->NumDoc+DtoS(MDoc->Date))})
// NetUse('MDOC01',LoadPath() +'\Sclad\MDOC.dbf')
// MDOC01->(ORDSETFOCUS('MDOC'))
NetUse('MDOCM1',LoadPath() +'\Sclad\MDOCM.dbf')
MDOCM1->(ORDSETFOCUS('MDOCM')) // UPPER(Sclad+Vid+Type+CodeDoc+NumDoc+DTOS(Date))
MDOCM1->(SetScope('UPPER(Sclad+Vid+Type+CodeDoc+NumDoc)', Upper('00000211001'+MDOC->NumDoc1)))
MDOCM1->(DbGoTop())
//Заполняем таблицу
//AltD()
// создаем временные таблицу
cInsDB1 := TempFile(m->GlobalTmpPath,"DBF")
cInsDB2 := TempFile(m->GlobalTmpPath,"DBF")
cInsIdx1:=Left(cInsDB1,Len(cInsDB1)-3)+'cdx'
cInsIdx2:=Left(cInsDB2,Len(cInsDB2)-3)+'cdx'
aInsStru := {{'GRUP','C',5,0},{'NNUM','C',13,0},{'PARTIA','C',5,0},{'NAME','C',25,0},{'KOL','N',19,4},{'KOL1','N',19,4},{'CENA','N',19,4},{'CENA1','N',19,2},{"LINK","C",23,0},{"STAT","N",1,0},{"NUMSTR","N",5,0},{"SERT","C",25,0},{"GTD","C",30,0},{"COUNTRY","C",25,0}}
// Stat = 0 - удалена, 1 - кол. уменьшилось, 2 - без изменений, 3 - кол. увеличелось, 4 - новая запись
DbCreate(cInsDB1,aInsStru)
NetUse('TMC1',cInsDB1)
TMC1->( ORDCREATE(cInsIdx1,'TMCNUM','NUMSTR',{||NUMSTR}) )
TMC1->( ORDCREATE(cInsIdx1,'TMC','UPPER(GRUP+NNUM+PARTIA)',{||Upper(GRUP+NNUM+PARTIA)}) )
DbCreate(cInsDB2,aInsStru)
NetUse('TMC2',cInsDB2)
TMC2->( ORDCREATE(cInsIdx2,'TMC_LINK','Upper(LINK)',{||Upper(Link)}) )
TMC2->( ORDCREATE(cInsIdx2,'TMC','UPPER(GRUP+NNUM+PARTIA)',{||Upper(GRUP+NNUM+PARTIA)}) )
TMC2->(OrdSetFocus('TMC_LINK'))
N = GetKolMat()
For I = 1 To N
AAdd(aLinks,Upper(GetMat(I,105, 5)+GetMat(I,110, 13)+GetMat(I,550,5)))
AAdd(aKols,GetMat(I,61, 15,.t.))
TMC1->(ADDREC())
TMC1->GRUP:= GetMat(I,105, 5)
TMC1->NNUM:= GetMat(I,110, 13)
TMC1->PARTIA:= GetMat(I,550,5)
TMC1->NAME:= GetMat(I,1, 35)
TMC1->KOL:= GetMat(I,61, 15,.t.)
TMC1->CENA:= GetMat(I,669, 19,.t.)
TMC1->LINK:=Upper(GetMat(I,105, 5)+GetMat(I,110, 13)+GetMat(I,550,5))
TMC1->Stat:=4
TMC1->NUMSTR := I
Iif(SPR_PART->(DbSeek(Upper(GetMat(I,105, 18)+GetMat(I,550,5)))),TMC1->Sert:=SPR_Part->SERTIFICAT,)
Iif(SPR_PART->(DbSeek(Upper(GetMat(I,105, 18)+GetMat(I,550,5)))),TMC1->GTD:=SPR_Part->GTD,)
Iif(SPR_PART->(DbSeek(Upper(GetMat(I,105, 18)+GetMat(I,550,5)))),TMC1->COUNTRY:=SPR_Part->COUNTRY,)
TMC1->( F_DBUNLOCK() )
If GetMat(I,105, 5)='00030'
TMC2->(ADDREC())
TMC2->GRUP:= TMC1->GRUP
TMC2->NNUM:= TMC1->NNUM
TMC2->PARTIA:= TMC1->PARTIA
TMC2->NAME:= TMC1->NAME
TMC2->KOL:= TMC1->KOL
TMC2->CENA:= TMC1->CENA
Iif(SPR_PART->(DbSeek(Upper(GetMat(I,105, 18)+GetMat(I,550,5)))),TMC2->CENA1:=SPR_Part->OCENA2,)
TMC2->LINK:=TMC1->LINK
TMC2->Stat:=4
TMC2->Sert:=TMC1->SERT
TMC2->GTD:=TMC1->GTD
TMC2->COUNTRY:=TMC1->COUNTRY
TMC2->( F_DBUNLOCK() )
EndIf
Next
Mdocm1->(OrdSetFocus('MDocM_K'))
TMC1->(DbGoTop())
uGlobVars[99]:= cInsDB1 + ',' + cInsDB2 // передача файлов на запись через глобальную переменную
// initlist's
//задание параметров первой прямоугольной области
DispBox(1,0,13,79,( Chr( 201 ) + Chr( 205 ) + Chr( 187 ) + Chr( 186 ) + Chr( 188 ) + Chr( 205 ) + Chr( 200 ) + Chr( 186 )+' ' ) ,"W+/B")
//задание параметров второй прямоугольной области
DispBox(13,0,23,79,( Chr( 204 ) + Chr( 205 ) + Chr( 185 ) + Chr( 186 ) + Chr( 188 ) + Chr( 205 ) + Chr( 200 ) + Chr( 186 )+' ' ) ,"W+/B")
// SayScreen( "==================================T======T======T==============T============",1,1,'W+/B')
SayScreen( " Наименование Квал Фас Кол- Цена ",2,1,'W+/B')
// SayScreen("│==================================│======│======│==============│==============│",3,0,'W+/B')
SayScreen( "Группа Н/Номер Партия ",12,1,'W+/B')
// SayScreen("│------------------------------------------------------------------------------│",11,0,'W+/B')
//SayScreen("│==============================================================================│",13,0,'W+/B')
// SayScreen("│==================================T======T======T==============T==============│",13,0,'W+/B')
SayScreen( " Наименование Квал Фас Кол Цена ",14,1,'W+/B')
// SayScreen("│==================================│======│======│==============│==============│",15,0,'W+/B')
// SayScreen("│------------------------------------------------------------------------------│",21,0,'W+/B')
SayScreen( "Группа Н/Номер Партия ",22,1,'W+/B')
SayScreen( '[Расх. документ ' + AllTrim(MDOC->Numdoc) + ' '+ DtoC(MDOC->Date)+']',1,3,'GR+/B')
SayScreen( '[Прих. документ ' + AllTrim(DocNo) + ' '+ DtoC(MDOC->Date1)+']',13,3,'GR+/B')
//Справочники
cHeads:={;
{'Группа.................... ','Grup'},;
{'Н/номер................... ','NNum'},;
{'Наименование.............. ','Name'},;
{'Единица измерения......... ','ED'},;
{'Квалиф.................... ','Marka'},;
{'Сорт...................... ','Sort'},;
{'Наимен.................... ','Profil'},;
{'Вес....................... ','Razmer'};
}
cWhen:={{||aIn[1]:=cGrup,.F.}}
cValid:={,{||sValid()}}
aSortSeek1:={;
{"- по номеру ",{"Группа ","Шифр "}, {'GRUP','NNUM'},'UPPER(" "+aIn[1]+aIn[2])',,,,'Mlabel_S'},;
{"- по наименованию",{"Группа ","Наименование "}, {'Grup','LEFT(Name,15)'},'UPPER(" "+aIn[1]+aIn[2])',,,,'MLab_St'};
}
mLabel1->( MAKEREFER("sl","Номенклатурный справочник",1,{"Гр.","Шифр ","Наименование ","Ед.","Квал.","Фас.","Доп."},{1,1,15},;
"n/w,w+/n",{"NNUM"},{"aIn[2]"},'UPPER(" "+aIn[1]+aIn[2])',{{||Field->GRUP},{||Field->NNUM},{||Left(Field->NAME,25)},{||Left(Field->ED,5) },{||Left(Field->Marka,6)},{||Left(Field->RAZMER,6)},{||Left(Field->Sort,10)}},;
aSortSeek1,cHeads, ,cWhen ,cValid ,;
,{||mlabel1->(SetScope("UPPER(Status+GRUP)",Upper(" "+aIn[1]))),.t.} ,{||aIn[4]:=Left(Field->Name,25),.t.}, , ,;
, , , , ,;
,'cFind$UPPER(Name)'))
mGrup->( MAKEREFER("sg","Cправочник групп",1,{"Группа","Наименование "},;
{1,1,15}, "n/w,w+/n",{"CODE"},{"aIn[1]"},'UPPER(aIn[1])',;
{{||Field->CODE},{||Field->NAME}};
,,,,,,,,{||cGrup:=Field->Code,.T.},;
,,,,,,,,'cFind$UPPER(Name)'))
aRef:={'SG','SL'}
// Init2(.T.)
TMC1->(OrdSetFocus('TMCNUM'))
TMC1->(DbGoTop())
Do While INIT1(.T.).And.INIT2(.T.)
EndDo
// записываем
AltD()
MLabel1->(DbCloseArea())
MDocm1->(DbCloseArea())
DBPOP()
DBPOP()
DBPOP()
DBPOP()
DBPOP()
// WSelect(aScr)
RestSetKey(aSetKey)
RESTSET(aSet)
RestScreen(,,,,bScr)
EndIf
Return .T.
// Return LastKey()!=27
Function INIT1(lFlag)
Private nTop,nBot,cColHead,aBlockCols,cCurProc,bDel,aHeads,aColors,aColors1
Private bPreGet
Private hnrowact //:=1
//altd()
nTop:=3
nBot:=11
cColHead:=76
сCurProc:={||MOVE1(lFlag,@hnRowAct,m->_numrec,RecNo())}
//Заголовки колонок реестра
aBlockCols:={;
{{||Left(MLabel->Name,33)},0},;
{{||Left(MLabel->Marka,6)},34},;
{{||Left(MLabel->Razmer,6)},41},;
{{||Str(Field->kol,14,4)},48},;
{{||Str(Field->Cena,14,2)},63};
}
bDel:={||.F.}
aColors :={||Iif( Field->Stat = 0 ,"N+/B",Iif(Field->Stat = 1, 'R+/B',Iif(Field->Stat = 2,'W+/B',Iif(Field->Stat = 3,'G+/B','GR+/B'))))}
aColors1:={||Iif( Field->Stat = 0 ,"N+/W",Iif(Field->Stat = 1, 'R/W',Iif(Field->Stat = 2,'N/W',Iif(Field->Stat = 3,'G/W','GR/W'))))}
//Комментарии
If lFlag
// ScrTitul(24, Chr(24)+Chr(25)+":Перемещение, TAb:Переключение F10:Сохранить Esc:Выход")
SayScreen( "TAb:Переключение F10:Сохранить Esc:Выход ", 24,2,'N/W')
EndIf
TMC1->(F_SETRELATION("MLABEL","UPPER(Grup+NNum)"))
TMC1->(InitList(nTop,nBot,cColHead,aBlockCols,сCurProc,,,,,,,,,,,,,,aColors,aColors1,,,,,,,,,hnrowact))
Return !(LastKey()=27.Or.LastKey()=-9)
//
//Второй инитлист
Function INIT2(lFlag)
Private mTop,mBot,mLeft,dColHead,bBlockCols,dCurProc,cDel,bHeads,mLeft,bValid,bWhen,bPost,bScrInit, bPict, bHotKey
Private cPreGet
Private rnRowAct //:=1
// AltD()
mTop:=15
mBot:=21
mLeft:=1
//Заголовки над полями
dColHead:=76
dCurProc:={||MOVE2(lFlag,@rnRowAct)}
// dCurProc:={||2}
//Заголовки колонок реестра
bBlockCols:={;
{{||Left(MLabel->Name,33)},0},;
{{||Left(MLabel->Marka,6)},34},;
{{||Left(MLabel->Razmer,6)},41},;
{{||Str(Field->kol,14,4)},48},;
{{||Str(Field->Cena,14,2)},63};
}
//Описание полей ввода
bHeads:={;
{"Группа................: ","GRUP"},;
{"Номенклатурный номер..: ","NNUM"},;
{"Пвртия................: ","Partia"},;
{"Наименование..........: ","NAME"},;
{"Количество............: ","KOL"},;
{"Цена..................: ","Cena"},;
{"Цена продажная без НДС: ","Cena1"}}
// bWhen:={,{||uBeforeIn()},{||.F.},{||.F.},,{||uBefore1()},{||uBefore1()}}
// bValid:={,{||uCheck2()},,,{||uCheck5()},{||uCheck6()},{||uCheck7()}}
bPost:={||uSaveRec()}
// cDel:={||uCheckDel()}
cDel:={||.F.}
bPict:={,,,,'99999999999.9999','99999999999.9999','99999999999.9999'}
// bScrInit:={||uBeforeIn()}
If lFlag
// ScrTitul(24, Chr(17)+Chr(217)+ ":Изменить F4:Ввод новой F8:Удаление F10:Сохранить Esc:выход")
SayScreen( "Enter:Изменить F4:Ввод новой F8:Удаление F10:Сохранить Esc:выход", 24,2,'N/W')
EndIf
TMC2->(SetScope('Upper(Link)',Upper(TMC1->Link)))
TMC2->(DbGoTop())
// AltD()
TMC2->(F_SETRELATION("MLABEL","UPPER(Grup+NNum)"))
TMC2->(InitList(mTop,mBot,dColHead,bBlockCols,dCurProc,bHeads,m->aRef,bPict,bWhen,bValid,,cDel,bScrInit,,,bPost,,,,,,,,,,,,,,m->bHotKey))
Return !(LastKey()=27.Or.LastKey()=-9)
Function MOVE1(_xlActiv,hnRowAct,xRec,xRec1)
Local m1end, m1Ar
m1End:=2
// AltD()
m1Ar:=TMC1->( QScroll() )
hnRowAct:=m1Ar[6]
If LastKey()=9 // клавиша Tab
// TMC1->(QOFF())
SetLastKey(0)
m1End:=0
Else
If LastKey()=-9
m1End:=0
Else
If xRec ==NIL.Or.xRec<>xRec1
Init2(.F.)
m->_numrec:=xRec1
EndIf
If _xlActiv
m1End:=2
TMC1->(F_SETRELATION("MLABEL","UPPER(Grup+NNum)"))
SayScreen( TMC1->Grup, 12,8,'N/W')
SayScreen( TMC1->NNUM, 12,23,'N/W')
SayScreen( TMC1->Partia, 12,45,'N/W')
SayScreen( MLabel->ED, 2,55,'GR+/B')
// SayScreen( Left(MLabel->NAME,25), 12,51,'N/W')
Else
QOff()
m1End:=0
EndIf
EndIf
EndIf
Return m1end
Function MOVE2(_lActiv,rnRowAct)
Local m2End,m2Ar
m->aKeyFirst:=.T.
// AltD()
m2Ar:=TMC2->(QScroll())
rnRowAct:=m2Ar[6]
// SayAndWait("INIT2"+Str(LastKey()))
If LastKey()=9.Or.!_lActiv
TMC2->(QOFF())
SetLastKey(0)
m2End:=0
TMC2->(F_SETRELATION("MLABEL","UPPER(Grup+NNum)"))
SayScreen( TMC2->Grup, 22,8,'N/W')
SayScreen( TMC2->NNUM, 22,23,'N/W')
SayScreen( TMC2->Partia, 22,45,'N/W')
SayScreen( MLabel->ED, 14,55,'GR+/B')
Else
//Altd()
If LastKey()=-9
m2End:=0
Else
m2End:=2
TMC2->(F_SETRELATION("MLABEL","UPPER(Grup+NNum)"))
SayScreen( TMC2->Grup, 22,8,'N/W')
SayScreen( TMC2->NNUM, 22,23,'N/W')
SayScreen( TMC2->Partia, 22,45,'N/W')
SayScreen( MLabel->ED, 14,55,'GR+/B')
EndIf
EndIf
Return m2End
Function uSaveRec()
Local I:=0, K1:="", K2:=""
//AltD()
Iif(mLabel->(DbSeek(Upper(TMC1->GRUP+TMC1->NNUM))),K1 := mLabel->Marka,)
Iif(mLabel->(DbSeek(Upper(TMC2->GRUP+TMC2->NNUM))),K2 := mLabel->Marka,)
TMC2->(RecLock())
TMC2->Link:=TMC1->Link
If Upper(AllTrim(K1))==Upper(AllTrim(K2))
TMC2->Sert:=TMC1->Sert
TMC2->GTD:=TMC1->GTD
TMC2->Country:=TMC1->Country
EndIf
Iif(nApp=2,TMC2->Stat:=4,)
TMC2->(F_DBUnlock())
I := AScan(ALinks,Upper(TMC1->Link))
If nApp = 2
aKols[I]:=aKols[I]-aIn[5]
Else
aKols[I]:=aKols[I]-aIn[5]+aLastIn[5]
EndIf
Return .t.
|