MyTetra Share
Делитесь знаниями!
new
Время создания: 05.02.2020 09:06
Раздел: INFO - JOB - rtneo - Работа над задачами - Отчеты
Запись: wwwlir/Tetra/master/base/1578484335x1lfz0ghy6/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;

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 com.haulmont.cuba.core.app.*;

import com.haulmont.cuba.core.entity.EntitySnapshot;

import java.text.DateFormat;

import java.text.SimpleDateFormat;


/**/

ViewRepository vRep = AppBeans.get(ViewRepository.NAME)

/**/


/**/

//Реквизиты

def props = [:]

//Объекты для первой таблицы

def realEstates = [];

//контейнерные площадки для второй таблицы

def containers = [];

//Результат

def root = [:]

/**/


/**/

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

def r1 = "392c1eb7-574c-4c5a-86d9-6e353007d9f4"

def r2 = "3200f50c-0e8e-b6af-9327-1fb5ce2dc0b9"

def params = [:]

Contract contract = dataManager.load(Contract.class).id(UUID.fromString(r2)).view('contract-print').optional().orElse(null)



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

Contragent contragent = contract.getContragent()


//Период действия договора

def (String contractFrom, String contractBefore) = getStartEndDate(contract, df)


/**/


/**/

//Заполнили реквизиты

props = fillRequisites(contract, params, df, contractFrom, contragent)



//Получаем все договора из истории

def cpList = getHistoryCP(contract)


//Удаляем перекрывающиеся договора

cpList = checkContractPeriod(cpList)


if(cpList.size() == 0)return null

//Создаем массив с периодами действия договоров

def itemsCP = getItemsCP(cpList)


for(def item : itemsCP){

// _(item)

// List itemsRE = getItemsRE(itemsCP, startCount++, contract)

// for(def item : itemsRE){

// realEstates.push(item)

// }

//

// List itemsContainer = getItemsContainers(itemsCP, itemsRE, startCount, contract, historyContainers)


}

//Создаем колекцию с позициями и датами в разрезе объектов

def itemsRE = getItemsRE(itemsCP, contract)


//Расставляем признаки изменения позиций

checkChange(itemsRE)


////Удаляем не измененные

//removeNoChanged(itemsRE)


//Нумеруем объекты

itemsRE = parseItemsRE(itemsRE, contract)


//Заполняем массив первой таблицы

realEstates = fillRealEstates(itemsRE)


//Создаем колекцию с позициями и датами в разрезе контейнерных площадок

def itemsCY = getItemsCY(itemsRE)



//Заполняем контейнерные площадки для второй таблицы

containers = fillContainers(itemsCY)


for(def item : realEstates){

_(item)

}

/**/


/*

/fill root

*/

//Заполняем реквизиты

private def fillRequisites(Contract contract, HashMap<Object, Object> params, SimpleDateFormat df, String startFrom, Contragent contragent) {

def companyService = AppBeans.get(CompanyService.NAME)

def bankDataService = AppBeans.get(BankDataSupplierService.NAME)

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

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) {


}

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


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

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) {


}


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

def props = [

'number' : contract.getNumber(),

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

//a.kotvinskiy /--

'dateFromTKO' : df.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),

'startFrom' : startFrom

]


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'] = "Степанова Т.А."


return props

}


//Заполняем объекты для первой таблицы

private def fillRealEstates(def itemsRE){

def realEstates = []

for(def item : itemsRE){

def pos = null

if(item["from"].equals("--")){

pos = createREItem(item["position"], item["n"])

}else{

String code = getCYCodesPosition(item["position"])

String codeKGO = getCYCodesKGOPosition(item["position"])

pos = createREItem(item["position"], code, codeKGO, item["n"], item["from"], item["before"])

}

realEstates.add(pos)

}

return realEstates

}


private def fillContainers(def itemsCY){

def list = []

def itemCY = [:]

for(def item : itemsCY){

_(item)

def pos = null

String code = item.getKey()

// for(def itemRE : item.getValue()){

//

// itemCY = [

// "code":code,

// "n":itemRE["n"],

// "from":itemRE["from"],

// "before":itemRE["before"]

// ]

// list.add(itemCY)

//

// }


for(def itemRE : item.getValue()){

def key = code+itemRE["from"]+itemRE["before"]

itemCY.putIfAbsent(key, ["code":code, "n":"", "from":itemRE["from"],"before":itemRE["before"], "cy":null]);

itemCY[key]["n"] +=itemRE["n"]+"<br/>"

itemCY[key]["cy"] = itemRE["cy"]

}

// pos = createCYItem()

}

for(def item : itemCY){

_(item)

}

}


