soh.cpp

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

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

TfrmSoh *frmSoh;
//---------------------------------------------------------------------------
__fastcall TfrmSoh::TfrmSoh(TComponent* Owner, HWND chWnd, AnsiString MidCode,AnsiString WhereStr)
		: TBillBaseForm(Owner,chWnd,MidCode,WhereStr)
{
  SetAutoCodeString(seSohCode,"Acm-010");      
}
//---------------------------------------------------------------------------
void __fastcall TfrmSoh::InitEditControl()
{
	ClientGroup->AddComponent(1,true,true,false, sgSod,sgSod->Name);
	ClientGroup->AddComponent(1,false,false,true, FloatPanel1,FloatPanel1->Name);
	ClientGroup->AddComponent(1,false,true,false, seSohCode,seSohCode->Name);
	ClientGroup->AddComponent(1,true,true,true, FloatPanel3,FloatPanel3->Name);
	ClientGroup->AddComponent(1,false,true,true,seSohClient,seSohClient->Name);
	ClientGroup->AddComponent(1,false,true,true, scSohSaler,scSohSaler->Name);
	ClientGroup->AddComponent(1,false,true,true, scSohTaxCode,scSohTaxCode->Name);
	ClientGroup->AddComponent(1,false,false,true,seSohEnrate,seSohEnrate->Name);

	ClientGroup->AddComponent(2,false,false,true, GpDetail2,GpDetail2->Name);
	ClientGroup->AddComponent(2,false,false,true, GpDetail1,GpDetail1->Name);
	ClientGroup->AddComponent(2,true,true,true, GpDetailClose,GpDetailClose->Name);
	ClientGroup->AddComponent(2,false,true,true,seSodGoods,seSodGoods->Name);
	ClientGroup->AddComponent(2,true,true,true,seSodGoodsName,seSodGoodsName->Name);
	ClientGroup->AddComponent(2,true,true,true,seSodAmt,seSodAmt->Name);
	ClientGroup->AddComponent(2,true,true,true,seSodDAmt,seSodDAmt->Name);
	ClientGroup->AddComponent(2,true,true,true,seSodConv,seSodConv->Name);
	ClientGroup->AddComponent(2,true,true,true,seSodTaxAmt,seSodTaxAmt->Name);
	ClientGroup->AddComponent(2,false,false,false,btnCancel,btnCancel->Name);
	ClientGroup->AddComponent(2,false,true,true,btnOK,btnOK->Name);

	//Soh
	FillComboBox(Handle,scSohTaxCode,"SELECT TaxName,TaxCode,TaxRate FROM sdTax","TaxName","TaxCode","TaxRate");
	FillComboBox(Handle,scSohSaler,"Select Salercode,UserName As SalerName from sduser,sdsaler where salercode=usercode order by username","SalerName","SalerCode");
	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,seSohCurrency,sSql,"CurrencyName","CurrencyCode","CurrencyRate","CurrencyLocal");
	FillEdit(Query,seSohClient,"SELECT ClientCode,ClientName FROM sdClient where ClientCancel=0","ClientName","ClientCode");
	FillEdit(Query,seSohSsite,"select SsiteName,SsiteCode from sdSsite","SsiteName","SsiteCode");
	FillComboBox(Handle,scSohSettleMode,"SELECT SettleModeCode,SettleModeName FROM sdSettleMode order by SettleModeName","SettleModeName","SettleModeCode");
	FillComboBox(Handle,scSohDeliver,"SELECT DeliverName,DeliverCode FROM sdDeliver order by DeliverName","DeliverName","DeliverCode");
	FillComboBox(Handle,scSohTransMode,"SELECT TransModeCode,TransModeName FROM sdTransMode order by TransModeName","TransModeName","TransModeCode");

	//Sod
    FillEdit(Query,seSodUnit,"SELECT UnitCode,UnitName FROM sdUnit order by UnitName","UnitName","UnitCode");
    FillEdit(Query,seSodSptCode,"SELECT SptCode,SptName FROM sdSpt order by SptName","SptName","SptCode");

    scSohType->ClearAll();
    scSohType->AddItems("销售订单","1");
    scSohType->AddItems("来料加工订单","2");

    scSodState->ClearAll();
	scSodState->AddItems("预备","0");
	scSodState->AddItems("确认","1");
	scSodState->AddItems("待下达","2");
	scSodState->AddItems("已下达","3");
	scSodState->AddItems("已完成","4");
    scSohPayTrans->ClearAll();
    scSohPayTrans->AddItems("买方","0");
    scSohPayTrans->AddItems("卖方","1");
}
//---------------------------------------------------------------------------

