sreth.cpp

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

CPP
1,045
字号
//---------------------------------------------------------------------------
#include <vcl.h>
#include "Sreth.h"
#include "Sretd.h"
#include "KSSaleFuc.h"
//---------------------------------------------------------------------------
#pragma hdrstop
#pragma package(smart_init)
#pragma link "GenBaseForm"
#pragma link "DateEdit"
#pragma link "fpanel"
#pragma link "SDComboBox"
#pragma link "SDEdit"
#pragma link "SDGrid"
#pragma resource "*.dfm"

TfrmSreth *frmSreth;
//---------------------------------------------------------------------------
__fastcall TfrmSreth::TfrmSreth(TComponent* Owner, HWND chWnd, AnsiString MidCode,AnsiString WhereStr)
        : TGenBaseForm(Owner,chWnd,MidCode,WhereStr)
{
  SetAutoCodeString(seSrethCode,"Acm-015");

}
//---------------------------------------------------------------------------
void __fastcall TfrmSreth::InitEditControl()
{
    ClientGroup->AddComponent(1,false,false,true, FloatPanel1,FloatPanel1->Name);
    ClientGroup->AddComponent(1,true,true,true, FloatPanel3,FloatPanel3->Name);
    ClientGroup->AddComponent(1,true,true,false, sgSretd,sgSretd->Name);
    ClientGroup->AddComponent(1,false,true,false,seSrethCode,seSrethCode->Name);
    ClientGroup->AddComponent(1,false,true,true,scSrethType,scSrethType->Name);
    ClientGroup->AddComponent(1,true,true,true,scSrethFmonth,scSrethFmonth->Name);
    ClientGroup->AddComponent(1,false,true,true,seSrethClient,seSrethClient->Name);
    ClientGroup->AddComponent(1,false,true,true, scSrethTaxCode,scSrethTaxCode->Name);
    ClientGroup->AddComponent(1,false,true,true,scSrethSaler,scSrethSaler->Name);

    ClientGroup->AddComponent(2,false,false,true, FloatPanel2,FloatPanel2->Name);
    ClientGroup->AddComponent(2,true,true,true,GroupBox4,GroupBox4->Name);
    ClientGroup->AddComponent(2,true,true,true,seSretdSogdLine,seSretdSogdLine->Name);
    ClientGroup->AddComponent(2,false,true,true,seSretdSogCode,seSretdSogCode->Name);
    ClientGroup->AddComponent(2,true,true,true, seSretdGoodsName,seSretdGoodsName->Name);
    ClientGroup->AddComponent(2,true,true,true,seSretdConv,seSretdConv->Name);
    ClientGroup->AddComponent(2,true,true,true,seSretdAmt,seSretdAmt->Name);
    ClientGroup->AddComponent(2,true,true,true,seSretdTaxAmt,seSretdTaxAmt->Name);
    ClientGroup->AddComponent(2,false,false,false,btnCancel,btnCancel->Name);
    ClientGroup->AddComponent(2,false,true,true,btnOK,btnOK->Name);
    DynamicSetControlState();
    //Sreth
    FillComboBox(Handle,scSrethTaxCode,"SELECT TaxCode,TaxName,TaxRate FROM sdTax","TaxName","TaxCode","TaxRate");
    FillComboBox(Handle,scSrethFmonth,"SELECT FcMonth FROM sdFc","FcMonth");
    FillComboBox(Handle,scSrethPosType,"SELECT PosTypeCode,PosTypeName FROM sdPosType where postypeflg=2 order by PosTypeCode","PosTypeName","PosTypeCode");
    AnsiString sSql;
    sSql =AnsiString("select currencycode,currencyname,currencyrate=coalesce(rateratio,1),currencylocal from sdcurrency,sdrate");
    sSql+=" where currencycode*=ratecurrency and ";
    sSql+=" ratefmonth='"+g_sdSMonth+"'";
    FillEdit(Query,seSrethCurrency,sSql,"CurrencyName","CurrencyCode","CurrencyRate","CurrencyLocal");
    FillEdit(Query,seSrethClient,"SELECT ClientCode,ClientName FROM sdClient  where ClientCancel=0","ClientName","ClientCode");
    FillComboBox(Handle,scSrethSettleMode,"SELECT SettleModeCode,SettleModeName FROM sdSettleMode order by settlemodename","SettleModeName","SettleModeCode");
    FillComboBox(Handle,scSrethDeliver,"SELECT DeliverName,DeliverCode FROM sdDeliver order by delivername","DeliverName","DeliverCode");
    FillEdit(Query,seSrethSsite,"SELECT SsiteCode,SSiteName FROM sdSsite","SsiteName","SsiteCode");
    FillComboBox(Handle,scSrethTransMode,"SELECT TransModeCode,TransModeName FROM sdTransMode order by TransModeName","TransModeName","TransModeCode");
    FillComboBox(Handle,scSrethRr,"SELECT SretRrCode,SretRrDesc FROM sdSretRr order by sretrrdesc","Sretrrdesc","SretRrCode");
    FillComboBox(Handle,scSrethSaler,"Select Salercode,UserName As Salername from sduser,sdsaler where salercode=usercode order by username","Salername","Salercode");
//    FillEdit(Query,seSrethUser,"select UserName,UserCode from sdUser  order by usercode","UserName","UserCode");
//    FillEdit(Query,seSrethChecker,"select UserName,UserCode from sdUser  order by usercode","UserName","UserCode");
    //Sretd
    FillEdit(Query,seSretdUnit,"SELECT UnitCode,UnitName FROM sdUnit","UnitName","UnitCode");
    FillEdit(Query,seSretdLoc,"SELECT LocCode,LocName FROM sdLoc ","LocName","LocCode");
    FillEdit(Query,seSretdBatch,"SELECT BatchCode,BatchDesc FROM sdBatch ","BatchDesc","BatchCode");
    scSrethType->ClearAll();
    scSrethType->AddItems("据发货单退货","1");
    scSrethType->AddItems("据客户退货","2");
    scSretdState->ClearAll();
    scSretdState->AddItems("预备","1");
    scSretdState->AddItems("确认","2");
    scSretdState->AddItems("待下达","3");
    scSretdState->AddItems("已下达","4");
    scSretdState->AddItems("已完成","5");
}
//---------------------------------------------------------------------------
void __fastcall TfrmSreth::ClearControl(int Section,bool BringToNext)
{
    if (Section == 1)
    {
       if (! BringToNext)
       {
		 seSrethCode->Text 		= " ";
         scSrethType->ItemIndex = 0;
         DynamicSetControlState();
		 tbGenDetail->Enabled	=true;
		 scSrethFmonth->Text 	= g_sdSMonth;
		 scSrethPosType->ItemIndex = -1;
		 deSrethDate->Text=g_sdCurDate;;
		 seSrethClient->ItemIndex  = -1;
		 seSrethCurrency->ItemIndex= -1;
		 seSrethEnrate->Text = "1";
		 scSrethTaxCode->ItemIndex = -1;
		 scSrethSettleMode->ItemIndex = -1;
		 scSrethDeliver->ItemIndex = -1;
		 seSrethSsite->ItemIndex = -1;
		 scSrethTransMode->ItemIndex = -1;
		 seSrethUser->Text=g_sdUserCode;
		 cheSrethCheck->Checked = false;
		 seSrethChecker->Text = " ";
		 cheSrethClose->Checked = false;
		 cheSrethCancel->Checked = false;
		 lbSrethSysDate->Caption = " ";
		 scSrethRr->ItemIndex = -1;
		 scSrethSaler->ItemIndex = -1;
		 memSrethDesc->Text = " ";
	   }
	   sgSretd->RowCount=1;
	}
	else if (Section==2)
	{
		if (!BringToNext)
		{
			seSretdLine->Text = AnsiString(comServer->ItemCount+1);
			seSretdSogCode->Text = " ";
			seSretdSogdLine->Text= " ";
			seSretdGoods->Text = " ";
			seSretdGoodsName->Text = " ";
			seSretdUnit->ItemIndex = -1;
			seSretdConv->Text = "1";
			seSretdQty->Text = "0";
			seSretdPrice->Text = "0";
			seSretdAmt->Text = "0.00";
			seSretdTaxAmt->Text = "0.00";
			scSretdState->ItemIndex = 1;
			seSretdExes->Text = "0.00";
			seSretdLoc->ItemIndex = -1;
			seSretdBatch->ItemIndex = -1;
			memSretdDesc->Text = " ";
			cheSretdClose->Checked = false;
			seSretdCloseDate->Text = "";
			seSretdOQty->Text	= "0";
			seSretdFQty->Text	= "0";
			seSretdEQty->Text	= "0";
		}
	}
}
//---------------------------------------------------------------------------
void __fastcall TfrmSreth::GetDataFromComObject(int Section)
{
        if (Section==1)
        {
           seSrethCode->Text = GetHeadValue("SrethCode");
           scSrethType->LocateKey(GetHeadValue("SrethType"));
           scSrethPosType->LocateKey(GetHeadValue("SrethPosType"));
           DynamicSetControlState();
           scSrethFmonth->Text = GetHeadValue("SrethFmonth");
           deSrethDate->Text= GetHeadValue("SrethDate");
           seSrethClient->LocateKey(GetHeadValue("SrethClient"));
           seSrethCurrency->LocateKey(GetHeadValue("SrethCurrency"));
           if(seSrethCurrency->ItemData[cbItem4]=="1")
             seSrethEnrate->Enabled=false;
           seSrethEnrate->Text = GetHeadValue("SrethEnrate");
           scSrethTaxCode->LocateKey(GetHeadValue("SrethTaxCode"));
           scSrethSettleMode->LocateKey(GetHeadValue("SrethSettleMode"));
           scSrethDeliver->LocateKey(GetHeadValue("SrethDeliver"));
           seSrethSsite->LocateKey(GetHeadValue("SrethSsite"));
           scSrethTransMode->Text = GetHeadValue("SrethTransMode");
           seSrethUser->Text=GetHeadValue("SrethUser");
           scSrethSaler->LocateKey(GetHeadValue("SrethSaler"));
           cheSrethCheck->Checked =(GetHeadValue("SrethCheck")=="1");
           seSrethChecker->Text=GetHeadValue("SrethChecker");
           cheSrethClose->Checked =(GetHeadValue("SrethClose")=="1");
           cheSrethCancel->Checked =(GetHeadValue("SrethCancel")=="1");
           scSrethRr->LocateKey(GetHeadValue("SrethRr"));
           lbSrethSysDate->Caption = GetHeadValue("SrethSysDate");
           memSrethDesc->Text = GetHeadValue("SrethDesc");
           SetCheckToolbarStatus(cheSrethCheck->Checked);
           SetCancelToolbarStatus(cheSrethCancel->Checked);
           SetCloseToolbarStatus(cheSrethClose->Checked);
        }
        else
        {
            seSretdLine->Text = GetDetailValue("SretdLine");
            seSretdSogCode->Text = GetDetailValue("SretdSogCode");
            seSretdSogdLine->Text = GetDetailValue("SretdSogdLine");
			seSretdGoods->Text = GetDetailValue("SretdGoods");
		if(InitRsGoods(seSretdGoods->Text)){
			seSretdGoodsName->Text =GetGoodsValue(gtInitRs,"GoodsName");
			seSretdGoodsSpec->Text =GetGoodsValue(gtInitRs,"GoodsSpec");
		}
			seSretdGoodsName->Text = GetDetailValue("SretdGoodsName");
            seSretdGoodsSpec->Text = GetDetailValue("SretdGoodsSpec"); 
            seSretdUnit->LocateKey(GetDetailValue("SretdUnit"));
            seSretdConv->Text = GetDetailValue("SretdConv");
            seSretdQty->Text = GetDetailValue("SretdQty");
            seSretdPrice->Text=GetDetailValue("SretdPrice");
            seSretdAmt->Text=GetDetailValue("SretdAmt");
            seSretdTaxAmt->Text=GetDetailValue("SretdTaxAmt");
            scSretdState->ItemIndex=StrToInt(GetDetailValue("SretdState"))-1;
            seSretdExes->Text = GetDetailValue("SretdExes");
            seSretdLoc->LocateKey(GetDetailValue("SretdLoc"));
            seSretdBatch->LocateKey(GetDetailValue("SretdBatch"));
            memSretdDesc->Text=GetDetailValue("SretdDesc");
            seSretdOQty->Text=GetDetailValue("SretdOQty");
            seSretdFQty->Text=GetDetailValue("SretdFQty");
            seSretdEQty->Text=GetDetailValue("SretdEQty");
            cheSretdClose->Checked=GetDetailValue("SretdClose")=="1";
            seSretdCloseDate->Text=GetDetailValue("SretdCloseDate");
            SetCloseItemStatus(cheSretdClose->Checked);
        }
}
//---------------------------------------------------------------------------

void __fastcall TfrmSreth::SendDataToComObject(int Section)
{
	   AnsiString s;
		if (Section==1)
		{
			if ( seSrethCode->Text.IsEmpty() )
			  throw Exception("退货单号不能为空!");
			if ( deSrethDate->Text.IsEmpty())
			  throw Exception("退货日期不能为空!");
			if ( scSrethFmonth->Text.IsEmpty())
			  throw Exception("财务月份不能为空!");
			if ( seSrethClient->ItemData[cbItem2]=="" )
			  throw Exception("客户不能为空!");
			if ( seSrethCurrency->ItemData[cbItem2]=="" )
			   throw Exception("币种不能为空!");
			if ( scSrethTaxCode->ItemData[cbItem2]=="" )
			   throw Exception("税码不能为空!");
			if ( scSrethSaler->Text.IsEmpty() )
			   throw Exception("业务员不能为空!");

			SetHeadValue("SrethCode",seSrethCode->Text);
			SetHeadValue("SrethType",scSrethType->ItemData[cbItem2]);
			SetHeadValue("SrethPosType",scSrethPosType->ItemData[cbItem2]);
			SetHeadValue("SrethFmonth",scSrethFmonth->Text);
			SetHeadValue("SrethDate",deSrethDate->Text);
            SetHeadValue("SrethClient",seSrethClient->ItemData[cbItem2]);
            SetHeadValue("SrethUser",g_sdUserCode/*scSrethUser->Text*/);
            SetHeadValue("SrethSaler",scSrethSaler->ItemData[cbItem2]);
            SetHeadValue("SrethCurrency",seSrethCurrency->ItemData[cbItem2]);
            SetHeadValue("SrethEnrate",seSrethEnrate->Text);
            SetHeadValue("SrethTaxCode",scSrethTaxCode->ItemData[cbItem2]);
            SetHeadValue("SrethSettleMode",scSrethSettleMode->ItemData[cbItem2]);
            SetHeadValue("SrethDeliver",scSrethDeliver->ItemData[cbItem2]);
            SetHeadValue("SrethSsite",seSrethSsite->ItemData[cbItem2]);
            SetHeadValue("SrethTransMode",scSrethTransMode->ItemData[cbItem2]);
            SetHeadValue("SrethRr",scSrethRr->ItemData[cbItem2]);
            SetHeadValue("SrethDesc",memSrethDesc->Text);
        }
		else
		{
//			if(seSretdSog->Text.IsEmpty())
//			   throw Exception("货品编码不能为空!");
			if(seSretdUnit->ItemData[cbItem2]=="")
			   throw Exception("计量单位不能为空!");
			if(seSretdPrice->Text.IsEmpty())
			   throw Exception("退货单价不能为空!");

            if (seSretdBatch->Text == "<没有批号>")
              	  throw Exception("该物料需要批次管理");

            CalculateAmt();
			SetDetailValue("SretdCode",seSrethCode->Text);
            SetDetailValue("SretdLine",seSretdLine->Text);
			SetDetailValue("SretdSogCode",seSretdSogCode->Text);
            SetDetailValue("SretdSogdLine",seSretdSogdLine->Text);
            SetDetailValue("SretdGoods",seSretdGoods->Text);
            SetDetailValue("SretdGoodsName",seSretdGoodsName->Text);
            SetDetailValue("SretdGoodsSpec",seSretdGoodsSpec->Text);
            SetDetailValue("SretdUnit",seSretdUnit->ItemData[cbItem2]);
            SetDetailValue("SretdConv",seSretdConv->Text);
            SetDetailValue("SretdLoc",seSretdLoc->ItemData[cbItem2]);
            SetDetailValue("SretdQty",seSretdQty->Text);
            SetDetailValue("SretdPrice",seSretdPrice->Text);
            SetDetailValue("SretdAmt",seSretdAmt->Text);
            SetDetailValue("SretdTaxAmt",seSretdTaxAmt->Text);
            SetDetailValue("SretdBatch",seSretdBatch->ItemData[1]);
            SetDetailValue("SretdExes",seSretdExes->Text);
            SetDetailValue("SretdDesc",memSretdDesc->Text);
            SetDetailValue("SretdState",scSretdState->ItemData[1]);
        }
}
//---------------------------------------------------------------------------
void __fastcall TfrmSreth::WaitUserInput(int Section)
{
       if (Section ==1)
         {
          FloatPanel1->Enabled=true;
         if(seSrethCode->Enabled)
           seSrethCode->SetFocus();
         }
       else
       {
          FloatPanel1->Enabled=false;
          sgSretd->Visible=false;
          sgSretd->Align=alNone;
          FloatPanel2->Visible=true;
          FloatPanel2->Align=alClient;
          if(seSretdLine->Enabled)
            seSretdLine->SetFocus();
       }
}
//---------------------------------------------------------------------------
void __fastcall TfrmSreth::RefreshGridData(int mAction)
{
         AnsiString ItemStr;
	ItemStr="\t"+GetDetailValue("SretdLine")+"\t"+GetDetailValue("SretdSogCode")+"\t"+
				  GetDetailValue("SretdSogdLine")+"\t"+GetDetailValue("SretdGoods")+"\t"+
				  GetDetailValue("SretdGoodsName")+"\t"+GetDetailValue("SretdGoodsSpec")+"\t"+
				  GetDetailValue("SretdUnit")+"\t"+GetDetailValue("SretdConv")+"\t"+
				  GetDetailValue("SretdLoc")+"\t"+GetDetailValue("SretdQty")+"\t"+
				  GetDetailValue("SretdPrice")+"\t"+GetDetailValue("SretdAmt")+"\t"+
				  GetDetailValue("SretdTaxAmt");
		switch(mAction)
		{
		   case 0:
						  sgSretd->AddItem(ItemStr);
			  break;
           case 1:
				  sgSretd->ChangeItem(ItemStr,sgSretd->Row);
                break;
           case 2:
                sgSretd->RemoveItem(sgSretd->Row);
        }
}
//---------------------------------------------------------------------------
void __fastcall TfrmSreth::DisplayBill()
{
       if(comServer->RecordCount<1)
         return;
        GetDataFromComObject(1);
        ChangeToBrowseState(true);
        FillGridWithData();
}
//---------------------------------------------------------------------------

void __fastcall TfrmSreth::GetBill(AnsiString BillID)
{
       if(comServer->Find("SrethCode='"+BillID+"'"))
       {
           DisplayBill();
		}
       else
           if (ShowMessageWindow("在数据库中没有查到记录:"+BillID+",要增加吗?",mwsConfirmation)==IDYES)
           {
               AddHeadRecord();
           }
}
//---------------------------------------------------------------------------
void __fastcall TfrmSreth::FillGridWithData()
{

⌨️ 快捷键说明

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