REX2 — различия между версиями

Материал из Фабиус wiki
Перейти к: навигация, поиск
м
м (CTRL+F10)
Строка 2: Строка 2:
 
= CTRL+F10 =
 
= CTRL+F10 =
 
  Создать документ на основании установки цен
 
  Создать документ на основании установки цен
 +
== ТЕКСТ ==
 +
local del
 +
del := true // del := [[YESNO]]( 'Удалять одинаковые цены ?', false )
 +
local sql, r599, msg, aa, r20_kod, fld, pp, flt
 +
flt := [ USERKOD = ] + userKOD
 +
r20_kod := DOCS1->DANAL1 // магазин
 +
sql := [ DELETE FROM R599 WHERE 'SYSTEM.' = 'SYSTEM.' and USERKOD = ] + userKOD
 +
SIMPLESQL( sql, ReflisPath )
 +
sql := [ Select DANAL2, NATTR1, ] + userKOD + [ From DOCS] + RET_F_EXT() + [ Where KINDDOC = 'UPR' and LVLNUM = '2' and DATDOC = '] + SQLDATE( DOCS1->DATDOC ) + [' and ;
 +
  DREFL1 = 'R20 ' and DANAL1 = ] + r20_kod + [ and DANAL2 > 0 and NATTR1 > 0 and DREFL2 = 'R08 ' ]
 +
SIMPLESQL( [ Insert into ] + EXPANDREFLPATH( 'R599' ) + [( KOD, NEW_PRICE, USERKOD ) ] + sql, opdataPATH )
 +
try
 +
  r599 := OPENKLSF( 'R599' )
 +
  ( r599 )->( SETFILTER( flt ) )
 +
  ( r599 )->( DBGOTOP() )
 +
  while !( r599 )->( EOF() )
 +
    aa := REALNAME( 'R08', ( r599 )->KOD )
 +
    WAITMSG( aa, msg )
 +
    ( r599 )->PNAME := aa
 +
    fld := { 'EAMNT', 'EDSUM' }
 +
    aa := DAY_REST( ( r599 )->KOD, DOCS1->DATDOC, r20_kod )
 +
    if !ISEMPTY( aa )
 +
      ( r599 )->AMNT := aa[1,1]
 +
      ( r599 )->OLD_SUM := aa[1,2]
 +
      ( r599 )->OLD_PRICE := DIV_Z( ( r599 )->OLD_SUM, ( r599 )->AMNT, 2 )
 +
      ( r599 )->NEW_SUM := ROUND( ( r599 )->AMNT * ( r599 )->NEW_PRICE, 2 )
 +
    endif
 +
    ( r599 )->( DBSKIP() )
 +
  end
 +
finally
 +
  CLOSEKLSF( r599 )
 +
  HIDEMSG( msg )
 +
end
 +
if del
 +
  sql := [ DELETE FROM R599 WHERE 'SYSTEM.' = 'SYSTEM.' and OLD_PRICE = NEW_PRICE and USERKOD = ] + userKOD
 +
  SIMPLESQL( sql, reflisPATH )
 +
endif
 +
sql := [ DELETE FROM R599 WHERE OLD_PRICE = 0 and USERKOD = ] + userKOD
 +
SIMPLESQL( sql, reflisPATH ) //  - в документе Переоценка по кнопке Ctrl F10 - не выводить в списке товар, если старая цена по нему  = 0.
 +
r599 := CHOICEREFR( 'R599', "GRPRECORD( 'KOD' )",, flt )
 +
if VALTYPE( r599 ) = 'N'
 +
  r599 := { r599 }
 +
endif
 +
fld := { 'KANAL2', 'NATTR3', 'NATTR2', 'NATTR4' }
 +
sql := [ Select KOD KANAL2, OLD_PRICE NATTR3, NEW_PRICE NATTR2, AMNT NATTR4 From R599 Where KOD in ( ] + ARRASSTRING( r599 ) + [ ) and USERKOD = ] + userKOD
 +
aa := SQLTOARR( sql, fld, reflisPATH )
 +