private def getItemsRE(itemsCP, contract){

def itemRE = [:]

for(def item : itemsCP){

for(def itemCP : item["positions"]){

def cre = [:]

itemRE.putIfAbsent(itemCP.getContragentRealEstate().getId(), []);

cre = [

"cre":itemCP.getContragentRealEstate(),

"n":"",

"from":item["from"],

"before":item["before"],

"changeCY": false,

"changeRE": false,

"position":itemCP

]

itemRE[itemCP.getContragentRealEstate().getId()].add(cre)

}

}

return itemRE

}


private def getItemsCY(def itemsRE){

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

def listCY = [:]

for(def item : itemsRE){

if(item["from"].equals("--"))continue

for(def itemCPCY : item["position"].getContainerYards()){

def cre = [:]

listCY.putIfAbsent(itemCPCY.getContainerYard().getCode(), []);

cre = [

"n":item["n"],

"from":item["from"],

"before":df.format(item["before"]),

"cy":itemCPCY.getContainerYard()

]

listCY[itemCPCY.getContainerYard().getCode()].add(cre)

}

}

return listCY

}

/*

/functions

*/

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

//Получить историю позиции договора

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

def getHistoryCP(Contract contract){


DataManager dataManager = AppBeans.get(DataManager.NAME);

EntitySnapshotService entitySnapshotService = AppBeans.get(EntitySnapshotService.NAME);


def listSnapshotHistory = dataManager.load(SnapshotHistory.class)

.query('select s from rtneo$SnapshotHistory s where s.contragent.id = :contragent and s.contract.accepted = true or s.contract.id = :contractId order by s.contract.createTs asc')

.parameter("contragent", contract.getContragent().getId())

.parameter("contractId", contract.getId())

.view("_local")

.list();


def cpH = []


for(def snapshotHistory : listSnapshotHistory){

def cp = [:]

def entitySnapshot = dataManager.load(EntitySnapshot.class).id(snapshotHistory.getSnapshot()).optional().orElse(null)

Contract entity = entitySnapshotService.extractEntity(entitySnapshot)


cp.putIfAbsent(entity.getNumber(), ["contract":entity, "positions":[]]);


for(ContractPosition cpItem : entity.getPositions()){

cp[entity.getNumber()]["positions"].add(cpItem)

}

cpH.add(cp)

}


return cpH;

}


//Удаляем перекрывающиеся договора

private def checkContractPeriod(def cpList){

def sortCPList = []

def prevDate = null

def prevContract = null


for(def item : cpList.reverse()){

if(prevDate != item.values()["contract"].get(0).getFrom() && prevContract != item.values()["contract"].get(0).getNumber())sortCPList.add(item)

prevDate = item.values()["contract"].get(0).getFrom()

prevContract = item.values()["contract"].get(0).getNumber()

}


return sortCPList.reverse()

}


//Создаем колекцию с позициями и датами в разрезе объектов

/* def tmp["cre.id"] = [

// "cre"

// "from"

// "before"

// "changeCY"

// "changeRE"

// "position"

// ]

*/

def getItemsCP(List<ContractPosition> cpList){

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

Calendar cal = Calendar.getInstance()


def itemsCP = []


for(def item : cpList){

def cp = [

"contract":item.values()["contract"].get(0),

"from":item.values()["contract"].get(0).getFrom(),

"before":item.values()["contract"].get(0).getBefore(),

"positions":item.values()["positions"].get(0)

]


if(itemsCP.size() != 0){

cal.setTime(item.values()["contract"].get(0).getFrom())

cal.add(Calendar.DATE, -1)

itemsCP[itemsCP.size()-1]["before"] = cal.getTime()

}

itemsCP.add(cp)

}


return itemsCP

}


//Расставляем признаки изменения позиций

private checkChange(def itemsCP){

for(def item : itemsCP){

def prevCP = null

for(def itemCP : item.getValue()){

itemCP["changeCY"] = changeCY(itemCP["position"], prevCP)

itemCP["changeRE"] = changeRE(itemCP["position"], prevCP)

prevCP = itemCP["position"]

}

}

}


//Устанавливаем нумерацию

