MyTetra Share
Делитесь знаниями!
SupplyRefactor2
Время создания: 07.11.2019 16:44
Раздел: INFO - JOB - CUBA - GroovyScripts
Запись: wwwlir/Tetra/master/base/1573116260is471gj4z3/text.html на raw.githubusercontent.com

import com.groupstp.datasupplier.data.BankData

import com.groupstp.datasupplier.service.BankDataSupplierService

import com.groupstp.rtneo.entity.*

import org.apache.commons.collections4.CollectionUtils

import java.math.RoundingMode;calcAmount

import java.text.DecimalFormat;

import java.text.DecimalFormatSymbols;

import com.github.declinationofnames.*

import com.haulmont.cuba.core.global.*;

import com.groupstp.rtneo.core.bean.calculation.CalculationWorkerHelper

import com.groupstp.rtneo.service.AccrualService

import com.groupstp.rtneo.data.ContainerYardSearchData

import com.groupstp.rtneo.core.bean.ContainerYardWorker

import org.apache.commons.lang.StringUtils

import com.groupstp.rtneo.service.CompanyService


import java.text.DateFormat;

import java.text.SimpleDateFormat;


def helper = AppBeans.get(CalculationWorkerHelper.NAME)

def service = AppBeans.get(AccrualService.NAME)

def containerYardWorker = AppBeans.get(ContainerYardWorker.NAME)

def bankDataService = AppBeans.get(BankDataSupplierService.NAME)

def companyService = AppBeans.get(CompanyService.NAME)


//def contract = dataManager.reload(params['contract'],'contract-print')

def r1 = "fe26472b-6243-e9b8-e49d-9dba6ccc4eea"


def params = [:];

params['contract'] = dataManager.load(Contract.class).id(UUID.fromString(r1)).view('contract-print').optional().orElse(null)


def contract = params['contract'];


def props = [];

props = fillProps(params)


//позиции по договору

def units = [];

def realEstates = [];

def calculations = [];

//контейнерные площадки

def containers = [];

def containersUnique = [];

//

def accrualsGroup = new TreeMap<>();


//a.kotvinskiy /--

//Объемы арендаторов за которые оплачивает арендодатель

def rentersGroup = new TreeMap<>();

//a.kotvinskiy --/

//заполняем позиции

for (ContractPosition position: contract.getPositions()){

//Оплата арендодателем

def isPayLandlord = false;

def isOwner = false;

def isCnC = false;

if(position.getContragentRealEstate()!=null && !position.getContragentRealEstate().isDeleted()){

def rentCre = position.getContragentRealEstate();

isOwner = helper.isOwner(rentCre)

isPayLandlord = helper.isPayLandlord(rentCre)

isCnC = helper.isCnC(position)

}

//a.kotvinskiy --/

if (CollectionUtils.isEmpty(position.getAccruals())) {

continue

}

//**

realEstateNums = ""

realEstatePos = [:]

calculation = [:]

if (position.getCategory()!=null){

calculation['unitName'] = position.getUnit().getName()

}

if (position.getNorm()!=null){

//a.kotvinskiy /--

//calculation['norm'] = getNumber(position.getNorm(), false, true)

calculation['norm'] = getFormatNum(position.getNorm(), 4)

//a.kotvinskiy --/

}

if (position.getWasteProject()!=null){

calculation['unitName'] = 'ПНООЛР'

}

//бегаем по начислениям

BigDecimal totalVolumePosition = 0

//a.kotvinskiy /--

BigDecimal tariff = 0

BigDecimal amountBaseRent = 0;

//a.kotvinskiy --/

for (Accrual accrual: position.getAccruals()){

tariffNoNDS = round(getNN(accrual.getPrice())*5/6);

totalVolumePosition+=getNN(accrual.getAmountBase())

amountBaseRent += isCnC && isPayLandlord?getNN(accrual.getAmountBase()):BigDecimal.ZERO

// totalVolumePosition+=isPayLandlord?BigDecimal.ZERO:getNN(accrual.getAmountBase())

// amountBaseRent +=!isPayLandlord?BigDecimal.ZERO:getNN(accrual.getAmountBase())

// amountBaseRent +=!isPayLandlord?BigDecimal.ZERO:getNN(accrual.getAmountBase())

if (accrualsGroup[accrual.getPeriod()]==null){

accrualsGroup[accrual.getPeriod()] = [

'period' : getTextPeriod(accrual.getPeriod()),

'tariff': round(getNN(accrual.getPrice())*5/6),

'amountBase': getNN(accrual.getAmountBase()),

'amountBaseNoRent': !isCnC ? getNN(accrual.getAmountBase()) : BigDecimal.ZERO,

'amountBaseRent': isCnC && isPayLandlord ? getNN(accrual.getAmountBase()) : BigDecimal.ZERO,

//a.kotvinskiy /--

'totalSumBaseNoNds': (getNN(accrual.getTotalSumBase())-getNN(accrual.getNdsSumBase())),

//'totalSumBaseNoNds': (getNN(accrual.getAmountBase())*getNN(tariffNoNDS)),

//a.kotvinskiy --/

'totalSumBase': getNN(accrual.getTotalSumBase()),

'discount': getNN(accrual.getTotalSumBase())-getNN(accrual.getTotalSum()),

'totalSum': getNN(accrual.getTotalSum())]

} else {

accrualsGroup[accrual.getPeriod()]['amountBase']+=getNN(accrual.getAmountBase());

accrualsGroup[accrual.getPeriod()]['amountBaseNoRent']+=!isCnC ? getNN(accrual.getAmountBase()) : BigDecimal.ZERO;

accrualsGroup[accrual.getPeriod()]['amountBaseRent']+=isCnC && isPayLandlord ? getNN(accrual.getAmountBase()) : BigDecimal.ZERO;

//a.kotvinskiy /--

accrualsGroup[accrual.getPeriod()]['totalSumBaseNoNds']+=(getNN(accrual.getTotalSumBase())-getNN(accrual.getNdsSumBase()));

//accrualsGroup[accrual.getPeriod()]['totalSumBaseNoNds']+=(getNN(accrual.getAmountBase())*getNN(tariffNoNDS));

//a.kotvinskiy --/

accrualsGroup[accrual.getPeriod()]['totalSumBase']+=getNN(accrual.getTotalSumBase());

accrualsGroup[accrual.getPeriod()]['discount']+=(getNN(accrual.getTotalSumBase())-getNN(accrual.getTotalSum()));

accrualsGroup[accrual.getPeriod()]['totalSum']+=getNN(accrual.getTotalSum());

}

if(isCnC && isPayLandlord){

def rentCategory = dataManager.load(RealEstateCategory.class)

.query('select a.category from rtneo$Accrual a where a.id=:id')

.parameter('id', accrual.getId())

.view('_local')

.optional()

.orElse(null);

if(rentersGroup[rentCategory.getName()] == null){

rentersGroup[rentCategory.getName()]=[

'rentCategory': rentCategory.getName(),

'rentArea':accrual.getCalculationAmount(),

'rentNorm':rentCategory.getNorm(),

'rentAmount':accrual.getAmountBase()];

}else{

rentersGroup[rentCategory.getName()]['rentArea']+=accrual.getCalculationAmount();

rentersGroup[rentCategory.getName()]['rentAmount'] += accrual.getAmountBase();

}

}

}


//a.kotvinskiy /--

//calculation['amount'] = getNumber(totalVolumePosition, false)

//calculation['calculationAmount'] = getNumber(position.getAccruals().get(0).getCalculationAmount(), false)

calculation['amount'] = getFormatNum(totalVolumePosition, 5);

//Нужен среднее кол-во р/е по позиции, или объем деленый на норматив

calculation['calculationAmount'] = getFormatNum(position.getAccruals().get(position.getAccruals().size()-1).getCalculationAmount(), 5);

//calculation['calculationAmount'] = getFormatNum(totalVolumePosition / new BigDecimal(position.getNorm()), 2);

//a.kotvinskiy --/


if (position.getContragentRealEstate()!=null && position.getContragentRealEstate().getRealEstate()){

RealEstate realEstate = position.getContragentRealEstate().getRealEstate()

realEstatePos['realEstateName'] = realEstate.getName()

realEstatePos['cadastralNumber'] = realEstate.getCadastralNumber()

realEstatePos['address'] = realEstate.getAddress()

}


def realEstatesWasteProject = [];

//бегаем по площадкам

if (position.getContainerYards()!=null){

//заполняем массив КП

for (ContractPositionContainerYard contractPositionContainerYard: position.getContainerYards()){

containerYard = contractPositionContainerYard.getContainerYard()

realEstatePos['containerYardNumber'] = containerYard.getCode();

//выдираем из проекта лимитов ОН

if (position.getWasteProject()!=null){

realEstateP = [:]

realEstateP['realEstateName'] = contractPositionContainerYard.getContragentRealEstate().getRealEstate().getName()

realEstateP['cadastralNumber'] = contractPositionContainerYard.getContragentRealEstate().getRealEstate().getCadastralNumber()

realEstateP['address'] = contractPositionContainerYard.getContragentRealEstate().getRealEstate().getAddress()

realEstateP['containerYardNumber'] = containerYard.getCode();

realEstateP['n'] = realEstates.size()+1

if (realEstateNums.length()>0){

realEstateNums+=','

}

realEstateNums+=realEstateP['n']

realEstatesWasteProject.add(contractPositionContainerYard.getContragentRealEstate().getId())

if(!isCnC) realEstates.push(realEstateP)

}


if (containersUnique.indexOf(containerYard.getId())<0){

containersUnique.push(containerYard.getId())


def containerWasteBuff = [:]

for (ContainerWaste container: containerYard.getContainers()){

String type = container.getType()?.getName() == null ? '' : container.getType().getName()

String volume = container.getType()?.getVolume() == null ? '' : getNumber(container.getType().getVolume(),false)

Integer count = container.getCount() == null ? 0 : container.getCount();


String key = type + volume


Map previous = containerWasteBuff[key]

if (previous == null) {

def current = [

'n': containers.size()+1,

'code':containerYard.getCode(),

'address':containerYard.getAddress(),

'longitude':containerYard.getLongitude(),

'latitude':containerYard.getLatitude(),

'owner': containerYard.getOwner(),

'type': type,

'volume': volume,

'count': count

]

containers.push(current)

containerWasteBuff[key] = current

} else {

previous['count'] += count

}

}

}

}

}

//добираем объекты недвижимости из ПЛООНР, для которых не найдены КП

if (position.getWasteProject() != null){

for (ContragentRealEstate cre: position.getWasteProject().getRealEstates()){

if (realEstatesWasteProject.indexOf(cre.getId())>=0){

continue;

}

realEstateP = [:]

realEstateP['realEstateName'] = cre.getRealEstate().getName()

realEstateP['cadastralNumber'] = cre.getRealEstate().getCadastralNumber()

realEstateP['address'] = cre.getRealEstate().getAddress()

realEstateP['n'] = realEstates.size()+1

if (realEstateNums.length()>0){

realEstateNums+=','

}

realEstateNums+=realEstateP['n']

realEstates.push(realEstateP)

}

}

if (!isCnC && realEstatePos!=[:] && position.getWasteProject() == null){

realEstatePos['n'] = realEstates.size()+1

realEstates.push(realEstatePos)

if (realEstateNums.length()>0){

realEstateNums+=','

}

realEstateNums+=realEstatePos['n']

}

calculation['n'] = realEstateNums

if(!isCnC) calculations.push(calculation)

}

def renters = []

for(item in rentersGroup){

def renter = [

'rentCategory':item.getValue()['rentCategory'],

'rentArea':item.getValue()['rentArea']/12,

'rentNorm':item.getValue()['rentNorm'],

'rentAmount':item.getValue()['rentAmount'],

]

renters.push(renter)

}


//рассчет итогов

BigDecimal amountBaseAll = 0

//for (ContractPosition position: contract.getPositions()){

// amountBaseAll += position.getVolumeYear()

//}

BigDecimal amountBase = 0

BigDecimal amountBaseNoRent = 0

BigDecimal amountBaseRent = 0

BigDecimal totalSumBaseNoNds = 0

BigDecimal totalSumBase = 0

BigDecimal discount = 0

BigDecimal totalSum = 0


def accruals = []

for (item in accrualsGroup){

amountBase+=item.getValue()['amountBase']

amountBaseNoRent+=item.getValue()['amountBaseNoRent']

amountBaseRent+=item.getValue()['amountBaseRent']

totalSumBaseNoNds = totalSumBaseNoNds + item.getValue()['totalSumBaseNoNds'].setScale(2, RoundingMode.HALF_UP)

totalSumBase = totalSumBase + item.getValue()['totalSumBase'].setScale(2, RoundingMode.HALF_UP)

discount = discount + item.getValue()['discount'].setScale(2, RoundingMode.HALF_UP)

totalSum = totalSum + item.getValue()['totalSum'].setScale(2, RoundingMode.HALF_UP)


def accrual =[

'period' : item.getValue()['period'],

'tariff': getNumber(item.getValue()['tariff']),

//a.kotvinskiy /--

//'amountBase': getNumber(item.getValue()['amountBase'], false),

'amountBase': getFormatNum(item.getValue()['amountBase'], 5),

'amountBaseNoRent': getFormatNum(item.getValue()['amountBaseNoRent'], 5),

'amountBaseRent': getFormatNum(item.getValue()['amountBaseRent'], 5),

//a.kotvinskiy --/

'totalSumBaseNoNds': getNumber(item.getValue()['totalSumBaseNoNds']),

'totalSumBase': getNumber(item.getValue()['totalSumBase']),

'discount': getNumber(item.getValue()['discount']),

'totalSum': getNumber(item.getValue()['totalSum'])

]

accruals.push(accrual)

}


//массив итогов

def totals = [

//a.kotvinskiy /--

//'amountBaseAll' : getNumber(amountBaseAll, false),

//'amountBase' : getNumber(amountBase, false),

'amountBase' : getFormatNum(amountBase, 5),

'amountBaseNoRent' : getFormatNum(amountBaseNoRent, 5),

'amountBaseRent' : getFormatNum(amountBaseRent, 5),

//a.kotvinskiy --/

'totalSumBaseNoNds' : getNumber(totalSumBaseNoNds),

'totalSumBase' : getNumber(totalSumBase),

'discount' : getNumber(discount),

'totalSum' : getNumber(totalSum)

]

return [['props':props,'realEstates': realEstates, 'calculations': calculations, 'totals':totals, 'containers': containers, 'accruals': accruals, 'renters': renters]]


//*******************************************

//

//Методы заполнения

//

//*******************************************

def fillProps(def params){

def companyService = AppBeans.get(CompanyService.NAME)

def bankDataService = AppBeans.get(BankDataSupplierService.NAME)

def contract = dataManager.reload(params['contract'],'contract-print')

//Получаем реквизиты компании, действующие на момент даты договора

def company = contract.getCompany()

def companyRequisites = companyService.getCompanyRequisites(company, contract.getDate())

def companyManagerNameR = companyRequisites.getManagerName()

try{

companyManagerNameR = new RussianName(companyManagerNameR).fullName(RussianNameProcessor.gcaseRod)

} catch(e){}

//заполняем шапку

def contragent = contract.getContragent()

//документ-основание

contragentPersonReasonText = ', действующего на основании '

if (contragent.getType() == ContragentType.PERSONAL){

contragentPersonReasonText = ''

}

contragentPersonReasonDoc = params['personReason']

if (contragentPersonReasonDoc == null){

contragentPersonReasonDoc = contragent.getHeadPersonReasonDoc()

}

contragentPersonReasonDocR = contragentPersonReasonDoc

try{

contragentPersonReasonDocR = new RussianName(contragentPersonReasonDoc).fullName(RussianNameProcessor.gcaseRod)

} catch(e){}

if (contragentPersonReasonDocR == null){

if (getContragentType(contragent) == ContragentType.ORGANISATION){

contragentPersonReasonDocR = "устава"

} else if(getContragentType(contragent) == ContragentType.INDIVIDUAL){

contragentPersonReasonDocR = "свидетельства / выписки о государственной регистрации в качестве индивидуального предпринимателя"

}

}

//подписант

contragentPersonName = params['personName']

if (contragentPersonName == null){

contragentPersonName = contragent.getHeadPersonName()

if (contragent.getType() == ContragentType.PERSONAL){

contragentPersonName = contragent.getName()

}

}

contragentPersonNameR = contragentPersonName

try{

contragentPersonNameR = new RussianName(contragentPersonName).fullName(RussianNameProcessor.gcaseRod)

} catch(e){

}

//должность подписанта

contragentPersonPost = params['personPost']

if (contragentPersonPost == null){

contragentPersonPost = contragent.getHeadPersonPost()

}

contragentPersonPostR = contragentPersonPost

try{

contragentPersonPostR = new RussianName(contragentPersonPost).fullName(RussianNameProcessor.gcaseRod)

} catch(e){}

DateFormat df = new SimpleDateFormat("dd.MM.yyyy");

DateFormat df2 = new SimpleDateFormat("dd.MM.yyyy");

//массив шапочных параметров

def props = [

'number': contract.getNumber(),

'date': getTextDate(contract.getDate()),

//a.kotvinskiy /--

'dateFromTKO': df2.format(contract.getFrom()),

'dateBeforeTKO': df.format(contract.getBefore()),

//a.kotvinskiy --/

'contragentName':contragent.getName(),

'contragentNameShort':contragent.getShortName(),

'contragentPersonName': contragentPersonName,

'contragentPersonNameR': contragentPersonNameR,

'contragentPersonNameShort': getShortFio(contragentPersonName),

'contragentPersonPost': contragentPersonPost,

'contragentPersonPostR': contragentPersonPostR,

'contragentPersonReasonDoc': contragentPersonReasonDoc,

'contragentPersonReasonDocR': contragentPersonReasonDocR,

'contragentPersonReasonText': contragentPersonReasonText,

'contragentShortName':contragent.getShortName(),

'legalAddress':contragent.getLegalAddress(),

'actualAddress':contragent.getActualAddress(),

'mailingAddress':contragent.getMailingAddress(),

'registrationAddrees': contragent.getRegistrationAddress(),

'passportSeries': contragent.getPassportSeries(),

'passportNumber': contragent.getPassportNumber(),

'passportGivenDate': contragent.getPassportGivenDate(),

'inn':contragent.getInn(),

'kpp':contragent.getKpp(),

'ogrn':contragent.getOgrn(),

'checkingAccount':contragent.getCheckingAccount(),

'bankName':contragent.getBankName(),

'correspondentAccount':contragent.getCorrespondentAccount(),

'bik':contragent.getBik()

,'companyShortName':company.shortName

,'companyFullName':company.fullName

,'companyInn':company.inn

,'companyEmail':company.email

,'companyOgrn':company.ogrn

,'companyPhone':company.phone

,'companyLegalAddress':companyRequisites.legalAddress

,'companyActualAddress':companyRequisites.actualAddress

,'companyPostalAddress':companyRequisites.postalAddress

,'companyKpp':companyRequisites.kpp

,'companyBankName':companyRequisites.bankName

,'companyBankAccount':companyRequisites.bankAccount

,'companyCorrespondentAccount':companyRequisites.correspondentAccount

,'companyRcbic':companyRequisites.rcbic

,'companyManagerTitle':companyRequisites.managerTitle

,'companyManagerTitleR':companyRequisites.managerTitleR

,'companyManagerName':companyRequisites.managerName

,'companyManagerNameR':companyManagerNameR

,'companyManagerNameShort':getShortFio(companyRequisites.managerName)

,'companyManagerDocumentR':getShortFio(companyRequisites.managerDocumentR)

]

if (!StringUtils.isBlank(props['bik']) && (StringUtils.isBlank(props['bankName']) || StringUtils.isBlank(props['correspondentAccount']))) {

BankData bank = bankDataService.getSuggestionBankDetails(props['bik'])

if (bank != null) {

if (StringUtils.isBlank(props['bankName'])) {

props['bankName'] = bank.getName()

}

if (StringUtils.isBlank(props['correspondentAccount'])) {

props['correspondentAccount'] = bank.getCorrespondentAccount()

}

}

}

//телефон + почта

def phone = ''

if (contragent.getHeadPersonPhone() != null){

phone = contragent.getHeadPersonPhone()

} else if (contragent.getContactPersonPhone()!=null){

phone = contragent.getContactPersonPhone()

}

def email = ''

if (contragent.getHeadPersonEmail()!=null){

email = contragent.getHeadPersonEmail()

} else if (contragent.getContactPersonEmail()!=null){

email = contragent.getContactPersonEmail()

}

props['phone'] = phone

props['email'] = email

//a.kotvinskiy 19-07-19/--

//В пункте 3 доп соглашения, указываем начало действия доп соглашения

props['dateFrom'] = getTextDate(contract.getFrom())

//a.kotvinskiy 19-07-19--/

//получаем номер и дату головного договора

if (contract.getMainContract()!=null){

props['mainContractNumber'] = contract.getMainContract().getNumber()

props['mainContractDate'] = getTextDate(contract.getMainContract().getDate())

}

//вычисляем подписантов и юридический адрес

def defaultDate = new Date().copyWith(year: 2019, month: Calendar.JANUARY, dayOfMonth: 17, hourOfDay: 0, minute: 0, second: 0);

def addressChangeDate = new Date().copyWith(year: 2019, month: Calendar.APRIL, dayOfMonth: 26, hourOfDay: 0, minute: 0, second: 0);

def contractDate = contract.getDate()

// props['ourPersonPost'] = "Заместитель генерального директора по коммерческой работе"

// props['ourPersonPostR'] = "Заместителя генерального директора по коммерческой работе"

// props['ourPersonName'] = "Степанова Татьяна Анатольевна"

// props['ourPersonNameR'] = "Степановой Татьяны Анатольевны"

// props['ourPersonReasonDoc'] = "доверенность № РТ-05 от 11.01.2019 г"

// props['ourPersonReasonDocR'] = "доверенности № РТ-05 от 11.01.2019 г"

// props['ourPersonNameShort'] = "Степанова Т.А."

//

// if (contractDate < addressChangeDate){

// props['ourLegalAddress'] = '308000, Белгородская область, город Белгород, проспект Б. Хмельницкого, дом 131, помещение 15'

// props['ourKpp'] = '312301001'

// } else {

// props['ourLegalAddress'] = '664033, Иркутская область, город Иркутск, улица Лермонтова, дом 337Б, помещение 8'

// props['ourKpp'] = '381201001'

// }

return props;

}



//*******************************************

//

//Вспомогательные методы

//

//*******************************************


//def isCnC(def position){

// //Если позиция создалась с объектом арендодателя

// if(isOwner && !position.getContragent().getId().equals(position.getContragentRealEstate().getContragent().getId())){

// isCnC = true;

// }

//}

//def isOwner(cre){

// //Арендатор или собственник

// if(cre.getOwnType().equals(TypeOwnership.RENT)){

// isOwner = true;

// }

//}

//def isPayLandLord(ContragentRealEstate cre){

// if(!isOwner(cre)) return false;

// List<RealEstateRenter> rr = dataManager.load(RealEstateRenter)

// .query('select r from rtneo$RealEstateRenter r where r.renterRecord.id = :id and r.payOwner = true')

// .parameter("id", cre.getId())

// .view("_local")

// .list();

// if(rr.size()>0)return true else return false;

//}

//получить дату словами

def getTextDate(Date date) {

def result=''

def monthesRP = ['января','февраля','марта','апреля','мая','июня','июля','августа','сентября','октября','ноября','декабря']

Calendar cal = Calendar.getInstance()

cal.setTime(date);

result = cal.get(Calendar.DAY_OF_MONTH).toString()

result+=" "+monthesRP[cal.get(Calendar.MONTH)]

result+=" "+cal.get(Calendar.YEAR).toString()+" г."

return result

}


