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

📄 sal_enter_passshiporder.pas

📁 一个MRPII系统源代码版本
💻 PAS
📖 第 1 页 / 共 3 页
字号:
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 + -