private def parseItemsRE(itemsRE, contract){

def listRE = []

def n = ""

char nChar = 'А'

def nInt = BigDecimal.valueOf(1.0)

def prev = [

"nChar":null,

"nInt":null

]

for(def item : itemsRE){

for(def itemCP : item.getValue()){

if(!itemCP["changeCY"] && !itemCP["changeRE"]){

listRE.get(listRE.size()-1)['before'] = itemCP["before"]

continue

}

if(itemCP["changeCY"] && !itemCP["changeRE"]){

if(nChar == 'А'){

def tmpCyItem = listRE.get(listRE.size()-1).clone()

listRE.get(listRE.size()-1)['from'] = "--"

listRE.get(listRE.size()-1)['before'] = "--"

listRE.get(listRE.size()-1)['changeRE'] = "--"

listRE.get(listRE.size()-1)['changeCY'] = "--"

// listRE.get(listRE.size()-1)['position'] = "--"

tmpCyItem['n'] = tmpCyItem['n'].toString()+nChar++

listRE.push(tmpCyItem)

}

n = (prev["nInt"].toString())+(nChar++)

}

if(itemCP["changeRE"]){

nChar = 'А'

if(contract.getIsFactCalculation() != null && contract.getIsFactCalculation()) nInt +=0.1

n=nInt

}

itemRE = [

"cre":itemCP["cre"],

"n":n,

"from":itemCP["from"],

"before":itemCP["before"],

"changeCY":itemCP["changeCY"],

"changeRE":itemCP["changeRE"],

"position":itemCP["position"],

]

listRE.add(itemRE)

//Устанавливаем предыдущие значения

prev["nInt"] = nInt

prev["nChar"] = nChar

}

listRE.get(listRE.size()-1)['before'] = contract.getBefore()

}

return listRE

}


//Создание позиции для первой таблицы

private def createREItem(ContractPosition cp, String code, String codeKGO, Object n, Date from, Date before){

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


// def kgo = false

//

// for(def container : cpcy.getContainerYard().getContainers()){

// BigDecimal volume = container.getType()?.getVolume() == null ? BigDecimal.ZERO : container.getType().getVolume()

// if(volume >= BigDecimal.valueOf(5.0))kgo = true;

// }


def isNull = false

isNull = cp.getContragentRealEstate() == null?true:false

def pos = [

realEstateName:isNull?'':cp.getContragentRealEstate().getRealEstate().getName(),

cadastralNumber:isNull?'':cp.getContragentRealEstate().getRealEstate().getCadastralNumber(),

address:isNull?'':cp.getContragentRealEstate().getRealEstate().getAddress(),

startFrom:df.format(from),

endBefore:df.format(before),

containerYardNumber:code,

containerYardKGONumber: codeKGO,

n:n

]

return pos

}

private def createREItem(ContractPosition cp, Object n){

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


// def kgo = false

//

// for(def container : cpcy.getContainerYard().getContainers()){

// BigDecimal volume = container.getType()?.getVolume() == null ? BigDecimal.ZERO : container.getType().getVolume()

// if(volume >= BigDecimal.valueOf(5.0))kgo = true;

// }


def isNull = false

isNull = cp.getContragentRealEstate() == null?true:false

def pos = [

realEstateName:isNull?'':cp.getContragentRealEstate().getRealEstate().getName(),

cadastralNumber:isNull?'':cp.getContragentRealEstate().getRealEstate().getCadastralNumber(),

address:isNull?'':cp.getContragentRealEstate().getRealEstate().getAddress(),

startFrom:"--",

endBefore:"--",

containerYardNumber:"",

containerYardKGONumber: "",

n:n

]

return pos

}


private def createCYItem(){

}

