Advertisement
Guest User

Optimizar Corte de Caja

a guest
Mar 11th, 2017
114
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. *
  2. *
  3. procedure probarcorte(nAlgoritmo,cCorte)
  4.     cCorte = padl(allt(cCorte),7)
  5.     set decimal to 10
  6.     set delete on
  7.     set talk off
  8.     close databases
  9.     use docum in 0 order tiponum
  10.     use movim in 0 order tiponumpar
  11.     if nAlgoritmo=1
  12.         corteActual(cCorte)
  13.     else
  14.         corteoptimizado(cCorte)
  15.     endif
  16. return
  17.  
  18.  
  19.  
  20. *
  21. * Este select carga las partidas de un corte
  22. * mediante left join con docum
  23. * tal como se hace actualmente
  24. *
  25. procedure corteActual(vCorte)
  26.     set talk on
  27.     TextoIniciar()
  28.     text
  29.     Select  
  30.         Movim.TIPODOC, Movim.NUMDOC, Movim.NUMART,
  31.         Movim.CANT, Movim.PRECIO, Movim.PJEDESC, Movim.IMPUESTO1,
  32.         Docum.TC, Docum.DIVISA
  33.     From Movim
  34.         Left Join Docum on Movim.TIPODOC+Movim.NUMDOC==Docum.TIPODOC+Docum.NUMDOC
  35.     Where
  36.         Docum.CORTE== vCorte  and Docum.FORMAPAGO=='1'  and
  37.         (Docum.TIPODOC==' N' or Docum.TIPODOC==' F') and
  38.         Docum.STATUS <> 1
  39.     Order By Docum.TIPODOC, Movim.IMPUESTO1
  40.     into cursor partidas
  41.     endtext
  42.     cmd = textoSql()
  43.     &cmd
  44.     set talk off
  45.     select partidas
  46.     sum cant*precio*(1+impuesto1/100) to nTotPartidas
  47.     nTotPartidas = round(nTotPartidas,2)
  48.     ?
  49.     ? 'Algoritmo Actual'
  50.     ? 'CORTE ACTUAL:',vCorte
  51.     ? '$ de partidas:',nTotPartidas
  52. return
  53.  
  54.  
  55.  
  56.  
  57. *
  58. * Este procedimiento optimizado carga todas las partidas de un corte
  59. *
  60. procedure corteoptimizado(vCorte)
  61.     create cursor partidas( ;
  62.         tipodoc     c(2),;
  63.         numdoc      c(10),;
  64.         status      n(1),;
  65.         divisa      c(1),;
  66.         fecha       d(8),;
  67.         numart      c(20),;
  68.         cant        n(16,6),;
  69.         precio      n(16,6),;
  70.         pjedesc     n(6,2),;
  71.         impuesto1   n(6,2))
  72.     select * from docum where corte==vCorte into cursor documentos
  73.     set near on
  74.     select documentos
  75.     scan
  76.         cKeyDoc = documentos.tipodoc+documentos.numdoc
  77.         select movim
  78.         =seek(cKeyDoc,'Movim','TipoNumPar')
  79.         scan while movim.tipodoc+movim.numdoc==cKeyDoc
  80.             insert into partidas values (;
  81.                 documentos.tipodoc,;
  82.                 documentos.numdoc,;
  83.                 documentos.status,;
  84.                 documentos.divisa,;
  85.                 documentos.fecha,;
  86.                 movim.numart,;
  87.                 movim.cant,;
  88.                 movim.precio,;
  89.                 movim.pjedesc,;
  90.                 movim.impuesto1)
  91.         endscan
  92.         select documentos
  93.     endscan
  94.     set near off
  95.     select partidas
  96.     sum cant*precio*(1+impuesto1/100) to nTotPartidas for status<>1 and (tipodoc==' F' or tipodoc==' N')
  97.     nTotPartidas = round(nTotPartidas,2)
  98.     select documentos
  99.     sum importe+impuesto1 to nTotDocumentos for status<>1 and formapago=='1' and (tipodoc==' F' or tipodoc==' N')  
  100.     nTotDocumentos = round(nTotDocumentos,2)
  101.     ?
  102.     ? 'Algoritmo Optimizado'
  103.     ? 'CORTE:',vCorte
  104.     ? '$ de partidas:',nTotPartidas
  105.     ? '$ de document:',nTotDocumentos
  106. retu
  107. *
  108. procedure probarcorte(nAlgoritmo,cCorte)
  109.     cCorte = padl(allt(cCorte),7)
  110.     set decimal to 10
  111.     set delete on
  112.     set talk off
  113.     close databases
  114.     use docum in 0 order tiponum
  115.     use movim in 0 order tiponumpar
  116.     if nAlgoritmo=1
  117.         corteActual(cCorte)
  118.     else
  119.         corteoptimizado(cCorte)
  120.     endif
  121. return
  122.  
  123.  
  124. *
  125. * Este select carga las partidas de un corte
  126. * mediante left join con docum
  127. * tal como se hace actualmente
  128. *
  129. procedure corteActual(vCorte)
  130.     set talk on
  131.     TextoIniciar()
  132.     text
  133.     Select  
  134.         Movim.TIPODOC, Movim.NUMDOC, Movim.NUMART,
  135.         Movim.CANT, Movim.PRECIO, Movim.PJEDESC, Movim.IMPUESTO1,
  136.         Docum.TC, Docum.DIVISA
  137.     From Movim
  138.         Left Join Docum on Movim.TIPODOC+Movim.NUMDOC==Docum.TIPODOC+Docum.NUMDOC
  139.     Where
  140.         Docum.CORTE== vCorte  and Docum.FORMAPAGO=='1'  and
  141.         (Docum.TIPODOC==' N' or Docum.TIPODOC==' F') and
  142.         Docum.STATUS <> 1
  143.     Order By Docum.TIPODOC, Movim.IMPUESTO1
  144.     into cursor partidas
  145.     endtext
  146.     cmd = textoSql()
  147.     &cmd
  148.     set talk off
  149.     select partidas
  150.     sum cant*precio*(1+impuesto1/100) to nTotPartidas
  151.     nTotPartidas = round(nTotPartidas,2)
  152.     ?
  153.     ? 'Algoritmo Actual'
  154.     ? 'CORTE ACTUAL:',vCorte
  155.     ? '$ de partidas:',nTotPartidas
  156. return
  157.  
  158.  
  159.  
  160.  
  161. *
  162. * Este procedimiento optimizado carga todas las partidas de un corte
  163. *
  164. procedure corteoptimizado(vCorte)
  165.     create cursor partidas( ;
  166.         tipodoc     c(2),;
  167.         numdoc      c(10),;
  168.         status      n(1),;
  169.         divisa      c(1),;
  170.         fecha       d(8),;
  171.         numart      c(20),;
  172.         cant        n(16,6),;
  173.         precio      n(16,6),;
  174.         pjedesc     n(6,2),;
  175.         impuesto1   n(6,2))
  176.     select * from docum where corte==vCorte into cursor documentos
  177.     set near on
  178.     select documentos
  179.     scan
  180.         cKeyDoc = documentos.tipodoc+documentos.numdoc
  181.         select movim
  182.         =seek(cKeyDoc,'Movim','TipoNumPar')
  183.         scan while movim.tipodoc+movim.numdoc==cKeyDoc
  184.             insert into partidas values (;
  185.                 documentos.tipodoc,;
  186.                 documentos.numdoc,;
  187.                 documentos.status,;
  188.                 documentos.divisa,;
  189.                 documentos.fecha,;
  190.                 movim.numart,;
  191.                 movim.cant,;
  192.                 movim.precio,;
  193.                 movim.pjedesc,;
  194.                 movim.impuesto1)
  195.         endscan
  196.         select documentos
  197.     endscan
  198.     set near off
  199.     select partidas
  200.     sum cant*precio*(1+impuesto1/100) to nTotPartidas for status<>1 and (tipodoc==' F' or tipodoc==' N')
  201.     nTotPartidas = round(nTotPartidas,2)
  202.     select documentos
  203.     sum importe+impuesto1 to nTotDocumentos for status<>1 and formapago=='1' and (tipodoc==' F' or tipodoc==' N')  
  204.     nTotDocumentos = round(nTotDocumentos,2)
  205.     ?
  206.     ? 'Algoritmo Optimizado'
  207.     ? 'CORTE:',vCorte
  208.     ? '$ de partidas:',nTotPartidas
  209.     ? '$ de document:',nTotDocumentos
  210. retu
  211. *
  212. * Este select carga las partidas de un corte
  213. * mediante left join con docum
  214. * tal como se hace actualmente
  215. *
  216. procedure corteActual(vCorte)
  217.     set talk on
  218.     TextoIniciar()
  219.     text
  220.     Select  
  221.         Movim.TIPODOC, Movim.NUMDOC, Movim.NUMART,
  222.         Movim.CANT, Movim.PRECIO, Movim.PJEDESC, Movim.IMPUESTO1,
  223.         Docum.TC, Docum.DIVISA
  224.     From Movim
  225.         Left Join Docum on Movim.TIPODOC+Movim.NUMDOC==Docum.TIPODOC+Docum.NUMDOC
  226.     Where
  227.         Docum.CORTE== vCorte  and Docum.FORMAPAGO=='1'  and
  228.         (Docum.TIPODOC==' N' or Docum.TIPODOC==' F') and
  229.         Docum.STATUS <> 1
  230.     Order By Docum.TIPODOC, Movim.IMPUESTO1
  231.     into cursor partidas
  232.     endtext
  233.     cmd = textoSql()
  234.     &cmd
  235.     set talk off
  236.     select partidas
  237.     sum cant*precio*(1+impuesto1/100) to nTotPartidas
  238.     nTotPartidas = round(nTotPartidas,2)
  239.     ?
  240.     ? 'Algoritmo Actual'
  241.     ? 'CORTE ACTUAL:',vCorte
  242.     ? '$ de partidas:',nTotPartidas
  243. return
  244.  
  245.  
  246.  
  247.  
  248. *
  249. * Este procedimiento optimizado carga todas las partidas de un corte
  250. *
  251. procedure corteoptimizado(vCorte)
  252.     create cursor partidas( ;
  253.         tipodoc     c(2),;
  254.         numdoc      c(10),;
  255.         status      n(1),;
  256.         divisa      c(1),;
  257.         fecha       d(8),;
  258.         numart      c(20),;
  259.         cant        n(16,6),;
  260.         precio      n(16,6),;
  261.         pjedesc     n(6,2),;
  262.         impuesto1   n(6,2))
  263.     select * from docum where corte==vCorte into cursor documentos
  264.     set near on
  265.     select documentos
  266.     scan
  267.         cKeyDoc = documentos.tipodoc+documentos.numdoc
  268.         select movim
  269.         =seek(cKeyDoc,'Movim','TipoNumPar')
  270.         scan while movim.tipodoc+movim.numdoc==cKeyDoc
  271.             insert into partidas values (;
  272.                 documentos.tipodoc,;
  273.                 documentos.numdoc,;
  274.                 documentos.status,;
  275.                 documentos.divisa,;
  276.                 documentos.fecha,;
  277.                 movim.numart,;
  278.                 movim.cant,;
  279.                 movim.precio,;
  280.                 movim.pjedesc,;
  281.                 movim.impuesto1)
  282.         endscan
  283.         select documentos
  284.     endscan
  285.     set near off
  286.     select partidas
  287.     sum cant*precio*(1+impuesto1/100) to nTotPartidas for status<>1 and (tipodoc==' F' or tipodoc==' N')
  288.     nTotPartidas = round(nTotPartidas,2)
  289.     select documentos
  290.     sum importe+impuesto1 to nTotDocumentos for status<>1 and formapago=='1' and (tipodoc==' F' or tipodoc==' N')  
  291.     nTotDocumentos = round(nTotDocumentos,2)
  292.     ?
  293.     ? 'Algoritmo Optimizado'
  294.     ? 'CORTE:',vCorte
  295.     ? '$ de partidas:',nTotPartidas
  296.     ? '$ de document:',nTotDocumentos
  297. retu
  298. * Este select carga las partidas de un corte
  299. * mediante left join con docum
  300. * tal como se hace actualmente
  301. *
  302. procedure corteActual(vCorte)
  303.     set talk on
  304.     TextoIniciar()
  305.     text
  306.     Select  
  307.         Movim.TIPODOC, Movim.NUMDOC, Movim.NUMART,
  308.         Movim.CANT, Movim.PRECIO, Movim.PJEDESC, Movim.IMPUESTO1,
  309.         Docum.TC, Docum.DIVISA
  310.     From Movim
  311.         Left Join Docum on Movim.TIPODOC+Movim.NUMDOC==Docum.TIPODOC+Docum.NUMDOC
  312.     Where
  313.         Docum.CORTE== vCorte  and Docum.FORMAPAGO=='1'  and
  314.         (Docum.TIPODOC==' N' or Docum.TIPODOC==' F') and
  315.         Docum.STATUS <> 1
  316.     Order By Docum.TIPODOC, Movim.IMPUESTO1
  317.     into cursor partidas
  318.     endtext
  319.     cmd = textoSql()
  320.     &cmd
  321.     set talk off
  322.     select partidas
  323.     sum cant*precio*(1+impuesto1/100) to nTotPartidas
  324.     nTotPartidas = round(nTotPartidas,2)
  325.     ?
  326.     ? 'Algoritmo Actual'
  327.     ? 'CORTE ACTUAL:',vCorte
  328.     ? '$ de partidas:',nTotPartidas
  329. return
  330.  
  331.  
  332.  
  333.  
  334. *
  335. * Este procedimiento optimizado carga todas las partidas de un corte
  336. *
  337. procedure corteoptimizado(vCorte)
  338.     create cursor partidas( ;
  339.         tipodoc     c(2),;
  340.         numdoc      c(10),;
  341.         status      n(1),;
  342.         divisa      c(1),;
  343.         fecha       d(8),;
  344.         numart      c(20),;
  345.         cant        n(16,6),;
  346.         precio      n(16,6),;
  347.         pjedesc     n(6,2),;
  348.         impuesto1   n(6,2))
  349.     select * from docum where corte==vCorte into cursor documentos
  350.     set near on
  351.     select documentos
  352.     scan
  353.         cKeyDoc = documentos.tipodoc+documentos.numdoc
  354.         select movim
  355.         =seek(cKeyDoc,'Movim','TipoNumPar')
  356.         scan while movim.tipodoc+movim.numdoc==cKeyDoc
  357.             insert into partidas values (;
  358.                 documentos.tipodoc,;
  359.                 documentos.numdoc,;
  360.                 documentos.status,;
  361.                 documentos.divisa,;
  362.                 documentos.fecha,;
  363.                 movim.numart,;
  364.                 movim.cant,;
  365.                 movim.precio,;
  366.                 movim.pjedesc,;
  367.                 movim.impuesto1)
  368.         endscan
  369.         select documentos
  370.     endscan
  371.     set near off
  372.     select partidas
  373.     sum cant*precio*(1+impuesto1/100) to nTotPartidas for status<>1 and (tipodoc==' F' or tipodoc==' N')
  374.     nTotPartidas = round(nTotPartidas,2)
  375.     select documentos
  376.     sum importe+impuesto1 to nTotDocumentos for status<>1 and formapago=='1' and (tipodoc==' F' or tipodoc==' N')  
  377.     nTotDocumentos = round(nTotDocumentos,2)
  378.     ?
  379.     ? 'Algoritmo Optimizado'
  380.     ? 'CORTE:',vCorte
  381.     ? '$ de partidas:',nTotPartidas
  382.     ? '$ de document:',nTotDocumentos
  383. retu
  384. * mediante left join con docum
  385. * tal como se hace actualmente
  386. *
  387. procedure corteActual(vCorte)
  388.     set talk on
  389.     TextoIniciar()
  390.     text
  391.     Select  
  392.         Movim.TIPODOC, Movim.NUMDOC, Movim.NUMART,
  393.         Movim.CANT, Movim.PRECIO, Movim.PJEDESC, Movim.IMPUESTO1,
  394.         Docum.TC, Docum.DIVISA
  395.     From Movim
  396.         Left Join Docum on Movim.TIPODOC+Movim.NUMDOC==Docum.TIPODOC+Docum.NUMDOC
  397.     Where
  398.         Docum.CORTE== vCorte  and Docum.FORMAPAGO=='1'  and
  399.         (Docum.TIPODOC==' N' or Docum.TIPODOC==' F') and
  400.         Docum.STATUS <> 1
  401.     Order By Docum.TIPODOC, Movim.IMPUESTO1
  402.     into cursor partidas
  403.     endtext
  404.     cmd = textoSql()
  405.     &cmd
  406.     set talk off
  407.     select partidas
  408.     sum cant*precio*(1+impuesto1/100) to nTotPartidas
  409.     nTotPartidas = round(nTotPartidas,2)
  410.     ?
  411.     ? 'Algoritmo Actual'
  412.     ? 'CORTE ACTUAL:',vCorte
  413.     ? '$ de partidas:',nTotPartidas
  414. return
  415.  
  416.  
  417.  
  418.  
  419. *
  420. * Este procedimiento optimizado carga todas las partidas de un corte
  421. *
  422. procedure corteoptimizado(vCorte)
  423.     create cursor partidas( ;
  424.         tipodoc     c(2),;
  425.         numdoc      c(10),;
  426.         status      n(1),;
  427.         divisa      c(1),;
  428.         fecha       d(8),;
  429.         numart      c(20),;
  430.         cant        n(16,6),;
  431.         precio      n(16,6),;
  432.         pjedesc     n(6,2),;
  433.         impuesto1   n(6,2))
  434.     select * from docum where corte==vCorte into cursor documentos
  435.     set near on
  436.     select documentos
  437.     scan
  438.         cKeyDoc = documentos.tipodoc+documentos.numdoc
  439.         select movim
  440.         =seek(cKeyDoc,'Movim','TipoNumPar')
  441.         scan while movim.tipodoc+movim.numdoc==cKeyDoc
  442.             insert into partidas values (;
  443.                 documentos.tipodoc,;
  444.                 documentos.numdoc,;
  445.                 documentos.status,;
  446.                 documentos.divisa,;
  447.                 documentos.fecha,;
  448.                 movim.numart,;
  449.                 movim.cant,;
  450.                 movim.precio,;
  451.                 movim.pjedesc,;
  452.                 movim.impuesto1)
  453.         endscan
  454.         select documentos
  455.     endscan
  456.     set near off
  457.     select partidas
  458.     sum cant*precio*(1+impuesto1/100) to nTotPartidas for status<>1 and (tipodoc==' F' or tipodoc==' N')
  459.     nTotPartidas = round(nTotPartidas,2)
  460.     select documentos
  461.     sum importe+impuesto1 to nTotDocumentos for status<>1 and formapago=='1' and (tipodoc==' F' or tipodoc==' N')  
  462.     nTotDocumentos = round(nTotDocumentos,2)
  463.     ?
  464.     ? 'Algoritmo Optimizado'
  465.     ? 'CORTE:',vCorte
  466.     ? '$ de partidas:',nTotPartidas
  467.     ? '$ de document:',nTotDocumentos
  468. retu
  469. * tal como se hace actualmente
  470. *
  471. procedure corteActual(vCorte)
  472.     set talk on
  473.     TextoIniciar()
  474.     text
  475.     Select  
  476.         Movim.TIPODOC, Movim.NUMDOC, Movim.NUMART,
  477.         Movim.CANT, Movim.PRECIO, Movim.PJEDESC, Movim.IMPUESTO1,
  478.         Docum.TC, Docum.DIVISA
  479.     From Movim
  480.         Left Join Docum on Movim.TIPODOC+Movim.NUMDOC==Docum.TIPODOC+Docum.NUMDOC
  481.     Where
  482.         Docum.CORTE== vCorte  and Docum.FORMAPAGO=='1'  and
  483.         (Docum.TIPODOC==' N' or Docum.TIPODOC==' F') and
  484.         Docum.STATUS <> 1
  485.     Order By Docum.TIPODOC, Movim.IMPUESTO1
  486.     into cursor partidas
  487.     endtext
  488.     cmd = textoSql()
  489.     &cmd
  490.     set talk off
  491.     select partidas
  492.     sum cant*precio*(1+impuesto1/100) to nTotPartidas
  493.     nTotPartidas = round(nTotPartidas,2)
  494.     ?
  495.     ? 'Algoritmo Actual'
  496.     ? 'CORTE ACTUAL:',vCorte
  497.     ? '$ de partidas:',nTotPartidas
  498. return
  499.  
  500.  
  501.  
  502.  
  503. *
  504. * Este procedimiento optimizado carga todas las partidas de un corte
  505. *
  506. procedure corteoptimizado(vCorte)
  507.     create cursor partidas( ;
  508.         tipodoc     c(2),;
  509.         numdoc      c(10),;
  510.         status      n(1),;
  511.         divisa      c(1),;
  512.         fecha       d(8),;
  513.         numart      c(20),;
  514.         cant        n(16,6),;
  515.         precio      n(16,6),;
  516.         pjedesc     n(6,2),;
  517.         impuesto1   n(6,2))
  518.     select * from docum where corte==vCorte into cursor documentos
  519.     set near on
  520.     select documentos
  521.     scan
  522.         cKeyDoc = documentos.tipodoc+documentos.numdoc
  523.         select movim
  524.         =seek(cKeyDoc,'Movim','TipoNumPar')
  525.         scan while movim.tipodoc+movim.numdoc==cKeyDoc
  526.             insert into partidas values (;
  527.                 documentos.tipodoc,;
  528.                 documentos.numdoc,;
  529.                 documentos.status,;
  530.                 documentos.divisa,;
  531.                 documentos.fecha,;
  532.                 movim.numart,;
  533.                 movim.cant,;
  534.                 movim.precio,;
  535.                 movim.pjedesc,;
  536.                 movim.impuesto1)
  537.         endscan
  538.         select documentos
  539.     endscan
  540.     set near off
  541.     select partidas
  542.     sum cant*precio*(1+impuesto1/100) to nTotPartidas for status<>1 and (tipodoc==' F' or tipodoc==' N')
  543.     nTotPartidas = round(nTotPartidas,2)
  544.     select documentos
  545.     sum importe+impuesto1 to nTotDocumentos for status<>1 and formapago=='1' and (tipodoc==' F' or tipodoc==' N')  
  546.     nTotDocumentos = round(nTotDocumentos,2)
  547.     ?
  548.     ? 'Algoritmo Optimizado'
  549.     ? 'CORTE:',vCorte
  550.     ? '$ de partidas:',nTotPartidas
  551.     ? '$ de document:',nTotDocumentos
  552. retu
  553. *
  554. procedure corteActual(vCorte)
  555.     set talk on
  556.     TextoIniciar()
  557.     text
  558.     Select  
  559.         Movim.TIPODOC, Movim.NUMDOC, Movim.NUMART,
  560.         Movim.CANT, Movim.PRECIO, Movim.PJEDESC, Movim.IMPUESTO1,
  561.         Docum.TC, Docum.DIVISA
  562.     From Movim
  563.         Left Join Docum on Movim.TIPODOC+Movim.NUMDOC==Docum.TIPODOC+Docum.NUMDOC
  564.     Where
  565.         Docum.CORTE== vCorte  and Docum.FORMAPAGO=='1'  and
  566.         (Docum.TIPODOC==' N' or Docum.TIPODOC==' F') and
  567.         Docum.STATUS <> 1
  568.     Order By Docum.TIPODOC, Movim.IMPUESTO1
  569.     into cursor partidas
  570.     endtext
  571.     cmd = textoSql()
  572.     &cmd
  573.     set talk off
  574.     select partidas
  575.     sum cant*precio*(1+impuesto1/100) to nTotPartidas
  576.     nTotPartidas = round(nTotPartidas,2)
  577.     ?
  578.     ? 'Algoritmo Actual'
  579.     ? 'CORTE ACTUAL:',vCorte
  580.     ? '$ de partidas:',nTotPartidas
  581. return
  582.  
  583.  
  584.  
  585. *
  586. * Este procedimiento optimizado carga todas las partidas de un corte
  587. *
  588. procedure corteoptimizado(vCorte)
  589.     create cursor partidas( ;
  590.         tipodoc     c(2),;
  591.         numdoc      c(10),;
  592.         status      n(1),;
  593.         divisa      c(1),;
  594.         fecha       d(8),;
  595.         numart      c(20),;
  596.         cant        n(16,6),;
  597.         precio      n(16,6),;
  598.         pjedesc     n(6,2),;
  599.         impuesto1   n(6,2))
  600.     select * from docum where corte==vCorte into cursor documentos
  601.     set near on
  602.     select documentos
  603.     scan
  604.         cKeyDoc = documentos.tipodoc+documentos.numdoc
  605.         select movim
  606.         =seek(cKeyDoc,'Movim','TipoNumPar')
  607.         scan while movim.tipodoc+movim.numdoc==cKeyDoc
  608.             insert into partidas values (;
  609.                 documentos.tipodoc,;
  610.                 documentos.numdoc,;
  611.                 documentos.status,;
  612.                 documentos.divisa,;
  613.                 documentos.fecha,;
  614.                 movim.numart,;
  615.                 movim.cant,;
  616.                 movim.precio,;
  617.                 movim.pjedesc,;
  618.                 movim.impuesto1)
  619.         endscan
  620.         select documentos
  621.     endscan
  622.     set near off
  623.     select partidas
  624.     sum cant*precio*(1+impuesto1/100) to nTotPartidas for status<>1 and (tipodoc==' F' or tipodoc==' N')
  625.     nTotPartidas = round(nTotPartidas,2)
  626.     select documentos
  627.     sum importe+impuesto1 to nTotDocumentos for status<>1 and formapago=='1' and (tipodoc==' F' or tipodoc==' N')  
  628.     nTotDocumentos = round(nTotDocumentos,2)
  629.     ?
  630.     ? 'Algoritmo Optimizado'
  631.     ? 'CORTE:',vCorte
  632.     ? '$ de partidas:',nTotPartidas
  633.     ? '$ de document:',nTotDocumentos
  634. retu
  635. *
  636. * Este procedimiento optimizado carga todas las partidas de un corte
  637. *
  638. procedure corteoptimizado(vCorte)
  639.     create cursor partidas( ;
  640.         tipodoc     c(2),;
  641.         numdoc      c(10),;
  642.         status      n(1),;
  643.         divisa      c(1),;
  644.         fecha       d(8),;
  645.         numart      c(20),;
  646.         cant        n(16,6),;
  647.         precio      n(16,6),;
  648.         pjedesc     n(6,2),;
  649.         impuesto1   n(6,2))
  650.     select * from docum where corte==vCorte into cursor documentos
  651.     set near on
  652.     select documentos
  653.     scan
  654.         cKeyDoc = documentos.tipodoc+documentos.numdoc
  655.         select movim
  656.         =seek(cKeyDoc,'Movim','TipoNumPar')
  657.         scan while movim.tipodoc+movim.numdoc==cKeyDoc
  658.             insert into partidas values (;
  659.                 documentos.tipodoc,;
  660.                 documentos.numdoc,;
  661.                 documentos.status,;
  662.                 documentos.divisa,;
  663.                 documentos.fecha,;
  664.                 movim.numart,;
  665.                 movim.cant,;
  666.                 movim.precio,;
  667.                 movim.pjedesc,;
  668.                 movim.impuesto1)
  669.         endscan
  670.         select documentos
  671.     endscan
  672.     set near off
  673.     select partidas
  674.     sum cant*precio*(1+impuesto1/100) to nTotPartidas for status<>1 and (tipodoc==' F' or tipodoc==' N')
  675.     nTotPartidas = round(nTotPartidas,2)
  676.     select documentos
  677.     sum importe+impuesto1 to nTotDocumentos for status<>1 and formapago=='1' and (tipodoc==' F' or tipodoc==' N')  
  678.     nTotDocumentos = round(nTotDocumentos,2)
  679.     ?
  680.     ? 'Algoritmo Optimizado'
  681.     ? 'CORTE:',vCorte
  682.     ? '$ de partidas:',nTotPartidas
  683.     ? '$ de document:',nTotDocumentos
  684. retu
  685. * Este procedimiento optimizado carga todas las partidas de un corte
  686. *
  687. procedure corteoptimizado(vCorte)
  688.     create cursor partidas( ;
  689.         tipodoc     c(2),;
  690.         numdoc      c(10),;
  691.         status      n(1),;
  692.         divisa      c(1),;
  693.         fecha       d(8),;
  694.         numart      c(20),;
  695.         cant        n(16,6),;
  696.         precio      n(16,6),;
  697.         pjedesc     n(6,2),;
  698.         impuesto1   n(6,2))
  699.     select * from docum where corte==vCorte into cursor documentos
  700.     set near on
  701.     select documentos
  702.     scan
  703.         cKeyDoc = documentos.tipodoc+documentos.numdoc
  704.         select movim
  705.         =seek(cKeyDoc,'Movim','TipoNumPar')
  706.         scan while movim.tipodoc+movim.numdoc==cKeyDoc
  707.             insert into partidas values (;
  708.                 documentos.tipodoc,;
  709.                 documentos.numdoc,;
  710.                 documentos.status,;
  711.                 documentos.divisa,;
  712.                 documentos.fecha,;
  713.                 movim.numart,;
  714.                 movim.cant,;
  715.                 movim.precio,;
  716.                 movim.pjedesc,;
  717.                 movim.impuesto1)
  718.         endscan
  719.         select documentos
  720.     endscan
  721.     set near off
  722.     select partidas
  723.     sum cant*precio*(1+impuesto1/100) to nTotPartidas for status<>1 and (tipodoc==' F' or tipodoc==' N')
  724.     nTotPartidas = round(nTotPartidas,2)
  725.     select documentos
  726.     sum importe+impuesto1 to nTotDocumentos for status<>1 and formapago=='1' and (tipodoc==' F' or tipodoc==' N')  
  727.     nTotDocumentos = round(nTotDocumentos,2)
  728.     ?
  729.     ? 'Algoritmo Optimizado'
  730.     ? 'CORTE:',vCorte
  731.     ? '$ de partidas:',nTotPartidas
  732.     ? '$ de document:',nTotDocumentos
  733. retu
  734. *
  735. procedure corteoptimizado(vCorte)
  736.     create cursor partidas( ;
  737.         tipodoc     c(2),;
  738.         numdoc      c(10),;
  739.         status      n(1),;
  740.         divisa      c(1),;
  741.         fecha       d(8),;
  742.         numart      c(20),;
  743.         cant        n(16,6),;
  744.         precio      n(16,6),;
  745.         pjedesc     n(6,2),;
  746.         impuesto1   n(6,2))
  747.     select * from docum where corte==vCorte into cursor documentos
  748.     set near on
  749.     select documentos
  750.     scan
  751.         cKeyDoc = documentos.tipodoc+documentos.numdoc
  752.         select movim
  753.         =seek(cKeyDoc,'Movim','TipoNumPar')
  754.         scan while movim.tipodoc+movim.numdoc==cKeyDoc
  755.             insert into partidas values (;
  756.                 documentos.tipodoc,;
  757.                 documentos.numdoc,;
  758.                 documentos.status,;
  759.                 documentos.divisa,;
  760.                 documentos.fecha,;
  761.                 movim.numart,;
  762.                 movim.cant,;
  763.                 movim.precio,;
  764.                 movim.pjedesc,;
  765.                 movim.impuesto1)
  766.         endscan
  767.         select documentos
  768.     endscan
  769.     set near off
  770.     select partidas
  771.     sum cant*precio*(1+impuesto1/100) to nTotPartidas for status<>1 and (tipodoc==' F' or tipodoc==' N')
  772.     nTotPartidas = round(nTotPartidas,2)
  773.     select documentos
  774.     sum importe+impuesto1 to nTotDocumentos for status<>1 and formapago=='1' and (tipodoc==' F' or tipodoc==' N')  
  775.     nTotDocumentos = round(nTotDocumentos,2)
  776.     ?
  777.     ? 'Algoritmo Optimizado'
  778.     ? 'CORTE:',vCorte
  779.     ? '$ de partidas:',nTotPartidas
  780.     ? '$ de document:',nTotDocumentos
  781. return
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement