Commande sur mesure

Cette méthode permet de créer des commandes en jouant sur tous les éléments du devis

Créer un devis sur mesure

La séquence est la suivante :

  1. commencer un devis pour un ClientLegalEntity
  2. ajouter une section : une section correspond a un service / accès
    • créer la section (associée à un ClientContract)
    • définir l’offre dans la section : par exemple, si c’est un accès : donner l’adresse a raccorder, la section sera remplie d’éléments qui formeront une première proposition
    • personnaliser l’offre dans la section : c’est à cette étape que vous pouvez modifier le début et l’engagement, a l’étape précédente c’est une offre “par défaut” qui vous a été proposé
  3. ajouter une autre section en reprenant à l’étape 2 (si nécessaire)
  4. soumettre le devis : on va faire des vérifications, et donner un prix aux éléments qui nécessite une quotation
  5. signer le devis

En voici un, à titre d’exemple. Dans cette page nous allons employer des termes en “français” et qui sont a associer à des objets “machine” dont le nom est anglicisé au sein de l’API, pour éviter des confusions nous vous invitons à consulter ce lexique en cas de doute

Commencer un devis

Trouver votre entité commerciale

$myClientLegalEntity = null;
foreach ($prizzTelecom->getClientLegalEntities()->getItems() as $clientLegalEntity) {
    if ($clientLegalEntity->getName() == "My Company name") {
        $myClientLegalEntity = $clientLegalEntity;
    }
}

Note

Vous pouvez stocker l’id de cette entité, ce sera probablement un élément de configuration de votre côté. Il n’est pas nécessaire de le rechercher à chaque fois.

Faire un test d’éligibilité et sélectionner l’offre

On suppose qu’on veut souscrire un “L2 PREMIUM”. Première étape, on fait un test d’éligibilité.

$eligResult = $prizzTelecom->createEligibility(
    "111 Rue Réaumur, 75002 Paris",
    $myClientLegalEntity->getId()
);

On parcours les proposition de l’éligibilité pour ne retenir que le L2 PREMIUM. On récupère en passant l’id de l’offre et de la liste de prix.

$price_list_id = null;
$offer_id = null;
foreach ($eligResult->getResponses() as $response_id) {
    $ret = $prizzTelecom->getEligibility($response_id);
    foreach ($ret->getResponse() as $response) {
        if ($response->getCode() == 'L2 PREMIUM') {
            $price_list_id = $response->getPriceListId();
            $offer_id = $response->getOfferId();
        }
    }
}

Choisir un contrat

Le ClientContract (contrat), c’est la glue entre un ClientLegalEntity (vous) et une PriceList. Il faut en choisir un pour commencer une section. A noter qu’il peut il y avoir plusieurs ClientContract pour la même PriceList pour avoir une liste de contacts personnalisés, différents profil de configuration de la porte de collecte.

$myContract = null;
foreach ($myClientLegalEntity->getContracts() as $contract) {
    if ($contract->getPriceList()->getId() == $price_list_id) {
        $myContract = $contract;
    }
}

Créer le devis

Il faut fournir en plus de votre ID celui de l’entité légale, on peut le trouver sur la liste de prix.

$legalEntityId = $prizzTelecom->getPriceList($price_list_id)->getLegalEntity()->getId();

$commercialOffer = $prizzTelecom->createCommercialOffer(
    [
        "legalEntityId" => $legalEntityId,
        "clientLegalEntityId" => $clientLegalEntity->getId()
    ]
);

Note

Vous pouvez stocker l’id de la legalEntity, ce sera probablement un élément de configuration de votre côté. Il n’est pas nécessaire de le rechercher à chaque fois.

Ajouter une section au devis

Les devis sont découpé en sections, ainsi vous pouvez commander plusieurs prestations dans le même devis. Chaque section est liée à un contrat, et à un nom. C’est ce nom qui sera présenté pour la facturation (vous disposez aussi d’un champ “référence client” que vous pourrez définir après validation du devis. Il faut également préciser à nouveau l’adresse du livraison du service. Un ultime test d’éligibilité est refait juste avant le remplissage de la section.

$sectionParams = (new CreateCommercialOfferSection())
    ->setClientContractId($myContract->getId())
    ->setName("My new final customer");

$eligAddress = new SetCommercialOfferSectionOfferEligibility();
$eligAddress->setAddress("111 Rue Réaumur, 75002 Paris");

$section = $prizzTelecom->createCommercialOfferSection(
    $commercialOffer->getId(),
    $sectionParams
);

$offerParam = new SetCommercialOfferSectionOffer();
$offerParam
    ->setOfferId($offer_id)
    ->setEligibility($eligAddress);

$prizzTelecom->setCommercialOfferSectionOffer(
    $commercialOffer->getId(),
    $section->getId(),
    $offerParam
);

Après cet appel, vous obtenez un devis avec une offre de “base” que vous pouvez déjà consulter dans l’espace client. Vous pouvez la modifier en mettant à jour la section.

Personnalisation : choix du débit, de la durée d’engagement

$itemsParameters = new UpdateCommercialOfferSectionItems();
$itemsParameters ->setBandwidth('100'); // il s'agit du débit en mb/s
$itemsParameters ->setGrt('4HNO'); // c'est la GTR au format : délai en heures suivi de son type HO ou HNO (cf paramètres utiles) 
$update_commercial_offer_section_items->setCommitment('12'); // c'est l'engagement en mois
//$update_commercial_offer_section_items->setExpress('7'); // certaines offres disposent d'une option Express en jours, permettant un raccordement plus rapide contre rémunération.
$prizzTelecom->updateCommercialOfferSectionItems(
    $commercialOffer->getId(),
    $section->getId(),
    $itemsParameters
);

Vous pouvez retourner consulter le devis il doit être à jour.

Demander la validation du devis

Une fois que vous avez terminé les modifications du devis vous pouvez nous le soumettre.

$prizzTelecom->submitCommercialOffer($commercialOffer->getId());

Une fois validé par nos services, la procédure de signature sera lancée. Vous recevrez un code par mail pour confirmer la commande.

Attention

Attention : le contenu du devis peut avoir changé s’il y avait des éléments qui nécessitaient une estimation. Si vous voulez intégrer le mécanisme de signature vous pouvez valider le devis avec le code comme ceci :

$prizzTelecom->signCommercialOffer(
    $commercialOffer->getId(),
    (new SignCommercialOffer())->setCode("123456")
);