//получить период словами

def getTextPeriod(Date date) {

def result=''

def monthesRP = ['январь','февраль','март','апрель','май','июнь','июль','август','сентябрь','октябрь','ноябрь','декабрь']

Calendar cal = Calendar.getInstance()

cal.setTime(date);

result+=monthesRP[cal.get(Calendar.MONTH)]

result+=" "+cal.get(Calendar.YEAR).toString()+" г."

return result

}


//форматирование чисел

def getNumber(BigDecimal number, boolean money = true, boolean scale = false) {

if (number == null) {

return "-"

}

DecimalFormatSymbols symbols = DecimalFormatSymbols.getInstance()

symbols.setGroupingSeparator((char) ' ')

symbols.setDecimalSeparator((char) ',')

if (money){

DecimalFormat formatter = new DecimalFormat('###,###.00', symbols)

String result = formatter.format(number);

return result.startsWith(",") ? "0" + result : result;

} else {

//Временное решение чтобы, вывести норматив. 4 знака после запятой

if(scale){

DecimalFormat formatter = new DecimalFormat('###,###.####', symbols)

return formatter.format(number);

}else{

DecimalFormat formatter = new DecimalFormat('###,###.###', symbols)

return formatter.format(number);

}


}

}

//a.kotvinskiy /--

