/*$Id: iceb_t_nn6_start.c,v 5.3 2014/07/31 07:09:27 sasa Exp $*/
/*13.07.2022	22.03.2017	Белых А.И.	iceb_t_nn9_start.c
Печать шапки налоговой накладной  приказ Министерства финансов Украины от 31.12.2015 N 1307
Если вернули 0 - шапку сформировали
             1 - нет
             
*/
#include <errno.h>
#include "buhl.h"

int iceb_t_nn9_start_v(class iceb_tu_str *zved_pn,class iceb_tu_str *snoz,class iceb_tu_str *tippr);

int iceb_t_nn9_start(const char *imaf,
short dd,short md,short gd, //дата документа
short dnn,short mnn,short gnn, //Дата налоговой накладной
const char *nomnn, //Номер налоговой накладной
const char *kpos,
int tipz,  /*1-приход 2-расход*/
const char *kodkontr00,
FILE **ff)
{
int nomer_st=0;
class iceb_tu_str stroka("");
char strsql[1024];
char data_vipiski[512];
SQL_str row,row1;
SQLCURSOR cur,cur1;
class iceb_tu_str nmo(""),nmo1("");  /*Наименование организации*/
class iceb_tu_str inn(""),inn1("");  /*Индивидуальный налоговый номер*/
class iceb_tu_str kodfil(""),kodfil1(""); /*код филиала*/
class SQLCURSOR cur_alx;
SQL_str row_alx;
int kolstr=0;
class iceb_tu_str nnn1("");
class iceb_tu_str nnn2("");
class iceb_tu_str bros("");
class iceb_tu_str kod("1"); /*1-Єдиний державний реєстр підприємств та організацій України (ЄДРПОУ);
2-Державний реєстр фізичних осіб - платників податків (ДРФО); 3-реєстраційний (обліковий) номер платника податків, який присвоюється контролюючими органами (для платників податків, які не
включені до ЄДРПОУ); 4-серія (за наявності) та номер паспорта (для фізичних осіб, які через свої релігійні преконання відмовляються від прийняття реєстраційного номера облікової картки платника
податків та офіційно повідомили про це відповідний контролюючий орган і мають відмітку у паспорті).
***********/
class iceb_tu_str kod1("1");
class iceb_tu_str kod_edrpuo("");
class iceb_tu_str kod_edrpuo1("");

static iceb_tu_str zved_pn("");
static iceb_tu_str snoz("");
static iceb_tu_str nevid("");
static iceb_tu_str tippr("");



if(iceb_t_nn9_start_v(&zved_pn,&snoz,&nevid,&tippr) != 0)
 return(1);



/*Читаем реквизиты организации свои */

sprintf(strsql,"select * from Kontragent where kodkon='%s'",kodkontr00);
if(iceb_t_sql_readkey(strsql,&row,&cur) != 1)
 {
  sprintf(strsql,"%s %s !",
  gettext("Не найден код контрагента"),"00");
  iceb_t_soob(strsql);
 }
else
 {
  if(tipz == 2)
   {
    if(row[16][0] == '\0')
     {
      if(iceb_tu_polen(row[1],&nmo,1,'(') != 0)
        nmo.new_plus(row[1]);
     }
    else
      nmo.new_plus(row[16]);


    inn.new_plus(row[8]);
    
    sprintf(strsql,"select zapis from Kontragent1 where kodkon='%s' and zapis like 'Код филиала%%'",kodkontr00);
    if(iceb_t_sql_readkey(strsql,&row1,&cur1) >= 1)
     {
      iceb_tu_polen(row1[0],&kodfil,2,'|');
     }        

    if(row[15][0] != '\0')
     kod.new_plus("2");

    kod_edrpuo.new_plus(row[5]);
   }

  if(tipz == 1)
   {
    if(row[16][0] == '\0')
      nmo1.new_plus(row[1]);
    else
      nmo1.new_plus(row[16]);

    inn1.new_plus(row[8]);
    sprintf(strsql,"select zapis from Kontragent1 where kodkon='%s' and zapis like 'Код филиала|%%'",kodkontr00);
    if(iceb_t_sql_readkey(strsql,&row1,&cur1) >= 1)
     {
      iceb_tu_polen(row1[0],&kodfil1,2,'|');
     }        
   
    if(row[15][0] != '\0')
     kod1.new_plus("2");

    kod_edrpuo1.new_plus(row[5]);
   }

 } 


/*Читаем реквизиты организации чужие*/
/*При внутреннем перемещении не читать*/
if(iceb_tu_atof(kpos) != 0. || kpos[0] != '0')
 {
  sprintf(strsql,"select * from Kontragent where kodkon='%s'",kpos);
  if(sql_readkey(&bd,strsql,&row,&cur) != 1)
   {
    sprintf(strsql,"%s %s !",gettext("Не найден код контрагента"),kpos);
    iceb_t_soob(strsql);
   }
  else
   {
    if(tipz == 2)
     {
      if(row[16][0] == '\0')
       {
        if(iceb_tu_polen(row[1],&nmo1,1,'(') != 0)
          nmo1.new_plus(row[1]);
       }
      else
        nmo1.new_plus(row[16]);

        
      inn1.new_plus(row[8]);

      sprintf(strsql,"select zapis from Kontragent1 where kodkon='%s' and zapis like 'Код филиала%%'",kpos);
      if(iceb_t_sql_readkey(strsql,&row1,&cur1) >= 1)
       {
        iceb_tu_polen(row1[0],&kodfil1,2,'|');
       }        
      if(row[15][0] != '\0')
       kod1.new_plus("2");

      kod_edrpuo1.new_plus(row[5]);
     }

    if(tipz == 1)
     {
      if(row[16][0] == '\0')
        nmo.new_plus(row[1]);
      else
        nmo.new_plus(row[16]);

      inn.new_plus(row[8]);

      sprintf(strsql,"select zapis from Kontragent1 where kodkon='%s' and zapis like 'Код филиала%%'",kpos);
      if(iceb_t_sql_readkey(strsql,&row1,&cur1) >= 1)
       {
        iceb_tu_polen(row1[0],&kodfil,2,'|');
       }        
      if(row[15][0] != '\0')
       kod.new_plus("2");
      kod_edrpuo.new_plus(row[5]);
     }
    
   }
  if(inn1.ravno()[0] == '\0')
   {
    sprintf(strsql,gettext("Для контрагента %s не введён индивидуальный налоговый номер !"),kpos);
    iceb_t_soob(strsql);
   }
 }

sprintf(strsql,"select str from Alx where fil='nn13_start.alx' order by ns asc");
if((kolstr=cur_alx.make_cursor(&bd,strsql)) < 0)
 {
  iceb_t_msql_error(&bd,gettext("Ошибка создания курсора !"),strsql);
  return(1);
 }

if(kolstr == 0)
 {
  sprintf(strsql,"%s %s!",gettext("Не найдена настройка"),"nn9_start.alx");
  iceb_t_soob(strsql);
  return(1);
 }


if((*ff = fopen(imaf,"w")) == NULL)
 {
  error_op_nfil(imaf,errno,"");
  return(1);
 }

fprintf(*ff,"\x1B\x33%c",20); /*Уменьшение межстрочного интервала*/
//fprintf(*ff,"\x1B\x33%c",24); /*Уменьшение межстрочного интервала*/
fprintf(*ff,"\x1B\%c%c",'[',10); /*Уменьшение высоты символа*/
memset(strsql,'\0',sizeof(strsql));
if(dnn != 0)
 {
  iceb_tu_mesc(mnn,1,strsql);
  sprintf(data_vipiski,"%02d%02d%04d",dnn,mnn,gnn);
 }
else
 {
  iceb_tu_mesc(md,1,strsql);
  sprintf(data_vipiski,"%02d%02d%04d",dd,md,gd);
 }

while(cur_alx.read_cursor(&row_alx) != 0)
 {
  if(row_alx[0][0] == '#')
     continue;

  nomer_st+=1;
  stroka.new_plus(row_alx[0]);
  
  switch(nomer_st)
   {  
    case 2: /*зведена податкова накладна*/
      iceb_tu_vstav(&stroka,zved_pn.ravno(),54,56,1);
      break;
    case 4: /*складена на операції, звільнені від оподаткування*/
      iceb_tu_vstav(&stroka,snoz.ravno(),54,56,1);
      break;

    case 6: /*Не підлягае наданню отримувачу/покупчю*/
      iceb_tu_vstav(&stroka,nevid.ravno(),54,57,1);
      break;

    case 7: /*тип причини*/
      iceb_tu_vstav(&stroka,tippr.ravno(),53,60,2);
      break;



    case 9: /*Дата складання - номер налоговой накладной*/
      iceb_tu_vstav(&stroka,data_vipiski,79,96,2 );
      
      if(iceb_tu_polen(nomnn,&nnn1,1,'/') != 0)
        nnn1.new_plus(nomnn);
      else
        iceb_tu_polen(nomnn,&nnn2,2,'/');
        
      sprintf(strsql,"%*s",iceb_tu_kolbait(7,nnn1.ravno()),nnn1.ravno());
      iceb_tu_vstav(&stroka,strsql,100,115,2 );
      if(nnn2.getdlinna() > 1)
       {
        sprintf(strsql,"%*s",iceb_tu_kolbait(4,nnn2.ravno()),nnn2.ravno());
        iceb_tu_vstav(&stroka,strsql,118,120,1 );
       }      
      break;


    case 15: /*первая строка наименования продавца и покупателя*/
      sprintf(strsql,"%*.*s",iceb_tu_kolbait(86,nmo.ravno()),iceb_tu_kolbait(86,nmo.ravno()),nmo.ravno());
      iceb_tu_vstav(&stroka,strsql,2,88,1 );

      sprintf(strsql,"%*.*s",iceb_tu_kolbait(86,nmo1.ravno()),iceb_tu_kolbait(86,nmo1.ravno()),nmo1.ravno());
      iceb_tu_vstav(&stroka,strsql,93,178,1 );
      break;
      
    case 16:  /*вторая строка наименования продавца и покупателя*/
      if(iceb_tu_strlen(nmo.ravno()) > 86)
       {
        sprintf(strsql,"%*.*s",iceb_tu_kolbait(86,iceb_tu_adrsimv(86,nmo.ravno())),iceb_tu_kolbait(86,iceb_tu_adrsimv(86,nmo.ravno())),iceb_tu_adrsimv(86,nmo.ravno()));
        iceb_tu_vstav(&stroka,strsql,2,88,1 );
       }
      if(iceb_tu_strlen(nmo1.ravno()) > 86)
       {
        sprintf(strsql,"%*.*s",iceb_tu_kolbait(86,iceb_tu_adrsimv(86,nmo1.ravno())),iceb_tu_kolbait(86,iceb_tu_adrsimv(86,nmo1.ravno())),iceb_tu_adrsimv(86,nmo1.ravno()));
        iceb_tu_vstav(&stroka,strsql,93,178,1 );
       }
      break;

    case 17:  /*третя строка наименования продвца и покупателя*/
      if(iceb_tu_strlen(nmo.ravno()) > 172)
       {
        sprintf(strsql,"%*.*s",iceb_tu_kolbait(86,iceb_tu_adrsimv(172,nmo.ravno())),iceb_tu_kolbait(86,iceb_tu_adrsimv(172,nmo.ravno())),iceb_tu_adrsimv(172,nmo.ravno()));
        iceb_tu_vstav(&stroka,strsql,2,88,1 );
       }
      if(iceb_tu_strlen(nmo1.ravno()) > 172)
       {
        sprintf(strsql,"%*.*s",iceb_tu_kolbait(86,iceb_tu_adrsimv(172,nmo1.ravno())),iceb_tu_kolbait(86,iceb_tu_adrsimv(172,nmo1.ravno())),iceb_tu_adrsimv(172,nmo1.ravno()));
        iceb_tu_vstav(&stroka,strsql,93,178,1 );
       }
      break;
      
    case 20:  /*индивидуальный налоговый номер*/
      sprintf(strsql,"%*s",iceb_tu_kolbait(12,inn.ravno()),inn.ravno()); /*Для печати со смещением вправо*/
      iceb_tu_vstav(&stroka,strsql,6,30,2 );

      iceb_tu_vstav(&stroka,kodfil.ravno(),38,46,2); /*Код філії*/

      iceb_tu_vstav(&stroka,kod_edrpuo.ravno(),53,66,1 ); /*Код ЕДРПУО*/

      iceb_tu_vstav(&stroka,kod.ravno(),80,82,1 ); /*Код */
      
      
      sprintf(strsql,"%*s",iceb_tu_kolbait(12,inn1.ravno()),inn1.ravno()); /*Для печати со смещением вправо*/
      iceb_tu_vstav(&stroka,strsql,97,121,2 );

      iceb_tu_vstav(&stroka,kodfil1.ravno(),129,137,2 ); /*Код філії*/

      iceb_tu_vstav(&stroka,kod_edrpuo1.ravno(),145,158,1 ); /*Код ЕДРПУО*/

      iceb_tu_vstav(&stroka,kod1.ravno(),172,174,1); /*Код */

      break;
   }
  fprintf(*ff,"%s",stroka.ravno());
 }

return(0);

}
