Code: |
1- группа+NNUM+partia+Sclad
2 - единица изм 3 - кол-во 4 - цена в осн.валюте далее (не обязательно): 5 - ранее выбранное кол-во (0) 6 - ранее выбранная сумма (0) 7 - не задействовано 8 - цена в валюте 9 - код валюты 10 - курс валюты 11 - nOCena1 из MLabel 12 - nOCena2 из MLabel 13 - nOCena3 из MLabel 14 - nOCena4 из MLabel 15 - nVCena1 из MLabel 16 - nVCena2 из MLabel 17 - nVCena3 из MLabel 18 - nVCena4 из MLabel |
Code: |
NoPricePere:=.T., |
Code: |
#include "inkey.ch"
#include "s_public.ch" #TRANSLATE HOT_CTRL(<x>,<nKey>,<bKey>,<nSort>) => AADD(aHotKey\[1\],{<x>,<nKey>,<bKey>,<nSort>}) #TRANSLATE HOT_SHIFT(<x>,<nKey>,<bKey>,<nSort>) => AADD(aHotKey\[2\],{<x>,<nKey>,<bKey>,<nSort>}) #TRANSLATE HOT_ALT(<x>,<nKey>,<bKey>,<nSort>) => AADD(aHotKey\[3\],{<x>,<nKey>,<bKey>,<nSort>}) #TRANSLATE REAL_TIME(<nSet>) => SetRealTimeDoc(<nSet>,GlobalTask $ "0309",IF(GlobalTask $ "0309ZR".OR.(GlobalTask='SR'.AND.(TYPE('lUdalReal')#'L'.OR.!m->lUdalReal)),IF(TYPE("pPro")!="U",MemVar->pPro,NIL),IF(TYPE("pNNoper")!="U",MemVar->pNNoper,NIL)),IF(TYPE("aWindow")=="A".AND.LEN(aWindow)>1.AND.LEN(aWindow\[2\])>6,aWindow\[2\]\[7\]:cargo\[1\],{})) #TRANSLATE REAL_W_TIME(<nSet>) => SetRealTimeDoc(<nSet>,GlobalTask $ "0309",IF(GlobalTask $ "0309ZR".OR.(GlobalTask='SR'.AND.(TYPE('lUdalReal')#'L'.OR.!m->lUdalReal)),IF(TYPE("pPro")!="U",MemVar->pPro,NIL),IF(TYPE("pNNoper")!="U",MemVar->pNNoper,NIL)),aWork) #DEFINE L_KOLR 13 #DEFINE __RLABEL (IF(iSPR_PART->(EOF()) .OR. MemVar->PricePart = 1,cSelLabel,cSelPartia)) #DEFINE iSelect cSelSchet,cSelKart,cSelGrup,cSelLabel,cSelPartia,cSelStru,cSelUStru,cSelUser,cSelDoc,cSelDocM,cSelTree,cSelNameTre,cSelSprDop,cSelSprRcv,cSelSclad,cSelMoves,cSelVDoc,cSelCodOp,cSelAgent,; cSelTaxGrp //z0ne NDS18 16.12.2003 MEMVAR iSelect #DEFINE iMSCHET (cSelSchet) #DEFINE iMKART (cSelKart) #DEFINE iMGRUP (cSelGrup) #DEFINE iMTAXGRP (cSelTaxGrp) //z0ne NDS18 16.12.2003 #DEFINE iMLABEL (cSelLabel) #DEFINE iSPR_PART (cSelPartia) #DEFINE iMSTRU (cSelStru) #DEFINE iSTRU (cSelUStru) #DEFINE iMSCLAD (cSelSclad) #DEFINE iUSER (cSelUser) #DEFINE iMDOC (cSelDoc) #DEFINE iMDOCM (cSelDocM) #DEFINE iTREE (cSelTree) #DEFINE iNAME_TRE (cSelNameTre) #DEFINE iSPR_DOP (cSelSprDop) #DEFINE iSPR_RCV (cSelSprRcv) // PVP - справочник реквизитов партий #DEFINE iMOVES (cSelMoves) #DEFINE iMVDOC (cSelVDoc) #DEFINE iMCODOP (cSelCodOp) #DEFINE iAGENT (cSelAgent) #DEFINE iTypeGen (IF(TYPE(GetPrefix("TypeGen")) = "L",&(GetPrefix("TypeGen")),.F.)) #DEFINE iLabelNum (&(GetPrefix("LabelNum_"))) #DEFINE itWork_B_Code GetPrefix("Work_B_Cod") #DEFINE iWork_B_Code (&(GetPrefix("Work_B_Cod"))) // Для коррекции резерва #DEFINE KOL_MRES(x) (VAL(SUBSTR(x,Q_KOL,L_KOLR))-MIN(VAL(SUBSTR(x,Q_KOL1,L_KOLR))+VAL(SUBSTR(x,Q_KOL10,L_KOLR)),VAL(SUBSTR(x,Q_KOL,L_KOLR)))) //Позиции в cMat в строке и на экране #DEFINE Q_NAME 2 #DEFINE Q_KOL 37 // Изменение 3.18 #DEFINE Q_FACTCENA 50 #DEFINE Q_SUMOUT 64 #DEFINE Q_ED 79 #DEFINE Q_GRUP 84 #DEFINE Q_NNUM 89 #DEFINE Q_SCLAD 102 #DEFINE Q_KOL1 108 #DEFINE Q_CENAOUT 121 #DEFINE Q_SUM1 136 #DEFINE Q_CODEVAL 151 #DEFINE Q_VCENA 154 #DEFINE Q_CENAVAL 169 #DEFINE Q_OCENA1 182 #DEFINE Q_OCENA2 197 #DEFINE Q_OCENA3 212 #DEFINE Q_OCENA4 227 #DEFINE Q_VCENA1 242 #DEFINE Q_VCENA2 257 #DEFINE Q_VCENA3 272 #DEFINE Q_VCENA4 287 #DEFINE Q_KOL10 302 #DEFINE Q_SUM10 315 #DEFINE Q_PARTIA 330 #DEFINE Q_SUM_NDS 335 #DEFINE Q_SUM_ACZ 354 #DEFINE Q_SUM_CSH 373 #DEFINE Q_CSH 392 #DEFINE Q_NUMSTR 400 #DEFINE Q_KOLR 405 //длина 13 // заявлено в заказах #DEFINE Q_NAME1 418 //длина 26 FIELD Kt_Sum,Dt_Sum // см. MakeMat1 и MEM_MODEL #DEFINE Q_MAT_MODEL (m->SUM_NDS := VAL(SUBSTR(cMat,Q_SUM_NDS,19)),m->SUM_AKC := VAL(SUBSTR(cMat,Q_SUM_ACZ,19)),m->SUM_CSH := VAL(SUBSTR(cMat,Q_SUM_CSH,19))) #DEFINE Q_SAVE_FLAG (MDOC->L_NDS := RetFlagNalog(1,MemVar->pModel),MDOC->L_ACZ := RetFlagNalog(2,MemVar->pModel),MDOC->L_CSH := RetFlagNalog(3,MemVar->pModel)) //Длина #DEFINE L_NAME 35 #DEFINE L_KOL 14 #DEFINE L_CENA 17 #DEFINE L_SUM 14 #DEFINE L_GRUP 5 #DEFINE L_PARTIA 5 #DEFINE L_NNUM 13 #DEFINE L_ED 5 #DEFINE L_SCHET 4 #DEFINE L_IZNOS 3 #DEFINE COL_SELECT IF(INST_COLOR,'w+/g','w+/n') #DEFINE COL_HEADPRICE IF(INST_COLOR,'b/w','n/w') #DEFINE COL_SHEADR IF(INST_COLOR,'gr+/b*,w+/n,,,w+/b*','n/w,w+/n,,,n/w') #DEFINE X_R IF(LNEWCENA,RetEdR(IF(IsAddPricePartia(pNumber)[3],.F.,0)),RetEdR()) #DEFINE X_ED IF(LNEWCENA,RetEd(IF(IsAddPricePartia(pNumber)[3],.F.,0)),RetEd()) #DEFINE X_SUM_ED(x) IF(LNEWCENA,RetSumEd(x,IF(IsAddPricePartia(pNumber)[3],.F.,0)),RetSumEd(x)) #DEFINE X_KOL_ED(x) IF(LNEWCENA,RetKolEd(x,IF(IsAddPricePartia(pNumber)[3],.F.,0)),RetKolEd(x)) #DEFINE IS_PARTIA_KOL (GlobalTask != "05" .OR. MemVar->PricePart != 1) *#DEFINE IS_DOP_NUM (!YesMatReal.AND.TYPE("pDopCode") = "C" .AND. !EMPTY(pDopCode)) #DEFINE IS_DOP_NUM (.F.) #DEFINE ED_PRICE RetEd(IF(LNEWCENA,IF(IsAddPricePartia(pNumber)[3],.F.,0),NIL)) #DEFINE ED_R_PRICE RetEdR(IF(LNEWCENA,IF(IsAddPricePartia(pNumber)[3],.F.,0),NIL)) #DEFINE X_MDOCM (IF(pVid="0","_MDOCM","MDOCM")) #DEFINE LNEWCENA (GlobalTask="05".AND.pCodeCen=6) #DEFINE SUM_WORK IF(pType = "4" .AND. YesUchet,x[3]*__CENA,ROUND(nKolOut*nCena*EVAL(Global_BCurs,pCenaVal,Valuta->Myltiply),CURR_MAIN)) #DEFINE SUM_OUT IF(pType = "4" .AND. YesUchet,x[3]*__CENA,nKolOut*nCena) STATIC aWork,nWork:=0,aEd,lKarto,nEd:=1,nPushKart := 0 #DEFINE __MKART (IF(SELECT("TMKART") = 0,"MKART","TMKART")) #DEFINE ACCUR_ED IF(UPPER(RetEd()) = UPPER(MLABEL->ED),MGRUP->KOL_,MGRUP->KOL1_) #DEFINE __OSN_ED iMLABEL->ED #DEFINE __CENAN IF(iMSCHET->XRAN != '1' .OR. iMSCHET->METODNal = '3',iMLABEL->CenaN, IF(EMPTY(lChTnPart),iSPR_PART->CENA_FN,TnPrePartN(cSelPartia))) |
Code: |
MEMVAR lGrup0
STATIC lGoUp:= .F., lGoDown:= .F. FUNCTION MAIN() Local nWay,lFlag IF aPars[1]=1.OR.nMetodInput=1 nWay:=NoOrYes({"Выберите прайс-лист"},1,{"Свой","Штатный"}) ENDIF DO CASE CASE nWay=1 lFlag:=PriceRefer(,,.T.) CASE nWay=2 lFlag:=.T. ENDCASE RETURN lFlag FUNCTION PriceRefer(dDate,nAdd,lFromReal) //--------------------------------------------------------------------------// // dDate != NIl, остатки на дату меньше или равно dDate LOCAL lKart:=(GlobalTask $ '03TZ'.AND.lPlus.AND.pVid+pType!='15').OR.!( YesMatReal .OR. (GlobalTask $ '03TZ'.AND.YesReal.AND.YesDop.AND.lPrice>'1')) //Раскрывать картотеку LOCAL cLastColor,cColor:=COL_HEADPRICE,nArea LOCAL sResti,nOrd0,sRest,nOrdLabel:=MLabel->(ORDNUMBER()) LOCAL nTop:=2,nLeft:=0,nBottom:=24,nRight:=79 LOCAL nLastKey,cHelp_Code:=HELP_CODE //ТВ *LOCAL cHead:= ' Н/номер Наименование Ед.изм '+IF(YesMatReal,'Свободно Кол-во заказ ',IF(GlobalTask $ '03TZ'.AND.lPlus,' Остаток Принято ',' Остаток '+IF(pVid='0','Остаток ','Отпущено '))) LOCAL cHead:= 'Н/номер Наименование ЕдИзм Свободно Заказать' *1234567890123 123456789012345678901234567890 12345 1234567890123 1234567890123 *1234567890123456789012345678901234567890123456789012345678901234567890123456789 LOCAL bKol := {|| IF(nWork>0.AND.pVid>'0',IF(lPlus,aWork[nWork,3]-aWork[nWork,19],-aWork[nWork,3]+aWork[nWork,19]),0) } //ТВ * *LOCAL aBlockCols:={{{|| IF(EMPTY(NNum).AND.!EOF(),; * CENTER(' '+TRIM(MGrup->Code)+' '+TRIM(MGrup->Name)+' ',78,'─',.T.),; * NNum+' '+IF(GlobalTask != "05" .OR. IF(pCodeCen=6,MemVar->PricePart != 1.AND.IsAddPricePartia(pNumber)[1],MemVar->PricePart != 1),Partia+' ','')+LEFT(MLabel->Name,30-IF(GlobalTask != "05" .OR. IF(pCodeCen=6,MemVar->PricePart != 1.AND.IsAddPricePartia(pNumber)[1],MemVar->PricePart != 1),L_PARTIA+1,0))+' '+; * IF((nWork:= ScanWorkList())>0.AND.; * (nEd:=ASCAN(aEd,{|x|UPPER(x[1])==UPPER(aWork[nWork,2])}))!=NIL,; * aWork[nWork,2],ED_PRICE)+' '+; * IF(LNEWCENA,; * (aEd:=IniEd(,,,,@nEd),StrS(oRedKol(__MKART->KolTek+EVAL(bKol)-IF(YesMatReal,IF(m->RLimit_,-__MKART->KolLim,0)+__MKART->KolRes,0),RetEd(IF(IsAddPricePartia(pNumber)[3],.F.,0))),13,IF(UPPER(RetEd(IF(IsAddPricePartia(pNumber)[3],.F.,0))) = UPPER(__OSN_ED),iMGRUP->Kol_,iMGRUP->Kol1_))),; * StrEd(__MKART->KolTek+EVAL(bKol)-; * IF(YesMatReal,IF(m->RLimit_,-__MKART->KolLim,0)+__MKART->KolRes,0)))+' '+; * IF(nWork>0,StrEd(aWork[nWork,3]),IF(pVid="0",StrEd(__MKART->KolTek+EVAL(bKol)-IF(YesMatReal,IF(m->RLimit_,-__MKART->KolLim,0)+__MKART->KolRes,0)),SPACE(13)))) },1}} * LOCAL aBlockCols:={{{|| IF(EMPTY(NNum).AND.!EOF(),; CENTER(' '+TRIM(MGrup->Code)+' '+TRIM(MGrup->Name)+' ',78,'─',.T.),; LEFT(NNum,8)+' '+LEFT(MLabel->Name,34)+' '+; IF((nWork:= ScanWorkList())>0.AND.(nEd:=ASCAN(aEd,{|x|UPPER(x[1])==UPPER(aWork[nWork,2])}))!=NIL,; aWork[nWork,2],ED_PRICE)+' '+; IF(LNEWCENA,(aEd:=IniEd(,,,,@nEd),; StrS(oRedKol(__MKART->KolTek+EVAL(bKol)-IF(m->RLimit_,-__MKART->KolLim,0)-__MKART->KolRes,; RetEd(IF(IsAddPricePartia(pNumber)[3],.F.,0))),; 10,,IF(UPPER(RetEd(IF(IsAddPricePartia(pNumber)[3],.F.,0))) = UPPER(__OSN_ED),iMGRUP->Kol_,iMGRUP->Kol1_))),; StrEd(__MKART->KolTek+EVAL(bKol)-IF(m->RLimit_,-__MKART->KolLim,0)-__MKART->KolRes,,10))+' '+; IF(nWork>0,StrEd(aWork[nWork,3],,11),; IF(pVid="0",; StrEd(__MKART->KolTek+EVAL(bKol)-IF(m->RLimit_,-__MKART->KolLim,0)+__MKART->KolRes,,11),; SPACE(11)); ) )},1}} *LOCAL aBlockCols:={{{||_myblock(bKol)},1}} LOCAL aArray,nWin LOCAL bIsNoInAddPrice := {||GlobalTask="05".AND.pCodecen=6.AND.(!RPrice_M->(dbSeek(UPPER(pNumber+MKART->(GRUP+NNUM+IF((aArray:=IsAddPricePartia(pNumber))[1],PARTIA,""))))).OR.(!EMPTY(aArray[4]).AND.EMPTY(ASCAN(aArray[4],{|x|UPPER(x)=UPPER(MKart->Sclad)}))))} //ТВ *LOCAL bColor:=IF(YesMatReal.OR.pVid='2',{||IF(; *__MKART->KolTek+IF(nWork>0,-aWork[nWork,3]+aWork[nWork,19],0)-; *IF(YesMatReal,IF(m->RLimit_,-__MKART->KolLim,0)+__MKART->KolRes,0)>0,IF(EVAL(bIsNoInAddPrice),'n+/w',COL_REFER),COL_INPUTA1)},NIL) LOCAL bColor:={||mycolor(__MKART->KolTek+IF(nWork>0,-aWork[nWork,3]+aWork[nWork,19],0)-IF(m->RLimit_,-__MKART->KolLim,0)-__MKART->KolRes,; COL_REFER,bIsNoInAddPrice,1)} LOCAL bColor1:={||mycolor(__MKART->KolTek+IF(nWork>0,-aWork[nWork,3]+aWork[nWork,19],0)-IF(m->RLimit_,-__MKART->KolLim,0)-__MKART->KolRes,; COL_REFER,bIsNoInAddPrice,2)} *LOCAL bColor:={||'n/w'} LOCAL aSetKey:=SaveSetKey(),cFltr0,aScope, nCena, nKolTek := 0 LOCAL cFindMacro:='cFind$UPPER(MLabel->Name).OR.cFind$UPPER(Grup+NNum+Partia)' LOCAL aBase := {'MKART','MSCHET','MLABEL','MDOCM','MGRUP','MSTRU','SPR_PART','VALUTA','VCURS','RBOOKM','RBOOK'} LOCAL nRet, aStruct, nKol_Tek := 0, nKolRes, nKol_Res LOCAL aHotKey := {{},{},{}}, lSkid := GlobalTask = "05" LOCAL bForKol := IF(IS_PARTIA_KOL,{|| (EMPTY(MKART->NNUM) .OR. !EMPTY(MKART->PARTIA) .OR. (EMPTY(MKART->PARTIA) .AND. MSCHET->XRAN != '1')) },{|| EMPTY(MKART->PARTIA) }) LOCAL bForKey := IF(IS_PARTIA_KOL,{|| UPPER(MKART->GRUP+MKART->NNUM+MKART->PARTIA) },{|| UPPER(MKART->GRUP+MKART->NNUM) }) LOCAL bForKolTek := {|| MemVar->TypeOst != 1.OR.; ((nRet := RetKolEd(MKART->KOLTEK+IF(m->RLimit_.AND.!EMPTY(lFromReal),MKART->KolLim,0))) >= 0 .AND. STR(nRet,14,ACCUR_ED) != STR(0,14,ACCUR_ED)).OR.; (ROUND(MKART->KOLTEK+IF(m->RLimit_.AND.!EMPTY(lFromReal),MKART->KolLim,0),MGRUP->KOL_) >= 0).OR.; ScanWorkList()>0} LOCAL bForKolData := {|aKol|; //Что-бы показывать малые кол-ва aKol := GetDocKol(EVAL(bForKey),@dDate,MKART->SCLAD,lFromReal),; nKol_Tek := aKol[1],; nKol_Res := aKol[2],; nKolRes := IF(MemVar->TypeOst = 1,IF(nKol_Tek-nKol_Res < MKART->KOLTEK-MKART->KOLRES,nKol_Res,MKART->KOLRES),nKol_Res),; nKolTek := IF(MemVar->TypeOst = 1,IF(nKol_Tek-nKol_Res < MKART->KOLTEK-MKART->KOLRES,nKol_Tek,MKART->KOLTEK),nKol_Tek),; ScanWorkList()>0.OR.; IsVisiablePos(nKolTek,nKolRes,lFromReal); } LOCAL bSayHead:= {|xKey,x2,cSay,nRec|; nRec := MGrup->(RecNo()),; iMGRUP->(DbSeek(xKey)),; cSay:= PADC(" "+iMGRUP->Code+" "+TRIM(iMGRUP->Name)+" ",78,"─"),; iMGRUP->(DbGoTo(nRec)),; cSay; } LOCAL bKeyHead:= {|| IF("STATUS+SCLAD+GRUP"$ORDKEY().OR."STATUS+GRUP"$ORDKEY(), UPPER(FIELD->Grup), NIL)} LOCAL bSetKol :=; {||; TMKART->(Gather(MKART->(Scatter()))),; TMKART->KOL_TEK := nKol_Tek,; TMKART->KOLTEK := nKolTek,; TMKART->KOLRES := nKolRes; } // TypeOst // 1 - минимальные остатки на дату // 2 - остатки на дату LOCAL bOstData :=; {||; Busy(.T.," Расчет остатков на "+DTOC(dDate)),; TMKART->(__dbZap()),; MKART->(; dbPush(,IF(GlobalTask='05'.AND.lGrup0 ,"MKART","MKART_SN")),; X_MDOCM->(dbPush(,"MDOCM_K","","","")),; dbSeek(IF(GlobalTask='05'.AND.lGrup0 ,UPPER(pLastGrup)," "+UPPER(pSclad+IF(lGrup0,pLastGrup,""))) ),; dbClearRelation(),; dbSetRelation("MLABEL",{|| UPPER(MKART->GRUP+MKART->NNUM) },"UPPER(GRUP+NNUM)"),; dbSetRelation("MSCHET",{|| UPPER(MKART->SCHET) },"UPPER(SCHET)"),; dbSetRelation("MGRUP",{|| UPPER(MKART->GRUP) },"UPPER(GRUP)"),; DBEVAL(bSetKol,{|| IF(GlobalTask='05'.AND.lGrup0 ,!EMPTY(MKART->NNum).AND. EMPTY(MKART->Status),.T.).AND. (GlobalTask#'05'.OR. EMPTY(MKART->Price)).AND. EVAL(bForKol) .AND. EVAL(bForKolTek) .AND. EVAL(bForKolData) .AND. TMKART->(AddRec()) },{|| IF(GlobalTask='05'.AND.lGrup0 ,UPPER(MKART->GRUP)=UPPER(pLastGrup),UPPER(MKART->SCLAD) = UPPER(pSclad) .AND. MKART->STATUS = " " .AND. IF(lGrup0,MKART->GRUP=pLastGrup,.T.)) }),; X_MDOCM->(dbPop()),; dbPop(); ),; Busy(.F.); } LOCAL bGetGrup :=; {|oGet|; IF(EMPTY(pLastGrup),pLastGrup:=MSTRU->(dbSeek(pSclad),Grup),NIL),; sResti := BrSaveScreen(10,26,15,54),; ShadowBox("",10,26,14,51,COL_SHEADR),; SAYSCREEN('Группа?:',12,29),; GetList := {},; oGet:=GetNew(12,39,{|x| IF(x != NIL,pLastGrup := PADL(RTRIM(x),LEN(x)),pLastGrup )},"pLastGrup",'@K XXXXX',COL_GET),; oGet:reader :={|x| ReferGetReader(x,"MGRUPR") },; AADD(GetList,oGet),; NilNum(),; PushData(SaveSetKey()),; SETCURSOR(1),; ReadModal(GetList),; GetList := {},; BrRestScreen(sResti),; RestSetKey(PopData()),; SETCURSOR(0),; IF(TYPE(itWork_B_Code)='L'.AND.iWork_B_Code.AND.!EMPTY(m->nOrdBC),QuickBC(1,1,0,m->nOrdBC,'r/w*','не запоминая',m->nPrefBC),SetNum(nAdd)),; IF(EMPTY(pLastGrup),pLastGrup := "",NIL),; IF(!EMPTY(pLastGrup).AND.ALIAS()=="MKART",IF(ORDNAME()=="MKART_BC",ORDSETFOCUS("MKART_SN"),; IF(ORDNAME()=="MKART_SA",ORDSETFOCUS("MKART_ST"),NIL)),),; IF(LASTKEY()=K_ESC,BREAK(1),NIL); } LOCAL bAddSort :=; {||; GetaSort(); } PRIVATE aSort:={} PRIVATE GetList:={} PRIVATE bPreSeek PRIVATE lGrup0:=IF(YesMatReal,m->RGrup_[1],lGrup) PRIVATE nBaseOrd:=IF((lKarto:=lKart),2,IF(YesMatReal,IF(pCodeCen=6,1,4),IF((GlobalTask $ '03TZ'.AND.pType='9'.AND.pVid>'0'),6,2))) PRIVATE lOstData := .F. PRIVATE nOrdBC:=NIL PRIVATE nPrefBC:=NIL nWin:=WSELECT() ALTD() IF GlobalTask=="TZ".AND.pVid=="0" bColor:={|| IF(nWork > 0.AND.!(__MKART->KolTek=aWork[nWork,3]),COL_INPUTA,COL_REFER) } ENDIF IF TYPE("TypeOst") != "N" PRIVATE TypeOst MemVar->TypeOst := 1 ENDIF IF GlobalTask='05' HELP_CODE:='1.3' ELSEIF GlobalTask="TZ" IF pVid="0" HELP_CODE:=TZ_H_23 ELSE HELP_CODE:=TZ_H_13 ENDIF ELSE HELP_CODE:='1.4' ENDIF IF !lKarto.AND.YesMatReal PRIVATE pSclad:='' ENDIF PRIVATE pLastGrup:='',pStatus0, lSeekScl IF !YesMatReal PRIVATE pSkidka:=0 PRIVATE pNakidka:=0 ENDIF SETKEY(K_END,{||Forward(1)}) SETKEY(K_HOME,{||Forward(-1)}) SETKEY(K_RETURN,{||MenuAdd(aSort,cFltr0,nAdd)}) //ТВ *SETKEY(K_LEFT,{||MenuAdd(aSort,cFltr0,nAdd)}) *SETKEY(K_RIGHT,{||MenuAdd(aSort,cFltr0,nAdd)}) SETKEY(K_F7,{|nRet|NilNum(),nRet:=QSeek(aSort,COL_REFER),SetNum(nAdd),Ord_:=ORDNUMBER(),nRet}) SETKEY(K_F3,{|nRet|nRet:=QSort(aSort,COL_REFER),Ord_:=ORDNUMBER(),nRet}) SETKEY(K_TAB,{||MYWRITE(aWork),0}) SETKEY(K_F9,{||PrintCheck()}) SETKEY(K_F10,{|| IF(!EMPTY(FIELD->NNUM),SpraEd(lPlus),)}) IF GlobalTask!="TZ".OR.pVid!="0" SETKEY(K_CTRL_F2,{||KitRefer(1,@aWork,{||DispSum0()},nAdd)}) HOT_CTR("F2:Комплекты",0,NIL,1) ENDIF SetKey(K_ALT_I,{|| DispLabelTree(7,5,MLABEL->NNOPER,COL_REFER) }) HOT_ALT("I:Иерархия",0,NIL,2) HOT_ALT("A:Комментарий",0,NIL,3) HOT_CTRL("O:Остаток ТМЦ",0,NIL,4) HOT_ALT("O:Движение ТМЦ",0,NIL,4) HOT_ALT("P:Дополнительные атрибуты",0,NIL,4) SetKey(K_ALT_A,{|lAdd| lAdd := .F.,pSclads := IF("│││" $ MLABEL->SCLADS,(lAdd := .T.,BEFORATNUM("│││",MLABEL->Sclads)),MLABEL->Sclads),MLABEL->(Comment()),IF(MLABEL->(RecLock()),(MLABEL->SCLADS := pSclads+IF(lAdd,"│││"+AFTERATNUM("│││",MLABEL->SCLADS,1),""),MLABEL->(dbUnLock())),NIL),pSclads := "" }) SetKey(K_ALT_O,{|x|x:=SaveScreen(),DispDwi(1,dDate,nWork,aWork,,{|nKol,nLen,cEd| StrEd(nKol,,nLen,cEd) }),RestScreen(x) }) IF YesMatReal .OR. GlobalTask $ "03SR" SetKey(K_ALT_R,{|| DispReserv() }) SetKey(K_CTRL_T,{|| SprTovKol(.T.,IF(YesMatReal,MemVar->pNNoper,NIL),IF(YesMatReal,NIL,MemVar->pPro),IF(nWork > 0,aWork[nWork,2],ED_PRICE),IF(nWork > 0,aWork[nWork,20],ED_R_PRICE)) }) HOT_CTRL("T:Свободно ТМЦ",0,NIL,5) HOT_ALT("R:Зарезервированный товар",0,NIL,5) ENDIF SetKey(K_CTRL_O,{|| SprTovKol(.F.,IF(YesMatReal,MemVar->pNNoper,NIL),IF(YesMatReal,NIL,MemVar->pPro),IF(nWork > 0,aWork[nWork,2],ED_PRICE),IF(nWork > 0,aWork[nWork,20],ED_R_PRICE)) }) SetKey(K_ALT_P, {||ShowDopAttr()}) SETKEY(ASC(' '),{||ChangeEd(nAdd)}) SETKEY(K_F6,{|cScreen| cScreen:=SAVESCREEN(23,0,23,MAXCOL()),PriceFilter(cFltr0,ScopeMacro()),RESTSCREEN(23,0,23,MAXCOL(),cScreen),2 }) SETKEY(K_CTRL_F6,{|| MyCloseFilter(30,0), IF(ALIAS()=="MKART",Filter_:='',)}) HOT_CTRL("F6:Снять фильтр",0,NIL,10) SETKEY(K_ALT_F7,{||FindName()}) HOT_ALT("F7:Контекстный поиск",0,NIL,11) SETKEY(K_ALT_F6,{||FiltName(cFindMacro,DBFILTER(),ScopeMacro(),30,0)}) SETKEY(K_ALT_F12,{||FiltName(cFindMacro,DBFILTER(),ScopeMacro(),30,0)}) IF IsMSNT() HOT_ALT("F6:Контекстный фильтр",0,NIL,12) ELSE HOT_ALT("F12:Контекстный фильтр",0,NIL,12) ENDIF MenuAdd(,,nAdd) WSELECT(0) SetNum(nAdd) cLastColor:=SETCOLOR(COL_REFER) sRest:=SAVESCREEN() BEGIN SEQUENCE IF lSkid AADD(aBase,{"RSKID",LoadPath()+"REAL\RSKID"}) AADD(aBase,{"RSKIDQ",LoadPath()+"REAL\RSKIDQ"}) AADD(aBase,{"MPART",LoadPath()+"SCLAD\MPART"}) ENDIF dbOpenBases(aBase,,,,.T.) MSTRU->(ORDSETFOCUS("MSTRU_G")) MLABEL->(ORDSETFOCUS("MLABEL")) SPR_PART->(ORDSETFOCUS("TAG_NUM")) MGRUP->(ORDSETFOCUS("MGRUP")) MKART->(ORDSETFOCUS("MKART")) MSCHET->(ORDSETFOCUS("MSCHET")) MKART->(ORDSETFOCUS("MKART")) RBOOKM->(ORDSETFOCUS("RBOOKM_G")) RBOOK->(ORDSETFOCUS("RBOOK0")) IF lSkid MPART->(ORDSETFOCUS("MPART_G")) RSKID->(ORDSETFOCUS("RSKID")) RSKIDQ->(ORDSETFOCUS("RSKIDQ")) ENDIF MSTRU->(dbSetRelation("MGRUP",{|| UPPER(FIELD->GRUP) },"UPPER(GRUP)")) IF !EMPTY(pSclad) MSTRU->(dbSetFilter({|| UPPER(FIELD->SCLAD) = UPPER(pSclad) },"UPPER(SCLAD)='"+UPPER(pSclad)+"'"),dbGoTop()) ENDIF MKART->(ORDSETFOCUS("MKART")) IF SELECT("TMKART")>0 TMKART->(ORDSETFOCUS("TAG_METKA")) ENDIF dbSelectArea("MKART") IF !(pType='9'.AND.pVid$'12').OR.(GlobalTask="TZ".AND.MemVar->lSetAlt_F4.AND.pVid!="0") RePrice(nAdd) ELSE aWork:={} ENDIF IF(lGrup0,EVAL(bGetGrup),NIL) IF (lOstData := ValType(dDate) = "D") MKART->(aStruct := dbStruct()) AADD(aStruct,{"Kol_Tek","N",19,4}) IF(iLabelNum=4,; CreateMetka(,"TMKART",aStruct,; "UPPER(STATUS+"+IF(YesMatReal,"","SCLAD+")+"GRUP+NNUM+PARTIA"+IF(YesMatReal,"+SCLAD",'')+")",; "UPPER(STATUS+"+IF(YesMatReal,"","SCLAD+")+"NAME+PARTIA)",; "UPPER(STATUS+"+IF(YesMatReal,"","SCLAD+")+"GRUP+NAME+PARTIA)",; ,; "UPPER(STATUS+"+IF(YesMatReal,"","SCLAD+")+"NNUM+PARTIA)",; iIF(EMPTY(GetFIFOLIFO()),NIL,"UPPER(STATUS+"+IF(YesMatReal,"","SCLAD+")+"GRUP+NNUM+IF(GetFIFOLIFO()='F',DTOS(DatePart),DESCEND(DTOS(DatePart)))+PARTIA"+IF(YesMatReal,"+SCLAD",'')+")"),; iIF(EMPTY(GetFIFOLIFO()),NIL,"UPPER(STATUS+"+IF(YesMatReal,"","SCLAD+")+"GRUP+NAME+IF(GetFIFOLIFO()='F',DTOS(DatePart),DESCEND(DTOS(DatePart)))+PARTIA)"); ),; CreateMetka(,"TMKART",aStruct,; "UPPER(STATUS+"+IF(YesMatReal,"","SCLAD+")+"GRUP+NNUM+PARTIA"+IF(YesMatReal,"+SCLAD",'')+")",; "UPPER(STATUS+"+IF(YesMatReal,"","SCLAD+")+"NAME+PARTIA)",; "UPPER(STATUS+"+IF(YesMatReal,"","SCLAD+")+"GRUP+NAME+PARTIA)",,,; iIF(EMPTY(GetFIFOLIFO()),NIL,"UPPER(STATUS+"+IF(YesMatReal,"","SCLAD+")+"GRUP+NNUM+IF(GetFIFOLIFO()='F',DTOS(DatePart),DESCEND(DTOS(DatePart)))+PARTIA"+IF(YesMatReal,"+SCLAD",'')+")"),; iIF(EMPTY(GetFIFOLIFO()),NIL,"UPPER(STATUS+"+IF(YesMatReal,"","SCLAD+")+"GRUP+NAME+IF(GetFIFOLIFO()='F',DTOS(DatePart),DESCEND(DTOS(DatePart)))+PARTIA)"); )) aStruct := NIL EVAL(bOstData) dbSelectArea("TMKART") ORDSETFOCUS("TAG_METKA") IF GlobalTask='05'.AND.lGrup0 dbSetRelation("MKART",{|| m->lSeekScl:=.F., IF(MKART->(DBSEEK(TMKART->(UPPER(GRUP+NNUM+PARTIA+SCLAD)))).AND.(m->lSeekScl:=.T.),TMKART->(UPPER(GRUP+NNUM+PARTIA+SCLAD)),TMKART->(UPPER(GRUP+NNUM+PARTIA))) },"UPPER(GRUP+NNUM+PARTIA+IF(m->lSeekScl,SCLAD,''))") ELSE dbSetRelation("MKART",{|| TMKART->(UPPER(GRUP+NNUM+PARTIA+SCLAD)) },"UPPER(GRUP+NNUM+PARTIA+SCLAD)") ENDIF ELSE SELECT MLABEL IF !(GlobalTask $ '03TZ'.AND.lPlus.AND.pVid+pType!='15'.AND. pVid+pType != '19').OR. (pVid='1'.AND.pType!='9')//.AND.TYPE('nKartPrih')='N' .AND.m->nKartPrih=1) SELECT MKART IF pVid+pType=='15' .OR. pVid+pType == '19' SELECT MLabel SET RELATION TO UPPER(pSclad+Grup) INTO MStru, UPPER(Grup+NNum) INTO SPR_PART SELECT MKart ENDIF IF GlobalTask != "05" .OR. MemVar->PricePart != 1 dbSetFilter({|| EMPTY(MKART->NNUM) .OR. !EMPTY(MKART->PARTIA) .OR. (EMPTY(MKART->PARTIA) .AND. MSCHET->XRAN != '1') },"EMPTY(MKART->NNUM) .OR. !EMPTY(MKART->PARTIA) .OR. (EMPTY(MKART->PARTIA) .AND. MSCHET->XRAN != '1')") ELSE dbSetFilter({|| EMPTY(MKART->PARTIA) },"EMPTY(MKART->PARTIA)") ENDIF ENDIF ENDIF EVAL(bAddSort) MLabel->(MakeLabelLRefer('RefLOnlyNN',,,,3,,,,,,,.T.)) MLabel->(MakeLabelLRefer('RefGNN',,,2,3)) MLabel->(MakeLabelLRefer('RefNNoffG',,,1,3,"pLastGrup","aIn[1]")) MKART->(; dbSetRelation("MLABEL",{|| UPPER(Grup+Nnum) },"UPPER(Grup+Nnum)"),; dbSetRelation("SPR_PART",{|| UPPER(Grup+NNum+Partia) },"UPPER(Grup+NNum+Partia)"),; dbSetRelation("MSCHET",{|| UPPER(SCHET) },"UPPER(SCHET)"),; dbSetRelation("MGRUP",{|| UPPER(GRUP) },"UPPER(GRUP)"); ) IF lSkid MLABEL->(; dbSetRelation("RSKID",{|| UPPER(FIELD->SKID) },"UPPER(SKID)"),; dbSetRelation("RSKIDQ",{|| UPPER(FIELD->SKIDQ) },"UPPER(SKIDQ)"),; dbSetRelation("MPART",{|| UPPER(FIELD->GRUP+FIELD->NNUM+pSchet+pAgentCode) },"UPPER(FIELD->GRUP+FIELD->NNUM+pSchet+pAgentCode)"); ) ENDIF IF Ord_<nBaseOrd.OR.Ord_>nBaseOrd+1 // Обязательно поле RePrice !!! Ord_:=nBaseOrd ENDIF ORDSETFOCUS(Ord_) PRIVATE cFind:=SPACE(30) IniString(cFindMacro,DBFILTER()) IF YesMatReal.AND.m->RSave_[1].AND.!EMPTY(m->FILTER_).AND.__MKART=="MKART" ShortSetFilter(m->pBag,m->pOrder,m->pTempIndex, aSort) ELSE ViewSortSeek(aSort,.F.,,) ENDIF GO TOP @ nTop,nLeft CLEAR TO nBottom,nRight //ТВ *@ nTop,nLeft TO nBottom,nRight DOUBLE *@ nTop,nLeft+2 SAY IF(lKarto,IF(ALIAS()='MLABEL',' Номенклатура товаров ',' Наличие запасов на складе '+IF(lOstData,'на '+DTOC(dDate)+' ','')),' Прайс-лист ') *@ nTop+2,nLeft+ 2 SAY 'Наименование:' COLOR cColor *@ nTop+3,nLeft+ 2 SAY 'Атрибуты....:' COLOR cColor @ nTop,nLeft+1 SAY "Гр." COLOR 'W+/W' @ nTop+2,nLeft+1 SAY 'EAN' COLOR 'b/w' @ nTop+3,nLeft+1 SAY 'Артикул' COLOR 'b/w' @ nTop+4,nLeft+1 SAY 'Емкость' COLOR 'b/w' @ nTop+3,nLeft+49 SAY 'R:' COLOR 'n/w' @ nTop+3,nLeft+60 SAY 'ST:' COLOR 'n/w' @ nTop+5,nLeft+1 SAY 'Н/номер' COLOR 'g/w*' @ nTop+5,nLeft+8 SAY ' ' COLOR 'b/w' @ nTop+5,nLeft+11 SAY ' Наименование ' COLOR 'g/w*' @ nTop+5,nLeft+45 SAY ' ' COLOR 'b/w' @ nTop+5,nLeft+49 SAY 'Ед.Изм.' COLOR 'g/w*' @ nTop+5,nLeft+56 SAY ' ' COLOR 'b/w' @ nTop+5,nLeft+59 SAY 'Свободно' COLOR 'g/w*' @ nTop+5,nLeft+67 SAY ' ' COLOR 'b/w' @ nTop+5,nLeft+71 SAY 'Заказать' COLOR 'g/w*' *@ nTop+5,nLeft+1 SAY cHead COLOR 'b/w' @ nBottom-4,nLeft+49 SAY 'Остаток:' COLOR 'b/w' @ nBottom-2,nLeft+11 SAY 'У.Е.' COLOR 'n/w' @ nBottom-2,nLeft+28 SAY 'РУБ' COLOR 'n/w' @ nBottom,nLeft+11 SAY 'У.Е.' COLOR 'n/w' @ nBottom,nLeft+28 SAY 'РУБ' COLOR 'n/w' @ nBottom-1,nLeft+30 SAY '%' COLOR 'n/w' @ nBottom-3,nLeft+32 SAY '│' @ nBottom-2,nLeft+32 SAY '│' @ nBottom-1,nLeft+32 SAY '│' @ nBottom,nLeft+32 SAY '│' @ nBottom-3,nLeft+33 SAY 'Итого заказ:' COLOR 'g/w' @ nBottom-2,nLeft+33 SAY 'Сумма:' COLOR 'b/w' @ nBottom-1,nLeft+33 SAY 'Короб_ST:' COLOR 'b/w' @ nBottom,nLeft+33 SAY 'Вес_кг:....' COLOR 'b/w' @ nBottom-2,nLeft+51 SAY 'У.Е.' COLOR 'n/w' @ nBottom-2,nLeft+70 SAY 'РУБ' COLOR 'n/w' @ nBottom-1,nLeft+56 SAY 'Штук:' COLOR 'b/w' @ nBottom,nLeft+56 SAY 'V_м3:' COLOR 'b/w' @ nTop-1,nLeft+1 SAY 'F1:Помощь' COLOR 'r/w' @ nBottom-1,nLeft+1 SAY LEFT('Цена '+LOWER(RCName1_),21) COLOR 'b/w' *@ nBottom,nLeft+11 SAY '┘:Ввод Tab:Перенос' @ nBottom,nLeft+76 SAY 'Поз.' COLOR 'b/w' //ТВ *IF !YesMatReal.OR.RPrim_ * @ nTop+2,nLeft+56 SAY 'Примеч:' COLOR cColor *ENDIF * *IF GlobalTask != "05" .OR. IF(pCodeCen=6,MemVar->PricePart != 1.AND.IsAddPricePartia(pNumber)[1],MemVar->PricePart != 1) * cHead := " Н/номер Партия Наименование "+SUBSTR(cHead,44) *ENDIF * *@ nTop+4,nLeft+1 SAY cHead COLOR cColor *@ nBottom-4,nLeft SAY '╠'+REPLICATE('═',nRight-nLeft-1)+'╣' *@ nBottom-2,nLeft SAY '╟'+REPLICATE('─',58) * *@ nBottom-4,nLeft+45 SAY '╤' *@ nBottom-3,nLeft+45 SAY '│' *@ nBottom-2,nLeft+45 SAY '┴' *@ nBottom-2,nLeft+59 SAY '┐' *@ nBottom ,nLeft+59 SAY '╧' *IF SELECT("NAME_TRE") != 0 .AND. NAME_TRE->(dbGoTop(),!EOF()) * SAYSCREEN(' Alt-I:Иерархия ',24,20) *ENDIF *IF GlobalTask!="TZ".OR.pVid!="0" * SAYSCREEN(' Ctrl-F2:Комплекты ',24,2) *ENDIF * *IF YesMatReal * @ 20,nLeft+47 SAY ' Остаток: ' COLOR cColor *ENDIF * * *@ nBottom-3,nLeft+46 SAY IF(GlobalTask = '05',' Итого заказ:',' Итого:') COLOR cColor * * * * *#ifdef __HARBOUR__ *IF !IsMsNt() *@ nBottom-1,nLeft+1 SAY '┘:Ввод Tab:Перенос F3:Сорт F6,Alt-F12:Флтр F7,Alt-F7:Иск │' *ELSE *@ nBottom-1,nLeft+1 SAY '┘:Ввод Tab:Перенос F3:Сорт F6,Alt-F6:Флтр F7,Alt-F7:Поиск│' *ENDIF * * * *#else *@ nBottom-1,nLeft+1 SAY '┘:Ввод Tab:Перенос F3:Сорт F6,Alt-F6:Флтр F7,Alt-F7:Поиск│' *#endif DispSum0() pStatus0:=IF(nBaseOrd<3.AND.!(nBaseOrd==1.AND.ALIAS()=="MKART"),' ','') IF ALIAS()=="TMKART" MKART->(ORDSETFOCUS("MKART")) MKART->(SetScope()) ENDIF IF lGrup0 WHILE .T. DO CASE CASE ALIAS()='MLABEL' SetScope('UPPER(Status+Grup)',UPPER(pStatus0+pLastGrup)) CASE nBaseOrd=2 SetScope('UPPER(Status+Sclad+Grup)',UPPER(pStatus0+pSclad+pLastGrup)) CASE nBaseOrd=4 SetScope('UPPER(Grup)',UPPER(pLastGrup)) CASE nBaseOrd=6 SetScope('UPPER(Sclad+Grup)',UPPER(pSclad+pLastGrup)) CASE nBaseOrd=1.AND.ALIAS()=="MKART"//Доп. прайс SetScope('UPPER(Sclad+Grup)',UPPER(pSclad+pLastGrup)) ENDCASE IF GlobalTask = "05" SetPriceFilter() ENDIF IF ORDNAME() = 'MY_FILTER' .AND. (ScopeMacro() # '.T.'.OR.ALIAS()='TMKART' ) .AND.(TYPE('RSave_')#'A'.OR. m->RSave_[1]).AND."MKART"$__MKART .AND. (dbGoTOP(),EOF().OR.ALIAS()='TMKART' ) m->pBag:=ORDBAGNAME() m->pOrder:=ORDSETFOCUS() //ORDNUMBER() m->Filter_ := ORDFOR() m->pTempIndex:=MyCloseFilter(30,0) MySetFilter(m->Filter_,,,,'без фильтра индекса') m->pBag:=ORDBAGNAME() m->pOrder:=ORDSETFOCUS() //ORDNUMBER() ENDIF m->nIndPrefer:=ORDName() m->nIndPrefer:= SaveVar("nIndPrefer","ИНД.PREFER"+GlobalTask+ALIAS()+IF(GlobalTask='TZ'.AND.TYPE('pVid')='C' ,pVid,''),IDENT_USER) IF !'MY_' $ m->nIndPrefer .AND. !EMPTY(m->nIndPrefer) ORDSETFOCUS(m->nIndPrefer) ENDIF IF TYPE(itWork_B_Code)='L'.AND. iWork_B_Code .AND. !EMPTY(m->nOrdBC) QuickBC(1,1,0,m->nOrdBC,'r/w*',,m->nPrefBC,IF(TYPE('bPreSeek')='B',m->bPreSeek,NIL)) ENDIF GO TOP Qbrowse(nTop+6,nLeft+1,nBottom-5,nRight-1,aBlockCols,COL_REFER,{||CoPrice(NIL,dDate,bKol,lPlus)},bColor,,bColor1,,aHotKey,,bSayHead,bKeyHead) m->nIndPrefer:=ORDName() SaveVar("nIndPrefer","ИНД.PREFER"+GlobalTask+ALIAS()+IF(GlobalTask='TZ'.AND.TYPE('pVid')='C' ,pVid,''),IDENT_USER,,,.T.) IF LASTKEY()=K_TAB EXIT ELSE EVAL(bGetGrup) IF(lOstData,EVAL(bOstData),NIL) EVAL(bAddSort) ENDIF ENDDO ELSE DO CASE CASE ALIAS()='MLABEL' SetScope('UPPER(Status)',UPPER(pStatus0));GO TOP CASE nBaseOrd=2 SetScope('UPPER(Status+Sclad)',UPPER(pStatus0+pSclad));GO TOP CASE nBaseOrd=6 SetScope('UPPER(Sclad)',UPPER(pSclad));GO TOP ENDCASE IF GlobalTask = "05" SetPriceFilter() ENDIF IF YesMatReal.AND.m->RSave_[1].AND.ORDNAME() = "MY_FILTER".AND.ALIAS()=="MKART" ELSE m->nIndPrefer:=ORDName() m->nIndPrefer:= SaveVar("nIndPrefer","ИНД.PREFER"+GlobalTask+ALIAS()+IF(GlobalTask='TZ'.AND.TYPE('pVid')='C' ,pVid,''),IDENT_USER) IF !'MY_' $ m->nIndPrefer .AND. !EMPTY(m->nIndPrefer) ORDSETFOCUS(m->nIndPrefer) ENDIF ENDIF IF TYPE(itWork_B_Code)='L'.AND. iWork_B_Code .AND. !EMPTY(m->nOrdBC) QuickBC(1,1,0,m->nOrdBC,'r/w*',,m->nPrefBC,IF(TYPE('bPreSeek')='B',m->bPreSeek,NIL)) ENDIF GO TOP Qbrowse(nTop+6,nLeft+1,nBottom-5,nRight-1,aBlockCols,COL_REFER,; {||CoPrice(NIL,dDate,bKol,lPlus)},bColor,,bColor1,,aHotKey,,bSayHead,bKeyHead) IF !'MY_' $ ORDNAME() .AND. !EMPTY(ORDNAME()) m->nIndPrefer:=ORDName() SaveVar("nIndPrefer","ИНД.PREFER"+GlobalTask+ALIAS()+IF(GlobalTask='TZ'.AND.TYPE('pVid')='C' ,pVid,''),IDENT_USER,,,.T.) ENDIF ENDIF IF LASTKEY()!=K_ESC AddIns(lSkid) ENDIF REAL_TIME(2) END SEQUENCE IF YesMatReal.AND.m->RSave_[1].AND.ORDNAME() = "MY_FILTER".AND.ALIAS()=="MKART" m->pBag:=ORDBAGNAME() m->pOrder:=ORDSETFOCUS() //ORDNUMBER() m->Filter_ := ORDFOR() m->pTempIndex:=MyCloseFilter(30,0,'Не удаляя') ELSE MyCloseFilter() IF ALIAS()=="MKART" Filter_:='' ENDIF ENDIF IF pVid!="0".AND.SELECT("TMKART")>0 DeleteMetka() ENDIF nWork:=0 aWork:={} NilNum() SETCOLOR(cLastColor) RestSetKey(aSetKey) RESTSCREEN(,,,,sRest) WSELECT(aWindow[2,6]) nLastKey:=LASTKEY() SETLASTKEY(0) dbCloseBases(aBase) IF nLastKey!=K_ESC IF !(GlobalTask $ '03TZ'.AND.pType='9') aWindow[2,7]:RefreshAll() InitObj(aWindow[2,7]) IF GlobalTask!='05' IF LEN(aWindow)>2.AND.MCodOp->Status=0 aWindow[3,7]:cargo[1]:=AddPro({},aWindow[2,7]:cargo[1]) //Обновляем полностью IF _LPROV DispWindow(aWindow,3,'С возвратом в окно','С полным обновлением') ENDIF ELSE RasSum() ENDIF ENDIF ELSE SELECT MDocM GO TOP WSELECT(aWindow[1,6]) IF ValType(GetList) = "A" .AND. LEN(GetList) >= 2 .AND. ValType(GetList[2]) = "O" m->GetList[2]:display() ENDIF WSELECT(aWindow[2,6]) ENDIF IF YesMatReal DispSum1() ELSE DispSum() ENDIF ENDIF SETLASTKEY(nLastKey) HELP_CODE:=cHelp_Code //ТВ *RETURN (2) WSELECT(nWin) DISPSUM1() RETURN .F. |
Code: |
STATIC FUNCTION StrEd(nKol,lNul,nLen,cEd)
//----------------------------------------------------------------------------// LOCAL nKol1 IF(cEd = NIL,cEd := IF(nWork != 0,aWork[nWork,2],RetEd()),NIL) nLen:=IF(nLen==NIL,13,nLen) aEd:=IniEd(,,,,@nEd) IF (nEd:=ASCAN(aEd,{|x|UPPER(x[1])==UPPER(cEd)})) = 0 IF lNul==NIL RETURN StrS(nKol,nLen,iMGRUP->Kol_) * RETURN StrS(nKol,nLen,0) ELSE RETURN Str(nKol,nLen,iMGRUP->Kol_) ENDIF ENDIF PRIVATE Q,pFor pFor:=aEd[nEd,3] m->Q:=1 m->R:=IF(nWork = 0,RetEdR(),aWork[nWork,20]) nKol1:=1 IF !EMPTY(pFor).AND.TYPE(pFor)='N' nKol1:=&pFor ENDIF IF lNul==NIL RETURN StrS(Div(nKol,nKol1),nLen,IF(UPPER(aEd[nEd,1]) = UPPER(__OSN_ED),iMGRUP->Kol_,iMGRUP->Kol1_)) * RETURN StrS(Div(nKol,nKol1),13,IF(UPPER(aEd[nEd,1]) = UPPER(__OSN_ED),iMGRUP->Kol_,iMGRUP->Kol1_)) * RETURN StrS(Div(nKol,nKol1),nLen,0) ENDIF *RETURN Str(Div(nKol,nKol1),13,IF(UPPER(aEd[nEd,1]) = UPPER(__OSN_ED),iMGRUP->Kol_,iMGRUP->Kol1_)) RETURN Str(Div(nKol,nKol1),nLen,IF(UPPER(aEd[nEd,1]) = UPPER(__OSN_ED),iMGRUP->Kol_,iMGRUP->Kol1_)) STATIC FUNCTION IsVisiablePos(nKolTek,nKolRes,lFromReal) //-------------------------------------------------------------------------- //Фактически фор условие для показа строки картотеки по Shift,Ctrl+F4 LOCAL lRet:= (ROUND(RetKolEd(nKolTek),ACCUR_ED) > 0).OR.; (ROUND(nKolTek,MGRUP->KOL_) > 0) //Если не Real //.OR. Чтоб показать кол-во даже если оно в доп.ед=0, а в основных не 0 IF !EMPTY(lFromReal).AND.TYPE('RTMC_')=='N' //Только для заказов! IF m->RTMC_== 0 //Все товары вкл. в прайс lRet:= .T. ELSEIF m->RTMC_== 1 //Только имеющиеся на складе lRet:= (ROUND(RetKolEd(nKolTek),ACCUR_ED) > 0).OR.; (ROUND(nKolTek,MGRUP->KOL_) > 0) ELSEIF m->RTMC_== 2 //Свободные для заказа lRet:= (ROUND(RetKolEd(nKolTek+IF(m->RLimit_,MKART->KolLim,0)),ACCUR_ED) > 0).OR.; (ROUND(nKolTek+IF(m->RLimit_,MKART->KolLim,0),MGRUP->KOL_) > 0) ENDIF ENDIF RETURN lRet STATIC FUNCTION NilNum() SETKEY(ASC('0'),NIL) SETKEY(ASC('1'),NIL) SETKEY(ASC('2'),NIL) SETKEY(ASC('3'),NIL) SETKEY(ASC('4'),NIL) SETKEY(ASC('5'),NIL) SETKEY(ASC('6'),NIL) SETKEY(ASC('7'),NIL) SETKEY(ASC('8'),NIL) SETKEY(ASC('9'),NIL) RETURN(NIL) STATIC FUNCTION GetaSort() ****************** MEMVAR nBaseOrd, aSort, lOstData IF lGrup0 .AND. !EMPTY(pLastGrup) aSort:={; {'- ном.номерам ','Ном.номер?:','NNum','TRIM(UPPER(pStatus0+pSclad+pLastGrup+aIn[1]))','@K',,'RefNNoffG',nBaseOrd},; {'- наименованиям ','Наименование?:','Space(10)','TRIM(UPPER(pStatus0+pSclad+pLastGrup+aIn[1]))','@K',,,nBaseOrd+IF(nBaseOrd==1.AND.ALIAS()=="MKART",4,1)}; } ELSE aSort:={; {'- группам,ном.номерам ',{'Код группы?:','Ном. номер?: '},{'Grup','NNum'},'TRIM(UPPER(Get_Index()+aIn[1]+aIn[2]))',{'@K','@K'},{"VGRight()",NIL},{IF(YesMatReal,'MGrup','RefG'),'RefGNN'},nBaseOrd},; {'- группам,наименованиям ',{'Код группы?: ','Наименование?:'},{'Grup','SPACE(10)'},'TRIM(UPPER(Get_Index()+aIn[1]+aIn[2]))',{'@K','@K'},{"VGRight()",NIL},{IF(YesMatReal,'MGrup','RefG'),NIL},nBaseOrd+IF(nBaseOrd==1.AND.ALIAS()=="MKART",4,1)}; } ENDIF IF !EMPTY(GetFIFOLIFO()) IF lGrup0 .AND. !EMPTY(pLastGrup) AADD(aSort,{'- ном.номерам ('+GetFIFOLIFO('наименование')+') ','Ном.номер?:','NNum','TRIM(UPPER(pStatus0+pSclad+pLastGrup+aIn[1]))','@K',,'RefNNoffG',ORDNAME(nBaseOrd)+GetFIFOLIFO()}) AADD(aSort,{'- наименованиям ('+GetFIFOLIFO('наименование')+') ','Наименование?:','Space(10)','TRIM(UPPER(pStatus0+pSclad+pLastGrup+aIn[1]))','@K',,,ORDNAME(nBaseOrd+IF(nBaseOrd==1.AND.ALIAS()=="MKART",4,1))+GetFIFOLIFO()}) ELSE AADD(aSort,{'- группам,ном.номерам ('+GetFIFOLIFO('наименование')+') ',{'Код группы?:','Ном. номер?: '},{'Grup','NNum'},'TRIM(UPPER(Get_Index()+aIn[1]+aIn[2]))',{'@K','@K'},{"VGRight()",NIL},{IF(YesMatReal,'MGrup','RefG'),'RefGNN'},ORDNAME(nBaseOrd)+GetFIFOLIFO()}) AADD(aSort,{'- группам,наименованиям ('+GetFIFOLIFO('наименование')+') ',{'Код группы?: ','Наименование?:'},{'Grup','SPACE(10)'},'TRIM(UPPER(Get_Index()+aIn[1]+aIn[2]))',{'@K','@K'},{"VGRight()",NIL},{IF(YesMatReal,'MGrup','RefG'),NIL},ORDNAME(nBaseOrd+IF(nBaseOrd==1.AND.ALIAS()=="MKART",4,1))+GetFIFOLIFO()}) ENDIF ENDIF iIF(lGrup0 .AND. !EMPTY(pLastGrup),(m->nOrdBC := aSort[1,8],; m->nPrefBC := 'UPPER(pStatus0+pSclad+pLastGrup)',; m->bPreSeek:={|x|ORDSETFOCUS(nBaseOrd),UPPER(m->pStatus0+pSclad)+SeekBCInKart(x,.T.,.T.)}),NIL) IF lOstData nBaseOrd := 1 aSort[1,8] := "TAG_METKA" aSort[2,8] := "TAG_LETKA" IF !EMPTY(GetFIFOLIFO()) aSort[3,8] := "TAG_TETKA" aSort[4,8] := "TAG_VETKA" ENDIF IF !(lGrup0.AND. !EMPTY(pLastGrup)) AADD(aSort,{'- наименованиям ','Наименование?:','Space(10)','TRIM(UPPER(" "+pSclad+aIn[1]))','@K',,,}) aTAIL(aSort)[8] := "TAG_SETKA" ENDIF ENDIF IF iTypeGen.AND.m->lYesBarCode .AND. GlobalTask # 'TZ' .AND. !(lGrup0.AND.!EMPTY(pLastGrup)) IF iLabelNum=4 aadd(aSort,{'- по штрих-кодам ','Штрих-код?: ','SPACE(13)','UPPER(" "+pSclad+aIn[1])','@K',NIL,'RefLOnlyNN',IF(ALIAS()='MKART',IF(EMPTY(pSclad),'MKART_BCNS','MKART_BC'),IF(ALIAS()='MLABEL','TAG_NNUM','TAG_RETKA'))}) m->nOrdBC := aTAIL(aSort)[8] m->nPrefBC := 'UPPER(" "+pSclad)' ELSE m->nPrefBC := '' IF ALIAS() # 'MLABEL' m->bPreSeek:={|x|ORDSETFOCUS(IF(ALIAS()='MKART',IF(EMPTY(pSclad),4,2),'TAG_METKA')),SeekBCInKart(x,EMPTY(pSclad))} m->nOrdBC :=IF(ALIAS()='MKART',IF(EMPTY(pSclad),4,2),'TAG_METKA') aadd(aSort,{'- штрих-кодам ','Штрих-код?: ','SPACE(13)','SeekBCInKart(aIn[1],EMPTY(pSclad))','@K XXXXXXXXXXXXX',NIL,,IF(ALIAS()='MKART',IF(EMPTY(pSclad),4,2),'TAG_METKA'),,,,,.F.}) ELSE m->nOrdBC :=GetTagBCode() aadd(aSort,{'- штрих-кодам ','Штрих-код?: ',GetFieldBCode(),'SPACE(1)+UPPER(aIn[1])','@K XXXXXXXXXXXXX',NIL,,GetTagBCode()}) ENDIF ENDIF IF ALIAS()#'TMKART' .AND. !EMPTY(pSclad) .AND. ASCAN(aSort,{|x| x[1] = '- наименованиям ' }) = 0 AADD(aSort,{'- наименованиям ','Наименование?:','Space(10)','TRIM(UPPER(" "+pSclad+aIn[1]))','@K',,,IF(ALIAS()='MKART','MKART_SA',IF(ALIAS()='MLABEL','MLABEL_T','TAG_SETKA'))}) ENDIF ELSE IF iTypeGen.AND.m->lYesBarCode.AND.GlobalTask=="TZ" .AND. !(lGrup0.AND.!EMPTY(pLastGrup)) AADD(aSort,{'- штрих-кодам ','Штрих-код : ',GetFieldBCode(),; 'UPPER(" "+aIn[1])','@K XXXXXXXXXXXXX',NIL,; IF(iLabelNum=4,"RefLOnlyNN",NIL),GetTagBCode(),,"MLABEL",; IF(lOstData,"TAG_METKA","MKART_P3"),; "UPPER("+IF(lOstData,"' '+","")+"pSclad+MLABEL->Grup+MLABEL->NNUM)",.F.}) m->nOrdBC :=IF(EMPTY(pSclad),'MKART_BCNS','MKART_BC') m->nPrefBC :='UPPER(" "+pSclad)' m->bPreSeek:={|x|ORDSETFOCUS(IF(lOstData,"TAG_METKA","MKART_P3")),SeekBCInKart(x,!lOstData,EMPTY(pSclad))} ELSE iIF(iTypeGen.AND.m->lYesBarCode.AND.GlobalTask=="TZ",(m->nOrdBC :=IF(EMPTY(pSclad),'MKART_BCNS','MKART_BC') , m->nPrefBC := 'UPPER(" "+pSclad)'),) ENDIF ENDIF RETURN .T. STATIC FUNCTION PrintCHeck() LOCAL nWi:=WSELECT(),i LOCAL aSetKey:=SaveSetKey() LOCAL nArea:=SELECT() LOCAL nOrd:=MLabel->(ORDSETFOCUS("MLABEL")) LOCAL nRec:=MLabel->(RECNO()) LOCAL nOrd1:=MGrup->(ORDSETFOCUS("MGRUP")) LOCAL nRec1:=MGrup->(RECNO()) LOCAL cHead:='ОТЧЕТ'+IF(pVid='0',' ПО ОСТАТКАМ',IF(pVid='1',' О ВОЗВРАТАХ',' О ПРОДАЖАХ')) LOCAL aHeads:={},aHeader:={},aFields:={},cFormat,aGroup:={} LOCAL cText:=IF(pVid='0','Остаток',IF(pVid='2','Продано','Возврат')),lc:=0 LOCAL cFile:=TEMPFILE(PATH_TMP) LOCAL cTemp:=TEMPFILE(PATH_TMP,"DBF") LOCAL cTempI:=TEMPFILE(PATH_TMP,"CDX") LOCAL nSumma:=0 LOCAL aStru:={; {'Grup','C',5,0},; {'NNum','C',13,0},; {'Ed','C',5,0},; {'Kol','N',19,4},; {'Cena','N',19,4},; {'Sum','N',19,CURR_MAIN+1}; } LOCAL bFooter := {|| ; Str2File(" "),; Str2File("Итого: "+NumToRus(nSumma)),; Str2File(" "),; Str2File(" "),; Str2File(" Подпись _____________________________"); } IF pVid="2" cHead:="ТОВАРНЫЙ ЧЕК" ENDIF SELECT 0 DBCREATE(cTemp,aStru) CLOSE NetUseExc('Temp',cTemp) INDEX ON UPPER(FIELD->GRUP+FIELD->NNUM) TAG TAG_1 TO (cTempi) SET RELATION TO UPPER(Grup+NNum) INTO MLabel,UPPER(Grup) INTO MGrup FOR i:=1 TO LEN(aWork) if aWork[i,3]<>0 //azat DT 9843 IF !DBSEEK(UPPER(SUBSTR(aWork[i,1],1,5)+SUBSTR(aWork[i,1],6,13))) AddRec() REPLACE Grup WITH SUBSTR(aWork[i,1],1,5),; NNum WITH SUBSTR(aWork[i,1],6,13) ENDIF REPLACE Ed WITH aWork[i,2],; Kol WITH Kol+aWork[i,3],; Cena WITH aWork[i,4],; Sum WITH Sum+aWork[i,3]*aWork[i,4] nSumma+=aWork[i,3]*aWork[i,4] endif NEXT WSELECT(0) dbGoTop() AADD(aHeader,' '+m->LBL_NAME) AADD(aHeader,SPACE(1)) AADD(aHeads,"┌─────┬─────────────┬───────────────────────────────────┬─────┬─────────────────────────────────────────────┐") AADD(aHeads,"│Груп-│ Номен- │ Наименование │Един.│"+PADC(cText+", "+m->GlobalValuta,45)+ "│") AADD(aHeads,"│ па │ клатурный │ товарно-материальных ценностей │измер├─────────────┬─────────────┬─────────────────┤") AADD(aHeads,"│ │ номер │ │ │ │ │ Стоимость в │") AADD(aHeads,"│ │ │ │ │ Количество │ Цена │ отпускных ценах │") AADD(aHeads,"├─────┼─────────────┼───────────────────────────────────┼─────┼─────────────┼─────────────┼─────────────────┤") AADD(aHeads,"│ 01 │ 02 │ 03 │ 04 │ 05 │ 06 │ 07 │") AADD(aHeads,"├─────┼─────────────┼───────────────────────────────────┼─────┼─────────────┼─────────────┼─────────────────┤") cFormat:= "│XXXXX│XXXXXXXXXXXXX│XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX│XXXXX│QQQQQQQQQQQQQ│RRRRRRRRRRRRR│RRRRRRRRRRRRRRRRR│" AADD(aHeader,PADC(cHead+' N '+ALLTRIM(pNumDoc),LEN(cFormat))) AADD(aHeader,PADC('ПО СКЛАДУ (СЕКЦИИ) '+ALLTRIM(pSclad),LEN(cFormat))) IF EMPTY(pDate1).OR.pDate==pDate1 AADD(aHeader,PADC('за '+DTOC(pDate),LEN(cFormat))) ELSE AADD(aHeader,PADC('за период с '+DTOC(pDate)+' по '+DTOC(pDate1),LEN(cFormat))) ENDIF AADD(aHeader,'') AADD(aFields,'Grup') AADD(aFields,'NNum') AADD(aFields,'MLabel->Name') AADD(aFields,'Ed') AADD(aFields,'Kol') AADD(aFields,'Cena') AADD(aFields,'Sum') AADD(aGroup,{"UPPER(Grup)",{||TRIM(MGrup->Name)},"Итого по группе",5,7}) IF (lc:=TotRep(aHeader,aFields,aHeads,cFormat,{5,7},aGroup,bFooter,; cFile,.F.,.T.,.T.,0.9*LASTREC())) > 0 View(cFile,lc,LEN(cFormat)) ENDIF CLOSE MLabel->(ORDSETFOCUS(nOrd)) MLabel->(dbGoTo(nRec)) MGrup->(ORDSETFOCUS(nOrd1)) MGrup->(dbGoTo(nRec1)) WSELECT(nWi) RestSetKey(aSetKey) FERASE(cTemp) FERASE(cTempI) FERASE(cFile) SELECT(nArea) RETURN (1) STATIC FUNCTION SpraEd(lPlus) //--------------------------------------------------------------------------// LOCAL nKol00:=IF(nWork==0,0,aWork[nWork,3]),sRest LOCAL nTop:=6,nLeft:=3,i,nKol1,nKol11, nRight, nAdd := 0 LOCAL nBottom, lWork LOCAL cDisp := "" IF LEN(aEd)<1 RETURN(1) ENDIF lWork := nWork !=0 .AND. UPPER(aEd[1,1])!=UPPER(aWork[nWork,2]) nBottom:=nTop+8+IF(RetNumEd() != 1 .OR. lWork,2,1)+3 nRight:=nLeft+72 PRIVATE Q,R,pFor sRest:=SAVESCREEN() ShadowBox(' Справка ',nTop,nLeft,nBottom+IF((ALIAS() = "MKART" .OR. ALIAS() = "TMKART") .AND. SPR_PART->(!EOF()),3,0),nRight,COL_SHEADR) SAYSCREEN(CENTER(TRIM(MLabel->Name)+IF((ALIAS() = "MKART" .OR. ALIAS() = "TMKART") .AND. SPR_PART->(!EOF()) .AND. !EMPTY(SPR_PART->Name)," ("+TRIM(SPR_PART->Name)+")",""),72),nTop+1,nLeft+1) IF TYPE("Sort_") = "A" IF !EMPTY(MLABEL->SORT) cDisp := ALLTRIM(Sort_[1])+":"+ALLTRIM(MLABEL->SORT) ENDIF IF !EMPTY(MLABEL->RAZMER) cDisp := ALLTRIM(cDisp+ " "+ALLTRIM(Razmer_[1])+":"+ALLTRIM(MLABEL->RAZMER)) ENDIF SAYSCREEN(cDisp,nTop+2,nLeft+3) cDisp := "" IF !EMPTY(MLABEL->MARKA) cDisp := ALLTRIM(Marka_[1])+":"+ALLTRIM(MLABEL->MARKA) ENDIF IF !EMPTY(MLABEL->PROFIL) cDisp := ALLTRIM(cDisp+" "+ALLTRIM(Profil_[1])+":"+ALLTRIM(MLABEL->PROFIL)) ENDIF SAYSCREEN(cDisp,nTop+3,nLeft+3) ENDIF nTop++ cDisp := "" IF TYPE("Koef_") = "A" .AND. MemVar->Koef_[2] cDisp := ALLTRIM(MemVar->Koef_[1])+":"+STR(MLabel->Koef,13,3) ENDIF IF TYPE("Koef1_") = "A" .AND. MemVar->Koef1_[2] cDisp := ALLTRIM(cDisp+" "+MemVar->Koef1_[1])+":"+STR(MLabel->Koef1,13,3) ENDIF SAYSCREEN(cDisp,nTop+3,nLeft+3) nTop += 4 IF (ALIAS() = "MKART" .OR. ALIAS() = "TMKART") .AND. SPR_PART->(!EOF()) SAYSCREEN('Поставщик: '+ALLTRIM(SPR_PART->Ag_Name),nTop,nLeft+3) SAYSCREEN('Поступило: '+DTOC(SPR_PART->Data_P),nTop,nLeft+47); nTop++ IF TYPE("Sertif_") = "A" .AND. MemVar->Sertif_[2] cDisp := ALLTRIM(ALLTRIM(MemVar->Sertif_[1])+":"+Spr_Part->Sertificat) ENDIF SAYSCREEN(cDisp,nTop,nLeft+3) SAYSCREEN('Годно до '+DTOC(SPR_PART->Data_End),nTop,nLeft+47); nTop++ IF TYPE("Z_Name_") = "A" .AND. MemVar->Z_Name_[2] cDisp := ALLTRIM(ALLTRIM(MemVar->Z_Name_[1])+":"+Spr_Part->Z_Name) ENDIF SAYSCREEN(cDisp,nTop,nLeft+3) SAYSCREEN('Изготовлено '+DTOC(SPR_PART->Data_Iz),nTop,nLeft+47); nTop++ SAYSCREEN('Страна:'+SPR_PART->Country,nTop,nLeft+3) SAYSCREEN('Номер ГТД:'+SPR_PART->GTD,nTop,nLeft+37); nTop++ IF !EMPTY(m->Attr1_) .OR. !EMPTY(m->Attr2_) IF !EMPTY(m->Attr1_) SAYSCREEN(PADR(ALLTRIM(m->Attr1_)+':'+SPR_PART->ATTRIB1,33),nTop,nLeft+3) ENDIF IF !EMPTY(m->Attr2_) SAYSCREEN(PADR(ALLTRIM(m->Attr2_)+':'+SPR_PART->ATTRIB2,34),nTop,nLeft+37) ENDIF nTop++ ENDIF ENDIF SAYSCREEN(' ─────┬───────────────┬───────────────────────────────┬───────────────',nTop,nLeft+1) SAYSCREEN(' Ед. │К-во осн.единиц│'+PADC(IF(EMPTY(lPlus),'Цена отпуска за единицу','Цена за единицу'),31)+'│ Количество ',nTop+1,nLeft+1) SAYSCREEN(' измер│в ед.измерения │ '+GlobalValuta+' │ '+IF(LNEWCENA,IsAddPricePartia(pNumber)[2],MLabel->CodeVal)+' │'+PADC(IF(EMPTY(lPlus),' к отпуску ',''),15),nTop+2,nLeft+1) SAYSCREEN(' ─────┼───────────────┼───────────────┼───────────────┼───────────────',nTop+3,nLeft+1) FOR i:=1 TO LEN(aEd) IF IF(!lWork,RetNumEd() = i,UPPER(aEd[i,1])=UPPER(aWork[nWork,2])) .OR. i = 1 nAdd++ pFor:=aEd[i,3] m->Q:=1 IF nWork>0.AND.UPPER(aEd[i,1])==UPPER(aWork[nWork,2]) m->R:=aWork[nWork,20] ELSE m->R:=aEd[i,4] ENDIF nKol1:=1 IF !EMPTY(pFor).AND.TYPE(pFor)='N' nKol1:=&pFor ENDIF nKol11:=Div(nKol00,nKol1) SAYSCREEN(' '+aEd[i,1]+'│'+StrS(nKol1,15,4)+'│'+; STR(IF(LNEWCENA,RealAddPrice(pNumber,MKart->(Grup+NNum+IF(IsAddPricePartia(pNumber)[1],Partia,"")),,MKart->Sclad,,aEd[i,1],aEd[i,4]),GetCena('O',nKol00,,i,,,,,,,nWork)),15,3)+'│'+; STR(IF(LNEWCENA,RealAddPrice(pNumber,MKart->(Grup+NNum+IF(IsAddPricePartia(pNumber)[1],Partia,"")),.F.,MKart->Sclad,,aEd[i,1],aEd[i,4]),GetCena('V',nKol00,,i,,,,,,,nWork)),15,3)+'│'+; StrS(nKol11,15,IF(i==1,MGRUP->Kol_,MGRUP->Kol1_)),nTop+3+nAdd,nLeft+1) ENDIF NEXT INKEY(0) RESTSCREEN(,,,,sRest) RETURN(1) |
Code: |
STATIC FUNCTION DispSum0()
LOCAL nSum:=0,nVSum:=0,nKolPos:=0,nKol,nWork0:=nWork,nKolAll:=0,nStAll:=0,nKol2 LOCAL nVall:=0,nWeightAll:=0 LOCAL cCodeVal:=IF(EMPTY(nWork),GlobalValuta,aWork[1,9]) LOCAL nRecL:=MLabel->(RECNO()) LOCAL nRecG:=MLabel->(RECNO()) AEVAL(aWork,{|x,j|nWork:=j,; MLabel->(DBSEEK(UPPER(LEFT(x[1],18)))),; MGrup->(DBSEEK(UPPER(LEFT(x[1],5)))),; nSum+=x[4]*(nKol:=ValEd(x[3])),; nVSum+=x[8]*nKol,; nKolAll+=nKol,; nKol2:=IF(Mlabel->KOEF>0,ROUND(nKol/Mlabel->KOEF,1),0),; nStAll+=nKol2,; nVall+=nKol2*MLABEL->KOEF1,; nWeightAll+=nKol2*mlabel->ndattr1,; nKolPos+=IF(!EMPTY(x[3]),1,0),; IF(!EMPTY(cCodeVal).AND.UPPER(cCodeVal)!=UPPER(x[9]),cCodeVal:=SPACE(3),NIL); }) //ТВ *@ 21,60 SAY StrS(nKolPos,15,0)+' '+IF(EMPTY(nKolPos),SPACE(3),'поз') COLOR 'n/w' *@ 22,60 SAY StrS(nSum,15,CURR_MAIN)+' '+IF(EMPTY(nSum),SPACE(3),GlobalValuta) COLOR 'n/w' @ 24,71 SAY StrS(nKolPos,4,0)+' '+IF(EMPTY(nKolPos),SPACE(3),'поз') COLOR 'b/w' @ 22,39 SAY IF(nSum>0,StrS(nSum,11,CURR_MAIN),SPACE(11)) COLOR 'n*/w' @ 23,62 SAY IF(nKolAll>0,StrS(nKolAll,7,0),SPACE(7)) COLOR 'n/w' @ 23,43 SAY IF(nStAll>0,StrS(nStAll,7,1),SPACE(7)) COLOR 'n/w' @ 24,64 SAY IF(nVAll>0,StrS(nVAll,5,1),SPACE(5)) COLOR 'n/w' @ 24,43 SAY IF(nWeightAll>0,StrS(nWeightAll,7,0),SPACE(7)) COLOR 'n/w' IF (YesMatReal.AND.!RValuta_).OR.EMPTY(cCodeVal).OR.UPPER(cCodeVal)==UPPER(GlobalValuta) //TB * @ 23,60 CLEAR TO 23,78 @ 22,56 SAY SPACE(13) COLOR 'n*/w' ELSE Valuta->(DBSEEK(UPPER(cCodeVal))) //ТВ * @ 23,60 SAY StrS(nVSum,15,Valuta->Accuracy)+' '+IF(EMPTY(NVSum),SPACE(3),cCodeVal) COLOR 'n/w' @ 22,56 SAY StrS(nVSum,13,Valuta->Accuracy) COLOR 'n*/w' ENDIF nWork:=nWork0 MLabel->(DBGOTO(nRecL)) MGrup->(DBGOTO(nRecG)) aEd:=IniEd(,,,,@nEd) RETURN(NIL) STATIC FUNCTION ChangeEd(nAdd) //----------------------------------------------------------------------------// LOCAL n, nKol1, nSum1, nKolOld Local x IF LEN(aEd)<=1 RETURN(1) ENDIF IF (nWork==0) AADD(aWork,{UPPER(Grup+NNum+Partia+Sclad),X_ED,0,0,0,0,' ',0,MLabel->CodeVal,; MLabel->CenaVal,; __RLABEL->OCena1,__RLABEL->OCena2,__RLABEL->OCena3,__RLABEL->OCena4,; __RLABEL->VCena1,__RLABEL->VCena2,__RLABEL->VCena3,__RLABEL->VCena4,0,X_R,0,0,Partia,X_ED,X_R,0,0,-1,; Space(6),0,0,CTOD(''),SPACE(10),SPACE(10),SPACE(6),SPACE(6),__CENAN,0,0; // victor спецодежда }) nWork:=LEN(aWork) nEd:=RetNumEd() aEd := IniEd(,,,,@nEd) InsOldKol(nAdd,aWork,nWork) ENDIF n:=nEd n++ IF n>LEN(aEd) n:=1 ENDIF IF 'R'$aEd[n,3] InputR(n,.T.) ENDIF SetCenaX(aWork,nWork,aWork[nWork,3],aEd[n,1],aEd[n,4]) nEd := n RETURN(3) STATIC FUNCTION PriceFilter(cFltr0,cScopeMacro) STATIC aIn0 LOCAL nMaxFiSizF := 34 LOCAL nBottom := QScroll()[3], aBase := {'MSclad'} LOCAL nTopF,nLeftF,nBottomF,nRightF,aHeadsF,aRefF,aPictF,aWhenF,aValidF,nUniMode,bScrInit,bPost,aGetBlockF,bScrPost,bPreGet,bPostGet,nTag Local nHeadsLenView,nLen,i IF GLOBALTASK = "05" PUBLIC pVid := "2" ENDIF GetHeads(@aHeadsF,,@aPictF,@aWhenF,@aValidF,"ФИЛЬТР В ПРАЙСЕ",@aRefF,@aGetBlockF,@bPreGet,@bPostGet,@bScrInit,@bScrPost,,,,,) AADD(aHeadsF,{PADR('EAN',30,'.')+':','MLabel->COD_OKDP','0','2'}) IF GLOBALTASK = "05" ERASE pVid ENDIF MGrup->(MakeGrupRefer('PGrup','aIn[1]',3)) MLABEL->(MakeLabelLRefer('PLabel',,,,3)) SPR_PART->(MakePartiaRef('PPartia','aIn[3]','aIn[1]','aIn[2]',3)) MLABEL->(dbOpenBases(aBase,,,,.T.)) MSCLAD->(MakeScladRefer('PSclad','aIn['+NTOC(ASCAN(aRefF,{|x| ValType(x) = 'C' .AND. UPPER(x) == 'PSCLAD' }))+']',2)) nHeadsLenView := 0 nLen := LEN(aHeadsF) FOR i := 1 to nLen IF !(LEN(aHeadsF[i]) >= 8.AND.aHeadsF[i][8] = 0) nHeadsLenView := nHeadsLenView + 1 // если элемент выводится, то вперед. ENDIF NEXT i nTopF := nBottom - nHeadsLenView - 2 nLeftF:=(MAXCOL()-LEN(aHeadsF[1,1])-nMaxFiSizF-4)/2 nBottomF:=nBottom-1 nRightF := nLeftF+LEN(aHeadsF[1,1])+nMaxFiSizF+3 QInput(nTopF,nLeftF,nBottomF,nRightF,aHeadsF,0,aRefF,aPictF,aWhenF,aValidF,nUniMode,bScrInit,bPost,cFltr0,"ФИЛЬТР",aGetBlockF,bScrPost,cScopeMacro,bPreGet,bPostGet,nTag) ClearRefer('PSclad') ClearRefer('PGrup') ClearRefer('PLabel') ClearRefer('PPartia') MLABEL->(dbCloseBases(aBase)) RETURN(2)//3 STATIC FUNCTION RePrice(nAdd) //--------------------------------------------------------------------------// LOCAL i,j,nSum:=0,nArea:=SELECT() LOCAL nRec:=RECNO(),GetList:={} LOCAL aMat:=aWindow[2,7]:cargo[1],cMat,cKey, aBase := {} LOCAL nKol,nKol1:=0,nKol0 // ┌ кол-во отгружено LOCAL bSeek:= {|cKey,cMat|; IF(ALIAS()=="TMKART",MKART->(DbSeek(UPPER(cKey+SUBSTR(cMat,Q_SCLAD,6)))).OR.MKART->(DBSEEK(UPPER(cKey))),),; MGRUP->(dbSeek(UPPER(SUBSTR(cMat,Q_GRUP,L_GRUP)))),; MLABEL->(dbSeek(UPPER(SUBSTR(cMat,Q_GRUP,L_GRUP)+SUBSTR(cMat,Q_NNUM,L_NNUM)))); } LOCAL bAddPrice := {|j,cPartia,nKol,nKol1,lxKol,nPos|; IF(; !DBSEEK(UPPER(IF((nPos:=AT('STATUS',INDEXKEY()))>0.AND.nPos<8 ,' ','')+(cKey:=SUBSTR(cMat,Q_GRUP,L_GRUP)+SUBSTR(cMat,Q_NNUM,L_NNUM)+cPartia)+SUBSTR(cMat,Q_SCLAD,6))),; DBSEEK(UPPER(IF((nPos:=AT('STATUS',INDEXKEY()))>0.AND.nPos<8 ,' ','')+cKey)),; NIL; ),; EVAL(bSeek,cKey,cMat),; lxKol := nKol = 0 .OR. ROUND(X_KOL_ED(nKol),IF(UPPER(X_ED) = UPPER(__OSN_ED),iMGRUP->Kol_,iMGRUP->Kol1_)) != 0,; nKol0:=IF(RBookM->(DBSEEK(UPPER(IF(YesMatReal.AND.SELECT("MDOC") != 0 .AND. MDOC->(FieldPos("DOPCODE")) != 0 .AND. nAdd = S_LIB_EDIT,MDOC->DOPCODE,pDopCode)+cKey+SUBSTR(cMat,Q_SCLAD,6)))),RBookM->Kol,0),; IF( j=0,; AADD(aWork,{; cKey+IF(EMPTY(Sclad),SUBSTR(cMat,Q_SCLAD,6),Sclad),; IF(lxKol,X_ED,iMLABEL->ED),; nKol,; ValSum(VAL(SUBSTR(cMat,Q_CENAOUT,L_CENA)),IF(lxKol,X_ED,iMLABEL->ED),IF(lxKol,X_R,1)),; nKol1,; VAL(SUBSTR(cMat,Q_SUM1,L_SUM)),; IF(nKol1>=nKol,'1',' '),; ValSum(VAL(SUBSTR(cMat,Q_VCENA,15)),IF(lxKol,X_ED,iMLABEL->ED),IF(lxKol,X_R,1)),; SUBSTR(cMat,Q_CODEVAL,3),; VAL(SUBSTR(cMat,Q_CENAVAL,13)),; VAL(SUBSTR(cMat,Q_OCENA1,15)),; VAL(SUBSTR(cMat,Q_OCENA2,15)),; VAL(SUBSTR(cMat,Q_OCENA3,15)),; VAL(SUBSTR(cMat,Q_OCENA4,15)),; VAL(SUBSTR(cMat,Q_VCENA1,15)),; VAL(SUBSTR(cMat,Q_VCENA2,15)),; VAL(SUBSTR(cMat,Q_VCENA3,15)),; VAL(SUBSTR(cMat,Q_VCENA4,15)),; nKol0,; IF(lxKol,X_R,1),; VAL(SUBSTR(cMat,Q_KOL10,L_KOLR)),; VAL(SUBSTR(cMat,Q_SUM10,15)),; SUBSTR(cMat,Q_PARTIA,L_PARTIA),; IF(lxKol,X_ED,iMLABEL->ED),; IF(lxKol,X_R,1),; 0,; 0,; -1,; // заявлено в заказах 2 VAL(SUBSTR(cMat,Q_KOLR,13)); //29 }),; (; aWork[j,3]+=nKol,; aWork[j,19]+=nKol0,; aWork[j,5]+=nKol1,; aWork[j,6]+=VAL(SUBSTR(cMat,Q_SUM1,15)),; aWork[j,7]:=IF(nKol1>=nKol,'1',' '); ); ); } aWork:={} IF pVid='0' OpenBase({'OMDocM'},{'MDocM'}) SetScope('UPPER(Sclad+Vid+Type+CodeDoc+NumDoc)',UPPER(pSclad+pVid+pType+pCodeDoc+pNumDoc)) GO TOP __MKART->(PushData(ORDNAME())) __MKART->(ORDSETFOCUS(IF(__MKART=="TMKART","TAG_METKA","MKART_SN"))) WHILE !EOF() nKol:=nKol0:=Kol cKey:=Grup+NNum+Partia IF __MKART->(dbSeek(UPPER(" "+pSclad+cKey))).AND.Kol!=__MKART->KolTek IF (j:=ASCAN(aWork,{|x|UPPER(x[1])==UPPER(cKey+pSclad)}))==0 AADD(aWork,{cKey+pSclad,Ed1,nKol,; Div(SumOutR,KolOut),; 0,0,'',; CenaOut,pCodeVal,pCenaVal,; '','',; '','',; '','',; '','',; nKol0,FIELD->R,0,0,SPACE(L_PARTIA),Ed1,FIELD->R,0,0,-1,; Space(6),0,0,CTOD(''),SPACE(10),SPACE(10),SPACE(6),SPACE(6),__CENAN,0,0; // victor спецодежда }) ELSE aWork[j,3]+=nKol aWork[j,LEN(aWork[j])-1]+=nKol0 ENDIF ENDIF SKIP ENDDO __MKART->(ORDSETFOCUS(PopData())) ELSEIF GlobalTask="TZ".AND.(pVid='2'.OR.pVid='1') dbSelectArea("MDocM") dbPush() SetScope('UPPER(Sclad+Vid+Type+CodeDoc+NumDoc)',UPPER(pSclad+pVid+pType+pCodeDoc+pNumDoc)) dbGoTop() WHILE !EOF() nKol:=nKol0:=Kol cKey:=Grup+NNum+Partia MGRUP->(dbSeek(UPPER(MDOCM->GRUP))) MLABEL->(dbSeek(UPPER(MDOCM->GRUP+MDOCM->NNUM))) IF (j:=ASCAN(aWork,{|x|UPPER(x[1])==UPPER(cKey+pSclad)}))==0 AADD(aWork,{cKey+pSclad,RetEd(),nKol,; Div(SumOutR,KolOut),; 0,0,'',; CenaOut,pCodeVal,pCenaVal,; '','',; '','',; '','',; '','',; nKol0,FIELD->R,0,0,SPACE(L_PARTIA),RetEd(),FIELD->R,0,0,-1,; Space(6),0,0,CTOD(''),SPACE(10),SPACE(10),SPACE(6),SPACE(6),__CENAN,0,0; // victor спецодежда }) ELSE aWork[j,3]+=nKol aWork[j,LEN(aWork[j])-1]+=nKol0 ENDIF dbSkip() ENDDO dbPop() ELSEIF LEN(aMat)>0 IF YesMatReal AADD(aBase,'RBOOKM') ELSE AADD(aBase,'MDOCM') ENDIF dbOpenBases(aBase) IF !YesMatReal SELECT MDOCM ORDSETFOCUS('MDocM_W') SET FILTER TO EMPTY(Input1) ELSEIF MemVar->PricePart = 1 MDOCM->(ORDSETFOCUS('MDocM_Z')) ENDIF SELECT (nArea) FOR i:=1 TO LEN(aMat) nKol0:=0 cMat:=aMat[i] IF YesMatReal EVAL(bAddPrice,ASCAN(aWork,{|x|UPPER(x[1])==UPPER(SUBSTR(cMat,Q_GRUP,L_GRUP)+SUBSTR(cMat,Q_NNUM,L_NNUM)+SUBSTR(cMat,Q_PARTIA,L_PARTIA)+SUBSTR(cMat,Q_SCLAD,6))}),SUBSTR(cMat,Q_PARTIA,L_PARTIA),VAL(SUBSTR(cMat,Q_KOL,L_KOLR)),VAL(SUBSTR(cMat,Q_KOL1,L_KOLR))) ELSE //В случае склада // x[2] - Ed1 // x[3] - nKol // x[4] - nCenaOutR // x[8] - nCenaOut // x[9] - CodeVal - валюта прайса // x[19] - старое кол-во // x[24] - старая единица измерения // x[25] - старый коэффициент R // x[26] - KOL1 - списание // x[27] - KOL2 - возврат // x[28] - ссылка номеров на строки счетов-фактур // x[29] - аморт.группа // victor спецодежда 8 // x[30] - общий износ с.одежда // x[31] - то же налог // x[32] - дата переоценки МБП // x[33] - счет затрат с/о // x[34] - то же налог // x[35] - аналитика по счету затрат с/о // x[36] - то же налог // x[37] - Налоговая сумма // x[38] - период экспл // х[39] - норма списания DBSEEK(UPPER((cKey:=SUBSTR(cMat,P_GRUP,L_GRUP)+SUBSTR(cMat,P_NNUM,L_NNUM)+SUBSTR(cMat,P_PARTIA,L_PARTIA))+pSclad)) nKol:=VAL(SUBSTR(cMat,P_KOL,L_KOL)) IF nAdd != S_LIB_ADD .AND. MDocM->(DBSEEK(UPPER(MDOC->SCLAD+MDOC->VID+MDOC->TYPE+MDOC->CODEDOC+MDOC->NUMDOC+cKey))) nKol0:=MDocM->Kol ENDIF IF (j:=ASCAN(aWork,{|x|UPPER(x[1])==UPPER(cKey+pSclad)}))==0 AADD(aWork,{cKey+pSclad,SUBSTR(cMat,P_ED1,5),nKol,; Div(VAL(SUBSTR(cMat,P_SUMOUTR,L_SUM)),VAL(SUBSTR(cMat,P_KOLOUT,L_KOL))),; 0,0,'',; VAL(SUBSTR(cMat,P_CENAOUT,L_CENA)),pCodeVal,pCenaVal,; '','',; '','',; '','',; '','',; 0,VAL(SUBSTR(cMat,P_R,15)),0,0,SPACE(L_PARTIA),SUBSTR(cMat,P_ED1,5),VAL(SUBSTR(cMat,P_R,15)),VAL(SUBSTR(cMat,P_KOL1,L_KOL)),VAL(SUBSTR(cMat,P_KOL2,L_KOL)),VAL(SUBSTR(cMat,P_OPERFACT,17)),; SUBSTR(cMat,P_A_GRUP,6),; // victor спецодежда 8 VAL(SUBSTR(cMat,P_IZN_ALL,L_SUM)),; VAL(SUBSTR(cMat,P_IZN_ALLN,L_SUM)),; CTOD(SUBSTR(cMat,P_PEREOC_D,8)),; SUBSTR(cMat,P_SCHETZM,10),; SUBSTR(cMat,P_SCHETZMN,10),; SUBSTR(cMat,P_ZCODEM,6),; SUBSTR(cMat,P_ZCODEMN,6),; DIV(VAL(SUBSTR(aMat[i],P_SUMN,L_SUM)),nKol),; VAL(SUBSTR(aMat[i],P_PERIOD,3)),; VAL(SUBSTR(aMat[i],P_IZNOS,3)); }) ELSE aWork[j,3]+=nKol ENDIF ENDIF NEXT IF nAdd=S_LIB_EDIT .AND. !YesMatReal dbPush('MDOCM',"MDOCM","",{"UPPER(Sclad+Vid+Type+CodeDoc+NumDoc)",UPPER(MDOC->Sclad+MDOC->Vid+MDOC->Type+MDOC->CodeDoc+MDOC->NumDoc),,.F.,{"MDOCM"}},"") DO WHILE !EOF() IF (j:=ASCAN(aWork,{|x|UPPER(x[1])==UPPER(MDOCM->Grup+MDOCM->NNum+MDOCM->PARTIA+pSclad)})) # 0 aWork[j,19]+=MDOCM->Kol ENDIF SKIP ENDDO dbPop() ENDIF dbCloseBases(aBase) ENDIF SELECT(nArea) RETURN (NIL) //3 STATIC FUNCTION CoPrice(nOrd,dDate,bKol,lPlus) LOCAL cColor:='n/w*' LOCAL cColor1:='n/w' LOCAL nKol:=IF(nWork>0,aWork[nWork,3],0),i LOCAL nKol0:=IF(nWork>0,aWork[nWork,19],0) LOCAL nDif,nCen0,nAt,cAt,nCenV0 LOCAL aArray PRIVATE Q,R nEd := IF(LEN(aEd) > 1 .AND. nWork > 0,ASCAN(aEd,{|x|UPPER(x[1])==UPPER(aWork[nWork,2])}),RetNumEd()) IF(nEd > LEN(aEd),nEd := 1,NIL) //ТВ *IF ORDNAME() = "MY_FILTER" * SAYSCREEN('Фильтр(Ctrl-F6:снятие фильтра) ',2,45) *ELSE * SAYSCREEN(REPLICATE('═',32),2,45) *ENDIF *IF pVid+pType=='19' *ELSEIF LEN(aSclad)>50 * IF pVid+pType!='19' * @ 3,56 SAY 'Склад:' COLOR COL_HEADPRICE * ENDIF * @ 3,63 SAY __MKART->Sclad COLOR cColor1 *ELSEIF (i:=ASCAN(aSclad,{|x|UPPER(__MKART->Sclad)==UPPER(SUBSTR(x,2,6))}))>0 * @ 3,46 SAY SUBSTR(aSclad[i],2,6)+SUBSTR(aSclad[i],9) COLOR cColor1 *ENDIF *@ 3,2 SAY MGrup->(Code+' '+Name) COLOR cColor1 IF ORDNAME() = "MY_FILTER" SAYSCREEN('Фильтр(Ctrl-F6:снятие фильтра) ',6,45,'r/w') ELSE SAYSCREEN(REPLICATE(' ',32),6,45) ENDIF IF (i:=ASCAN(aSclad,{|x|UPPER(__MKART->Sclad)==UPPER(SUBSTR(x,2,6))}))>0 @ 2,49 SAY LEFT(SUBSTR(aSclad[i],2,6)+' '+SUBSTR(aSclad[i],9),30) COLOR 'G*/w' ENDIF @ 2,4 SAY MGrup->(Code+' '+Name) COLOR 'w+/w' IF pCodecen=6 @ 20,56 SAY ' '+StrS(oRedKol(__MKART->KolTek,RetEd(IF(IsAddPricePartia(pNumber)[3],.F.,0))),10,IF(UPPER(RetEd(IF(IsAddPricePartia(pNumber)[3],.F.,0))) = UPPER(__OSN_ED),iMGRUP->Kol_,iMGRUP->Kol1_))+" "+PADR(RetEd(IF(IsAddPricePartia(pNumber)[3],.F.,0)),5) COLOR 'n*/w' ELSE @ 20,56 SAY ' '+StrEd(__MKART->KolTek,,10) COLOR 'n*/w' @ 20,68 SAY PADR(IF(LEN(aEd)>0.AND.nEd>0,TRIM(aEd[nEd,1]),Mlabel->ed),5) COLOR 'n/w' ENDIF //ТВ *IF YesMatReal * IF pCodecen=6 * @ 20,56 SAY ' '+StrS(oRedKol(__MKART->KolTek,RetEd(IF(IsAddPricePartia(pNumber)[3],.F.,0))),13,IF(UPPER(RetEd(IF(IsAddPricePartia(pNumber)[3],.F.,0))) = UPPER(__OSN_ED),iMGRUP->Kol_,iMGRUP->Kol1_))+" "+PADR(RetEd(IF(IsAddPricePartia(pNumber)[3],.F.,0))+" ",5,"=") COLOR cColor1 * ELSE * @ 20,56 SAY ' '+StrEd(__MKART->KolTek)+' '+PADR(IF(LEN(aEd)>0.AND.nEd>0,TRIM(aEd[nEd,1]),'')+' ',5,'═') COLOR cColor1 * ENDIF *ELSEIF GlobalTask $ '03TZ09SR' * IF dDate != NIL .AND. STR(RetKolEd(MKART->KolTek),14,MGRUP->KOL_) != STR(RetKolEd(__MKART->Kol_Tek),14,MGRUP->KOL_) * @ 20,41 SAY REPLICATE('═',79-41) COLOR cColor1 * IF MemVar->TypeOst != 1 * @ 20,48 SAY ' Тек.ост.: ' COLOR COL_HEADPRICE * @ 20,59 SAY ' '+StrEd(MKART->KolTek,'Val')+' '+IF(LEN(aEd)>0.AND.nEd>0,PADR(TRIM(aEd[nEd,1])+' ',5,'═'),' ') COLOR cColor1 * ELSE * IF MKART->KolTek > __MKART->Kol_Tek * @ 20,48 SAY ' Тек.ост.: ' COLOR COL_HEADPRICE * ELSE * @ 20,41 SAY ' Ост.на '+DTOC(dDate)+': ' COLOR COL_HEADPRICE * ENDIF * @ 20,59 SAY ' '+StrEd(MAX(MKART->KolTek+EVAL(bKol),__MKART->Kol_Tek+EVAL(bKol)),'Val')+' '+IF(LEN(aEd)>0.AND.nEd>0,PADR(TRIM(aEd[nEd,1])+' ',5,'═'),' ') COLOR cColor1 * ENDIF * ELSEIF EMPTY(lPlus) .AND. YesReal .AND.__MKART->KolTek-nKol-IF(!IS_DOP_NUM,__MKART->KOLRES,0)+IF(m->RLimit_.AND.GlobalTask = "05",__MKART->KolLim,0)+nKol0 != __MKART->KolTek * @ 20,48 SAY ' Свободно: ' COLOR COL_HEADPRICE * @ 20,59 SAY ' '+StrEd(MKART->(KolTek-nKol-IF(!IS_DOP_NUM,KolRes,0)+IF(m->RLimit_.AND.GlobalTask = "05",MKART->KolLim,0)+nKol0),'Val')+' '+; * IF(LEN(aEd)>0.AND.nEd>0,PADR(TRIM(aEd[nEd,1])+' ',5,'═'),' ') COLOR cColor1 * ELSE * @ 20,41 SAY REPLICATE('═',79-41) COLOR cColor1 * ENDIF *ENDIF *@ 4,15 SAY MLabel->Name+' ' COLOR cColor1 *@ 5,15 SAY PADR(; * IF(Marka_[2].AND.!EMPTY(MLabel->Marka),TRIM(Marka_[1])+':'+TRIM(MLabel->Marka),'')+; * ' '+IF(Sort_[2].AND.!EMPTY(TRIM(MLabel->Sort)),TRIM(Sort_[1])+':'+TRIM(MLabel->Sort),'')+; * ' '+IF(Profil_[2].AND.!EMPTY(MLabel->Profil),TRIM(Profil_[1])+':'+TRIM(MLabel->Profil),'')+; * ' '+IF(Razmer_[2].AND.!EMPTY(MLabel->Razmer),TRIM(Razmer_[1])+':'+TRIM(MLabel->Razmer),''),64) *IF (!YesMatReal.OR.RPrim_) .AND. !EMPTY(MKART->Prim) * @ 4,63 SAY MKART->Prim COLOR cColor1 *ENDIF @ 3,11 SAY MLabel->Name COLOR 'b/w' @ 4,11 SAY MLabel->COD_OKDP COLOR cColor1 @ 5,11 SAY MLabel->Marka COLOR cColor1 @ 5,63 SAY MLabel->Koef PICTURE "9999" COLOR cColor1 @ 6,11 SAY MLabel->Razmer COLOR cColor1 IF LEN(aEd)>0.AND.nEd>0 @ 5,51 SAY STR(IF(aEd[nEd,4]>0,IF((nAt:=AT(UPPER('ABS('),UPPER(aEd[nEd,3])))>0,; (cAt:=RIGHT(aEd[nEd,3],LEN(aEd[nEd,3])-nAt-3),nAt:=AT(')',cAt),; VAL(LEFT(cAt,nAt-1)) ),1),1),4) COLOR 'n/w' ELSE @ 5,51 SAY STR(1,3) COLOR 'n/w' ENDIF //ТВ *IF LEN(aEd)>=1 * SAYSCREEN(' <Пробел>:Смена разм ',24,35) * SAYSCREEN(' F10:Справка ',24,55) *ELSE * SAYSCREEN('═════════════════════',24,35) * SAYSCREEN('═════════════',24,55) *ENDIF *SAYSCREEN(' F9:Печать ',24,67) *IF GlobalTask="TZ" * SAYSCREEN(PADC(" Прайс-лист:"+ALLTRIM(aCodeCen[pCodeCen+1,2])+" ",38,'═'),20,1) * @ 21,2 SAY StrS(TzPrice(MKart->Sclad,MKart->(Grup+NNum+IF(IsPricePartia(MKart->Sclad),Partia,"")),pCodeCen,pDate),16,3) COLOR cColor * @ 21,19 SAY GlobalValuta COLOR cColor1 * @ 21,24 SAY SPACE(20) COLOR cColor1 *ELSEIF GlobalTask="05".AND.pCodeCen=6 * aArray:=IsAddPricePartia(pNumber) * SAYSCREEN(PADC(" Цена прайс-листа "+ALLTRIM(pNumber)+" ",38,'═'),20,1) * @ 21,2 SAY StrS(RealAddPrice(pNumber,MKart->(Grup+NNum+IF(aArray[1],Partia,"")),,MKart->Sclad,'со скидкой-накидкой'),16,3) COLOR cColor * @ 21,19 SAY GlobalValuta COLOR cColor1 * IF UPPER(aArray[2])!=UPPER(GlobalValuta) * @ 21,24 SAY StrS(RealAddPrice(pNumber,MKart->(Grup+NNum+IF(aArray[1],Partia,"")),.F.,MKart->Sclad,'со скидкой-накидкой'),16,3) COLOR cColor * @ 21,41 SAY aArray[2] COLOR cColor1 * ELSE * @ 21,24 SAY SPACE(20) COLOR cColor1 * ENDIF *ELSE * @ 21,2 SAY StrS(IF(nWork > 0,aWork[nWork,4],GetCena('O',nKol,,nEd)),16,3) COLOR cColor * @ 21,19 SAY GlobalValuta COLOR cColor1 * SAYSCREEN(PADC(TRIM(' Цена '+GetCenaName(nKol))+IF(GlobalTask=='05' .AND. pCodeCen != 0,' с учетом скидок/накидок ',' ')38,'═'),20,1) * IF (YesMatReal.OR.(YesReal.AND.RValuta_)).AND.UPPER(MLabel->CodeVal)!=UPPER(GlobalValuta) * @ 21,24 SAY StrS(IF(nWork > 0,aWork[nWork,8],GetCena('V',nKol,,nEd)),16,3) COLOR cColor * @ 21,41 SAY MLabel->CodeVal COLOR cColor1 * ELSE * @ 21,24 SAY SPACE(20) COLOR cColor1 * ENDIF *ENDIF *IF LEN(aEd)>1 * SAYSCREEN('<Пробел>:Смена размерности (R)',23,1) *ELSE * SAYSCREEN('<Пробел>:Смена размерности (R)',23,1,'n+/w') *ENDIF IF pCodeCen=6 aArray:=IsAddPricePartia(pNumber) SAYSCREEN("Цена доп. пр "+ALLTRIM(pNumber)+' со ск./нак.',21,1,"b/w") @ 22,1 SAY StrS(RealAddPrice(pNumber,MKart->(Grup+NNum+IF(aArray[1],Partia,"")),,MKart->Sclad,'со скидкой-накидкой'),9,3) COLOR cColor @ 22,17 SAY StrS(RealAddPrice(pNumber,MKart->(Grup+NNum+IF(aArray[1],Partia,"")),.F.,MKart->Sclad,'со скидкой-накидкой'),10,2) COLOR cColor ELSE SAYSCREEN(LEFT('Цена '+GetCenaName(nKol),19)+' со ск./нак.',21,1,"b/w") @ 22,1 SAY StrS(IF(nWork > 0,aWork[nWork,4],GetCena('O',nKol,,nEd)),9,3) COLOR cColor @ 22,17 SAY StrS(IF(nWork > 0,aWork[nWork,8],GetCena('V',nKol,,nEd)),10,2) COLOR cColor ENDIF nCen0:=MLABEL->OCENA1 nCenV0:=MLABEL->VCENA1 IF nEd!=NIL.AND.nEd>1 .AND. !EMPTY(aEd[nEd,3]) Q:=1 R:=IF(nWork==NIL.OR.nWork=0,aEd[nEd,4],aWork[nWork,20]) nCen0:= nCen0*&(aEd[nEd,3]) nCenV0:= nCenV0*&(aEd[nEd,3]) ENDIF IF nCen0>0 nDif:=IF(nWork > 0,(aWork[nWork,4]/nCen0-1)*100,(GetCena('O',nKol,,nEd)/nCen0-1)*100) IF nDIF<0 @ 23,22 SAY StrS(nDif,7,2) COLOR 'r/w' ELSE @ 23,22 SAY StrS(nDif,7,2) COLOR 'g/w' ENDIF ELSE @ 23,22 SAY SPACE(7) COLOR 'n/w' ENDIF @ 24,1 SAY StrS(nCen0,9,3) COLOR cColor @ 24,17 SAY StrS(nCenV0,10,2) COLOR cColor RETURN(1) |
Code: |
STATIC FUNCTION AddIns(lSkid)
//--------------------------------------------------------------------------// LOCAL nCena,nKolOut,nArea:=SELECT(),aSales,x, cMat LOCAL aPar,aParam, aOldMat := M->aWindow[2,7]:cargo[1], nSum, nSumOutR LOCAL cLen:=1,nPoz,nTzKol,nTzCena LOCAL lSmartCen:=.F., nSmartCen :=0 PRIVATE ST:=0,ST1:=0,SP,SPV,SPPV,SPP,S,SV,S0,Q0,NI,NDS,CSH,SFN,PA,TP,TN,EU,TZR1M,TZR2M,TZR3M,TZR1MN,TZR2MN,TZR3MN,DOP1,DOP2,DOP3,PP1,PP2,R,MEM_MODEL,DEF_PCENA0 PRIVATE SPV0,S_NEW,S_OLD,C_NEW,C_OLD, OCN1,OCN2,OCN3,OCN4,OCV1,OCV2,OCV3,OCV4,CenSpCon, SNal PRIVATE nIzn_All, nIzn_AllN, pA_Grup, dPereoc_D, cSchetZM, cSchetZMN, cZCodeM, cZCodeMN // victor спецодежда Valuta->(DBSEEK(UPPER(pCodeVal))) M->aWindow[2,7]:cargo[1]:={} M->aWindow[2,7]:cargo[2]:=1 IF TYPE("pCodeOper") != "C" PRIVATE pCodeOper := " " ENDIF PushKart() IF GlobalTask = "05" .OR. IS_MODEL aPar := DefParam() aParam := RetTypeParam(5) ENDIF IF pVid = '1' .AND. GlobalTask # "05" IF (iMOVES->YesCalc.AND.!EMPTY(MCodOp->Model)) SELECT MCalc1 SetScope('UPPER(Vid+Code)',UPPER(pVid+MCodOp->Model)) GO TOP InitCalc() ENDIF ENDIF lSmartCen := FILE(LoadPath()+'SCLAD\SmartCen.prg') FOR nWork:=1 TO LEN(aWork) x:=aWork[nWork] SeekKart(x[1]) IF GlobalTask="TZ" x[4]:=TzPrice(MKart->Sclad,MKart->(Grup+NNum+IF(IsPricePartia(MKart->Sclad),Partia,"")),pCodeCen,pDate) x[5]:=0 ENDIF // В случае склада // x[2] - Ed1 // x[3] - nKol // x[4] - nCenaOutR // x[8] - nCenaOut // x[9] - CodeVal - валюта прайса // x[19] - старое кол-во // x[24] - старая единица измерения // x[25] - старый коэффициент R // x[26] - KOL1 - списание // x[27] - KOL2 - возврат // x[28] - ссылка номеров на строки счетов-фактур // x[29] - аморт.группа // victor спецодежда 8 // x[30] - общий износ с.одежда // x[31] - то же налог // x[32] - дата переоценки МБП // x[33] - счет затрат с/о // x[34] - то же налог // x[35] - аналитика по счету затрат с/о // x[36] - то же налог // x[37] - Налоговая сумма // x[38] - период экспл // х[39] - норма списания IF (x[3] > 0) .or. (GlobalTask="TZ") cMat := IF(YesMatReal,; (; x[4] := ValEd(ROUND(x[4],CURR_MAIN)),; nSumOutR := ROUND(x[3]*x[4],CURR_MAIN),; x[3] := ValSum(ROUND(ValEd(x[3]),IF(UPPER(x[2]) = UPPER(__OSN_ED),iMGRUP->Kol_,iMGRUP->Kol1_))),; x[8] := ValEd(x[8]),; IIF(lI_NET != NIL.AND.ValType(lI_NET)=="L".AND.lI_NET,x[29] := x[3],x[29] := 0),; MakeMat1(x[3],x[4],nSumOutR,,RIGHT(x[1],6),; x[5],x[6],x[9],x[8],x[10],; x[11],x[12],x[13],x[14],x[15],; x[16],x[17],x[18],x[21],x[22],; 0,0,0,,x[29]); // заявлено в заказах ),; (; // victor спецодежда 9 + ) m->pA_Grup:= x[29],; m->nIzn_All:= x[30],; m->nIzn_AllN:= x[31],; m->dPereoc_D:= x[32],; m->cSchetZM := x[33],; m->cSchetZMN := x[34],; m->cZCodeM := x[35],; m->cZCodeMN := x[36],; MakeMat(; (nKolOut:=ValEd(x[3])),x[2],x[3],(nCena:=IF(UPPER(pCodeVal)==UPPER(GlobalValuta),; iIF(lSmartCen.AND. (nSmartCen:=FILEEVAL(LoadPath()+'SCLAD\SmartCen.prg',{LEFT(x[1],5),SUBSTR(x[1],6,13),SUBSTR(x[1],19,5)}))#0,nSmartCen,x[4]),; IF(UPPER(pCodeVal)==UPPER(x[9]),; x[8],; Div(x[4],EVAL(Global_BCurs,pCenaVal,Valuta->Myltiply))))),; x[2],; SUM_OUT,SUM_WORK,SUM_WORK,ROUND(x[3]*__CENA,IF(GlobalTask # "05".AND.pVid=='2',CURR_MAIN,3)),x[39],; //Victor v3.3 // victor спецодежда 2 x[38],MLabel->Ed,IF( GlobalTask == 'SR' , SPACE(10), MSTRU->Schet ),x[26],,; ,,x[27],0,0,; x[28],GetKolOld(aOldMat),.T.,x[20],,; ,ROUND(x[3]*x[37],IF(GlobalTask # "05".AND.pVid=='2',CURR_MAIN,3)); )); ) IF GlobalTask = "05" .OR. IS_MODEL EditCalc(.F.,.F.,2,@aPar,@cMat,@aParam,@pModel) ENDIF IF pVid = '1' .AND. GlobalTask # "05" IF !EMPTY(MCodOp->Model).AND.iMOVES->YesCalc SetParCalc(cMat) IF GetaCalc()=NIL .OR. LEN(GetaCalc()) = 0 m->SNal:=m->S := m->SP ENDIF AlgosLoc(.F.,'NoEval') cMat:=STUFF(cMat,P_SUMFACT,L_SUM,STR(m->S,L_SUM,CURR_MAIN)) cMat:=STUFF(cMat,P_SUMN,L_SUM,STR(m->SNal,L_SUM,CURR_MAIN)) IF MSchet->Uchet>'1' cMat:=STUFF(cMat,P_SUM,L_SUM,STR(m->S,L_SUM,CURR_MAIN)) IF !_ROZNICA cMat:=STUFF(cMat,P_CENA0,L_CENA0,STR(DIV(m->S,m->Q0),L_CENA0,L_RCENA0)) ENDIF ENDIF ENDIF ENDIF cMat:=STUFF(cMat,IF(GlobalTask = '05',Q_NUMSTR,P_NUMSTR),5,STR(LEN(M->aWindow[2,7]:cargo[1])+1,5,0)) AADD(M->aWindow[2,7]:cargo[1],cMat) ENDIF IF GlobalTask='09'.AND. pVid+pType = '26'.AND. x[19]#x[3] .AND. TYPE('m->pUpdateSO')='L'.AND. !m->pUpdateSO // victor спецодежда if MBPSchet->(dbSEEK(UPPER(MCodOp->Schet_A))) m->pUpdateSO:=LinMetod(x[38],,,pDate) ENDIF IF GlobalTask='09'.AND. pVid+pType = '26'.AND. x[19]#x[3] .AND. TYPE('m->pUpdateSON')='L'.AND. !m->pUpdateSON // victor спецодежда if MBPSchet->(dbSEEK(UPPER(MCodOp->Schet_A))) m->pUpdateSON:=LinMetod(x[38],'nalog',x[37],pDate) ENDIF NEXT IF pVid='1'.AND. GlobalTask # "05" .AND. YesCommon() ProCalc(.F.,,M->aWindow[2,7]:cargo[1]) ENDIF M->pUpDated:=.T. #IFDEF TZ_TASK #define LEN_ARRAY 4000 IF GlobalTask $ '03TZ'.AND.pType='9' IF pVid!="0" aSales:={} AEVAL(aWork,{|x| IF((x[3] > 0) .or. (GlobalTask="TZ"),AADD(aSales,{pSclad,IF(pVid='0','2',IF(pVid$'2','0','1')),; SUBSTR(x[1],1,L_GRUP),SUBSTR(x[1],6,L_NNUM),x[3]-IF(pVid="0",0,x[19]),x[4],; SUBSTR(x[1],19,L_PARTIA),__CENAN}),NIL) }) IF LEN(aSales)>0 SendSale(aSales,pDate,,'с нал.ценой') ENDIF ELSE aSales:={{}} SELECT __MKART IF OrdName()='MY_FILTER' MyCloseFilter() ENDIF dbGoTop() DO WHILE !EOF() nPoz:=ASCAN(aWork,{|x| UPPER(x[1])==__MKART->(UPPER(Grup+NNum+Partia+Sclad)) }) nTzKol:=IF(EMPTY(nPoz),__MKART->Koltek-IF(YesMatReal,IF(m->RLimit_,-KolLim,0)+KolRes,0),aWork[nPoz,3]) nTzCena:=IF(EMPTY(nPoz),TzPrice(__MKART->Sclad,__MKART->(Grup+NNum+IF(IsPricePartia(__MKART->Sclad),Partia,"")),pCodeCen,pDate),aWork[nPoz,4]) IF LEN(aSales[cLen])<=LEN_ARRAY AADD(aSales[cLen],{pSclad,; '2',; __MKART->Grup,; __MKART->NNum,; nTzKol,; nTzCena,; __MKART->Partia,; __CENAN}) ELSE cLen++ AADD(aSales,{{pSclad,'2',__MKART->Grup,__MKART->NNum,nTzKol,nTzCena,__MKART->Partia,__CENAN}}) ENDIF dbSkip() ENDDO AEVAL(aSales,{|x| IF(!EMPTY(x),SendSale(x,pDate,,'с нал.ценой'),) }) ENDIF aWindow[2,7]:cargo[1]:={} ENDIF #ENDIF PopKart() SELECT(nArea) RETURN (0) STATIC FUNCTION ValEd(nKol,cEd,nR) //----------------------------------------------------------------------------// // Переводит кол-во из основных ед. в дополнительные LOCAL nKol1 aEd:=IniEd(,,,,@nEd) cEd := IF(cEd = NIL,UPPER(aWork[nWork,2]),UPPER(cEd)) nR := IF(nR = NIL,aWork[nWork,20],nR) IF nWork=0.OR.(nEd:=ASCAN(aEd,{|x|UPPER(x[1])==cEd}))=0 RETURN RetKolEd(nKol) ENDIF PRIVATE Q,pFor m->pFor:=aEd[nEd,3] m->Q:=1 m->R:=nR nKol1:=1 IF !EMPTY(pFor).AND.TYPE(pFor)='N' nKol1:=&pFor ENDIF RETURN Div(nKol,nKol1) STATIC FUNCTION ValSum(nKol,cEd,nR) //----------------------------------------------------------------------------// // Переводит цены из дополнительные ед. в основные LOCAL nKol1 aEd:=IniEd(,,,,@nEd) IF(cEd = NIL .AND. nWork > 0,cEd := UPPER(aWork[nWork,2]),NIL) IF(nR = NIL .AND. nWork > 0,nR := aWork[nWork,20],NIL) IF cEd = NIL.OR.(nEd:=ASCAN(aEd,{|x|UPPER(x[1])==UPPER(cEd)}))=0 RETURN RetSumEd(nKol) ENDIF PRIVATE Q,pFor m->pFor:=aEd[nEd,3] m->Q:=1 m->R:=nR nKol1:=1 IF !EMPTY(pFor).AND.TYPE(pFor)='N' nKol1:=&pFor ENDIF RETURN nKol*nKol1 STATIC FUNCTION GetCenaName(nKol) //--------------------------------------------------------------------------// LOCAL nCodeCen:=pCodeCen, cKey, nPoz IF nCodeCen=0 IF YesMatReal .AND. ALIAS() == "MKART" cKey := UPPER(Grup+NNum) MKART->(dbPush(,"MKART_P1","RECNO() != "+STR(RECNO(),7,0),{"UPPER(GRUP+NNUM)",cKey,},"")) MKART->(DBEVAL({|| nKol += aWork[nPoz,3] },{|| (nPoz := ASCAN(aWork,{|x| UPPER(x[1]) == cKey+UPPER(Partia+Sclad) })) != 0 })) MKART->(dbPop()) ENDIF IF YesMatReal .AND. ALIAS() == "TMKART" cKey := UPPER(Grup+NNum) MKART->(dbPush(,"MKART_P1","TMKART->(PARTIA+SCLAD)#MKART->(PARTIA+SCLAD)",{"UPPER(GRUP+NNUM)",cKey,},"")) MKART->(DBEVAL({|| nKol += aWork[nPoz,3] },{|| (nPoz := ASCAN(aWork,{|x| UPPER(x[1]) == cKey+UPPER(Partia+Sclad) })) != 0 })) MKART->(dbPop()) ENDIF IF YesMatReal.AND.m->pControl=2 nKol+=MPart->Kol ENDIF nCodeCen:=GetCodeCen(nKol) ELSEIF LNEWCENA RETURN PADR("Доп. прайс-лист",15) ELSEIF nCodeCen>4 nCodeCen:=1 ENDIF IF nCodeCen=0 IF YesMatReal RETURN (SPACE(15)) ELSE RETURN PADR('складская',15) ENDIF ENDIF RETURN LOWER(&('RCName'+STR(nCodeCen,1,0)+'_')) STATIC FUNCTION GetCodeCen(nKol) LOCAL nCodeCen:=IF(YesMatReal,1,0) LOCAL nArea:=SELECT() IF YesMatReal.AND.m->RKolCen_>1.AND.m->RSkid_ SELECT RSkid IF !EOF() IF !EMPTY(Kol1).AND.nKol<=Kol1 nCodeCen:=CodeCen1 ELSEIF RKolCen_=2.OR.!EMPTY(Kol2).AND.nKol<=Kol2 nCodeCen:=CodeCen2 ELSEIF RKolCen_=3.OR.!EMPTY(Kol3).AND.nKol<=Kol3 nCodeCen:=CodeCen3 ELSE nCodeCen:=CodeCen4 ENDIF ELSE nCodeCen:=1 ENDIF ENDIF SELECT(nArea) RETURN(nCodeCen) STATIC FUNCTION MenuAdd(aSort,cFltr0,nAdd) LOCAL nMaxChoice:=5 LOCAL nRet:=2,lYes STATIC nChoice:=1 ALTD() DO CASE CASE (aSort==NIL) nChoice:=1 RefPos(nChoice,2) CASE LASTKEY()==K_RIGHT RefPos(nChoice,1) nChoice++ IF nChoice>nMaxChoice nChoice:=1 ENDIF RefPos(nChoice,2) nRet:=1 CASE LASTKEY()==K_LEFT RefPos(nChoice,1) nChoice-- IF (nChoice<1) nChoice:=nMaxChoice ENDIF RefPos(nChoice,2) nRet:=1 CASE (LASTKEY()==K_RETURN .AND. nChoice==1) nRet:=FIns(,nAdd,,,,11) RefPos(nChoice,1) nChoice:=1 * RefPos(nChoice,2) CASE (LASTKEY()==K_RETURN .AND. nChoice==2) nRet:=0 SETLASTKEY(K_TAB) CASE (LASTKEY()==K_RETURN .AND. nChoice==3) nRet:=EVAL(SETKEY(K_F3)) RefPos(nChoice,1) nChoice:=1 RefPos(nChoice,2) CASE (LASTKEY()==K_RETURN .AND. nChoice==4) lYes:=YesOrNo('Вид фильтра',,' - по полям ',; ' - фpагментный ',6,35,COL_REFER) IF LASTKEY()!=K_ESC IF lYes nRet:=EVAL(SETKEY(K_F6)) ELSE nRet:=EVAL(SETKEY(K_ALT_F6)) ENDIF ENDIF RefPos(nChoice,1) nChoice:=1 RefPos(nChoice,2) CASE (LASTKEY()==K_RETURN .AND. nChoice==5) NilNum() lYes:=YesOrNo('Вид поиска',,' - быстрый ',; ' - фpагментный ',6,35,COL_REFER) IF LASTKEY()!=K_ESC IF lYes nRet:=EVAL(SETKEY(K_F7)) ELSE nRet:=EVAL(SETKEY(K_ALT_F7)) ENDIF ENDIF SetNum(nAdd) RefPos(nChoice,1) nChoice:=1 RefPos(nChoice,2) ENDCASE RETURN (nRet) STATIC FUNCTION RefPos(nPos,nColor) LOCAL cColor LOCAL aPos1:={4,13,24,39,54} LOCAL aPos2:={7,19,27,42,58} LOCAL aColor:={'N/W','W+/N'} LOCAL nY:=23,nX1,nX2 nX1:=aPos1[nPos] nX2:=aPos2[nPos] cColor:=aColor[nColor] COLORWIN(nY,nX1,nY,nX2,cColor) RETURN (NIL) STATIC FUNCTION FIns(nKey,nAdd,nKolVV,cEI,lFromImport,nMy) LOCAL oGet,n LOCAL sRet,sLeft,sRight,nKol00 LOCAL nKol:=IF(nKolVV=NIL,IF(nWork>0,ValEd(aWork[nWork,3]),IF(pVid="0",__MKART->KolTek-IF(YesMatReal,IF(m->RLimit_,-KolLim,0)+KolRes,0),0)),nKolVV) LOCAL nKol0:=IF(nWork>0,aWork[nWork,19],0), nSum1, nKolOld, nPreKol LOCAL nKol1 := IF(nWork > 0 .AND. !YesMatReal,aWork[nWork,26],0) LOCAL nKol2 := IF(nWork > 0 .AND. !YesMatReal,aWork[nWork,27],0) LOCAL aArray,nLen,nPut IF nMy#NIL nLen:=nMy nPut:=68 ELSE nLen:=13 nPut:=66 ENDIF IF EMPTY(NNum) RETURN(1) ENDIF sRet:=SETKEY(K_RETURN,NIL) sLeft:=SETKEY(K_LEFT,NIL) sRight:=SETKEY(K_RIGHT,NIL) IF YesMatReal.AND.nWork>0.AND.aWork[nWork,7]=='1' SayError('По позиции была произведена полная отгрузка !') ELSEIF (pVid+pType=='23'.OR.pVid+pType=='26').AND.(!EMPTY(nKol2).OR.!EMPTY(nKol1)) SayError('Был'+IF(GlobalTask = '09','о перемещение или списание по',IF(!EMPTY(nKol2),' возврат','о списание')+' с консигнации')+' этой позиции!') ELSEIF GlobalTask="05".AND.pCodecen=6.AND.(!RPrice_M->(dbSeek(UPPER(pNumber+MKART->(GRUP+NNUM+IF((aArray:=IsAddPricePartia(pNumber))[1],PARTIA,""))))).OR.(!EMPTY(aArray[4]).AND.EMPTY(ASCAN(aArray[4],{|x|UPPER(x)=UPPER(MKart->Sclad)})))) ELSE IF nKolVV =NIL NilNum() SETKEY(K_DOWN,{||Keyb(K_RETURN)}) COLORWIN(ROW(),1,ROW(),78,COL_REFER) nPreKol:= IF(EMPTY(nKol),0,nKol) oGet := GetNew(Row(),nPut,; {|x| if(PCount() == 0, nKol, nKol:= x)}, ; "nKol",, "n/w,w+/n") oGet:postBlock := {||VkolPost(nKol,nKol0,@nKol00,,nKol1,nKol2)} oGet:picture:=GetPict(nLen,IF(nWork=0.OR.LEN(aEd) < 1,IF(UPPER(RetEd(IF(LNEWCENA,IF(IsAddPricePartia(pNumber)[3],.F.,0),NIL))) = UPPER(__OSN_ED),iMGRUP->Kol_,iMGRUP->Kol1_),IF(UPPER(aWork[nWork,2])==UPPER(aEd[1,1]),iMGRUP->Kol_,iMGRUP->Kol1_))) SETCURSOR(1) KEYBOARD nKey READMODAL({oGet}) SETCURSOR(0) ELSE ENDIF IF (LASTKEY()!=K_ESC) .OR. nKolVV # NIL IF pType!="9".OR.LEN(aWork)<4000 IF (nWork==0) .OR. nKolVV # NIL IF ALIAS() = "MLABEL" SPR_PART->(dbSeek(UPPER(MLABEL->GRUP+MLABEL->NNUM))) ELSE SPR_PART->(dbSeek(UPPER(MKART->GRUP+MKART->NNUM+MKART->PARTIA))) ENDIF IF YesMatReal AADD(aWork,{MLabel->(Grup+NNum)+IF(ALIAS() = "MLABEL",SPACE(L_PARTIA),MKART->Partia)+IF(ALIAS()='MLABEL',pSclad,MKart->Sclad),; X_ED,0,0,0,0,' ',0,IF(LNEWCENA,IsAddPricePartia(pNumber)[2],MLabel->CodeVal),; IF(LNEWCENA,IsAddPricePartia(pNumber)[5],MLabel->CenaVal),; __RLABEL->OCena1,__RLABEL->OCena2,__RLABEL->OCena3,__RLABEL->OCena4,; __RLABEL->VCena1,__RLABEL->VCena2,__RLABEL->VCena3,__RLABEL->VCena4,0,X_R,0,0,IF(ALIAS() = "MLABEL",SPACE(L_PARTIA),MKART->Partia),X_ED,X_R,0,0,-1,; 0; // заявлено в заказах }) ELSE AADD(aWork,{MLabel->(Grup+NNum)+IF(ALIAS() = "MLABEL",SPACE(L_PARTIA),MKART->Partia)+IF(ALIAS()='MLABEL',pSclad,MKart->Sclad),; X_ED,0,0,0,0,' ',0,IF(LNEWCENA,IsAddPricePartia(pNumber)[2],MLabel->CodeVal),; IF(LNEWCENA,IsAddPricePartia(pNumber)[5],MLabel->CenaVal),; __RLABEL->OCena1,__RLABEL->OCena2,__RLABEL->OCena3,__RLABEL->OCena4,; __RLABEL->VCena1,__RLABEL->VCena2,__RLABEL->VCena3,__RLABEL->VCena4,0,X_R,0,0,IF(ALIAS() = "MLABEL",SPACE(L_PARTIA),MKART->Partia),X_ED,X_R,0,0,-1,; // victor спецодежда 2 Space(6),0,0,CTOD(''),SPACE(10),SPACE(10),SPACE(6),SPACE(6),__CENAN,0,0; // victor спецодежда }) ENDIF nWork:=LEN(aWork) IF TYPE('pSchetZ')='C' aWork[nWork,33]=m->pSchetZ aWork[nWork,34]=m->pSchetZN aWork[nWork,35]=m->pZCode aWork[nWork,36]=m->pZCodeN ENDIF nEd:=RetNumEd() aEd := IniEd(,,,,@nEd) IF nKolVV # NIL nEd := IF(LEN(aEd) > 1 ,ASCAN(aEd,{|x|UPPER(x[1])==UPPER(cEI)}),RetNumEd()) aWork[nWork,2] := cEI aWork[nWork,20] := aEd[nEd,4] nKol00:=nKolVV ENDIF InsOldKol(nAdd,aWork,nWork) ENDIF SetCenaX(aWork,nWork,nKol00,aWork[nWork,2],aWork[nWork,20],,lFromImport) IF lFromImport==NIL DispSum0() ENDIF IF TYPE("AvtCtrlS_")=="L".AND.m->AvtCtrlS_.AND.nPreKol!=nKol SprTovKol(.T.,IF(YesMatReal,MemVar->pNNoper,NIL),IF(YesMatReal,NIL,MemVar->pPro),IF(nWork > 0,aWork[nWork,2],ED_PRICE),IF(nWork > 0,aWork[nWork,20],ED_R_PRICE),nKol00) ENDIF IF(YesMatReal .AND. TYPE('lI_Net')='L' .AND. m->lI_Net,aWork[nWork,29]:=aWork[nWork,3],NIL) ELSE SayAndWait("Количество измененных позиций не должно превышать 4000 !",10) ENDIF ENDIF ENDIF SETKEY(K_RETURN,sRet) SETKEY(K_LEFT,sLeft) SETKEY(K_RIGHT,sRight) SETKEY(K_DOWN,NIL) IF nKolvv = NIL IF(TYPE(itWork_B_Code)='L'.AND.iWork_B_Code.AND.!EMPTY(m->nOrdBC),QuickBC(1,1,0,m->nOrdBC,'r/w*','не запоминая',m->nPrefBC,IF(TYPE('bPreSeek')='B',m->bPreSeek,NIL)),SetNum(nAdd)) ENDIF KEYBOARD CHR(K_DOWN) RETURN (1) STATIC FUNCTION VKolPost(nKol,nKol0,nKol00,lNoQ,nKol1,nKol2) //--------------------------------------------------------------------------// // lNoQ - .T., то кол-во без домножения на коэффициент и вывод // сообщения об ошибке с наименованеи номенклатуры LOCAL nDif,n, aError := {} IF EMPTY(lNoQ) IF nWork>0.AND.(n:=ASCAN(aEd,{|x|UPPER(x[1])==UPPER(aWork[nWork,2])})) >=1 PRIVATE Q,R,pFor pFor:=aEd[n,3] Q:=nKol R:=aWork[nWork,20] IF !EMPTY(m->pFor).AND.TYPE(pFor)='N' nKol:=&pFor ENDIF ELSE IF LNEWCENA.AND.!IsAddPricePartia(pNumber)[3] nKol := oRedKol(nKol,RetEd(0)) ELSE nKol := RetSumEd(nKol,IF(TYPE('pCodeCen')='N'.AND.pCodeCen=6.AND.SELECT("RPrice")>0 ,IF(RPrice->Ed,1,0),NIL)) ENDIF ENDIF ELSEIF !EMPTY(lNoQ) AADD(aError,"По товару :") AADD(aError,CHR(255)+CHR(255)+"Группа : "+MGRUP->CODE+" "+MGRUP->NAME) AADD(aError,CHR(255)+CHR(255)+"Ном.номер : "+MLABEL->NNUM+" "+MLABEL->NAME) AADD(aError,"───────────[ Ошибка ]─────────────") ENDIF nKol00:=nKol IF !EMPTY(nKol) IF !YesMatReal *IF GlobalTask!='09'.AND.YesReal.AND.!lPlus.AND.TYPE('CheckRes_')='L'.AND.m->CheckRes_.AND.IS_RES.AND.!(TYPE("pDopCode") = "C" .AND. !EMPTY(pDopCode)) .AND. IS_RESERV IF GlobalTask!='09'.AND.YesReal.AND.!lPlus.AND.TYPE('CheckRes_')='L'.AND.m->CheckRes_ .AND. IS_RESERV IF (nDif:=ROUND(IF(pVid='0',nKol,__MKART->KolTek-nKol-__MKART->KolRes+IF(m->RLimit_,__MKART->KolLim,0)+nKol0),Kol_))<0 AADD(aError,'Кол-во свободных ТМЦ меньше нуля на '+ALLTRIM(STR(-nDif,13,Kol_))+' '+TRIM(MLabel->Ed)+'!') SayError(aError) RETURN(.F.) ENDIF ELSEIF !lPlus.AND.!m->AllowRed_ IF (nDif:=ROUND(IF(pVid='0',nKol,__MKART->KolTek-nKol+nKol0),Kol_))<0 AADD(aError,'Остаток будет меньше нуля на '+ALLTRIM(STR(-nDif,13,Kol_))+' '+TRIM(MLabel->Ed)+'!') SayError(aError) RETURN(m->AllowRed_) ENDIF ELSEIF pVid+pType='1#' .AND. MSCHET->Uchet#'1'.AND. nKol#0 AADD(aError,'В данном виде движения должна использоваться') AADD(aError,'только номенклатура по учетным ценам!') SayError(aError) RETURN(.F.) ENDIF IF (pVid+pType=='23'.OR.pVid+pType=='26').AND.ROUND(nKol,MGRUP->KOL_)<0 SayError({"Отрицательное значение запрещено !"}) RETURN (.F.) ENDIF IF nKol1 != NIL .AND. nKol2 != NIL .AND. (pVid+pType=='23'.OR.pVid+pType=='26').AND.ROUND(nKol-nKol1-nKol2,MGRUP->KOL_)<0 SayError({"По данной позиции уже было списание или возврат !"}) RETURN (.F.) ENDIF ELSEIF m->RLimit_.AND. !(TYPE('pStatus3')='C'.AND. m->pStatus3='1').AND.; !(TYPE('lI_Net')='L'.AND. m->lI_Net).AND. ; TYPE("pDopCode") = "C".AND.!EMPTY(pDopCode).AND.(nDif:=ROUND(__MKART->KolTek+__MKART->KolLim-__MKART->KolRes-nKol+nKol0,Kol_))<0 AADD(aError,'Перезаказ на '+ALLTRIM(STR(-nDif,13,Kol_))+' '+TRIM(MLabel->Ed)+'!') SayError(aError) RETURN(.F.) ENDIF ENDIF RETURN(.T.) |
Code: |
FUNCTION RetKolEd(nKol,lPlus,nEd)
//---------------------------------------------------------------------------// // Переводит кол-во из основной в доп.ед.изм. // или проводит перевод цены из доп.ед.изм. в основную // lPlus - .T. в ед. прихода // .F. в ед. расхода // 0 в осн. ед. // 1 в ед. расхода // 2 в ед. прихода // 3 в ед. прихода KolOut1 или KolOut // 4 в ед. расхода KolOut2 или KolOut // NIL то в случае реализации lPlus = nKolPrice // в случае склада в зависимости pVid и pType // В случае услуг,то в ед. хранения LOCAL nKol1 LOCAL cAl:=ALIAS() PRIVATE pFor IF nEd = NIL IF GetPrefix() == "T" lPlus := 0 ENDIF IF GlobalTask = "05" .or. (GlobalTask == 'SR'.and.type('IsPriceList')='L'.and.memvar->IsPriceList) IF lPlus = NIL lPlus := MemVar->nKolPrice ENDIF ENDIF IF lPlus != NIL IF ValType(lPlus) = "N" nEd := IF(lPlus = 0,0,IF(lPlus = 1 .OR. lPlus = 4,iMLABEL->N_R,iMLABEL->N_P)) IF lPlus < 3 lPlus := NIL ENDIF ELSEIF TYPE('pVid') = "C" .AND. TYPE('pType') = "C" .AND. ( pVid = '0' .OR. pVid = '1' .OR. pVid = "2" ) .AND. pType = "9" nEd := 0 lPlus := NIL ELSE nEd := IF(lPlus,iMLABEL->N_P,iMLABEL->N_R) lPlus := NIL ENDIF ELSEIF TYPE('pVid') = "C" .AND. TYPE('pType') = "C" .AND. ( pVid = '0' .OR. pVid = '1' .OR. pVid = "2" ) .AND. pType = "9" nEd := 0 ELSEIF TYPE('pVid') = "C" .AND. (pVid = '1' .OR. pVid = '2') .AND. pType != "4" nEd := IF(pVid = '1' .AND. pType != "+",iMLABEL->N_P,iMLABEL->N_R) ELSE nEd := 0 ENDIF ENDIF IF lPlus = NIL PRIVATE Q,R pFor:= iMLABEL->(FieldGet(FieldPos("ALGO"+IF(nEd = 0,"",NTOC(nEd))))) m->Q := 1 m->R:= iMLABEL->(FieldGet(FieldPos("R"+IF(nEd = 0,"",NTOC(nEd))))) nKol1:=1 IF !EMPTY(pFor).AND.TYPE(pFor)='N' #ifdef __HARBOUR__ SELECT(0) nKol1:=&(pFor) SELECT (cAl) #else nKol1:=m->(&pFor) #endif ENDIF RETURN DIV(nKol,nKol1) ENDIF IF FieldPos("KolOut1") != 0 RETURN IF(lPlus = 3,FIELD->KolOut1,FIELD->KolOut2) ENDIF RETURN FIELD->KolOut FUNCTION RetEdR(lPlus,nEd) //---------------------------------------------------------------------------// // Возвращает коэффициент R для текущуей ед. измерения // lPlus - .T. в ед. прихода // .F. в ед. расхода // 0 в осн. ед. // 1,4 в ед. расхода // 2,3 в ед. прихода // NIL то в случае реализации lPlus = nKolPrice // в случае склада в зависимости pVid и pType // В случае услуг,то в ед. хранения IF nEd = NIL IF GetPrefix() == "T" lPlus := 0 ENDIF IF GlobalTask = "05" .or. (GlobalTask == 'SR'.and.type('IsPriceList')='L'.and.memvar->IsPriceList) IF lPlus = NIL lPlus := MemVar->nKolPrice ENDIF ENDIF IF lPlus != NIL IF ValType(lPlus) = "N" nEd := IF(lPlus = 0,0,IF(lPlus = 1.OR.lPlus = 4,iMLABEL->N_R,iMLABEL->N_P)) ELSE nEd := IF(lPlus,iMLABEL->N_P,iMLABEL->N_R) ENDIF ELSEIF TYPE('pVid') = "C" .AND. TYPE('pType') = "C" .AND. ( pVid = '0' .OR. pVid = '1' .OR. pVid = "2" ) .AND. pType = "9" nEd := 0 ELSEIF TYPE('pVid') = "C" .AND. (pVid = '1' .OR. pVid = '2') .AND. pType != "4" nEd := IF(pVid = '1' .AND. pType != "+",iMLABEL->N_P,iMLABEL->N_R) ELSE nEd := 0 ENDIF ENDIF RETURN IF(nEd = 0,0,iMLABEL->(FieldGet(FieldPos("R"+NTOC(nEd))))) //---------------------------------------------------------------------------// FUNCTION RetEd(lPlus,nEd) //---------------------------------------------------------------------------// // Возвращает текущую ед. измерения // lPlus - .T. в ед. прихода // .F. в ед. расхода // 0 в осн. ед. // 1,4 в ед. расхода // 2,3 в ед. прихода // NIL то в случае реализации lPlus = nKolPrice // в случае склада в зависимости pVid и pType // В случае услуг,то в ед. хранения IF nEd = NIL IF GetPrefix() == "T" lPlus := 0 ENDIF IF GlobalTask = "05" .or. (GlobalTask == 'SR'.and.type('IsPriceList')='L'.and.memvar->IsPriceList) IF lPlus = NIL lPlus := MemVar->nKolPrice ENDIF ENDIF IF lPlus != NIL IF ValType(lPlus) = "N" nEd := IF(lPlus = 0,0,IF(lPlus = 1.OR.lPlus = 4,iMLABEL->N_R,iMLABEL->N_P)) ELSE nEd := IF(lPlus,iMLABEL->N_P,iMLABEL->N_R) ENDIF ELSEIF TYPE('pVid') = "C" .AND. TYPE('pType') = "C" .AND. ( pVid = '0' .OR. pVid = '1' .OR. pVid = "2" ) .AND. pType = "9" nEd := 0 ELSEIF TYPE('pVid') = "C" .AND. (pVid = '1' .OR. pVid = '2') .AND. pType != "4" nEd := IF(pVid = '1' .AND. pType != "+",iMLABEL->N_P,iMLABEL->N_R) ELSE nEd := 0 ENDIF ENDIF RETURN iMLABEL->(FieldGet(FieldPos("ED"+IF(nEd = 0,"",NTOC(nEd))))) FUNCTION RetSumEd(nSum,lPlus,nEd,nR) //---------------------------------------------------------------------------// // Переводит цену в тек.доп.ед.изм. // или проводит перевод кол-ва из доп.ед.изм. в основную // lPlus - .T. в ед. прихода // .F. в ед. расхода // 0 в осн. ед. // 1 в ед. расхода // 2 в ед. прихода // 3 в ед. прихода SumOut1/KolOut1 или SumOut/KolOut // 4 в ед. расхода SumOut2/KolOut2 или SumOut/KolOut // NIL то в случае реализации lPlus = nKolPrice // в случае склада в зависимости pVid и pType // В случае услуг,то в ед. хранения LOCAL nSum1 LOCAL pFor LOCAL cAl:=ALIAS() IF nEd = NIL IF GetPrefix() == "T" lPlus := 0 ENDIF IF GlobalTask = "05" .or. (GlobalTask == 'SR'.and.type('IsPriceList')='L'.and.memvar->IsPriceList) IF lPlus = NIL lPlus := MemVar->nKolPrice ENDIF ENDIF IF lPlus != NIL IF ValType(lPlus) = "N" nEd := IF(lPlus = 0,0,IF(lPlus = 1 .OR. lPlus = 4,iMLABEL->N_R,iMLABEL->N_P)) IF lPlus < 3 lPlus := NIL ENDIF ELSEIF TYPE('pVid') = "C" .AND. TYPE('pType') = "C" .AND. ( pVid = '0' .OR. pVid = '1' .OR. pVid = "2" ) .AND. pType = "9" nEd := 0 lPlus := NIL ELSE nEd := IF(lPlus,iMLABEL->N_P,iMLABEL->N_R) lPlus := NIL ENDIF ELSEIF TYPE('pVid') = "C" .AND. TYPE('pType') = "C" .AND. ( pVid = '0' .OR. pVid = '1' .OR. pVid = "2" ) .AND. pType = "9" nEd := 0 ELSEIF TYPE('pVid') = "C" .AND. (pVid = '1' .OR. pVid = '2') .AND. pType != "4" nEd := IF(pVid = '1' .AND. pType != "+",iMLABEL->N_P,iMLABEL->N_R) ELSE nEd := 0 ENDIF ENDIF IF lPlus = NIL PRIVATE Q,R pFor:= iMLABEL->(FieldGet(FieldPos("ALGO"+IF(nEd = 0,"",NTOC(nEd))))) m->Q := 1 m->R:= IF(EMPTY(nR),iMLABEL->(FieldGet(FieldPos("R"+IF(nEd = 0,"",NTOC(nEd))))),nR) nSum1:=1 IF !EMPTY(pFor).AND.TYPE(pFor)='N' #ifdef __HARBOUR__ SELECT(0) pFor:=TRIM(pFor) nSum1:=&pFor SELECT (cAl) #else nSum1:=m->(&pFor) #endif ENDIF RETURN nSum*nSum1 ENDIF IF FieldPos("KolOut1") != 0 RETURN IF(lPlus = 3,Div(FIELD->SumOut1,FIELD->KolOut1),Div(FIELD->SumOut2,FIELD->KolOut2)) ELSEIF FieldPos("SumOutR") != 0 RETURN Div(FIELD->SumOutR,FIELD->KolOut) ENDIF RETURN Div(FIELD->SumOut,FIELD->KolOut) FUNCTION GetCena(cPre,nKol,cMat,nEd,aEd0,cValCode,nRound,lSkid,nCena,nR,nNoWork) //--------------------------------------------------------------------------// // lSkid - если не равно NIL, то в качестве базовой берется nCena // и расчитывается только общая скидка/накидка // MLabel установлена и связана с RSkid,RSkidQ,MPart // MSCHET установлена // SPR_PART установлена LOCAL nArea:=SELECT(), nMyltiply := 1 LOCAL nCodeCen:=m->pCodeCen, nPoz, cKey PushData(nWork) IF(!EMPTY(nNoWork), nWork:=nNoWork, NIL) IF cPre = "V" .AND. SELECT("VALUTA") != 0 IF UPPER(IF(cValCode = NIL,MLABEL->CODEVAL,cValCode)) != UPPER(VALUTA->CODE) VALUTA->(dbSeek(UPPER(IF(cValCode = NIL,MLABEL->CODEVAL,cValCode)))) ENDIF nRound := IF(nRound = NIL,VALUTA->ACCURACY,MIN(VALUTA->ACCURACY,nRound)) nMyltiply := VALUTA->MYLTIPLY ELSE nRound := IF(nRound = NIL,CURR_MAIN,MIN(CURR_MAIN,nRound)) ENDIF IF aEd0==NIL aEd0:=aEd ENDIF IF lSkid = NIL nCena := 0 IF YesMatReal//.AND.nCodeCen=0 (перенес чуть ниже строк на 15 Serg) IF ALIAS() == "MKART" cKey := UPPER(Grup+NNum) AEVAL(aWork,{|x,nWork| IF(UPPER(x[1]) = cKey .AND. nNoWork != nWork,nKol += x[3],NIL) }) ENDIF IF YesMatReal .AND. ALIAS() == "TMKART" //.AND.nCodeCen=0 (убрал Serg) cKey := UPPER(Grup+NNum) MKART->(dbPush(,"MKART_P1",,{"UPPER(GRUP+NNUM)",cKey,},"")) MKART->(DBEVAL({|| IF(nPoz=nNoWork,,nKol += aWork[nPoz,3]) },{|| (nPoz := ASCAN(aWork,{|x| UPPER(x[1]) == cKey+UPPER(Partia+Sclad) })) != 0 })) MKART->(dbPop()) ENDIF IF m->pControl=2 nKol+=MPart->Kol ENDIF IF nCodeCen=0 nCodeCen:=GetCodeCen(nKol) ENDIF ENDIF IF nCodeCen>0 IF nCodeCen>4 nCodeCen:=1 ENDIF IF YesMatReal IF IF(cMat!=NIL,; EMPTY(; (; nCena:=VAL(; SUBSTR(; cMat,; IF(cPre='O',Q_OCENA1,Q_VCENA1)+(nCodeCen-1)*15,; 15; ); ); ); ),; EMPTY(nWork).OR.; EMPTY(; (; nCena:=aWork[nWork,IF(cPre='O',10,14)+nCodeCen]; ); ); ) nCena:=__RLABEL->(FieldGet(FieldPos(cPre+'Cena'+STR(nCodeCen,1,0)))) ENDIF IF m->pControl>0.AND.m->pCodeCen>0 .AND. m->pControl<3 //VIKTOR скидки по ценам РАСЧЕТ знач скидки 19.06.97 and IF MLabel->(Kol1+Kol2+Kol3+Kol4+Kol5)>0 //Индивидуальная шкала SELECT MLabel IF nKol<=Kol1 ELSEIF (EMPTY(Kol2).OR.nKol<=Kol2).AND.!EMPTY(Skidka1) nCena:=nCena*(1-Skidka1/100) nRound:=SetTochn(cPre,nRound) ELSEIF (EMPTY(Kol3).OR.nKol<=Kol3).AND.!EMPTY(Skidka2) nCena:=nCena*(1-Skidka2/100) nRound:=SetTochn(cPre,nRound) ELSEIF (EMPTY(Kol4).OR.nKol<=Kol4).AND.!EMPTY(Skidka3) nCena:=nCena*(1-Skidka3/100) nRound:=SetTochn(cPre,nRound) ELSEIF (EMPTY(Kol5).OR.nKol<=Kol5).AND.!EMPTY(Skidka4) nCena:=nCena*(1-Skidka4/100) nRound:=SetTochn(cPre,nRound) ELSEIF !EMPTY(Kol5).AND.nKol>Kol5.AND.!EMPTY(Skidka5) nCena:=nCena*(1-Skidka5/100) nRound:=SetTochn(cPre,nRound) ENDIF ELSE PRIVATE C:=nCena,pFor SELECT RSkidQ IF Kol1+Kol2+Kol3+Kol4>0 IF nKol<=Kol1 ELSEIF (EMPTY(Kol2).OR.nKol<=Kol2).AND.!EMPTY(&('Algo1'+cPre)) pFor:='Algo1'+cPre nCena:=&(&pFor) nRound:=SetTochn(cPre,nRound) ELSEIF (EMPTY(Kol3).OR.nKol<=Kol3).AND.!EMPTY(&('Algo2'+cPre)) pFor:='Algo2'+cPre nCena:=&(&pFor) nRound:=SetTochn(cPre,nRound) ELSEIF (EMPTY(Kol4).OR.nKol<=Kol4).AND.!EMPTY(&('Algo3'+cPre)) pFor:='Algo3'+cPre nCena:=&(&pFor) nRound:=SetTochn(cPre,nRound) ELSEIF !EMPTY(Kol4).AND.nKol>Kol4.AND.!EMPTY(&('Algo4'+cPre)) pFor:='Algo4'+cPre nCena:=&(&pFor) nRound:=SetTochn(cPre,nRound) ENDIF ENDIF ENDIF ENDIF ELSE IF UPPER(pCodeVal)==UPPER(GlobalValuta) nCena:= __RLABEL->(FieldGet(FieldPos(cPre+'Cena'+STR(nCodeCen,1,0)))) ELSE IF UPPER(pCodeVal)==UPPER(MLabel->CodeVal) IF cPre='V' nCena:= __RLABEL->(FieldGet(FieldPos(cPre+'Cena'+STR(nCodeCen,1,0)))) ELSE nCena:=__RLABEL->(FieldGet(FieldPos('VCena'+STR(nCodeCen,1,0))))*EVAL(Global_BCurs,pCenaVal,nMyltiply) ENDIF ELSE IF cPre='O' nCena:= __RLABEL->(FieldGet(FieldPos(cPre+'Cena'+STR(nCodeCen,1,0)))) ELSE nCena:=Div(__RLABEL->(FieldGet(FieldPos('OCena'+STR(nCodeCen,1,0)))),EVAL(Global_BCurs,pCenaVal,nMyltiply)) ENDIF ENDIF ENDIF ENDIF ELSE nRound := 6 //Складская цена идет без округления IF cPre='V' nCena:=Div(__CENA,EVAL(Global_BCurs,IF(TYPE("pCodeVal") = "C" .AND. TYPE("pDate") = "D" .AND. UPPER(pCodeVal) != UPPER(MLABEL->CODEVAL),InputVCurs(pCodeVal,pDate,.F.)[1],pCenaVal),nMyltiply)) ELSE nCena:=__CENA ENDIF ENDIF ENDIF SELECT(nArea) IF TYPE('pNakidka')='N'.AND.TYPE('pSkidka')='N' nCena:=(1+pNakidka/100)*(1-pSkidka/100)*nCena IF pNakidka # 0 .OR. pSkidka # 0 nRound:=SetTochn(cPre,nRound) ENDIF ENDIF IF nEd!=NIL.AND.nEd>1 .AND. !EMPTY(aEd0[nEd,3]) PRIVATE Q:=1,R:=IF(nR != NIL,nR,IF(nWork==NIL.OR.nWork=0,aEd0[nEd,4],aWork[nWork,20])) nCena:= nCena*&(aEd0[nEd,3]) ENDIF nWork:= PopData() RETURN _RROUND(nCena,nRound) STATIC FUNCTION SetTochn(cPre, nRound) ****************** IF GlobalTask = '05' IF cPre='V' .AND. TYPE('RoundVal') = 'N' nRound := MIN(nRound,m->RoundVal) ELSEIF cPre#'V' .AND. TYPE('RoundGlob') = 'N' nRound := MIN(CURR_MAIN,m->RoundGlob) ENDIF ENDIF RETURN nRound PROCEDURE SetCenaX(aWork,nWork,nKol,cEd,nR,lNoStack,lFromImport) //--------------------------------------------------------------------------// // Обновление цены IF GlobalTask="TZ" aWork[nWork,4] := TzPrice(MKart->Sclad,MKart->(Grup+NNum+IF(IsPricePartia(MKart->Sclad),Partia,"")),pCodeCen,pDate) aWork[nWork,8] := 0 ELSE aWork[nWork,4] := GetCenaX("O",IF(EMPTY(lNoStack),aWork[nWork,4],0),aWork[nWork,3],aWork[nWork,2],aWork[nWork,20],nKol,cEd,nR,nWork) aWork[nWork,8] := GetCenaX("V",IF(EMPTY(lNoStack),aWork[nWork,8],0),aWork[nWork,3],aWork[nWork,2],aWork[nWork,20],nKol,cEd,nR,nWork) ENDIF IF lNoStack = NIL PushKart() AEVAL(aWork,{|x,n| IF(n != nWork .AND.UPPER(aWork[nWork,1]) = UPPER(LEFT(x[1],18)),(SeekKart(x[1]),SetCenaX(aWork,n,x[3]+nKol-aWork[nWork,3],x[2],x[20],.T.)),NIL) }) PopKart() aWork[nWork,3] := nKol aWork[nWork,2] := cEd aWork[nWork,20] := nR IF lFromImport==NIL // Запишем информацию о редактировании REAL_W_TIME(2) ENDIF ENDIF RETURN FUNCTION GetCenaX(xCena,nCena,nBakKol,cBakEd,nBakR,nKol,cEd,nR,nWork) //--------------------------------------------------------------------------// // Возврат цены рублевой / валютной LOCAL aEd := IniEd(), bakNEd := 1, tekNEd := 1 LOCAL nBakEd := IF(LEN(aEd) > 1,ASCAN(aEd,{|y|UPPER(y[1])==UPPER(cBakEd)}),RetNumEd()) LOCAL nEd :=IF(LEN(aEd) > 1,ASCAN(aEd,{|y|UPPER(y[1])==UPPER(cEd)}),RetNumEd()) //ALTD() IF EMPTY(nCena) .OR. (!LNEWCENA.AND.GetCena(xCena,nBakKol,,nBakEd,aEd,,,,,nBakR,nWork) = nCena) IF LNEWCENA RETURN RealAddPrice(pNumber,MKart->(Grup+NNum+IF(IsAddPricePartia(pNumber)[1],Partia,"")),VALTYPE(xCena)#'C'.OR.xCena#'V',MKart->Sclad,'со скидкой-накидкой',cEd,nR) ELSE RETURN GetCena(xCena,nKol,,nEd,aEd,,,,,nR,nWork) ENDIF ELSEIF UPPER(cBakEd) != UPPER(cEd) .OR. nBakR != nR PRIVATE Q, R IF nEd > 1 MemVar->Q := 1 MemVar->R := nR tekNEd := &(aEd[nEd,3]) ENDIF IF nBakEd > 1 MemVar->Q := 1 MemVar->R := nBakR bakNEd := &(aEd[nBakEd,3]) ENDIF RETURN Div(nCena*tekNEd,bakNEd) ENDIF RETURN nCena FUNCTION mycolor(xKol,xCol,bIsNoInAddPrice,x) Local cCol IF x=1 DO CASE CASE xKol>0 IF EVAL(bIsNoInAddPrice) cCol:='n+/w' ELSE cCol:=xCol ENDIF CASE xKol=0 cCol:='w+/w' CASE xKol<0 cCol:='r/w' ENDCASE ELSE DO CASE CASE xKol>0 IF EVAL(bIsNoInAddPrice) cCol:='w/n' ELSE cCol:='w+/n' ENDIF CASE xKol=0 cCol:='n*/w' CASE xKol<0 cCol:='w+/r' ENDCASE ENDIF RETURN cCol PROCEDURE InsOldKol(nAdd,aWork,nWork) //--------------------------------------------------------------------------// // Обновление старого кол-ва LOCAL nKol1,nSum1,nKolOld,nOperFact, nKol2 IF YesMatReal RetKolSum(nAdd = S_LIB_ADD,@nKol1,@nSum1,@nKolOld) aWork[nWork,5] := nKol1 aWork[nWork,6] := nSum1 aWork[nWork,19] := nKolOld ELSE RetKol(nAdd = S_LIB_ADD,@nKolOld,@nOperFact,@nKol1,@nKol2) IF !(pType="9".AND.(pVid="1".OR.pVid="2")) aWork[nWork,19] := nKolOld ENDIF aWork[nWork,26] := nKol1 aWork[nWork,27] := nKol2 aWork[nWork,28] := nOperFact ENDIF RETURN FUNCTION InputR(n,lNoWork) //--------------------------------------------------------------------------// LOCAL nWin:=WSELECT() LOCAL nTop:=ROW()-1 LOCAL nBottom:=nTop+3,nLeft:=25,nRight:=46 LOCAL GetList:={},sRest,nCursor:=SETCURSOR() LOCAL aSetKey:=SaveSetKey() WSELECT(0) IF EMPTY(m->R:=IF(lNoWork != NIL,aEd[n,4],aWork[nWork,20])) m->R:= aEd[n,4] ENDIF sRest:=SAVESCREEN(nTop,nLeft,nBottom+2,nRight+2) ShadowBox(' Коэффициент? ',nTop,nLeft,nBottom,nRight,COL_SELECT) @ nTop+1,nLeft+3 GET m->R PICT '9999999999.9999' SETCURSOR(1) READ SETCURSOR(nCursor) IF lNoWork = NIL aWork[nWork,20]:=m->R ELSE aEd[n,4] := m->R ENDIF RESTSCREEN(nTop,nLeft,nBottom+2,nRight+2,sRest) WSELECT(nWin) RestSetKey(aSetKey) RETURN(.T.) STATIC FUNCTION Forward(n) LOCAL nRec,cGrup MGrup->(DBSKIP(n)) nRec:=MGrup->(RECNO()) cGrup:=MGrup->(Code) WHILE !DBSEEK(UPPER(IF(!lKarto,cGrup,' '+pSclad+cGrup))) MGrup->(DBGOTO(nRec)) MGrup->(DBSKIP(n)) nRec:=MGrup->(RECNO()) cGrup:=MGrup->(Code) IF MGrup->(EOF()).OR.MGrup->(BOF()) EXIT ENDIF ENDDO IF !FOUND() GO TOP MGrup->(DBGOTOP()) ENDIF RETURN(2) STATIC PROCEDURE RetKolSum(lAdd,nKol1,nSum1,nKolOld) //--------------------------------------------------------------------------// // Возвращет исходные значения по заказам nKol1 := nSum1 := nKolOld := 0 IF YesMatReal IF !lAdd MDOCM->(dbPush(,"RBOOKM","",{MDOCM->(ORDKEY()),UPPER(MDOC->DOPCODE+MKART->GRUP+MKART->NNUM+MKART->PARTIA+MKART->SCLAD),,.F.,{"RBOOKM"}},"")) IF MDOCM->(!EOF()) nKol1 := MDOCM->KOL1 nSum1 := MDOCM->SUM1 nKolOld := MDOCM->KOL ENDIF ENDIF MDOCM->(SetZakKolSum(lAdd,@nKol1,@nSum1)) IF !lAdd MDOCM->(dbPop()) ENDIF ENDIF RETURN STATIC PROCEDURE RetKol(lAdd,nKolOld,nOperFact,nKol1,nKol2) //--------------------------------------------------------------------------// // Возвращет исходные значения по складу nKolOld := 0 nOperFact := -1 nKol1 := 0 nKol2 := 0 IF !lAdd MDOCM->(dbPush(,"MDOCM_W","",{ORDKEY(),UPPER(MDOC->SCLAD+MDOC->VID+MDOC->TYPE+MDOC->CODEDOC+MDOC->NUMDOC+MKART->GRUP+MKART->NNUM+MKART->PARTIA),,.F.,{"MDOCM_W"}},"")) IF MDOCM->(!EOF()) nKolOld := MDOCM->KOL nOperFact := MDOCM->OPER_FACT nKol1 := MDOCM->KOL1 nKol2 := MDOCM->KOL2 ENDIF MDOCM->(dbPop()) ENDIF RETURN FUNCTION MYF(x) SayAndWait(x) RETURN '' FUNCTION ScanWorkList() //-------------------------------------------------------------------------- RETURN IF(ValType(aWork)=="A",; ASCAN(aWork,{|x| UPPER(x[1])==UPPER(Grup+NNum+IF("MKART"$ALIAS(),IF(IS_PARTIA_KOL,MKART->Partia,SPACE(L_PARTIA))+MKART->Sclad,SPACE(L_PARTIA)+pSclad)) }),; 0) FUNCTION MyWrite(aWork) Local x,y ALTD() ASIZE(aGlobVars,0) FOR i:=1 to LEN(aWork) AADD(aGlobVars,{aWork[i,1],aWork[i,2],aWork[i,3],aWork[i,4]}) NEXT // ASIZE(aGlobVars,0) // AADD(aGlobVars,{"000080000000000001 2","л ",12,24}) RETURN NIL |
output generated using printer-friendly topic mod. All times are GMT + 4 Hours