//Временное решение, по формату отображения нулей после запятой

def getFormatNum(BigDecimal number, int s, boolean money = false){

if (number == null) {

return "-"

}

String formatString = '';


DecimalFormatSymbols symbols = DecimalFormatSymbols.getInstance()

symbols.setGroupingSeparator((char) ' ')

symbols.setDecimalSeparator((char) ',')


switch(s){

case 1:

formatString = '###,###,###.#';

break;

case 2:

formatString = '###,###,###.##';

break;

case 3:

formatString = '###,###,###.###';

break;

case 4:

formatString = '###,###,###.####';

break;

case 5:

formatString = '###,###,###.######';

break;

}

DecimalFormat formatter = new DecimalFormat(formatString, symbols);

String result = formatter.format(number);

return result.startsWith(",") ? "0" + result : result;

}

//a.kotvinskiy --/


def getShortFio(String fio) {

if (fio == null) return ""

String pattern = '(\\S+\\s)(\\S{1})\\S+\\s(\\S{1})\\S+'

String str = fio.replaceAll(pattern, '$1$2.$3.')

return str

}


def round(BigDecimal sum){

return sum == null ? BigDecimal.ZERO : sum.setScale(2, RoundingMode.HALF_UP);

}


def getContragentType(Contragent contragent) {

String name = contragent.getName();

if (name == null){

name = contragent.getShortName();

}

String inn = contragent.getInn();

ContragentType type = contragent.getType();


if (!StringUtils.isEmpty(name)) {

name = name.toLowerCase().trim();

if (name.startsWith("ип ") || name.endsWith(" ип") ||

name.contains(" ип ") ||

name.contains("инд.предп.") ||

name.contains("индивидуальный предприниматель")) {

type = ContragentType.INDIVIDUAL;

}

}


return type;

}


def getNN(BigDecimal value) {

return value == null ? BigDecimal.ZERO : value;

}


Так же в этом разделе:
 
MyTetra Share v.0.55
Яндекс индекс цитирования