diff --git a/Profile b/Profile new file mode 100644 index 000000000..e69de29bb diff --git a/app/PartKeeprRequirements.php b/app/PartKeeprRequirements.php index 87d8374df..e9d1c5cb3 100644 --- a/app/PartKeeprRequirements.php +++ b/app/PartKeeprRequirements.php @@ -200,7 +200,8 @@ protected function isWritableRecursive($dir) if (!$this->isWritableRecursive($dir.'/'.$file)) { closedir($folder); - throw new \Exception($dir.'/'.$file.'is not writable.'); + throw new \Exception($dir.'/'.$file.' is not writable.'); + } } } diff --git a/app/config/config_framework.yml b/app/config/config_framework.yml index 0dc7bf3c8..e8b844264 100644 --- a/app/config/config_framework.yml +++ b/app/config/config_framework.yml @@ -1,4 +1,11 @@ +#services: +# app.doctrine.apc_cache: +# class: Doctrine\Common\Cache\ApcCache +# calls: +# - [setNamespace, [""]] framework: +# annotations: +# cache: "app.doctrine.apc_cache" #esi: ~ translator: { fallback: en } serializer: { enable_annotations: true } diff --git a/app/logs/.htaccess b/app/logs/.htaccess deleted file mode 100644 index 93169e4eb..000000000 --- a/app/logs/.htaccess +++ /dev/null @@ -1,2 +0,0 @@ -Order deny,allow -Deny from all diff --git a/app/logs/ignore.json b/app/logs/ignore.json deleted file mode 100644 index 3481b8db9..000000000 --- a/app/logs/ignore.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "message": "readable" -} diff --git a/composer.json b/composer.json index 82192faa8..dd77b704a 100644 --- a/composer.json +++ b/composer.json @@ -50,7 +50,6 @@ "symfony/assetic-bundle": "~2.8.2", "symfony/swiftmailer-bundle": "~2.3", "symfony/monolog-bundle": "~2.4", - "sensio/distribution-bundle": "~4.0.0", "sensio/framework-extra-bundle": "~3.0", "nelmio/api-doc-bundle": "~2.9@dev", "friendsofsymfony/rest-bundle": "~1.7.1", @@ -77,7 +76,8 @@ "phpseclib/phpseclib": "~2.0", "snc/redis-bundle": "^1.1", "predis/predis": "^1.0", - "guzzlehttp/guzzle": "6.2.2" + "guzzlehttp/guzzle": "6.2.2", + "sensio/distribution-bundle": "4.0.0" }, "require-dev": { "phpunit/phpunit": "5.5", diff --git a/src/PartKeepr/FrontendBundle/Resources/public/css/PartKeepr.css b/src/PartKeepr/FrontendBundle/Resources/public/css/PartKeepr.css index e2a91a0dd..0d1de9d7e 100644 --- a/src/PartKeepr/FrontendBundle/Resources/public/css/PartKeepr.css +++ b/src/PartKeepr/FrontendBundle/Resources/public/css/PartKeepr.css @@ -233,4 +233,4 @@ margin-left: -75px; border: 1px solid #b8daff; border-radius: .25rem; padding: .25rem .75rem; -} \ No newline at end of file +} diff --git a/src/PartKeepr/FrontendBundle/Resources/public/images/become_a_patron_button.xcf b/src/PartKeepr/FrontendBundle/Resources/public/images/become_a_patron_button.xcf new file mode 100644 index 000000000..e1e3cfff0 Binary files /dev/null and b/src/PartKeepr/FrontendBundle/Resources/public/images/become_a_patron_button.xcf differ diff --git a/src/PartKeepr/FrontendBundle/Resources/public/js/Components/Exporter/GridExporter.js b/src/PartKeepr/FrontendBundle/Resources/public/js/Components/Exporter/GridExporter.js index ee8064fdd..7e5efe54c 100644 --- a/src/PartKeepr/FrontendBundle/Resources/public/js/Components/Exporter/GridExporter.js +++ b/src/PartKeepr/FrontendBundle/Resources/public/js/Components/Exporter/GridExporter.js @@ -50,7 +50,12 @@ Ext.define("PartKeepr.Exporter.GridExporter", { } if (!column.isHidden()) { - rowValues.push(Ext.util.Format.stripTags(value)); + try{ + rowValues.push(Ext.util.Format.stripTags(value.replace(/[^\x1F-\x7D]/g,''))) + } + catch(err){ + rowValues.push(Ext.util.Format.stripTags(value)); + } } } diff --git a/src/PartKeepr/FrontendBundle/Resources/public/js/Components/Part/Editor/PartEditor.js b/src/PartKeepr/FrontendBundle/Resources/public/js/Components/Part/Editor/PartEditor.js index ee6b0b6b6..2dc097791 100644 --- a/src/PartKeepr/FrontendBundle/Resources/public/js/Components/Part/Editor/PartEditor.js +++ b/src/PartKeepr/FrontendBundle/Resources/public/js/Components/Part/Editor/PartEditor.js @@ -119,7 +119,9 @@ Ext.define('PartKeepr.PartEditor', { }, { xtype: 'CategoryComboBox', fieldLabel: i18n("Category"), + fieldClass: '', name: 'category', + allowBlank: false, displayField: "name", returnObject: true }, @@ -400,6 +402,7 @@ Ext.define('PartKeepr.PartEditor', { Ext.String.format(i18n("The number of attachments must be greater than {0}"), minAttachmentCount)); } + // Force footprint to be "null" when the checkbox is checked. if (this.footprintNone.getValue() === true) { this.record.setFootprint(null); diff --git a/src/PartKeepr/FrontendBundle/Resources/public/js/Components/Part/PartsGrid.js b/src/PartKeepr/FrontendBundle/Resources/public/js/Components/Part/PartsGrid.js index e790b69a2..82ce01d1e 100644 --- a/src/PartKeepr/FrontendBundle/Resources/public/js/Components/Part/PartsGrid.js +++ b/src/PartKeepr/FrontendBundle/Resources/public/js/Components/Part/PartsGrid.js @@ -408,10 +408,11 @@ Ext.define('PartKeepr.PartsGrid', { { if (siPrefix instanceof PartKeepr.SiPrefixBundle.Entity.SiPrefix) { var fractionValue = value * Math.pow(siPrefix.get("base"), siPrefix.get("exponent")); - + if (siPrefix.get("exponent") < 0) { - return fractionValue.toFixed(Math.abs(siPrefix.get("exponent"))); + return fractionValue.toFixed(15); // set to femto by default + //Math.abs(siPrefix.get("exponent"))); } else { return fractionValue; diff --git a/src/PartKeepr/FrontendBundle/Resources/public/js/Components/Part/PartsManager.js b/src/PartKeepr/FrontendBundle/Resources/public/js/Components/Part/PartsManager.js index 48e48a372..5b1b4c3b7 100644 --- a/src/PartKeepr/FrontendBundle/Resources/public/js/Components/Part/PartsManager.js +++ b/src/PartKeepr/FrontendBundle/Resources/public/js/Components/Part/PartsManager.js @@ -498,7 +498,7 @@ Ext.define('PartKeepr.PartManager', { record.setCategory(this.getSelectedCategory()); } else { - record.setCategory(this.tree.getRootNode().firstChild); + //record.setCategory(this.tree.getRootNode().firstChild); } record.setPartUnit(defaultPartUnit); diff --git a/src/PartKeepr/FrontendBundle/Resources/public/js/Components/Project/MetaPartSubgrid.js b/src/PartKeepr/FrontendBundle/Resources/public/js/Components/Project/MetaPartSubgrid.js index 96f9bb8cb..b541095da 100644 --- a/src/PartKeepr/FrontendBundle/Resources/public/js/Components/Project/MetaPartSubgrid.js +++ b/src/PartKeepr/FrontendBundle/Resources/public/js/Components/Project/MetaPartSubgrid.js @@ -85,7 +85,7 @@ Ext.define('PartKeepr.Components.Project.MetaPartSubgrid', { onApplyMetaPartsClick: function (button) { var parentRecord = button.up("grid").parentRecord; - + this.convertMetaPartsToParts(parentRecord); }, /** @@ -113,13 +113,17 @@ Ext.define('PartKeepr.Components.Project.MetaPartSubgrid', { } else { missing = Math.abs(missing); } - + + if(subPart.get("comment").indexOf("DO NOT CHANGE") == -1) + subPart.set("comment", subPart.get("comment") + "\nDO NOT CHANGE:" + record.data.report + record._part.data.name); + else if(subPart.get("comment").indexOf(record.data.report) != -1) + subPart.set("comment", subPart.get("comment") + record._part.data.name); + else + subPart.set("comment", subPart.get("comment").slice(0,subPart.get("comment").indexOf("DO NOT CHANGE")+14) + record.data.report + record._part.data.name); projectReportItem = Ext.create("PartKeepr.ProjectBundle.Entity.ReportPart"); projectReportItem.setPart(subPart); projectReportItem.set("quantity", subPart.get("stockToUse")); projectReportItem.setReport(this.up("#projectReportResult").projectReport); - - record.store.add(projectReportItem); } } @@ -192,4 +196,4 @@ Ext.define('PartKeepr.Components.Project.MetaPartSubgrid', { return total; } -}); \ No newline at end of file +}); diff --git a/src/PartKeepr/FrontendBundle/Resources/public/js/Components/Project/ProjectReport.js b/src/PartKeepr/FrontendBundle/Resources/public/js/Components/Project/ProjectReport.js index b656671c9..a1ebfe36f 100644 --- a/src/PartKeepr/FrontendBundle/Resources/public/js/Components/Project/ProjectReport.js +++ b/src/PartKeepr/FrontendBundle/Resources/public/js/Components/Project/ProjectReport.js @@ -108,7 +108,7 @@ Ext.define('PartKeepr.ProjectReportView', { quantity: projectsToReport[i].quantity })); } - + this.doSaveProjectReport(); }, /** @@ -130,7 +130,6 @@ Ext.define('PartKeepr.ProjectReportView', { { this.reportResult.setProjectsToReport([]); this.reportResult.setStore(new Ext.data.Store()); - var selection = this.reportList.getSelection(); if (selection.length === 1) { @@ -152,7 +151,14 @@ Ext.define('PartKeepr.ProjectReportView', { scope: this }); - this.reportList.getStore().reload(); + + + + + + + + }, onProjectReportLoaded: function () { this.reportResult.reconfigure(this.projectReport.reportParts()); diff --git a/src/PartKeepr/FrontendBundle/Resources/public/js/Components/Project/ProjectReportGrid.js b/src/PartKeepr/FrontendBundle/Resources/public/js/Components/Project/ProjectReportGrid.js index 21b1f0d7a..e0b3a3b67 100644 --- a/src/PartKeepr/FrontendBundle/Resources/public/js/Components/Project/ProjectReportGrid.js +++ b/src/PartKeepr/FrontendBundle/Resources/public/js/Components/Project/ProjectReportGrid.js @@ -19,7 +19,7 @@ Ext.define('PartKeepr.Components.Project.ProjectReportGrid', { autoSync: false, remoteFilter: true, remoteSort: true, - pageSize: 10, + pageSize: 5, model: "PartKeepr.ProjectBundle.Entity.Report", filters: [{ property: "name", diff --git a/src/PartKeepr/FrontendBundle/Resources/public/js/Components/Project/ProjectReportResultGrid.js b/src/PartKeepr/FrontendBundle/Resources/public/js/Components/Project/ProjectReportResultGrid.js index 440448299..ab707d03d 100644 --- a/src/PartKeepr/FrontendBundle/Resources/public/js/Components/Project/ProjectReportResultGrid.js +++ b/src/PartKeepr/FrontendBundle/Resources/public/js/Components/Project/ProjectReportResultGrid.js @@ -355,7 +355,7 @@ Ext.define("PartKeepr.Components.Project.ProjectReportResultGrid", { amount: item.get("quantity"), comment: item.getReport().reportProjects().getFieldValues("project.name").join(", "), lotNumber: item.projectParts().getFieldValues("lotNumber").join(", "), - projects: [] // item.getReport().reportProjects() + projects: [] }); } diff --git a/src/PartKeepr/FrontendBundle/Resources/public/js/Components/Project/Renderers/RemarksRenderer.js b/src/PartKeepr/FrontendBundle/Resources/public/js/Components/Project/Renderers/RemarksRenderer.js index a3aada78b..63b289854 100644 --- a/src/PartKeepr/FrontendBundle/Resources/public/js/Components/Project/Renderers/RemarksRenderer.js +++ b/src/PartKeepr/FrontendBundle/Resources/public/js/Components/Project/Renderers/RemarksRenderer.js @@ -7,17 +7,19 @@ Ext.define("PartKeepr.Components.ProjectReport.Renderers.RemarksRenderer", { return renderObj.getProjectParts(record); }, getProjectParts: function (rec) { + var report = rec.getReport(), - i, j, project, projectPart, projectPartQuantities = []; + i, j, k, project, projectPart, projectPartQuantities = []; for (i = 0; i < report.reportProjects().getCount(); i++) { project = report.reportProjects().getAt(i).getProject(); - + for (j = 0; j < project.parts().getCount(); j++) { projectPart = project.parts().getAt(j); - + + if (projectPart.getPart().getId() === rec.getPart().getId()) { if (projectPart.get("remarks") !== "" && projectPart.get("remarks") !== null) @@ -25,9 +27,22 @@ Ext.define("PartKeepr.Components.ProjectReport.Renderers.RemarksRenderer", { projectPartQuantities.push(project.get("name") + ": " + projectPart.get("remarks")); } } + else + { + + if (rec.getPart().data.comment.includes(projectPart.getPart().data.name)) + { + if (projectPart.get("remarks") !== "" && projectPart.get("remarks") !== null) + { + projectPartQuantities.push(project.get("name") + ": " + projectPart.get("remarks")); + } + } + + } + } } - + return projectPartQuantities.join(" ") }, diff --git a/src/PartKeepr/FrontendBundle/Resources/public/js/PartKeepr.js b/src/PartKeepr/FrontendBundle/Resources/public/js/PartKeepr.js index e56cecc72..ae1280dba 100644 --- a/src/PartKeepr/FrontendBundle/Resources/public/js/PartKeepr.js +++ b/src/PartKeepr/FrontendBundle/Resources/public/js/PartKeepr.js @@ -233,7 +233,7 @@ Ext.application({ } if (data.inactiveCronjobCount > 0) { - alert(i18n("The following cronjobs aren't running:") + "\n\n" + data.inactiveCronjobs.join("\n")); + //alert(i18n("The following cronjobs aren't running:") + "\n\n" + data.inactiveCronjobs.join("\n")); } }, /* diff --git a/src/PartKeepr/PartBundle/Entity/Part.php b/src/PartKeepr/PartBundle/Entity/Part.php index d24be9f3f..6203d94b1 100644 --- a/src/PartKeepr/PartBundle/Entity/Part.php +++ b/src/PartKeepr/PartBundle/Entity/Part.php @@ -27,6 +27,7 @@ */ class Part extends BaseEntity { + private $origin; /** * The category of the part. * @@ -759,7 +760,9 @@ public function getAveragePrice() */ public function setAveragePrice($price) { - $this->averagePrice = $price; + if ($price != 0) { + $this->averagePrice = $price; + } } /** @@ -784,6 +787,11 @@ public function onPreUpdate() public function addStockLevel(StockEntry $stockEntry) { $stockEntry->setPart($this); + + if ($this->getAveragePrice() != 0) { + $stockEntry->setPrice($this->getAveragePrice()); + } + $this->stockLevels->add($stockEntry); } diff --git a/src/PartKeepr/ProjectBundle/Entity/ReportPart.php b/src/PartKeepr/ProjectBundle/Entity/ReportPart.php index e5d4742fa..59e7c0dcd 100644 --- a/src/PartKeepr/ProjectBundle/Entity/ReportPart.php +++ b/src/PartKeepr/ProjectBundle/Entity/ReportPart.php @@ -43,6 +43,8 @@ class ReportPart extends BaseEntity */ private $quantity; + private $remarks; + /** * @ORM\ManyToOne(targetEntity="PartKeepr\DistributorBundle\Entity\Distributor") * @Groups({"default"}) @@ -337,13 +339,25 @@ public function setPart($part) return $this; } + // remark getter + public function getRemarks() + { + return $this->remarks; + } + + //remark setter + public function setRemarks($remarks) + { + $this->remarks = $remarks; + + return $this; + } + public function __toString() { // @todo i18n - return sprintf( - "Used in project report %s %s", - $this->getReport()->getName(), - $this->getReport()->getCreateDateTime()->format("Y-m-d H:i:s") - )." / ".parent::__toString(); + + return sprintf("Used in project report %s %s", $this->getReport()->getName(), + $this->getReport()->getCreateDateTime()->format("Y-m-d H:i:s"))." / ".parent::__toString(); } } diff --git a/src/PartKeepr/StockBundle/Entity/StockEntry.php b/src/PartKeepr/StockBundle/Entity/StockEntry.php index aba8f4484..32d6d9df7 100644 --- a/src/PartKeepr/StockBundle/Entity/StockEntry.php +++ b/src/PartKeepr/StockBundle/Entity/StockEntry.php @@ -213,7 +213,7 @@ public function getUser() public function checkPrice() { if ($this->getStockLevel() < 0 && $this->getPrice() !== null) { - $this->setPrice(null); + //$this->setPrice(null); } }