home *** CD-ROM | disk | FTP | other *** search
/ ftp.texkom.ru / ftp.texkom.ru.tar / ftp.texkom.ru / kkm1 / atol2lf.prg < prev    next >
Text File  |  2007-07-30  |  12KB  |  388 lines

  1. LPARAM tKass,tLastSession
  2.  
  3. LOCAL i
  4. FOR i=1 TO 100
  5.     FCLOSE(i)
  6. ENDF
  7.  
  8. LOCAL lcProgram
  9. PUBLIC oMyVar
  10. * ╧≤≥ⁿ Ω LF. ╚τ φσσ τα∩≤±Ωα■≥±  Γ±σ ⌠≤φΩ÷ΦΦ.
  11. oMyVar=CREATEOBJECT('MyVar')
  12. *CLOSE DATABASES ALL
  13. LOCAL lnfh
  14. lnfh=0
  15. TRY
  16.     lnfh=FCREATE(oMyVar.cFlag)
  17. CATCH
  18. ENDTR
  19. IF lnfh<=0
  20.     WAIT WINDOW [╧≡επ≡α∞∞α ≤µσ τα∩≤∙σφα] TIMEOUT 10
  21.     RETURN .F.
  22. ENDIF
  23. LOCAL oErr
  24. TRY
  25.     setset()
  26.     IF !EMPTY(tKass)
  27.         =DoSale(tKass,tLastSession)
  28.     ELSE
  29.         FOR i=1 TO 3
  30.             =DoSale(i)
  31.         ENDFOR
  32.     ENDIF
  33. CATCH TO oErr
  34.     *    WAIT WINDOW [╬°ΦßΩα!!!] TIMEOUT 10
  35.     errmes='"╬°ΦßΩα ∩≡Φ Φ∞∩ε≡≥σ ∩≡εΣαµ: '+ [  Error: ] + STR(oErr.ERRORNO) +' | '+;
  36.         [  LineNo: ] + STR(oErr.LINENO)  +' | '+;
  37.         [  Message: ] + oErr.MESSAGE  +' | '+;
  38.         [  Procedure: ] + oErr.PROCEDURE  +' | '+;
  39.         [  Details: ] + oErr.DETAILS  +' | '+;
  40.         [  StackLevel: ] + STR(oErr.STACKLEVEL)  +' | '+;
  41.         [  LineContents: ] + oErr.LINECONTENTS +' | '+;
  42.         [  UserValue: ] + oErr.USERVALUE
  43.     *    WAIT WINDOW ([╬°ΦßΩα!!!]+CHR(13)+STRTRAN(errmes,'|',CHR(13))) TIMEOUT 10
  44.     MESSAGEBOX(STRTRAN(errmes,'|',CHR(13)),4096,'',10000)
  45.     *!*        launchappandwait('net send adm-4 '+errmes)
  46.     *!*        *!*        launchappandwait('net send adm-1 '+errmes)
  47.     *!*        launchappandwait('net send adm-3 '+errmes)
  48. ENDTR
  49. FCLOSE(lnfh)
  50.  
  51. PROCEDURE DoQuit
  52.     CLEAR EVENTS
  53.     QUIT
  54. ENDPROC
  55.  
  56. PROCEDURE DoSale
  57.     LPARAM nKas,tLastSession
  58.     LOCAL lcViddoc,lcMember,lcPath,lcUser,ltTime,lcNomdoc,lnNomoper,lcDocument,lnSumma(1)
  59.     lcUser='Auto'
  60.     ltTime=DATETIME()
  61.     lcFlagExport=oMyVar.FlagExport
  62.     lcFileExport=oMyVar.FileExport
  63.     *    nKas=2
  64.     lcPath=GetIni('kkm_sale.ini','Setting','─Φ≡σΩ≥ε≡Φ  εß∞σφα Ωα±±√ '+TRANSFORM(nKas),"\\cash"+TRANSFORM(nKas)+"\exchg\",.T.)
  65.     IF EMPTY(lcPath)
  66.         msgstop('═σ ε∩≡σΣσδσφα ΣΦ≡σΩ≥ε≡Φ  εß∞σφα',,5000)
  67.         RETURN .F.
  68.     ENDIF
  69.     lcFlagExport=ADDBS(lcPath)+lcFlagExport
  70.     lcFileExport=ADDBS(lcPath)+lcFileExport
  71.     DELETE FILE (lcFileExport)
  72.     IF !FILE(lcFlagExport)
  73.         lnFileFlag=FCREATE(lcFlagExport)
  74.         if lnFileFlag>0
  75. *!*            IF !EMPTY(tLastSession)
  76. *!*                =FPUTS(lnFileFlag,'$$$LASTSESSIONTRANSACTIONS')
  77. *!*            ENDIF
  78. *!*            =FPUTS(lnFileFlag,'$$$CURSESSIONTRANSACTIONS')
  79.         =FPUTS(lnFileFlag,'$$$TRANSACTIONSBYDATETIMERANGE')
  80.         if type('pdBeg')<>'D' or empty(pdbeg)
  81.             pdBeg=date()-1
  82.             pdEnd=date()
  83.         endif
  84.         =FPUTS(lnFileFlag,TRANSFORM(DAY(pdBeg))+'.'+TRANSFORM(MONTH(pdBeg))+'.'+TRANSFORM(YEAR(pdBeg))+' 00:00:00; '+;
  85.             TRANSFORM(DAY(pdEnd))+'.'+TRANSFORM(MONTH(pdEnd))+'.'+TRANSFORM(YEAR(pdEnd))+' 23:59:59;')
  86.         =FCLOSE(lnFileFlag)
  87.         else
  88.             msgstop('═σ ∞επ≤ ±ετΣα≥ⁿ ⌠αΘδ-⌠δαπ'+lcFlagExport,,5000)
  89.             RETURN .F.
  90.         endif
  91.     ENDIF
  92.     LOCAL i,lnTimeOut
  93.     i=1
  94.     lnTimeOut=10
  95.     DO WHILE FILE(lcFlagExport)
  96.         WAIT WINDOW [╬µΦΣαφΦσ Γ√π≡≤τΩΦ ]+lcPath nowait noclear
  97.         IF inkey(lnTimeOut,'M')=27 AND FILE(lcFlagExport)
  98.             wait clear
  99.             msgstop('╬µΦΣαφΦσ Γ√π≡≤τΩΦ ∩≡σ≡Γαφε',,5000)
  100.             RETURN .F.
  101.         ENDIF
  102.         wait clear
  103.         i=i+1
  104.         IF i>18
  105.             ?[╬µΦΣαφΦσ Γ√π≡≤τΩΦ ∩≡σ≡Γαφε ]+lcPath
  106.             RETURN .F.
  107.         ENDIF
  108.     ENDDO
  109.     IF FILE(lcFileExport) AND safeuse('c_oper.dbf',,,.T.) AND safeuse('c_docs.dbf',,,.T.) AND safeuse('k_kkm',,,.T.)
  110.  
  111.         LOCAL lnFile,laString(24),lcStr
  112.         lnFile=FOPEN(lcFileExport,0)
  113.  
  114.         SELECT CD.nomdoc,CD.kkm,CD.lenta,CD.DATA,CD.SUMMA AS summach,SPACE(254) AS COMMENT,CD.skid,CD.pokup,CD.USER,CD.TIMESTAMP,CD.ID,CD.nomer,CD.skidsum,;
  115.             co.kodtov,co.NAME,co.kolvo,co.cena,co.nomtov,co.SUMMA,co.nom,co.cenap,SPACE(20) AS barkod;
  116.             FROM c_docs CD INNER JOIN c_oper co ON CD.nomdoc=co.nomdoc;
  117.             WHERE .F.;
  118.             INTO CURSOR NewChecks READWR
  119.  
  120.         SELECT * FROM NewChecks INTO CURSOR tmpcheck READWR
  121.         lnKodTovLen=LEN(NewChecks.kodtov)
  122.  
  123. &&╧≡ε∩≤±Ωασ∞ ταπεδεΓεΩ
  124.         LOCAL i
  125.         FOR i=1 TO 3
  126.             lcStr=FGETS(lnFile)
  127.         ENDF
  128.         DO WHILE !FEOF(lnFile)
  129.             laString=''
  130.             lcStr=FGETS(lnFile)
  131.             SPLIT(@laString,lcStr,';')
  132.             *lnKKM=VAL(laString(5))
  133.             lnKKM=m.nKas
  134.             lnKassirID=VAL(laString(7))
  135.             ltDate=CTOT( laString(2)+' '+laString(3))
  136.             lnNomer=VAL(laString(6))
  137.             safeuse('k_kassir')
  138.             WAIT WINDOW [╚∞∩ε≡≥ ≥≡αφταΩ÷ΦΦ #]+laString(1) NOWAIT
  139.             LOCATE FOR kassirid=lnKassirID
  140.             IF FOUND()
  141.                 lcKassir=k_kassir.kassirNAME
  142.             ELSE
  143.                 lcKassir='╩α±±Φ≡ '+TRANSFORM(lnKassirID)
  144.             ENDIF
  145.  
  146.             DO CASE
  147.                 CASE INLIST(laString(4),'42','57') &&╬≥Ω≡√≥Φσ ≈σΩα, ┬ε±±≥αφεΓδσφΦσ ε≥δεµσφφεπε ≈σΩα
  148.                     SELE tmpcheck
  149.                     ZAP
  150.                 CASE INLIST(laString(4),'55') &&╟αΩ≡√≥Φσ ≈σΩα
  151.                     SELECT tmpcheck
  152.                     lnLenta=VAL(laString(14))
  153.                     UPDATE tmpcheck SET;
  154.                         DATA = ltDate,;
  155.                         kkm = lnKKM,;
  156.                         pokup = laString(8),;
  157.                         USER = lcKassir,;
  158.                         summach = VAL(STRTRAN(laString(12),',','.')),;
  159.                         lenta= lnLenta,;
  160.                         nom=RECNO(),;
  161.                         ID=lnKKM*100000000+lnLenta*100000+lnNomer
  162.  
  163.                     SELECT NewChecks
  164.                     APPEND FROM DBF('tmpcheck')
  165.  
  166.                 CASE INLIST(laString(4),'11') &&╨σπΦ±≥≡α÷Φ 
  167.                     SELECT tmpcheck
  168.                     APPEND BLANK
  169.                     REPLACE ;
  170.                         DATA WITH ltDate,;
  171.                         kkm WITH lnKKM,;
  172.                         USER WITH lcKassir,;
  173.                         lenta WITH VAL(laString(14)),;
  174.                         nomer WITH VAL(laString(6)),;
  175.                         kodtov WITH PADL(ALLTRIM(laString(8)),lnKodTovLen,'0'),;
  176.                         cenap WITH VAL(STRTRAN(laString(10),',','.')),;
  177.                         kolvo WITH VAL(STRTRAN(laString(11),',','.')),;
  178.                         cena WITH VAL(STRTRAN(laString(15),',','.')),;
  179.                         SUMMA WITH VAL(STRTRAN(laString(16),',','.')),;
  180.                         barkod WITH ALLTRIM(laString(19))
  181.  
  182.                 CASE INLIST(laString(4),'12') &&╤≥ε≡φε
  183.                     lckodtov = PADL(ALLTRIM(laString(8)),lnKodTovLen,'0')
  184.                     lnKolvo = VAL(STRTRAN(laString(11),',','.'))
  185.                     lcbarkod = ALLTRIM(laString(19))
  186.                     SELECT tmpcheck
  187.                     LOCATE FOR kodtov=lckodtov AND barkod=lcbarkod
  188.                     IF FOUND()
  189.                         REPLACE kolvo WITH kolvo+lnKolvo IN tmpcheck
  190.                         IF tmpcheck.kolvo=0
  191.                             DELETE
  192.                         ENDIF
  193.                     ELSE
  194.                         SELECT tmpcheck
  195.                         APPEND BLANK
  196.                         REPLACE ;
  197.                             DATA WITH ltDate,;
  198.                             kkm WITH lnKKM,;
  199.                             USER WITH lcKassir,;
  200.                             lenta WITH VAL(laString(14)),;
  201.                             nomer WITH VAL(laString(6)),;
  202.                             kodtov WITH PADL(ALLTRIM(laString(8)),lnKodTovLen,'0'),;
  203.                             cenap WITH VAL(STRTRAN(laString(10),',','.')),;
  204.                             kolvo WITH VAL(STRTRAN(laString(11),',','.')),;
  205.                             cena WITH VAL(STRTRAN(laString(15),',','.')),;
  206.                             SUMMA WITH VAL(STRTRAN(laString(16),',','.')),;
  207.                             barkod WITH ALLTRIM(laString(19))
  208.                     ENDIF
  209.  
  210.                 CASE INLIST(laString(4),'37') &&╤ΩΦΣΩα %
  211.                     SELECT tmpcheck
  212.                     UPDATE tmpcheck SET;
  213.                         skid=VAL(STRTRAN(laString(11),',','.')),;
  214.                         skidsum = VAL(STRTRAN(laString(12),',','.'))
  215.  
  216.             ENDCASE
  217.         ENDDO
  218.  
  219.         FCLOSE(lnFile)
  220.         *        DELE FILE(lcFileExport)
  221.         WAIT CLEAR
  222.  
  223.         LOCAL ldDate
  224.         ldDate=DATETIME()
  225.  
  226.  
  227.         SELECT * FROM NewChecks nc WHERE !EXIST(SELE * FROM c_docs CD WHERE ID=nc.ID AND lenta=nc.lenta AND CD.kkm=nc.kkm) INTO CURSOR NewChecks READWR
  228.  
  229.         SELECT DISTI nomdoc,ID,nomer,kkm,lenta,DATA,summach AS SUMMA,skidsum,ldDate TIMESTAMP,skid,USER,COMMENT,pokup;
  230.             FROM NewChecks ;
  231.             INTO CURSOR checks READWRITE ;
  232.             ORDER BY 2
  233.  
  234.         ALTER TABLE checks ALTER COMMENT m
  235.         REPLACE ALL COMMENT WITH ALLTRIM(COMMENT)
  236.     
  237.  
  238.  
  239.         SELECT DISTI kkm FROM checks INTO CURSOR kkms
  240.  
  241.         SELECT DISTI kkm FROM NewChecks INTO CURSOR kkms
  242.  
  243.         *!*        SELECT k1.kkm,k2.kkm netnum;
  244.         *!*            FROM k_kkm k2 INNER JOIN kkms k1 ON k2.serialno=TRANSFORM(k1.kkm);
  245.         *!*            INTO CURSOR newkkms
  246.         *!*        USE IN kkms
  247.         *!*        SCAN
  248.         *!*            UPDATE NewChecks SET kkm=newkkms.netnum WHERE kkm=newkkms.kkm
  249.         *!*        ENDSCAN
  250.         *!*        USE
  251.  
  252.  
  253.         LOCAL lnNomDoc
  254.         lnNomDoc=INT(VAL(getnkey('GEP_SETU','C_DOCS','NOMDOC','C',.F.,RECCOUNT('checks'))))-1
  255.         SELECT checks
  256.         REPLACE ALL nomdoc WITH PADL(lnNomDoc+RECNO(),10,'0')
  257.  
  258.         SELECT ch.nomdoc,nc.nom,ch.kkm,nc.kodtov,nc.nomtov,nc.nomer,;
  259.             k.NAME,nc.kolvo,;
  260.             nc.cena,nc.SUMMA,nc.cenap;
  261.             FROM NewChecks nc INNER JOIN checks ch ON nc.ID=ch.ID;
  262.             LEFT JOIN k_kodtov k ON nc.kodtov=k.kodtov;
  263.             ORDER BY 1,2;
  264.             INTO CURSOR items READWRITE
  265.         SELECT items
  266.         LOCATE FOR ISNULL(NAME)
  267.         IF FOUND()
  268.             *** ╬ßφεΓδσφΦσ Φτ∞σφσφφ√⌡ ΩεΣεΓ
  269.             ldModDate=DATE()-1
  270.             SELECT * FROM kod_ch WHERE TABLE='k_kodtov' AND TIMESTAMP>=ldModDate INTO CURSOR modkodtov
  271.             SELECT * FROM items WHERE ISNULL(NAME) INTO CURSOR errkodtov
  272.             SELECT errkodtov
  273.             SCAN
  274.                 IF LOCATE('modkodtov','oldval',errkodtov.kodtov) AND LOCATE('k_kodtov','kodtov',modkodtov.newval)
  275.                     UPDATE items SET kodtov=modkodtov.newval, NAME=k_kodtov.NAME WHERE kodtov=errkodtov.kodtov
  276.                 ENDIF
  277.             ENDSCAN
  278.             UPDATE items SET NAME='' WHERE ISNULL(items.NAME)
  279.             ************ ╩εφσ÷ εßφεΓδσφΦ 
  280.         ENDIF
  281.  
  282.  
  283.         WAIT WINDOW '─εßαΓδ ■ ≥εΓα≡ ∩ε ≈σΩα∞' NOWAIT NOCLEAR
  284.         SELECT c_oper
  285.         APPEND FROM DBF('items')
  286.         WAIT WINDOW '─εßαΓδ ■ φεΓ√σ ≈σΩΦ' NOWAIT NOCLEAR
  287.         SELECT c_docs
  288.         APPEND FROM DBF('checks')
  289.         cacheclear()
  290.         SELECT pokup,CNT(*) ncheck,SUM(SUMMA) SUMMA,MAX(TTOD(DATA)) DATA;
  291.             FROM checks WHERE !EMPTY(pokup) GROUP BY 1 INTO CURSOR chs
  292.  
  293.         SELECT pokup,CNT(*) npok;
  294.             FROM NewChecks WHERE !EMPTY(pokup) GROUP BY 1 INTO CURSOR poks
  295.         IF _TALLY>0
  296.             IF USED('ToUpdateDiscount')
  297.                 INSERT INTO ToUpdateDiscount;
  298.                     SELECT ch.*,p.npok;
  299.                     FROM chs ch INNER JOIN poks p ON ch.pokup=ch.pokup
  300.             ELSE
  301.                 SELECT ch.*,p.npok;
  302.                     FROM chs ch INNER JOIN poks p ON ch.pokup=ch.pokup;
  303.                     INTO CURSOR ToUpdateDiscount READWRITE
  304.             ENDIF
  305.         ENDIF
  306.  
  307.         USE IN chs
  308.         USE IN poks
  309.         USE IN items
  310.         USE IN checks
  311.     ENDIF
  312.  
  313.     *╬ßφεΓδσφΦσ ±≤∞∞ Γ ΣΦ±Ωεφ≥φ√⌡ Ωα≡≥α⌡
  314.     IF USED('ToUpdateDiscount') AND RECCOUNT('ToUpdateDiscount')>0
  315.         SELECT pokup,SUM(SUMMA) SUMMA,MAX(DATA) DATA,SUM(ncheck) ncheck,SUM(npok) npok;
  316.             FROM ToUpdateDiscount GROUP BY 1 INTO CURSOR ToUpdateDiscount
  317.         LOCAL loDiscount
  318.         SCAN
  319.             IF !LOCATE('discount','id',pokup)
  320.                 APPEND BLANK
  321.                 REPLACE ID WITH ToUpdateDiscount.pokup,DATA WITH ToUpdateDiscount.DATA
  322.             ENDIF
  323.             safeclose('curDictVal')
  324.             SELECT * FROM discount WHERE ID=ToUpdateDiscount.pokup INTO CURSOR curDictVal READWRITE
  325.  
  326.             REPLACE SUMMA WITH SUMMA+ToUpdateDiscount.SUMMA,;
  327.                 lastdate WITH ToUpdateDiscount.DATA,;
  328.                 npokup WITH npokup+ToUpdateDiscount.npok,;
  329.                 ncheck WITH ncheck+ToUpdateDiscount.ncheck,;
  330.                 ACTIVE WITH .T.
  331.  
  332.             * ▌≥α Ωα≡≥ε≈Ωα φσ φαΩε∩Φ≥σδⁿφα , α ∩≡ε±≥ε φα⌡εΣΦ≥±  φα 20-Ωσ, ≈≥εß ΣαΓα≥ⁿ µσ±≥Ω≤■ ±ΩΦΣΩ≤;
  333.             *+Ωα≡≥ε≈Ωα ßστφαδⁿφεπε ΩδΦσφ≥α Γ Ωα⌠σ+
  334.             * Ωα≡≥√ Φφσ≥ ∞απατΦφα
  335.             IF !INLIST(ToUpdateDiscount.pokup,'294291931985','294285531795','294288606028','294291931986','291267785698')
  336.                 DO CASE
  337.                     CASE SUMMA>=150000 AND skid<10
  338.                         REPLACE skid WITH 10
  339.                     CASE SUMMA>=50000 AND skid<7
  340.                         REPLACE skid WITH 7
  341.                     CASE SUMMA>=15000 AND skid<5
  342.                         REPLACE skid WITH 5
  343.                 ENDCASE
  344.             ENDIF
  345.             IF beforechangediscount('Edit',,.T.)
  346.                 SELECT curDictVal
  347.                 SCATTER NAME loDiscount
  348.                 SELECT discount
  349.                 GATHER NAME loDiscount
  350.             ENDIF
  351.         ENDSCAN
  352.     ENDIF
  353.     safeclose('ToUpdateDiscount')
  354.  
  355.     cacheclear()
  356.     DoSaleFromChecks()
  357. ENDPROC
  358.  
  359.  
  360. DEFINE CLASS MyVar AS CUSTOM
  361.     cProgram=''
  362.     cDirFrom=''
  363.     cViddoc=''
  364.     cRoznMember=''
  365.     cUser=''
  366.     dStartPeriod={}
  367.     cUslKod='FSALE'
  368.     cFlag=''
  369.     FileExport=''
  370.     FlagExport=''
  371.     PROCEDURE INIT
  372.         THIS.cProgram=GetIni('kkm_sale.ini','Setting','╧≡επ≡α∞∞α','S:\LF\PROGS\lf.exe',.T.)
  373.         THIS.cViddoc=GetIni('kkm_sale.ini','Setting','┬ΦΣ ΣεΩ≤∞σφ≥α ∩ε ≤∞εδ≈αφΦ■','00006',.T.)
  374.         THIS.cRoznMember=GetIni('kkm_sale.ini','Setting','╩εΣ ≡ετφΦ≈φεπε ∩εΩ≤∩α≥σδ ','00005',.T.)
  375.         THIS.cDirFrom=ADDBS(GetIni('kkm_sale.ini','Setting','╧≤≥ⁿ, πΣσ δσµα≥ ∩≡εΣαµΦ','c:\kkm_client\out\',.T.))
  376.         THIS.cUser='AutoMake'
  377.         THIS.dStartPeriod=DATE(YEAR(DATE()),1,1)
  378.         THIS.cFlag=GetIni('kkm_sale.ini','Setting','╘δαπ τα∩≤±Ωα','S:\L\kkm\kkm2lf.runned',.T.)
  379.         THIS.FlagExport=GetIni('kkm_sale.ini','Setting','╘δαπ Γ√π≡≤τΩΦ','pos_f.rep',.T.)
  380.         THIS.FileExport=GetIni('kkm_sale.ini','Setting','╘αΘδ Γ√π≡≤τΩΦ','pos.rep',.T.)
  381.     ENDPROC
  382. ENDDEFINE
  383.  
  384.  
  385.  
  386.  
  387.  
  388.