Skip to content

Commit

Permalink
Merge pull request #49 from gisce/new_reganecuqh_support
Browse files Browse the repository at this point in the history
Soporte para cargar ficheros REGANECUQH
  • Loading branch information
davidmunoznovoa authored Oct 23, 2024
2 parents 6140cd0 + 6e939a3 commit 7e32647
Show file tree
Hide file tree
Showing 11 changed files with 317 additions and 5 deletions.
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,4 +25,5 @@ Eina d'importació de CCH
- `P2`
- `P2D`
- `REGANECU`
- `REGANECUQH`
- `RF5D`
23 changes: 23 additions & 0 deletions cchloader/adapters/reganecuqh.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# -*- coding: utf-8 -*-
from __future__ import absolute_import

from cchloader.adapters import CchAdapter
from cchloader.models.reganecuqh import ReganecuQhSchema
from marshmallow import Schema, fields, pre_load


class ReganecuQhBaseAdapter(Schema):
""" REGANECUQh Adapter
"""

@pre_load
def fix_numbers(self, data):
for attr, field in self.fields.items():
if isinstance(field, (fields.Integer, fields.Float)):
if not data.get(attr):
data[attr] = None
return data


class ReganecuQhAdapter(ReganecuQhBaseAdapter, CchAdapter, ReganecuQhSchema):
pass
35 changes: 35 additions & 0 deletions cchloader/models/reganecuqh.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
# -*- coding: utf-8 -*-
# -*- encoding: utf-8 -*-
from __future__ import absolute_import

from marshmallow import Schema, fields


class ReganecuQhSchema(Schema):
date = fields.String(position=0, required=True)
reserved0 = fields.Integer(position=1, required=True)
upr = fields.String(position=2, required=True)
energia = fields.Float(position=3, required=True)
reserved1 = fields.Integer(position=4)
precio = fields.Float(position=5, required=True)
reserved2 = fields.Integer(position=6)
importe = fields.Float(position=7, required=True)
reserved3 = fields.Integer(position=8)
vendedor = fields.String(position=9, required=True)
segmento = fields.String(position=10, required=True)
facturacion = fields.Integer(position=11, required=True)
eiec_upr = fields.String(position=12, required=True)
cuenta = fields.String(position=13, required=True)
signo_importe = fields.Integer(position=14, required=True)
signo_magnitud = fields.Integer(position=15, required=True)
eic_titular = fields.String(position=16, required=True)
codigo_magnitud = fields.String(position=17, required=True)
codigo_precio = fields.String(position=18, required=True)
codigo_apunte = fields.String(position=19, required=True)
tipo_oferta = fields.String(position=20, required=True)
tipo_upr = fields.Integer(position=21, required=True)
energia_bilateral = fields.Integer(position=22, required=True)
hora25 = fields.Integer(position=23, required=True)


ReganecuQhSchema()
1 change: 1 addition & 0 deletions cchloader/parsers/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,4 +15,5 @@
from cchloader.parsers.mhcil import Mhcil
from cchloader.parsers.medidas import Medidas
from cchloader.parsers.reganecu import Reganecu
from cchloader.parsers.reganecuqh import ReganecuQh
from cchloader.parsers.corbagen import CorbaGen
3 changes: 1 addition & 2 deletions cchloader/parsers/medidas.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,7 @@

class Medidas(Parser):

patterns = ['^medidas_(\d{4})_(\d{4})(\d{2})_(\d{1})_(\d{4})(\d{2})(\d{2})',
'^medidas_(\d{4})_(\d{4})_(\d{4})(\d{2})_(\d{1})_(\d{4})(\d{2})(\d{2})']
patterns = ['^medidas_']
encoding = "iso-8859-15"
delimiter = ';'

Expand Down
3 changes: 1 addition & 2 deletions cchloader/parsers/mhcil.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,7 @@

class Mhcil(Parser):

patterns = ['^MHCIL_([H][23CP])_(\d{4})_([PA][12])_(\d{4})(\d{2})(\d{2}).(\d)',
'^MHCIL_([H][23CP])_(\d{4})_([PA][12])_(\d{4})(\d{2})(\d{2})']
patterns = ['^MHCIL_']
encoding = "iso-8859-15"
delimiter = ';'

Expand Down
3 changes: 2 additions & 1 deletion cchloader/parsers/reganecu.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,8 @@

class Reganecu(Parser):

patterns = ['^([ABC])(\d{1})_reganecu_(\d{4})(\d{2})(\d{2})_']
patterns = ['^([ABC])(\d{1})_reganecu_',
'^reganecu_']
encoding = "iso-8859-15"
delimiter = ';'

Expand Down
43 changes: 43 additions & 0 deletions cchloader/parsers/reganecuqh.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
# -*- coding: utf-8 -*-
from __future__ import absolute_import

from cchloader import logger
from cchloader.utils import build_dict
from cchloader.adapters.reganecuqh import ReganecuQhAdapter
from cchloader.models.reganecuqh import ReganecuQhSchema
from cchloader.parsers.parser import Parser, register
import six
if six.PY3:
unicode = str


class ReganecuQh(Parser):

patterns = ['^([ABC])(\d{1})_reganecuqh_',
'^reganecuqh_']
encoding = "iso-8859-15"
delimiter = ';'

def __init__(self, strict=False):
self.adapter = ReganecuQhAdapter(strict=strict)
self.schema = ReganecuQhSchema(strict=strict)
self.fields = []
self.headers = []
for f in sorted(self.schema.fields, key=lambda f: self.schema.fields[f].metadata['position']):
field = self.schema.fields[f]
self.fields.append((f, field.metadata))
self.headers.append(f)

def parse_line(self, line):
slinia = tuple(unicode(line.decode(self.encoding)).split(self.delimiter))
slinia = list(map(lambda s: s.strip(), slinia))
parsed = {'reganecu': {}, 'orig': line}
data = build_dict(self.headers, slinia)
result, errors = self.adapter.load(data)
if errors:
logger.error(errors)
parsed['reganecu'] = result
return parsed, errors


