⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pretd.cpp

📁 速达开源ERP系统
💻 CPP
字号:
//--------------------------------------------------------------------------
#include <vcl.h>
#include "Pretd.h"
#include "Preth.h"
#include "wnquery.h"
#include "func.h"
//--------------------------------------------------------------------------
#pragma hdrstop
#pragma package(smart_init)
#pragma link "fpanel"
#pragma link "SDEdit"
#pragma link "SDGrid"
#pragma link "SDComboBox"
#pragma resource "*.dfm"

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

void __fastcall TfrmPretd::btnOKClick(TObject *Sender)
{
  double FVal,FPrice,FQty,FTax,FAmt;
  int ErrNum;
  try
  {
    StartWaitForm("正在生成退货单,请稍候...");
    if(sgPretd->RowCount>1)
    {
     int j;
     j=comServer->ItemCount-1;
     if(j>=0)
     {
        comServer->LocateItemByIndex(j);
        j=StrToInt(frmPreth->GetDetailValue(fiPretdLine));
        j=j+1;
     }
     else
        j=1;
     try
     {
       for(int i=1;i<sgPretd->RowCount;i++)
       {
           if(sgPretd->Cells[1][i]=="√")
           {
               comServer->AddItem();
               SetDetailValue(fiPretdCode,frmPreth->sePrethCode->Text);
               SetDetailValue(fiPretdLine,AnsiString(j));
               SetDetailValue(fiPretdPrecCode,sePretdPrecCode->Text);
               SetDetailValue(fiPretdPrecdLine, sgPretd->Cells[2][i]);
               SetDetailValue(fiPretdGoods, sgPretd->Cells[3][i]);
               SetDetailValue(fiPretdUnit, sgPretd->Cells[4][i]);
               SetDetailValue(fiPretdConv, sgPretd->Cells[5][i]);
               if(sgPretd->Cells[7][i] == "")
                throw Exception("请输入退货数量");
               SetDetailValue(fiPretdQty, sgPretd->Cells[7][i]);
               if(sgPretd->Cells[8][i] == "")
                throw Exception("请输入退货单价");
               SetDetailValue(fiPretdPrice, sgPretd->Cells[8][i]);
               FQty=sgPretd->Cells[7][i].ToDouble();
               FPrice=sgPretd->Cells[8][i].ToDouble();
               FVal=(FQty*FPrice)/(1+FPrethTaxRate);
               FAmt=DataCarry(FVal,2,0);
               FTax=DataCarry(FVal*FPrethTaxRate,2,0);
               SetDetailValue(fiPretdAmt,AnsiString(FAmt));
               SetDetailValue(fiPretdTaxAmt,AnsiString(FTax));
               SetDetailValue(fiPretdLoc, sgPretd->Cells[9][i]);
               SetDetailValue(fiPretdBatch, sgPretd->Cells[10][i]);
               SetDetailValue(fiPretdSo, sgPretd->Cells[11][i]);
               SetDetailValue(fiPretdSodLine, sgPretd->Cells[12][i]);
               SetDetailValue(fiPretdState, "1");
               comServer->AddToObject();
               j=j+1;
           }
       }
     }
     catch(Exception &e)
     {
      comServer->Cancel();
      this->ModalResult=0;
      throw Exception(e.Message);
     }
    }
  }
  __finally
  {
    EndWaitForm();
  }
  Close();
}
//---------------------------------------------------------------------------
void __fastcall TfrmPretd::btnCancelClick(TObject *Sender)
{
    Close();
}
//---------------------------------------------------------------------------
void __fastcall TfrmPretd::InitControlGroup()
{
    sgPretd->RowCount = 1;
    sePretdPrecCode->Text="";
    sePrethSupply->Text=frmPreth->sePrethSupply->Text;
    sePrethSupply->Enabled=false;
    FPrethSupply=frmPreth->sePrethSupply->ItemData[cbItem2];
    sePrethCurrency->Text=frmPreth->sePrethCurrency->Text;
    sePrethCurrency->Enabled=false;
    FPrethCurrency=frmPreth->sePrethCurrency->ItemData[cbItem2];
    sePrethRate->Text=frmPreth->sePrethEnrate->Text;
    sePrethTax->Text=frmPreth->scPrethTaxCode->Text;
    sePrethTax->Enabled=false;
    FPrethTax=frmPreth->scPrethTaxCode->ItemData[cbItem2];
    if(frmPreth->scPrethTaxCode->ItemData[cbItem3] == "")
     FPrethTaxRate=0;
    else
     FPrethTaxRate=frmPreth->scPrethTaxCode->ItemData[cbItem3].ToDouble();
}
//---------------------------------------------------------------------------

