/* $Id:$ */
/*14.11.2024	18.05.2000	Белых А.И.	zarrasp.c
Расчёт перечислений которые нужно сделать по результатам
выплаты заработной платы
*/
#include        <errno.h>
#include        <math.h>
#include        "buhg.h"

int zarzasp1(short,short,short,short,short,short,const char[],short,short,const char*,FILE*,FILE*,FILE*);
int zarrasp2(short dn,short mn,short gn,short dk,short mk,short gk,const char *tabnom,short mv,short gv,const char *podr,class spis_oth *oth);

extern short	*obud; /*Обязательные удержания*/

extern class iceb_tu_str kodpn_all;


int zarrasp(class spis_oth *oth)
{
static class iceb_tu_str dat1("");
static class iceb_tu_str dat2("");
static class iceb_tu_str tabnom("");
static class iceb_tu_str datv("");
static class iceb_tu_str podr("");
int		kom=0,kom1=0;
short		dn,mn,gn; /*Дата начала поиска*/
short		dk,mk,gk; /*Дата конца поиска*/
short		mv,gv;
int		tabb=0;
class iceb_tu_str fiov("");
class VVOD MENU(3);
class VVOD VV(0);

VV.VVOD_spisok_add_ZAG(gettext("Расчёт отчислений на выданную зарплату"));

VV.VVOD_spisok_add_MD(gettext("Дата начала...(д.м.г)......."));
VV.VVOD_spisok_add_MD(gettext("Дата конца....(д.м.г)......."));
VV.VVOD_spisok_add_MD(gettext("В счёт какого месяца.(м.г).."));
VV.VVOD_spisok_add_MD(gettext("Табельный номер.....(,,)...."));
VV.VVOD_spisok_add_MD(gettext("Подразделение.......(,,)...."));

VV.VVOD_spisok_add_data(dat1.ravno(),11);
VV.VVOD_spisok_add_data(dat2.ravno(),11);
VV.VVOD_spisok_add_data(datv.ravno(),8);
VV.VVOD_spisok_add_data(tabnom.ravno(),128);
VV.VVOD_spisok_add_data(podr.ravno(),128);

naz:;

clear(); 

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

kom=VV.vvod(0,1,1,-1,-1);

dat1.new_plus(VV.data_ravno(0));
dat2.new_plus(VV.data_ravno(1));
datv.new_plus(VV.data_ravno(2));
tabnom.new_plus(VV.data_ravno(3));
podr.new_plus(VV.data_ravno(4));

class iceb_tu_str naim("");

switch(kom)
 {
  case FK1:   /*Помощь*/
   GDITE();

   iceb_t_pdoc("zarp4_7_5.txt");

   goto naz;

  case FK10:
  case ESC:
   return(1);

  case FK2:
  case PLU:
   break;

  case FK3:


    MENU.VVOD_delete();
    MENU.VVOD_spisok_add_MD(gettext("Просмотр списка подразделений"));
    MENU.VVOD_spisok_add_MD(gettext("Просмотр списка табельных номеров"));
    MENU.VVOD_spisok_add_MD(gettext("Выход."));
    clearstr(LINES-1,0);
    kom1=0;    
    while(menu3w(stdscr,&MENU,&kom1,-1,-1,0) != 0);

    switch (kom1)
     {
      case 2:
      case -1:
       goto naz;

      case 0:
       if(dirzarpodr(2,&podr,&naim) == 0)
        VV.data_z_plus(4,podr.ravno());
       break;
       
      case 1:
        tabb=0;
        fiov.new_plus("");
        if(dirtab(&tabb,&fiov,0,1) == 0)
         tabnom.z_plus(tabb);
        VV.data_plus(3,tabnom.ravno());
        break;
     }
    goto naz;

  case FK4: /*Очистить меню*/
    VV.VVOD_clear_data();
    goto naz;

  default:
    goto naz;
 }

if(iceb_t_rsdat(&dn,&mn,&gn,dat1.ravno(),&dk,&mk,&gk,dat2.ravno()) != 0)
 goto naz;

mv=gv=0;
if(datv.ravno()[0] != '\0')
 if(iceb_tu_rsdat1(&mv,&gv,datv.ravno()) != 0)
  {
   iceb_t_soob(gettext("Не верно введена дата выплаты !"));
   goto naz;
  }  


return(zarrasp2(dn,mn,gn,dk,mk,gk,tabnom.ravno(),mv,gv,podr.ravno(),oth));


}
