---
# System prepended metadata

title: Untitled

---

https://jira.sixt.com/browse/RESDOL-532 

We want to move more data to the cloud and reduce dependency on the monolith. Currently PHP endpoint that provides charge names exists. We want to replace it with goOrange service call. The service should has its own database and regularly collect updates from the monolith. Check this page for details: https://confluence.sixt.com/display/RAC/Moving+Offer+List+dependencies+from+monolith+to+goOrange

## service name 

com.sixt.service.rental-chargenames


## producer for the service

Classic (needs to be created)

## consumers

com.sixt.service.rentaloffers
salesboost (presumably)

## stakeholders

- Dolhins
- Pricing team
- Salesboost


## contract

    syntax = "proto3";

    service RentalChargeNames {
        rpc WriteRACChargeNames(WriteRACChargeNamesRequest) returns (WriteRACChargeNamesResponse);
        rpc GetChargeNames(GetChargeNamesRequest) returns (GetChargeNamesResponse);
    }
    
    message WriteRACChargeNamesRequest {
        repeated RACChargeNames rac_charge_names = 1;
    }

    message RACChargeNames {
        string charge_code = 1;
        string valid_from = 2; // CEST timezone
        string valid_to = 3; // CEST timezone
        string short_name = 4;
        string long_name = 5;
        string web_description = 6;
        string web_description_html = 7;
        repeated string web_description_points = 8;
        repeated string web_description_points_html = 9;
        string lang = 10;
        string locale = 11;
        string pictogram = 12;
        string terms = 13;
    }
   
    message WriteRACChargeNamesResponse {
        enum Error {
            INTERNAL_ERROR = 1;
            DATABASE_ERROR = 2;
            ...
        }
    }
    
    message GetChargeNamesRequest {
        int64 pickup_station = 1;
        string pickup_date = 2;
        repeated string charge_codes = 3;
        string language = 4;
        string locale = 5;
    }
    
    message GetChargeNamesResponse {
        repeated ChargeName charge_names = 1;
    }
    
    message ChargeName {
        string id = 1;
        string short_name = 1;
        string long_name = 2;
        string description = 3;
        string description_html = 4;
        repeated string description_points = 5;
        repeated string description_points_html = 6;
        
    }
    

## tables

**We need validity dates (from-to) and locale**

#### charges

| ID (PK)  | code  | short_name | long_name | lang | locale | pictogram | terms |
| -------- | ----- | --------   | --------  |------| -------| ----------|-------|
| SERIAL   | Text  | Text       | Text      | Text | Text   | Text      | Text  |
| cobol fld| chco  | nash       | nalg      |      | locl   |           |       |

composite key - {charge_code, language}

ISO_country
text

region
text

district
int64

branch_id
int64

valid_from
datetime

valid_to
datetime

table in Oracle DB: COBSOFT.NRTCHBEZ

#### descriptions
| ID (PK)  | description | bullet_points|
| -------- | --------    |-----         |
| SERIAL   | Text        |[]Text


#### charge_description

| ID  | description_id |
| ----| --------       |
| INT | INT            |


#### descriptions_html
| ID (PK)  | description_html_id | bullet_points|
| -------- | --------            |-----         |
| SERIAL   | Text                |[]Text


#### charge_description_html
LISO
| ID  | description_id |
| ----| --------       |
| INT | INT            |

|idtwtw|country_iso|region|district|branch_id|
|--|-----------|------|--------|---------|
| 1 | "DE"       | ""   | 10     | 1000    |
| 2 | "DE"       | ""   | 0      | 0       |
| 3 | ""         | ""   | 10     | 0       |
| 4 | ""         | ""   | 0      | 1000    |
| 5 | "DE"       | ""   | 10     | 0       |


## selection hierarchy

DECODE(liso, ' ', 0, POWER(2, 1)) +
DECODE(rtar, ' ', 0, POWER(2, 2)) +
DECODE(dist, 0  , 0, POWER(2, 3)) +
DECODE(cit,  0  , 0, POWER(2, 4)) weight

## questions

1. It looks like we can put all the data into one table. Do we need a relational database here?



## current endpoint

    {{ php_rentaloffers.base_url  }}/chargenames


    {
    "pickupStation": 11,
    "pickupDate": "2020-01-01",
    "chargeCodes": ["LD", "BF"]
    }

    {
      "LD": {
        "shortName": "Loss Damage Waiver",
        "longName": "Loss Damage Waiver",
        "pictogram": "LD_car",
        "termsConditionsAnchor": "LD",
        "webDescription": "Avoid high costs: Limit your responsibility for vehicle damage and theft",
        "webDescriptionHtml": "Avoid high costs: Limit your responsibility for vehicle damage and theft",
        "webDescriptionBulletPoints": [],
        "webDescriptionBulletPointsHtml": []
      },
      "BF": {
        "shortName": "minimum excess LDW",
        "longName": "Loss Damage Waiver (including Theft Protection) with minimum excess",
        "pictogram": "LD_car",
        "termsConditionsAnchor": "",
        "webDescription": "Our safest solution: Protection in the event of vehicle damage and theft",
        "webDescriptionHtml": "Our safest solution: Protection in the event of vehicle damage and theft",
        "webDescriptionBulletPoints": [],
        "webDescriptionBulletPointsHtml": []
      }
    }

We are also sending this using headers:
```
Sx-Language: en
Sx-Locale: en_EN
```