/**
  * @param string $type
  * @return string
  */
 public function formatType($type)
 {
     $types = QuoteProduct::getTypes();
     if (isset($types[$type])) {
         return $this->formatTypeLabel($types[$type]);
     } else {
         return $this->translator->trans('N/A');
     }
 }
 /**
  * @return array
  */
 public function formatTypeProvider()
 {
     $res = ['invalid type' => ['input' => 'asdf', 'expected' => 'N/A']];
     foreach (QuoteProduct::getTypes() as $key => $value) {
         $res[$value] = ['input' => $key, 'expected' => 'orob2b.sale.quoteproduct.type.' . $value];
     }
     return $res;
 }
 public function testGetTypeTitles()
 {
     $this->assertEquals([QuoteProduct::TYPE_OFFER => 'offer', QuoteProduct::TYPE_REQUESTED => 'requested', QuoteProduct::TYPE_NOT_AVAILABLE => 'not_available'], QuoteProduct::getTypes());
 }
 /**
  * {@inheritdoc}
  */
 public function buildForm(FormBuilderInterface $builder, array $options)
 {
     $builder->add('product', ProductSelectType::NAME, ['required' => true, 'label' => 'orob2b.product.entity_label', 'create_enabled' => false])->add('productReplacement', ProductSelectType::NAME, ['required' => false, 'label' => 'orob2b.sale.quoteproduct.product_replacement.label', 'create_enabled' => false])->add('quoteProductRequests', QuoteProductRequestCollectionType::NAME, [])->add('quoteProductOffers', QuoteProductOfferCollectionType::NAME, ['add_label' => 'orob2b.sale.quoteproductoffer.add_label'])->add('type', 'choice', ['label' => 'orob2b.sale.quoteproduct.type.label', 'choices' => $this->formatter->formatTypeLabels(QuoteProduct::getTypes()), 'required' => true, 'expanded' => false])->add('commentCustomer', 'textarea', ['required' => false, 'read_only' => true, 'label' => 'orob2b.sale.quoteproduct.comment_customer.label'])->add('comment', 'textarea', ['required' => false, 'label' => 'orob2b.sale.quoteproduct.comment.label']);
     $builder->addEventListener(FormEvents::PRE_SET_DATA, [$this, 'preSetData']);
 }