📄 untinnotydispose.pas
字号:
unit UntInNotyDispose;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, ExtCtrls, DB, DBTables, DBCtrls, StdCtrls, Grids,
DBGrids, Buttons;
type
TFrmInNotyDispose = class(TForm)
Panel1: TPanel;
Splitter1: TSplitter;
PnlLeft: TPanel;
Panel3: TPanel;
Splitter2: TSplitter;
PnlBotn: TPanel;
Panel4: TPanel;
PnlBrowse: TPanel;
Splitter3: TSplitter;
PnlItemGrid: TPanel;
btnInput: TBitBtn;
btnExit: TBitBtn;
PageCtrlNoty: TPageControl;
tsUnfinished: TTabSheet;
tsFinished: TTabSheet;
DBGrdMasterFinished: TDBGrid;
DBGrdMasterUnfinished: TDBGrid;
lblTitle: TLabel;
lblQianfa: TLabel;
LblManager: TLabel;
LblClerk: TLabel;
Label1: TLabel;
Label13: TLabel;
DBGridItem: TDBGrid;
DataSourceMaster: TDataSource;
DataSourceItem: TDataSource;
DBTxtSignDate: TDBText;
DBTxtNotyNo: TDBText;
DBText3: TDBText;
DBTxtManager: TDBText;
DBTxtClerk: TDBText;
DBText14: TDBText;
Shape4: TShape;
Shape1: TShape;
Shape2: TShape;
Shape9: TShape;
Shape3: TShape;
Shape5: TShape;
Shape6: TShape;
tsAllNoty: TTabSheet;
TblItem: TTable;
TblMaster: TTable;
TblItemNOTY_ITEM_ID: TStringField;
TblItemNOTY_ID: TIntegerField;
TblItemFOOD_TYPE: TStringField;
TblItemATTRIBUTE: TStringField;
TblItemATTACHMENT: TStringField;
TblItemQUANTITY: TFloatField;
TblItemCOST: TFloatField;
TblItemPRICE: TFloatField;
TblItemMEMO: TStringField;
TblItemSTATUS: TIntegerField;
TblItemSETTLEMENT: TStringField;
BitBtnFinished: TBitBtn;
TblMasterNOTY_ID: TIntegerField;
TblMasterPLAN_ID: TStringField;
TblMasterNOTY_NO: TStringField;
TblMasterNOTY_TYPE: TIntegerField;
TblMasterCOUNTERPART: TStringField;
TblMasterAUTHORITY_NO: TStringField;
TblMasterCLERK: TStringField;
TblMasterMANAGER: TStringField;
TblMasterSTATUS: TIntegerField;
TblMasterMEMO: TStringField;
TblMasterSIGN_DATE: TStringField;
TblMasterSTART_TIME: TDateTimeField;
TblMasterFINISH_TIME: TDateTimeField;
TblMasterINPUT_TIME: TDateTimeField;
TblUnit_info: TTable;
DataSourceUnit_info: TDataSource;
TblMasterUnitName: TStringField;
Label6: TLabel;
LblTotal: TLabel;
LblVTotal: TLabel;
Label3: TLabel;
LblPrice: TLabel;
LblVPrice: TLabel;
LblSum: TLabel;
LblVSum: TLabel;
LblVFoodType: TLabel;
Label8: TLabel;
LblVAttribute: TLabel;
Label7: TLabel;
LblAuthorityNO: TLabel;
DBTxtAuthorityNO: TDBText;
DBTxtEnd: TDBText;
Label2: TLabel;
DBTxtStart: TDBText;
LblSNTime: TLabel;
DBTxtUnitName: TDBText;
LblUnitName: TLabel;
LblCounterpart: TLabel;
DBTxtCounterpart: TDBText;
LblSettlement: TLabel;
LblVSettlement: TLabel;
DBGrdMasterAll: TDBGrid;
TblMasterUNIT_ID: TIntegerField;
procedure PageCtrlNotyChange(Sender: TObject);
procedure btnExitClick(Sender: TObject);
procedure TblMasterAfterScroll(DataSet: TDataSet);
procedure FormShow(Sender: TObject);
procedure btnInputClick(Sender: TObject);
procedure BitBtnFinishedClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure DBGridItemDrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
procedure DBGrdMasterUnfinishedDrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
procedure DBGrdMasterAllDrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
private
{ Private declarations }
Procedure FreshInNoty();
public
{ Public declarations }
end;
var
FrmInNotyDispose: TFrmInNotyDispose;
implementation
uses UnitDataModul,UntRecieveFdBill,Global;
{$R *.dfm}
procedure TFrmInNotyDispose.PageCtrlNotyChange(Sender: TObject);
begin
// NOTY_TYPE=1表明是入库单,STATUS:0-未处理;1-部分处理;2-已处理。
if PageCtrlNoty.ActivePage = tsAllNoty then
begin
TblMaster.Close;
TblMaster.Filtered := False;
TblMaster.Filter := 'NOTY_TYPE=1 and UNIT_ID='+IntToStr(global.g_user.UnitID);
TblMaster.Filtered := true;
TblMaster.Open;
end;
if PageCtrlNoty.ActivePage = tsUnFinished then
begin
TblMaster.Close;
TblMaster.Filtered := False;
TblMaster.Filter := 'NOTY_TYPE=1 and (STATUS=0 OR STATUS=1) and UNIT_ID='+IntToStr(global.g_user.UnitID);
TblMaster.Filtered := true;
TblMaster.Open;
end;
if PageCtrlNoty.ActivePage = tsFinished then
begin
TblMaster.Close;
TblMaster.Filtered := False;
TblMaster.Filter := 'NOTY_TYPE=1 and STATUS=2 and UNIT_ID='+IntToStr(global.g_user.UnitID);
TblMaster.Filtered := true;
TblMaster.Open;
end;
end;
procedure TFrmInNotyDispose.btnExitClick(Sender: TObject);
begin
close;
end;
procedure TFrmInNotyDispose.FreshInNoty();
var
i: integer;
sum,quantity,price: real;
FlagFoodType,FlagAttribute,FlagSettlement,FlagPrice: boolean;
StrSettlement,StrFoodType,StrAttribute: string;
begin
LblVSettlement.Caption := '';
LblVAttribute.Caption := '';
LblVFoodType.Caption := '';
LblVTotal.Caption := '';
LblVSum.Caption := '';
LblVPrice.Caption := '';
sum := 0;
quantity := 0;
price := 0;
StrSettlement := '';
StrFoodType := '';
StrAttribute := '';
FlagSettlement := true;
FlagFoodType := true;
FlagAttribute := true;
FlagPrice := true;
if TblItem.RecordCount>0 then
begin
TblItem.First;
price := TblItem.FieldByName('PRICE').AsFloat;
strSettlement := TblItem.FieldByName('SETTLEMENT').AsString;
StrFoodType := TblItem.FieldByName('FOOD_TYPE').AsString;
StrAttribute := TblItem.FieldByName('ATTRIBUTE').AsString;
for i:=1 to TblItem.RecordCount do
begin
if strSettlement <> TblItem.FieldByName('SETTLEMENT').AsString then
FlagSettlement := false;
if ABS(Price-TblItem.FieldByName('PRICE').AsFloat)>0.000001 then
FlagPrice := false;
if StrFoodType <> TblItem.FieldByName('FOOD_TYPE').AsString then
FlagFoodType := false;
if StrAttribute <> TblItem.FieldByName('ATTRIBUTE').AsString then
FlagAttribute := false;
sum := sum+TblItem.FieldByName('PRICE').Asfloat*TblItem.FieldByName('QUANTITY').Asfloat;
quantity := quantity+TblItem.FieldByName('QUANTITY').Asfloat;
TblItem.Next;
end;
end;
if quantity<>0 then
LblVTotal.Caption := FloatToStr(quantity);
if sum<>0 then
LblVSum.Caption := FloatToStr(sum);
if FlagSettlement then
LblVSettlement.Caption := StrSettlement;
if FlagFoodType then
LblVFoodType.Caption := StrFoodType;
if FlagAttribute then
LblVAttribute.Caption := StrAttribute;
if FlagPrice and (TblItem.FieldByName('PRICE').AsFloat<>0) then
LblVPrice.Caption := FloatToStr(Price);
end;
procedure TFrmInNotyDispose.TblMasterAfterScroll(DataSet: TDataSet);
begin
FreshInNoty();
end;
procedure TFrmInNotyDispose.FormShow(Sender: TObject);
begin
FreshInNoty();
end;
procedure TFrmInNotyDispose.btnInputClick(Sender: TObject);
begin
if TblItem.FieldByName('NOTY_ITEM_ID').AsString = '' then
begin
showmessage('请选择要处理的入库通知单细目!');
exit;
end;
if TblItem.FieldByName('STATUS').AsInteger = 1 then
//if MessageDlg('此入库通知单已处理,确实还要进行入库登帐吗?',mtConfirmation, [mbYes, mbNo], 0) = mrNo then
if Application.MessageBox('此入库通知单已处理,确实还要进行入库登帐吗?','程序执行确认',MB_YesNo+MB_IconQuestion+MB_ApplModal)=IdNo then
exit;
FrmRecieveFdBill := TFrmRecieveFdBill.Create(FrmInNotyDispose);
FrmRecieveFdBill.DBGrid1.DataSource.DataSet.Edit;
FrmRecieveFdBill.DBGrid1.DataSource.DataSet.Append;
FrmRecieveFdBill.DBEditUnitID.Field.AsInteger:=Global.g_user.UnitID;
FrmRecieveFdBill.DBEditClerk.Field.AsString := Global.g_user.UserName;
FrmRecieveFdBill.DBEDitInTime.Field.AsDateTime := date;
FrmRecieveFdBill.DBEDitArrivalTime.Field.AsDateTime := date;
FrmRecieveFdBill.DBCmbxInType.Field.AsString := '购入';
FrmRecieveFdBill.DBEditSurplus.Field.AsFloat := 0;
FrmRecieveFdBill.DBEditNotyItem.Field.AsString := TblItem.FieldByName('NOTY_ITEM_ID').AsString;
FrmRecieveFdBill.DBEdit3.Field.AsFloat := TblItem.FieldByName('QUANTITY').AsFloat;
FrmRecieveFdBill.DBLookupComboBox1.Field.AsString := TblItem.FieldByName('FOOD_TYPE').AsString;
FrmRecieveFdBill.Show;
FrmRecieveFdBill.DBEditKey.Enabled:=true;
FrmRecieveFdBill.DBEditKey.SetFocus;
end;
procedure TFrmInNotyDispose.BitBtnFinishedClick(Sender: TObject);
var
Qry:Tquery;
Flag: boolean;
i: integer;
begin
if TblItem.FieldByName('NOTY_ITEM_ID').AsString = '' then
begin
showmessage('请选择要处理的通知单细目!');
exit;
end;
TblItem.Edit;
TblItem.FieldByName('STATUS').AsInteger:=1;
TblItem.Post;
Flag := false;
TblItem.First;
for i:=0 to TblItem.RecordCount do
begin
if TblItem.FieldByName('STATUS').AsInteger = 0 then
Flag := true;
TblItem.Next;
end;
try
Qry:=TQuery.Create(nil);
Qry.DatabaseName:='LYDB';
Qry.Close;
Qry.SQL.Clear;
Qry.SQL.Add('UPDATE ENT_NOTY SET STATUS=:V_STATUS WHERE NOTY_ID=:V_NOTY_ID');
if Flag = true then
Qry.Params[0].AsInteger := 1
else
Qry.Params[0].AsInteger := 2;
Qry.Params[1].AsInteger := TblItem.FieldByName('NOTY_ID').AsInteger;
Qry.ExecSQL;
finally
Qry.Close;
Qry.Free;
end;
end;
procedure TFrmInNotyDispose.FormCreate(Sender: TObject);
begin
TblMaster.Close;
TblMaster.Filtered := False;
TblMaster.Filter := 'NOTY_TYPE=1 and UNIT_ID='+IntToStr(global.g_user.UnitID);
TblMaster.Filtered := true;
TblMaster.Open;
end;
procedure TFrmInNotyDispose.DBGridItemDrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
begin
if TblItem.FieldByName('STATUS').AsInteger = 0 then
DBGridItem.Canvas.Font.Color := clRed;
DBGridItem.DefaultDrawColumnCell(Rect,DataCol,Column,State);
end;
procedure TFrmInNotyDispose.DBGrdMasterUnfinishedDrawColumnCell(
Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
begin
if TblMaster.FieldByName('STATUS').AsInteger = 0 then
DBGrdMasterUnfinished.Canvas.Font.Color := clRed;
if TblMaster.FieldByName('STATUS').AsInteger = 1 then
DBGrdMasterUnfinished.Canvas.Font.Color := clBlue;
DBGrdMasterUnfinished.DefaultDrawColumnCell(Rect,DataCol,Column,State);
end;
procedure TFrmInNotyDispose.DBGrdMasterAllDrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
begin
if TblMaster.FieldByName('STATUS').AsInteger = 0 then
DBGrdMasterAll.Canvas.Font.Color := clRed;
if TblMaster.FieldByName('STATUS').AsInteger = 1 then
DBGrdMasterAll.Canvas.Font.Color := clBlue;
DBGrdMasterAll.DefaultDrawColumnCell(Rect,DataCol,Column,State);
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -