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

Материал из Фабиус wiki
Перейти к: навигация, поиск
м
м (CTRL + F10 вЕГАИС ( Отправить акт списания в ЕГАИС ))
Строка 1: Строка 1:
 
[[ACT20001]] - это представление документа [[ACT]]
 
[[ACT20001]] - это представление документа [[ACT]]
 
= CTRL + F10 вЕГАИС ( Отправить акт списания в ЕГАИС ) =
 
= 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]]

Версия 14:12, 18 июня 2018

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

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