rpod.cpp

来自「一个以前收集的基于C/S架构的ERP客户端源代码」· C++ 代码 · 共 296 行

CPP
296
字号
//--------------------------------------------------------------------------
#include <vcl.h>
#include "Rpod.h"
#include "Rpoh.h"
//--------------------------------------------------------------------------
#pragma hdrstop
#pragma package(smart_init)
#pragma link "fpanel"
#pragma link "SDEdit"
#pragma link "SDGrid"
#pragma link "SDComboBox"
#pragma link "DateEdit"
#pragma resource "*.dfm"

TfrmRpod  *frmRpod;
//--------------------------------------------------------------------------
__fastcall TfrmRpod::TfrmRpod(TComponent* Owner, HWND chWnd, AnsiString ClassCode,AnsiString WhereStr)
        : TStdBaseForm(Owner,chWnd,ClassCode,WhereStr)

{
  btnOK->Enabled = false;
}
//--------------------------------------------------------------------------
__fastcall TfrmRpod::TfrmRpod(TComponent* Owner) : TStdBaseForm(Owner)
{

}
//---------------------------------------------------------------------------
void __fastcall TfrmRpod::btnOKClick(TObject *Sender)
{
  AnsiString sMemo;
  int ErrNum;
  try
  {
    StartWaitForm("正在生成收货单,请稍候......");
    if(sgRpod->RowCount>1)
    {
     int j;
     j=comServer->ItemCount-1;
     if(j>=0)
     {
        comServer->LocateItemByIndex(j);
        j=StrToInt(GetDetailValue("RpodLine"));
        j=j+1;
     }
     else
        j=1;
     try
     {
       for(int i=1;i<sgRpod->RowCount;i++)
       {
           if(sgRpod->Cells[1][i]=="√")
           {
               try
               {
                StrToFloat(sgRpod->Cells[7][i]);
               }
               catch(...)
               {
                 if(::MessageBox(Handle,"请购数量填写错误,选择'确定'继续执行,选择'取消'中断执行","错误提示",MB_OKCANCEL|MB_ICONSTOP)==IDOK)
                  continue;
                 else
                  return;
               }
               comServer->AddItem();
               SetDetailValue("RpodLine",IntToStr(j));            //请购单行号
               SetDetailValue("RpodCode",frmRpoh->seRpohCode->Text);            //请购单号
               SetDetailValue("RpodGoodsCode",sgRpod->Cells[3][i]);
               SetDetailValue("GoodsName",sgRpod->Cells[4][i]);
               SetDetailValue("GoodsSpec",sgRpod->Cells[5][i]);       //货物名称
               SetDetailValue("RpodUnitCode",sgRpod->Cells[6][i]);        //采购单位
               SetDetailValue("RpodConvRate","1");        //换算比率
               SetDetailValue("RpodFrom","2");            //需求来源
               if(sgRpod->Cells[9][i] == "")
                throw Exception("请输入请购数量");
               SetDetailValue("RpodQty",sgRpod->Cells[9][i]);             //请购数量
               //DONE:QUES.521 Modified 9-4 增加请购单价栏
               if(sgRpod->Cells[10][i] == "")
                throw Exception("请输入请购单价");
               SetDetailValue("RpodPrice",sgRpod->Cells[10][i]);           //单价
               //DONE:BUG NO 737 FIXED 9-10
               //根据请购单价和数量计算行金额
               SetDetailValue("RpodAmt",
                 DataCarry(StrToFloat(sgRpod->Cells[9][i])*StrToFloat(sgRpod->Cells[10][i]),2,0));             //金额
               //========= END OF FIX ==========
               SetDetailValue("RpodStatus","2");          //行状态
               SetDetailValue("RpodPQty","0");          //生成数量
               SetDetailValue("RpodReqDate",sgRpod->Cells[2][i]);         //需求日期
               SetDetailValue("RpodRecDate",sgRpod->Cells[2][i]);         //交货日期
               SetDetailValue("RpodLocCode","");         //入库货位
               SetDetailValue("RpodDept","");            //需求部门
               SetDetailValue("RpodDesc","");

                           //备注
               comServer->AddToObject();
               j=j+1;
           }
       }
     }
     catch(Exception &e)
     {
      comServer->FreeItem();
      this->ModalResult=0;
      throw Exception(e.Message);
     }
    }
  }
  __finally
  {
    EndWaitForm();
  }
  Close();
}
//---------------------------------------------------------------------------
void __fastcall TfrmRpod::btnCancelClick(TObject *Sender)
{
    Close();
}
//---------------------------------------------------------------------------
void __fastcall TfrmRpod::FormShow(TObject *Sender)
{
    InitControlGroup();
}
//---------------------------------------------------------------------------
void __fastcall TfrmRpod::InitControlGroup()
{
    sgRpod->RowCount = 1;
    FSupplyCode=frmRpoh->scRpohSupplyCode->ItemData[1];
    seRpohSupply->Text=frmRpoh->scRpohSupplyCode->ItemData[0];
    seRpohSupply->Enabled=false;
    deEndDate->Text="";
    seRpohGoods->Text="";
}
//---------------------------------------------------------------------------
AnsiString __fastcall TfrmRpod::GetSqlString()
{
    AnsiString  s_SQL,s_Temp;
    TComResultSet * TempRes = new TComResultSet(Handle,g_ClientHandle);
    TempRes->Open("select parametercode,parametervalue from sdparameter where parametercode = '10302' and parametervalue =1","parametercode");
    //if need goodsbuyer
    s_SQL =" Select BplanRDate,BplanGoods,GoodsName,goodsspec,BplanUnit,BplanQty,BplanRQty,DQty=BplanQty-BplanRQty,goodsbuyer";
    s_SQL+=" from sdBplan,sdGoods,sdPgd ";
    s_SQL+=" where BplanGoods = GoodsCode and BplanGoods = PgdGoodsCode and BplanCheck=1 and BplanQty>BplanRQty ";
    s_Temp="";
    if(seRpohSupply->Text!=""&&CBSupply->Checked==true)
       s_Temp+=" and PgdSupplyCode='"+FSupplyCode+"' ";
    if(seRpohGoods->Text != "")
       s_Temp+=" and GoodsCode ='"+seRpohGoods->Text+"'";
    if(deBegDate->Text != ""&&CBBDate->Checked==true)
    s_Temp+=" and BplanDate >='"+FormatDateTime("yyyy-mm-dd",StrToDateTime(deBegDate->Text))
           +"'"; //DONE:: RDate->Date
    if(TempRes->RecordCount >0)
    s_Temp+=" and goodsbuyer = ' "+g_sdUserCode+" '";
    //filter for supplybuyer
    if(deEndDate->Text != ""&&CBEDate->Checked ==true)
    //   s_Temp+=" and BplanRDate <='"+deEndDate->Text+"'";
     s_Temp+=" and BplanRDate <='"+FormatDateTime("yyyy-mm-dd",StrToDateTime(deEndDate->Text))
           +"'";
     //s_Temp+="group by bplangoods";
    //============END==============;====
    s_SQL+=s_Temp;
    return(s_SQL);
}
//---------------------------------------------------------------------------

void __fastcall TfrmRpod::FillGridWithData()
{
    AnsiString  ItemStr,s_SQL;
    s_SQL =GetSqlString();
    sgRpod->RowCount=1;
    TComResultSet *RsRpod;
    RsRpod=new TComResultSet(Handle, g_ClientHandle);
    RsRpod->Open(s_SQL,"");
    while( RsRpod->Eof == 0)
    {
     ItemStr = "\t"+AnsiString("") +
               "\t"+RsRpod->FieldByName("BplanRDate")+
               "\t"+RsRpod->FieldByName("BplanGoods")+
               "\t"+RsRpod->FieldByName("GoodsName")+
               "\t"+RsRpod->FieldByName("GoodsSpec")+
               "\t"+RsRpod->FieldByName("BplanUnit")+
               "\t"+RsRpod->FieldByName("BplanQty")+
               "\t"+RsRpod->FieldByName("BplanRQty")+
               "\t"+RsRpod->FieldByName("DQty")+
               //DONE:QUES.521 Modified 9-4
               "\t"+"0";
               //====== END ========

     sgRpod->AddItem(ItemStr);
     RsRpod->MoveNext();
    }
    RsRpod->Close();
delete RsRpod;
}
//---------------------------------------------------------------------------
void __fastcall TfrmRpod::GetComObject(TComServer *comServerPtr)
{
    comServer = comServerPtr;
}
//---------------------------------------------------------------------------
void __fastcall TfrmRpod::sgRpodDblClick(TObject *Sender)
{
    int ARow=sgRpod->Row;
    int ACol=sgRpod->Col;
    if (ARow > 0 && ACol == 1)
    {
      if (sgRpod->Cells[1][ARow] == "√")
      {
       sgRpod->Cells[1][ARow] =  "";
       for (int i=1;i<sgRpod->RowCount;i++)
       {
          if(sgRpod->Cells[1][i]=="√")
          {
             btnOK->Enabled=true;
             break;
          }
          else
             btnOK->Enabled=false;
       }
      }
      else
      {
          sgRpod->Cells[1][ARow] =  "√";
          btnOK->Enabled = true;
      }
    }
}
//---------------------------------------------------------------------------

