home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ftp.texkom.ru
/
ftp.texkom.ru.tar
/
ftp.texkom.ru
/
kkm1
/
DoSaleFromChecks.PRG
< prev
next >
Wrap
Text File
|
2007-07-30
|
10KB
|
292 lines
PROCEDURE DoSaleFromChecks
LPARAMETERS lSaleNewOnly
LOCAL lnfh
lnfh=0
TRY
lnfh=FCREATE('DoSaleFromChecks.runned')
CATCH
ENDTR
IF lnfh<=0
RETURN .F.
ENDIF
safeclose('c_docs')
safeclose('c_oper')
cacheclear()
WAIT timeout 1
IF safeuse('c_oper') AND safeuse('c_docs') AND safeuse('k_lenta') AND;
safeuse('b_docs') AND safeuse('b_oper') AND safeuse('k_kodtov') AND;
safeuse('b_uslug') AND safeuse('k_uslug') AND safeuse('k_viddoc') AND safeuse('k_kkm')
LOCAL ldTimeStamp,lnFreeSale(1),lnSumma(1),lnProg,loLenta,lcNomdoc,lnNomOper,lcLetter(1),lnMaxDoc(1),;
lcDocument,lnKolvo,lnMin,lcViddoc
ldTimeStamp=DATETIME()
WAIT WINDOW '┬√ßΦ≡α■ φσ∩≡εΣαφφ√σ ≈σΩΦ' NOWAIT NOCLEAR
SELECT * FROM c_docs WHERE saledoc=SPACE(10) INTO CURSOR TSD NOFILTER
IF _TALLY>0
WAIT CLEAR
SELECT kodtov,NAME FROM k_kodtov WHERE artikul='╪╚═╬╠╬═╥└╞' INTO CURSOR Uslug READWRITE
APPEND BLANK
REPLACE NAME WITH '╤ΓεßεΣφα ±≤∞∞α'
INDEX ON kodtov TAG kodtov
SET ORDER TO
USE IN k_kodtov
SELECT DISTI kkm,lenta,TTOD(DATA) DATA,SPACE(10) nomdoc,.F. new,.T. dosale FROM TSD INTO CURSOR lenta READWRITE ORDER BY 3,1,2
LOCAL lcTitle,llOldLenta
lcTitle='╧σ≡σΩα≈ΦΓα■ Σαφφ√σ Φτ ≈σΩεΓ Γ ∩≡εΣαµΦ'
lnProg=NEWOBJECT('progressbar','utility','LF.EXE',RECCOUNT('lenta')*8+1,lcTitle)
SCAN
lnProg.inc
IF !LOCATE('k_kkm','kkm',lenta.kkm)
INSERT INTO k_kkm (kkm,viddoc) VALUES (lenta.kkm,oMyVar.cViddoc)
ENDIF
lcViddoc=k_kkm.viddoc
SELECT k_lenta
LOCATE FOR kkm=lenta.kkm AND lenta=lenta.lenta AND DATA=lenta.DATA
llOldLenta=FOUND()
IF llOldLenta AND LOCATE('b_docs','nomdoc',k_lenta.nomdoc)
SELECT lenta
REPLACE nomdoc WITH k_lenta.nomdoc
lcNomdoc=lenta.nomdoc
ELSE
IF llOldLenta
lcNomdoc=k_lenta.nomdoc
ELSE
lcNomdoc=getnkey('GEP_SETU','DOCUMENT','NOMDOC')
ENDIF
SELECT lenta
REPLACE nomdoc WITH lcNomdoc,new WITH .T.
SCATTER NAME loLenta
INSERT INTO k_lenta FROM NAME loLenta
ENDIF
lnProg.inc
_SCREEN.CAPTION='╬ß≡αßα≥√Γα■ ∩≡εΣαµΦ τα '+TRANSFORM(DATA)+' ∩ε ╩╩╠ '+TRANSFORM(kkm)+' δσφ≥α ╣'+TRANSFORM(lenta)
SELECT nomdoc,skid,USER,data FROM TSD;
WHERE kkm=lenta.kkm AND lenta=lenta.lenta AND TTOD(DATA)=lenta.DATA;
INTO CURSOR Nomdocs
SELECT o.kodtov,o.cena,d.skid,o.cenap,o.nomtov,d.USER,SUM(kolvo) kolvo,MAX(data) as timestamp;
FROM Nomdocs d inner JOIN c_oper o ON d.nomdoc=o.nomdoc;
INTO CURSOR curSaleList GROUP BY 1,2,3,4,5,6
safeclose('FreeSales')
SELECT cs.kodtov,T.NAME,SUM(cs.kolvo*cs.cena) SUMMA FROM curSaleList cs,Uslug T;
WHERE cs.kodtov=T.kodtov;
INTO CURSOR FreeSales READWRITE GROUP BY 1,2
lnProg.inc
REPLACE kodtov WITH oMyVar.cUslKod FOR EMPTY(kodtov)
SCAN
SELECT b_uslug
LOCATE FOR nomdoc=lcNomdoc AND kod=FreeSales.kodtov;
IF !FOUND()
INSERT INTO b_uslug (nomdoc,kod,SUMMA) VALUES (lcNomdoc,FreeSales.kodtov,FreeSales.SUMMA)
IF !LOCATE('k_uslug','kod',FreeSales.kodtov) AND USED('k_uslug')
INSERT INTO k_uslug (kod,NAME,showinlist) VALUE(FreeSales.kodtov,FreeSales.NAME,.T.)
ENDIF
ELSE
REPLACE SUMMA WITH SUMMA+FreeSales.SUMMA
ENDIF
ENDSCAN
lnProg.inc
safeclose('CurOper')
SELECT cs.kodtov,NVL(k.artikul,SPACE(50)) artikul,NVL(k.NAME,SPACE(100)) NAME,;
cs.kolvo,cs.cena,cs.nomtov,lcNomdoc nomdoc,'RUB' TipVal,;
SPACE(10) nomoper,cs.TIMESTAMP TIMESTAMP,cs.USER USER,cs.cenap,cs.skid,;
cs.TIMESTAMP createdon,cs.USER createdby;
FROM curSaleList cs LEFT JOIN k_kodtov k ON cs.kodtov=k.kodtov;
WHERE !EXIST(SELE kodtov FROM Uslug WHERE kodtov=cs.kodtov);
INTO CURSOR CurOper READWRITE
indexall()
lnProg.inc
REPLACE USER WITH oMyVar.cUser FOR EMPTY(USER)
lnSumma=0
IF lenta.new OR !LOCATE('b_docs','nomdoc',lcNomdoc)
SELECT NVL(SUM(kolvo*cena),0) FROM CurOper INTO ARRAY lnSumma
* ┬√ßΦ≡ασ∞ ∩σ≡Γ≤■ ß≤ΩΓ≤ ΣεΩ≤∞σφ≥α, ±επδα±φε ≤ΩαταφφεΘ Γ K_VIDDOC
lcLetter='╩'
SELECT DOC FROM k_viddoc WHERE kod=lcViddoc INTO ARRAY lcLetter
lnMaxDoc=0
* ╤≈Φ≥ασ∞ ∞αΩ±Φ∞αδⁿφ√Θ φε∞σ≡ ΣεΩ≤∞σφ≥α, ±επδα±φε ∩σ≡ΓεΘ ß≤ΩΓσ Φ StartPeriod - Σα≥α φα≈αδα ∩σ≡Φ≤Σα
SELE TOP 1 VAL(SUBSTR(DOCUMENT,2)) FROM b_docs INTO ARRAY lnMaxDoc;
WHERE DOCUMENT=m.lcLetter AND DATA>=M.oMyVar.dStartPeriod ORDE BY 1 DESC
lcDocument=m.lcLetter+PADL(INT(lnMaxDoc)+1,7)+'/1'
* ─εßαΓδ σ∞ τα∩Φ±ⁿ Γ B_DOCS
lnFreeSale=0
SELECT NVL(SUM(SUMMA),0) FROM FreeSales INTO ARRAY lnFreeSale
INSERT INTO b_docs (nomdoc,DATA,MEMBER,SUMMA,DOCUMENT,vidcen,viddoc,TIMESTAMP,USER,Tipdoc,TipVal,COMMENT,createdon,createdby);
VALUES (lcNomdoc,lenta.DATA,oMyVar.cRoznMember,lnSumma+lnFreeSale,lcDocument,1,lcViddoc,;
ldTimeStamp,oMyVar.cUser,'02','RUB','╧≡εΣαµΦ ∩ε ╩╩╠ '+TRANSF(k_kkm.kkm)+' ╩╦ '+TRANSFORM(lenta.lenta),ldTimeStamp,oMyVar.cUser)
ENDIF
IF !lenta.new
SELECTALL('B_OPER','BOPER','NOMDOC',lcNomdoc)
indexall()
SELECT CU.* FROM CurOper CU ;
WHERE EXIST(SELE .T. FROM BOPER BO WHERE kodtov=CU.kodtov AND BO.cena=CU.cena AND BO.skid=CU.skid AND BO.nomtov=CU.nomtov) ;
INTO CURSOR OLDKODS
SCAN
SELECT CurOper
LOCATE FOR kodtov=OLDKODS.kodtov AND cena=OLDKODS.cena AND skid=OLDKODS.skid AND nomtov=OLDKODS.nomtov
SELECT BOPER
LOCATE FOR nomdoc=lcNomdoc AND kodtov=OLDKODS.kodtov AND cena=OLDKODS.cena AND skid=OLDKODS.skid AND nomtov=OLDKODS.nomtov
IF FOUND() AND LOCATE('B_OPER','NOMOPER',BOPER.nomoper)
REPLACE kolvo WITH kolvo+CurOper.kolvo,TIMESTAMP WITH ldTimeStamp,USER WITH CurOper.USER IN B_OPER
IF CurOper.kolvo<0
IF safeuse('m_oper','','nomdoc',.T.) AND SEEK(lcNomdoc)
LOCAL loCuroper,lnKolvo,lnMin
lnKolvo=ABS(CurOper.kolvo)
SCAN WHILE nomdoc=lcNomdoc
IF kodtov=CurOper.kodtov AND kolvo>0
lnMin=MIN(m_oper.kolvo,lnKolvo)
IF lnMin=m_oper.kolvo
deleteoper(m_oper.nomoper,,.T.)
ELSE
SCATTER NAME loCuroper
loCuroper.kolvo=loCuroper.kolvo-lnMin
changeoper(,loCuroper)
ENDIF
lnKolvo=lnKolvo-lnMin
IF lnKolvo=0
EXIT
ENDIF
ENDIF
ENDSCAN
ENDIF
ENDIF
DELETE IN CurOper
ENDIF
ENDSCAN
ENDIF
lnProg.inc
SELECT CurOper
safeclose('CurOper1')
SELECT * FROM CurOper INTO CURSOR CurOper1 READWRITE
USE IN CurOper
IF _TALLY>0
lnNomOper=INT(VAL(getnkey('GEP_SETU','M_OPER','NOMOPER',,,_TALLY)))-1
SELECT CurOper1
REPLACE ALL nomoper WITH PADL(lnNomOper+RECNO(),10,'0')
ENDIF
IF !USED('CurOperAll')
SELECT * FROM CurOper1 INTO CURSOR CurOperAll READWRITE
ELSE
SELECT CurOperAll
APPEND FROM DBF('CurOper1')
ENDIF
* ─εßαΓδ σ∞ ε∩σ≡α÷ΦΦ ∩ε ΣεΩ≤∞σφ≥≤.
lnProg.inc
SELECT B_OPER
APPEND FROM DBF('curoper1')
cacheclear()
lnProg.inc
SELECT Nomdocs
SCAN
UPDATE c_docs SET saledoc=lcNomdoc WHERE nomdoc=Nomdocs.nomdoc
ENDSCAN
cacheclear()
ENDSCAN
lnProg=0
lcTitle='╤∩Φ±√Γα■ ∩≡εΣαµΦ'
lnProg=NEWOBJECT('progressbar','utility','LF.EXE',RECCOUNT('lenta')+1,lcTitle)
SCAN
IF !lenta.new
calcbdocsum(lenta.nomdoc)
ENDIF
IF lenta.dosale AND LOCATE('k_kkm','kkm',lenta.kkm) AND k_kkm.dosale
IF lSaleNewOnly
saletov(lenta.nomdoc)
ELSE
saledoc(lenta.nomdoc,.T.,.T.,.T.,.T.)
ENDIF
ENDIF
lnProg.inc
ENDSCAN
lnProg=0
ENDIF
WAIT CLEAR
ENDIF
ENDPROC
PROCEDURE saletov
LPARAMETERS cNomdoc
SELECT kodtov,nomtov,cena,SUM(kolvo) kolvo FROM CurOperAll GROUP BY 1,2,3;
WHERE nomdoc=cNomdoc;
INTO CURSOR BOPER HAVING SUM(kolvo)>0
IF _TALLY>0
PUBLIC pcXML
CURSORTOXML('BOPER','pcXML',3,1+16,0,"1")
NewSession('DoSaleTov(['+cNomdoc+'],pcXML)')
RELEASE pcXML
ENDIF
ENDPROC
PROCEDURE DoSaleTov
LPARAMETERS cNomdoc,cOpers
SELECT *,DATA1 datadoc FROM b_docs INTO CURSOR CurDoc WHERE nomdoc=cNomdoc READWR
IF !LOCATE('k_viddoc','kod',CurDoc.viddoc) OR !k_viddoc.notcngdate
REPLACE DATA WITH DATE() IN CurDoc
ENDIF
=XMLTOCURSOR(cOpers,'BOPER')
LOCAL lcViddoc
lcViddoc=CurDoc.viddoc
WAIT WINDOW NOWAIT NOCLEAR '┬√ßΦ≡α■ ε±≥α≥ΩΦ'
SL_OstByList('boper',.T.)
WAIT WINDOW NOWAIT NOCLEAR '╘Φδⁿ≥≡≤■ ε±≥α≥ΩΦ'
SL_FilterOst('ost',lcViddoc,.T.)
WAIT WINDOW NOWAIT NOCLEAR '╤ε≡≥Φ≡≤■ ε±≥α≥ΩΦ'
SL_SortOst('ost',lcViddoc)
WAIT WINDOW NOWAIT NOCLEAR '═αßΦ≡α■ ε∩σ≡α÷ΦΦ'
SL_CollectOst('Ost','boper')
WAIT CLEAR
SELECT ost
DELETE FOR kolvo=0
LOCATE FOR kolvo>0
IF !FOUND()
RETURN
ENDIF
WAIT WINDOW NOWAIT NOCLEAR '╚Σσ≥ ±∩Φ±αφΦσ ≥εΓα≡α'
safeclose('CurOper')
LOCAL lcPodr,lcMol,lcPlace
lcPodr=SPACE(LEN(m_realp.podr))
lcMol=SPACE(LEN(m_realp.mol))
lcPlace=SPACE(LEN(m_realp.place))
SELECT T.podr podrf,T.mol molf,T.place placef,lcPodr podrt,lcMol molt,lcPlace placet,;
T.kodtov,T.nomtov,T.cena cena1,0 cenav1,T.kolvo,CurDoc.TipVal TipVal,k.serial;
FROM ost T,k_kodtov k;
WHERE T.kodtov=k.kodtov;
INTO CURS CurOper READWRITE
GO TOP
LOCAL llReturnStatus
llReturnStatus=0
IF SaveDoc(.T.,.T.)
UPDATE b_docs SET DATA1=CurDoc.datadoc WHERE nomdoc=cNomdoc
ENDIF
WAIT CLEAR
RETURN llReturnStatus
ENDPROC