telsale-management/代码/telsale_aux_kit/source/QTelSalePolicyInfoInputWidg...

411 lines
12 KiB
C++

#include <QtWidgets/QtWidgets>
#include "QTelSalePolicyInfoInputWidget.h"
#include "QRapidInputWidget.h"
#include "SystemDataQuery.h"
#include "SystemData.h"
QTelSalePolicyInfoInputWidget::QTelSalePolicyInfoInputWidget(QWidget *parent)
: QWidget(parent)
{
setupUi(this);
init();
initWidget();
initSignal();
initData();
}
QTelSalePolicyInfoInputWidget::~QTelSalePolicyInfoInputWidget()
{
}
void QTelSalePolicyInfoInputWidget::init()
{
}
void QTelSalePolicyInfoInputWidget::initWidget()
{
setLayout( pLayoutMain );
//单笔录入窗口
pTabWidget->widget( 0 )->setLayout( pLayoutInputMain );
pScrollAreaInput->setWidget( pWidgetInput );
pWidgetInput->setLayout( pLayoutInfoDetail );
pWidgetInput->setMaximumWidth( 820 );
pWidgetInput->setMinimumWidth( 820 );
//批量录入
QRapidInputWidget * pWidgetRapid = new QRapidInputWidget;
pScrollAreaRapid->setWidget( pWidgetRapid );
pTabWidget->widget( 1 )->setLayout( pLayoutRapid );
}
void QTelSalePolicyInfoInputWidget::initSignal()
{
connect( pEditSalerCode, SIGNAL(editingFinished()), this, SLOT(onQuerySalerName()));
connect( pEditSalerCode, SIGNAL(textChanged(const QString &)), this, SLOT(onSalerCodeChanged()) );
connect( pEditAutoTraderCode, SIGNAL(editingFinished()), this, SLOT(onQueryAutoTraderName()));
connect( pEditAutoTraderCode, SIGNAL(textChanged(const QString &)), this, SLOT(onAutoTraderCodeChanged()) );
connect( pButtonSave, SIGNAL(clicked()), this, SLOT(onSavePolicy()) );
connect( pButtonResetGift, SIGNAL(clicked()), this, SLOT(onResetGiftsTable()) );
connect( pButtonReset, SIGNAL(clicked()), this, SLOT(onReset()) );
connect( pTableGifts, SIGNAL(cellChanged(int,int)), this, SLOT(onGiftTableItemChanged(int, int)) );
}
void QTelSalePolicyInfoInputWidget::initData()
{
//默认的车商代码
pEditAutoTraderCode->setText( QString::fromLocal8Bit(parameters.getParameter("默认车商代码").c_str() ));
emit pEditAutoTraderCode->editingFinished();
//初始化礼品列表
InitGiftTable();
pEditQjxPolicySerial->clear();
pEditBizPolicySerial->clear();
pEditSalerCode->clear();
pEditSalerName->clear();
pEditDeptCode->clear();
pEditDeptName->clear();
pEditOfficeCode->clear();
pEditOfficeName->clear();
pComboBoxAutotraderCall->setCurrentIndex( 0 );
}
void QTelSalePolicyInfoInputWidget::InitGiftTable()
{
//设置标志位
m_initing = true;
m_giftsList.clear();
try
{
queryTelsalePolicyGifts( m_giftsList );
}
catch ( runtime_error &error )
{
QMessageBox::critical( this, "获取礼品列表出错!", error.what() );
return;
}
pTableGifts->clearContents();
pTableGifts->setColumnWidth( 0, 200 );
pTableGifts->setRowCount( m_giftsList.size() + 2 );
vector<TelSalePolicyGift>::iterator iter = m_giftsList.begin();
for ( unsigned int rowIndex = 0; iter != m_giftsList.end(); rowIndex++ )
{
QTableWidgetItem *pItem = new QTableWidgetItem();
pItem->setCheckState( Qt::Unchecked );
pItem->setFlags(Qt::ItemIsUserCheckable | Qt::ItemIsEnabled );
pItem->setText( QString::fromLocal8Bit(iter->GiftName().c_str()) );
pItem->setTextAlignment( Qt::AlignLeft | Qt::AlignVCenter );
pTableGifts->setItem( rowIndex, 0, pItem );
pItem = new QTableWidgetItem();
pItem->setFlags( Qt::ItemIsEnabled | Qt::ItemIsEditable );
pItem->setText( QString::fromLocal8Bit(iter->GiftDefaultPrice().c_str()) );
pItem->setTextAlignment( Qt::AlignHCenter | Qt::AlignVCenter );
pTableGifts->setItem( rowIndex, 1, pItem );
++iter;
}
//其他
QTableWidgetItem * pItemOther = new QTableWidgetItem();
QTableWidgetItem * pItemOtherPrice = new QTableWidgetItem();
pItemOther->setText( QString::fromLocal8Bit("其他") );
pItemOther->setCheckState( Qt::Unchecked );
pItemOther->setFlags(Qt::ItemIsUserCheckable | Qt::ItemIsEnabled );
pItemOther->setTextAlignment( Qt::AlignLeft | Qt::AlignVCenter );
pItemOtherPrice->setText( "0" );
pItemOtherPrice->setFlags( Qt::ItemIsEnabled | Qt::ItemIsEditable );
pItemOtherPrice->setTextAlignment( Qt::AlignHCenter | Qt::AlignVCenter );
pTableGifts->setItem( m_giftsList.size(), 0, pItemOther );
pTableGifts->setItem( m_giftsList.size(), 1, pItemOtherPrice );
//礼品总价值
QTableWidgetItem * pItemTotalPrice = new QTableWidgetItem();
QTableWidgetItem * pItemTotalPriceAmount = new QTableWidgetItem();
pItemTotalPrice->setText( QString::fromLocal8Bit("礼品总价值") );
pItemTotalPrice->setTextColor( Qt::red );
pItemTotalPrice->setFlags( Qt::ItemIsEnabled );
pItemTotalPrice->setTextAlignment( Qt::AlignHCenter | Qt::AlignVCenter );
pItemTotalPriceAmount->setText( QString::fromLocal8Bit("0 元") );
pItemTotalPriceAmount->setTextColor( Qt::red );
pItemTotalPriceAmount->setFlags( Qt::ItemIsEnabled );
pItemTotalPriceAmount->setTextAlignment( Qt::AlignHCenter | Qt::AlignVCenter );
pTableGifts->setItem( m_giftsList.size() + 1, 0, pItemTotalPrice );
pTableGifts->setItem( m_giftsList.size() + 1, 1, pItemTotalPriceAmount );
pTableGifts->resizeColumnsToContents();
m_initing = false;
}
void QTelSalePolicyInfoInputWidget::readGiftTable(vector<TelSalePolicyGift> & giftList)
{
int rowCount = pTableGifts->rowCount();
for ( int rowIndex = 0; rowIndex < rowCount; rowIndex++ )
{
QTableWidgetItem * pItemName = pTableGifts->item( rowIndex, 0 );
QTableWidgetItem * pItemPrice = pTableGifts->item( rowIndex, 1 );
if ( pItemName->checkState() == Qt::Unchecked )
{
continue;
}
TelSalePolicyGift gift( rowIndex, string(pItemName->text().toLocal8Bit().data()), string( pItemPrice->text().toLocal8Bit().data() ));
giftList.push_back( gift );
}
}
void QTelSalePolicyInfoInputWidget::onSalerCodeChanged()
{
pEditSalerName->clear();
pEditDeptName->clear();
pEditDeptCode->clear();
pEditOfficeName->clear();
pEditOfficeCode->clear();
m_strSalerCode.clear();
m_strSalerName.clear();
m_strSalerDeptCode.clear();
m_strSalerDeptName.clear();
}
void QTelSalePolicyInfoInputWidget::onQuerySalerName()
{
m_strSalerCode = pEditSalerCode->text().trimmed().toUpper().toLocal8Bit().data();
queryStaffInfo( m_strSalerCode, m_strSalerName, m_strSalerDeptCode, m_strSalerDeptName, m_strSalerOfficeCode, m_strSalerOfficeName );
pEditSalerName->setText( QString::fromLocal8Bit( m_strSalerName.c_str() ));
pEditOfficeCode->setText( QString::fromLocal8Bit( m_strSalerOfficeCode.c_str() ));
pEditOfficeName->setText( QString::fromLocal8Bit( m_strSalerOfficeName.c_str() ));
pEditDeptCode->setText( QString::fromLocal8Bit( m_strSalerDeptCode.c_str() ));
pEditDeptName->setText( QString::fromLocal8Bit( m_strSalerDeptName.c_str() ));
}
void QTelSalePolicyInfoInputWidget::onSavePolicy()
{
string strJqxPolicySerial = pEditQjxPolicySerial->text().trimmed().toLocal8Bit().data();
string strBizPolicySerial = pEditBizPolicySerial->text().trimmed().toLocal8Bit().data();
int iAutotraderCallIndex = pComboBoxAutotraderCall->currentIndex();
vector<TelSalePolicyGift> giftsList; //用户选择的礼品清单
//触发信号
emit pEditSalerCode->editingFinished();
emit pEditAutoTraderCode->editingFinished();
if ( strJqxPolicySerial.empty() && strBizPolicySerial.empty() )
{
QMessageBox::critical( this, QString::fromLocal8Bit("必须输入保单号"), QString::fromLocal8Bit("交强险、商业险保单号皆为空,\n必须输入一个保单号!"), QMessageBox::Yes );
return;
}
if ( m_strSalerName.empty() == true )
{
QMessageBox::critical( this, QString::fromLocal8Bit("必须输入经办人代码"), QString::fromLocal8Bit("经办人代码不正确!"), QMessageBox::Yes );
return;
}
if ( iAutotraderCallIndex == 0 )
{
QMessageBox::critical( this, QString::fromLocal8Bit("输入错误"), QString::fromLocal8Bit("未选择是否车店联呼!"), QMessageBox::Yes );
return;
}
if ( pEditAutoTraderName->text().isEmpty() )
{
QMessageBox::critical( this, QString::fromLocal8Bit("输入错误"), QString::fromLocal8Bit("车商代码错误!"), QMessageBox::Yes );
return;
}
if ( pGroupBoxGift->isChecked() == true )
{
readGiftTable( giftsList );
if ( giftsList.size() == 0 )
{
QMessageBox::critical( this, QString::fromLocal8Bit("输入错误"), QString::fromLocal8Bit("未选择礼品!"), QMessageBox::Yes );
return;
}
}
SPolicyRecord policy;//保单信息
policy.strSalerCode = m_strSalerCode;
policy.strSalerName = m_strSalerName;
policy.strSalerDeptCode = m_strSalerDeptCode;
policy.strSalerDeptName = m_strSalerDeptName;
policy.strSalerOfficeCode = m_strSalerOfficeCode;
policy.strSalerOfficeName = m_strSalerOfficeName;
policy.strOperatorCode = getUserCode();
policy.strCustomerName = pEditCustomerName->text().trimmed().toLocal8Bit().data();
policy.strPlateSerial = pEditPlateSerial->text().trimmed().toLocal8Bit().data();
policy.strFrameSerial = pEditFrameSerial->text().trimmed().toLocal8Bit().data();
policy.strEngineSerial = pEditEngineSerial->text().trimmed().toLocal8Bit().data();
policy.strOperatorDate = QDate::currentDate().toString( QString::fromLocal8Bit("MM/dd/yyyy")).toLocal8Bit().data();
if ( iAutotraderCallIndex == 2 )
{
policy.bIsAutotraderCall = true;
}
else
{
policy.bIsAutotraderCall = false;
}
//车商代码
if ( m_strAutoTraderName.empty() == false )
{
policy.strAutoTraderCode = m_strAutoTraderCode;
policy.strAutoTraderName = m_strAutoTraderName;
}
if ( strJqxPolicySerial.empty() == false )
{
//处理交强险保单
policy.strPolicySerial = strJqxPolicySerial;
try
{
SaveTelSalePolicyInfo( policy, giftsList );
QMessageBox::information( this, QString::fromLocal8Bit("保存成功!"), QString::fromLocal8Bit("交强险保单保存成功!"), QMessageBox::Yes );
}
catch ( runtime_error & error )
{
QMessageBox::critical( this, QString::fromLocal8Bit("保存交强险保单失败!"), QString::fromLocal8Bit(error.what()), QMessageBox::Yes );
}
}
if ( strBizPolicySerial.empty() == false )
{
//处理交强险保单
policy.strPolicySerial = strBizPolicySerial;
try
{
SaveTelSalePolicyInfo( policy, giftsList );
QMessageBox::information( this, QString::fromLocal8Bit("保存成功!"), QString::fromLocal8Bit("商业险保单保存成功!"), QMessageBox::Yes );
}
catch ( runtime_error & error )
{
QMessageBox::critical( this, QString::fromLocal8Bit("保存商业险保单失败!"), QString::fromLocal8Bit(error.what()), QMessageBox::Yes );
}
}
}
void QTelSalePolicyInfoInputWidget::onResetGiftsTable()
{
InitGiftTable();
}
void QTelSalePolicyInfoInputWidget::onGiftTableItemChanged(int row, int column)
{
if ( m_initing == true )
{
return;
}
int rowCount = pTableGifts->rowCount() - 1;
QTableWidgetItem * pItem = NULL;
QTableWidgetItem * pItemPrice = NULL;
bool isSuccess = false;
double giftPrice = 0.0l;
if ( column == 1 && row != rowCount )
{
pItem = pTableGifts->item( row, 0 );
pItemPrice = pTableGifts->item( row, column );
pItemPrice->text().toDouble( &isSuccess );
if ( isSuccess == false )
{
QMessageBox::critical( this, QString::fromLocal8Bit("输入错误!"), pItem->text() + QString::fromLocal8Bit("价格有误!") );
pItemPrice->setText( "0" );
}
}
for ( int rowIndex = 0; rowIndex < rowCount; rowIndex++ )
{
pItem = pTableGifts->item( rowIndex, 0 );
pItemPrice = pTableGifts->item( rowIndex, 1 );
if ( pItem->checkState() == Qt::Unchecked )
{
continue;
}
giftPrice += pItemPrice->text().toDouble( &isSuccess );
if ( isSuccess == false )
{
QMessageBox::critical( this, QString::fromLocal8Bit("输入错误!"), pItem->text() + QString::fromLocal8Bit("价格有误!") );
pItemPrice->setText( "0" );
}
}
pTableGifts->item( pTableGifts->rowCount() - 1, 1 )->setText( QString::fromLocal8Bit("%1 元").arg(giftPrice) );
pTableGifts->resizeColumnsToContents();
}
void QTelSalePolicyInfoInputWidget::onAutoTraderCodeChanged()
{
pEditAutoTraderName->clear();
m_strAutoTraderName.clear();
}
void QTelSalePolicyInfoInputWidget::onQueryAutoTraderName()
{
m_strAutoTraderCode = pEditAutoTraderCode->text().trimmed().toUpper().toLocal8Bit().data();
queryAutoTraderInfo( m_strAutoTraderCode, m_strAutoTraderName );
pEditAutoTraderName->setText( QString::fromLocal8Bit( m_strAutoTraderName.c_str() ));
}
void QTelSalePolicyInfoInputWidget::onReset()
{
initData();
}