void __fastcall TfrmPretd::FillGridWithData()
{

    AnsiString  ItemStr,s_SQL;
    double d_PrecdQty;
    s_SQL=AnsiString(" Select PrecdLine,PrecdGoods,PrecdUnit,PrecdConv,precdQty=PrecdQty-PrecdBQty,")
         +AnsiString(" PrecdLoc,PrecdBatch,PrecdSo,PrecdSodLine,PrecdPrice from sdPrecd where PrecdCode='"+sePretdPrecCode->Text+"'")
         +AnsiString(" and PrecdClose = 0 and PrecdQty-PrecdBQty>0 order by precdline");

    sgPretd->RowCount=1;
    TComResultSet *RsPretd;
    try
    {
      StartWaitForm("正在查询数据,请稍候......");
      RsPretd=NewResultSet();
      RsPretd->Open(WideString(s_SQL),WideString(""));
      sgPretd->RowCount=1;
      while( RsPretd->Eof == 0)
      {
       d_PrecdQty=StrToFloat(RsPretd->FieldByName("PrecdQty"));
       if(d_PrecdQty > 0)
       {
         ItemStr="\t"+AnsiString("") +
                 "\t"+RsPretd->FieldByName("PrecdLine")+
                 "\t"+RsPretd->FieldByName("PrecdGoods")+
                 "\t"+RsPretd->FieldByName("PrecdUnit")+
                 "\t"+RsPretd->FieldByName("PrecdConv")+
                 "\t"+RsPretd->FieldByName("PrecdQty")+
                 "\t"+RsPretd->FieldByName("PrecdQty")+
                 "\t"+RsPretd->FieldByName("PrecdPrice")+
                 "\t"+RsPretd->FieldByName("PrecdLoc")+
                 "\t"+RsPretd->FieldByName("PrecdBatch")+
                 "\t"+RsPretd->FieldByName("PrecdSo")+
                 "\t"+RsPretd->FieldByName("PrecdSodLine");
         sgPretd->AddItem(ItemStr);
       }
       RsPretd->MoveNext();
      }
      RsPretd->Close();
    }
    __finally
    {
      EndWaitForm();
    }
    delete RsPretd;
}
//---------------------------------------------------------------------------
void __fastcall TfrmPretd::GetComObject(TComServer *comServerPtr)
{
    comServer = comServerPtr;
}
//---------------------------------------------------------------------------
void __fastcall TfrmPretd::SetDetailValue(int Index,AnsiString Value)
{
     WriteItemValue(comServer,Index,Value);
}
//---------------------------------------------------------------------------
void __fastcall TfrmPretd::sgPretdDblClick(TObject *Sender)
{
    AnsiString SqlStr;
    int ARow=sgPretd->Row;
    if (ARow >0)
    {
      if(sgPretd->Col==1)
      {
        if (sgPretd->Cells[1][ARow] == "√")
        {
         sgPretd->Cells[1][ARow] =  "";
         for (int i=1;i<sgPretd->RowCount;i++)
         {
            if(sgPretd->Cells[1][i]=="√")
            {
               btnOK->Enabled=true;
               break;
            }
            else
               btnOK->Enabled=false;
         }
        }
        else
        {
          sgPretd->Cells[1][ARow] =  "√";
          btnOK->Enabled = true;
        }
      }
      else if(sgPretd->Col==9 && sgPretd->Cells[1][ARow] == "√")
      {
        SqlStr="002[货位代码][货位名称]select loccode,locname from sdLoc,sdlg ";
        SqlStr+=" where lgLoccode=loccode and lggoodscode='"+sgPretd->Cells[3][ARow]+"' order by loccode";
        TfrmWnQuery *p;
        try
        {
          StartWaitForm("正在查询,请稍候...");
          p=new TfrmWnQuery(this,"货位查询",SqlStr);
        }
        __finally
        {
          EndWaitForm();
        }
        if(p->ShowModal()==mrOk)
        {
          sgPretd->Cells[9][ARow]=p->ColData[1];
        }
        delete p;
      }
    }
}

//---------------------------------------------------------------------------

void __fastcall TfrmPretd::bbSelAllClick(TObject *Sender)
{
  if(sgPretd->RowCount <=1 )
   return;
  for(int i=1;i<sgPretd->RowCount;i++)
    sgPretd->Cells[1][i] = "√";
  btnOK->Enabled = true;

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

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


void __fastcall TfrmPretd::sePretdPrecCodeButtonClick(TObject *Sender)
{
  AnsiString SqlStr;
  SqlStr="005[收货单号][收货日期][币种][税码][收货员]select prechcode,prechdate,currencyname,taxname,prechUser from sdprech,sdCurrency,sdtax";
  SqlStr+=" where prechcurrency=currencycode and prechtaxcode=taxcode and prechcheck=1 and prechclose=0 and prechcancel=0 ";
  SqlStr+=" and prechsupply='"+FPrethSupply+"' and prechcurrency='"+FPrethCurrency+"' ";
  if(cbSameTax->Checked)
    SqlStr+=" and prechtaxCode='"+FPrethTax+"' order by prechcode";
  else
    SqlStr+=" order by prechcode";
  TfrmWnQuery *p;
  try
  {
    StartWaitForm("正在查询,请稍候...");
    p=new TfrmWnQuery(this,"收货单查询",SqlStr);
  }
  __finally
  {
    EndWaitForm();
  }
  if(p->ShowModal()==mrOk)
  {
    sePretdPrecCode->Text=p->ColData[1];
    FillGridWithData();
  }
  delete p;  
}
//---------------------------------------------------------------------------

void __fastcall TfrmPretd::sgPretdSelectCell(TObject *Sender, int ACol,
      int ARow, bool &CanSelect)
{
 if(sgPretd->Cells[1][ARow]=="√")
  sgPretd->ReadOnly=false;
 else
  sgPretd->ReadOnly=true;
}
//---------------------------------------------------------------------------

⌨️ 快捷键说明

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