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

📄 stockpile.pas

📁 一个典当行的业务管理系统程序
💻 PAS
字号:
unit Stockpile;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, Grids, DBGrids, Mask, Spin;

type
  TfrmStockpile = class(TForm)
    GroupBox2: TGroupBox;
    Label24: TLabel;
    Label25: TLabel;
    Label26: TLabel;
    Label28: TLabel;
    Label29: TLabel;
    Label30: TLabel;
    cmdQuery: TButton;
    GroupBox4: TGroupBox;
    dgDetail: TDBGrid;
    Label1: TLabel;
    Label2: TLabel;
    txtTotal: TEdit;
    cmdExit: TButton;
    Label3: TLabel;
    txtNumber: TEdit;
    txtBeginYear: TSpinEdit;
    txtBeginMonth: TSpinEdit;
    txtBeginDay: TSpinEdit;
    txtEndYear: TSpinEdit;
    txtEndMonth: TSpinEdit;
    txtEndDay: TSpinEdit;
    rptTotalData: TRadioButton;
    rptOnpawn: TRadioButton;
    rptOutpawn: TRadioButton;
    rptDeadpawn: TRadioButton;
    Label5: TLabel;
    cmbCategory: TComboBox;
    procedure cmdExitClick(Sender: TObject);
    procedure cmdQueryClick(Sender: TObject);
    procedure FormShow(Sender: TObject);
  private
    { Private declarations }
    procedure IniCategoryBox;
  public
    { Public declarations }
  end;

var
  frmStockpile: TfrmStockpile;

implementation

uses Msg, dmPawn, Pawn;

{$R *.DFM}
//初始化物品类别组合框
procedure TfrmStockpile.IniCategoryBox;
begin
     with cmbCategory.Items do
     begin
          with dmPawnFrm do
          begin
               tblCategory.Open;
               tblCategory.First ;
               while not tblCategory.Eof do
               begin
                    Add(tblCategory.fieldByName('Name').asstring);
                    tblCategory.Next ;
               end;
               tblCategory.Close;
          end;
     end;
     //cmbCategory.ItemIndex :=0;
      
end;

procedure TfrmStockpile.cmdExitClick(Sender: TObject);
begin
     close;
end;

procedure TfrmStockpile.cmdQueryClick(Sender: TObject);
var
   BeginDateMark,EndDateMark:Boolean;
   BeginCreateDate,EndCreateDate:TDateTime;
   PawnCondition:string;
   Sql:string;
   Year,NYear,Month,NMonth,Day,NDay:word;
   NowDate:TDateTime;
   DaysElapsed:TDateTime;
   NowToTen:TDateTime;
   TotalMoney:Double;
   TotalNumber:Integer;
   CategoryMark:Boolean;
   
