📄 pm_enter_purchaseapply.pas
字号:
unit Pm_Enter_PurchaseApply;
Interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Base_Outer, Menus, ExtPrintReport, Db, ActnList, AdODB, Grids, DBGridEh,
StdCtrls, ExtCtrls, ComCtrls, ToolWin, jpeg, DBCtrls, Buttons;
Type
TFrm_Pm_Enter_PurchaseApply = Class(TFrm_Base_Outer)
AdoQry_MainItemCode: TStringField;
AdoQry_MainItemName: TStringField;
AdoQry_MainSSQty: TFloatField;
AdoQry_MaInPlanQty: TFloatField;
AdoQry_MainSSReleaseDate: TDateTimeField;
AdoQry_MaInPlanReleaseDate: TDateTimeField;
AdoQry_MainIsMultiVendor: TIntegerField;
AdoQry_MainISRefill: TIntegerField;
AdoQry_MainIScreatePo: TIntegerField;
AdoQry_MainRemArk: TStringField;
AdoQry_MainTmpField: TIntegerField;
AdoQry_MainCreateEmployeeCode: TStringField;
AdoQry_MainEdItEmployeeCode: TStringField;
AdoQry_MainCreateDate: TDateTimeField;
AdoQry_MainCreateEmployeeName: TStringField;
AdoQry_MainEdItEmployeeName: TStringField;
AdoQry_MainEditDate: TDateTimeField;
AdoQry_MaInPlanDueDate: TDateTimeField;
Lbl_Status: TLabel;
AdoQry_MaInvendorCode: TStringField;
AdoQry_MaInvendorName: TStringField;
AdoQry_MainIsAssign: TIntegerField;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Lbl_PurchaseNo: TLabel;
AdoQry_MainPmCode: TIntegerField;
AdoQry_MainIsActive: TIntegerField;
AdoQry_MainToDate: TStringField;
procedure FormDestroy(Sender: TObject);
procedure Act_NewExecute(Sender: TObject);
procedure Act_DeleteExecute(Sender: TObject);
procedure AdoQry_MainAfterPost(DataSet: TDataSet);
procedure AdoQry_MaInPlanReleaseDateChange(Sender: TField);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure DBGridEhGetCellParams(Sender: TObject; Column: TColumnEh;
AFont: TFont; var Background: TColor; State: TGridDrawState);
procedure DBGridEhTitleClick(Column: TColumnEh);
procedure AdoQry_MainBeforeEdit(DataSet: TDataSet);
procedure FormShow(Sender: TObject);
private
{ Private declarations }
Flag,EditFlag:boolean;
RunDate:String;
public
{ Public declarations }
procedure initform(AdOConnection:TAdOConnection;ReadOnly:boolean);
function SetDeleteSql:String;Override;
end;
var
Frm_Pm_Enter_PurchaseApply: TFrm_Pm_Enter_PurchaseApply;
implementation
uses Pm_Enter_PurchaseApply_D,Pm_Enter_PurchaseApply_C,Sys_Global;
{$R *.DFM}
procedure TFrm_Pm_Enter_PurchaseApply.initform(AdOConnection:TAdOConnection;ReadOnly:boolean);
var
PurchaseNo:string;
begin
inherited;
Frm_Pm_Enter_PurchaseApply_C:=TFrm_Pm_Enter_PurchaseApply_C.Create(Application);
Frm_Pm_Enter_PurchaseApply_C.AdoQry_Tmp.Connection:=DbConnect;
Flag:=False;
EditFlag:=False;
AdoQry_Tmp.Close;
AdoQry_Tmp.SQL.Text:='select MrpParamValueC as RunDate'+
' From MrpParam '+
' Where MrpParamCode=''RunMrpDate''';
AdoQry_Tmp.Open;
if not AdoQry_Tmp.isempty then
RunDate:=AdoQry_Tmp.fieldbyname('RunDate').asstring
else
RunDate:='Null';
ExecuteSql(AdoQry_Tmp,' Select MrpParamValueC '
+' From MrpParam '
+' Where MrpParamCode=''RunMrpDate'' ',0 );
Label3.Caption := AdoQry_Tmp.fieldbyname('MrpParamValueC').AsString;
ExecuteSql(AdoQry_Tmp,'update PurchaseApply set TmpField=0 ',1);
selectfromsql:='select PurChaseApply.*,Item.ItemName,Employee.EmployeeName as CreateEmployeeName,'+
'Emp.EmployeeName as EdItEmployeeName,Vendor.VendorName,Item.PmCode'+
' from PurChaseApply left join Item on Item.ItemCode=PurChaseApply.ItemCode'+
' left join Employee on Employee.EmployeeCode=PurChaseApply.CreateEmployeeCode'+
' left join Employee Emp on Emp.EmployeeCode=PurChaseApply.EdItEmployeeCode'+
' left join Vendor on Vendor.VendorCode=PurChaseApply.VendorCode';
//当前排序字段
if not ReadOnly then
ConditionUserDefine:=' ToDate='''+RunDate+''''
else
begin
Condition:=' ToDate='''+RunDate+'''';
DBGridEh.Columns.Items[4].ReadOnly:=True;
DBGridEh.Columns.Items[6].ReadOnly:=True;
DBGridEh.Columns.Items[0].Visible:=False;
end;
OrderByFields:='ItemCode,SSReleaseDate';
lbl_Order.Caption:='物料代码/系统建议约定交货日';
GetData;
if not AdoQry_Main.isempty then
Lbl_PurchaseNo.Caption:=Trim(Copy(FormatDateTime('yyyy.mm.dd',AdoQry_Main.fieldbyname('Todate').asdatetime),1,4))
+Trim(Copy(FormatDateTime('yyyy.mm.dd',AdoQry_Main.fieldbyname('Todate').asdatetime),6,2))
+Trim(Copy(FormatDateTime('yyyy.mm.dd',AdoQry_Main.fieldbyname('Todate').asdatetime),9,2));
Frm_Sys_Detail:=TFrm_Pm_Enter_PurchaseApply_D.Create(Application);
end;
procedure TFrm_Pm_Enter_PurchaseApply.FormDestroy(Sender: TObject);
begin
inherited;
if Frm_Pm_Enter_PurchaseApply<>nil then
Frm_Pm_Enter_PurchaseApply:=nil;
if Frm_Pm_Enter_PurchaseApply_C<>nil then
Frm_Pm_Enter_PurchaseApply_C:=nil;
end;
procedure TFrm_Pm_Enter_PurchaseApply.Act_NewExecute(Sender: TObject);
var
CResult:integer;
ToDate,ItemCode,SSReleaseDate,DispStr,Statusstr:string;
begin
CResult:=Frm_Pm_Enter_PurchaseApply_C.ShowModal;
if CResult=MrOk then
with Frm_Pm_Enter_PurchaseApply_C.AdoQry_Tmp do
begin
AdoQry_Main.DisableControls;
First;
while not eof do
begin
Statusstr:='正在处理物料"'+fieldbyname('ItemCode').asstring+'"约定日为"'+fieldbyname('SSReleaseDate').asstring+'"的数据!';
Lbl_Status.Caption:=Statusstr;
Lbl_Status.Refresh;
ToDate:=RunDate;
ItemCode:=Trim(fieldbyname('ItemCode').asstring);
SSReleaseDate:=Trim(datetostr(fieldbyname('SSReleaseDate').asdatetime));
{判断当天是否产生过同样的采购申请单}
AdoQry_Tmp.Close;
AdoQry_Tmp.SQL.Text:='select ItemCode from PurchaseApply where '+
' ToDate='''+ToDate+''''+
' and ItemCode='''+ItemCode+''''+
' and convert(varchAr,SSReleaseDate,102)='''+SSReleaseDate+'''';
AdoQry_Tmp.Prepared;
AdoQry_Tmp.Open;
if AdoQry_Tmp.IsEmpty then
begin
AdoQry_Tmp.Close;
AdoQry_Tmp.SQL.Text:='insert PurchaseApply('+
'ToDate,'+
'ItemCode,'+
'SSQty,'+
'PlanQty,'+
'SSReleaseDate,'+
'PlanDueDate,'+
'PlanReleaseDate,'+
'IsMultiVendor,'+
'ISRefill,'+
'IScreatePo,'+
'RemArk,'+
'TmpField,'+
'CreateEmployeeCode,'+
'CreateDate,'+
'EdItEmployeeCode,'+
'EditDate,'+
'VendorCode,'+
'IsActive)'+
'Values (';
if RunDate<>'Null' then
AdoQry_Tmp.SQL.Text:=AdoQry_Tmp.SQL.Text+''''+RunDate+''','
else
AdoQry_Tmp.SQL.Text:=AdoQry_Tmp.SQL.Text+'Null,';
AdoQry_Tmp.SQL.Text:=AdoQry_Tmp.SQL.Text+
''''+fieldbyname('ItemCode').asstring+''','+
''''+fieldbyname('SSQty').asstring+''','+
''''+fieldbyname('PlanQty').asstring+''','+
''''+fieldbyname('SSReleaseDate').asstring+''','+
''''+SlCalendar(DBconnect,fieldbyname('PlanReleaseDate').asstring,fieldbyname('LTDay').asinteger)+''','+
''''+fieldbyname('PlanReleaseDate').asstring+''','+
fieldbyname('IsMultiVendor').asstring+','+
fieldbyname('ISRefill').asstring+','+
fieldbyname('IScreatePo').asstring+','+
'Null,'+
''''+fieldbyname('TmpField').asstring+''','+
''''+UserCode+''','+
''''+fieldbyname('Createdate').asstring+''','+
'Null,'+
'Null,'+
''''+fieldbyname('VendorCode').asstring+''','+
'1)';
AdoQry_Tmp.ExecSQL;
end
else
begin
//DispStr:='今天已申请物料代码为'+fieldbyname('ItemCode').asstring+#13+'系统建议约定交货日为'+fieldbyname('SSReleaseDate').asstring+'的申请单!';
//DispInfo(DispStr,3);
end;
next;
end;
AdoQry_Main.Close;
AdoQry_Main.Open;
Lbl_Status.Caption:='';
Lbl_Status.Refresh;
AdoQry_Main.EnableControls;
end;
//inherited;
end;
function TFrm_Pm_Enter_PurchaseApply.SetDeleteSql:String;
begin
Result:='Delete PurChaseApply '
+' Where ToDate='''+Trim(AdoQry_Main.fieldbyname('ToDate').AsString)+''''+
' and ItemCode='''+AdoQry_Main.fieldbyname('ItemCode').Asstring+''''+
' and Convert(varchAr,SSReleaseDate,102)='''+Trim(Datetostr(AdoQry_Main.fieldbyname('SSReleaseDate').AsDateTime))+'''';
end;
procedure TFrm_Pm_Enter_PurchaseApply.Act_DeleteExecute(Sender: TObject);
var SqlText : string;
BookMArk : String;
begin
If AdoQry_Main.State in [dsedit] then AdoQry_Main.Post;
BookMArk := AdoQry_Main.BookmArk;
with AdoQry_Main do
begin
First;
while not eof do
begin
if fieldbyname('TmpField').asinteger=1 then
begin
SqlText := 'delete from PurchaseApply '
+' where ToDate='''+Trim(AdoQry_Main.fieldbyname('ToDate').AsString)+''''+
' and ItemCode='''+AdoQry_Main.fieldbyname('ItemCode').Asstring+''''+
' and Convert(varchAr,SSReleaseDate,102)='''+Trim(Datetostr(AdoQry_Main.fieldbyname('SSReleaseDate').AsDateTime))+'''';
ExecuteSql(AdoQry_Tmp,SqlText,1);
end;
next;
end;
end;
AdoQry_Main.ReQuery;
try
if AdoQry_Main.RecordCount>0 then
AdoQry_Main.BookmArk := BookMArk;
Except
end;
//AdoQry_Main.Delete;
end;
procedure TFrm_Pm_Enter_PurchaseApply.AdoQry_MainAfterPost(
DataSet: TDataSet);
var SQlText : String;
PreDate : Integer;
PlanDueDate :String;
begin
inherited;
ExecuteSql(AdoQry_Tmp,'select PreDate=PrepareLT+RunLT+QcLT from Item where Item.ItemCode='''+
AdoQry_Main.fieldbyname('ItemCode').asstring+'''',0);
PreDate:=AdoQry_Tmp.fieldbyname('PreDate').asinteger;
PlanDueDate:=SlCalendar(Dbconnect,AdoQry_Main.fieldbyname('PlanReleaseDate').AsString,PreDate);
SqlText:='update PurchaseApply'+
' set PlanQty='+AdoQry_Main.fieldbyname('PlanQty').AsString+','+
'PlanReleaseDate='''+AdoQry_Main.fieldbyname('PlanReleaseDate').AsString+''','+
'PlanDueDate='''+PlanDueDate+''','+
'EdItEmployeeCode='''+UserCode+''','+
'IsActive='+AdoQry_Main.fieldbyname('IsActive').asstring+','+
' TmpField='+AdoQry_Main.fieldbyname('TmpField').AsString+','+
'EditDate='''+datetostr(now)+''''+
' where Convert(varchAr,ToDate,102)='''+Trim(DateTostr(AdoQry_Main.fieldbyname('ToDate').asDateTime))+''''+
' and ItemCode='''+AdoQry_Main.fieldbyname('ItemCode').asstring+''''+
' and Convert(varchAr,SSReleaseDate,102)='''+Trim(DateTostr(AdoQry_Main.fieldbyname('SSReleaseDate').asDateTime))+'''';
ExecuteSql(AdoQry_Tmp,SqlText,1);
end;
procedure TFrm_Pm_Enter_PurchaseApply.AdoQry_MaInPlanReleaseDateChange(
Sender: TField);
var SQlText : String;
PreDate : Integer;
PlanDueDate :String;
begin
inherited;
ExecuteSql(AdoQry_Tmp,'select PreDate=PrepareLT+RunLT+QcLT from Item where Item.ItemCode='''+
AdoQry_Main.fieldbyname('ItemCode').asstring+'''',0);
PreDate:=AdoQry_Tmp.fieldbyname('PreDate').asinteger;
PlanDueDate:=SlCalendar(dbconnect,AdoQry_Main.fieldbyname('PlanReleaseDate').AsString,PreDate);
AdoQry_Main.fieldbyname('PlandueDate').AsString := PlanDueDate;
end;
procedure TFrm_Pm_Enter_PurchaseApply.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
if AdoQry_Main.State in [dsinsert,dsEdit] then
AdoQry_Main.Post;
with AdoQry_Tmp do
begin
Close;
sql.Text:='update PurchaseApply set TmpField=0';
ExecSQL;
end;
inherited;
end;
procedure TFrm_Pm_Enter_PurchaseApply.DBGridEhGetCellParams(
Sender: TObject; Column: TColumnEh; AFont: TFont; var Background: TColor;
State: TGridDrawState);
begin
inherited;
if AdoQry_Main.fieldbyname('IsActive').AsString='0' Then
AFont.Color:=ClRed;
end;
procedure TFrm_Pm_Enter_PurchaseApply.DBGridEhTitleClick(
Column: TColumnEh);
var
BookMArk:String;
begin
inherited;
EditFlag:=True;
If Trim(Column.Title.Caption)<>'标记' Then
Abort;
If AdoQry_Main.RecordCount=0 Then
Abort;
BookMArk:=AdoQry_Main.BookmArk;
AdoQry_Main.DisableControls;
If Not Flag Then
begin
AdoQry_Main.First;
While Not AdoQry_Main.Eof Do
begin
AdoQry_Main.Edit;
if (AdoQry_Main.fieldbyname('IScreatePo').AsInteger<>1)and(AdoQry_Main.fieldbyname('IsAssign').AsInteger<>1) then
AdoQry_Main.fieldbyname('TmpField').AsInteger:=1;
// AdoQry_Main.Post;
AdoQry_Main.Next;
end;
end
Else
begin
AdoQry_Main.First;
While Not AdoQry_Main.Eof Do
begin
AdoQry_Main.Edit;
AdoQry_Main.fieldbyname('TmpField').AsInteger:=0;
AdoQry_Main.Next;
end;
end;
try
AdoQry_Main.BookmArk:=BookMArk;
except
end;
AdoQry_Main.EnableControls;
Flag:=Not Flag;
EditFlag:=False;
end;
procedure TFrm_Pm_Enter_PurchaseApply.AdoQry_MainBeforeEdit(
DataSet: TDataSet);
begin
inherited;
if Not EditFlag then
begin
If AdoQry_Main.fieldbyname('IScreatePo').AsInteger=1 then
begin
DispInfo('已生成采购订单,不可修改!',3);
Abort;
end;
If AdoQry_Main.fieldbyname('IsAssign').AsInteger=1 then
begin
DispInfo('已分配供应商,不可修改!',3);
Abort;
end;
end;
end;
procedure TFrm_Pm_Enter_PurchaseApply.FormShow(Sender: TObject);
begin
inherited;
Pnl_Title.Caption:='采购请购单';
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -