zth.cpp

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

CPP
560
字号
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma link "GenBaseForm"
#pragma hdrstop
#include "Zth.h"
#include "Ztd.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "fpanel"
#pragma link "SDGrid"
#pragma link "DateEdit"
#pragma link "SDComboBox"
#pragma link "SDEdit"
#pragma resource "*.dfm"
TfrmZth *frmZth;

//---------------------------------------------------------------------------
__fastcall TfrmZth::TfrmZth(TComponent* Owner, HWND chWnd, AnsiString ClassCode,
AnsiString WhereStr)
        : TGenBaseForm(Owner,chWnd,ClassCode,WhereStr)

{
 SetAutoCodeString(seZthCode,"Acm-022");
}
//---------------------------------------------------------------------------

void __fastcall TfrmZth::InitEditControl()
{
    ClientGroup->AddComponent(1,false,false,true,FloatPanel1,FloatPanel1->Name);
    ClientGroup->AddComponent(1,false,true,false,seZthCode,seZthCode->Name);
    ClientGroup->AddComponent(1,false,true,true,scZthSupply,scZthSupply->Name);

    ClientGroup->AddComponent(2,false,false,true,FloatPanel2,FloatPanel2->Name);
    ClientGroup->AddComponent(2,false,true,true,btnOK,btnOK->Name);
    ClientGroup->AddComponent(2,false,false,false,btnCancel,btnCancel->Name);

    ClientGroup->AddComponent(2,true,true,true,gbClose,gbClose->Name);
    ClientGroup->AddComponent(2,true,true,true,seZtdGoods,seZtdGoods->Name);
    ClientGroup->AddComponent(2,true,true,true,seZtdGoodsName,seZtdGoodsName->Name);
    ClientGroup->AddComponent(2,true,true,true,scZtdUnit,scZtdUnit->Name);
    ClientGroup->AddComponent(2,true,true,true,seZtdConvRate,seZtdConvRate->Name);
    ClientGroup->AddComponent(2,true,true,true,seZtdPrice,seZtdPrice->Name);
    ClientGroup->AddComponent(2,true,true,true,deZtdReqDate,deZtdReqDate->Name);
    ClientGroup->AddComponent(2,true,true,true,deZtdRecDate,deZtdRecDate->Name);
    ClientGroup->AddComponent(2,true,true,true,deZtdSendDate,deZtdSendDate->Name);
    ClientGroup->AddComponent(2,true,true,true,seZtdRQty,seZtdRQty->Name);
    ClientGroup->AddComponent(2,false,true,true,seZtdPoCode,seZtdPoCode->Name);

     FillComboBox(Handle,scZthSupply,"Select SupplyCode,SupplyName FROM sdSupply  where supplycancel=0 order by Supplycode","SupplyName","SupplyCode");
     FillComboBox(Handle,scZtdUnit,"Select UnitCode,UnitName FROM sdUnit order by Unitcode","UnitName","UnitCode");
}
//---------------------------------------------------------------------------

void __fastcall TfrmZth::ClearControl(int Section,bool BringToNext)
{
    if (Section == 1)
    {
       if (! BringToNext)
       {
          seZthCode->Text = "";
          scZthSupply->ItemIndex=-1;
          deZthDate->Text = g_sdCurDate;
          cheZthClose->Checked = false;
          cheZthCheck->Checked = false;
          cheZthCancel->Checked = false;

          labSystemDate->Caption  = "";
          labUserCode->Caption = g_sdUserCode;
          labChecker->Caption = g_sdUserCode;
          //新增单据,工具栏使能
          SetCheckToolbarStatus(false);

       }
       sgZth->RowCount=1;
    }
    else if (Section==2)
    {
        if (!BringToNext)
        {
            seZtdLine->Text =AnsiString(comServer->ItemCount+1);
            seZtdPoCode->Text = "";
            seZtdPodLine->Text = "0";

            seZtdGoods->Text = "";
            seZtdGoodsName->Text = "";
            scZtdUnit->ItemIndex = -1;
            seZtdConvRate->Text = "0.0";
            seZtdPrice->Text = "0.0";
            seZtdQty->Text = "0.0";
            seZtdRQty->Text = "0.0";
            deZtdSendDate->Text = "";
            deZtdReqDate->Text = "";
            deZtdRecDate->Text = g_sdCurDate;
            deZtdPreDate->Text = "";

            cheZtdClose->Checked = false;
            deZtdCloseDate->Text = "";
        }
    }
}
//---------------------------------------------------------------------------
void __fastcall TfrmZth::GetDataFromComObject(int Section)


{
    if (Section==1)
    {
        seZthCode->Text=GetHeadValue("ZthCode");
        scZthSupply->LocateKey(GetHeadValue("ZthSupply"));         //供应商
        deZthDate->Text=GetHeadValue("ZthDate");
        labUserCode->Caption=GetHeadValue("ZthUser");
        labSystemDate->Caption=GetHeadValue("ZthSysDate");

        cheZthCheck->Checked=GetHeadValue("ZthCheck")=="1";
        labChecker->Caption = GetHeadValue("ZthChecker");
        cheZthCancel->Checked=GetHeadValue("ZthCancel")=="1";
        cheZthClose->Checked=GetHeadValue("ZthClose")=="1";

        //根据审核、取消、结清状态,设置工具栏
        if(GetHeadValue("ZthCheck")=="1")
          SetCheckToolbarStatus(true);
        else
          SetCheckToolbarStatus(false);
        if(GetHeadValue("ZthCancel")=="1")
          SetCancelToolbarStatus(true);
        else
          SetCancelToolbarStatus(false);
        //根据结清状态,设置工具栏
        if(GetHeadValue("ZthClose")=="1")
         SetCloseToolbarStatus(true);
        else
         SetCloseToolbarStatus(false);
    }
    else
    {
        seZtdLine->Text = GetDetailValue("ZtdLine");
        seZtdPoCode->Text = GetDetailValue("ZtdPoCode");
        seZtdPodLine->Text = GetDetailValue("ZtdPodLine");
        seZtdGoods->Text =GetDetailValue("ZtdGoods");
        seZtdGoodsName->Text = GetDetailValue("Goodsname");
        GoodsSpec->Text = GetDetailValue("Goodsspec");
        scZtdUnit->LocateKey(GetDetailValue("ZtdUnit"));
        seZtdConvRate->Text = GetDetailValue("ZtdConvRate");
        seZtdPrice->Text = GetDetailValue("ZtdPrice");
        seZtdQty->Text = GetDetailValue("ZtdQty");
        seZtdRQty->Text = GetDetailValue("ZtdRQty");
        deZtdSendDate->Text = GetDetailValue("ZtdSendDate");
        deZtdReqDate->Text = GetDetailValue("ZtdReqDate");
        deZtdRecDate->Text = GetDetailValue("ZtdRecDate");
        deZtdPreDate->Text = GetDetailValue("ZtdPreDate");
        cheZtdClose->Checked = GetDetailValue("ZtdClose")=="1";    //审核标志
        deZtdCloseDate->Text = GetDetailValue("ZtdCloseDate");
        //根据结清状态,设置工具栏
        if(GetDetailValue("ZtdClose")=="1")
         SetCloseItemStatus(true);
        else
         SetCloseItemStatus(false);
    }
}
//---------------------------------------------------------------------------

void __fastcall TfrmZth::SendDataToComObject(int Section)
{
    if (Section==1)  //保存抬头
    {
        if(seZthCode->Text== "")
           throw Exception("请输入在途单号");
        if(scZthSupply->ItemData[1]== "")
           throw Exception("请输入供应商编码");
//check before send data
        SetHeadValue("ZthCode",seZthCode->Text);
        SetHeadValue("ZthSupply",scZthSupply->ItemData[1]);
        SetHeadValue("ZthDate",deZthDate->Text);
        SetHeadValue("ZthUser",labUserCode->Caption);
    }
    else   //保存细表记录
    {
        if(seZtdLine->Text == "")
         throw Exception("请输入在途单行号");
        if(seZtdPoCode->Text =="")
         throw Exception("请输入采购单号");
        if(seZtdQty->Text =="0.0")
         throw Exception("请输入在途数量");
//check before send data
        SetDetailValue("ZtdCode",seZthCode->Text);
        SetDetailValue("ZtdLine", seZtdLine->Text);
        SetDetailValue("ZtdPoCode",   seZtdPoCode->Text);
        SetDetailValue("ZtdPodLine",   seZtdPodLine->Text);
        SetDetailValue("ZtdQty",seZtdQty->Text);
        SetDetailValue("ZtdGoods",seZtdGoods->Text);
        SetDetailValue("ZtdUnit",scZtdUnit->ItemData[1]);
        SetDetailValue("ZtdPrice",seZtdPrice->Text);
        SetDetailValue("ZtdConvRate",seZtdConvRate->Text);
        SetDetailValue("ztdAmt",seZtdPrice->Text.ToDouble()* seZtdQty->Text.ToDouble());
        SetDetailValue("ZtdSendDate",  deZtdSendDate->Text);
        SetDetailValue("ZtdReqDate",   deZtdReqDate->Text);
        SetDetailValue("ZtdRecDate",   deZtdRecDate->Text);
        SetDetailValue("ZtdPreDate",   deZtdPreDate->Text);
        SetDetailValue("ZtdRQty",      seZtdRQty->Text);
        SetDetailValue("goodsname",    seZtdGoodsName->Text);
        SetDetailValue("goodsspec",   GoodsSpec->Text);
    }
}
//---------------------------------------------------------------------------

void __fastcall TfrmZth::RefreshGridData(int mAction)
{
    int i;
    AnsiString ItemStr=GetDataToGrid();
    switch(mAction)
    {
       case 0:
         sgZth->AddItem(ItemStr);
         break;
       case 1:
         i=sgZth->Row;
         sgZth->ChangeItem(ItemStr,i);
         break;
       case 2:
         sgZth->RemoveItem(sgZth->Row);
    }
}
//---------------------------------------------------------------------------

void __fastcall TfrmZth::DisplayBill()
{
    if (comServer->RecordCount > 0)
    {
        GetDataFromComObject(1);   //向抬头中增加记录
        FillGridWithData();
    }
}
//---------------------------------------------------------------------------

void __fastcall TfrmZth::GetBill(AnsiString BillID)
{
       int iRow;

       iRow=comServer->Find("ZthCode='"+BillID+"'");
       if (iRow>0)      //FIND THIS BILL
            {
              DisplayBill();
            }
       else
           if (ShowMessageWindow("在数据库中没有查到记录:"+BillID+",要增加吗?",mwsConfirmation)==IDYES)
           {
               AddHeadRecord();
           }
}
//---------------------------------------------------------------------------

void __fastcall TfrmZth::FillGridWithData()
{
       int i;
       AnsiString ItemStr;
       sgZth->RowCount=1;
       if(comServer->RecordCount>0)
       {
         for (i=0;i<comServer->ItemCount;i++)  {
            comServer->LocateItemByIndex(i);
            RefreshGridData(0);
         }
       }
}
//---------------------------------------------------------------------------

AnsiString __fastcall TfrmZth::GetHeadValue(AnsiString fieldname)
{
  Variant vTmp;
  vTmp=comServer->DataSet->GetHeadValue(fieldname);
  if(vTmp.IsNull())
   return "";
  else
   return AnsiString(vTmp);
}
//---------------------------------------------------------------------------

AnsiString __fastcall TfrmZth::GetDetailValue(AnsiString fieldname)
{

⌨️ 快捷键说明

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