//TODO: PNO - Sort kol skal være mapping og ikke name
//TODO: PNO - embedded objects medsendes altid ved PATCH (er altid dirty)
//TODO: PNO - default værdier angivet i kolonner i DMD påføres ikke
//TODO: PNO - Håndter fejl bedre ved gem og server svar status 400 + 500 (gem imlquantity uden at udfylde type) 

//TODO: PNO - Hvorfor skal jeg stadig selv lave en: ip2.getUser().set("ACCESS", true);
//TODO: Embed factory location i imlquantity + ppo
//TODO: Embed users

//TODO: tilføj success: false ved server fejl

//TODO: har artikelregistret ALTID samme nummer på alle lokationer?
//TODO: Kan man hente current location fra DB?

//TODO: Supplier - opslag eller blot indtastning?
//TODO: Ekstern og intern sælger - er de vigtige?
//TODO: Kontrol af ppolines op mod min-quantities, Hvordan?
//TODO: auth på servicekald
//TODO: service til oprettelse af PO
// TODO: Hvad med nøgle når en kunde flytter : brug tlf nummer
//TODO: Slet customer alt. phone
//TODO: Skjul Delivery date + costprice
//TODO: Skjul materialid i ppolines
//TODO: Tillad redigering i grid
//TODO: Requested DeliveryDate
//TODO: Kun artikler med type 350 og 351 aratyi
//TODO: Eksempel med 3-4 ppolines med same mould - med check mod min-quantites

Ext.define("SPI.imlppo.view.imlminquantity", {

	extend: "Ext.panel.Panel",
	layout: {
		type: "vbox",
		align: "stretch"
	},

	config: {
		locationPicker: null,
		quantityGrid: null,
		customerGrid: null
	},

	requires: [
		"SPI.imlppo.controller.imlminquantity"
	],

	controller: "rest.controller.imlminquantity",

	initComponent: function() {
		ip2.getUser().set("ACCESS", true);
		this.callParent(arguments);
		this.add(this.createLayout());
		ip2.getUser().set("LOCATION", 'R');
	},

	createLayout: function() {
		var items = [];
		var i_self = this;

		var customerGrid = Ext.widget("ip2pagingGridOld", {
			autoLoad: false,
			searchCombo: false,
			border: false,
			filterable: false,
			split: true,
			dmd: {
				path: "dmd/spi-pk2.dmd",
				entityName: "scustopf"
			},
			uiName: "search",
			flex: 1,
			listeners: {
				afterRender: function(me) {
					me.events.itemcontextmenu.clearListeners(); // don't show contextmenu
				},
				select: function(me, selection) {
						var grid = i_self.getQuantityGrid();
						var params = grid.getStore().getProxy().getExtraParams();
						Ext.apply(params, {cust_id: selection.data.cucusi});
						grid.getStore().loadPage(1);
				}
			}
		});
		customerGrid.getEntityToolBar().removeExport();
		customerGrid.getEntityToolBar().removeAdd();
		customerGrid.events.itemdblclick.clearListeners();
		customerGrid.getStore().on({
			beforeLoad: {
				fn: function(store, operation) {
					store.getProxy().setUrl("/api/customer");
					var params = store.getProxy().getExtraParams();
					var l = i_self.getLocationPicker();
					var locationRecord = l.getSelection();
					var active = onlyActiveCustomerCheckbox.getValue();
					Ext.apply(params, {location: locationRecord.get("key"), onlyActive: active});
				}
			}
		});

		var quantityGrid = Ext.widget("ip2pagingGridOld", {
			autoLoad: false,
			allowSearch: false,
			border: false,
			split: true,
			filterable: false,
			dmd: {
				path: "dmd/spi-ppo.dmd",
				entityName: "IMLQuantity"
			},
			uiName: "list",
			flex: 1,
			listeners: {
				beforeupdate: {
					fn: function(me, config) {
					}
				},
				beforecreate: {
					fn: function(me, config) {
						// put default data into config before creating new entity
						// If return false then abort operation
						var record = customerGrid.getSelection()[0];
						config.data = {
							location: record.get("solcti"),
							customernumber: record.get("cucusi"),
							customerid: record.get("customerid"),
							createdby: ip2.getUser().get("USRUSRTKN"),
						};
					}
				}
			}
		});
		quantityGrid.getEntityToolBar().removeExport();
		quantityGrid.getStore().on({
			beforeLoad: {
				fn: function(store, operation) {
					store.getProxy().setUrl("/api/IMLQuantity/byCustomer");
				}
			}
		});

		/*  USE standard edit from Grid 
		quantityGrid.events.itemcontextmenu.clearListeners(); // don't show contextmenu
		quantityGrid.events.itemdblclick.clearListeners();
		quantityGrid.on({
			itemdblclick: {
				fn: function(me, record) {
					var form = Ext.widget("entityform", {
						dmd: "dmd/spi-ppo.dmd",
						entity: "IMLQuantity",
						view: "portfolio",
						keys: {id: record.id},
						action: "update",
						closable: false,
						activeTabIndex: 0,
						title: "",
						listeners: {
							contentReady: {
							}
						}
					});

					var winSize = ip2.getWindowSize();
					var iml_window = Ext.widget("window", {
						modal: true,
						closable: true,
						collapsible: true,
						resizable: true,
						width: winSize.width * 0.6,
						height: winSize.height * 0.96,
						layout: "fit",
						items: [form]
					});

					iml_window.show();
				}
			}
		}); */

		i_self.setQuantityGrid(quantityGrid);


		var locationPicker = Ext.widget("combosql", {
			displayField: "name",
			valueField: "key",
			fieldLabel: "Select location",
			editable: false,
			allowBlank: false,
			forceSelection: true,
			url: "api/picker/location",
			totalProperty: "totalRows",
			padding: '2 15',
			width: 300,
			listeners: {
				change: {
					fn: function(me, selection) {
						customerGrid.getStore().loadPage(1);
						me.getTrigger('clear').hide();
					},
					buffer: 10
				},
				afterRender: function(me) {
					me.getStore().load({
						callback() {
							me.select(ip2.getUser().get("LOCATION"))
						}
					});
				}
			}
		});

		customerGrid.getEntityToolBar().items.add(locationPicker);

		var onlyActiveCustomerCheckbox = Ext.widget("checkbox", {
			boxLabel: 'Only active customers',
			name: 'active',
			padding: '2 15',
			checked: true,
			listeners: {
				change: function(me) {
					customerGrid.getStore().loadPage(1);
				}
			}
		});

		customerGrid.getEntityToolBar().items.add(onlyActiveCustomerCheckbox);

		this.setLocationPicker(locationPicker);
		this.setCustomerGrid(customerGrid);

		items.push(customerGrid);
		items.push(quantityGrid);

		return items;
	}

});
