arivh.cpp

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

CPP
807
字号
//---------------------------------------------------------------------------
#include <vcl.h>
#include "Arivh.h"
#include "Arivd_F.h"  //销售发货生成
#include "Arivd_T.h"  //销售退货生成
#include "Arivd_P.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"

TfrmArivh *frmArivh;
//---------------------------------------------------------------------------
__fastcall TfrmArivh::TfrmArivh(TComponent* Owner, HWND chWnd, AnsiString MidCode,AnsiString WhereStr)
        : TGenBaseForm(Owner,chWnd,MidCode,WhereStr)
{
SetAutoCodeString(seArivhCode,"Acm-61");
// AutoCtl=seArivhCode;
}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
void __fastcall TfrmArivh::sgArivdSelectCell(TObject *Sender, int ACol,
      int ARow, bool &CanSelect)
{
    if (ARow == 0)
    {
       return;
    }
    comServer->LocateItemByKey(seArivhCode->Text+"\t"+sgArivd->TextMatrix[ARow][1]);
    GetDataFromComObject(2);
}
//---------------------------------------------------------------------------

void __fastcall TfrmArivh::sgArivdDblClick(TObject *Sender)
{
    int iRow;
    iRow=sgArivd->Row;
    if (iRow == 0)
    {
       return;
    }
    if (comServer->ItemCount >0)
    {
       GetDataFromComObject(2);
       sgArivd->Visible=false;
       FloatPanel2->Visible=true;
    }
}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------

void __fastcall TfrmArivh::btnOKClick(TObject *Sender)
{

   if ((CurrentState==caAddDetail)||(CurrentState==caAddBill))
       {
         try
         {
          if(DetailState==caAddDetail)
            comServer->AddItem();
           SendDataToComObject(2);
           comServer->AddToObject();
           ClearControl(2,false);
          }
        catch(Exception &e)
        {
         throw Exception(e.Message);
        }
       }
       else
       ChangeToBrowseState(false);
}
//---------------------------------------------------------------------------

