БланкСШаблоном "Конвертор счетов-фактур для 18% НДС";


proc КонвертироватьИсх;
var Robl,Rsub,i,n,rec,kol,КолЗап:Integer;
var НДС,Всего,БезНДС,СуммаНДС:Numeric;
var ВсегоДок,Сто1,Сто18,Сто2,Сум1,Сум18,Сум2:Numeric;
var Вер69,Аванс:Logical;
  Вер69=if(Pos('6.9',Версия)<>0,true,false);
  if Раб.Бух.VerSQL:
      КолЗап=1000;
  else
      КолЗап=100;
  fi;
  kol=1;
  hint('Обработка с.ф. покупателей');
  Robl=OpenWorkArea('СчетФакт','Дата','Дата>=01.01.2004');
  Try
    BeginChanging(Robl);
    Try
      for i=1..records(Robl) do
	ВсегоДок=0;Сто1=0;Сто18=0;Сто2=0;Сум1=0;Сум18=0;Сум2=0;
	Аванс=GetFieldL(Robl,i,'Аванс');
	RSub=OpenArray(Robl,i,'КолНаим','НДС');
	Try
	  for n=1..records(Rsub) do
	    НДС=GetFieldN(RSub,n,'НДС');
	    Всего=GetFieldN(RSub,n,'ВСЕГО');
	    if Аванс:
	      СуммаНДС=Всего*(1-(100/(100+НДС)));
	    else
	      if Вер69:
		СуммаНДС=GetFieldN(RSub,n,'СуммаНДС');
	      else
		СуммаНДС=GetFieldN(RSub,n,'Колич')*GetFieldN(RSub,n,'Цена')*НДС/100;
	      fi;
	    fi;
	    if Вер69:
	      БезНДС=GetFieldN(RSub,n,'Сумма');
	    else
	      БезНДС=Всего-СуммаНДС;
	    fi;
	    ВсегоДок=ВсегоДок+Всего;
	    if НДС=20:
		Сто1=Сто1+СуммаНДС;
		Сум1=Сум1+БезНДС;
	      |НДС=18:
		Сто18=Сто18+СуммаНДС;
		Сум18=Сум18+БезНДС;
	      |НДС=10:
		Сто2=Сто2+СуммаНДС;
		Сум2=Сум2+БезНДС;
	    fi;
	  end;
	Finally
	  CloseWorkArea(RSub);
	End;

	rec=PutFieldN(Robl,i,'ВсегоДок',ВсегоДок);
	rec=PutFieldN(Robl,i,'Сто1',Сто1);
	rec=PutFieldN(Robl,i,'Сто18',Сто18);
	rec=PutFieldN(Robl,i,'Сто2',Сто2);
	rec=PutFieldN(Robl,i,'Сум1',Сум1);
	rec=PutFieldN(Robl,i,'Сум18',Сум18);
	rec=PutFieldN(Robl,i,'Сум2',Сум2);
	kol=kol+1;
	if Kol=КолЗап:
	  hint('Сохранение изменений...');
	  EndChanging(Robl);
	  BeginChanging(Robl);
	  hint('Обработка с.ф. покупателей');
	fi;
      end;
      hint('Сохранение изменений...');
      EndChanging(Robl);
    Except
      CancelChanging(Robl);
      raise;
    End;
  Finally
    CloseWorkArea(Robl);
  End;
end;

proc КонвертироватьВх;
var Robl,i,rec,kol,КолЗап:Integer;
var Вер69:Logical;
var СумБНДС20,СумНДС20:Numeric;
  Вер69=if(Pos('6.9',Версия)<>0,true,false);
  if Раб.Бух.VerSQL:
      КолЗап=1000;
  else
      КолЗап=100;
  fi;
  kol=1;
  hint('Обработка с.ф. поставщиков');
  Robl=OpenWorkArea('СчетФактПост','Дата','Дата>=01.01.2004');
  Try
    BeginChanging(Robl);
    Try
      for i=1..records(robl) do
	СумБНДС20=GetFieldN(Robl,i,'СТО2');
	СумНДС20 =GetFieldN(Robl,i,'СУМ2');
	if СумБНДС20>0 and СумНДС20>0:
	  if СумБНДС20*18%=СумНДС20:
	      rec=PutFieldN(Robl,i,'СТО18',СумБНДС20);
	      rec=PutFieldN(Robl,i,'СУМ18',СумНДС20);
	      rec=PutFieldN(Robl,i,'СТО2',0);
	      rec=PutFieldN(Robl,i,'СУМ2',0);
	      kol=kol+1;
	  fi;
	end;

	if Kol=КолЗап:
	  hint('Сохранение изменений...');
	  EndChanging(Robl);
	  BeginChanging(Robl);
	  hint('Обработка с.ф. поставщиков');
	fi;
      end;
      hint('Сохранение изменений...');
      EndChanging(Robl);
    Except
      CancelChanging(Robl);
      raise;
    End;
  Finally
    CloseWorkArea(Robl);
  End;
end;

proc Запустить_ПриНажатии(Кнопка:String);
  if ВопрДаОтказ('Картотека и бланк счетов-фактур закрыты?')=кмдВерно:
    Try
      КонвертироватьИсх;
      КонвертироватьВх;
      message('Конвертирование закончено.');
    except
      raise;
    end;
  fi;
end;

proc кнЗакрыть_ПриНажатии(Кнопка:String);
  -- Формальный параметр в данном случае не используется
  Close;
end;

Конец
