src/Entity/Finance/Bill.php line 70

  1. <?php
  2. namespace App\Entity\Finance;
  3. use ApiPlatform\Doctrine\Orm\Filter\SearchFilter;
  4. use ApiPlatform\Metadata\ApiFilter;
  5. use ApiPlatform\Metadata\ApiResource;
  6. use ApiPlatform\Metadata\GetCollection;
  7. use ApiPlatform\Metadata\Link;
  8. use ApiPlatform\Metadata\Post;
  9. use App\Dto\Common\ObservationInput;
  10. use App\Dto\Finance\QuoteableInput;
  11. use App\Dto\Finance\QuoteableStatusInput;
  12. use App\Entity\Expediting\ShippingPlan;
  13. use App\Processor\Finance\BillInputProcessor;
  14. use App\Processor\Finance\BillStatusInputProcessor;
  15. use App\Processor\Finance\QuotationObservationProcessor;
  16. use Doctrine\ORM\Mapping as ORM;
  17. #[ORM\Entity]
  18. #[ApiResource(
  19.     routePrefix'/finance',
  20.     order: ['id' => 'DESC'],
  21. )]
  22. #[ApiResource(
  23.     operations: [
  24.         new GetCollection(
  25.             uriTemplate'/bills/{identifier}/editions',
  26.             uriVariables: [
  27.                 'identifier' => new Link(fromProperty'editions'fromClassBill::class),
  28.             ],
  29.             paginationEnabledfalse,
  30.             order: ['id' => 'DESC'],
  31.         ),
  32.     ],
  33.     routePrefix'/finance',
  34. )]
  35. #[ApiResource(
  36.     uriTemplate'/expediting/shipping_plans/{identifier}/bills',
  37.     operations: [new GetCollection(name'get_bills_by_shipping_plan')],
  38.     uriVariables: [
  39.         'identifier' => new Link(fromProperty'quotations'fromClassShippingPlan::class),
  40.     ],
  41. )]
  42. #[ApiResource(
  43.     operations: [
  44.         new Post(
  45.             uriTemplate'/bills/{identifier}/amend',
  46.             inputQuoteableInput::class,
  47.             processorBillInputProcessor::class,
  48.         ),
  49.         new Post(
  50.             uriTemplate'/bills/{identifier}/status',
  51.             inputQuoteableStatusInput::class,
  52.             processorBillStatusInputProcessor::class,
  53.         ),
  54.         new Post(
  55.             uriTemplate'/bills/{identifier}/observations',
  56.             inputObservationInput::class,
  57.             processorQuotationObservationProcessor::class
  58.         ),
  59.     ],
  60.     routePrefix'/finance',
  61. )]
  62. #[ApiFilter(SearchFilter::class, properties: [
  63.     'status' => 'exact',
  64.     'number' => 'ipartial',
  65.     'shippingPlan.workOrder.reference' => 'ipartial',
  66. ])]
  67. class Bill extends BaseQuotation
  68. {
  69. }