void __fastcall TfrmSoh::ClearControl(int Section,bool BringToNext)
{
    if (Section == 1)
    {
       if (! BringToNext)
       {
		 seSohCode->Text 		= "";
         scSohType->LocateKey("1");
		 deSohDate->Text		= g_sdCurDate;
         seSohClient->ItemIndex = -1;
		 seSohContract->Text 	= "";
		 seSohEnrate->Text 		= "1";
		 seSohCurrency->ItemIndex=-1;
		 scSohTaxCode->ItemIndex =-1;
		 scSohSettleMode->ItemIndex =-1;
		 seSohSsite->ItemIndex 	= -1;
		 scSohTransMode->ItemIndex = -1;
		 scSohSaler->Text 		= "";
		 scSohUser->Text		= g_sdUserCode;
		 seSohDj->Text 			= "0.00";
		 cheSohCheck->Checked 	= false;
		 seSohChecker->Text		= "";
		 cheSohCancel->Checked 	= false;
		 cheSohClose->Checked 	= false;
		 lbSohSysDate->Caption	= "";
		 scSohPayTrans->ItemIndex= -1;
		 memSohDesc->Text 		= "";
	   }
	   sgSod->RowCount=1;
	}
	else if (Section==2)
	{
		if (!BringToNext)
		{
			seSodLine->Text			= AnsiString(comServer->ItemCount+1);
			seSodGoods->Text		= "";
			seSodGoodsName->Text 	= "";
			seSodUnit->ItemIndex	= -1;
			seSodConv->Text			= "1";
			seSodQty->Text 			= "0";
			seSodSptCode->ItemIndex	= -1;
			seSodPrice->Text		= "0";
			seSodAmt->Text			= "0.00";
			seSodTaxAmt->Text		= "0.00";
			seSodDisc->Text			= "0.00";
			seSodDAmt->Text			= "0.00";
			cheSodClose->Checked 	= false;
			deSodCloseDate->Text	= "";
			scSodState->ItemIndex	= 1;
			deSodSendDate->Text		= "";
			deSodRecDate->Text		="";
			seSodPoCode->Text		="";
			meSodDesc->Text			="";

			seSodPQty->Text			= "0";
			seSodSQty->Text			= "0";
			seSodBQty->Text			= "0";
			seSodFQty->Text			= "0";
			seSodEQty->Text			= "0";

			deSodSendDate->Text = DateToStr(Date());
			deSodRecDate->Text  = DateToStr(Date());
		}
	}
}
//---------------------------------------------------------------------------

void __fastcall TfrmSoh::GetDataFromComObject(int Section)
{
		if (Section==1)
		{
		   seSohCode->Text = GetHeadValue("SohCode");
		   scSohType->LocateKey(GetHeadValue("SohType"));
		   deSohDate->Text= GetHeadValue("SohDate");
		   seSohClient->LocateKey(GetHeadValue("SohClient"));
		   scSohSaler->Text=GetHeadValue("SohSaler");
		   seSohContract->Text = GetHeadValue("SohContract");
		   seSohCurrency->LocateKey(GetHeadValue("SohCurrency"));
		   if(seSohCurrency->ItemData[cbItem4]=="1")
			seSohEnrate->Enabled=false;
		   seSohEnrate->Text = GetHeadValue("SohEnrate");
		   scSohTaxCode->LocateKey(GetHeadValue("SohTaxCode"));
		   scSohSettleMode->LocateKey(GetHeadValue("SohSettleMode"));
		   scSohDeliver->LocateKey(GetHeadValue("SohDeliver"));
		   seSohSsite->LocateKey(GetHeadValue("SohSsite"));
		   scSohTransMode->LocateKey(GetHeadValue("SohTransMode"));
		   seSohDj->Text = GetHeadValue("SohDj");
		   cheSohCheck->Checked = GetHeadValue("SohCheck")=="1";
		   seSohChecker->Text=GetHeadValue("SohChecker");
		   cheSohCancel->Checked = GetHeadValue("SohCancel")=="1";
		   scSohPayTrans->LocateKey(GetHeadValue("SohPayTrans"));
		   cheSohClose->Checked = GetHeadValue("SohClose")=="1";
		   lbSohSysDate->Caption = GetHeadValue("SohSysDate");
		   scSohUser->Text=GetHeadValue("SohUser");
		   memSohDesc->Text = GetHeadValue("SohDesc");
		   SetCheckToolbarStatus(cheSohCheck->Checked);
		   SetCancelToolbarStatus(cheSohCancel->Checked);
		   SetCloseToolbarStatus(cheSohClose->Checked);
		}
		else
		{
			seSodLine->Text = GetDetailValue("SodLine");
			seSodGoods->Text=GetDetailValue("SodGoods");
			seSodGoodsName->Text =GetDetailValue("SodGoodsName");
			seSodGoodsSpec->Text =GetDetailValue("SodGoodsSpec");
			seSodUnit->LocateKey(GetDetailValue("SodUnit"));
			seSodConv->Text=GetDetailValue("SodConv");
			seSodQty->Text=GetDetailValue("SodQty");
			seSodSptCode->LocateKey(GetDetailValue("SodSptCode"));
			seSodPrice->Text=GetDetailValue("SodPrice");
			seSodDisc->Text=GetDetailValue("SodDisc");
            seSodAmt->Text=GetDetailValue("SodAmt");
            seSodTaxAmt->Text=GetDetailValue("SodTaxAmt");
            seSodDAmt->Text=GetDetailValue("SodDAmt");
            seSodSQty->Text=GetDetailValue("SodSQty");
            seSodPQty->Text=GetDetailValue("SodPQty");
            seSodBQty->Text=GetDetailValue("SodBQty");
			seSodFQty->Text=GetDetailValue("SodFQty");
            seSodEQty->Text=GetDetailValue("SodEQty");

            cheSodClose->Checked = GetDetailValue("SodClose")=="1";
            deSodCloseDate->Text=GetDetailValue("SodCloseDate");
			scSodState->ItemIndex=StrToInt(GetDetailValue("SodState"));
			deSodSendDate->Text=GetDetailValue("SodSendDate");
			deSodRecDate->Text=GetDetailValue("SodRecDate");
			seSodPoCode->Text=GetDetailValue("SodPoCode");
			SetCloseItemStatus(cheSodClose->Checked);
		}
}
//---------------------------------------------------------------------------

