📄 sal_enter_passshiporder.pas
字号:
unit Sal_Enter_PassShipOrder;
Interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Base_Check_Body, Db, ActnList, AdODB, Grids, DBGridEh, StdCtrls,
ExtCtrls, ComCtrls, ToolWin, Mask, ExtEdit, jpeg, linkedit;
Type
TFrm_Sal_Enter_PassShipOrder = Class(TFrm_Base_Check_Body)
Label4: TLabel;
Edt_ShipNo: TEdit;
Label5: TLabel;
Edt_SaleTypeCode: TExtEdit;
Label15: TLabel;
Label3: TLabel;
MEdt_CreateDate: TMaskEdit;
Label8: TLabel;
Edt_CurrencyCode: TExtEdit;
Lab_CurrencyName: TLabel;
Label6: TLabel;
Edt_SaleDeptCode: TExtEdit;
Label9: TLabel;
Edt_TaxRate_Percent: TEdit;
Label16: TLabel;
Edt_TotalNoTaxAmount: TEdit;
Label17: TLabel;
Edt_TotalTaxAmount: TEdit;
Edt_ShipModeCode: TExtEdit;
Label12: TLabel;
Label2: TLabel;
Edt_InvoiceNo: TEdit;
Label18: TLabel;
Cx_Assess: TComboBox;
Edt_AssessorEmployeeCode: TEdit;
Label19: TLabel;
Label11: TLabel;
Edt_SaleTermCode: TExtEdit;
Label10: TLabel;
Edt_SaleEmployeeCode: TExtEdit;
Label7: TLabel;
Label1: TLabel;
Edt_CustomerCode: TExtEdit;
Label13: TLabel;
Edt_ShipAddresSCode: TExtEdit;
Label14: TLabel;
Edt_RemArk: TEdit;
Lab_SaleEmployeeName: TLabel;
Lab_SaleTermName: TLabel;
Edt_CreateEmployeeCode: TExtEdit;
Label20: TLabel;
edt_PayTermName: TExtEdit;
edt_DeptName: TExtEdit;
edt_SaleTypeName: TExtEdit;
edt_CustomerName: TExtEdit;
edt_SaleEmployeeName: TExtEdit;
edt_CurrencyName: TExtEdit;
edt_AddressName: TExtEdit;
edt_CreateName: TExtEdit;
edt_ShipModeName: TExtEdit;
edt_assessName: TEdit;
Label21: TLabel;
Edit1: TEdit;
Label22: TLabel;
Edt_WhCode: TLinkEdit;
Edt_WhName: TEdit;
Edt_WhPositionName: TEdit;
Edt_WhPositionCode: TLinkEdit;
Label23: TLabel;
AdoQry_BodyInvBillId: TFloatField;
AdoQry_BodyInvBillNo: TStringField;
AdoQry_BodyInvBillLineNo: TStringField;
AdoQry_BodySloNo: TStringField;
AdoQry_BodySloLineNo: TIntegerField;
AdoQry_BodyBatchNo: TStringField;
AdoQry_BodyItemCode: TStringField;
AdoQry_BodyItemName: TStringField;
AdoQry_BodyItemflag: TStringField;
AdoQry_BodyUomName: TStringField;
AdoQry_BodyInvBillQty: TFloatField;
AdoQry_BodyInvBillPrice: TFloatField;
AdoQry_BodyInvBillAmount: TFloatField;
AdoQry_BodyInvBillNoTaxPrice: TFloatField;
AdoQry_BodyInvBillNoTaxAmount: TFloatField;
AdoQry_BodyDiSCountRate: TFloatField;
AdoQry_BodyDiSCountAmount: TFloatField;
AdoQry_BodyBillLineRemArk: TStringField;
Label24: TLabel;
Cmb_BillType: TComboBox;
procedure Act_CheckExecute(Sender: TObject);
procedure Act_CancelCheckExecute(Sender: TObject);
procedure FormActivate(Sender: TObject);
procedure Act_PreviewExecute(Sender: TObject);
procedure Act_PrintExecute(Sender: TObject);
procedure AdoQry_BodyAfterPost(DataSet: TDataSet);
procedure AdoQry_BodyBeforeInsert(DataSet: TDataSet);
private
{ Private declarations }
public
procedure InitForm(AdOConnection:TAdOConnection;FormStatus:String;
AdoQuery:TAdoQuery);Override;
procedure InitControls; Override;
function enoughCurrentInv(whCode,WhPositionCode,ItemCode:string;qty:real):boolean;
function enoughBatchInv(Batchno,whCode,WhPositionCode:string;qty:real):boolean;
procedure updateslolineqty(slono:string;slolineno:integer;qty:real;Addorreduce:integer);
procedure reduceItemqty(ItemCode:string;qty:real;Addorreduce:integer);
procedure reduceCurrentInv(whCode,WhPositionCode,ItemCode:string;qty:real;Addorreduce:integer);
procedure reduceBatchInv(Batchno,whCode,WhPositionCode:string;qty:real;Addorreduce:integer);
procedure updateqty(Addorreduce:integer);
Function CreateOutBill(ShipNo:String):Integer; //返回新产生单据的id号
{ Public declarations }
end;
var
Frm_Sal_Enter_PassShipOrder: TFrm_Sal_Enter_PassShipOrder;
implementation
uses Sys_Global, Inv_Global,Sal_Enter_ShipOrder_P;
{$R *.DFM}
{ TFrm_Sa_Enter_PassShipOrder }
procedure TFrm_Sal_Enter_PassShipOrder.InitControls;
begin
inherited;
end;
procedure TFrm_Sal_Enter_PassShipOrder.InitForm(
AdOConnection: TAdOConnection; FormStatus: String; AdoQuery: TAdoQuery);
var
SqlText:string;
begin
inherited;
With AdoQuery do
begin
Edt_ShipNo.Text := fieldbyname('InvBillNo').AsString;
Edt_CustomerCode.Text:=fieldbyname('CustomerCode').AsString;
Edt_CustomerName.text:=fieldbyname('CustomerName').AsString;
Edt_CreateEmployeeCode.Text:=fieldbyname('Sal_EmployeeCode').AsString;
edt_CreateName.Text:=fieldbyname('createEmployeeName').asstring;
MEdt_CreateDate.Text:=Formatdatetime('yyyy.mm.dd',fieldbyname('InvBillDate').asdatetime);
Edt_SaleDeptCode.Text:=fieldbyname('DeptCode').AsString;
edt_DeptName.Text:=fieldbyname('DeptName').asstring;
Edt_SaleTypeCode.Text:=fieldbyname('SaleType').AsString;
edt_SaleTypeName.Text:=fieldbyname('SaleTypeName').asstring;
Edt_SaleEmployeeCode.Text:=fieldbyname('SaleEmployeeCode').AsString;
edt_SaleEmployeeName.Text:=fieldbyname('EmployeeName').asstring;
Edt_WhCode.Text := fieldbyname('WhCode').AsString;
Edt_WhName.Text := fieldbyname('WhName').AsString;
Edt_WhPositionCode.Text := fieldbyname('WhPositionCode').AsString;
Edt_WhPositionName.Text := fieldbyname('WhPositionName').AsString;
Edt_CurrencyCode.Text:=fieldbyname('CurrencyCode').AsString;
edt_CurrencyName.Text:=fieldbyname('currencyName').asstring;
Edt_TaxRate_Percent.Text:=fieldbyname('InvBillTaxRate').AsString;
Edt_ShipModeCode.Text:=fieldbyname('ShipModeCode').AsString;
edt_ShipModeName.Text:=fieldbyname('ShipModeName').asstring;
Edt_ShipAddresSCode.Text:=fieldbyname('ShipAddresSCode').AsString;
edt_AddressName.Text:=fieldbyname('ShipAddressName').asstring;
Edt_SaleTermCode.Text:=fieldbyname('PayTermCode').AsString;
edt_PayTermName.Text:=fieldbyname('SaleTermName').asstring;
Cmb_BillType.ItemIndex := IIFValue(fieldbyname('BillTypeCode').AsString='0205',0,1);
Edt_RemArk.Text:=fieldbyname('RemArk').AsString;
Edt_TotalNoTaxAmount.Text:=fieldbyname('TotalInvBillNoTaxAmount').AsString;
Edt_TotalTaxAmount.Text:=fieldbyname('TotalInvBillAmount').AsString;
Edt_InvoiceNo.Text:=fieldbyname('InvoiceNo').AsString;
Edt_AssessorEmployeeCode.Text:=fieldbyname('Wh_EmployeeCode').AsString;
edt_assessName.Text:=fieldbyname('Wh_EmployeeName').asstring;
Cx_Assess.ItemIndex :=fieldbyname('InvBillWhChck').AsInteger;
SqlText:=' Select InvOutBill.InvBillId,InvOutBill.InvBillNo, '
+' InvOutBillLine.InvBillLineNo,InvOutBillLine.SloNo,'
+' InvOutBillLine.SloLineNo,BatchNo, '
+' InvOutBillLine.ItemCode,ItemName, '
+' InvOutBillLine.ItemCode+'' ''+Item.ItemName as Itemflag, '
+' UomName, '
+' InvBillQty, InvBillPrice,InvBillAmount,InvBillNoTaxPrice,InvBillNoTaxAmount, '
+' InvOutBillLIne.DiSCountRate,InvOutBillLine.DiSCountAmount,BillLineRemArk '
+' From InvOutBillLine '
+' Join InvOutBill on InvOutBillLine.InvBillId=InvOutBill.InvBillId '
+' Join Item '
+' On Item.ItemCode=InvOutBillLine.ItemCode '
+' Join Uom '
+' On Item.UomCode=Uom.UomCode'
+' where InvOutBill.InvBillId= '+fieldbyname('InvBillId').AsString ;
AdoQry_Body.Close;
AdoQry_Body.SQL.Text:=SqlText;
AdoQry_Body.Open;
end ;
end;
procedure TFrm_Sal_Enter_PassShipOrder.Act_CheckExecute(Sender: TObject);
var
SqlText:String;
IScreditCtrl:Integer; //0:不受信用控制 1:受信用控制
Bill_Count,DispString,Tempstr:String;
PriceType:Integer;
NeedChangePrice:Boolean;
OutBillNo : String; //新产生出库单的单号 自动获得
InvBillId : Integer; //新产生出库单的id号
begin
inherited;
If (AdoQry_Head.Eof) And (AdoQry_Head.Bof) Then Exit;
If Cx_Assess.ItemIndex = 1 then exit;
If DispInfo('确认要审核这张销售发货单吗?',2)<>'y' then exit;
If AdoQry_Body.State=dsEdit then AdoQry_Body.Post;
ExecuteSql(AdoQry_Tmp,'Select * from Customer where customerCode='+QuotedStr(Edt_CustomerCode.Text),0);
IScreditCtrl:=AdoQry_Tmp.fieldbyname('CustomerCreditCtrl').AsInteger;
if IScreditCtrl=1 then
begin
SqlText:='Select IsNull(ShipSumTotal,0)+'+Edt_TotalTaxAmount.Text+'+(Isnull(BackShipSumTotal,0))-(IsNull(TakeBackMoneyTotal,0))-(IsNull(CustomerCredit,0)) as ddd,IsNull(CustomerCredit,0) as CustomerCredit from Customer '
+' where CustomerCode='+QuotedStr(Edt_CustomerCode.text);
ExecuteSql(AdoQry_Tmp,SqlText,0) ;
if AdoQry_Tmp.fieldbyname('ddd').AsFloat>0 Then
begin
DispInfo('应回款数超出信用额'+AdoQry_Tmp.fieldbyname('CustomerCredit').asstring+',不可出库!',3);
exit;
end;
end;
DispString:=' 单据核定失败,请稍后再试 ';
DBConnect.beginTrans;
ExecuteSql(AdoQry_Tmp,'Select PriceType From Warehouse'
+' Where WHCode='''+AdoQry_Head.fieldbyname('WHCode').AsString+'''',0);
PriceType:=AdoQry_Tmp.fieldbyname('PriceType').AsInteger;
NeedChangePrice:=NeedChangeAveragePrice(AdoQry_Tmp,FormatDateTime('yyyy.mm',
AdoQry_Head.fieldbyname('InvBillDate').AsDateTime));
try
SqlText := 'Update InvOutBill Set '
+' InvBillWHChck='+'1'+''
+',WH_EmployeeCode='''+UserCode+''''
+',InvBillDate='''+MEdt_CreateDate.Text+''''
+',InvBillMonth='''+Copy(MEdt_CreateDate.Text,1,7)+''''
+' Where InvBillId='+AdoQry_Head.fieldbyname('InvBillId').AsString;
ExecuteSql(AdoQry_Tmp,SqlText,1);
//设置库存变动标志
ChangeInvStatus(AdoQry_Tmp,AdoQry_Head.fieldbyname('WHCode').AsString,
FormatDateTime('yy.mm',AdoQry_Head.fieldbyname('InvBillDate').AsDateTime));
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -