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

📄 unit2.pas

📁 PosEasy收银系统源码,Pos机前后台管理代码
💻 PAS
📖 第 1 页 / 共 5 页
字号:
       mainform.Edit2.text:=formatfloat('0.00',strtofloat(mainform.edit2.text)*(strtofloat(mainform.edit3.text)/100));
      end;

     if (mainform.edit2.Text='') or (strtofloat(mainform.edit2.text)=0) then
       mainform.edit2.text:=formatfloat('0.00',mainform.querycur.fieldbyname('receive').asfloat)
     else
       mainform.edit2.text:=formatfloat('0.00',strtofloat(mainform.Edit2.text)+mainform.querycur.fieldbyname('receive').asfloat);


     //清除库中信息
     with querycur do
     begin
      tmpsql:='delete from tmptrade where tradenum='''+gznum+'''';
      close;
      sql.clear;
      sql.add(tmpsql);
      prepare;
      try
       execsql;
      except
       messagebox(mainform.handle,'数据库连接失败','错误',MB_OK+MB_ICONERROR);
       exit;
      end;
     end;

    end;
   end
   else
    messagebox(mainform.handle,'当前没有挂帐信息','提示',MB_OK+MB_ICONINFORMATION);
    key:=chr(0);

  end;
 if (key='o') and (row>0) then            //VIP卡
  begin
   application.CreateForm(Tformcard,formcard);
   formcard.showmodal;
  end;

 if key='p' then            //上页
  begin
    stringgrid1.SetFocus;
    postmessage(stringgrid1.handle,WM_KEYDOWN,VK_UP,0);
    postmessage(stringgrid1.handle,WM_KEYDOWN,VK_UP,0);
    postmessage(stringgrid1.handle,WM_KEYDOWN,VK_UP,0);
    postmessage(stringgrid1.handle,WM_KEYDOWN,VK_UP,0);
    postmessage(stringgrid1.handle,WM_KEYDOWN,VK_UP,0);
    postmessage(stringgrid1.handle,WM_KEYDOWN,VK_UP,0);
    postmessage(stringgrid1.handle,WM_KEYDOWN,VK_UP,0);
    postmessage(stringgrid1.handle,WM_KEYDOWN,VK_UP,0);
    postmessage(stringgrid1.handle,WM_KEYDOWN,VK_UP,0);
  end;
 if key='q' then            //下页
  begin
    stringgrid1.SetFocus;
    postmessage(stringgrid1.handle,WM_KEYDOWN,VK_UP,0);
    postmessage(stringgrid1.handle,WM_KEYDOWN,VK_UP,0);
    postmessage(stringgrid1.handle,WM_KEYDOWN,VK_UP,0);
    postmessage(stringgrid1.handle,WM_KEYDOWN,VK_UP,0);
    postmessage(stringgrid1.handle,WM_KEYDOWN,VK_UP,0);
    postmessage(stringgrid1.handle,WM_KEYDOWN,VK_UP,0);
    postmessage(stringgrid1.handle,WM_KEYDOWN,VK_UP,0);
    postmessage(stringgrid1.handle,WM_KEYDOWN,VK_UP,0);
    postmessage(stringgrid1.handle,WM_KEYDOWN,VK_UP,0);
  end;

 if key='y' then          //50元
  begin
   if pcodeedit.Text='' then
     pcodeedit.Text:='50'
   else
     begin
      pcodeedit.Text:=floattostr(strtofloat(pcodeedit.text)+50);
     end;
  end;
 if key='z' then          //100元
  begin
   if pcodeedit.Text='' then
     pcodeedit.Text:='100'
   else
     begin
      pcodeedit.Text:=floattostr(strtofloat(pcodeedit.text)+100);
     end;
  end;

 if key=',' then          //退货
 begin
    if Messagebox(handle,'您确实要退货吗?','提示',MB_OKCANCEL+MB_ICONINFORMATION)=IDOK  then
       begin
         if row>=1 then
         begin
         //选择退款方式
          application.CreateForm(Tformback,formback);
          formback.showmodal;
         //事物开始
         form1.database1.StartTransaction;
         try
         //取得pos机编号
          tmpposcode:=trim(mainform.Labelposcode.text);
          with mainform.queryInsert do
           begin
            tmpsql:='select max(sno) as Msno from trade';// where clerk=''123''';

            close;
            sql.Clear;
            sql.Add(tmpsql);
            prepare;

            open;

           end;
          if mainform.queryInsert['msno']=null then
            sno:=0
          else
            sno:=mainform.queryInsert['msno']+1;

           tmpdate:=formatdatetime('yyyy-mm-dd',now);
           tmptime:=formatdatetime('hh:nn:ss',now);
           tmpclerk:=mainform.editclerk.text;
           tmpbkclerk:=mainform.editbkclerk.text;
           tmpsaler:=mainform.editsaler.text;
           for i:=0 to row-1 do
            begin
             with mainform.queryInsert do
              begin
               tmpsql:='Insert Into trade(op,ecr,clerk,tmpclerk,saler,saledate,saletime,sno,orgtotal,total,totaldis,totalsub,';
               tmpsql:=tmpsql+'pay1,pay2,pay3,pay4,pay5,pay6,change,dept,code,name,discount,num,price,amount,sub,imark)';
               tmpsql:=tmpsql+' values(''G'','''+tmpposcode+''','''+tmpclerk+''','''+tmpbkclerk+''','''+tmpsaler+''','''+tmpdate+''','''+tmptime+''',';
               tmpsql:=tmpsql+''''+inttostr(sno)+''',0,0,0,0,0,0,0,0,0,0,0,'''+mainform.stringGrid1.cells[2,i]+''','''+mainform.stringGrid1.cells[0,i]+''','''+mainform.stringGrid1.cells[1,i]+''',';
               tmpsql:=tmpsql+''''+mainform.stringGrid1.cells[5,i]+''',:gcount,';
               tmpsql:=tmpsql+':tmpdj,:tmpje,:tmpzr,''0'')';

               close;
               sql.clear;
               sql.add(tmpsql);
               parambyname('gcount').asinteger:=-strtoint(mainform.stringGrid1.cells[4,i]);
               parambyname('tmpdj').asfloat:= strtofloat(mainform.stringGrid1.cells[3,i]);
               parambyname('tmpje').asfloat:= -strtofloat(mainform.stringGrid1.cells[6,i]);
               parambyname('tmpzr').asfloat:= strtofloat(mainform.stringGrid1.cells[7,i]);
               prepare;

               execsql;

              end;
           end;

         with mainform.queryInsert do
           begin

             tmpsql:='Insert Into trade(op,ecr,clerk,tmpclerk,saler,saledate,saletime,sno,orgtotal,total,totaldis,totalsub,';
             tmpsql:=tmpsql+'pay1,pay2,pay3,pay4,pay5,pay6,change,dept,code,name,discount,num,price,amount,sub,imark)';
             tmpsql:=tmpsql+' values(''T'','''+tmpposcode+''','''+tmpclerk+''','''+tmpbkclerk+''','''+tmpsaler+''','''+tmpdate+''','''+tmptime+''',';
             tmpsql:=tmpsql+''''+inttostr(sno)+''',:ysje,:xjje,0,0,:pay1,:pay2,:pay3,:pay4,:pay5,:pay6,:change,''T'',''T'',';
             tmpsql:=tmpsql+'''T'',0,0,';
             tmpsql:=tmpsql+'0,0,0,''0'')';
             close;
             sql.clear;
             sql.add(tmpsql);
             parambyname('ysje').asfloat:= -strtofloat(edit1.text);
             parambyname('xjje').asfloat:= -strtofloat(edit2.text);

            if tmppay1=true then
            begin
             parambyname('pay1').asfloat:= -strtofloat(edit2.text);
             parambyname('pay2').asfloat:= 0;
             parambyname('pay3').asfloat:= 0;
             parambyname('pay4').asfloat:= 0;
             parambyname('pay5').asfloat:= 0;           //店内票据
             parambyname('pay6').asfloat:= 0;           //挂帐
            end;
            if tmppay2=true then
            begin
             parambyname('pay1').asfloat:= 0;
             parambyname('pay2').asfloat:= -strtofloat(edit2.text);
             parambyname('pay3').asfloat:= 0;
             parambyname('pay4').asfloat:= 0;
             parambyname('pay5').asfloat:= 0;           //店内票据
             parambyname('pay6').asfloat:= 0;           //挂帐
            end;

            if tmppay3=true then
            begin
             parambyname('pay1').asfloat:= 0;
             parambyname('pay2').asfloat:= 0;
             parambyname('pay3').asfloat:= -strtofloat(edit2.text);
             parambyname('pay4').asfloat:= 0;
             parambyname('pay5').asfloat:= 0;           //店内票据
             parambyname('pay6').asfloat:= 0;           //挂帐
            end;

            if tmppay4=true then
            begin
             parambyname('pay1').asfloat:= 0;
             parambyname('pay2').asfloat:= 0;
             parambyname('pay3').asfloat:= 0;
             parambyname('pay4').asfloat:= -strtofloat(edit2.text);
             parambyname('pay5').asfloat:= 0;           //店内票据
             parambyname('pay6').asfloat:= 0;           //挂帐
            end;

            if tmppay5=true then
            begin
             parambyname('pay1').asfloat:= 0;
             parambyname('pay2').asfloat:= 0;
             parambyname('pay3').asfloat:= 0;
             parambyname('pay4').asfloat:= 0;
             parambyname('pay5').asfloat:= -strtofloat(edit2.text);           //店内票据
             parambyname('pay6').asfloat:= 0;           //挂帐
            end;

            if tmppay6=true then
            begin
             parambyname('pay1').asfloat:= 0;
             parambyname('pay2').asfloat:= 0;
             parambyname('pay3').asfloat:= 0;
             parambyname('pay4').asfloat:= 0;
             parambyname('pay5').asfloat:= 0;           //店内票据
             parambyname('pay6').asfloat:= -strtofloat(edit2.text);           //挂帐
            end;
             parambyname('change').asfloat:=strtofloat(edit2.text);

             prepare;

             execsql;
             
           end;
       //事物提交

        form1.database1.Commit;
      except
        form1.database1.Rollback;
        messagebox(mainform.handle,'退货操作失败,现在转入单机模式','提示',MB_OK);
        mainform.Labelstate.Caption:='单机';
        form1.database1.Close;
        form1.database1.AliasName:='curposdata';
        form1.database1.Open;
        exit;
      end;


      //打印小票
      try
       printer.BeginDoc;
      { //开钱箱
       printer.canvas.Font.name:='control';
       printer.Canvas.Font.Size:=10;
       printer.Canvas.TextOut(10,10,'A');
      }
       //打印标题
       tmpposcode:=mainform.Labelposcode.text;
       tmpdate:=formatdatetime('yyyy-mm-dd hh:mm',now);
       printer.canvas.Font.name:='宋体 8.9cpi';
       printer.Canvas.Font.Size:=8;
       printer.Canvas.TextOut(80,10,'蓝邮数码科技有限公司'); //SWORDzj改
       printer.Canvas.TextOut(80,20, '北京电子商务服务中心');
       printer.Canvas.TextOut(5,35,'收款机:'+tmpposcode+'    '+'收款员:'+mainform.editclerk.Text);  //打印pos机编号呵日期
       printer.Canvas.TextOut(5,45,'日期:'+tmpdate+'   '+'退货');
       printer.Canvas.TextOut(10,60,'编码   品名    单价    数量    金额');
       //打印横线
       printer.Canvas.TextOut(10,70,'---------------------------');
       //打印数据
       for i:=0 to row-1 do
       begin
        printer.Canvas.TextOut(0,80+i*15,mainform.stringGrid1.cells[0,i]+' '+mainform.stringGrid1.cells[1,i]+' '+mainform.stringGrid1.cells[3,i]+'   '+mainform.stringGrid1.cells[4,i]+'   '+mainform.stringGrid1.cells[6,i]);
       end;
       //打印横线
       printer.Canvas.TextOut(10,row*15+85,'---------------------------');
       //打印总计
       tmpreceive:='0';
       tmpback:=edit1.Text;

       printer.Canvas.TextOut(20,row*15+100,'应收金额:'+'0');
       printer.Canvas.textOut(20,row*15+110,'实收金额:'+tmpreceive+'  '+'找零:'+tmpback);


       //打印欢迎词
       printer.Canvas.TextOut(50,row*15+130,'谢谢惠顾  欢迎再来!');
       printer.Canvas.TextOut(50,row*15+140,' ');
       printer.Canvas.TextOut(50,row*15+150,' ');
       printer.Canvas.TextOut(50,row*15+160,' ');
       printer.Canvas.TextOut(50,row*15+170,' ');
       printer.Canvas.TextOut(50,row*15+180,' ');
       printer.Canvas.TextOut(50,row*15+190,' ');
       printer.Canvas.TextOut(50,row*15+200,' ');
       printer.Canvas.TextOut(50,row*15+210,' ');
       printer.Canvas.TextOut(50,row*15+220,' ');
       printer.EndDoc;

      except
       printer.Abort;
       exit;
      end;



     //清除数据
      for i:=0 to row-1 do
      for j:=0 to 7 do
       begin
        mainform.stringGrid1.Cells[j,i]:='';
       end;
        mainform.edit1.text:='';
        mainform.edit2.text:='';
        mainform.edit3.text:='';
        mainform.Editsaler.Text:='';
        mainform.Edittotalsub.Text:='';

       row:=0;
   end;
  end;
 end;

 if key='/' then         //即时退货
 begin
   selerow:=stringGrid1.Selection.Top;
  if (row>0) and (selerow<=(row-1)) then
   if Messagebox(handle,'您确实要取消该商品吗?','提示',MB_OKCANCEL+MB_ICONINFORMATION)=IDOK  then
   begin
    stringGrid1.Rows[selerow].Clear;
    for i:=1 to row do
    begin
     if i>selerow then
     begin
      stringGrid1.Rows[i-1].Text:=stringGrid1.Rows[i].Text;
     end;
    end;
    stringGrid1.Rows[row].Clear;
    row:=row-1;

    tmphj:=0;
    for i:=0 to row-1 do
       begin
        tmphj:=tmphj+strtofloat(stringGrid1.Cells[6,i]);
       end;
     if row=0 then
     begin
       edit1.text:='0';
       edit2.text:='0';
     end
     else
     begin
       edit1.text:=formatfloat('0.00',tmphj);
       if (edit3.text='') or (edit3.text='0') then
       edit2.text:=formatfloat('0.00',tmphj)
      else
       edit2.text:=formatfloat('0.00',tmphj*strtofloat(edit3.text)/100);
     end;

     if mainform.IsShowed then
     begin
      //客显显示
      //使用 COM1。
      mainform.MSComm1.CommPort :=1;
      //9600 波特,无奇偶校验,8 位数据,一个停止位。
      mainform.MSComm1.Settings := '9600,N,8,1';
      //当输入占用时,
      //告诉控件读入整个缓冲区。
      mainform.MSComm1.InputLen := 0;
      //打开端口。
      mainform.MSComm1.PortOpen := True;
      //将 attention 命令送到调制解调器。
      mainform.MSComm1.Output := Chr($1B) + Chr($51) + Chr($41) + '       THANKS'+ Chr(13); //确保
      mainform.MSComm1.Output := Chr($1B) + Chr($51) + Chr($42) + 'TOTAL     '+formatfloat('#,##0.00',tmphj) + Chr(13); //确保
      //关闭串行端口。
      mainform.MSComm1.PortOpen := False;
     end;
   end;
 end;

 if (key='=') and (row>0) then         //折让
  begin
     try
      strtofloat(pcodeedit.text);
     except
      Application.MessageBox('请输入实数!','提示',MB_OK+MB_ICONINFORMATION);
      key:=chr(0);
      pcodeedit.SetFocus;
      Exit;
     end;
  if strtofloat(pcodeedit.text)<strtofloat(stringGrid1.Cells[6,maxrow]) then
  begin
   if ((strtofloat(pcodeedit.text)/strtofloat(stringGrid1.Cells[6,maxrow]))<0) and ((strtofloat(pcodeedit.text)/strtofloat(stringGrid1.Cells[6,maxrow]))>0) then
   begin
      maxrow:=row-1;
      stringGrid1.Cells[7,maxrow]:=pcodeedit.text;
      stringGrid1.Cells[6,maxrow]:=formatfloat('0.00',strtofloat(stringGrid1.Cells[6,maxrow])-strtofloat(pcodeedit.text));
      edit1.text:=formatfloat('0.00',strtofloat(edit1.text)-strtofloat(pcodeedit.text));
      edit2.text:=formatfloat('0.00',strtofloat(edit2.text)-strtofloat(pcodeedit.text));

      pcodeedit.Clear;
      pcodeedit.SetFocus;
      tmpaction:='';
     if mainform.IsShowed then
     begin
      //客显显示
      //使用 COM1。
      mainform.MSComm1.CommPort :=1;
      //9600 波特,无奇偶校验,8 位数据,一个停止位。
      mainform.MSComm1.Settings := '9600,N,8,1';

⌨️ 快捷键说明

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