/* $Id: zapkrtb.c,v 5.20 2013/05/17 14:56:16 sasa Exp $ */
/*02.07.2024	24.05.1999	Белых А.И.	zapkrtb.c
Запись карточки табельного номера в заработной плате
*/
#include "buhg.h"
#include "zarkart.h"

void zapkrtb(int mz,//*0-запись нового 1-корректировка
short mp,short gp,  //Дата просмотра карточки
int stbn,
int metkazap, //0-переменные данные можно записывать 1-нет
class zarkart_rk *rkr)
{
char		strsql[2048];
SQL_str		row;
SQLCURSOR curr;
int		i;
short		kart=0;
char		bros[512];
/*******************
printw("\n%s mz=%d\n",__FUNCTION__,mz);
OSTANOV();
************/
if(mz == 0)
 {   
  sprintf(strsql,"insert into Kartb \
values (%d,'%s','%s',%d,%d,%d,'%04d-%02d-%02d','%04d-%02d-%02d',\
'%s',%d,'%s','%s','%s','%s','%s',%d,'%s','%s','%s','%04d-%d-%d','%s',\
'%04d-%02d-%02d',%d,'%04d-%02d-%02d',%d,'%s','%s','%s','%s','%s')",
  rkr->tabn,rkr->fio.ravno_filtr(),rkr->dolg.ravno_filtr(),rkr->zvan,rkr->podr,rkr->kateg,rkr->gn,rkr->mn,rkr->dn,rkr->gu,rkr->mu,rkr->du,rkr->shet.ravno(),rkr->sovm,rkr->inn.ravno(),
  rkr->adres.ravno_filtr(),
  rkr->nomp.ravno(),rkr->vidan.ravno_filtr(),rkr->telef.ravno_filtr(),rkr->kodg,rkr->harac.ravno_filtr(),rkr->lgot.ravno(),rkr->bankshet.ravno(),rkr->gv,rkr->mv,rkr->dv,rkr->tipkk.ravno_filtr(),
  rkr->grog,rkr->mrog,rkr->drog,rkr->pol,rkr->gppz,rkr->mppz,rkr->dppz,rkr->kodbank,rkr->kodss.ravno_filtr(),
  rkr->kkp.ravno_filtr(),
  rkr->dnt.ravno_filtr(),
  rkr->opt.ravno_filtr(),
  rkr->dsrm.ravno_sqldata());


  if(sql_zap(&bd,strsql) != 0)
   {
   if(sql_nerror(&bd) == ER_DBACCESS_DENIED_ERROR)
     return;
   else
    {
     sprintf(bros,"zapkrtb-%s",gettext("Ошибка записи !"));
     iceb_t_msql_error(&bd,bros,strsql);
    }
   }
 }

if(mz == 1)
 {
  //Запись постоянной информации
  sprintf(strsql,"update Kartb \
set \
tabn=%d,\
fio='%s',\
inn='%s',\
adres='%s',\
nomp='%s',\
vidan='%s',\
telef='%s',\
kodg=%d,\
harac='%s',\
bankshet='%s',\
datvd='%04d-%d-%d',\
tipkk='%s',\
denrog='%04d-%02d-%02d',\
pl=%d,\
dppz='%04d-%02d-%02d',\
kb=%d,\
kss='%s',\
kkp='%s',\
dnt='%s',\
opt='%s',\
dsrm='%s' \
where tabn=%d",
  rkr->tabn,rkr->fio.ravno_filtr(),rkr->inn.ravno(),rkr->adres.ravno_filtr(),rkr->nomp.ravno(),rkr->vidan.ravno_filtr(),rkr->telef.ravno_filtr(),rkr->kodg,rkr->harac.ravno_filtr(),rkr->bankshet.ravno(),
  rkr->gv,rkr->mv,rkr->dv,rkr->tipkk.ravno_filtr(),
  rkr->grog,rkr->mrog,rkr->drog,rkr->pol,rkr->gppz,rkr->mppz,rkr->dppz,rkr->kodbank,rkr->kodss.ravno_filtr(),
  rkr->kkp.ravno_filtr(),
  rkr->dnt.ravno_filtr(),
  rkr->opt.ravno_filtr(),
  rkr->dsrm.ravno_sqldata(),
  stbn);

/*****************
  printw("\n%s-%s\n",__FUNCTION__,strsql);
  OSTANOV();
******************/
  if(sql_zap(&bd,strsql) != 0)
   {
   if(sql_nerror(&bd) == ER_DBACCESS_DENIED_ERROR)
     return;
   else
    {
     sprintf(bros,"zapkrtb-%s",gettext("Ошибка записи !"));
     iceb_t_msql_error(&bd,bros,strsql);
    }
   }

  if(metkazap != 0)
   return;

  //Проверка необходимости записи переменных данных
  sprintf(strsql,"select tabn from Zarn where ((god > %d or \
(god=%d and  mes >= %d)) and tabn=%d)",
  gp,gp,mp,rkr->tabn);

  if((i=sql_readkey(&bd,strsql,&row,&curr)) <= 1)
      kart=1;

  struct  tm      *bf;
  time_t          tmm;

  time(&tmm);
  bf=localtime(&tmm);

  if(bf->tm_mon+1 == mp && bf->tm_year+1900 == gp)
    kart=1;
/*
  printw("kart=%d\n",kart);
  OSTANOV();
*/  
  if(kart != 0)
   {
    sprintf(strsql,"update Kartb \
set \
dolg='%s',\
datn='%04d-%02d-%02d',\
datk='%04d-%02d-%02d',\
zvan=%d,\
podr=%d,\
kateg=%d,\
shet='%s',\
sovm=%d,\
lgoti='%s' \
where tabn=%d",
    rkr->dolg.ravno_filtr(),rkr->gn,rkr->mn,rkr->dn,rkr->gu,rkr->mu,rkr->du,rkr->zvan,rkr->podr,rkr->kateg,rkr->shet.ravno(),rkr->sovm,rkr->lgot.ravno_filtr(),
    stbn);

/***************
    printw("\n%s-%s\n",__FUNCTION__,strsql);
    OSTANOV();
****************/
    if(sql_zap(&bd,strsql) != 0)
     iceb_t_msql_error(&bd,"zapkrtb-2 Ошибка корректировки записи карточки !",strsql);
/*
    Если удалить все начисления и удержания то при вводе даты увольнения
    промежуточная запись не обновляется
*/
    sprintf(strsql,"update Zarn \
set \
podr=%d,\
datn='%04d-%02d-%02d',\
datk='%04d-%02d-%02d',\
kateg=%d,\
zvan=%d,\
shet='%s',\
lgot='%s',\
sovm=%d,\
dolg='%s' \
where god=%d and mes=%d and tabn=%d",
    rkr->podr,rkr->gn,rkr->mn,rkr->dn,rkr->gu,rkr->mu,rkr->du,
    rkr->kateg,
    rkr->zvan,
    rkr->shet.ravno(),
    rkr->lgot.ravno_filtr(),
    rkr->sovm,
    rkr->dolg.ravno_filtr(),
    gp,mp,rkr->tabn);

//    printw("\n%s\n",strsql);
//    refresh();

    if(sql_zap(&bd,strsql) != 0)
     iceb_t_msql_error(&bd,"zapkrtb-3 Ошибка корректировки записи !",strsql);
   }   
//  printw("\n%s-i=%d\n%s\n",__FUNCTION__,i,strsql);
//  OSTANOV();  

 }


}