private void getContainersNew(containerYards, isFact, List containers, String startFrom, String endBefore, def n) {

def containerWasteBuff = [:]

def strCodeCP = getCodeCY(containerYards)


for(def containerYard : containerYards){

containerYard = containerYard.getContainerYard()


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)

volume = volume.replaceAll(',', '.')

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


String typeVal = type + volume

String key = containerYard.getCode()



String typeExport = isFact ? 'Исходя из количества и объема контейнеров' : 'Исходя из нормативов накопления'

def current = []

Map previous = containerWasteBuff[key]

// if (previous == null) {

current = [

'n' : n,

'code' : key,

'startFrom' : startFrom,

'endBefore' : endBefore,

'address' : containerYard.getAddress(),

'longitude' : containerYard.getLongitude(),

'latitude' : containerYard.getLatitude(),

'typeExport': typeExport,

'owner' : containerYard.getOwner(),

'type' : type,

'volume' : volume,

'count' : count,

'typeWaste' : ((volume != '') && (new BigDecimal(volume) < 6.0)) ? 'ТКО' : 'КГО'

]

if (containerWasteBuff[key] != null) {

// if(current['n'] == )

current['n'] = ''

current['code'] = ''

current['startFrom'] = ''

current['endBefore'] = ''

current['address'] = ''

current['longitude'] = ''

current['latitude'] = ''

current['owner'] = ''

}

containers.push(current)

containerWasteBuff[key] = current

}

}

}

/*

/utils

*/


//Возвращает период действия договора

private List getStartEndDate(contract, SimpleDateFormat df) {

Calendar cal = Calendar.getInstance();


cal.setTime(contract.getFrom());

cal.set(Calendar.DAY_OF_MONTH, cal.getActualMinimum(Calendar.DAY_OF_MONTH));

def startFrom = df.format(cal.getTime())


cal.setTime(contract.getBefore());

cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(Calendar.DAY_OF_MONTH));

def endBefore = df.format(cal.getTime())

[startFrom, endBefore]

}


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

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 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 getNN(BigDecimal value) {

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

}


//Проверяем позиции на изменение контейнерной площадки

private Boolean changeCY(ContractPosition cp, ContractPosition prevCP){

if(prevCP == null) return true


def strCode = ""

def prevStrCode = ""

//Нужно отсортировать КП по номеру, перед конкатенацией

for(def item : cp.getContainerYards()){

strCode = strCode+item.getContainerYard().getCode()

}

for(def item : prevCP.getContainerYards()){

prevStrCode = prevStrCode+item.getContainerYard().getCode()

}

if(!strCode.equals(prevStrCode))return true


//Другие проверки


return false

}

//Проверяем позиции на изменение объекта недвижимости

private Boolean changeRE(ContractPosition cp, ContractPosition prevCP){

if(prevCP == null) return true


//Сравниваем кол-во р/е

if(prevCP.getContragentRealEstate().getCalculationAmount() != cp.getContragentRealEstate().getCalculationAmount())return true


//Сравниваем объемы по начислениям

BigDecimal totalVolumePosition = null

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

totalVolumePosition=getNN(accrual.getAmountBase())

}

BigDecimal prevTotalVolumePosition = null

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

prevTotalVolumePosition=getNN(accrual.getAmountBase())

}

if(!prevTotalVolumePosition.equals(totalVolumePosition))return true


//Другие проверки

if(prevCP.getIsFactCalculation() != cp.getIsFactCalculation())return true


return false

}


//Определяет тип КП, КГО или ТКО

private Boolean isKGO(ContainerYard cy){

for(def item : cy.getContainers()){

if(item.getCount() == null || item.getCount() == 0.0)continue

if(item.getType().getVolume() > new BigDecimal(6.0))return true

}

return false

}


//Получаем коды КП с КГО и ТКО

private def getCYCodesPosition(ContractPosition cp){

//Определяем код КП

def strCodeCP = ""


for(def cpcy : cp.getContainerYards()){

if(!isKGO(cpcy.getContainerYard()))

{strCodeCP = strCodeCP+cpcy.getContainerYard().getCode()+"/"}

}

if(strCodeCP.endsWith("/")){

strCodeCP = strCodeCP.substring(0, strCodeCP.length() - 1)

}

return strCodeCP

}

private def getCYCodesKGOPosition(ContractPosition cp){

//Определяем код КП

def strCodeCP = ""


for(def cpcy : cp.getContainerYards()){

if(isKGO(cpcy.getContainerYard()))

{strCodeCP = strCodeCP+cpcy.getContainerYard().getCode()+"/"}

}

if(strCodeCP.endsWith("/")){

strCodeCP = strCodeCP.substring(0, strCodeCP.length() - 1)

}

return strCodeCP

}

/*

/log

*/

private _(Object obj, String options = ""){


String op = options

if(options.equals("for")){

for(def item : obj){

log(obj)

}

}

if(options.equals("")){

log(obj)

}



}

private log(Object obj){

log.debug(obj)

}

 
MyTetra Share v.0.59
Яндекс индекс цитирования