⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 prog_tax.c

📁 一款收款机C源代码!因为是几年前的代码了
💻 C
📖 第 1 页 / 共 2 页
字号:
#include "ecrsys.h"
#include "ftype.h"
#include "sysdata.h"
#include "data.h"
#include "keydef.h"
#include "iccard.h"
#include "mathes.h"
#include <string.h>
#include "disp.h"
#include "lcd2.h"
#include "PC_Comm.h"
#include "lcd_pop.h"
#include "program.h"
#include "prog_tax.h"
#include "stdio.h"

TAX_GST_VAT_DEF	Tax_Rate;
void	TaxRate_SetGst(void);
void	TaxRate_SetUsaVat(void);
void	Bell_Special_Alarm(char	flag);
char	Lcd_GetTenKey(const char **Str,char line,char MaxCntr,long MaxNum,long *ret);
WORD	Menu_Select(const char **Str_Menu, const char *Str_Prompt[],BYTE	Menu_Line,BYTE CurrLine,BYTE FirstLine, BYTE mode, BYTE *result);

/*提示符号*/
const	char	Str_ProgTaxRateTaxVatGst[25][MAX_LCD_TEXT+1] = 
{
    {"TAX 1 SET UP                    "},       /*0*/
    {"TAX 2 SET UP                    "},       
    {"TAX 3 SET UP                    "},
    {"TAX 4 SET UP                    "},       /*3*/

    {"VAT 1 SET UP                    "},
    {"VAT 2 SET UP                    "},
    {"VAT 3 SET UP                    "},
    {"VAT 4 SET UP                    "},       /*7*/

    {"GST SET UP                      "},		/*08*/
    {"PST1 SET UP                     "},		/*09*/
    {"PST2 SET UP                     "},		/*10*/
    {"PST3 SET UP                     "},       /*11*/
    {"TAX LIMIT:                      "},		/*12*/
    
    {"GST RATE                        "},       /*13*/
    {"PST1 RATE                       "},		/*14*/
    {"PST2 RATE                       "},		/*15*/
    {"PST3 RATE                       "},		/*16*/
    {"TAX LIMIT:                      "},		/*17*/
    {"NON TAX LIMIT                   "}		/*18*/
};

const	char	Str_TaxLimit[] = 
{
	"Tax Limit:"
};
const	char	Str_USAVATRATEPRG_PROMPT[4][MAX_LCD_TEXT+1] = 
{
	"PLEASE INPUT",
	"VAT 1 PERCENTAGE RATE.",
	"(XX.XXX%) ENTER as",
	"5-digit number."
};
const	char	Str_TaxVat[2][8] = 
{
	{"TAX X  "},
	{"VAT X  "}
};
const	char	Str_GstNonGst[2][8] =
{
	{"NON GST"},
	{"GST"}
};


const	char	Str_GstRate_Prompt[10][2][100] = 
{

	{
		{"To Enter Canadian GST percentage Rate. "},
		{"To Enter the maximum non-taxable limit dollor amount for GST "},
	},
	{
		{"To Enter Canadian PST1 percentage Rate."},
		{"To Enter the maximum non-taxable limit dollor amount for PST1"},
	},
	
	{
		{"To Enter Canadian PST2 percentage Rate."},
		{"To Enter the maximum non-taxable limit dollor amount for PST2"},
	},
	{
		{"To Enter Canadian PST3 percentage Rate."},
		{"To Enter the maximum non-taxable limit dollor amount for PST3"}
	}
};
const	char	Str_GSTPST[2][6] = 
{
	"GST  ",
	"PSTX "
};

const	char	Str_GstNonTaxLmtPrmpt[2][MAX_LCD_TEXT] = 
{
	"PLEASE INPUT",
	"NON TAX LIMIT AMT."
};
const	char	Str_Tax_On_Tax[3][MAX_LCD_TEXT] = 
{
	"NO TAX-ON-TAX                ",
	"TAX-ON-TAX                   ",
	"TAX-ON-TAX-ON-TAX            "
};

/******************************************************************************
*	Program the TAX system
*	VAT Tax system
*	USA Tax system
*	VAT tax system
*	Created by ZhengXC	2006-8-25 19:08
******************************************************************************/
/*****************************************************************************
*	Tax System Initialize
*	Initialize the tax rate and limitation to 0 when do the all clearing
*****************************************************************************/
void	Tax_Init(void)
{
	char	i;
	
	for (i=0;i< MAX_TAX_NUM;i++)
	{
		Tax_Rate.rate[i].rate = 0L;
		Tax_Rate.rate[i].lmt = 0L;
	}
	Tax_Rate.Tax_Lmt_type = TAX_LMT_NO_GST;
	Tax_Rate.Tax_On_Tax = TAX_TYPE_NO_TAX_ON_TAX;
}