void __fastcall TfrmSoh::SendDataToComObject(int Section)
{

	   AnsiString s;
		if (Section==1)
		{

			if ( Trim(seSohCode->Text)=="" )
			   throw Exception("订单号不能为空!");
			if ( deSohDate->Text=="" )
			   throw Exception("订单日期不能为空!");
			if ( seSohClient->ItemData[cbItem2]=="" )
			   throw Exception("客户名称不能为空!");
			if ( seSohCurrency->ItemData[cbItem2]=="" )
			   throw Exception("币种不能为空!");
			if ( scSohTaxCode->ItemData[cbItem2]=="" )
			   throw Exception("税码不能为空!");
 			if(scSohSaler->Text=="" )
				throw Exception("业务员不能为空!");
			   
			
			SetHeadValue("SohCode",Trim(seSohCode->Text));
			SetHeadValue("SohType",scSohType->ItemData[cbItem2]);
			SetHeadValue("SohDate",deSohDate->Text);
			SetHeadValue("SohClient",seSohClient->ItemData[cbItem2]);
			SetHeadValue("SohSaler",scSohSaler->ItemData[cbItem2]);
			SetHeadValue("SohUser",g_sdUserCode/*scSohUser->Text*/);
			SetHeadValue("SohContract",seSohContract->Text);
			SetHeadValue("SohCurrency",seSohCurrency->ItemData[cbItem2]);
			SetHeadValue("SohEnrate",seSohEnrate->Text);
			SetHeadValue("SohTaxCode",scSohTaxCode->ItemData[cbItem2]);
			SetHeadValue("SohSettleMode",scSohSettleMode->ItemData[cbItem2]);
			SetHeadValue("SohDeliver",scSohDeliver->ItemData[cbItem2]);
			SetHeadValue("SohSsite",seSohSsite->ItemData[cbItem2]);
			SetHeadValue("SohTransMode",scSohTransMode->ItemData[cbItem2]);
			SetHeadValue("SohPayTrans",scSohPayTrans->ItemData[cbItem2]);
			SetHeadValue("SohDj",seSohDj->Text);
			SetHeadValue("SohDesc",memSohDesc->Text);

		}
		else
		{
			if(seSodGoods->Text.IsEmpty())
			   	throw Exception("货品编码不能为空!");
			if(seSodUnit->ItemData[cbItem2]=="")   
				throw Exception("计量单位不能为空!");
			if(seSodPrice->Text.IsEmpty())
				throw Exception("销售单价!");
			if(deSodSendDate->Text.IsEmpty())
				throw Exception("发货日期不能为空!");
			if(deSodRecDate->Text.IsEmpty())
				throw Exception("交货日不能为空");
			if(deSodRecDate->Text<deSodSendDate->Text)
				throw Exception("收货日期不应早于发货日期!");
			if(deSodSendDate->Text<deSohDate->Text)
				throw Exception("发货日期应在订单日期之后");

			CalculateAmt();
			SetDetailValue("SodCode",		seSohCode->Text);
			SetDetailValue("SodLine",		seSodLine->Text);
			SetDetailValue("SodGoods",		seSodGoods->Text);
			SetDetailValue("SodGoodsName",		seSodGoodsName->Text);
			SetDetailValue("SodGoodsSpec",		seSodGoodsSpec->Text);
			SetDetailValue("SodUnit",		seSodUnit->ItemData[cbItem2]);
			SetDetailValue("SodConv",		seSodConv->Text);
			SetDetailValue("SodSptCode",seSodSptCode->ItemData[cbItem2]);
			SetDetailValue("SodQty",seSodQty->Text);
			SetDetailValue("SodPrice",seSodPrice->Text);
			SetDetailValue("SodAmt",seSodAmt->Text);
			SetDetailValue("SodTaxAmt",seSodTaxAmt->Text);
			SetDetailValue("SodDisc",seSodDisc->Text);
			SetDetailValue("SodDAmt",seSodDAmt->Text);
			SetDetailValue("SodSendDate",deSodSendDate->Text);
			SetDetailValue("SodRecDate",deSodRecDate->Text);
			SetDetailValue("SodPoCode",seSodPoCode->Text);
            SetDetailValue("SodDesc",meSodDesc->Text);
			SetDetailValue("SodState",scSodState->ItemData[cbItem2]);

         }
}
//---------------------------------------------------------------------------

void __fastcall TfrmSoh::WaitUserInput(int Section)
{
       if (Section ==1)
		 {
          FloatPanel1->Enabled=true;
          if(seSohCode->Enabled)
             seSohCode->SetFocus();
         }
       else
       {
          sgSod->Visible=false;
		  sgSod->Align=alNone;
          FloatPanel2->Visible=true;
          FloatPanel2->Align=alClient;
          if(seSodGoods->Enabled)
            seSodGoods->SetFocus();
       }
}
//---------------------------------------------------------------------------

void __fastcall TfrmSoh::RefreshGridData(int mAction)

⌨️ 快捷键说明

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