void __fastcall TfrmArivh::btnCancelClick(TObject *Sender)
{
        CancelChange();
}
//---------------------------------------------------------------------------
void __fastcall TfrmArivh::FormShow(TObject *Sender)
{
       ClearControl(1,false);
       ClearControl(2,false);
       TGenBaseForm::MoveToFirst();
       ChangeToBrowseState(true);
}
//---------------------------------------------------------------------------
void __fastcall TfrmArivh::InitEditControl()
{
    ClientGroup->AddComponent(1,false,false,true, FloatPanel1,FloatPanel1->Name);
    ClientGroup->AddComponent(1,false,true,false, seArivhCode,seArivhCode->Name);
    ClientGroup->AddComponent(1,true,true,true, GroupBox4,GroupBox4->Name);
    ClientGroup->AddComponent(1,false,true,true, scArivhClient,scArivhClient->Name);
    ClientGroup->AddComponent(1,true,true,true, scArivdDocType,scArivdDocType->Name);
    ClientGroup->AddComponent(1,false,true,true, scArivhCurrency,scArivhCurrency->Name);
    ClientGroup->AddComponent(1,true,true,true, seArivhFmonth,seArivhFmonth->Name);

    ClientGroup->AddComponent(2,false,false,true,FloatPanel2,FloatPanel2->Name);
    ClientGroup->AddComponent(2,false,false,false,btnCancel,btnCancel->Name);
    ClientGroup->AddComponent(2,false,true,true,btnOK,btnOK->Name);
  //  ClientGroup->AddComponent(2,true,true,true, seArivdDocCode,seArivdDocCode->Name);
    ClientGroup->AddComponent(2,true,true,true, seArivdDocLine,seArivdDocLine->Name);
    ClientGroup->AddComponent(2,true,true,true, GroupBox2,GroupBox2->Name);
    ClientGroup->AddComponent(2,true,true,true, GroupBox3,GroupBox3->Name);

    scArivdDocType->ClearAll();
    scArivdDocType->AddItems("<不生成 >","0");
    scArivdDocType->AddItems("1-销售发货单","1");
    scArivdDocType->AddItems("2-销售退货单","2");
   // scArivdDocType->AddItems("3-应收发票","3");

    AnsiString sSql;
    sSql =AnsiString("select currencycode,currencyname+'-'+currencycode memo,currencyrate=coalesce(rateratio,1),currencylocal from sdcurrency,sdrate");
    sSql+=" where currencycode*=ratecurrency and ";
    sSql+=" ratefmonth='"+g_sdFMonth+"'";
    sSql+=" order by currencylocal desc ";
    FillComboBox(Handle,scArivhCurrency,sSql,"memo","CurrencyCode","CurrencyRate","CurrencyLocal");
    FillComboBox(Handle,scArivhClient,"select ClientName Memo,ClientCode from sdClient order by ClientCode" ,"Memo","ClientCode");

    FillEdit(Handle,seArivdArlt,"select ArltName Memo,ArltCode,ArltFrom from sdArlt order by ArltCode" ,"Memo","ArltCode","ArltFrom");
    FillComboBox(Handle,scArivdUnit,"select UnitCode+'-'+UnitName Memo,UnitCode from sdUnit order by UnitCode" ,"Memo","UnitCode");
    FillComboBox(Handle,scArivdTaxCode,"select TaxName Memo,TaxCode,TaxRate from sdTax order by TaxCode" ,"Memo","TaxCode","TaxRate");

}
//---------------------------------------------------------------------------
void __fastcall TfrmArivh::ClearControl(int Section,bool BringToNext)
{
    if (Section == 1)
    {
       if (! BringToNext)
       {
          seArivhCode->Text="";
          seArivhFmonth->Text=g_sdFMonth;
          deArivhDate->Text=g_sdCurDate;
          scArivhClient->ItemIndex=-1;

          scArivdDocType->ItemIndex=1;

          scArivhCurrency->ItemIndex=-1;
          seArivhEnrate->Text="1";
          chkArivhRed->Checked=false;
          memArivhDesc->Text="";
          deArivhRDate->Text="";
          lblArivhUser->Caption=g_sdUserCode;
          chkArivhCheck->Checked=false;
          lblArivhChecker->Caption="";
//       lblArivhCheckDate->Caption="";

          SetCheckToolbarStatus(false);
       }
       sgArivd->RowCount=1;
     }
    else if (Section==2)
    {
       if (! BringToNext)
       {
//          if(comServer->RecordCount > 0)
          seArivdLine->Text=AnsiString(comServer->ItemCount+1);
//          else
//           seArivdLine->Text="1";
          seArivdArlt->ItemIndex=-1;
          seArivdArlt->Text="";
          seArivdDocCode->Text="";
          seArivdDocLine->Text="0";
          seArivdGoods->Text="";
          scArivdUnit->ItemIndex=-1;
          seArivdQty->Text="0.00";
          seArivdPrice->Text="0.00";
          scArivdTaxCode->ItemIndex=-1;
          seArivdTRate->Text="0.00";
          seArivdTAmt->Text="0.00";
          seArivdNAmt->Text="0.00";
          seArivdAmt->Text="0.00";
          seArivdDRate->Text="0.00";
          seArivdDAmt->Text="0.00";
          seArivdCAmt->Text="0.00";
          seArivdRAmt->Text="0.00";
          seArivdPzCode->Text="";
          seArivdBAmt->Text="0.00";
          rbtArivdFrom_Input->Checked=true;
          rbtArivdFrom_Create->Checked=false;
          memArivdDesc->Text="";
       }
    }
}
//---------------------------------------------------------------------------
void __fastcall TfrmArivh::GetDataFromComObject(int Section)
{
    if (Section == 1)
    {
       seArivhCode->Text=GetHeadValue("ArivhCode");
       seArivhFmonth->Text=GetHeadValue("ArivhFmonth");
       deArivhDate->Text=GetHeadValue("ArivhDate");
       scArivhClient->LocateKey(GetHeadValue("ArivhClient"));

       scArivdDocType->LocateKey(GetDetailValue("ArivdDocType"));

       scArivhCurrency->LocateKey(GetHeadValue("ArivhCurrency"));
       seArivhEnrate->Text=GetHeadValue("ArivhEnrate");
       chkArivhRed->Checked=(GetHeadValue("ArivhRed")=="-1"?true:false);
       memArivhDesc->Text=GetHeadValue("ArivhDesc");
       deArivhRDate->Text=GetHeadValue("ArivhRDate");
       lblArivhUser->Caption=GetHeadValue("ArivhUser");
       chkArivhCheck->Checked=(GetHeadValue("ArivhCheck")=="1");
       lblArivhChecker->Caption=GetHeadValue("ArivhChecker");
//       lblArivhCheckDate->Caption=GetHeadValue("ArivhCheckDate");

       if((GetHeadValue("ArivhCheck")=="1"))
        SetCheckToolbarStatus(true);
       else
        SetCheckToolbarStatus(false);
    }
    else
    {
      seArivdLine->Text=GetDetailValue("ArivdLine");
      seArivdArlt->LocateKey(GetDetailValue("ArivdArlt"));
      scArivdDocType->Text=GetDetailValue("ArivdDocType");
      scArivdDocType->LocateKey(GetDetailValue("ArivdDocType"));
      seArivdDocCode->Text=GetDetailValue("ArivdDocCode");
      seArivdDocLine->Text=GetDetailValue("ArivdDocLine");
      seArivdGoods->Text=GetDetailValue("ArivdGoods");
      scArivdUnit->LocateKey(GetDetailValue("ArivdUnit"));
      seArivdQty->Text=GetDetailValue("ArivdQty");
      seArivdPrice->Text=GetDetailValue("ArivdPrice");
      scArivdTaxCode->LocateKey(GetDetailValue("ArivdTaxCode"));
      seArivdTRate->Text=GetDetailValue("ArivdTRate");
      seArivdTAmt->Text=GetDetailValue("ArivdTAmt");
      seArivdNAmt->Text=GetDetailValue("ArivdNAmt");
      seArivdAmt->Text=GetDetailValue("ArivdAmt");
      seArivdDRate->Text=GetDetailValue("ArivdDRate");
      seArivdDAmt->Text=GetDetailValue("ArivdDAmt");
      seArivdCAmt->Text=GetDetailValue("ArivdCAmt");
      seArivdRAmt->Text=GetDetailValue("ArivdRAmt");
      seArivdPzCode->Text=GetDetailValue("ArivdPzCode");
      seArivdBAmt->Text=GetDetailValue("ArivdBAmt");
      rbtArivdFrom_Input->Checked=(GetDetailValue("ArivdFrom")=="1");
      rbtArivdFrom_Create->Checked=(GetDetailValue("ArivdFrom")=="2");
      memArivdDesc->Text=GetDetailValue("ArivdDesc");
    }
}
//---------------------------------------------------------------------------
void __fastcall TfrmArivh::SendDataToComObject(int Section)
{
        if (Section==1)
        {
         SetHeadValue("ArivhCode",seArivhCode->Text);
         SetHeadValue("ArivhFmonth",seArivhFmonth->Text);
         SetHeadValue("ArivhDate",deArivhDate->Text);
         SetHeadValue("ArivhClient",scArivhClient->ItemData[cbItem2]);
         SetHeadValue("ArivhCurrency",scArivhCurrency->ItemData[cbItem2]);
         SetHeadValue("ArivhEnrate",seArivhEnrate->Text);
         SetHeadValue("ArivhRed",(chkArivhRed->Checked?"-1":"1"));
         SetHeadValue("ArivhDesc",memArivhDesc->Text);
         SetHeadValue("ArivhRDate",deArivhRDate->Text);
         SetHeadValue("ArivhUser",lblArivhUser->Caption);
        }
        else
        {
         //计算发票行各金额
         CalculateAmt();

         SetDetailValue("ArivdCode",seArivhCode->Text);
         SetDetailValue("ArivdLine",seArivdLine->Text);
         SetDetailValue("ArivdArlt",seArivdArlt->ItemData[cbItem2]);
         SetDetailValue("ArivdDocType",scArivdDocType->ItemData[cbItem2]);
         SetDetailValue("ArivdDocCode",seArivdDocCode->Text);
         SetDetailValue("ArivdDocLine",seArivdDocLine->Text);
         SetDetailValue("ArivdGoods",seArivdGoods->Text);
         SetDetailValue("ArivdUnit",scArivdUnit->ItemData[cbItem2]);
         SetDetailValue("ArivdQty",seArivdQty->Text);
         SetDetailValue("ArivdPrice",seArivdPrice->Text);
         SetDetailValue("ArivdDRate",seArivdDRate->Text);
         SetDetailValue("ArivdDAmt",seArivdDAmt->Text);
         SetDetailValue("ArivdNAmt",seArivdNAmt->Text);
         SetDetailValue("ArivdTaxCode",scArivdTaxCode->ItemData[cbItem2]);
         SetDetailValue("ArivdTRate",seArivdTRate->Text);
         SetDetailValue("ArivdTAmt",seArivdTAmt->Text);
         SetDetailValue("ArivdAmt",seArivdAmt->Text);

         SetDetailValue("ArivdCAmt",seArivdCAmt->Text);
         SetDetailValue("ArivdPzCode",seArivdPzCode->Text);
         SetDetailValue("ArivdBAmt",seArivdBAmt->Text);
         SetDetailValue("ArivdRAmt",seArivdRAmt->Text);

         SetDetailValue("ArivdState","0");
         SetDetailValue("ArivdFrom",(rbtArivdFrom_Input->Checked?"1":"2"));
         SetDetailValue("ArivdDesc",memArivdDesc->Text);

         SetDetailValue("ArivdCAmt","0");
         SetDetailValue("ArivdRAmt","0");
         SetDetailValue("ArivdBAmt","0");
        }
}
//---------------------------------------------------------------------------
void __fastcall TfrmArivh::WaitUserInput(int Section)
{
       if (Section ==1)
         {
          if(seArivhCode->Enabled)
             seArivhCode->SetFocus();
         }
       else
       {
          sgArivd->Visible=false;
          FloatPanel2->Visible=true;
          if(seArivdArlt->ItemData[2] != "1") //行类型不是"产品",直接录入费用金额
          {
           seArivdNAmt->ReadOnly=false;
           GroupBox1->Enabled=false;
          }
          else
          {
           seArivdNAmt->ReadOnly=true;
           GroupBox1->Enabled=true;
          }
          if(seArivdArlt->Enabled)
            seArivdArlt->SetFocus();
       }
}
//---------------------------------------------------------------------------
void __fastcall TfrmArivh::RefreshGridData(int mAction)
{
        AnsiString ItemStr;
        ItemStr = GetItemStringToGrid();
        switch(mAction)
        {
           case 0:
             sgArivd->AddItem(ItemStr);
             break;
           case 1:
             sgArivd->ChangeItem(ItemStr,sgArivd->Row);
             break;
           case 2:
             sgArivd->RemoveItem(sgArivd->Row);
             break;
           default:
             break;
        }
}
//---------------------------------------------------------------------------
AnsiString __fastcall TfrmArivh::GetItemStringToGrid()
{
    seArivdArlt->LocateKey(GetDetailValue("ArivdArlt"));
    AnsiString s_ItemStr;
    s_ItemStr ="\t"+GetDetailValue("ArivdLine")+
               "\t"+seArivdArlt->ItemData[0]+
               "\t"+GetDetailValue("ArivdDocCode")+
               "\t"+GetDetailValue("ArivdDocLine")+
               "\t"+GetDetailValue("ArivdGoods")+
               "\t"+GetDetailValue("ArivdUnit")+
               "\t"+GetDetailValue("ArivdQty")+
               "\t"+GetDetailValue("ArivdTAmt")+
               "\t"+GetDetailValue("ArivdAmt")+
               "\t"+GetDetailValue("ArivdRAmt")+
               "\t"+(GetDetailValue("ArivdFrom")=="1"?"录入":"生成");
     return s_ItemStr;
}
//---------------------------------------------------------------------------
void __fastcall TfrmArivh::DisplayBill()
{
       if(comServer->RecordCount<1)
         return;
        GetDataFromComObject(1);
        ChangeToBrowseState(true);
        FillGridWithData();
}
//---------------------------------------------------------------------------
void __fastcall TfrmArivh::GetBill(AnsiString BillID)
{
       if(comServer->Find("ArivhCode='"+BillID+"'"))
       {
           DisplayBill();
       }
       else
    if (ShowMessageWindow("在数据库中没有查到记录:"+BillID+",要增加吗?",mwsConfirmation)==IDYES)
       {
           AddHeadRecord();
       }
}
//---------------------------------------------------------------------------
void __fastcall TfrmArivh::FillGridWithData()
{
      AnsiString ItemStr;
      sgArivd->RowCount=1;
      if(comServer->RecordCount<1)
       return;
      for (int i=0;i<comServer->ItemCount;i++)
      {
          comServer->LocateItemByIndex(i);
          RefreshGridData(0);
      }
      comServer->LocateItemByIndex(0);
}
//---------------------------------------------------------------------------
void __fastcall TfrmArivh::GenrateBill()
{

⌨️ 快捷键说明

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