📄 qtsylib.c
字号:
/******************************************
qtsylib.c
前台收银程序的 DB-Library 函数库
****************************************** */
#define DBMSDOS
#include <sqlfront.h>
#include <sqldb.h>
#include <dos.h>
#include <errno.h>
#include <bios.h>
#include <io.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
#include <math.h>
#include <time.h>
#include <fcntl.h>
#include <stdarg.h>
#include <user.h>
#include <publ.h>
#include "direct.h"
#include "conscard.h"
//
/*全局变量定义*/
char Syy_No[5]; //收银员代码
char Syy_mm[7]; //收银员密码
char Syy_Name[9] = "于小蓉"; //收银员名称
char Bc_Name[11] = "01"; //班次
int g_lsh = 1; //流水号
int g_jycs = 0; //交易次数
int g_xsbs = 0; //销售笔数
int g_dyys = 1000; //打印延时
char g_lsdh[5]; //连锁店号
char g_lsdhex[5];
char g_qt_lsdh[3]; //缺省连锁店号前两位
char g_gzrq[6] = "00"; //工作日期
char g_scjbsj[30]; //上次交班时间
char g_fkfs[2], g_bc[7], g_now[30], g_tm[2]; // 付款方式,班次,时间变量
char g_pos[2] = "1"; //收银机类型
//1-普通 (兼容机,串口打印机)
//2-普通 (兼容机,并口打印机)
//3-IBM收银机
//4-富士通收银机
double g_bx; //补现
double g_flhj[6]; //分类合计
char g_xyksy[2];
XYKLB _XykLb[20];
char *g_sjwj = "s";
char g_gz_mode[2] = "0"; //工作方式
char g_gz_modeex[5];
char g_cashcode[11] = "ytpos"; //管理员密码
char g_scmc[81] = ""; //用户简称
char g_server_thk[21]; //远程提货卡
char g_customer[2]; //商场类型
char g_VIPsw[2]; //VIP卡首位
char g_VIPyhl[5]; //VIP卡优惠率
double g_sl[4] =
{
1.00, 1.00, 1.00, 1.00
}; //四种税率
char __LoginUser[11]; //登录数据库的用户
char __bvalue[300];
//本地销售单记录格式化字符串
char __pxsd[120] = "%7d.00%8s%-20s%14.3f%19.4f%19.4f%19.4f%19.4f%1s%19.4f%6s" "%3s%6s%4s%4s%2s%1s%2s%5s%3s%1s%1s%4s%8s%8.2f%4s ";
char __xsdbuf[300]; //本地销售单记录缓冲区
int _hour, _minute, _second; //当前时,小时、分、秒
long __prostart, __pronow;
short __sqlerrormark = 0; // sql错误标记,当出现网络错误是置为1
short __sqlok = 0; // 0-不连SQL,1-已连SQL,3-并且已连远程提货卡
short __syfs = 2; // 收银方式,0-单机,1-半单机,2-联机
char _jxc_xsdb[10] = "jxc_xsdb"; // 提交表
char _OrigXsd[80]; // 当前数据存储路径
// 等于Data\\班次前4位\\x班次.dbf
char _OrigWqb[80]; // ...\\w班次.dbf
char Yyy_No[5]; // 当前营业员编码
extern char p_Formats[31][61];
extern char _pFeedLine;
extern void Trim(char *s);
//bank
long recno = 0;
//字段结构
typedef struct
{
char FieldName[11]; //字段名称
char DataType[2]; //字段类型
int Size; //字段宽度
int Dec; //小数位数
int xOff; //在记录缓冲中的偏余量
} TField;
//数据集结构
typedef struct
{
char TableName[40]; //表名称
int hLen; //文件头长度
int rLen; //记录长度
int FieldCount; //字段数
long int RCount; //记录数
int xOff; //关键字段在记录缓冲中的偏余量
int fLen; //关键字段长度
char *buffer; //记录缓冲指针
} TDataSet;
char _tbuffer[220]; //公共记录缓冲
PTOH ptoh;
HTOP htop;
extern int _spmcws;
extern int _nFormat;
extern int _nFormatx;
//
extern TOption Param;
/*商品数据结构*/
extern _SPLists *SPLists;
extern _SPLists __SPLists[];
//
extern int MsgBoxEx(char *, int);
extern void ResetAll(void);
extern void Reset(_SPLists *lp);
extern void SleepEx(clock_t nDelay);
extern void Printf(char *String, unsigned char Co);
extern void dbf_TranToServer(char *File1, char *File2, int hLen1, int rLen1, int hLen2, int rLen2);
extern int CreateXspz(_SPLists *_SPList, int Att, char *_Time, int Fixed);
extern void ShowBc_Name(void);
extern int ValidCheck(char *s);
//
DBPROCESS *dbproc, *dbproc_thk; // 与SQL Server的联结
RETCODE result_code; // SQL命令执行的结果代码
int sql_connectdb(char *user, char *pass, char *server, int flag);
//单机收银系列函数
TField _SPBFields[12];
TDataSet _SPBDataSet;
TField _SYSFields[2];
TDataSet _SYSDataSet;
TField _SDBFields[10];
TDataSet _SDBDataSet;
TField _SYJFields[16];
TDataSet _SYJDataSet;
TField _SYYFields[12];
TDataSet _SYYDataSet;
TField _DTMFields[7];
TDataSet _DTMDataSet;
TField _LBBFields[3];
TDataSet _LBBDataSet;
TField _TMCFields[9];
TDataSet _TMCDataSet;
TField _WQBFields[26];
TDataSet _WQBDataSet;
TField _XSDFields[26]; //销售单表
TDataSet _XSDDataSet;
TField _XSBFields[10]; //销售单简表,
TDataSet _XSBDataSet; //用来存储从服务器下载的销售单关键词,
//以决定需要上传的本地数据
double uf_round(double num, double dig) // 四舍五入(数,位数),返回舍入后的数
{
char buf[30];
sprintf(buf, "%.2f", num);
return atof(buf);
}
void __process(char *sour)
{
int i, j = 0;
char value[81];
unsigned char c;
strcpy(value, sour);
for (i = 0; i <= (int) strlen(value); i++)
{
if (value[i] == '%')
{
sour[j++] = (char)0xa3;
sour[j++] = (char)0xa5;
}
else
{
sour[j++] = value[i];
}
}
j = 0;
for (i = 0; i <= (int) strlen(sour); i++)
{
c = (unsigned char) sour[i];
if (c >= 0xa0) // 是汉字
{
if (!j) // 高8
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -