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

Материал из Фабиус wiki
Перейти к: навигация, поиск
м (CTRL + F6 ДобОст)
м
 
(не показаны 3 промежуточные версии этого же участника)
Строка 1: Строка 1:
[[ACT20001]] - это представление документа [[ACT]] "[[Акт списания алкоголя]]"
+
[[ACT20001]] - это представление документа [[ACT]]
 +
[[Акт списания алкоголя]]
 
= CTRL + F6 ДобОст =
 
= CTRL + F6 ДобОст =
 
  Прочитать остатки в егаис и добавить их в документ
 
  Прочитать остатки в егаис и добавить их в документ
 
+
= CTRL + F7 ДобОтч =
= CTRL + F7 ДобОтч ( Добавить пиво из товарного отчета ) =
+
Добавить пиво из товарного отчета
local fld, sql, aa _
+
= CTRL+F8 ОстМаг =
sql := [ Select SHIFT From REPS] + RET_F_EXT() + [ Where SHIFT = '] + DTOS( DOCS1->DATDOC ) + [1' and ;
+
  Запросить остатки из ЕГАИС ( Остатки в торговом зале )
  CODEGRP = '2201' and REFL1 = 'R20 ' and ANAL1 = ] + DOCS1->KANAL1
+
= CTRL + F10 вЕГАИС =
  aa := SQLTOARR( sql )
+
  Отправить акт списания в ЕГАИС
if EMPTY( aa )
+
  MESSAGE( 'Не найден товарный отчет за ' + DOCS1->DATDOC + '. Пожалуйста, сформируйте отчет' )
+
  return
+
endif // если нет товарного отчета - запрет добавления остатков
+
fld := ' _1,N,5; _2,C,25; _3,N,14,4; '
+
try
+
  _ := CreateTmpFile( fld, '_', ~IsFreeDel := true )
+
  sql := [ Select ANAL2, EAMNT From REPS] + RET_F_EXT() + [ Where SHIFT = '] + DTOS( DOCS1->DATDOC ) + [1' and ;
+
    CODEGRP = '2201' and REFL1 = 'R20 ' and ANAL1 = ] + DOCS1->KANAL1 + [ and ANAL2 > 0 and EAMNT > 0 ]
+
  SimpleSql( [ Insert into ] + TmpFilePath( _ ) + [( _1, _3 ) ] + sql, opdatapath )
+
  sql := [ Update _ Set _2 = SERTIF From ] + TmpFilePath( _ ) + [ _ left outer join R08 ON _1 = KOD ]
+
  SIMPLESQL( sql, reflispath )
+
  sql := [ Delete From ] + TmpFilePath( _ ) + [ Where _2 = '' ]
+
  SIMPLESQL( sql, temppath )
+
  fld := { 'DANAL2', 'NATTR4', 'D1NAME' }
+
  sql := [ Select _1 DANAL2, _3 NATTR4, _2 D1NAME From ] + TmpFilePath( _ )
+
  aa := SQLTOARR( sql, fld )
+
finally
+
  CLOSETABLE( _ )
+
end
+
if !ISEMPTY( aa )
+
  ADDALL( 'ACT', '2', DOCS1->RGNUM,, fld, aa )
+
endif
+
+
+
// _0
+
// _1 код пива в фабиусе
+
// _2 сертификат ( код пива в ЕГАИС )
+
// _3 остаток
+
// _4
+
// _5
+
// _6
+
// _7
+
// _8
+
// _9
+
 
+
= CTRL + F10 вЕГАИС ( Отправить акт списания в ЕГАИС ) =
+
   
+
if !YesNo( 'Вы уверены, что хотите отправить акт списания в ЕГАИС ?', false )
+
  return
+
endif
+
+
local fs_rar_id, ip, port, path, aa, i, msg, typeWriteOff, note
+
+
typeWriteOff := atr( DOCS1->CATTR1 )
+
if Empty( typeWriteOff )
+
  typeWriteOff := 'Реализация'
+
  note := 'Розничная реализация продукции, не подлежащей фиксации в ЕГАИС'
+
endif
+
if TypeWriteOff = 'Пересортица'
+
  note := 'Недостача пересортица'
+
endif
+
if TypeWriteOff = 'Недостача'
+
  note := 'Недостача (хищение, злоупотребление материально ответственных лиц, ошибки учета, естественная убыль,...)'
+
endif
+
if TypeWriteOff = 'Уценка'
+
  note := 'Уценка (списание) в результате порчи'
+
endif
+
if TypeWriteOff = 'Порча'
+
  note := 'Списание объема продукции, не подлежащей дальнейшей реализации (бой, срок годности, порча)'
+
endif
+
if TypeWriteOff = 'Потери'
+
  note := 'Потери при транспортировке'
+
endif
+
if TypeWriteOff = 'Проверки'
+
  note := 'Списание объема продукции, израсходованной на лабораторные нужды для прохождения добровольной проверки качества, рекламные образцы'
+
endif
+
if TypeWriteOff = 'Арест'
+
  note := 'Списание арестованной продукции, изъятой из оборота продукции, конфискованной продукции по решению суда'
+
endif
+
if TypeWriteOff = 'Иные цели'
+
  note := 'Списание продукции, когда ФСМ/АМ не возможно считать'
+
endif
+
+
fs_rar_id := GetPrm( 'FSRAR_ID', TaskName, TaskNum )
+
ip := GetPrm( 'UTM_IP_ADD', TaskName, TaskNum )
+
port := GetPrm( 'UTM_PORT', TaskName, TaskNum )
+
path := Nice_path( TempPath )
+
+
+
+
aa := [<?xml version="1.0" encoding="UTF-8"?>] + Chr( 13 ) + Chr( 10 )
+
aa := aa + [<ns:Documents Version="1.0" ;
+
  xmlns:xsi="http:/] + [/www.w3.org/2001/XMLSchema-instance" ;
+
  xmlns:ns= "http:/] + [/fsrar.ru/WEGAIS/WB_DOC_SINGLE_01" ;
+
  xmlns:pref="http:/] + [/fsrar.ru/WEGAIS/ProductRef_v2" ;
+
  xmlns:oref="http:/] + [/fsrar.ru/WEGAIS/ClientRef_v2" ;
+
  xmlns:awr="http:/] + [/fsrar.ru/WEGAIS/ActWriteOffShop_v2" ;
+
  xmlns:ce="http:/] + [/fsrar.ru/WEGAIS/CommonEnum"> ;
+
  <ns:Owner> ;
+
    <ns:FSRAR_ID>] + atr( fs_rar_id ) + [</ns:FSRAR_ID> ;
+
  </ns:Owner> ;
+
  <ns:Document> ;
+
    <ns:ActWriteOffShop_v2> ;
+
      <awr:Identity>4567</awr:Identity> ;
+
      <awr:Header> ;
+
        <awr:ActNumber>] + atr( DOCS1->NUMDOC ) + [</awr:ActNumber> ;
+
        <awr:ActDate>] + SqlDate( DOCS1->DATDOC ) + [</awr:ActDate> ;
+
        <awr:TypeWriteOff>] + typeWriteOff + [</awr:TypeWriteOff> ;
+
        <awr:Note>] + note + [</awr:Note> ;
+
      </awr:Header> ;
+
      <awr:Content> ]
+
+
+
+
DbGoTop()
+
while !eof()
+
  if NATTR4 < 0
+
    MESSAGE( 'ОСТАТОК в фабиусе МЕНЬШЕ НУЛЯ' )
+
    MESSAGE( 'Исправьте, пожалуйста, Акт НЕ БУДЕТ отправлен' )
+
    return
+
  endif
+
  if ( AMNT - NATTR4 ) > 0 and CATTR1 = 'Н'
+
    if ASCAN( { 261, 263, 500, 520 }, NATTR3 ) > 0
+
    else
