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

📄 salesorderunit.pas

📁 用友系统二次开发 存货管理 客户管理 订货审核 退货审核 铺货计划 调货计划
💻 PAS
📖 第 1 页 / 共 2 页
字号:
unit SalesOrderUnit;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, dxExEdtr, DB, ADODB, StdCtrls, RzLabel, RzTabs, Menus, dxDBTLCl,
  dxGrClms, dxDBGrid, dxDBCtrl, dxTL, dxCntner, cxLabel, cxGroupBox,
  ExtCtrls, RzPanel, cxControls, cxContainer, cxEdit, cxDBLabel,
  cxTextEdit, cxMaskEdit, cxButtonEdit, cxDBEdit, cxCheckListBox,
  RzGroupBar, Buttons, cxListBox, ActnList, Grids, ValEdit, RzSplit;

type
  TfrmSaleOrder = class(TForm)
    RzPanel1: TRzPanel;
    RzPanel2: TRzPanel;
    DS_SO: TDataSource;
    RzPanel3: TRzPanel;
    RzPanel5: TRzPanel;
    RzLabel5: TRzLabel;
    DataSet_SO: TADODataSet;
    cxLabel7: TcxLabel;
    cxLabel8: TcxLabel;
    SOID: TcxDBButtonEdit;
    RzPanel6: TRzPanel;
    cxLabel5: TcxLabel;
    cxDBLabel2: TcxDBLabel;
    cxLabel2: TcxLabel;
    cxDBLabel1: TcxDBLabel;
    cxDBLabel3: TcxDBLabel;
    cxDBLabel4: TcxDBLabel;
    cxDBLabel5: TcxDBLabel;
    cxLabel1: TcxLabel;
    Bt_Accept: TSpeedButton;
    RzGroupBar1: TRzGroupBar;
    RzGroup1: TRzGroup;
    RzGroup2: TRzGroup;
    RzGroup3: TRzGroup;
    List_ForbidSaleProd: TcxCheckListBox;
    List_AcceptSaleProd: TcxCheckListBox;
    List_SelectSaleWX: TcxListBox;
    RzGroup5: TRzGroup;
    List_SelectSaleNK: TcxListBox;
    TranMenu: TPopupMenu;
    AddWX: TMenuItem;
    ActionList1: TActionList;
    QueryPlanStateWX: TAction;
    RzGroup4: TRzGroup;
    RzGroup6: TRzGroup;
    List_CusPHWX: TcxListBox;
    List_CusDHWX: TcxListBox;
    List_CusPHNK: TcxListBox;
    List_CusDHNK: TcxListBox;
    RzGroup7: TRzGroup;
    List_CustWX: TcxListBox;
    List_CustYX: TcxListBox;
    List_CustMX: TcxListBox;
    List_CustALL: TcxListBox;
    QueryPlanStateNK: TAction;
    AddSaleOrderWX: TAction;
    AddSaleOrderNK: TAction;
    AddNK: TMenuItem;
    N4: TMenuItem;
    QueryWX: TMenuItem;
    QueryNK: TMenuItem;
    N1: TMenuItem;
    DelSalePlanwx: TMenuItem;
    DelSalePlannk: TMenuItem;
    DelSalePlansWX: TAction;
    DelSalePlansNK: TAction;
    PopupMenu2: TPopupMenu;
    N3: TMenuItem;
    RzGroup8: TRzGroup;
    List_SSProd: TcxCheckListBox;
    DataSet_SODSDesigner: TWideStringField;
    DataSet_SODSDesigner2: TWideStringField;
    DataSet_SODSDesigner3: TWideStringField;
    DataSet_SODSDesigner4: TWideStringField;
    DataSet_SODSDesigner5: TWideStringField;
    DataSet_SODSDesigner6: TWideStringField;
    DataSet_SODSDesigner7: TBooleanField;
    DataSet_SODSDesigner8: TWideStringField;
    DataSet_SODSDesigner9: TFloatField;
    DataSet_SODSDesigner10: TBCDField;
    DataSet_SODSDesigner11: TBCDField;
    DataSet_SODSDesigner12: TStringField;
    DataSet_SODSDesigner13: TWideStringField;
    DataSet_SODSDesigner14: TBCDField;
    DataSet_SODSDesigner15: TWideStringField;
    DataSet_SOID: TIntegerField;
    DBG_Details: TdxDBGrid;
    DBG_INV: TdxDBGrid;
    DS_INV: TDataSource;
    DataSet_INV: TADODataSet;
    DS_Details: TDataSource;
    DataSet_Details: TADODataSet;
    RzPanel8: TRzPanel;
    dxDBGrid1: TdxDBGrid;
    dxDBGrid1Column6: TdxDBGridCheckColumn;
    dxDBGrid1Column7: TdxDBGridColumn;
    dxDBGrid1Column1: TdxDBGridColumn;
    dxDBGrid1Column2: TdxDBGridColumn;
    dxDBGrid1Column3: TdxDBGridColumn;
    dxDBGrid1Column4: TdxDBGridColumn;
    dxDBGrid1Column5: TdxDBGridColumn;
    dxDBGrid1Column8: TdxDBGridMaskColumn;
    dxDBGrid1Column9: TdxDBGridCurrencyColumn;
    dxDBGrid1Column10: TdxDBGridCurrencyColumn;
    dxDBGrid1Column11: TdxDBGridMaskColumn;
    dxDBGrid1Column12: TdxDBGridColumn;
    dxDBGrid1Column13: TdxDBGridMaskColumn;
    dxDBGrid1ID: TdxDBGridMaskColumn;
    VLEdit: TValueListEditor;
    RzSizePanel1: TRzSizePanel;
    List_SO: TcxListBox;
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure cxDBButtonEdit1PropertiesButtonClick(Sender: TObject;AButtonIndex: Integer);
    procedure Bt_AcceptClick(Sender: TObject);
    procedure DataSet_SOAfterOpen(DataSet: TDataSet);
    procedure QueryPlanStateWXExecute(Sender: TObject);
    procedure PlanStateList(sInvCode,sPlanNo:string);
    procedure QueryPlanStateNKExecute(Sender: TObject);
    procedure AddSaleOrder(sInvCode:string);
    procedure QuerySO(SO:string);
    procedure DelSalePlan(sCusCode,sPlanNo:string);
    procedure AddSaleOrderNKExecute(Sender: TObject);
    procedure AddSaleOrderWXExecute(Sender: TObject);
    procedure TranMenuPopup(Sender: TObject);
    procedure DelSalePlansWXExecute(Sender: TObject);
    procedure DelSalePlansNKExecute(Sender: TObject);
    procedure List_SODblClick(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure dxDBGrid1CustomDrawCell(Sender: TObject; ACanvas: TCanvas;
      ARect: TRect; ANode: TdxTreeListNode; AColumn: TdxTreeListColumn;
      ASelected, AFocused, ANewItemRow: Boolean; var AText: String;
      var AColor: TColor; AFont: TFont; var AAlignment: TAlignment;
      var ADone: Boolean);
    procedure DelSalePlannkClick(Sender: TObject);
    procedure List_SSProdClick(Sender: TObject);
    procedure N3Click(Sender: TObject);
    procedure dxDBGrid1DblClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  frmSaleOrder: TfrmSaleOrder;

implementation

uses
  dataUnit,PublicUnit, LoginUnit;
{$R *.dfm}

procedure TfrmSaleOrder.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
   Action:=caFree;
end;

procedure TfrmSaleOrder.cxDBButtonEdit1PropertiesButtonClick(
  Sender: TObject; AButtonIndex: Integer);
var
  sqltext,soid:string;
begin
    soid :=inputbox('查询订货单据','请输入订单编号:','');
    IF (soid<>'') Then
    Begin
        QuerySO(soid);
        List_SelectSaleWX.Items.Clear ;
        List_SelectSaleNK.Items.Clear ;
        List_CustALL.Items.Clear ;
        List_CustYX.Items.Clear ;
        List_CustWX.Items.Clear ;
        List_CustMX.Items.Clear ;
        RzGroup7.Caption :=     '计划状态:     0  [  0  +  0  ]  +  0' ;

        with DataSet_SO do begin
            if MessageDlg('选择: '+#13+'本张单是内裤单吗?'+#13,mtInformation,[mbYes,mbNo],0) = mrYes Then Begin

                Sqltext :='execute _PM_P_CustInvState_Query 2,9,'''+ fieldByName('客户代码').AsString +''',''''';
                List_SelectSaleNK.Items.Clear ;
                List_SelectSaleNK.items.AddStrings(GetList(Sqltext));

                Sqltext :='execute _PM_P_CustInvState_Query 2,1,'''+ fieldByName('客户代码').AsString +''',''''';
                List_CusPHNK.Items.Clear ;
                List_CusPHNK.items.AddStrings(GetList(Sqltext));

                Sqltext :='execute _PM_P_CustInvState_Query 2,0,'''+ fieldByName('客户代码').AsString +''',''''';
                List_CusDHNK.Items.Clear ;
                List_CusDHNK.items.AddStrings(GetList(Sqltext));

                RzGroup6.Caption := '内裤近期铺货 '+ IntToStr(List_CusPHNK.Items.Count)+' 款, 调货 '+
                                   IntToStr(List_CusDHNK.Items.Count)+' 款';

                RzGroup3.Visible := False ;
                RzGroup4.Visible := RzGroup3.Visible ;
                RzGroup5.Visible := True ;
                RzGroup6.Visible := RzGroup5.Visible ;

            end else begin
                Sqltext :='execute _PM_P_CustInvState_Query 1,9,'''+ fieldByName('客户代码').AsString +''',''''';
                List_SelectSaleWX.Items.Clear ;
                List_SelectSaleWX.items.AddStrings(GetList(Sqltext));

                Sqltext :='execute _PM_P_CustInvState_Query 1,1,'''+ fieldByName('客户代码').AsString +''',''''';
                List_CusPHWX.Items.Clear ;
                List_CusPHWX.items.AddStrings(GetList(Sqltext));

                Sqltext :='execute _PM_P_CustInvState_Query 1,0,'''+ fieldByName('客户代码').AsString +''',''''';
                List_CusDHWX.Items.Clear ;
                List_CusDHWX.items.AddStrings(GetList(Sqltext));

                RzGroup4.Caption := '文胸近期铺货 '+ IntToStr(List_CusPHWX.Items.Count)+' 款, 调货 '+
                                    IntToStr(List_CusDHWX.Items.Count)+' 款';

                RzGroup3.Visible := True ;
                RzGroup4.Visible := RzGroup3.Visible ;
                RzGroup5.Visible := False ;
                RzGroup6.Visible := RzGroup5.Visible ;
            end;
        end;

    End
    Else
    Begin
        showmessage('订单编号不能为空!');
        Exit;
    End;
end;

procedure TfrmSaleOrder.Bt_AcceptClick(Sender: TObject);
var
  i:  integer;
  sInvText,ssoid : string;
begin
    if Not dm.tbPower.FieldValues['M302_1'] then begin
      showmessage('无权执行,请咨询系统管理员!');
      exit;
    end;

    ssoid := soid.Text ;
    with List_ForbidSaleProd do begin
        for i := 0 to Items.Count - 1 do begin
            if Not Items.Items[i].Checked then begin
               if sInvText = '' then
                    sInvText := ''''+lefts(Items.Items[i].Text)+''''
               else sInvText := sInvText+','''+ lefts(Items.Items[i].Text)+'''' ;
            end;
        end;
    end;

    with List_SSProd do begin
        for i := 0 to Items.Count - 1 do begin
            if Not Items.Items[i].Checked then begin
               if sInvText = '' then
                    sInvText := ''''+lefts(Items.Items[i].Text)+''''
               else sInvText := sInvText+','''+ lefts(Items.Items[i].Text)+'''' ;
            end;
        end;
    end;

    with List_AcceptSaleProd do begin
        for i := 0 to Items.Count - 1 do begin
            if Items.Items[i].Checked then begin
               if sInvText = '' then
                    sInvText := ''''+lefts(Items.Items[i].Text)+''''
               else sInvText := sInvText+','''+ lefts(Items.Items[i].Text)+'''' ;
            end;
        end;
    end;

    if VLEdit.RowCount>=2 then
    begin
        VLEdit.InsertRow('','',False);
        for i:=VLEdit.RowCount-1 downto 2 do
        begin
            IF (trim(VLEdit.keys[i])<>'') and (trim(VLEdit.Values[VLEdit.Keys[i]])<>'') then
            begin
            with dm.sql do begin
              commandText := 'execute _PM_P_SaleOrder_Insert '+DataSet_SO.fieldbyName('ID').Asstring+ ','''+
                              trim(VLEdit.keys[i])+''','+trim(VLEdit.Values[VLEdit.Keys[i]]);
              execute ;
            End;
            end;
            VLEdit.DeleteRow(i);
        end;
    end;



    Try
        with dm.sql do begin
               commandText := '_PM_P_SaleOrder_Check :a,:b,:c ';
               Parameters.ParamByName('a').Value := SOID.Text;
               Parameters.ParamByName('b').Value := FrmLogin.LandingUser;
               Parameters.ParamByName('c').Value := sInvText;
              execute ;
        end;
        showmessage('订单 '+SOID.Text+' 审核成功!');
        QuerySO(ssoid);
    except
        showmessage('订单审核失败,请重新审核!');
        exit ;
    end;
end;

procedure TfrmSaleOrder.AddSaleOrderWXExecute(Sender: TObject);
var
    sInvCode : String;
begin
    if Not dm.tbPower.FieldValues['M302_2'] then begin
      showmessage('无权执行,请咨询系统管理员!');
      exit;
    end;

    if Not Bt_Accept.Enabled  then begin
        showmessage('本单已审核,不能加铺!') ;
        exit ;
    end;

    sinvCode := rights(Rights(List_SelectSaleWX.Items.Strings[List_SelectSaleWX.ItemIndex])) ;
    addSaleOrder(sInvCode);

end;


procedure TfrmSaleOrder.AddSaleOrderNKExecute(Sender: TObject);
var
    sInvCode : String;
begin
    if Not dm.tbPower.FieldValues['M302_2'] then begin
      showmessage('无权执行,请咨询系统管理员!');
      exit;
    end;
    
    if Not Bt_Accept.Enabled  then begin
        showmessage('本单已审核,不能加铺!') ;
        exit ;
    end;

    sinvCode := rights(Rights(List_SelectSaleNK.Items.Strings[List_SelectSaleNK.ItemIndex])) ;
    addSaleOrder(sInvCode);
//    List_SelectSaleNK.DeleteSelected;
end;

⌨️ 快捷键说明

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