void __fastcall TfrmRpod::bbQueryClick(TObject *Sender)
{
  FillGridWithData();
}
//---------------------------------------------------------------------------

void __fastcall TfrmRpod::bbAllClick(TObject *Sender)
{
  if(sgRpod->RowCount <=1)
    return;
  for(int i=1;i<sgRpod->RowCount;i++)
    sgRpod->Cells[1][i] = "√";
  btnOK->Enabled = true;
}
//---------------------------------------------------------------------------

void __fastcall TfrmRpod::bbNoneClick(TObject *Sender)
{
  for(int i=1;i<sgRpod->RowCount;i++)
    sgRpod->Cells[1][i] = " ";
  btnOK->Enabled = false;
}
//---------------------------------------------------------------------------

void __fastcall TfrmRpod::sgRpodSelectCell(TObject *Sender, int ACol,
      int ARow, bool &CanSelect)
{
 if(sgRpod->Cells[1][ARow]=="√")
  sgRpod->ReadOnly=false;
 else
  sgRpod->ReadOnly=true;
}
//---------------------------------------------
AnsiString __fastcall TfrmRpod::GetDetailValue(AnsiString fieldname)
{
  Variant vTmp;
  vTmp=comServer->DataSet->GetItemValue(fieldname);
  if(vTmp.IsNull())
   return "";
  else
   return AnsiString(vTmp);
}
//---------------------------------------------------------------------------
void __fastcall TfrmRpod::SetDetailValue(AnsiString fieldname,Variant value)
{
  comServer->DataSet->SetDetailValue(fieldname,value);
}

//----------------------------------------------------------------------------
void __fastcall TfrmRpod::seRpohGoodsButtonClick(TObject *Sender)
{
  AnsiString SqlStr;
  TComResultSet * TempRes = new  TComResultSet(Handle,g_ClientHandle);
  TempRes->Close();
  TempRes->Open("select parametercode,parametervalue from sdparameter where parametercode = '10302' and parametervalue=1","Parametercode");
  if(TempRes->RecordCount>0)
  SqlStr+=" goodsbuyer = '"+g_sdUserCode+"'";//过滤条件
  else
  SqlStr="";
if(OpenGoodsForm(SqlStr))
    {
      seRpohGoods->Text=GetGoodsValue(gtOpenForm,"GoodsCode");
    }
}
//---------------------------------------------------------------------------

⌨️ 快捷键说明

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