/* $Id: vkart1.c,v 5.31 2013/09/26 09:43:43 sasa Exp $ */
/*23.05.2023	22.09.1998	Белых А.И.	vkart1.c
Ввод дополнительных данных к карточке
*/
#include "buhg.h"
#include "zarkart.h"

void            zapis(long,int,int,char[]); /*vkartn.c*/
int             dirzar2n(short,char[],char[],short,short);
short		dirzar20n(short,char[],char[],short,short,short);
int dirzarkh(int metkar,int tabnom,class iceb_tu_str *kod_banka,class iceb_tu_str *kartshet);

extern short    mmm,ggg;

void vkart1(class zarkart_rk *rkr)
{
int		N,K;
class iceb_tu_str kart_shet_old(rkr->bankshet.ravno());
class iceb_tu_str sod("");
class iceb_tu_str naimkod("");
class iceb_tu_str kodd("");
class iceb_tu_str nai("");
SQL_str         row;
SQLCURSOR cur;
char		strsql[512];
int		poz,komv,kold;
short		dr=rkr->drog,mr=rkr->mrog,gr=rkr->grog; /*Дата рождения*/
char		bros[512];
char		datvd[24];

N=0;
VVOD VV(0);
VV.VVOD_spisok_add_MD(gettext("Адрес...................."));//0
VV.VVOD_spisok_add_MD(gettext("Номер паспорта..........."));//1
VV.VVOD_spisok_add_MD(gettext("Кем выдан паспорт........"));//2
VV.VVOD_spisok_add_MD(gettext("Дата выдачи паспорта....."));//3
VV.VVOD_spisok_add_MD(gettext("Телефон.................."));//4
VV.VVOD_spisok_add_MD(gettext("Профес. название работы.."));//5
VV.VVOD_spisok_add_MD(gettext("Город нал. инспекции....."));//6
VV.VVOD_spisok_add_MD(gettext("Идентификационный номер.."));//7
VV.VVOD_spisok_add_MD(gettext("Счёт в банке............."));//8
VV.VVOD_spisok_add_MD(gettext("Тип кредитной карты......"));//9
VV.VVOD_spisok_add_MD(gettext("Дата рождения............"));//10
VV.VVOD_spisok_add_MD(gettext("Пол......................"));//11
VV.VVOD_spisok_add_MD(gettext("Дата повышения з/п......."));//12
VV.VVOD_spisok_add_MD(gettext("Код банка................"));//13
VV.VVOD_spisok_add_MD(gettext("Код спецстажа дата номер."));//14
VV.VVOD_spisok_add_MD(gettext("Код классификатора проф.."));//15
VV.VVOD_spisok_add_MD(gettext("Документ начала труд. от."));//16
VV.VVOD_spisok_add_MD(gettext("Основание для прек.тр.от."));//17
VV.VVOD_spisok_add_MD(gettext("Дата создания раб. места."));//18

VV.VVOD_spisok_add_data(100);//0
VV.VVOD_spisok_add_data(30);//1
VV.VVOD_spisok_add_data(100);//2
VV.VVOD_spisok_add_data(11);//3
VV.VVOD_spisok_add_data(50);//4
VV.VVOD_spisok_add_data(50);//5
VV.VVOD_spisok_add_data(50);//6
VV.VVOD_spisok_add_data(11);//7
VV.VVOD_spisok_add_data(30);//8
VV.VVOD_spisok_add_data(30);//9

VV.VVOD_spisok_add_data(11);//10
VV.VVOD_spisok_add_data(30);//11
VV.VVOD_spisok_add_data(11);//12
VV.VVOD_spisok_add_data(50);//13
VV.VVOD_spisok_add_data(64);//14
VV.VVOD_spisok_add_data(16);//15
VV.VVOD_spisok_add_data(255);//16
VV.VVOD_spisok_add_data(255);//17
VV.VVOD_spisok_add_data(11);//18


VV.VVOD_spisok_zapis_data(0,rkr->adres.ravno());
VV.VVOD_spisok_zapis_data(1,rkr->nomp.ravno());
VV.VVOD_spisok_zapis_data(2,rkr->vidan.ravno());
memset(datvd,'\0',sizeof(datvd));
if(rkr->gv != 0)
 sprintf(datvd,"%d.%d.%d",rkr->dv,rkr->mv,rkr->gv);
VV.VVOD_spisok_zapis_data(3,datvd);
VV.VVOD_spisok_zapis_data(4,rkr->telef.ravno());
VV.VVOD_spisok_zapis_data(5,rkr->harac.ravno());
if(rkr->kodg != 0)
 {
  sprintf(strsql,"select naik from Gnali where kod=%d",rkr->kodg);
  if(sql_readkey(&bd,strsql,&row,&cur) != 1)
   {
    beep();
    printw("%s %d !\n",
    gettext("Не найден код города налоговой инспекции"),rkr->kodg);
    OSTANOV();
   }  
  else
   VV.VVOD_spisok_zapis_data(6,row[0]);
 }

VV.VVOD_spisok_zapis_data(7,rkr->inn.ravno());
VV.VVOD_spisok_zapis_data(8,rkr->bankshet.ravno());
VV.VVOD_spisok_zapis_data(9,rkr->tipkk.ravno());
if(rkr->grog != 0)
 {
  sprintf(strsql,"%d.%d.%d",rkr->drog,rkr->mrog,rkr->grog);
  VV.VVOD_spisok_zapis_data(10,strsql);
 }
 
if(rkr->gppz != 0)
 {
  sprintf(strsql,"%d.%d.%d",rkr->dppz,rkr->mppz,rkr->gppz);
  VV.VVOD_spisok_zapis_data(12,strsql);
 }

naz:;

clear();

if(rkr->pol == 0)
  VV.VVOD_spisok_zapis_data(11,gettext("Мужчина"));
if(rkr->pol == 1)
  VV.VVOD_spisok_zapis_data(11,gettext("Женщина"));


if(rkr->kodbank != 0)
 {
  sprintf(strsql,"select naik from Zarsb where kod=%d",rkr->kodbank);
  if(iceb_t_sql_readkey(strsql,&row,&cur) == 1)
   {
    sprintf(strsql,"%d %s",rkr->kodbank,row[0]);
    VV.data_plus(13,strsql);
   }
  else
   rkr->kodbank=0;
 }
else
  VV.data_plus(13,"");


VV.data_plus(14,rkr->kodss.ravno());
VV.data_plus(15,rkr->kkp.ravno());
VV.data_plus(16,rkr->dnt.ravno());
VV.data_plus(17,rkr->opt.ravno());
VV.data_plus(18,rkr->dsrm.ravno());

move(0,0);
printw("%d %s",rkr->tabn,rkr->fio.ravno());

if(gr != 0)
 {
//  move(1,0);
  printw(" %s%d",gettext("Возраст:"),ggg-gr);
 }

helstr(LINES-1,0,"F1",gettext("помощь"),
"F3",gettext("город"),
"F4",gettext("карт.счета"),
"F10",gettext("выход"),NULL);



VV.vramka(1,0,0);





for(;;)
 {
  attron(VV.VVOD_return_cs(iceb_CFS)); 
  VV.vprintw(N,stdscr);
  
  K=getch();
  attroff(VV.VVOD_return_cs(iceb_CFS));
  attron(VV.VVOD_return_cs(iceb_CFM));

  VV.vprintw(N,stdscr);

  if(K == KEY_RESIZE)
   goto naz;
  if(K == KEY_MOUSE)
    K=mouseklic(&N,VV.PY,VV.PX,VV.MDLS,VV.KLST,stdscr);

  if(K == ENTER)
   {
    attroff(VV.VVOD_return_cs(iceb_CFM));
    attron(VV.VVOD_return_cs(iceb_CFV));

    VV.vprintw_clear(N,stdscr);

    if(N == 6)      /*Код города*/
     {
      attroff(VV.VVOD_return_cs(iceb_CFM));
      sod.new_plus("");
      poz=komv=0;
      naimkod.new_plus("");
      if(dirmat1("Gnali",&sod,&naimkod,LINES-5,30,2,2,&poz,&komv,"","\0") == 0)
       {
        VV.data_plus(N,naimkod.ravno());
	rkr->kodg=sod.ravno_atoi();
       }
      goto naz;
     }  

    if(N == 11)   //Пол человека
     {
      attroff(VV.VVOD_return_cs(iceb_CFM));
      VVOD MENU(3);
      MENU.VVOD_spisok_add_ZAG(gettext("Выберите нужное и нажмите Enter"));

      MENU.VVOD_spisok_add_MD(gettext("Мужчина"));
      MENU.VVOD_spisok_add_MD(gettext("Женщина"));
      MENU.VVOD_spisok_add_MD(gettext("Выход."));
      int kom1=0;
      while(menu3w(stdscr,&MENU,&kom1,-1,-1,0) != 0);
      switch (kom1)
       {
        case  2 :
        case -1 :
         goto naz;

       }
      rkr->pol=kom1;
      goto naz;
     }

    if(N == 13)      /*Код банка*/
     {
      attroff(VV.VVOD_return_cs(iceb_CFM));
      class iceb_tu_str kod_b("");
      class iceb_tu_str naimb("");
      
      if(dirsb(2,&kod_b,&naimb) == 0)
       {
        VV.data_plus(N,naimb.ravno());
	rkr->kodbank=kod_b.ravno_atoi();
        sprintf(strsql,"select nks from Zarkh where tn=%d and kb=%d",rkr->tabn,rkr->kodbank);
        if(iceb_t_sql_readkey(strsql,&row,&cur) == 1)
          VV.data_plus(8,row[0]);         
       }
      goto naz;
     }  
     
    VV.vgetstr(N,stdscr);
    
    attroff(VV.VVOD_return_cs(iceb_CFV));
    attron(VV.VVOD_return_cs(iceb_CFM));

    if(N == 7 && VV.VVOD_spisok_return_data(N)[0] != '\0')     //Идентификационный номер
     {
      if(strlen(VV.VVOD_spisok_return_data(N)) != 10)
       {
        attroff(VV.VVOD_return_cs(iceb_CFS));
        attron(VV.VVOD_return_cs(iceb_CFM));
        iceb_t_soob(gettext("Количество знаков в идентификационном коде не равно 10 !"));
       }

      rkr->inn.new_plus(VV.VVOD_spisok_return_data(N));

      /*Проверяем*/
      sprintf(strsql,"select tabn,fio from Kartb where inn='%s'",VV.VVOD_spisok_return_data(N));
      if(sql_readkey(&bd,strsql,&row,&cur) >= 1)
       {
        if(rkr->tabn != atol(row[0]))
         {
          attroff(VV.VVOD_return_cs(iceb_CFS));
          attron(VV.VVOD_return_cs(iceb_CFM));
          VVOD SOOB(1);
          SOOB.VVOD_spisok_add_MD(gettext("Такой индентификационный код уже введён !"));
          sprintf(strsql,"%s %s",row[0],row[1]);
          SOOB.VVOD_spisok_add_MD(strsql);
          soobshw(&SOOB,stdscr,-1,-1,0,1);
         }
       }

      if(strlen(VV.VVOD_spisok_return_data(N)) == 10)
       {
        if(VV.VVOD_spisok_return_data(10)[0] == '\0')
         {
          sprintf(bros,"%5.5s",VV.VVOD_spisok_return_data(N));
          kold=atoi(bros);
          dr=0;
          mr=1;
          gr=1900;
          iceb_tu_denrog(&dr,&mr,&gr,kold);
          sprintf(bros,"%d.%d.%d",dr,mr,gr);
          VV.VVOD_spisok_zapis_data(10,bros);

          rkr->pol=0;
          if(VV.VVOD_spisok_return_data(N)[8] == '0' || VV.VVOD_spisok_return_data(N)[8] == '2' 
          || VV.VVOD_spisok_return_data(N)[8] == '4' || VV.VVOD_spisok_return_data(N)[8] == '6' || 
          VV.VVOD_spisok_return_data(N)[8] == '8')
            rkr->pol=1;

         }                

       }

      N++;
      goto naz;
     }

    if(N == 8)      /*номер картсчёта*/
     {
/***********
      if(VV.data_ravno(N)[0] == '\0')
       {
        rkr->kodbank=0;
       }
************/
      goto naz;
     }  

    if(N == 10 && VV.VVOD_spisok_return_data(N)[0] != '\0')     //Дата рождения
     {
      if(VV.VVOD_spisok_return_data(10)[0] != '\0')
       if(iceb_tu_rsdat(&rkr->drog,&rkr->mrog,&rkr->grog,VV.VVOD_spisok_return_data(N),1) != 0)
        {
         attroff(VV.VVOD_return_cs(iceb_CFS));
         attron(VV.VVOD_return_cs(iceb_CFM));
         VVOD SOOB(1);
         SOOB.VVOD_spisok_add_MD(gettext("Не правильно введена дата рождения !"));
         soobshw(&SOOB,stdscr,-1,-1,0,1);
        }
      N++;
      goto naz;
     }

    VV.vprintw(N,stdscr);
    N++;
   }
  if(K==SDN) /*Стрелка вниз*/
   {
    N++;
   }
  if(K==SUP) /*Стрелка вверх*/
   {
    N--;
   }
  if(N > VV.KLST-1)
   {
    N=0;
   }
  if(N < 0)
   {
    N=VV.KLST-1;
   }

  switch (K)
   {
    case ESC :
      K=ESC;

    case FK10:
    case TAB:
      attroff(VV.VVOD_return_cs(iceb_CFS));
      attron(VV.VVOD_return_cs(iceb_CFM));

      rkr->adres.new_plus(VV.VVOD_spisok_return_data(0));
      rkr->nomp.new_plus(VV.VVOD_spisok_return_data(1));
      rkr->vidan.new_plus(VV.VVOD_spisok_return_data(2));
      strcpy(datvd,VV.VVOD_spisok_return_data(3));
      rkr->telef.new_plus(VV.VVOD_spisok_return_data(4));
      rkr->harac.new_plus(VV.VVOD_spisok_return_data(5));
      rkr->inn.new_plus(VV.VVOD_spisok_return_data(7));
      rkr->bankshet.new_plus(VV.VVOD_spisok_return_data(8));
      rkr->tipkk.new_plus(VV.VVOD_spisok_return_data(9));
      rkr->kodss.new_plus(VV.data_ravno(14));
      rkr->kkp.new_plus(VV.data_ravno(15));
      rkr->dnt.new_plus(VV.data_ravno(16));
      rkr->opt.new_plus(VV.data_ravno(17));
      rkr->dsrm.new_plus(VV.data_ravno(18));
                         
      rkr->dv=rkr->mv=rkr->gv=0;
      if(datvd[0] != '\0')
       if(iceb_tu_rsdat(&rkr->dv,&rkr->mv,&rkr->gv,datvd,1) != 0)
        {
         attroff(VV.VVOD_return_cs(iceb_CFS));
         attron(VV.VVOD_return_cs(iceb_CFM));
         iceb_t_soob(gettext("Не правильно введена дата получения паспорта !"));
         goto naz;
        }

      rkr->drog=rkr->mrog=rkr->grog=0;
      if(VV.VVOD_spisok_return_data(10)[0] != '\0')
       if(iceb_tu_rsdat(&rkr->drog,&rkr->mrog,&rkr->grog,VV.VVOD_spisok_return_data(10),1) != 0)
        {
         attroff(VV.VVOD_return_cs(iceb_CFS));
         attron(VV.VVOD_return_cs(iceb_CFM));
         iceb_t_soob(gettext("Не правильно введена дата рождения !"));
         goto naz;
        }

      rkr->dppz=rkr->mppz=rkr->gppz=0;
      if(VV.VVOD_spisok_return_data(12)[0] != '\0')
       if(iceb_tu_rsdat(&rkr->dppz,&rkr->mppz,&rkr->gppz,VV.VVOD_spisok_return_data(12),1) != 0)
        {
         attroff(VV.VVOD_return_cs(iceb_CFS));
         attron(VV.VVOD_return_cs(iceb_CFM));
         iceb_t_soob(gettext("Не правильно введена дата повышения зарплаты !"));
         goto naz;
        }
       
      if(rkr->dsrm.getdlinna() > 1)
       if(rkr->dsrm.prov_dat() != 0)
        {
         attroff(VV.VVOD_return_cs(iceb_CFS));
         attron(VV.VVOD_return_cs(iceb_CFM));
         iceb_t_soob(gettext("Не правильно введена дата создания рабочего места !"));
         goto naz;
        
        }

      /*Проверяем*/
      if(rkr->inn.ravno()[0] != '\0')
       {
        sprintf(strsql,"select tabn,fio from Kartb where inn='%s'",rkr->inn.ravno());
        if(sql_readkey(&bd,strsql,&row,&cur) >= 1)
         {
          if(rkr->tabn != atol(row[0]))
           {
            attroff(VV.VVOD_return_cs(iceb_CFS));
            attron(VV.VVOD_return_cs(iceb_CFM));

            VVOD SOOB(1);
            SOOB.VVOD_spisok_add_MD(gettext("Такой индентификационный код уже введён !"));
            sprintf(strsql,"%s %s",row[0],row[1]);
            SOOB.VVOD_spisok_add_MD(strsql);
            soobshw(&SOOB,stdscr,-1,-1,0,1);

            goto naz;
           }
         }
       }

      /*проверяем есть ли этот код банка в списке картсчетов*/
      if(rkr->kodbank != 0)
       {
        sprintf(strsql,"select kb from Zarkh where tn=%d and kb=%d",rkr->tabn,rkr->kodbank);
        if(iceb_t_sql_readkey(strsql) == 0)
         {
          sprintf(strsql,"insert into Zarkh values(%d,%d,'%s',%d,%ld)",rkr->tabn,rkr->kodbank,rkr->bankshet.ravno(),iceb_t_getuid(),time(NULL));
          iceb_t_sql_zapis(strsql,0,0);
         }       
        else
         if(iceb_tu_SRAV(rkr->bankshet.ravno(),kart_shet_old.ravno(),0) != 0)
          if(rkr->bankshet.ravno()[0] != '\0')
           {
            sprintf(strsql,"replace into Zarkh values(%d,%d,'%s',%d,%ld)",rkr->tabn,rkr->kodbank,rkr->bankshet.ravno(),iceb_t_getuid(),time(NULL));
            iceb_t_sql_zapis(strsql,0,0);
           }
        }
      return;

    case FK1:  /*Просмотр подсказки*/
      attroff(VV.VVOD_return_cs(iceb_CFS));
      attron(VV.VVOD_return_cs(iceb_CFM));
      GDITE();
      iceb_t_pdoc("zarp2_3.txt");
      clear();
      goto naz;

    case FK3: /*Просмотр списка городов налоговой инспекции*/
      attroff(VV.VVOD_return_cs(iceb_CFS));
      attron(VV.VVOD_return_cs(iceb_CFM));
      clear();
      nai.new_plus("");
      poz=komv=0;
      if(dirmat1("Gnali",&kodd,&nai,LINES-5,0,2,1,&poz,&komv,"","\0") == 0)
       {
        VV.data_plus(7,nai.ravno());       
        goto naz;
       }
      goto naz;

    case FK4: /*Просмотр списка картсчетов*/
      attroff(VV.VVOD_return_cs(iceb_CFS));
      attron(VV.VVOD_return_cs(iceb_CFM));
      clear();
      if(dirzarkh(1,rkr->tabn,&kodd,&nai) == 0)
       {
        VV.data_plus(8,nai.ravno());
        rkr->kodbank=kodd.ravno_atoi(); 
       }

      goto naz;
   } 
 }

}