try
 +
  isCalcAverPrice := true
 +
  if !ISEMPTY( aa )
 +
    ADDALL( 'REX', '2', DOCS1->RGNUM,, fld, aa )
 +
  endif
 +
finally
 +
  isCalcAverPrice := false
 +
end
 +
 
= Смотрите также =
 
= Смотрите также =
 
[[REX]]
 
[[REX]]

Версия 07:58, 28 марта 2018

REX2 - это уровень 2 документа REX

CTRL+F10

Создать документ на основании установки цен

ТЕКСТ

local del
del := true // del := YESNO( 'Удалять одинаковые цены ?', false )
local sql, r599, msg, aa, r20_kod, fld, pp, flt
flt := [ USERKOD = ] + userKOD
r20_kod := DOCS1->DANAL1 // магазин
sql := [ DELETE FROM R599 WHERE 'SYSTEM.' = 'SYSTEM.' and USERKOD = ] + userKOD
SIMPLESQL( sql, ReflisPath )
sql := [ Select DANAL2, NATTR1, ] + userKOD + [ From DOCS] + RET_F_EXT() + [ Where KINDDOC = 'UPR' and LVLNUM = '2' and DATDOC = '] + SQLDATE( DOCS1->DATDOC ) + [' and ;
  DREFL1 = 'R20 ' and DANAL1 = ] + r20_kod + [ and DANAL2 > 0 and NATTR1 > 0 and DREFL2 = 'R08 ' ]
SIMPLESQL( [ Insert into ] + EXPANDREFLPATH( 'R599' ) + [( KOD, NEW_PRICE, USERKOD ) ] + sql, opdataPATH )
try
  r599 := OPENKLSF( 'R599' )
  ( r599 )->( SETFILTER( flt ) )
  ( r599 )->( DBGOTOP() )
  while !( r599 )->( EOF() )
    aa := REALNAME( 'R08', ( r599 )->KOD )
    WAITMSG( aa, msg )
    ( r599 )->PNAME := aa
    fld := { 'EAMNT', 'EDSUM' }
    aa := DAY_REST( ( r599 )->KOD, DOCS1->DATDOC, r20_kod )
    if !ISEMPTY( aa )
      ( r599 )->AMNT := aa[1,1]
      ( r599 )->OLD_SUM := aa[1,2]
      ( r599 )->OLD_PRICE := DIV_Z( ( r599 )->OLD_SUM, ( r599 )->AMNT, 2 )
      ( r599 )->NEW_SUM := ROUND( ( r599 )->AMNT * ( r599 )->NEW_PRICE, 2 )
    endif
    ( r599 )->( DBSKIP() )
  end
finally
  CLOSEKLSF( r599 )
  HIDEMSG( msg )
end
if del
  sql := [ DELETE FROM R599 WHERE 'SYSTEM.' = 'SYSTEM.' and OLD_PRICE = NEW_PRICE and USERKOD = ] + userKOD
  SIMPLESQL( sql, reflisPATH )
endif
sql := [ DELETE FROM R599 WHERE OLD_PRICE = 0 and USERKOD = ] + userKOD
SIMPLESQL( sql, reflisPATH ) //   - в документе Переоценка по кнопке Ctrl F10 - не выводить в списке товар, если старая цена по нему  = 0.
r599 := CHOICEREFR( 'R599', "GRPRECORD( 'KOD' )",, flt )
if VALTYPE( r599 ) = 'N'
  r599 := { r599 }
endif
fld := { 'KANAL2', 'NATTR3', 'NATTR2', 'NATTR4' }
sql := [ Select KOD KANAL2, OLD_PRICE NATTR3, NEW_PRICE NATTR2, AMNT NATTR4 From R599 Where KOD in ( ] + ARRASSTRING( r599 ) + [ ) and USERKOD = ] + userKOD
aa := SQLTOARR( sql, fld, reflisPATH )
try
  isCalcAverPrice := true
  if !ISEMPTY( aa )
    ADDALL( 'REX', '2', DOCS1->RGNUM,, fld, aa )
  endif
finally
  isCalcAverPrice := false
end

Смотрите также

REX