Created
April 28, 2017 14:11
-
-
Save ntorgov/b3a3aa26309fb3d29041d16940756220 to your computer and use it in GitHub Desktop.
detail.ts
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/// <reference path='../../../typings/index.d.ts' /> | |
/// <reference path='detail.d.ts' /> | |
/// <reference path='../../shared/layout.d.ts' /> | |
/// <reference path='../../../server/classes/material.d.ts' /> | |
/// <reference path='../../../lib/collections/collections.d.ts' /> | |
'use strict'; | |
import {Constants} from '../../../lib/collections/constants'; | |
import {Knifes} from '../../../lib/collections/knifes'; | |
import {Materials} from '../../../lib/collections/materials'; | |
import {MaterialsRests} from '../../../lib/collections/materials_rests'; | |
import {Statuses} from '../../../lib/collections/statuses'; | |
import {Polishes} from '../../../lib/collections/polishes'; | |
import {collapseHandler, summerNoteEditorActivate} from '../shared/theme'; | |
Template['backendOrdersDetail'].helpers({ | |
getOrderContragentId: function (): string { | |
console.error(this.order); | |
return this.order.contragent.contragentId; | |
}, | |
contragentData: function () { | |
if (this.order.contragent && this.order.contragent.contragentId) { | |
Session.set('CurrentContragentId', this.order.contragent.contragentId); | |
return Contragents.findOne({_id: this.order.contragent.contragentId}); | |
} | |
}, | |
knifeData: function (): IKnifeStricture { | |
const knifeObject: IKnifeStricture = <IKnifeStricture>Knifes.findOne({_id: this.order.order.knife}); | |
if (knifeObject && knifeObject.material) { | |
Session.set('currentOrderMaterial', knifeObject.material); | |
} | |
return knifeObject; | |
}, | |
materialData: function () { | |
let result; | |
if (this.order && this.order.order.material.id) { | |
Session.set('CurrentOrderId', this.order._id); | |
result = Materials.findOne({_id: (<IOrderStructure>this.order).order.material.id}); | |
} | |
return result; | |
}, | |
/** | |
* Функция вычисления длины в футах | |
* @return {string} | |
*/ | |
CleanLengthInFoots: function (): string { | |
let result: string = '0'; | |
if (this.order.calculation && this.order.calculation.ClearLength) { | |
result = (this.order.calculation.ClearLength * 3.28084).toFixed(2); | |
} | |
return result; | |
}, | |
CleanSquare: function (): string { | |
console.info(this.order); | |
let result: string = '0'; | |
if (this.order.calculation && this.order.calculation.ClearLength) { | |
result = (this.order.calculation.ClearLength * Session.get('currentOrderMaterial') / 1000).toFixed(2); | |
} | |
return result; | |
}, | |
/** | |
* Получение текущих остатков по материалу | |
* @returns {Object} | |
* @property {Number} currentRest - текущий остаток | |
*/ | |
CurrentMaterialRest (): OrderMaterialSituationStructure { | |
// console.info(Session.get('CurrentMaterialData')); | |
return <OrderMaterialSituationStructure>Session.get('CurrentMaterialData'); | |
}, | |
backendOrderDetailPolishInfo (polishId) { | |
let currentPolish = <IPolishStructure>Polishes.findOne({_id: polishId}); | |
// console.log(currentPolish); | |
if (currentPolish && currentPolish._id) { | |
// console.log(currentPolish); | |
return currentPolish.label; | |
} | |
}, | |
/** | |
* Расчет расходов заказа | |
* @returns {Object} | |
*/ | |
orderConsumationData: function () { | |
let consumeTotalRub: number = 0; | |
let consumeMaterialRub: number = 0; | |
let consumeColorsRub: number = 0; | |
let consumePolishRub: number = 0; | |
let consumeFormsRub: number = 0; | |
let consumeGeneralRub: number = 0; | |
let consumeTotalEuro: number = 0; | |
let consumeMaterialEuro: number = 0; | |
let consumeColorsEuro: number = 0; | |
let consumePolishEuro: number = 0; | |
let consumeFormsEuro: number = 0; | |
let consumeGeneralEuro: number = 0; | |
/** | |
* Прибыль в рублях | |
* @type {number} | |
*/ | |
let incomeTotalRub: number = 0; | |
/** | |
* Маржинальная прибыль, а не то, что кажется на первый взгляд | |
* @type {number} | |
*/ | |
let incomeMarginalRub: number = 0; | |
/** | |
* Прибыль в евро | |
* @type {number} | |
*/ | |
let incomeTotalEuro: number = 0; | |
/** | |
* Маржинальная прибыль, а не то, что кажется на первый взгляд | |
* @type {number} | |
*/ | |
let incomeMarginalEuro: number = 0; | |
/** | |
* Объект текущего заказа | |
* @type {IOrderStructure} | |
*/ | |
let currentOrder: IOrderStructure = this.order; | |
if (currentOrder.calculation && currentOrder.calculation.materialCost) { | |
consumeTotalRub = (currentOrder.calculation.materialCost + currentOrder.calculation.colourCost + currentOrder.calculation.polishCost) * currentOrder.order.euroPrice; | |
consumeMaterialRub = currentOrder.calculation.materialCost * currentOrder.order.euroPrice; | |
consumeColorsRub = currentOrder.calculation.colourCost * currentOrder.order.euroPrice; | |
consumePolishRub = currentOrder.calculation.polishCost * currentOrder.order.euroPrice; | |
consumeFormsRub = currentOrder.calculation.priceOfFormAndPageMaking * currentOrder.order.euroPrice; | |
consumeGeneralRub = currentOrder.calculation.productionConsumes * currentOrder.order.euroPrice; | |
consumeTotalEuro = currentOrder.calculation.materialCost + currentOrder.calculation.colourCost + currentOrder.calculation.polishCost; | |
consumeMaterialEuro = currentOrder.calculation.materialCost; | |
consumeColorsEuro = currentOrder.calculation.colourCost; | |
consumePolishEuro = currentOrder.calculation.polishCost; | |
consumeFormsEuro = currentOrder.calculation.priceOfFormAndPageMaking; | |
consumeGeneralEuro = currentOrder.calculation.productionConsumes; | |
incomeMarginalEuro = currentOrder.calculation.totalPriceOfPrinting - consumeMaterialEuro - consumeFormsEuro; | |
incomeMarginalRub = incomeMarginalEuro * currentOrder.order.euroPrice; | |
incomeTotalEuro = currentOrder.calculation.totalPriceOfPrinting - consumeMaterialEuro - consumeFormsEuro - consumeGeneralEuro; | |
incomeTotalRub = incomeTotalEuro * currentOrder.order.euroPrice; | |
} | |
return { | |
consumeTotalRub: consumeTotalRub.toFixed(2), | |
consumeMaterialRub: consumeMaterialRub.toFixed(2), | |
consumeColorsRub: consumeColorsRub.toFixed(2), | |
consumePolishRub: consumePolishRub.toFixed(2), | |
consumeFormsRub: consumeFormsRub.toFixed(2), | |
consumeGeneralRub: consumeGeneralRub.toFixed(2), | |
consumeTotalEuro: consumeTotalEuro.toFixed(2), | |
consumeMaterialEuro: consumeMaterialEuro.toFixed(2), | |
consumeColorsEuro: consumeColorsEuro.toFixed(2), | |
consumePolishEuro: consumePolishEuro.toFixed(2), | |
consumeFormsEuro: consumeFormsEuro.toFixed(2), | |
consumeGeneralEuro: consumeGeneralEuro.toFixed(2), | |
incomeMarginalEuro: incomeMarginalEuro.toFixed(2), | |
incomeMarginalRub: incomeMarginalRub.toFixed(2), | |
incomeTotalEuro: incomeTotalEuro.toFixed(2), | |
incomeTotalRub: incomeTotalRub.toFixed(2) | |
}; | |
}, | |
commentsPresent: function (): boolean { | |
let result: boolean = false; | |
if (this.order.note || this.order.comment) { | |
result = true; | |
} | |
return result; | |
}, | |
OrderStatuses: function () { | |
let currentStatusData; | |
let result = []; | |
let element; | |
let currentOrder: IOrderStructure = this.order; | |
// console.log(this.value); | |
if (currentOrder.status && currentOrder.status.value) { | |
currentStatusData = Statuses.findOne({_id: currentOrder.status.value}); | |
// console.log(currentStatusData); | |
if (currentStatusData && currentStatusData.canChange) { | |
for (element of currentStatusData.canChange) { | |
result.push(Statuses.findOne({_id: element.item})); | |
// console.log(element.item); | |
} | |
} | |
// console.log(result); | |
} | |
return result; | |
}, | |
}); | |
Template['backendOrdersDetail'].onRendered(function () { | |
collapseHandler(); | |
summerNoteEditorActivate(); | |
if (Session.get('CurrentOrderId')) { | |
Meteor.call('updateAndReceiveMaterialRest', Session.get('CurrentOrderId'), function (error, result: OrderMaterialSituationStructure) { | |
Session.set('CurrentMaterialData', result); | |
}); | |
} | |
}); | |
Template['backendOrdersDetail'].events({ | |
'click button' (event, item) { | |
Meteor.call('adminChangeOrderStatus', Session.get('CurrentOrderId'), this._id); | |
} | |
}); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment