protected function execute(InputInterface $input, OutputInterface $output)
 {
     $productfilename = $input->getArgument('productfilename');
     // $discountfilename = $input->getArgument('discountfilename');
     $output->writeln('Loading product: ' . $productfilename);
     // $order = new \BusinessComponents\Order\Order();
     $l = new JsonProductLoader($productfilename);
     $product = $l->load();
     //$order->clearAdjustments();
     // -----------------------------
     $discount = new Discount();
     $discount->setName('2.50 off on green smoothies');
     $discount->setAction('LINE-FIXED');
     $rule = new Rule();
     $rule->setScope('line');
     $rule->setVariable('color');
     $rule->setComparison('equals');
     $rule->setValue('green');
     $discount->addRule($rule);
     $rule = new Rule();
     $rule->setScope('line');
     $rule->setVariable('category');
     $rule->setComparison('equals');
     $rule->setValue('smoothies');
     $discount->addRule($rule);
     $quantitybreak = new QuantityBreak();
     $quantitybreak->setQuantity(1);
     $quantitybreak->setActionParameter(2.5);
     $discount->addQuantityBreak($quantitybreak);
     $discounts = array($discount);
     $discounter = new Discounter();
     $this->dumpProduct($product);
     $matches = $discounter->getMatchedDiscountsForProduct($product, $discounts);
     $output->writeLn("Matched discounts: " . count($matches));
     foreach ($matches as $matcheddiscount) {
         $output->writeLn(" * " . $discount->getName());
     }
 }