Skip to content

Instantly share code, notes, and snippets.

@ntorgov
Created April 28, 2017 14:11
Show Gist options
  • Save ntorgov/b3a3aa26309fb3d29041d16940756220 to your computer and use it in GitHub Desktop.
Save ntorgov/b3a3aa26309fb3d29041d16940756220 to your computer and use it in GitHub Desktop.
detail.ts
/// <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