From c92a2dbf83251faa859b67ef2d36b55eb51c5af9 Mon Sep 17 00:00:00 2001 From: jkocon Date: Fri, 22 May 2026 14:14:13 +0200 Subject: [PATCH] Upload files to "/" --- Admin - Documentation.md | 683 +++++++++++++++++++++++++++++++++++++++ Generic Documentation.md | 287 ++++++++++++++++ 2 files changed, 970 insertions(+) create mode 100644 Admin - Documentation.md create mode 100644 Generic Documentation.md diff --git a/Admin - Documentation.md b/Admin - Documentation.md new file mode 100644 index 0000000..03c9658 --- /dev/null +++ b/Admin - Documentation.md @@ -0,0 +1,683 @@ +# Technical Documentation — Admin Folder + +## Table of Contents +1. [SR_Macro.xlsb — Main Macro](#1-sr_macroxlsb--main-macro) + - [Sheets](#sheets--overview) + - [VBA Modules](#vba-modules--code-architecture) +2. [Subupload with Bundled Indicator.xlsx — Upload File](#2-subupload-with-bundled-indicatorxlsx--upload-file) +3. [folder create.bat — Folder Creation Script](#3-folder-createbat--folder-creation-script) +4. [icon.ico — Application Icon](#4-iconico--application-icon) +5. [End-to-End Data Flow](#5-end-to-end-data-flow) +6. [Glossary](#6-glossary) + +--- + +## 1. SR_Macro.xlsb — Main Macro + +An Excel Binary Workbook (`.xlsb`) containing VBA macros and 7 data sheets. This is the heart of the entire system. + +### Sheets — Overview + +| Sheet | Role | +|---|---| +| MACRO | Control panel — run-time settings | +| AIS Import | Data from the Disney central system (AIS) | +| AIS Export | Comparison: operator data vs AIS | +| MailManager | Log of processed emails | +| MailManager_Mapping | Per-operator configuration | +| Mapping | Lookup tables (months, channels, packages) | +| Error_Log | Processing error log | + +--- + +### Sheet 1: MACRO — Control Panel + +Used to configure settings before running the macro. Contains three parameters: + +| Field | Example value | Description | +|---|---|---| +| `Mailbox:` | `DWSS.Autocashsupport@disney.com` | The Outlook mailbox from which the macro retrieves operator emails | +| `Service Month:` | `April` | The month for which reports are being processed | +| `Latest AIS file:` | `P08_FY24_Subs_report 01.05.2024` | Name of the most recently loaded AIS system report | + +**What the macro does on execution:** +1. Connects to the Outlook mailbox specified in the `Mailbox` field +2. Scans the inbox for new emails from operators with the subject `RAPORTY` +3. Downloads Excel attachments and saves them to `Import/POL/[operator_id]/` +4. For each operator, calls the appropriate sub-macro (`R_MROSA_EXCL.Run` or `R_MROSA_PDF.Run`) +5. Generates an output report (`.xls`) and saves it to `Admin/Export/PL/[Operator]/` +6. Archives the email (`.msg`) alongside the report + +--- + +### Sheet 2: AIS Import — Central System Data + +Data retrieved from the AIS (Affiliate Information System) — Disney's central database of historical subscriber figures. Used as the baseline for comparison against operator-submitted data. + +**Structure (22 columns):** + +| Column | Description | Example | +|---|---|---| +| `AFFILIATE NUMBER` | Affiliate ID (operator group) | `15259` | +| `COUNTRY-SERVED2` | Country code | `POL` | +| `STATE-SERVED` | Region / voivodeship | `ALL` | +| `CITY-SERVED` | City | `ALL` | +| `SYSTEM-NAME` | Full operator system name | `24IT MEDIA SP. Z O.O.` | +| `SYSTEM-ID` | Numeric system ID in AIS | `124266` | +| `NETWORK` | Numeric channel ID | `825` | +| `SERVICE-CODE` | Package code | `PL13` | +| `CABLE-HOUSEHOLDS` | Number of households with access | (usually empty for PL) | +| `SUBSCRIBERS` | Number of subscribers | `1` | +| `SMSO-IND` | SMSO indicator | (usually empty) | +| `PO-NUMBER` | Purchase order number | (usually empty) | +| `SERVICE-MONTH` | Service month (number) | `4` | +| `SERVICE-YEAR` | Service year | `2024` | +| `NETWORK-NAME` | Channel name | `DISNEY CHANNEL` | +| `SERVICE-NAME` | Package name | `ALL DISNEY/BABY/FX/NG` | +| `Frequency` | Reporting frequency | `MONTHLY` | +| `Last Reported Subs` | Previously reported subscriber count | `1` | +| `Last Date` | Date of previous report | `2024-03-31` | +| `Service Area` | Service region | `Poland` | +| `Legal Entity` | Disney legal entity | `TWDCPO` | +| `Bundle Indicator` | Bundle identification key | `124266PL13` | +| `Bundled` | Is it a bundled package? | `Yes` / (empty) | + +**Record identification key:** `[SYSTEM-ID][SERVICE-CODE]` e.g. `124266PL13` + +--- + +### Sheet 3: AIS Export — Data Comparison + +A side-by-side comparison of operator-submitted data against historical AIS data. The macro uses this sheet to flag discrepancies. + +**Additional columns relative to AIS Import:** + +| Column | Description | Possible values | +|---|---|---| +| `Compare` | Comparison result | `Match` / `ok` / `Diff.` | +| `Column1` | Difference (new − previous) | number (negative = decline) | +| `Column2` | Row key | e.g. `14476121929DBABABY TV ` | + +**`Compare` value meanings:** + +| Value | Meaning | +|---|---| +| `Match` | Perfect match (difference = 0) | +| `ok` | Small, acceptable difference | +| `Diff.` | Large difference — requires manual review | + +**Example discrepancy:** +``` +SM Polnoc – BABY TV, DBA: new=5576, previous=3560 → Diff., change=−2016 +``` + +--- + +### Sheet 4: MailManager — Email Log + +A register of all emails processed by the macro. + +**Structure:** + +| Column | Description | Example | +|---|---|---| +| `sender` | Sender email address | `renata@eaw.com.pl` | +| `subject` | Email subject | `RAPORTY` | +| `time` | Date and time (Excel serial number) | `45419.577...` | +| `status` | Processing status | `New` | +| `filename` | Full path of the saved attachment | `C:\...\Import\POL\13245\CITY NET SP ZOO - 20240614151842_DisneyC.N..xlsx` | + +**How email identification works:** +- The macro checks the subject line: if it contains `RAPORTY` → the email qualifies for processing +- The sender address is matched to an operator via the `Email` column in `MailManager_Mapping` +- Status `New` = just processed; on error, the entry is written to `Error_Log` instead + +--- + +### Sheet 5: MailManager_Mapping — Operator Configuration + +The key configuration sheet — defines every operator handled by the system. One row = one operator. The sheet has two halves: left side = direct operators, right side = Nasza Wizja sub-platform operators. + +**Columns — direct operator (left side):** + +| Column | Description | Example | +|---|---|---| +| `Name` | Full operator name | `CITY NET SP ZOO` | +| `Cntr` | Country code | `POL` | +| `Email` | Operator email address | `renata@eaw.com.pl` | +| `Bundle type` | Channel for bundle | `NAT GEO CORE ` | +| `type` | Bundle package code | `DEX` | +| `Bundle type2` | Second bundle channel (optional) | | +| `type2` | Second bundle package code (optional) | | +| `Special Bundle` | Special bundle indicator | `SpecBundle` | +| `SYSTEM-ID1` | System ID 1 in AIS | `119971` | +| `SYSTEM-ID 2` | System ID 2 (if operator has multiple) | | +| `AFFILIATE-ID` | Affiliate ID | `13245` | +| `AFFILIATE-ID 2` | Second affiliate ID | | +| `Folder Location` | Export folder path | `CITY NET ` | +| `Doc Type` | File format received from operator | `xlsx` / `xls` / `ods` / `pdf` | +| `Call Macro` | Sub-macro to invoke | `R_MROSA_EXCL.Run` | +| `comments` | Operational notes | `n` / `q` / `a` / `SKAN` / `x` | +| `Tested?` | Whether the configuration has been tested | `n` (no) / `q` (quarterly) | + +**Columns — Nasza Wizja operator (right side, same logic):** + +| Column | Description | +|---|---| +| `SYSTEM-NAME` | Nasza Wizja operator name | +| `SYSTEM-ID` | System ID in AIS | +| `AFFILIATE-ID` | Affiliate ID | +| `Folder Location` | e.g. `Nasza Wizja\AMBIT` | +| `BUNDLE` | Bundle channel | +| `Bundle Type` | Bundle package code | +| `Sum of Bundles?` | Whether to aggregate bundles across multiple sub-operators | +| `Test` | Test status | + +**Document types (`Doc Type`):** + +| Value | File format | +|---|---| +| `xlsx` | Excel (newer format) | +| `xls` | Excel (legacy format) | +| `ods` | OpenDocument Spreadsheet | +| `pdf` | PDF (scanned document) | + +**Sub-macros (`Call Macro`):** + +| Macro | Used for | +|---|---| +| `R_MROSA_EXCL.Run` | Excel and ODS files — fully automated | +| `R_MROSA_PDF.Run` | PDF files — requires OCR or manual data entry | + +**Comment codes (`comments`):** + +| Code | Meaning | +|---|---| +| `n` | Normal operator, no special handling | +| `q` | Quarterly reporting (not monthly) | +| `a` | Anomaly — requires attention | +| `SKAN` | Operator submits a paper scan | +| `x` | Not supported / operator inactive | + +--- + +### Sheet 6: Mapping — Lookup Tables + +A reference sheet containing mappings used by the macro when parsing operator data. + +**Table 1 — Months (EN/PL ↔ number):** + +| English | Polish | Number | +|---|---|---| +| January | sty | 1 | +| February | lut | 2 | +| March | mar | 3 | +| April | kwi | 4 | +| May | maj | 5 | +| June | cze | 6 | +| July | lip | 7 | +| August | sie | 8 | +| September | wrz | 9 | +| October | paz | 10 | +| November | lis | 11 | +| December | gru | 12 | + +**Table 2 — Channels (numeric ID → name):** + +| ID | Channel | +|---|---| +| 665 | BABY TV | +| 668 | FX | +| 679 | NAT GEO CORE | +| 680 | NAT GEO WILD | +| 681 | NAT GEO PEOPLE | +| 701 | FX COMEDY | +| 825 | DISNEY CHANNEL | +| 831 | DISNEY JUNIOR | +| 835 | DISNEY XD | +| 865 | NAT GEO + EMEA | +| 867 | NAT GEO PLAY EMEA | + +**Table 3 — Package codes (SERVICE-CODE → SERVICE-NAME):** + +| Code | Name | +|---|---| +| `BASIC` | Basic / Analogue Basic | +| `DBA` | Digital Basic | +| `EXT` | Extended | +| `DEX` | Digital Extended | +| `RES` | Residential | +| `ANG` | Analogue | +| `PL1` | FX/COM/NG/WILD/PEO | +| `PL13` | ALL DISNEY/BABY/FX/NG | +| `PL14` | ALL FX, NG & BABY | +| `THE` | Theme Package | +| `HD` | High Definition | +| `IPL` | IPLA | +| `OTT` | OTT | +| `FNG` | FX, NG CORE & NG WILD | +| `BU2` | NAT GEO & NAT GEO WILD | +| `COM` | Commercial | +| `PPR` | Pre-Paid Residential | +| `DCJ` | DC & Junior | +| `CAN` | CANAL+ Service | + +**Table 4 — Bundle Indicator (key ↔ Bundled value):** +Key format: `[SYSTEM-ID][SERVICE-CODE]`, e.g. `124266PL13` → `Bundled = Yes` + +--- + +### Sheet 7: Error_Log — Error Journal + +A record of all emails and reports that could not be processed automatically. + +**Structure:** + +| Column | Description | +|---|---| +| `Email` | Sender address | +| `Topic` | Email subject | +| `Client` | Client name / contact | +| `Country` | Country | +| `Error` | Error code | +| `Reason` | Reason for rejection | +| `Date` | Date of occurrence | + +**Example error entry:** +``` +Email: malgosia@wektormedia.pl +Topic: RAPORT WEKTOR SP. Z O.O. ŻAGAŃ +Error: NOT PROCESSED +Reason: Not qualified for processing +``` +> This means the operator is not configured in `MailManager_Mapping` — the macro found no match for the sender's email address. + +--- + +### VBA Modules — Code Architecture + +`SR_Macro.xlsb` contains 13 VBA modules. Each is described below. + +#### Module Overview + +| Module | Type | Role | +|---|---|---| +| `ThisWorkbook.cls` | Workbook class | Displays the loading screen when the file is opened | +| `A_MailManager.bas` | Standard module | Main orchestrator — email handling and operator queuing | +| `B_CompareChannels.bas` | Standard module | Channel-matching engine (fuzzy match + bundle logic) | +| `B_MAPPING.bas` | Standard module | Auxiliary data-mapping helpers | +| `R_MROSA_EXCL.bas` | Standard module | Excel / ODS report processor | +| `R_ERAP_SOP.bas` | Standard module | Nasza Wizja SOP report processor | +| `R_MROSA_PDF.bas` | Standard module | PDF report processor (OCR text) | +| `R_MROSA_DOC.bas` | Standard module | Word document processor (legacy / fallback path) | +| `A_AIS_file.bas` | Standard module | AIS file import and output file export | +| `X_Funcitons.bas` | Standard module | Utility functions (regex, text cleaning) | +| `X_RangeToHTML.bas` | Standard module | Excel range → HTML conversion (for email body) | +| `frmLoading.frm` | UserForm | Splash / loading screen | +| `frmProgressForm.frm` | UserForm | Progress bar during import | + +--- + +#### `ThisWorkbook.cls` — startup + +Single procedure: `Workbook_Open()` — triggered automatically when the file is opened. Calls `ShowLoadingScreen`, which displays `frmLoading` briefly before handing control back to the user. + +--- + +#### `A_MailManager.bas` — main orchestrator + +Contains the global variables used throughout the macro: + +| Global variable | Type | Description | +|---|---|---| +| `EImportFile` | String | Full path to the downloaded attachment | +| `EDate` | String | Report date for the operator | +| `EType` | String | File type (xlsx / pdf / ods) | +| `EBundle` | String | Bundle channel name (e.g. `NAT GEO CORE`) | +| `SpecBundle` | Boolean | Whether a special bundle (NAT GEO CORE sum) applies | +| `MFileName` | String | Name of the .msg archive file to save | +| `ServMonth` | Integer | Service month number (1–12) | + +**Main procedure: `Import_Mails_and_Call_Macros`** + +Step by step: + +1. **Connect to Outlook** — reads the mailbox name from cell `I3` of the MACRO sheet. +2. **Iterate the inbox** — loops over all items in reverse order (newest first). +3. **Identify the operator** — two mechanisms: + - Match sender email address against column C in `MailManager_Mapping` + - If no match: search for the operator name in the email body +4. **Nasza Wizja path** — if sender is `noreply-sop@naszawizja.org`, the macro uses column R of the mapping and calls `R_ERAP_SOP.Run`. +5. **Download attachment** — saved to `Import\[country]\[affiliate_id]\[name]-[timestamp]_[file]`; a `.msg` archive is saved alongside it. +6. **Invoke sub-macro** — `Application.Run Emacro` (value from the `Call Macro` column in the mapping, e.g. `R_MROSA_EXCL.Run`). +7. **On success** — email moved to the `Completed import` subfolder; Outlook category set. +8. **On error** — exception logged in the `Error_Log` sheet (fields: Email, Topic, Client, Country, Error, Reason, Date). + +--- + +#### `B_CompareChannels.bas` — matching engine + +Two key procedures: + +**`FuzzyMatch(s1, s2) → Boolean`** + +Channel name matching algorithm: +- Computes the Levenshtein distance between two strings +- Distance ≤ 2 → returns `True` (match) +- Additionally: hard-coded aliases for Polish variant names: + +| Variant in operator report | Channel name in AIS | +|---|---| +| `NATIONAL GEOGRAPHIC` | `NAT GEO CORE` | +| `NATIONAL GEOGRAPHIC WILD` | `NAT GEO WILD` | +| `NATIONAL GEOGRAPHIC PEOPLE` | `NAT GEO PEOPLE` | +| `DISNEY` | `DISNEY CHANNEL` | +| `FOX` | `FX` | +| `FOX COMEDY` | `FX COMEDY` | + +**`Compare()`** + +Main comparison procedure: +1. Filters the `AIS Import` sheet by the current operator's affiliate ID +2. Copies matching records into the `Temp` sheet +3. For each channel in the operator's report: attempts `FuzzyMatch` against every channel name in AIS +4. On match: writes the subscriber count into the corresponding row in `AIS Export` +5. No match: writes `Not Found` +6. If `SpecBundle = True`: calls `Sum_NATGEOCORE` (sums NAT GEO CORE values across multiple sub-operators) + +--- + +#### `B_MAPPING.bas` — mapping helpers + +**`Sum_NATGEOCORE`** — sums NAT GEO CORE subscriber values from the `Temp` sheet (used when one operator reports multiple systems). + +**`Mapping_Sysnbr`** — remaps the system number when the operator name in the file differs from the name registered in AIS (e.g. the operator has been renamed). + +--- + +#### `R_MROSA_EXCL.bas` — Excel / ODS processor + +Processes reports in `.xlsx`, `.xls`, or `.ods` format. + +Algorithm: +1. Creates a working sheet named `Temp` +2. Opens the operator file with `Workbooks.Open` +3. Locates headers using `Range.Find`: + - `"raport o stanie"` → row containing the month name + - `"SUMA"` → totals row (end of data) + - `"Pakiet"` → column containing package codes +4. **Month validation** — compares the month found in the file against `ServMonth`; mismatch → sets `varReason = "Incorrect month"` and exits +5. **Row loop** — for each data row: + - `Val1` = channel name + - `Val2` = package code + - `Val3` = system number (SYSTEM-ID) + - `Val4` = affiliate number (AFFILIATE-ID) + - `Val5` = subscriber count (average: (month start + month end) / 2) +6. Calls `Compare()` → results written to `AIS Export` +7. Fills columns 16–17 (bundle indicator) after Compare completes + +--- + +#### `R_ERAP_SOP.bas` — Nasza Wizja processor + +Processes files from the Nasza Wizja platform (SOP format — fixed column layout). + +Differences from `R_MROSA_EXCL`: +- Channels: column B; packages: column F; subscribers: column E — fixed positions +- Data starts at row 19 +- Month read from cell C15 +- Multiple rows may relate to different Nasza Wizja sub-operators (separate iteration over column R of the mapping) + +--- + +#### `R_MROSA_PDF.bas` — PDF processor + +Processes reports converted from PDF to plain text (by PdfGrabber). + +Algorithm: +1. Opens the text file (`.txt`) — OCR output +2. Regex `"za okres:"` → extracts the reporting month +3. Regex `"arytmetyczna"` → extracts average subscriber values (Polish decimal format: comma as decimal separator) +4. Parses text lines, builds a data structure identical to the EXCL processor +5. Calls `Compare()` → results in `AIS Export` + +--- + +#### `R_MROSA_DOC.bas` — Word processor (legacy) + +Alternative path for operators who send reports as Word documents (`.doc` / `.docx`). + +- Opens the document via COM (`CreateObject("Word.Application")`) +- Parsing logic analogous to R_MROSA_EXCL +- Rarely used in practice (most operators use Excel) + +--- + +#### `A_AIS_file.bas` — AIS file handler + +Two procedures: + +**`AISimp()`** — import data from the AIS central system: +- Opens a file dialog (`Application.GetOpenFilename`) — user selects the AIS file +- Pastes range A2:U[lastRow] into the `AIS Import` sheet +- Updates cell `I30` of the MACRO sheet with the loaded file name + +**`AISxpt()`** — export results to file: +- Copies the contents of the `AIS Export` sheet +- Removes the header row and column 22 +- Saves as `System Reports\Export\Exported data_DD.MM.YY.xlsx` + +--- + +#### `X_Funcitons.bas` — utility functions + +| Function | Description | +|---|---| +| `RemoveCommaInValue(s)` | Removes commas from numeric values (Polish format → AIS format) | +| `RemoveSpecialChars(s)` | Strips special characters from operator names (regex) | +| `RegExpExtract(s, pattern)` | Extracts a substring using a regular expression | +| `CountLinesOfCode()` | Counts VBA lines of code in the file (developer tool) | + +--- + +#### `X_RangeToHTML.bas` — range to HTML + +Function `RangetoHTML(rng As Range) → String`: +- Saves the given range as a temporary HTML file +- Reads it back as a string +- Used when generating an email body containing a formatted data table (readable by the recipient) + +--- + +#### `frmLoading.frm` — loading screen + +A simple UserForm displayed when the file is opened. Contains a logo/graphic and a `CloseForm()` method. Closed automatically after initialisation (`Workbook_Open`) completes. + +--- + +#### `frmProgressForm.frm` — progress bar + +UserForm with a progress bar shown during email import. The `UserForm_Activate` procedure calls the `MailManager` procedure (the actual import logic) and displays the message `"Import in progress..."`. The progress bar is updated as each email is processed. + +--- + +## 2. Subupload with Bundled Indicator.xlsx — Upload File + +This file is used to **manually or semi-automatically upload data to the AIS system**. It contains one sheet, `Report 1`, with **5,029 rows** of global data (not limited to Poland). + +### Data Scope +- **78 countries** — a global view covering all EMEA and further markets +- **22 Disney legal entities** +- **39 channels** (networks) +- **355 package names** / 360 package codes +- **5 reporting frequencies** + +### Structure (22 columns — identical to AIS Import) + +| Column | Description | +|---|---| +| AFFILIATE-ID | Affiliate ID | +| COUNTRY-SERVED | Country code | +| STATE-SERVED | Region | +| CITY-SERVED | City | +| SYSTEM-NAME | Operator system name | +| SYSTEM-ID | System ID | +| NETWORK | Channel ID (numeric) | +| SERVICE-CODE | Package code | +| CABLE-HOUSEHOLDS | Number of households with access | +| SUBSCRIBERS | **Subscriber count to be reported** | +| SMSO-IND | SMSO indicator | +| PO-NUMBER | Purchase order number | +| SERVICE-MONTH | Month (1–12) | +| SERVICE-YEAR | Year | +| NETWORK-NAME | Channel name | +| SERVICE-NAME | Package name | +| Frequency | Frequency (MONTHLY / QUARTERLY / etc.) | +| Last Reported Subs | Previously reported count | +| Last Date | Date of previous report | +| Service Area | Service area | +| Legal Entity | Disney legal entity | +| Bundled | `Yes` if the package is bundled | + +### How It Is Used + +1. After processing all operator reports, `SR_Macro.xlsb` updates the `SUBSCRIBERS` field for Polish (and other) operator records +2. The user verifies data in the `AIS Export` sheet (comparison view) +3. The file is then uploaded to the Disney AIS portal manually + +### The Bundled Column — Explanation +`Bundled = Yes` means the operator has purchased a bundled package (e.g. `PL13 = ALL DISNEY/BABY/FX/NG`). A single subscriber figure then covers multiple channels simultaneously. The macro must account for this when mapping data channel-by-channel into AIS. + +### Key Legal Entities + +| Code | Country | +|---|---| +| `TWDCPO` | Poland (The Walt Disney Company Poland) | +| `TWDCDE` | Germany | +| `TWDCGB` | United Kingdom (global FNG EMEA entity) | +| `TWDCBG` | Balkans / Central Europe | +| `TWDCFR` | France | +| `TWDCSEA` | Southeast Asia | + +--- + +## 3. folder create.bat — Folder Creation Script + +A Windows command-line (`cmd`) batch script that creates the operator folder structure inside `Import/POL/`. + +### Script content (excerpt) +```bat +md 12781 +md 12784 +md 12786 +... +md 15258 +``` + +### What it does +- Creates **~246 numeric sub-folders** +- Each number is an **affiliate ID** from the AIS system (the `AFFILIATE-ID` column in `MailManager_Mapping`) +- These folders are the drop target for `.xlsx` and `.msg` files received from operators + +### How to run +1. Open a Command Prompt (`cmd`) in the `Import/POL/` directory +2. Execute: `folder create.bat` +3. Folders will be created; if a folder already exists, `md` will print an error but the script continues + +### ID Range +- Lowest: `12781` +- Highest: `15258` +- Most IDs correspond to operators in `MailManager_Mapping`; a few may be reserved for future use + +### Note +The script is intended for one-time execution during initial system setup or when new operators are onboarded. It is not required for day-to-day macro operation. + +--- + +## 4. icon.ico — Application Icon + +A Windows icon file (`.ico` format) used by the shortcut `SR_Macro - Shortcut.lnk`. It gives the shortcut a recognisable appearance on the desktop or in Windows Explorer. It has no effect on system behaviour. + +--- + +## 5. End-to-End Data Flow + +``` +┌──────────────────────────────────────────────────────────────┐ +│ CABLE / IPTV OPERATOR │ +│ Fills in the Excel template (SUB REPORT sheet): │ +│ - channels, packages, subscriber counts (start / end of │ +│ month) │ +│ Sends to: intl.emea.poland.subs.reports@disney.com │ +│ Subject: RAPORTY │ +└──────────────────────┬───────────────────────────────────────┘ + │ email with .xlsx / .ods / .pdf attachment + ▼ +┌──────────────────────────────────────────────────────────────┐ +│ OUTLOOK MAILBOX │ +│ DWSS.Autocashsupport@disney.com │ +└──────────────────────┬───────────────────────────────────────┘ + │ Macro scans the inbox + ▼ +┌──────────────────────────────────────────────────────────────┐ +│ SR_Macro.xlsb — Sheet: MailManager │ +│ 1. Identify sender → look up in MailManager_Mapping │ +│ 2. Download attachment → Import/POL/[affiliate_id]/ │ +│ 3. Save .msg (email archive) │ +│ 4. Log entry in MailManager (sender, subject, time, │ +│ status=New) │ +└──────────────────────┬───────────────────────────────────────┘ + │ Invoke sub-macro + ▼ +┌──────────────────────────────────────────────────────────────┐ +│ R_MROSA_EXCL.Run or R_MROSA_PDF.Run │ +│ - Parse operator file (SUB REPORT sheet) │ +│ - Map channels and packages via the Mapping sheet │ +│ - Retrieve historical data from AIS Import │ +│ - Calculate average = (month start + month end) / 2 │ +│ - Detect bundles (Bundled=Yes) → one record covers N chans │ +└──────────────────────┬───────────────────────────────────────┘ + │ + ┌────────────┴──────────────┐ + ▼ ▼ +┌─────────────────────┐ ┌──────────────────────────────────┐ +│ AIS Export │ │ Admin/Export/PL/[Operator]/ │ +│ Comparison: │ │ YYYYMMDD_HHMMSS_DISNEY10...xls │ +│ new vs historical │ │ YYYYMMDD_HHMMSS_[email_subj].msg│ +│ Match / ok / Diff. │ └──────────────────────────────────┘ +└─────────────────────┘ + │ + ▼ +┌──────────────────────────────────────────────────────────────┐ +│ Subupload with Bundled Indicator.xlsx │ +│ SUBSCRIBERS field updated for Polish (and other) operators │ +└──────────────────────┬───────────────────────────────────────┘ + │ Manual upload via AIS portal + ▼ +┌──────────────────────────────────────────────────────────────┐ +│ AIS — Disney Affiliate Information System │ +│ Central subscriber database │ +│ Generates → System Reports/Import/P[MM]_FY[YY]_Subs_report │ +└──────────────────────────────────────────────────────────────┘ +``` + +--- + +## 6. Glossary + +| Term | Explanation | +|---|---| +| **AIS** | Affiliate Information System — Disney's central system for collecting subscriber data | +| **Affiliate** | An operator holding a Disney licence agreement; identified by AFFILIATE-ID | +| **System** | A specific cable / IPTV network belonging to an affiliate; one affiliate may have multiple systems (SYSTEM-ID) | +| **Bundle / Bundled** | A combined package — the operator has purchased a single tier covering multiple Disney channels simultaneously | +| **Service Code** | The internal package code used by the operator (e.g. `DBA`, `PL13`) — resolved via the Mapping sheet | +| **Legal Entity** | The Disney legal entity that issues invoices (e.g. `TWDCPO` = The Walt Disney Company Poland) | +| **Nasza Wizja** | A Polish distribution platform aggregating smaller cable operators | +| **R_MROSA_EXCL** | VBA sub-macro for processing Excel / ODS files | +| **R_MROSA_PDF** | VBA sub-macro for processing PDF files | +| **SMSO-IND** | Same Month Submission Only Indicator — an AIS system flag | +| **FNG EMEA** | Fox Networks Group EMEA — the Disney unit responsible for FX / NGC channels in EMEA | +| **Service Month / Year** | The month and year for which subscriber data is being reported | +| **Last Reported Subs** | Data from the previous report — used as the baseline for the `Compare` column in AIS Export | +| **Frequency** | Reporting cadence: `MONTHLY`, `QUARTERLY`, `SEMI ANNUALLY`, `ANNUALLY` | diff --git a/Generic Documentation.md b/Generic Documentation.md new file mode 100644 index 0000000..b53c731 --- /dev/null +++ b/Generic Documentation.md @@ -0,0 +1,287 @@ +# Documentation: Subscribers Reporting Automation + +## Table of Contents +1. [System Overview](#1-system-overview) +2. [Folder Structure](#2-folder-structure) +3. [Main Components](#3-main-components) +4. [File Naming Conventions](#4-file-naming-conventions) +5. [Workflow](#5-workflow) +6. [Operator List](#6-operator-list) +7. [System Reports](#7-system-reports) + +--- + +## 1. System Overview + +**Subscribers Reporting Automation** is an Excel VBA macro-based system for automating the subscriber reporting process for Disney channel packages distributed by Polish cable and IPTV operators. + +### Purpose +- Automatically process subscriber reports received from operators +- Generate and distribute standardised reports back to operators +- Support the Polish market (PL/POL) for Disney channel package distribution + +### Package +Primary package covered by reporting: **DISNEY10** (Disney channel bundle). + +--- + +## 2. Folder Structure + +``` +Subscribers Reporting Automation/ +│ +├── Admin/ # Administration folder (system core) +│ ├── SR_Macro.xlsb # Main Excel macro file +│ ├── Subupload with Bundled Indicator.xlsx # AIS upload file +│ ├── icon.ico # Application icon +│ ├── folder create.bat # Operator folder creation script +│ │ +│ └── Export/ +│ └── PL/ # Export for the Polish market +│ ├── [Operator Name]/ # One folder per operator +│ │ ├── *.xls # Generated Excel reports +│ │ └── *.msg # Outlook email archives +│ │ +│ └── Nasza Wizja/ # Sub-distribution platform +│ └── [Operator Name]/ +│ +├── Import/ +│ └── POL/ # Import for the Polish market +│ └── [Operator ID]/ # Folder named by numeric operator ID +│ ├── [Operator] - [timestamp]_Disney*.xlsx +│ └── [Operator] - [timestamp]_RAPORTY.msg +│ +├── System Reports/ # System-level reports +│ ├── Export/ # Data exported from the system +│ │ └── Exported data_DD.MM.YY.xlsx +│ └── Import/ # Data imported into the system +│ └── P[period]_FY[year]_Subs_report DD.MM.YYYY.xlsx +│ +└── SR_Macro - Shortcut.lnk # Shortcut to the main macro file +``` + +--- + +## 3. Main Components + +### `Admin/SR_Macro.xlsb` — Main Macro +An Excel Binary Workbook (`.xlsb`) containing VBA macros that execute the entire automation process. This is the central component of the system. + +**Functions:** +- Read operator reports from the `Import/POL/` folder +- Process and validate subscriber data +- Generate standardised reports (`.xls`) +- Create and archive email messages (`.msg`) +- Write results to `Admin/Export/PL/` + +### `Admin/folder create.bat` — Folder Creation Script +A Windows batch script that creates numeric sub-folders inside `Import/POL/`. Each folder corresponds to a numeric operator ID in the system. + +Folders created (example operator IDs): `12781`, `12784`, ..., `15258` + +### `Admin/Subupload with Bundled Indicator.xlsx` +The file used to upload processed subscriber data — including bundled-package indicators — to the Disney AIS portal. + +### `System Reports/` +System-level reporting files: +- **Export**: Data exported from the system — `Exported data_*.xlsx` files dated by export day +- **Import**: Subscriber reports imported from the central system — `P[period]_FY[year]_Subs_report *.xlsx` files (e.g. `P07_FY24` = Period 7 / Fiscal Year 2024) + +--- + +## 4. File Naming Conventions + +### Export reports (.xls) +``` +YYYYMMDD_HHMMSS_DISNEY10thismonth[OperatorID][YYYYMM].xls +``` +Example: `20240410_134855_DISNEY10thismonth88202311.xls` +- `20240410` — report generation date (10 April 2024) +- `134855` — generation time (13:48:55) +- `DISNEY10` — channel package +- `thismonth` — current-month report +- `88` — operator ID +- `202311` — reporting period (November 2023) + +### Export email archives (.msg) +``` +YYYYMMDD_HHMMSS_[email_subject].msg +``` +The email subject encodes the date, operator name and reporting month, e.g.: +`12.10.23NaszaWizjaRaportabonenckiodfirmyORIONBaejHesszamiesicLISTOPAD` + +### Import files (.xlsx) +``` +[Operator Name] - YYYYMMDDHHMMSS_Disney[package].xlsx +``` +Example: `CITY NET SP ZOO - 20240614111758_DisneyC.N..xlsx` + +### Import email archives (.msg) +``` +[ID][Operator Name] - YYYYMMDDHHMMSS_RAPORTY.msg +``` + +### System reports +- Export: `Exported data_DD.MM.YY.xlsx` +- Import: `P[MM]_FY[YY]_Subs_report DD.MM.YYYY.xlsx` + +--- + +## 5. Workflow + +``` +[Operator] --sends report--> [Import/POL/ID/] --processed by SR_Macro--> [Export/PL/Operator/] + | + v + [System Reports/Export/] + (data aggregated for AIS upload) +``` + +### Step 1: Import operator reports +Cable/IPTV operators send monthly subscriber reports: +- `.xlsx` files are saved to `Import/POL/[operator_id]/` +- Associated email messages (`.msg`) are archived in the same folder + +### Step 2: Processing by SR_Macro.xlsb +The Excel macro reads the imported files, validates the data, and generates reports in the format required by Disney. + +### Step 3: Export reports to operators +Generated files are written to `Admin/Export/PL/[Operator Name]/`: +- `.xls` — subscriber report for the operator +- `.msg` — archived copy of the outbound email + +### Step 4: System reporting +Aggregated data is exported to `System Reports/Export/` and imported into the central Disney system via `System Reports/Import/`. + +--- + +## 6. Operator List + +### Direct operators (Admin/Export/PL/) +| Operator | Notes | +|---|---| +| AP MEDIA | | +| ASTA-NET / ASTA GROUP | | +| AVIOS | Formerly KORBANK MEDIA C | +| Beskidzka Telewizja Kablowa Bestkabel | | +| BIALOGARDZKA SPOLDZIELNIA | | +| BYDGOSKA TK GAWEX / Gawex-Media | | +| CANAL+ POLSKA S.A. | | +| CASTOR ENTERPRISE | Formerly FERO AGNIESZKA BUDNER | +| CG Multimedia | | +| CHOPIN TELEWIZJA KABLOWA | Formerly TK CHOPIN | +| CITY NET / CITY SAT GORDZIELIK / CITYNET | | +| CYFROWY POLSAT S.A. | incl. IPLA and OTT | +| CZESTOCHOWSKA SM NASZA PRACA | | +| Debacom | | +| DOLSAT | | +| DOMEL MEDIA | | +| EAST & WEST | | +| ELART | Formerly Stanislaw Zakrzewski | +| ELEKTRONIX TELEKOGK Sp. k. | | +| ELPOS | | +| ELTRONIK | Formerly Eltronik Media Sp.k. | +| ELWICO SC | | +| EURONET / EURONET Norbert Saniewski Sp.J. | | +| G-NET T | Formerly WWNET Bozena Furgol | +| Global Media | | +| Gorzowska Telewizja Przewodowa | | +| GRABOWSKI MARIUSZ INTERARENA / InterArena | | +| HORYZONT MEDIA SA | | +| HRUBIESZOWSKA TELEWIZJA KABLOWA SC | | +| IDEALAN | Formerly IDEALAN SPOLKA JAWNA | +| IMPERIUM TELECOM CZESLAW CHLEWICKI | | +| INEA S.A. | DC, NG & FOX | +| INFO-ART | | +| INSANT S.C. | J.Jasinski, R.Mieszkowicz | +| Integra, Pawel Mroz | | +| INTERNET UNION SA | | +| ITV MEDIA | | +| JG Satel | | +| JMDI JACEK MALESZKO | | +| Karpacka Spoldzielnia Mieszkaniowa | | +| KOBA | | +| Konecka Spoldzielnia Mieszkaniowa | | +| Korbank Data Center | | +| Lnet | | +| MARINEX-AMPOL 2 TELEWIZJA KABLOWA | | +| MAZOWIECKIE SS (KONSTANCIN NET PL) | | +| Media Management Europe Sp. k. | | +| MEDIASAT S.C. | | +| MEGOGO.PL | | +| METROPORT | | +| Miedzyzakladowa SM Chemik | | +| MLODZIEZOWA SM / MSM METALOWIEC | | +| Multiplay Sp. K. | | +| Myszkowska Telewizja Kablowa | | +| **Nasza Wizja** | Distribution sub-platform (see below) | + +### Operators under Nasza Wizja (Admin/Export/PL/Nasza Wizja/) +| Operator | Notes | +|---|---| +| Akasha | | +| ALFAFIBER | | +| AMBIT | | +| AMPLUS | | +| ANetConnect | | +| AP MEDIA | | +| AVIOS | | +| BESKID MEDIA | | +| DAMIAN MURZYNOWSKI NASZASIEC.NET | | +| EZBIT | | +| FIBERWAY | | +| FINEMEDIA | | +| Firma Handlowa Giga | | +| HAKER MATEUSZ DYMITRUK | | +| HYPERNET | | +| INET CENTRUM | | +| INSTALNET SZABAT | | +| INTB SP ZOO | | +| INTERQ | | +| INTERTELL | | +| KM-NET | | +| KOMPEX | | +| LANNET S.C. | | +| LIQUID SYSTEMS | | +| MATRONIX Marcin Moczulski | | +| Metrosan | | +| MTM-INFO | | +| MULTICOM | | +| NETSERVICE | | +| NOWOGROD.NET | | +| ORION | | +| Shentel | | +| TONETIC GROUP | | + +--- + +## 7. System Reports + +### System Reports/Import/ +Reports downloaded from the central AIS system. Naming convention: `P[Period]_FY[Fiscal Year]_Subs_report [date].xlsx` + +| File | Description | +|---|---| +| `P05_FY24_Subs_report 21.02.2024.xlsx` | Period 5 / FY2024 | +| `P07_FY24_Subs_report 24.04.2024.xlsx` | Period 7 / FY2024 | +| `P08_FY24_Subs_report 01.05.2024.xlsx` | Period 8 / FY2024 | + +### System Reports/Export/ +Data exported to the central system. Naming convention: `Exported data_[DD.MM.YY].xlsx` + +| File | Export date | +|---|---| +| `Exported data_11.04.24.xlsx` | 11 April 2024 | +| `Exported data_16.04.24.xlsx` | 16 April 2024 | +| `Exported data_25.04.24.xlsx` | 25 April 2024 | +| `Exported data_13.05.24.xlsx` | 13 May 2024 | +| `Exported data_30.05.24.xlsx` | 30 May 2024 | + +--- + +## Technical Notes + +- The `.xlsb` macro file (Excel Binary Workbook) requires Microsoft Excel with VBA macro execution enabled +- `.msg` files are Outlook messages — they require Microsoft Outlook or a compatible reader +- `folder create.bat` must be run on Windows from inside the `Import/POL/` directory +- `SR_Macro - Shortcut.lnk` assumes a Windows installation — the target path may need updating if files are moved