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

📄 pm_pc_entry_b.pas

📁 一个MRPII系统源代码版本
💻 PAS
📖 第 1 页 / 共 3 页
字号:
      AdoQry_Tmp.ExecSQL;
    end;
    AdoQry_Body.First;
    while(not AdoQry_Body.Eof)do
    begin
      if ItemCode=AdoQry_Body.fieldbyname('ItemCode').AsString then
      begin
        if(StArtDate=AdoQry_Body.fieldbyname('PcStArtDate').AsDateTime)
          and(endDate=AdoQry_Body.fieldbyname('PcendDate').AsDateTime)then
        begin
          if endQty=0 then
          begin
            DispStr:='同一时间段 重复的输入';
            Abort;
          end
          else if AdoQry_Body.fieldbyname('PcStArtQty').AsFloat<>endQty then
          begin
            DispStr:='起始数量不能跟上面的衔接';
            Abort;
          end
          else
          begin
            StArtQty:=AdoQry_Body.fieldbyname('PcStArtQty').AsFloat;
            endQty:=AdoQry_Body.fieldbyname('PcendQty').AsFloat;
          end;
        end
        else if (FormatDateTime('yyyymmdd',AdoQry_Body.fieldbyname('PcStArtDate').AsDateTime)
          =FormatDateTime('yyyymmdd',endDate+1)) then
        begin
          if AdoQry_Body.fieldbyname('PcStArtQty').AsFloat<>0 then
          begin
            DispStr:='新的日期时段起始数量必须从零开始!';
            Abort;
          end
          else
          begin
            StArtDate:=AdoQry_Body.fieldbyname('PcStArtDate').AsDateTime;
            endDate:=AdoQry_Body.fieldbyname('PcendDate').AsDateTime;
            StArtQty:=AdoQry_Body.fieldbyname('PcStArtQty').AsFloat;
            endQty:=AdoQry_Body.fieldbyname('PcendQty').AsFloat;
          end;
        end
        else
        begin
          if(StArtDate=AdoQry_Body.fieldbyname('PcStArtDate').AsDateTime)then
            DispStr:='终止日期不能跟上面的衔接'
          else
            DispStr:='起始日期不能跟上面的衔接';
          Abort;
        end;
      end
      else
      begin
        if AdoQry_Body.fieldbyname('PcStArtQty').AsFloat<>0 then
        begin
          DispStr:='新的日期时段起始数量必须从零开始!';
          Abort;
        end
        else
        begin
          ItemCode:=AdoQry_Body.fieldbyname('ItemCode').AsString;
          StArtDate:=AdoQry_Body.fieldbyname('PcStArtDate').AsDateTime;
          endDate:=AdoQry_Body.fieldbyname('PcendDate').AsDateTime;
          StArtQty:=AdoQry_Body.fieldbyname('PcStArtQty').AsFloat;
          endQty:=AdoQry_Body.fieldbyname('PcendQty').AsFloat;
        end;
      end;
      AdoQry_Tmp.Close;
      AdoQry_Tmp.SQL.Text:='Insert PcLine'+
        '(PcNo,ItemCode,PcTaxPrice,PcNoTaxPrice,PcStArtDate,PcendDate,'+
        'PcStArtQty,PcendQty,PcPriceType,PcTaxPrice_Formal,PcNoTaxPrice_Formal, '
        +' ReferencePricePass,FormalPricePass,PcLineStatus)'+
        'Values('
        +' '''+Bill_No+''''
        +','''+AdoQry_Body.fieldbyname('ItemCode').AsString+''''
        +','+AdoQry_Body.fieldbyname('PcTaxPrice').AsString+''
        +','+AdoQry_Body.fieldbyname('PcNoTaxPrice').AsString+''
        +','''+AdoQry_Body.fieldbyname('PcStArtDate').AsString+''''
        +','''+AdoQry_Body.fieldbyname('PcendDate').AsString+''''
        +','+AdoQry_Body.fieldbyname('PcStArtQty').AsString+''
        +','+AdoQry_Body.fieldbyname('PcendQty').AsString+''
        +','+AdoQry_Body.fieldbyname('PcPriceType').AsString+''
        +','+FloatToStr(AdoQry_Body.fieldbyname('PcTaxPrice_Formal').AsFloat)
        +','+FloatToStr(AdoQry_Body.fieldbyname('PcNoTaxPrice_Formal').AsFloat)
        +','+IIFString(AdoQry_Body.fieldbyname('PcTaxPrice').AsFloat>0,IntToStr(AdoQry_Body.fieldbyname('ReferencePricePass').AsInteger),'0')
        +','+IIFString(AdoQry_Body.fieldbyname('PcTaxPrice_Formal').AsFloat>0,IntToStr(AdoQry_Body.fieldbyname('FormalPricePass').AsInteger),'0')
//        +','+AdoQry_Body.fieldbyname('PcReferencedPrice').AsString+''
        +','+AdoQry_Body.fieldbyname('PcLineStatus').AsString+''
        +')';
      AdoQry_Tmp.ExecSQL;

      If Not ExistsSc(AdoQry_Body.fieldbyname('ItemCode').AsString) then
      begin
        SqlText := ' DeclAre @PmCode Int '
                  +'  select @PmCode=PmCode from Item '
                  +'  where ItemCode='+QuotedStr(AdoQry_Body.fieldbyname('ItemCode').AsString)
                  +' select * from Sc_PriceMaster '
                  +'  where ItemCode='+QuotedStr(AdoQry_Body.fieldbyname('ItemCode').AsString)
                  +' If @@RowCount=0  '
                  +' begin    '
                  +'   Insert Into Sc_PriceMaster(ItemCode,Cost_Material, '
                  +'                              Cost_Out,Price,Price_LastTime,Date_Create,EmployeeCode_Create,'
                  +'                              Date_Edit,EmployeeCode_Edit) ' 
                  +'   Values( '+QuotedStr(AdoQry_Body.fieldbyname('ItemCode').AsString)+','
                              +'Case When @PmCode=1 then '+IIfString(AdoQry_Body.fieldbyname('PcNoTaxPrice_Formal').AsFloat>0,AdoQry_Body.fieldbyname('PcNoTaxPrice_Formal').AsString,AdoQry_Body.fieldbyname('PcNoTaxPrice').AsString)
                              +'     when @PmCode=2 then 0 end,'
                              +'Case When @PmCode=2 then '+IIfString(AdoQry_Body.fieldbyname('PcNoTaxPrice_Formal').AsFloat>0,AdoQry_Body.fieldbyname('PcNoTaxPrice_Formal').AsString,AdoQry_Body.fieldbyname('PcNoTaxPrice').AsString)
                              +'     when @PmCode=1 then 0 end,'
                              +IIfString(AdoQry_Body.fieldbyname('PcNoTaxPrice_Formal').AsFloat>0,AdoQry_Body.fieldbyname('PcNoTaxPrice_Formal').AsString,AdoQry_Body.fieldbyname('PcNoTaxPrice').AsString)+','
                              +'0.0,'
                              +'GetDate(),'
                              +QuotedStr(UserCode)+','
                              +'GetDate(),'
                              +QuotedStr(UserCode)
                  +'         ) '      
                  +' end  '

                  +' select * from Sc_CostMaster '
                  +'  where ItemCode='+QuotedStr(AdoQry_Body.fieldbyname('ItemCode').AsString)
                  +' If @@RowCount=0  '
                  +' begin    '
                  +'   Insert Into Sc_CostMaster(ItemCode,Cost_Material, '
                  +'                              Cost_Out,Price,Price_LastTime,Date_Create,EmployeeCode_Create,'
                  +'                              Date_Edit,EmployeeCode_Edit) ' 
                  +'   Values( '+QuotedStr(AdoQry_Body.fieldbyname('ItemCode').AsString)+','
                              +'Case When @PmCode=1 then '+IIfString(AdoQry_Body.fieldbyname('PcNoTaxPrice_Formal').AsFloat>0,AdoQry_Body.fieldbyname('PcNoTaxPrice_Formal').AsString,AdoQry_Body.fieldbyname('PcNoTaxPrice').AsString)
                              +'     when @PmCode=2 then 0 end,'
                              +'Case When @PmCode=2 then '+IIfString(AdoQry_Body.fieldbyname('PcNoTaxPrice_Formal').AsFloat>0,AdoQry_Body.fieldbyname('PcNoTaxPrice_Formal').AsString,AdoQry_Body.fieldbyname('PcNoTaxPrice').AsString)
                              +'     when @PmCode=1 then 0 end,'
                              +IIfString(AdoQry_Body.fieldbyname('PcNoTaxPrice_Formal').AsFloat>0,AdoQry_Body.fieldbyname('PcNoTaxPrice_Formal').AsString,AdoQry_Body.fieldbyname('PcNoTaxPrice').AsString)+','
                              +'0.0,'
                              +'GetDate(),'
                              +QuotedStr(UserCode)+','
                              +'GetDate(),'
                              +QuotedStr(UserCode)
                  +'         ) '      
                  +' end  ' ;
    //    ShowMessage(SqlText);
        ExecuteSql(AdoQry_Tmp,SqlText,1)                  ;
                  
      end;
            
      AdoQry_Body.Next;
    end;
    if(Status<>'Add')then
      StatusStr:='修改'
    else
      StatusStr:='新增';
    AdoQry_Tmp.Close;
    AdoQry_Tmp.SQL.Text:='Insert PcHistory'
      +'(PcNo,VendorCode,PCTaxRate_Percent,RemArk,CurrencyCode,PCDate'
      +',ChgEmployeeCode,ChgTime,ChgType)'
      +' Values('
      +' '''+Bill_No+''''
      +','''+AdoQry_Head.fieldbyname('VendorCode').AsString+''''
      +','+AdoQry_Head.fieldbyname('PCTaxRate_Percent').AsString+''
      +','''+AdoQry_Head.fieldbyname('RemArk').AsString+''''
      +','''+AdoQry_Head.fieldbyname('CurrencyCode').AsString+''''
      +','''+AdoQry_Head.fieldbyname('PcDate').AsString+''''
      +','''+UserCode+''''
      +',getdate()'
      +','''+StatusStr+''''
      +')';
    AdoQry_Tmp.ExecSQL;

    AdoQry_Body.First;
    while not AdoQry_Body.Eof do
    begin
      if AdoQry_Body.UpdateStatus=usmodified then
        StatusStr:='修改'
      else if AdoQry_Body.UpdateStatus=usinserted then
        StatusStr:='新增'
      else
      begin
        AdoQry_Body.Next;
        continue;
      end;
      AdoQry_Tmp.Close;
      AdoQry_Tmp.SQL.Text:='Insert PcLineHistory'
        +'(PcNo,pclineid,ItemCode,PcTaxPrice,PcNoTaxPrice,PcStArtDate,PcendDate'
        +',PcStArtQty,PcendQty,PcPriceType,PcTaxPrice_Formal,PcNoTaxPrice_Formal, '
        +' ReferencePricePass,FormalPricePass,PcLineStatus'
        +',ChgEmployeeCode,ChgTime,ChgType)'
        +' Values('
        +' '''+Bill_No+''''
        +','''+AdoQry_Body.fieldbyname('pclineid').AsString+''''
        +','''+AdoQry_Body.fieldbyname('ItemCode').AsString+''''
        +','+AdoQry_Body.fieldbyname('PcTaxPrice').AsString+''
        +','+AdoQry_Body.fieldbyname('PcNoTaxPrice').AsString+''
        +','''+AdoQry_Body.fieldbyname('PcStArtDate').AsString+''''
        +','''+AdoQry_Body.fieldbyname('PcendDate').AsString+''''
        +','+AdoQry_Body.fieldbyname('PcStArtQty').AsString+''
        +','+AdoQry_Body.fieldbyname('PcendQty').AsString+''
        +','+AdoQry_Body.fieldbyname('PcPriceType').AsString+''
        +','+AdoQry_Body.fieldbyname('PcTaxPrice_Formal').AsString
        +','+AdoQry_Body.fieldbyname('PcNoTaxPrice_Formal').AsString
        +','+AdoQry_Body.fieldbyname('ReferencePricePass').AsString
        +','+AdoQry_Body.fieldbyname('FormalPricePass').AsString
//        +','+AdoQry_Body.fieldbyname('PcReferencedPrice').AsString+''
        +','+AdoQry_Body.fieldbyname('PcLineStatus').AsString+''
        +','''+UserCode+''''
        +',getdate()'
        +','''+StatusStr+''''
        +')';
      AdoQry_Tmp.ExecSQL;
      AdoQry_Body.Next;
    end;
    AdoQry_Tmp.Close;
    AdoQry_Tmp.SQL.Text:='Insert PcLineHistory'
      +'(PcNo,ItemCode,PcTaxPrice,PcNoTaxPrice,PcStArtDate,PcendDate'
      +',PcStArtQty,PcendQty,PcPriceType,PcTaxPrice_Formal,PcNoTaxPrice_Formal, '
      +' ReferencePricePass,FormalPricePass,PcLineStatus'
      +',ChgEmployeeCode,ChgTime,ChgType)'
      +' Select PcNo,ItemCode,PcTaxPrice,PcNoTaxPrice,PcStArtDate,PcendDate'
      +',PcStArtQty,PcendQty,PcPriceType,PcTaxPrice_Formal,PcNoTaxPrice_Formal, '
      +' ReferencePricePass,FormalPricePass,0'
      +','''+UserCode+''''
      +',getdate()'
      +','''+'删除'+''''
      +' From #PcLine';
    AdoQry_Tmp.ExecSQL;

    DBConnect.CommitTrans;
  except
    on e:exception do
    begin
      recOrderror(self,AdoQry_tmp,e.message);
      DBConnect.RollBackTrans;
      DispInfo(DispStr,3);
      Abort;
    end;
  end;
end;

procedure TFrm_Pm_Pc_Entry_B.Act_DeleteLineExecute(Sender: TObject);
var
  ItemCode:String;
  CanDelete:Boolean;
  i:Integer;
begin
  if AdoQry_Body.RecordCount=0 then exit;
  if AdoQry_Body.fieldbyname('PcLineStatus').AsInteger=1 then
  begin
    DispInfo(' 不能删除已批准的项目 ',3);
    Abort;
  end;
  CanDelete:=False;
  if(not AdoQry_Body.IsEmpty)then
  begin
    if(not AdoQry_Body.Eof)then
    begin
      ItemCode:=AdoQry_Body.fieldbyname('ItemCode').AsString;
      AdoQry_Body.Next;
      if(ItemCode<>AdoQry_Body.fieldbyname('ItemCode').AsString)then
      begin
        CanDelete:=True;
      end;
      if(not AdoQry_Body.Eof)then
        AdoQry_Body.Prior
      else
        CanDelete:=True;
    end
    else
      CanDelete:=True;
    if(CanDelete=True)and(DispInfo(' 真的删除当前记录吗? ',2)='y')then
    begin
      {if Edt_PcNo.text<>'' then
      begin
        AdoQry_Tmp.Close;
        AdoQry_Tmp.SQL.clear;
        AdoQry_Tmp.SQL.Text := ' select * from po join poline on po.pono=poline.pono '
                              +' where PcNo= '''+Edt_PcNo.text+''''
                              +' and ItemCode='''+AdoQry_Body.fieldbyname('ItemCode').asstring+'''';

⌨️ 快捷键说明

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