register(ReganecuQh)
84 changes: 84 additions & 0 deletions spec/curve_files/C3_reganecu_20240501_demo
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
reganecu;
2024;08;09;07;46;0;
01/05/2024;6;DEMO_RE;0.014;;1.5042;;0.02;;;BS3;3;;C_BAN;-1;0;18X0000000004444;DSV;P_2BAN;P_3CBAN_OP;R;11;0;0;
01/05/2024;7;DEMO_RE;0.089;;2.5543;;0.23;;;BS3;3;;C_BAN;-1;0;18X0000000004444;DSV;P_2BAN;P_3CBAN_OP;R;11;0;0;
01/05/2024;8;DEMO_RE;0.231;;3.2498;;0.75;;;BS3;3;;C_BAN;-1;0;18X0000000004444;DSV;P_2BAN;P_3CBAN_OP;R;11;0;0;
01/05/2024;9;DEMO_RE;0.314;;4.4667;;1.4;;;BS3;3;;C_BAN;-1;0;18X0000000004444;DSV;P_2BAN;P_3CBAN_OP;R;11;0;0;
01/05/2024;10;DEMO_RE;0.059;;5.0056;;0.3;;;BS3;3;;C_BAN;-1;0;18X0000000004444;DSV;P_2BAN;P_3CBAN_OP;R;11;0;0;
01/05/2024;11;DEMO_RE;0.987;;4.5668;;4.51;;;BS3;3;;C_BAN;-1;0;18X0000000004444;DSV;P_2BAN;P_3CBAN_OP;R;11;0;0;
01/05/2024;12;DEMO_RE;1.103;;1.2208;;1.35;;;BS3;3;;C_BAN;-1;0;18X0000000004444;DSV;P_2BAN;P_3CBAN_OP;R;11;0;0;
01/05/2024;13;DEMO_RE;0.956;;0.7712;;0.74;;;BS3;3;;C_BAN;-1;0;18X0000000004444;DSV;P_2BAN;P_3CBAN_OP;R;11;0;0;
01/05/2024;14;DEMO_RE;0.546;;0.7147;;0.39;;;BS3;3;;C_BAN;-1;0;18X0000000004444;DSV;P_2BAN;P_3CBAN_OP;R;11;0;0;
01/05/2024;15;DEMO_RE;0.603;;0.7774;;0.47;;;BS3;3;;C_BAN;-1;0;18X0000000004444;DSV;P_2BAN;P_3CBAN_OP;R;11;0;0;
01/05/2024;16;DEMO_RE;1.883;;0.7132;;1.34;;;BS3;3;;C_BAN;-1;0;18X0000000004444;DSV;P_2BAN;P_3CBAN_OP;R;11;0;0;
01/05/2024;17;DEMO_RE;1.097;;1.3492;;1.48;;;BS3;3;;C_BAN;-1;0;18X0000000004444;DSV;P_2BAN;P_3CBAN_OP;R;11;0;0;
01/05/2024;18;DEMO_RE;0.926;;2.2262;;2.06;;;BS3;3;;C_BAN;-1;0;18X0000000004444;DSV;P_2BAN;P_3CBAN_OP;R;11;0;0;
01/05/2024;19;DEMO_RE;0.527;;3.6938;;1.95;;;BS3;3;;C_BAN;-1;0;18X0000000004444;DSV;P_2BAN;P_3CBAN_OP;R;11;0;0;
01/05/2024;20;DEMO_RE;0.344;;4.5276;;1.56;;;BS3;3;;C_BAN;-1;0;18X0000000004444;DSV;P_2BAN;P_3CBAN_OP;R;11;0;0;
01/05/2024;21;DEMO_RE;0.056;;1.5311;;0.09;;;BS3;3;;C_BAN;-1;0;18X0000000004444;DSV;P_2BAN;P_3CBAN_OP;R;11;0;0;
01/05/2024;22;DEMO_RE;0.063;;1.2687;;0.08;;;BS3;3;;C_BAN;-1;0;18X0000000004444;DSV;P_2BAN;P_3CBAN_OP;R;11;0;0;
01/05/2024;23;DEMO_RE;0.006;;1.599;;0.01;;;BS3;3;;C_BAN;-1;0;18X0000000004444;DSV;P_2BAN;P_3CBAN_OP;R;11;0;0;
01/05/2024;21;DEMO_RE;0.056;;0;;0;;;DSV;3;;C_MEDI;1;1;18X0000000004444;DESVIO_M;P_MEDI;M_DESV_DC;R;11;0;0;
01/05/2024;1;DEMO_RE;0.07;;1;;0.07;;;RAD3;3;;C_RAD;-1;0;18X0000000004444;M_1RAD3;P_2RAD3;P_3RAD3_OP;R;11;0;0;
01/05/2024;2;DEMO_RE;0.006;;1.6667;;0.01;;;RAD3;3;;C_RAD;-1;0;18X0000000004444;M_1RAD3;P_2RAD3;P_3RAD3_OP;R;11;0;0;
01/05/2024;3;DEMO_RE;0.021;;0.9524;;0.02;;;RAD3;3;;C_RAD;-1;0;18X0000000004444;M_1RAD3;P_2RAD3;P_3RAD3_OP;R;11;0;0;
01/05/2024;22;DEMO_RE;0.063;;0.7937;;0.05;;;RAD3;3;;C_RAD;-1;0;18X0000000004444;M_1RAD3;P_2RAD3;P_3RAD3_OP;R;11;0;0;
01/05/2024;23;DEMO_RE;0.006;;0;;0;;;RAD3;3;;C_RAD;-1;0;18X0000000004444;M_1RAD3;P_2RAD3;P_3RAD3_OP;R;11;0;0;
01/05/2024;24;DEMO_RE;0.063;;0.9524;;0.06;;;RAD3;3;;C_RAD;-1;0;18X0000000004444;M_1RAD3;P_2RAD3;P_3RAD3_OP;R;11;0;0;
01/05/2024;18;DEMO_C;1.097;;18.7056;;20.52;;;CAD;3;18W0000000008888;C_CAD;-1;0;18X0000000004444;MEDBC;P_CAD;M_CAD_OP;C;20;0;0;
01/05/2024;19;DEMO_C;1.095;;19.8904;;21.78;;;CAD;3;18W0000000008888;C_CAD;-1;0;18X0000000004444;MEDBC;P_CAD;M_CAD_OP;C;20;0;0;
01/05/2024;20;DEMO_C;1.11;;19.7027;;21.87;;;CAD;3;18W0000000008888;C_CAD;-1;0;18X0000000004444;MEDBC;P_CAD;M_CAD_OP;C;20;0;0;
01/05/2024;21;DEMO_C;1.199;;14.3286;;17.18;;;CAD;3;18W0000000008888;C_CAD;-1;0;18X0000000004444;MEDBC;P_CAD;M_CAD_OP;C;20;0;0;
01/05/2024;22;DEMO_C;1.265;;8.1897;;10.36;;;CAD;3;18W0000000008888;C_CAD;-1;0;18X0000000004444;MEDBC;P_CAD;M_CAD_OP;C;20;0;0;
01/05/2024;23;DEMO_C;1.208;;10.9934;;13.28;;;CAD;3;18W0000000008888;C_CAD;-1;0;18X0000000004444;MEDBC;P_CAD;M_CAD_OP;C;20;0;0;
01/05/2024;24;DEMO_C;1.166;;11.0806;;12.92;;;CAD;3;18W0000000008888;C_CAD;-1;0;18X0000000004444;MEDBC;P_CAD;M_CAD_OP;C;20;0;0;
01/05/2024;1;DEMO_RE;0.07;;2.132;;0.15;;;BS3;3;;C_BAN;-1;0;18X0000000004444;DSV;P_2BAN;P_3CBAN_OP;R;11;0;0;
01/05/2024;2;DEMO_RE;0.006;;1.7411;;0.01;;;BS3;3;;C_BAN;-1;0;18X0000000004444;DSV;P_2BAN;P_3CBAN_OP;R;11;0;0;
01/05/2024;3;DEMO_RE;0.021;;2.1299;;0.04;;;BS3;3;;C_BAN;-1;0;18X0000000004444;DSV;P_2BAN;P_3CBAN_OP;R;11;0;0;
01/05/2024;4;DEMO_RE;0.041;;1.9561;;0.08;;;BS3;3;;C_BAN;-1;0;18X0000000004444;DSV;P_2BAN;P_3CBAN_OP;R;11;0;0;
01/05/2024;5;DEMO_RE;0.023;;0.9141;;0.02;;;BS3;3;;C_BAN;-1;0;18X0000000004444;DSV;P_2BAN;P_3CBAN_OP;R;11;0;0;
01/05/2024;1;ERPCFV0;47.134;;2.61;;123.02;;ENEDJ;CFP;3;18W000000000QOJG;C_CFP;-1;0;18X0000000004444;M_CF_GEN;P_CF_GEN;P_CFP_OP;V;45;0;0;
01/05/2024;1;ERPCFV1;15.774;;2.61;;41.17;;ENEDJ;CFP;3;18W000000000R37P;C_CFP;-1;0;18X0000000004444;M_CF_GEN;P_CF_GEN;P_CFP_OP;V;45;0;0;
01/05/2024;1;ERPCHI0;1.251;;2.61;;3.27;;ENEDJ;CFP;3;18W000000000QV9F;C_CFP;-1;0;18X0000000004444;M_CF_GEN;P_CF_GEN;P_CFP_OP;V;44;0;0;
01/05/2024;24;DEMO_RE;0.063;;1.2016;;0.08;;;BS3;3;;C_BAN;-1;0;18X0000000004444;DSV;P_2BAN;P_3CBAN_OP;R;11;0;0;
01/05/2024;2;DEMO_RE;0.006;;59.57;;0.36;;;DSV;3;;C_MEDI;-1;-1;18X0000000004444;DESVIO_M;P_MEDI;M_DESV_OP;R;11;0;0;
01/05/2024;6;DEMO_RE;0.014;;33.74;;0.47;;;DSV;3;;C_MEDI;-1;-1;18X0000000004444;DESVIO_M;P_MEDI;M_DESV_OP;R;11;0;0;
01/05/2024;7;DEMO_RE;0.089;;65.61;;5.84;;;DSV;3;;C_MEDI;-1;-1;18X0000000004444;DESVIO_M;P_MEDI;M_DESV_OP;R;11;0;0;
01/05/2024;8;DEMO_RE;0.231;;67.77;;15.65;;;DSV;3;;C_MEDI;-1;-1;18X0000000004444;DESVIO_M;P_MEDI;M_DESV_OP;R;11;0;0;
01/05/2024;9;DEMO_RE;0.314;;47.1;;14.79;;;DSV;3;;C_MEDI;-1;-1;18X0000000004444;DESVIO_M;P_MEDI;M_DESV_OP;R;11;0;0;
01/05/2024;10;DEMO_RE;0.059;;38.68;;2.28;;;DSV;3;;C_MEDI;-1;-1;18X0000000004444;DESVIO_M;P_MEDI;M_DESV_OP;R;11;0;0;
01/05/2024;11;DEMO_RE;0.987;;0.01;;0.01;;;DSV;3;;C_MEDI;-1;1;18X0000000004444;DESVIO_M;P_MEDI;M_DESV_OP;R;11;0;0;
01/05/2024;14;DEMO_RE;0.546;;8.87;;4.84;;;DSV;3;;C_MEDI;-1;1;18X0000000004444;DESVIO_M;P_MEDI;M_DESV_OP;R;11;0;0;
01/05/2024;15;DEMO_RE;0.603;;10.27;;6.19;;;DSV;3;;C_MEDI;-1;1;18X0000000004444;DESVIO_M;P_MEDI;M_DESV_OP;R;11;0;0;
01/05/2024;16;DEMO_RE;1.883;;39.26;;73.93;;;DSV;3;;C_MEDI;-1;1;18X0000000004444;DESVIO_M;P_MEDI;M_DESV_OP;R;11;0;0;
01/05/2024;17;DEMO_RE;1.097;;28.71;;31.49;;;DSV;3;;C_MEDI;-1;1;18X0000000004444;DESVIO_M;P_MEDI;M_DESV_OP;R;11;0;0;
01/05/2024;18;DEMO_RE;0.926;;5.6;;5.19;;;DSV;3;;C_MEDI;-1;1;18X0000000004444;DESVIO_M;P_MEDI;M_DESV_OP;R;11;0;0;
01/05/2024;19;DEMO_RE;0.527;;5.37;;2.83;;;DSV;3;;C_MEDI;-1;1;18X0000000004444;DESVIO_M;P_MEDI;M_DESV_OP;R;11;0;0;
01/05/2024;20;DEMO_RE;0.344;;4.92;;1.69;;;DSV;3;;C_MEDI;-1;1;18X0000000004444;DESVIO_M;P_MEDI;M_DESV_OP;R;11;0;0;
01/05/2024;22;DEMO_RE;0.063;;93.08;;5.86;;;DSV;3;;C_MEDI;-1;-1;18X0000000004444;DESVIO_M;P_MEDI;M_DESV_OP;R;11;0;0;
01/05/2024;23;DEMO_RE;0.006;;74.85;;0.45;;;DSV;3;;C_MEDI;-1;-1;18X0000000004444;DESVIO_M;P_MEDI;M_DESV_OP;R;11;0;0;
01/05/2024;24;DEMO_RE;0.063;;34.68;;2.18;;;DSV;3;;C_MEDI;-1;-1;18X0000000004444;DESVIO_M;P_MEDI;M_DESV_OP;R;11;0;0;
01/05/2024;1;DEMO_RE;0.07;;7.53;;0.53;;;DSV;3;;C_MEDI;1;1;18X0000000004444;DESVIO_M;P_MEDI;M_DESV_DC;R;11;0;0;
01/05/2024;3;DEMO_RE;0.021;;65.17;;1.37;;;DSV;3;;C_MEDI;1;1;18X0000000004444;DESVIO_M;P_MEDI;M_DESV_DC;R;11;0;0;
01/05/2024;4;DEMO_RE;0.041;;0.71;;0.03;;;DSV;3;;C_MEDI;1;1;18X0000000004444;DESVIO_M;P_MEDI;M_DESV_DC;R;11;0;0;
01/05/2024;5;DEMO_RE;0.023;;0.01;;0;;;DSV;3;;C_MEDI;1;1;18X0000000004444;DESVIO_M;P_MEDI;M_DESV_DC;R;11;0;0;
01/05/2024;12;DEMO_RE;1.103;;1.57;;1.73;;;DSV;3;;C_MEDI;1;1;18X0000000004444;DESVIO_M;P_MEDI;M_DESV_DC;R;11;0;0;
01/05/2024;13;DEMO_RE;0.956;;0.18;;0.17;;;DSV;3;;C_MEDI;1;1;18X0000000004444;DESVIO_M;P_MEDI;M_DESV_DC;R;11;0;0;
01/05/2024;1;DEMO_C;1.133;;10.053;;11.39;;;CAD;3;18W0000000008888;C_CAD;-1;0;18X0000000004444;MEDBC;P_CAD;M_CAD_OP;C;20;0;0;
01/05/2024;2;DEMO_C;1.107;;13.1075;;14.51;;;CAD;3;18W0000000008888;C_CAD;-1;0;18X0000000004444;MEDBC;P_CAD;M_CAD_OP;C;20;0;0;
01/05/2024;3;DEMO_C;1.081;;17.2988;;18.7;;;CAD;3;18W0000000008888;C_CAD;-1;0;18X0000000004444;MEDBC;P_CAD;M_CAD_OP;C;20;0;0;
01/05/2024;4;DEMO_C;1.062;;15.8851;;16.87;;;CAD;3;18W0000000008888;C_CAD;-1;0;18X0000000004444;MEDBC;P_CAD;M_CAD_OP;C;20;0;0;
01/05/2024;5;DEMO_C;1.079;;16.6821;;18;;;CAD;3;18W0000000008888;C_CAD;-1;0;18X0000000004444;MEDBC;P_CAD;M_CAD_OP;C;20;0;0;
01/05/2024;6;DEMO_C;1.116;;16.1201;;17.99;;;CAD;3;18W0000000008888;C_CAD;-1;0;18X0000000004444;MEDBC;P_CAD;M_CAD_OP;C;20;0;0;
01/05/2024;7;DEMO_C;1.192;;18.5738;;22.14;;;CAD;3;18W0000000008888;C_CAD;-1;0;18X0000000004444;MEDBC;P_CAD;M_CAD_OP;C;20;0;0;
01/05/2024;8;DEMO_C;1.248;;18.7099;;23.35;;;CAD;3;18W0000000008888;C_CAD;-1;0;18X0000000004444;MEDBC;P_CAD;M_CAD_OP;C;20;0;0;
01/05/2024;9;DEMO_C;1.213;;21.9951;;26.68;;;CAD;3;18W0000000008888;C_CAD;-1;0;18X0000000004444;MEDBC;P_CAD;M_CAD_OP;C;20;0;0;
01/05/2024;10;DEMO_C;1.188;;21.532;;25.58;;;CAD;3;18W0000000008888;C_CAD;-1;0;18X0000000004444;MEDBC;P_CAD;M_CAD_OP;C;20;0;0;
01/05/2024;11;DEMO_C;1.205;;13.9502;;16.81;;;CAD;3;18W0000000008888;C_CAD;-1;0;18X0000000004444;MEDBC;P_CAD;M_CAD_OP;C;20;0;0;
01/05/2024;12;DEMO_C;1.208;;9.4454;;11.41;;;CAD;3;18W0000000008888;C_CAD;-1;0;18X0000000004444;MEDBC;P_CAD;M_CAD_OP;C;20;0;0;
01/05/2024;13;DEMO_C;1.209;;9.0902;;10.99;;;CAD;3;18W0000000008888;C_CAD;-1;0;18X0000000004444;MEDBC;P_CAD;M_CAD_OP;C;20;0;0;
01/05/2024;14;DEMO_C;1.224;;9.5507;;11.69;;;CAD;3;18W0000000008888;C_CAD;-1;0;18X0000000004444;MEDBC;P_CAD;M_CAD_OP;C;20;0;0;
01/05/2024;15;DEMO_C;1.184;;10.0507;;11.9;;;CAD;3;18W0000000008888;C_CAD;-1;0;18X0000000004444;MEDBC;P_CAD;M_CAD_OP;C;20;0;0;
01/05/2024;16;DEMO_C;1.157;;10.6223;;12.29;;;CAD;3;18W0000000008888;C_CAD;-1;0;18X0000000004444;MEDBC;P_CAD;M_CAD_OP;C;20;0;0;
01/05/2024;17;DEMO_C;1.113;;11.3657;;12.65;;;CAD;3;18W0000000008888;C_CAD;-1;0;18X0000000004444;MEDBC;P_CAD;M_CAD_OP;C;20;0;0;
*
Loading

0 comments on commit 7e32647

Please sign in to comment.