begin
     DecodeDate(Now,Year,Month,Day);
     NowDate:=EncodeDate(Year,Month,Day);
     DaysElapsed:=NowDate-10;
     DecodeDate(DaysElapsed,NYear,NMonth,NDay);
     NowToTen:=EncodeDate(NYear,NMonth,NDay);

     Sql:='SELECT  d.PawnTicketCode,d.PawnLineNum,d.PawnName, d.PawnCategory,';
     Sql:=Sql+ 'd.PawnSpec, d.PawnNumber, d.AppriseValue, d.DiscountRate,';
     Sql:=Sql+ 'd.PawnMoney,h.PawnBeginDate,h.PawnEndDate FROM PawnDetail_Tbl AS d, ';
     Sql:=Sql+ 'Stockpile_Tbl AS s INNER JOIN PawnHead_Tbl AS h ON h.PawnTicketCode=s.PawnCode ';
     Sql:=Sql+ 'WHERE d.PawnTicketCode=h.PawnTicketCode and d.Status='''' and True ';
     //Sql:=Sql+ 'and h.PawnEndDate<:DateElapsed and True ';
     //Sql:=Sql+'where and True ';
     //取出起始时间
     if txtBeginYear.Value<>0 then
     begin
          BeginCreateDate:=EncodeDate(txtBeginYear.Value,
                            txtBeginMonth.Value,txtBeginDay.Value);
          BeginDateMark:=True;
     end
     else
     begin
          txtBeginYear.Value:=Year;
          BeginCreateDate:=EncodeDate(txtBeginYear.Value,
                            txtBeginMonth.Value,txtBeginDay.Value);
          BeginDateMark:=True;
     end;
     {if txtBeginYear.Value<>0 then
     begin
          if txtBeginMonth.Text <>'' then  //年不为空,月不为空
          begin
               if txtBeginDay.Text <>''then  //年月日都不为空
               begin
                    BeginCreateDate:=EncodeDate(txtBeginYear.Value,
                                    txtBeginMonth.Value,txtBeginDay.Value);
                    BeginDateMark:=True;
               end
               else  //起始日期为空,则为此月的第一天1号
               begin
                    BeginCreateDate:=EncodeDate(strtoint(trim(txtBeginYear.text)),
                                    strtoint(trim(txtBeginMonth.text)),1);
                    BeginDateMark:=True;
               end;
          end
          else  //起始月份为空,年不为空
          begin
               if txtBeginDay.Text<>''then //年日不为空,则提示月必须不为空
               begin
                    messagedlg(Msg.MsgBeginMonthInfro,mtWarning,[mbYes],0);
                    txtBeginMonth.SetFocus ;
               end
               else  //年不为空,月日为空则为1月1日
               begin
                     BeginCreateDate:=EncodeDate(strtoint(trim(txtBeginYear.text)),1,1);
                     BeginDateMark:=True;
               end;
          end;
     end
     else  //若年为空,则继续判断月日是否为空
     begin
          if txtBeginMonth.Text<>''then
          begin  //若年为空,月不为空则提示必须输入年分。
                  messagedlg(Msg.MsgBeginYearInfo ,mtWarning,[mbYes],0);
                  txtBeginYear.SetFocus ;
          end
          else //若年为空,月也为空
          begin
               if txtBeginDay.Text<>''then
               begin  //若年月为空,日不为空则提示必须输入年月
                      messagedlg(Msg.MsgBeginMYInfo,mtWarning,[mbYes],0);
                      txtBeginYear.SetFocus ;
               end
               else  //若年月日均为空
                     BeginDateMark:=False;
          end;
     end;}

     //取出终到时间
     if txtEndYear.Value<>0 then
     begin
          EndCreateDate:=EncodeDate(txtEndYear.Value,
                                    txtEndMonth.Value,
                                    txtEndDay.Value);
          EndDateMark:=True;
     end
     else
     begin
          txtEndYear.Value:=Year;
          EndCreateDate:=EncodeDate(txtEndYear.Value,
                                    txtEndMonth.Value,
                                    txtEndDay.Value);
          EndDateMark:=True;
     end;
     {if txtEndYear.Text<>'' then
     begin
          if txtEndMonth.Text <>'' then  //年不为空,月不为空
          begin
               if txtEndDay.Text <>''then  //年月日都不为空
               begin
                    EndCreateDate:=EncodeDate(strtoint(trim(txtEndYear.text)),
                                    strtoint(trim(txtEndMonth.text)),
                                    strtoint(trim(txtEndDay.text)));
                    EndDateMark:=True;
               end
               else  //终到日期为空,则为此月的第一天1号
               begin
                    EndCreateDate:=EncodeDate(strtoint(trim(txtEndYear.text)),
                                    strtoint(trim(txtEndMonth.text)),1);
                    EndDateMark:=True;
               end;
          end
          else  //终到月份为空,年不为空
          begin
               if txtEndDay.Text<>''then //年日不为空,则提示月必须不为空
               begin
                    messagedlg(Msg.MsgEndMonthInfro,mtWarning,[mbYes],0);
                    txtEndMonth.SetFocus ;
                    exit;
               end
               else  //年不为空,月日为空则为1月1日
               begin
                    EndCreateDate:=EncodeDate(strtoint(trim(txtEndYear.text)),1,1);
                    EndDateMark:=True;
               end;
          end;
     end
     else //若年为空,则继续判断月日是否为空
     begin
          if txtEndMonth.Text<>''then
          begin  //若年为空,月不为空则提示必须输入年分。
                 messagedlg(Msg.MsgEndYearInfo ,mtWarning,[mbYes],0);
                 txtEndYear.SetFocus ;
                 exit;
          end
          else //若年为空,月也为空
          begin
               if txtEndDay.Text<>''then
               begin  //若年月为空,日不为空则提示必须输入年月
                      messagedlg(Msg.MsgEndMYInfo,mtWarning,[mbYes],0);
                      txtEndYear.SetFocus ;
                      exit;
               end
               else  //若年月日均为空
                     EndDateMark:=False;
          end;
     end;}

     if BeginDateMark=False then  //若起始时间不存在,则查看是否有终到日期,如无终到日期则查询时不必看时间
     begin                       //如有终到日期,则提示必须输入起始日期
          if EnddateMark=True then
          begin
               messagedlg(Msg.MsgBeginDateInfo,mtWarning,[mbYes],0);
               txtBeginYear.SetFocus ;
          end;
     end;
      //写入Sql
     if BeginDateMark=True then
     begin  //有起始日期
          if EndDateMark=True then
             Sql:=Sql+'and h.CreateDate>=:BeginCreateDate and h.CreateDate<=:EndCreateDate '
          else
             Sql:=Sql+'and h.CreateDate>=:BeginCreateDate ';
     end;
     //判断是否有在当、逾期、绝当

     PawnCondition:='False';
     if rptOnpawn.Checked =True then   //若是在当
          PawnCondition := PawnCondition + ' or h.PawnEndDate>:Today';
     if rptOutpawn.Checked =True then   //若是逾期 outtime=today-10
          PawnCondition := PawnCondition + ' or h.PawnEndDate<:Today ';//and h.PawnEndDate>:OutTime ';
     if rptDeadPawn.Checked =True then  //若是绝当
          PawnCondition := PawnCondition + ' or h.Status=''绝当'' ';//h.PawnEndDate<:OutTime ';//and
     if pawncondition<>'False' then
        Sql := Sql+ 'and (' + PawnCondition +') ';
     if cmbCategory.Text<>'' then
     begin
          CategoryMark:=True;
          Sql:=Sql+'and PawnCategory=:Category ';
     end;
     with dmPawnFrm do
     begin
          dqDetailUn.Close;
          dqDetailUn.SQL.Clear;
          //Sql:=Sql+' order by PawnTicketCode ';
          dqDetailUn.SQL.Add(Sql);
          if CategoryMark=True then
          begin
               CategoryMark:=False;
               dqDetailUn.ParamByName('Category').asstring:=cmbCategory.Text;
          end;
          if BeginDateMark=True then
          begin
               BeginDateMark:=False;
               if EndDateMark=True then
               begin //若起始、终到日期均有则取出起始、终到日期
                    EndDateMark:=False;
                    dqDetailUn.ParamByName ('BeginCreateDate').asDateTime:=BeginCreateDate;
                    dqDetailUn.ParamByName ('EndCreateDate').asDateTime:=EndCreateDate;
               end
               else  //若只有起始日期,则只取出起始日期
                   dqDetailUn.ParamByName ('BeginCreateDate').AsDateTime:=BeginCreateDate;
          end;
          if rptOnpawn.Checked =True then
             dqDetailUn.ParamByName ('Today').AsDateTime:=NowDate;   //EncodeDate(Year,Month,Day);
          if rptOutpawn.Checked =True then
          begin
               dqDetailUn.ParamByName ('Today').AsDateTime:=NowDate; //EncodeDate(Year,Month,Day);
               //dqDetailUn.ParamByName ('OutTime').AsDateTime:=NowToTen; //Pawn.OutPawnLimit;
          end;
          //if rptDeadPawn.Checked=True then
             //dqDetailUn.ParamByName ('OutTime').AsDateTime:=NowToTen; //Pawn.OutPawnLimit;
          dqDetailUn.Open;
          TotalMoney:=0;
          TotalNumber:=0;
          if dqDetailUn.IsEmpty=False then
          begin
               dqDetailUn.First;
               while not dqDetailUn.Eof do
               begin
                    TotalMoney:=dqDetailUn.fieldByName('PawnMoney').asfloat+TotalMoney;
                    TotalNumber:=dqDetailUn.fieldByName('PawnNumber').asinteger+TotalNumber;
                    dqDetailUn.Next;
               end;
          end;
          txtTotal.Text:=format('%12.1f',[TotalMoney]);
          txtNumber.Text:=inttostr(TotalNumber);
     end;
end;

procedure TfrmStockpile.FormShow(Sender: TObject);
var
   Present: TDateTime;
   Year, Month, Day: Word;
begin
  Present:= Now;
  DecodeDate(Present, Year, Month, Day);
  txtBeginYear.Value :=Year;
  txtBeginMonth.Value :=Month;
  txtBeginDay.Value:=Day;
  txtEndYear.Value:=Year;
  txtEndMonth.Value:=Month;
  txtEndDay.Value:=Day;
  IniCategoryBox;
  dmPawnFrm.dqDetailUn.Close;
end;

end.

⌨️ 快捷键说明

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