+
      if userKOD = 1 or userKOD = 15 or userKOD = 16
+
      else
+
        MESSAGE( 'Крепкий алгоколь списывать нельзя ( ' + atr( D2NAME ) + ' )' )
+
        MESSAGE( 'Исправьте, пожалуйста, Акт НЕ БУДЕТ отправлен' )
+
        return
+
      endif
+
    endif
+
  endif
+
  DbSkip()
+
end
+
+
+
i := 0
+
DbGoTop()
+
while !eof()
+
+
  if ( AMNT - NATTR4 ) > 0 and CATTR1 = 'Н'
+
+
+
    i := i + 1
+
    Field->DANAL1 := i
+
    Field->CATTR1 := 'Да'
+
    aa := aa + [<awr:Position> ;
+
          <awr:Identity>] + i + [</awr:Identity> ;
+
          <awr:Product> ;
+
            <pref:UnitType>Packed</pref:UnitType> ;
+
            <pref:Type>АП</pref:Type> ;
+
            <pref:FullName>] + atr( K2NAME ) + [</pref:FullName> ;
+
            <pref:AlcCode>] + atr( D1NAME ) + [</pref:AlcCode> ;
+
            <pref:Capacity>] + StrTran( str( NATTR1 ), ',', '.' ) + [</pref:Capacity> ;
+
            <pref:Producer> ;
+
              <oref:UL> ;
+
                <oref:ClientRegId>] + atr( CLIENT_REG ) + [</oref:ClientRegId> ;
+
                <oref:FullName>] + atr( OREF_NAME ) + [</oref:FullName> ;
+
                <oref:ShortName>] + atr( OREF_SHORT ) + [</oref:ShortName> ;
+
                <oref:INN>] + INN + [</oref:INN> ;
+
                <oref:KPP>] + KPP + [</oref:KPP> ;
+
                <oref:address> ;
+
                  <oref:Country>643</oref:Country> ;
+
                  <oref:RegionCode>] + padl( REGIONCODE, 2, '0' ) + [</oref:RegionCode> ;
+
                  <oref:description>] + atr( SCRIPT ) + [</oref:description> ;
+
                </oref:address> ;
+
              </oref:UL> ;
+
            </pref:Producer> ;
+
            <pref:ProductVCode>АП</pref:ProductVCode> ;
+
          </awr:Product> ;
+
          <awr:Quantity>] + ( AMNT - NATTR4 ) + [</awr:Quantity> ;
+
        </awr:Position>]
+
  endif
+
  DbSkip()
+
end
+
+
aa := aa + [</awr:Content> ;
+
    </ns:ActWriteOffShop_v2> ;
+
  </ns:Document> ;
+
</ns:Documents> ]
+
+
try
+
  msg := WaitMsg( 'Обработка данных' )
+
  WriteTxtFile( { aa }, 'ActWriteOffShop.xml', path, true,, 'utf8' )
+
  aa := IdHTTPPostFile( path + 'ActWriteOffShop.xml', ip + ':' + port + '/opt/in/ActWriteOffShop_v2' )
+
finally
+
  HideMsg( msg )
+
end
+
+
if !Empty( aa )
+
  WriteTxtFile( { aa }, 'ActWriteOffShop_respond.xml', path, true,, 'utf8' )
+
endif
+
+
Message( 'Все позиции акта списания успешно переданы в ЕГАИС' )
+
 
+
 
= Смотрите также =
 
= Смотрите также =
 
[[ACT]]
 
[[ACT]]

Текущая версия на 10:10, 24 апреля 2019

ACT20001 - это представление документа ACT

Акт списания алкоголя

CTRL + F6 ДобОст

Прочитать остатки в егаис и добавить их в документ

CTRL + F7 ДобОтч

Добавить пиво из товарного отчета

CTRL+F8 ОстМаг

Запросить остатки из ЕГАИС ( Остатки в торговом зале )

CTRL + F10 вЕГАИС

Отправить акт списания в ЕГАИС

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

ACT