/*------------------------------------------------------------------------------
*	设置GST模式下的Tax Limit 方式
*	输入参数  -- None
*	输出参数  -- 对用户输入的数据判断并更新Tax_Rate.lmt
*	函数返回:
*				true -- 正常退出 (Enter键退出)
*				false -- Cancel键退出
*
*-----------------------------------------------------------------------------*/
BOOL	TaxRate_Gst_Lmt_Set(void)
{
	char	ret;
	char	Flag_Modified = false;
	const 	char *Str_ptr[2];
	
    Str_ptr[0] = Str_GstNonGst[0];					/*提示符号, GST或者非GST*/
    Str_ptr[1] = Str_GstNonGst[1];


    if(Get_Btn_Choice_Input_Ex(Str_ptr, 0x22, 2,&ret) == OK)/*正常选择输入*/
    {
		if (ret == KD_YES)
			Tax_Rate.Tax_Lmt_type = TAX_LMT_NO_GST;
		else
			Tax_Rate.Tax_Lmt_type = TAX_LMT_GST;
		Flag_Modified = true;					/*允许光标下移一项*/
	}
//    if(Get_Btn_Choice_Input_Ex(Str_ptr, 0x22, 2) == OK)/*正常选择输入*/
//    {
//        if (numcnt && (lnum < 2 ))
//        {
//        	if (lnum==0)
//				Tax_Rate.Tax_Lmt_type = TAX_LMT_NO_GST;
//			else
//				Tax_Rate.Tax_Lmt_type = TAX_LMT_GST;
//			Flag_Modified = true;					/*允许光标下移一项*/
//		}
//	}
	return(Flag_Modified);
}
/*-----------------------------------------------------------------------------
*设定在GST模式下,是否需要TAXONTAX/TAXONTAXONTAX的功能选择
*	输入: None
*	输出: 根据用户的输入对Tax_Rate.Tax_On_Tax 进行更新
*	函数返回:
*				true -- 正常退出 (Enter键退出)
*				false -- 用户按Cancel键盘退出
*
*----------------------------------------------------------------------------*/
BOOL	TaxRate_Gst_TaxOnTax_Set(void)
{
	const	char	*Str_ptr[3];
	BOOL	Flag_Modified = false;
	
	Str_ptr[0] = Str_Tax_On_Tax[0];
	Str_ptr[1] = Str_Tax_On_Tax[1];
	Str_ptr[2] = Str_Tax_On_Tax[2];
	
	if(Get_Btn_Choice_Input(Str_ptr, 0x16, 3) == OK) /*Enter is depressed*/
	{
		if (lnum < 3 )			/*总共只有三种选择*/
		{
			Tax_Rate.Tax_On_Tax = lnum;
			Flag_Modified = true;
		}
	}
	return(Flag_Modified);
}
/*------------------------------------------------------------------------------
*	Program the Tax Rate
*	According to the system flag's tax system status to branch to USA or VAT 
*	or GST system
*	For USA type, the tax table will not support at first.
*
*-----------------------------------------------------------------------------*/
void	Prog_TaxRate(void)
{
	BYTE	idx = 0;
	word	key = 0;
	
	if ((sysflag->Tax_System != USA_TAXTYPE) && (sysflag->Tax_System != GST_TAXTYPE))
		sysflag->Tax_System = GST_TAXTYPE;

	if ((sysflag -> Tax_System == USA_TAXTYPE)||(sysflag -> Tax_System == VAT_TAXTYPE))
	{
		TaxRate_SetUsaVat();			/*Program the USA/VAT rate includes Rate*/
	}
	else
	{
		TaxRate_SetGst();				/*Program GST */
	}
}
/*******************************************************************************
*	显示菜单编程GST/PST1-4的Rate和Limitation
*******************************************************************************/
BOOL	TaxRate_GstRateLmt_Set(char	tax_idx)
{
	char	i,r1;
	char	r;
	long	rate;
	char	idx = 0;
	char	loop = true;
	char	result = 0;
	BOOL	Flag_Modify = false;
	const	char	*Str_Prompt[10]=
	{
		{" "},
		{" "},
		{" "},
		{" "},
		{" "},
		{" "},
		{" "},
		{" "},
		{" "},
		{" "}
	};
	char	Str1[5][MAX_LCD_TEXT+1];
	char	temp[20];
	
	while(loop)
	{
		/*	菜单上需要提示的字符串*/
		memcpy(Str1[0],Str_ProgTaxRateTaxVatGst[13+tax_idx],MAX_LCD_TEXT);
		memcpy(Str1[1],Str_ProgTaxRateTaxVatGst[17],MAX_LCD_TEXT);
		/* 显示GST Rate的值以及Non Tax Limitation 的值*/
		{
			char	temp[20];

			if (Tax_Rate.rate[tax_idx].rate == 0)	
			{									
				memset(temp,' ',10);
				temp[6] = '%';
				temp[5] = temp[4] = temp[3] = temp[1] = '0';
				temp[2] = '.';
			}
			else
			{
				sprintf(temp,"%.5ld",Tax_Rate.rate[tax_idx].rate);	/*Change to ASCII*/
				temp[6] = '%';
				temp[5] = temp[4];
				temp[4] = temp[3];
				temp[3] = temp[2];
				temp[2] = '.';
			}
			memcpy((char*)&Str1[0][MAX_LCD_TEXT-7], temp, 7);
		}
		/*显示Non Lmitation value*/
		{
			char	temp[20];

			if (Tax_Rate.rate[tax_idx].lmt == 0)
			{									
				memset(temp,' ',10);
				temp[6] = temp[5] = temp[3] = '0';
				temp[4] = '.';
			}
			else
			{
				sprintf(temp,"%.6ld",Tax_Rate.rate[tax_idx].lmt);	/*Change to ASCII*/
				temp[6] = temp[5];
				temp[5] = temp[4];
				temp[4] = '.';
			}
			memcpy((char*)&Str1[1][MAX_LCD_TEXT-7], temp, 7);
		}
		
		r1 = NG;
		r = Menu_Select(Str1,Str_Prompt,2,idx,1,0,&result);
		switch(r)
		{
		case	KD_ENTER:		/*Enter Key is depressed*/
			switch(result)
			{
			case	0:	/*Rate programming*/
			/*	先设定文本区域的显示内容和在屏幕下方的提示内容在两个数组中*/
				if (result == 0)		/*GST Rate input*/
				{
					for (i=0;i<4;i++)
						memcpy(Str1[i],(char*)Str_USAVATRATEPRG_PROMPT[i],MAX_LCD_TEXT);
					if (tax_idx == 0)		/*GST set*/
						memcpy(Str1[1],Str_GSTPST[0],strlen(Str_GSTPST[0]));
					else
					{
						memcpy(Str1[1],Str_GSTPST[1],strlen(Str_GSTPST[1]));
						Str1[1][3] = tax_idx + '0';
					}
						
				}
				else					/*Non Tax Limitation input*/
				{
					for (i=0;i<2;i++)
						memcpy(Str1[i],(char*)Str_GstNonTaxLmtPrmpt[i],MAX_LCD_TEXT);
				}
			/*让用户输入数据*/
				if (Lcd_GetTenKey(Str1,4, 5, 99999,&rate) == OK)/*4行提示,输入5位数,返回在rate*/
				{
					Tax_Rate.rate[tax_idx].rate = rate;			/*Update the Rate*/
					r1 = OK;
				}
				else
				{
					Bell_Special_Alarm(0);		/*输入非法*/									
				}
				break;
			case	1:	/*Limitation programming*/
				memcpy(Str1[0],Str_GstNonTaxLmtPrmpt[0],MAX_LCD_TEXT);
				memcpy(Str1[1],Str_GstNonTaxLmtPrmpt[1],MAX_LCD_TEXT);
				if (Lcd_GetTenKey(Str1,2,6,999999,&rate) == OK)/*4行提示,输入5位数,返回在rate*/				
				{
					Tax_Rate.rate[tax_idx].lmt = rate;
					r1 = OK;
				}
				else
				{
					Bell_Special_Alarm(0);		/*输入非法*/									
				}
				break;
			default:
				Bell_Special_Alarm(0);		/*输入非法*/									
				break;
			}
			if (r1 == OK)					/*用户更改过某个参数*/
			{
				idx = (result+1)%2;
				Flag_Modify = true;
			}
			else
			{
				idx = (result)%2;
			}
			break;
		case KD_CANCEL:
		case CTRL_LOCK_CHG:
			loop = false;
			break;
		default:
			Bell_Special_Alarm(0);		/*输入非法*/									
			break;
		}
	}
	return(Flag_Modify);
}

/*******************************************************************************
*	编程GST Rate / PST rate以及 Limitation
*	GST Rate
*	PST 1 Rate
*	PST 2 Rate
*   PST 3 Rate
*	TAX LIMIT:	GST/NO GST
*	TAX-ON-TAX: ...
*******************************************************************************/
void	TaxRate_SetGst(void)
{

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -