mampfes / hacs_waste_collection_schedule

Home Assistant integration framework for (garbage collection) schedules
MIT License
997 stars 634 forks source link

Error when fetching Berlin Recycling #671

Closed mookuh2k5 closed 1 year ago

mookuh2k5 commented 1 year ago

When trying to fetch the data from Berlin Recycling there seems to be an issue with the request. I got the following error message in my homeassistant.log:

2023-02-08 21:39:09.695 ERROR (SyncWorker_7) [waste_collection_schedule.source_shell] fetch failed for source Berlin Recycling:
Traceback (most recent call last):
  File "/config/custom_components/waste_collection_schedule/waste_collection_schedule/source_shell.py", line 134, in fetch
    entries = self._source.fetch()
  File "/config/custom_components/waste_collection_schedule/waste_collection_schedule/source/berlin_recycling_de.py", line 62, in fetch
    parser.feed(r.text)
  File "/usr/local/lib/python3.10/html/parser.py", line 110, in feed
    self.goahead(0)
  File "/usr/local/lib/python3.10/html/parser.py", line 170, in goahead
    k = self.parse_starttag(i)
  File "/usr/local/lib/python3.10/html/parser.py", line 342, in parse_starttag
    self.handle_startendtag(tag, attrs)
  File "/usr/local/lib/python3.10/html/parser.py", line 426, in handle_startendtag
    self.handle_starttag(tag, attrs)
  File "/config/custom_components/waste_collection_schedule/waste_collection_schedule/source/berlin_recycling_de.py", line 40, in handle_starttag
    if str(d["type"]).lower() == "hidden":
KeyError: 'type'

I took a look at it just now and got the following result for d:

"d: {'name': 'wizard-captcha', 'id': 'CaptchaEnter', 'class': 'form-control form-control-lg'}"
mwick83 commented 1 year ago

I do see the exact same behaviour. At first I thought having a "$" in my password was the problem, so I changed that. Still the same error.

mwick83 commented 1 year ago

I tried to debug this a little, but my guess is that this Source has been designed for a completely different API of the Berlin Recycling site. I'm no expert in fiddling around undocumented APIs, so I'm lost for now.

seedzero commented 1 year ago

This will be tricky for someone outside of Berlin to troubleshoot, as it requires an account number to register. Looking at the error above, looks like they have implemented a Captcha?

BrainInSight commented 1 year ago

Let me know how i can help as someone from Berlin with a Berlin Recycling login At least when I log in manually there is no Captcha

mwick83 commented 1 year ago

Yes, I don't have a captach as well. But I also noticed, that the ICS export seems to be broken. When manually trying to get an ICS with all events, nothing happens on the page. Export of single events as well as CSV of all events works, though. I have somewhat given up and I created my own calendar with the dates added manually. The exported ICS is working fine.

varyamereon commented 1 year ago

Same issue here, I can log in fine manually and no captcha shown. Here is the error:

This error originated from a custom integration.

Logger: waste_collection_schedule.source_shell
Source: custom_components/waste_collection_schedule/waste_collection_schedule/source_shell.py:136
Integration: waste_collection_schedule (documentation)
First occurred: April 8, 2023 at 8:05:34 AM (3 occurrences)
Last logged: April 9, 2023 at 4:25:56 PM

fetch failed for source Berlin Recycling: Traceback (most recent call last): 
File "/config/custom_components/waste_collection_schedule/waste_collection_schedule/source_shell.py", line 134, in fetch entries = self._source.fetch() 
File "/config/custom_components/waste_collection_schedule/waste_collection_schedule/source/berlin_recycling_de.py", line 62, in fetch parser.feed(r.text) 
File "/usr/local/lib/python3.10/html/parser.py", line 110, in feed self.goahead(0) 
File "/usr/local/lib/python3.10/html/parser.py", line 170, in goahead k = self.parse_starttag(i) 
File "/usr/local/lib/python3.10/html/parser.py", line 342, in parse_starttag self.handle_startendtag(tag, attrs) 
File "/usr/local/lib/python3.10/html/parser.py", line 426, in handle_startendtag self.handle_starttag(tag, attrs) 
File "/config/custom_components/waste_collection_schedule/waste_collection_schedule/source/berlin_recycling_de.py", line 40, in handle_starttag if str(d["type"]).lower() == "hidden": 
KeyError: 'type'
brlnr23 commented 1 year ago

I am hitting the same problem - and as I am in the (un-)lucky position, that I do have an account, I have tried to debug this a little. The main issue, afaik is that Berlin Recyling is using datatables.js with an ICS plugin. So there is no ICS download triggered server side, but only client side.

Once the calendar (table) has rendered, all download options like CSV, PDF etc are JS driven.

... after a few more approaches; I probably have identified te XHR URL containing the data to be displayed. It's a mess :D

Maybe this help you to debug further ...

The request (after logging in was this one

curl 'https://kundenportal.berlin-recycling.de/Default.aspx/GetDatasetTableHead' \
  -H 'Accept: application/json, text/javascript, */*; q=0.01' \
  -H 'Accept-Language: de-DE,de;q=0.9,en-US;q=0.8,en;q=0.7,is;q=0.6' \
  -H 'Cache-Control: no-cache' \
  -H 'Connection: keep-alive' \
  -H 'Content-Type: application/json; charset=UTF-8' \
  -H 'Cookie: consent_performance=false; ASP.NET_SessionId=_____HEREICOMESSESSIONID_____j; cookieconsent_status=dismiss' \
  -H 'DNT: 1' \
  -H 'Origin: https://kundenportal.berlin-recycling.de' \
  -H 'Pragma: no-cache' \
  -H 'Referer: https://kundenportal.berlin-recycling.de/Default.aspx' \
  -H 'Sec-Fetch-Dest: empty' \
  -H 'Sec-Fetch-Mode: cors' \
  -H 'Sec-Fetch-Site: same-origin' \
  -H 'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36' \
  -H 'X-Requested-With: XMLHttpRequest' \
  -H 'sec-ch-ua: "Chromium";v="112", "Google Chrome";v="112", "Not:A-Brand";v="99"' \
  -H 'sec-ch-ua-mobile: ?0' \
  -H 'sec-ch-ua-platform: "Windows"' \
  --data-raw '{"datasettablecode":"ABFUHRKALENDER","startindex":0,"searchtext":"","rangefilter":"[]","ordername":"","orderdir":"","ClientParameters":"{\"draw\":1,\"columns\":[{\"data\":\"Task-at Code\",\"name\":\"\",\"searchable\":true,\"orderable\":true,\"search\":{\"value\":\"\",\"regex\":false}},{\"data\":\"Description\",\"name\":\"\",\"searchable\":true,\"orderable\":false,\"search\":{\"value\":\"\",\"regex\":false}},{\"data\":\"Task-at Address\",\"name\":\"\",\"searchable\":true,\"orderable\":true,\"search\":{\"value\":\"\",\"regex\":false}},{\"data\":\"Task-at Post Code\",\"name\":\"\",\"searchable\":true,\"orderable\":true,\"search\":{\"value\":\"\",\"regex\":false}},{\"data\":\"Task Date\",\"name\":\"\",\"searchable\":true,\"orderable\":true,\"search\":{\"value\":\"\",\"regex\":false}},{\"data\":\"Task Date (Weekday)\",\"name\":\"\",\"searchable\":true,\"orderable\":false,\"search\":{\"value\":\"\",\"regex\":false}},{\"data\":\"Quantity\",\"name\":\"\",\"searchable\":true,\"orderable\":false,\"search\":{\"value\":\"\",\"regex\":false}},{\"data\":\"Material Description\",\"name\":\"\",\"searchable\":true,\"orderable\":true,\"search\":{\"value\":\"\",\"regex\":false}},{\"data\":\"ActionButtons\",\"name\":\"\",\"searchable\":true,\"orderable\":false,\"search\":{\"value\":\"\",\"regex\":false}}],\"order\":[],\"start\":0,\"length\":100,\"search\":{\"value\":\"\",\"regex\":false}}","headrecid":""}' \
  --compressed

The response is a pretty much messed JSON like this (please note, I have removed personal information)

{"d":"{\"Error\":false,\"Object\":{\"code\":\"ABFUHRKALENDER\",\"dataset\":\"PRIVATEHAUSHALTE\",\"draw\":1,\"recordsTotal\":10,\"recordsFiltered\":10,\"recordsNew\":0,\"fetchmore\":false,\"data\":[{\"HasLines\":\"false\",\"IDRelationPopup\":\"3b8c8f05-4630-454f-9105-7e4a1b0f5341\",\"RecordID\":\"WasteKSKEKMgtKSKEKLineKSKEKCalendarKSKEKBufferDSDEDKSKEK(int) Einsatzstellennummer,10000\",\"DT_RowId\":\"row_1\",\"Read\":false,\"Company\":\"Berlin Recycling\",\"DatasetCode\":\"PRIVATEHAUSHALTE\",\"DatasetTableCode\":\"ABFUHRKALENDER\",\"DatasetTableType\":\"HEAD\",\"UploadCount\":\"0\",\"UploadOrderCount\":\"0\",\"Task-at Code\":\"(int) Einsatzstellennummer\",\"Task-at Code ###Link###\":\"\",\"Task-at Code ###DatasetTableLink###\":\"\",\"Description\":\"240 L MGB Leerung\",\"Description ###Link###\":\"\",\"Description ###DatasetTableLink###\":\"\",\"Task-at Address\":\"Musterstr.. 1\",\"Task-at Address ###Link###\":\"\",\"Task-at Address ###DatasetTableLink###\":\"\",\"Task-at Post Code\":\"12345\",\"Task-at Post Code ###Link###\":\"\",\"Task-at Post Code ###DatasetTableLink###\":\"\",\"Task Date\":\"2023-04-20\",\"Task Date ###Link###\":\"\",\"Task Date ###DatasetTableLink###\":\"\",\"Task Date (Weekday)\":\"Donnerstag\",\"Task Date (Weekday) ###Link###\":\"\",\"Task Date (Weekday) ###DatasetTableLink###\":\"\",\"Quantity\":\"1\",\"Quantity ###Link###\":\"\",\"Quantity ###DatasetTableLink###\":\"\",\"Material Description\":\"5.01 Altpapier, gemischt\",\"Material Description ###Link###\":\"\",\"Material Description ###DatasetTableLink###\":\"\",\"ActionButtons\":\"\"},{\"HasLines\":\"false\",\"IDRelationPopup\":\"bf8ef8f2-24b2-423d-92bd-4eff21f979aa\",\"RecordID\":\"WasteKSKEKMgtKSKEKLineKSKEKCalendarKSKEKBufferDSDEDKSKEK(int) Einsatzstellennummer,20000\",\"DT_RowId\":\"row_2\",\"Read\":false,\"Company\":\"Berlin Recycling\",\"DatasetCode\":\"PRIVATEHAUSHALTE\",\"DatasetTableCode\":\"ABFUHRKALENDER\",\"DatasetTableType\":\"HEAD\",\"UploadCount\":\"0\",\"UploadOrderCount\":\"0\",\"Task-at Code\":\"(int) Einsatzstellennummer\",\"Task-at Code ###Link###\":\"\",\"Task-at Code ###DatasetTableLink###\":\"\",\"Description\":\"240 L MGB Leerung\",\"Description ###Link###\":\"\",\"Description ###DatasetTableLink###\":\"\",\"Task-at Address\":\"Musterstr. 1\",\"Task-at Address ###Link###\":\"\",\"Task-at Address ###DatasetTableLink###\":\"\",\"Task-at Post Code\":\"12345\",\"Task-at Post Code ###Link###\":\"\",\"Task-at Post Code ###DatasetTableLink###\":\"\",\"Task Date\":\"2023-05-19\",\"Task Date ###Link###\":\"\",\"Task Date ###DatasetTableLink###\":\"\",\"Task Date (Weekday)\":\"Freitag\",\"Task Date (Weekday) ###Link###\":\"\",\"Task Date (Weekday) ###DatasetTableLink###\":\"\",\"Quantity\":\"1\",\"Quantity ###Link###\":\"\",\"Quantity ###DatasetTableLink###\":\"\",\"Material Description\":\"5.01 Altpapier, gemischt\",\"Material Description ###Link###\":\"\",\"Material Description ###DatasetTableLink###\":\"\",\"ActionButtons\":\"\"},{\"HasLines\":\"false\",\"IDRelationPopup\":\"9b6310bf-2ad7-445c-9c4c-2db4f672d4c2\",\"RecordID\":\"WasteKSKEKMgtKSKEKLineKSKEKCalendarKSKEKBufferDSDEDKSKEK(int) Einsatzstellennummer,30000\",\"DT_RowId\":\"row_3\",\"Read\":false,\"Company\":\"Berlin Recycling\",\"DatasetCode\":\"PRIVATEHAUSHALTE\",\"DatasetTableCode\":\"ABFUHRKALENDER\",\"DatasetTableType\":\"HEAD\",\"UploadCount\":\"0\",\"UploadOrderCount\":\"0\",\"Task-at Code\":\"(int) Einsatzstellennummer\",\"Task-at Code ###Link###\":\"\",\"Task-at Code ###DatasetTableLink###\":\"\",\"Description\":\"240 L MGB Leerung\",\"Description ###Link###\":\"\",\"Description ###DatasetTableLink###\":\"\",\"Task-at Address\":\"Musterstr. 1\",\"Task-at Address ###Link###\":\"\",\"Task-at Address ###DatasetTableLink###\":\"\",\"Task-at Post Code\":\"12345\",\"Task-at Post Code ###Link###\":\"\",\"Task-at Post Code ###DatasetTableLink###\":\"\",\"Task Date\":\"2023-06-15\",\"Task Date ###Link###\":\"\",\"Task Date ###DatasetTableLink###\":\"\",\"Task Date (Weekday)\":\"Donnerstag\",\"Task Date (Weekday) ###Link###\":\"\",\"Task Date (Weekday) ###DatasetTableLink###\":\"\",\"Quantity\":\"1\",\"Quantity ###Link###\":\"\",\"Quantity ###DatasetTableLink###\":\"\",\"Material Description\":\"5.01 Altpapier, gemischt\",\"Material Description ###Link###\":\"\",\"Material Description ###DatasetTableLink###\":\"\",\"ActionButtons\":\"\"},{\"HasLines\":\"false\",\"IDRelationPopup\":\"4136205e-39aa-4251-89b4-16b58c3b3578\",\"RecordID\":\"WasteKSKEKMgtKSKEKLineKSKEKCalendarKSKEKBufferDSDEDKSKEK(int) Einsatzstellennummer,40000\",\"DT_RowId\":\"row_4\",\"Read\":false,\"Company\":\"Berlin Recycling\",\"DatasetCode\":\"PRIVATEHAUSHALTE\",\"DatasetTableCode\":\"ABFUHRKALENDER\",\"DatasetTableType\":\"HEAD\",\"UploadCount\":\"0\",\"UploadOrderCount\":\"0\",\"Task-at Code\":\"(int) Einsatzstellennummer\",\"Task-at Code ###Link###\":\"\",\"Task-at Code ###DatasetTableLink###\":\"\",\"Description\":\"240 L MGB Leerung\",\"Description ###Link###\":\"\",\"Description ###DatasetTableLink###\":\"\",\"Task-at Address\":\"Musterstr. 1\",\"Task-at Address ###Link###\":\"\",\"Task-at Address ###DatasetTableLink###\":\"\",\"Task-at Post Code\":\"12345\",\"Task-at Post Code ###Link###\":\"\",\"Task-at Post Code ###DatasetTableLink###\":\"\",\"Task Date\":\"2023-07-13\",\"Task Date ###Link###\":\"\",\"Task Date ###DatasetTableLink###\":\"\",\"Task Date (Weekday)\":\"Donnerstag\",\"Task Date (Weekday) ###Link###\":\"\",\"Task Date (Weekday) ###DatasetTableLink###\":\"\",\"Quantity\":\"1\",\"Quantity ###Link###\":\"\",\"Quantity ###DatasetTableLink###\":\"\",\"Material Description\":\"5.01 Altpapier, gemischt\",\"Material Description ###Link###\":\"\",\"Material Description ###DatasetTableLink###\":\"\",\"ActionButtons\":\"\"},{\"HasLines\":\"false\",\"IDRelationPopup\":\"269bdb0b-19b1-494a-a55d-8f86994c6e59\",\"RecordID\":\"WasteKSKEKMgtKSKEKLineKSKEKCalendarKSKEKBufferDSDEDKSKEK(int) Einsatzstellennummer,50000\",\"DT_RowId\":\"row_5\",\"Read\":false,\"Company\":\"Berlin Recycling\",\"DatasetCode\":\"PRIVATEHAUSHALTE\",\"DatasetTableCode\":\"ABFUHRKALENDER\",\"DatasetTableType\":\"HEAD\",\"UploadCount\":\"0\",\"UploadOrderCount\":\"0\",\"Task-at Code\":\"(int) Einsatzstellennummer\",\"Task-at Code ###Link###\":\"\",\"Task-at Code ###DatasetTableLink###\":\"\",\"Description\":\"240 L MGB Leerung\",\"Description ###Link###\":\"\",\"Description ###DatasetTableLink###\":\"\",\"Task-at Address\":\"Musterstr. 1\",\"Task-at Address ###Link###\":\"\",\"Task-at Address ###DatasetTableLink###\":\"\",\"Task-at Post Code\":\"12345\",\"Task-at Post Code ###Link###\":\"\",\"Task-at Post Code ###DatasetTableLink###\":\"\",\"Task Date\":\"2023-08-10\",\"Task Date ###Link###\":\"\",\"Task Date ###DatasetTableLink###\":\"\",\"Task Date (Weekday)\":\"Donnerstag\",\"Task Date (Weekday) ###Link###\":\"\",\"Task Date (Weekday) ###DatasetTableLink###\":\"\",\"Quantity\":\"1\",\"Quantity ###Link###\":\"\",\"Quantity ###DatasetTableLink###\":\"\",\"Material Description\":\"5.01 Altpapier, gemischt\",\"Material Description ###Link###\":\"\",\"Material Description ###DatasetTableLink###\":\"\",\"ActionButtons\":\"\"},{\"HasLines\":\"false\",\"IDRelationPopup\":\"09910f5b-6a4c-4711-b206-cae994f3a3b4\",\"RecordID\":\"WasteKSKEKMgtKSKEKLineKSKEKCalendarKSKEKBufferDSDEDKSKEK(int) Einsatzstellennummer,60000\",\"DT_RowId\":\"row_6\",\"Read\":false,\"Company\":\"Berlin Recycling\",\"DatasetCode\":\"PRIVATEHAUSHALTE\",\"DatasetTableCode\":\"ABFUHRKALENDER\",\"DatasetTableType\":\"HEAD\",\"UploadCount\":\"0\",\"UploadOrderCount\":\"0\",\"Task-at Code\":\"(int) Einsatzstellennummer\",\"Task-at Code ###Link###\":\"\",\"Task-at Code ###DatasetTableLink###\":\"\",\"Description\":\"240 L MGB Leerung\",\"Description ###Link###\":\"\",\"Description ###DatasetTableLink###\":\"\",\"Task-at Address\":\"Musterstr. 1\",\"Task-at Address ###Link###\":\"\",\"Task-at Address ###DatasetTableLink###\":\"\",\"Task-at Post Code\":\"12345\",\"Task-at Post Code ###Link###\":\"\",\"Task-at Post Code ###DatasetTableLink###\":\"\",\"Task Date\":\"2023-09-07\",\"Task Date ###Link###\":\"\",\"Task Date ###DatasetTableLink###\":\"\",\"Task Date (Weekday)\":\"Donnerstag\",\"Task Date (Weekday) ###Link###\":\"\",\"Task Date (Weekday) ###DatasetTableLink###\":\"\",\"Quantity\":\"1\",\"Quantity ###Link###\":\"\",\"Quantity ###DatasetTableLink###\":\"\",\"Material Description\":\"5.01 Altpapier, gemischt\",\"Material Description ###Link###\":\"\",\"Material Description ###DatasetTableLink###\":\"\",\"ActionButtons\":\"\"},{\"HasLines\":\"false\",\"IDRelationPopup\":\"d3203479-6c5d-457b-9ca1-b1ff26414a73\",\"RecordID\":\"WasteKSKEKMgtKSKEKLineKSKEKCalendarKSKEKBufferDSDEDKSKEK(int) Einsatzstellennummer,70000\",\"DT_RowId\":\"row_7\",\"Read\":false,\"Company\":\"Berlin Recycling\",\"DatasetCode\":\"PRIVATEHAUSHALTE\",\"DatasetTableCode\":\"ABFUHRKALENDER\",\"DatasetTableType\":\"HEAD\",\"UploadCount\":\"0\",\"UploadOrderCount\":\"0\",\"Task-at Code\":\"(int) Einsatzstellennummer\",\"Task-at Code ###Link###\":\"\",\"Task-at Code ###DatasetTableLink###\":\"\",\"Description\":\"240 L MGB Leerung\",\"Description ###Link###\":\"\",\"Description ###DatasetTableLink###\":\"\",\"Task-at Address\":\"Musterstr. 1\",\"Task-at Address ###Link###\":\"\",\"Task-at Address ###DatasetTableLink###\":\"\",\"Task-at Post Code\":\"12345\",\"Task-at Post Code ###Link###\":\"\",\"Task-at Post Code ###DatasetTableLink###\":\"\",\"Task Date\":\"2023-10-06\",\"Task Date ###Link###\":\"\",\"Task Date ###DatasetTableLink###\":\"\",\"Task Date (Weekday)\":\"Freitag\",\"Task Date (Weekday) ###Link###\":\"\",\"Task Date (Weekday) ###DatasetTableLink###\":\"\",\"Quantity\":\"1\",\"Quantity ###Link###\":\"\",\"Quantity ###DatasetTableLink###\":\"\",\"Material Description\":\"5.01 Altpapier, gemischt\",\"Material Description ###Link###\":\"\",\"Material Description ###DatasetTableLink###\":\"\",\"ActionButtons\":\"\"},{\"HasLines\":\"false\",\"IDRelationPopup\":\"2842484a-8fca-4243-b460-50c43366899c\",\"RecordID\":\"WasteKSKEKMgtKSKEKLineKSKEKCalendarKSKEKBufferDSDEDKSKEK(int) Einsatzstellennummer,80000\",\"DT_RowId\":\"row_8\",\"Read\":false,\"Company\":\"Berlin Recycling\",\"DatasetCode\":\"PRIVATEHAUSHALTE\",\"DatasetTableCode\":\"ABFUHRKALENDER\",\"DatasetTableType\":\"HEAD\",\"UploadCount\":\"0\",\"UploadOrderCount\":\"0\",\"Task-at Code\":\"(int) Einsatzstellennummer\",\"Task-at Code ###Link###\":\"\",\"Task-at Code ###DatasetTableLink###\":\"\",\"Description\":\"240 L MGB Leerung\",\"Description ###Link###\":\"\",\"Description ###DatasetTableLink###\":\"\",\"Task-at Address\":\"Musterstr. 1\",\"Task-at Address ###Link###\":\"\",\"Task-at Address ###DatasetTableLink###\":\"\",\"Task-at Post Code\":\"12345\",\"Task-at Post Code ###Link###\":\"\",\"Task-at Post Code ###DatasetTableLink###\":\"\",\"Task Date\":\"2023-11-02\",\"Task Date ###Link###\":\"\",\"Task Date ###DatasetTableLink###\":\"\",\"Task Date (Weekday)\":\"Donnerstag\",\"Task Date (Weekday) ###Link###\":\"\",\"Task Date (Weekday) ###DatasetTableLink###\":\"\",\"Quantity\":\"1\",\"Quantity ###Link###\":\"\",\"Quantity ###DatasetTableLink###\":\"\",\"Material Description\":\"5.01 Altpapier, gemischt\",\"Material Description ###Link###\":\"\",\"Material Description ###DatasetTableLink###\":\"\",\"ActionButtons\":\"\"},{\"HasLines\":\"false\",\"IDRelationPopup\":\"cadaa163-d72b-4bf7-a95e-f3f9a041d120\",\"RecordID\":\"WasteKSKEKMgtKSKEKLineKSKEKCalendarKSKEKBufferDSDEDKSKEK(int) Einsatzstellennummer,90000\",\"DT_RowId\":\"row_9\",\"Read\":false,\"Company\":\"Berlin Recycling\",\"DatasetCode\":\"PRIVATEHAUSHALTE\",\"DatasetTableCode\":\"ABFUHRKALENDER\",\"DatasetTableType\":\"HEAD\",\"UploadCount\":\"0\",\"UploadOrderCount\":\"0\",\"Task-at Code\":\"(int) Einsatzstellennummer\",\"Task-at Code ###Link###\":\"\",\"Task-at Code ###DatasetTableLink###\":\"\",\"Description\":\"240 L MGB Leerung\",\"Description ###Link###\":\"\",\"Description ###DatasetTableLink###\":\"\",\"Task-at Address\":\"Musterstr. 1\",\"Task-at Address ###Link###\":\"\",\"Task-at Address ###DatasetTableLink###\":\"\",\"Task-at Post Code\":\"12345\",\"Task-at Post Code ###Link###\":\"\",\"Task-at Post Code ###DatasetTableLink###\":\"\",\"Task Date\":\"2023-11-30\",\"Task Date ###Link###\":\"\",\"Task Date ###DatasetTableLink###\":\"\",\"Task Date (Weekday)\":\"Donnerstag\",\"Task Date (Weekday) ###Link###\":\"\",\"Task Date (Weekday) ###DatasetTableLink###\":\"\",\"Quantity\":\"1\",\"Quantity ###Link###\":\"\",\"Quantity ###DatasetTableLink###\":\"\",\"Material Description\":\"5.01 Altpapier, gemischt\",\"Material Description ###Link###\":\"\",\"Material Description ###DatasetTableLink###\":\"\",\"ActionButtons\":\"\"},{\"HasLines\":\"false\",\"IDRelationPopup\":\"7c2bec43-4679-49e1-9ac7-4d00772236d2\",\"RecordID\":\"WasteKSKEKMgtKSKEKLineKSKEKCalendarKSKEKBufferDSDEDKSKEK(int) Einsatzstellennummer,100000\",\"DT_RowId\":\"row_10\",\"Read\":false,\"Company\":\"Berlin Recycling\",\"DatasetCode\":\"PRIVATEHAUSHALTE\",\"DatasetTableCode\":\"ABFUHRKALENDER\",\"DatasetTableType\":\"HEAD\",\"UploadCount\":\"0\",\"UploadOrderCount\":\"0\",\"Task-at Code\":\"(int) Einsatzstellennummer\",\"Task-at Code ###Link###\":\"\",\"Task-at Code ###DatasetTableLink###\":\"\",\"Description\":\"240 L MGB Leerung\",\"Description ###Link###\":\"\",\"Description ###DatasetTableLink###\":\"\",\"Task-at Address\":\"Musterstr. 1\",\"Task-at Address ###Link###\":\"\",\"Task-at Address ###DatasetTableLink###\":\"\",\"Task-at Post Code\":\"12345\",\"Task-at Post Code ###Link###\":\"\",\"Task-at Post Code ###DatasetTableLink###\":\"\",\"Task Date\":\"2023-12-29\",\"Task Date ###Link###\":\"\",\"Task Date ###DatasetTableLink###\":\"\",\"Task Date (Weekday)\":\"Freitag\",\"Task Date (Weekday) ###Link###\":\"\",\"Task Date (Weekday) ###DatasetTableLink###\":\"\",\"Quantity\":\"1\",\"Quantity ###Link###\":\"\",\"Quantity ###DatasetTableLink###\":\"\",\"Material Description\":\"5.01 Altpapier, gemischt\",\"Material Description ###Link###\":\"\",\"Material Description ###DatasetTableLink###\":\"\",\"ActionButtons\":\"\"}],\"columns\":[{\"data\":\"Task-at Code\",\"title\":\"Einsatzstellen-Nr.\",\"fieldinfo\":\"\",\"fieldno\":\"208\",\"fieldtype\":\"Code\",\"edittype\":\"\",\"fielddisplaytype\":\"0\",\"oriname\":\"Task-at Code\",\"textbeforevalue\":\"\",\"textaftervalue\":\"\",\"xchart\":false,\"ychart\":false,\"isfilter\":false,\"filtertype\":\"0\",\"filtercaptionfrom\":\"\",\"filtercaptionto\":\"\",\"chartaggregation\":\"0\",\"isgroupingkey\":false,\"groupingsearchactive\":false,\"orderable\":true,\"inlist\":true,\"indetail\":true,\"intitle\":false,\"insubtitle\":false,\"indetailtitle\":false,\"datasettablelink\":\"\",\"recordidlink\":\"\",\"booleanviewstyle\":0,\"sequence\":5,\"sequencedetail\":1,\"collapsecode\":\"COLLAPSE_ALLG\",\"groupcode\":\"\",\"editable\":false,\"required\":false,\"maxlength\":\"\",\"decimalplaces\":0,\"modal\":false,\"showsearch\":true,\"defaultmin\":\"\",\"defaultmax\":\"\",\"defaultpattern\":\"\",\"defaultmask\":\"\",\"defaultplaceholder\":\"\",\"defaultvalue\":\"\",\"steps\":\"\",\"isreadonly\":false,\"cssclass\":\"\",\"datetablerelation\":\"\",\"startend\":0,\"showweeknumbers\":false,\"showisoweeknumbers\":false,\"autoapply\":false,\"applybuttonclasses\":\"\",\"cancelbuttonclasses\":\"\",\"buttonclasses\":\"\",\"selectprevious\":false,\"selectafter\":false,\"selectpreviousdate\":\"\",\"selectafterdate\":\"\",\"validateerrormessagemin\":\"\",\"validateerrormessagemax\":\"\",\"validateerrormessagerange\":\"\",\"validateerrormessagemaxlength\":\"\",\"validateerrormessagepattern\":\"\",\"validateerrormessageurl\":\"\",\"validateerrormessageemail\":\"\",\"popupinfo\":false,\"defaultContent\":\"\",\"type\":\"string\",\"visible\":true,\"searchable\":true},{\"data\":\"Description\",\"title\":\"Behältergröße\",\"fieldinfo\":\"\",\"fieldno\":\"11\",\"fieldtype\":\"Text\",\"edittype\":\"\",\"fielddisplaytype\":\"0\",\"oriname\":\"Description\",\"textbeforevalue\":\"\",\"textaftervalue\":\"\",\"xchart\":false,\"ychart\":false,\"isfilter\":false,\"filtertype\":\"0\",\"filtercaptionfrom\":\"\",\"filtercaptionto\":\"\",\"chartaggregation\":\"0\",\"isgroupingkey\":false,\"groupingsearchactive\":false,\"orderable\":false,\"inlist\":true,\"indetail\":true,\"intitle\":false,\"insubtitle\":false,\"indetailtitle\":false,\"datasettablelink\":\"\",\"recordidlink\":\"\",\"booleanviewstyle\":0,\"sequence\":10,\"sequencedetail\":6,\"collapsecode\":\"COLLAPSE_ALLG\",\"groupcode\":\"\",\"editable\":false,\"required\":false,\"maxlength\":\"\",\"decimalplaces\":0,\"modal\":false,\"showsearch\":true,\"defaultmin\":\"\",\"defaultmax\":\"\",\"defaultpattern\":\"\",\"defaultmask\":\"\",\"defaultplaceholder\":\"\",\"defaultvalue\":\"\",\"steps\":\"\",\"isreadonly\":false,\"cssclass\":\"\",\"datetablerelation\":\"\",\"startend\":0,\"showweeknumbers\":false,\"showisoweeknumbers\":false,\"autoapply\":false,\"applybuttonclasses\":\"\",\"cancelbuttonclasses\":\"\",\"buttonclasses\":\"\",\"selectprevious\":false,\"selectafter\":false,\"selectpreviousdate\":\"\",\"selectafterdate\":\"\",\"validateerrormessagemin\":\"\",\"validateerrormessagemax\":\"\",\"validateerrormessagerange\":\"\",\"validateerrormessagemaxlength\":\"\",\"validateerrormessagepattern\":\"\",\"validateerrormessageurl\":\"\",\"validateerrormessageemail\":\"\",\"popupinfo\":false,\"defaultContent\":\"\",\"type\":\"string\",\"visible\":true,\"searchable\":true},{\"data\":\"Task-at Address\",\"title\":\"Adresse der Einsatzstelle\",\"fieldinfo\":\"\",\"fieldno\":\"50201\",\"fieldtype\":\"Text\",\"edittype\":\"\",\"fielddisplaytype\":\"0\",\"oriname\":\"Task-at Address\",\"textbeforevalue\":\"\",\"textaftervalue\":\"\",\"xchart\":false,\"ychart\":false,\"isfilter\":false,\"filtertype\":\"0\",\"filtercaptionfrom\":\"\",\"filtercaptionto\":\"\",\"chartaggregation\":\"0\",\"isgroupingkey\":false,\"groupingsearchactive\":false,\"orderable\":true,\"inlist\":true,\"indetail\":true,\"intitle\":false,\"insubtitle\":false,\"indetailtitle\":false,\"datasettablelink\":\"\",\"recordidlink\":\"\",\"booleanviewstyle\":0,\"sequence\":20,\"sequencedetail\":2,\"collapsecode\":\"COLLAPSE_ALLG\",\"groupcode\":\"\",\"editable\":false,\"required\":false,\"maxlength\":\"\",\"decimalplaces\":0,\"modal\":false,\"showsearch\":true,\"defaultmin\":\"\",\"defaultmax\":\"\",\"defaultpattern\":\"\",\"defaultmask\":\"\",\"defaultplaceholder\":\"\",\"defaultvalue\":\"\",\"steps\":\"\",\"isreadonly\":false,\"cssclass\":\"\",\"datetablerelation\":\"\",\"startend\":0,\"showweeknumbers\":false,\"showisoweeknumbers\":false,\"autoapply\":false,\"applybuttonclasses\":\"\",\"cancelbuttonclasses\":\"\",\"buttonclasses\":\"\",\"selectprevious\":false,\"selectafter\":false,\"selectpreviousdate\":\"\",\"selectafterdate\":\"\",\"validateerrormessagemin\":\"\",\"validateerrormessagemax\":\"\",\"validateerrormessagerange\":\"\",\"validateerrormessagemaxlength\":\"\",\"validateerrormessagepattern\":\"\",\"validateerrormessageurl\":\"\",\"validateerrormessageemail\":\"\",\"popupinfo\":false,\"defaultContent\":\"\",\"type\":\"string\",\"visible\":true,\"searchable\":true},{\"data\":\"Task-at Post Code\",\"title\":\"PLZ der \u003cp\u003eEinsatzstelle\u003c/p\u003e\",\"fieldinfo\":\"\",\"fieldno\":\"50204\",\"fieldtype\":\"Text\",\"edittype\":\"\",\"fielddisplaytype\":\"0\",\"oriname\":\"Task-at Post Code\",\"textbeforevalue\":\"\",\"textaftervalue\":\"\",\"xchart\":false,\"ychart\":false,\"isfilter\":false,\"filtertype\":\"0\",\"filtercaptionfrom\":\"\",\"filtercaptionto\":\"\",\"chartaggregation\":\"0\",\"isgroupingkey\":false,\"groupingsearchactive\":false,\"orderable\":true,\"inlist\":true,\"indetail\":true,\"intitle\":false,\"insubtitle\":false,\"indetailtitle\":false,\"datasettablelink\":\"\",\"recordidlink\":\"\",\"booleanviewstyle\":0,\"sequence\":30,\"sequencedetail\":3,\"collapsecode\":\"COLLAPSE_ALLG\",\"groupcode\":\"\",\"editable\":false,\"required\":false,\"maxlength\":\"\",\"decimalplaces\":0,\"modal\":false,\"showsearch\":true,\"defaultmin\":\"\",\"defaultmax\":\"\",\"defaultpattern\":\"\",\"defaultmask\":\"\",\"defaultplaceholder\":\"\",\"defaultvalue\":\"\",\"steps\":\"\",\"isreadonly\":false,\"cssclass\":\"\",\"datetablerelation\":\"\",\"startend\":0,\"showweeknumbers\":false,\"showisoweeknumbers\":false,\"autoapply\":false,\"applybuttonclasses\":\"\",\"cancelbuttonclasses\":\"\",\"buttonclasses\":\"\",\"selectprevious\":false,\"selectafter\":false,\"selectpreviousdate\":\"\",\"selectafterdate\":\"\",\"validateerrormessagemin\":\"\",\"validateerrormessagemax\":\"\",\"validateerrormessagerange\":\"\",\"validateerrormessagemaxlength\":\"\",\"validateerrormessagepattern\":\"\",\"validateerrormessageurl\":\"\",\"validateerrormessageemail\":\"\",\"popupinfo\":false,\"defaultContent\":\"\",\"type\":\"string\",\"visible\":true,\"searchable\":true},{\"data\":\"Task Date\",\"title\":\"Einsatzdatum\",\"fieldinfo\":\"\",\"fieldno\":\"10\",\"fieldtype\":\"Date\",\"edittype\":\"\",\"fielddisplaytype\":\"0\",\"oriname\":\"Task Date\",\"textbeforevalue\":\"\",\"textaftervalue\":\"\",\"xchart\":true,\"ychart\":false,\"isfilter\":false,\"filtertype\":\"0\",\"filtercaptionfrom\":\"\",\"filtercaptionto\":\"\",\"chartaggregation\":\"0\",\"isgroupingkey\":false,\"groupingsearchactive\":false,\"orderable\":true,\"inlist\":true,\"indetail\":true,\"intitle\":false,\"insubtitle\":false,\"indetailtitle\":false,\"datasettablelink\":\"\",\"recordidlink\":\"\",\"booleanviewstyle\":0,\"sequence\":40,\"sequencedetail\":4,\"collapsecode\":\"COLLAPSE_ALLG\",\"groupcode\":\"\",\"editable\":false,\"required\":false,\"maxlength\":\"\",\"decimalplaces\":0,\"modal\":false,\"showsearch\":true,\"defaultmin\":\"\",\"defaultmax\":\"\",\"defaultpattern\":\"\",\"defaultmask\":\"\",\"defaultplaceholder\":\"\",\"defaultvalue\":\"\",\"steps\":\"\",\"isreadonly\":false,\"cssclass\":\"\",\"datetablerelation\":\"\",\"startend\":0,\"showweeknumbers\":false,\"showisoweeknumbers\":false,\"autoapply\":false,\"applybuttonclasses\":\"\",\"cancelbuttonclasses\":\"\",\"buttonclasses\":\"\",\"selectprevious\":false,\"selectafter\":false,\"selectpreviousdate\":\"\",\"selectafterdate\":\"\",\"validateerrormessagemin\":\"\",\"validateerrormessagemax\":\"\",\"validateerrormessagerange\":\"\",\"validateerrormessagemaxlength\":\"\",\"validateerrormessagepattern\":\"\",\"validateerrormessageurl\":\"\",\"validateerrormessageemail\":\"\",\"popupinfo\":false,\"defaultContent\":\"\",\"type\":\"date\",\"visible\":true,\"searchable\":true},{\"data\":\"Task Date (Weekday)\",\"title\":\"Einsatzdatum (Wochentag)\",\"fieldinfo\":\"\",\"fieldno\":\"50215\",\"fieldtype\":\"Text\",\"edittype\":\"\",\"fielddisplaytype\":\"0\",\"oriname\":\"Task Date (Weekday)\",\"textbeforevalue\":\"\",\"textaftervalue\":\"\",\"xchart\":false,\"ychart\":false,\"isfilter\":false,\"filtertype\":\"0\",\"filtercaptionfrom\":\"\",\"filtercaptionto\":\"\",\"chartaggregation\":\"0\",\"isgroupingkey\":false,\"groupingsearchactive\":false,\"orderable\":false,\"inlist\":true,\"indetail\":true,\"intitle\":false,\"insubtitle\":false,\"indetailtitle\":false,\"datasettablelink\":\"\",\"recordidlink\":\"\",\"booleanviewstyle\":0,\"sequence\":50,\"sequencedetail\":5,\"collapsecode\":\"COLLAPSE_ALLG\",\"groupcode\":\"\",\"editable\":false,\"required\":false,\"maxlength\":\"\",\"decimalplaces\":0,\"modal\":false,\"showsearch\":true,\"defaultmin\":\"\",\"defaultmax\":\"\",\"defaultpattern\":\"\",\"defaultmask\":\"\",\"defaultplaceholder\":\"\",\"defaultvalue\":\"\",\"steps\":\"\",\"isreadonly\":false,\"cssclass\":\"\",\"datetablerelation\":\"\",\"startend\":0,\"showweeknumbers\":false,\"showisoweeknumbers\":false,\"autoapply\":false,\"applybuttonclasses\":\"\",\"cancelbuttonclasses\":\"\",\"buttonclasses\":\"\",\"selectprevious\":false,\"selectafter\":false,\"selectpreviousdate\":\"\",\"selectafterdate\":\"\",\"validateerrormessagemin\":\"\",\"validateerrormessagemax\":\"\",\"validateerrormessagerange\":\"\",\"validateerrormessagemaxlength\":\"\",\"validateerrormessagepattern\":\"\",\"validateerrormessageurl\":\"\",\"validateerrormessageemail\":\"\",\"popupinfo\":false,\"defaultContent\":\"\",\"type\":\"string\",\"visible\":true,\"searchable\":true},{\"data\":\"Quantity\",\"title\":\"Behälteranzahl\",\"fieldinfo\":\"\",\"fieldno\":\"15\",\"fieldtype\":\"Decimal\",\"edittype\":\"\",\"fielddisplaytype\":\"0\",\"oriname\":\"Quantity\",\"textbeforevalue\":\"\",\"textaftervalue\":\"\",\"xchart\":false,\"ychart\":false,\"isfilter\":false,\"filtertype\":\"0\",\"filtercaptionfrom\":\"\",\"filtercaptionto\":\"\",\"chartaggregation\":\"0\",\"isgroupingkey\":false,\"groupingsearchactive\":false,\"orderable\":false,\"inlist\":true,\"indetail\":true,\"intitle\":false,\"insubtitle\":false,\"indetailtitle\":false,\"datasettablelink\":\"\",\"recordidlink\":\"\",\"booleanviewstyle\":0,\"sequence\":55,\"sequencedetail\":7,\"collapsecode\":\"COLLAPSE_ALLG\",\"groupcode\":\"\",\"editable\":false,\"required\":false,\"maxlength\":\"\",\"decimalplaces\":0,\"modal\":false,\"showsearch\":true,\"defaultmin\":\"\",\"defaultmax\":\"\",\"defaultpattern\":\"\",\"defaultmask\":\"\",\"defaultplaceholder\":\"\",\"defaultvalue\":\"\",\"steps\":\"\",\"isreadonly\":false,\"cssclass\":\"\",\"datetablerelation\":\"\",\"startend\":0,\"showweeknumbers\":false,\"showisoweeknumbers\":false,\"autoapply\":false,\"applybuttonclasses\":\"\",\"cancelbuttonclasses\":\"\",\"buttonclasses\":\"\",\"selectprevious\":false,\"selectafter\":false,\"selectpreviousdate\":\"\",\"selectafterdate\":\"\",\"validateerrormessagemin\":\"\",\"validateerrormessagemax\":\"\",\"validateerrormessagerange\":\"\",\"validateerrormessagemaxlength\":\"\",\"validateerrormessagepattern\":\"\",\"validateerrormessageurl\":\"\",\"validateerrormessageemail\":\"\",\"popupinfo\":false,\"defaultContent\":\"\",\"type\":\"num\",\"visible\":true,\"searchable\":true},{\"data\":\"Material Description\",\"title\":\"Materialbeschreibung\",\"fieldinfo\":\"\",\"fieldno\":\"50210\",\"fieldtype\":\"Text\",\"edittype\":\"\",\"fielddisplaytype\":\"0\",\"oriname\":\"Material Description\",\"textbeforevalue\":\"\",\"textaftervalue\":\"\",\"xchart\":false,\"ychart\":false,\"isfilter\":false,\"filtertype\":\"0\",\"filtercaptionfrom\":\"\",\"filtercaptionto\":\"\",\"chartaggregation\":\"0\",\"isgroupingkey\":false,\"groupingsearchactive\":false,\"orderable\":true,\"inlist\":true,\"indetail\":true,\"intitle\":true,\"insubtitle\":false,\"indetailtitle\":false,\"datasettablelink\":\"\",\"recordidlink\":\"\",\"booleanviewstyle\":0,\"sequence\":60,\"sequencedetail\":8,\"collapsecode\":\"COLLAPSE_ALLG\",\"groupcode\":\"\",\"editable\":false,\"required\":false,\"maxlength\":\"\",\"decimalplaces\":0,\"modal\":false,\"showsearch\":true,\"defaultmin\":\"\",\"defaultmax\":\"\",\"defaultpattern\":\"\",\"defaultmask\":\"\",\"defaultplaceholder\":\"\",\"defaultvalue\":\"\",\"steps\":\"\",\"isreadonly\":false,\"cssclass\":\"\",\"datetablerelation\":\"\",\"startend\":0,\"showweeknumbers\":false,\"showisoweeknumbers\":false,\"autoapply\":false,\"applybuttonclasses\":\"\",\"cancelbuttonclasses\":\"\",\"buttonclasses\":\"\",\"selectprevious\":false,\"selectafter\":false,\"selectpreviousdate\":\"\",\"selectafterdate\":\"\",\"validateerrormessagemin\":\"\",\"validateerrormessagemax\":\"\",\"validateerrormessagerange\":\"\",\"validateerrormessagemaxlength\":\"\",\"validateerrormessagepattern\":\"\",\"validateerrormessageurl\":\"\",\"validateerrormessageemail\":\"\",\"popupinfo\":false,\"defaultContent\":\"\",\"type\":\"string\",\"visible\":true,\"searchable\":true},{\"data\":\"ActionButtons\",\"title\":\"ActionButtons\",\"fieldinfo\":\"\",\"fieldno\":\"\",\"fieldtype\":\"text\",\"edittype\":\"\",\"fielddisplaytype\":\"0\",\"oriname\":\"\",\"textbeforevalue\":\"\",\"textaftervalue\":\"\",\"xchart\":false,\"ychart\":false,\"isfilter\":false,\"filtertype\":\"0\",\"filtercaptionfrom\":\"\",\"filtercaptionto\":\"\",\"chartaggregation\":\"0\",\"isgroupingkey\":false,\"groupingsearchactive\":false,\"orderable\":false,\"inlist\":false,\"indetail\":false,\"intitle\":false,\"insubtitle\":false,\"indetailtitle\":false,\"datasettablelink\":\"\",\"recordidlink\":\"\",\"booleanviewstyle\":0,\"sequence\":9999999,\"sequencedetail\":0,\"collapsecode\":\"\",\"groupcode\":\"\",\"editable\":false,\"required\":false,\"maxlength\":\"\",\"decimalplaces\":0,\"modal\":false,\"showsearch\":true,\"defaultmin\":\"\",\"defaultmax\":\"\",\"defaultpattern\":\"\",\"defaultmask\":\"\",\"defaultplaceholder\":\"\",\"defaultvalue\":\"\",\"steps\":\"\",\"isreadonly\":false,\"cssclass\":\"\",\"datetablerelation\":\"\",\"startend\":0,\"showweeknumbers\":false,\"showisoweeknumbers\":false,\"autoapply\":false,\"applybuttonclasses\":\"\",\"cancelbuttonclasses\":\"\",\"buttonclasses\":\"\",\"selectprevious\":false,\"selectafter\":false,\"selectpreviousdate\":\"\",\"selectafterdate\":\"\",\"validateerrormessagemin\":\"\",\"validateerrormessagemax\":\"\",\"validateerrormessagerange\":\"\",\"validateerrormessagemaxlength\":\"\",\"validateerrormessagepattern\":\"\",\"validateerrormessageurl\":\"\",\"validateerrormessageemail\":\"\",\"popupinfo\":false,\"defaultContent\":\"\",\"type\":\"string\",\"visible\":false,\"searchable\":true}],\"actions\":[{\"DatasetCode\":\"PRIVATEHAUSHALTE\",\"DatasetTableCode\":\"ABFUHRKALENDER\",\"DatasetTableType\":\"HEAD\",\"Action\":\"ICAL\",\"ActionType\":\"iCal\",\"ContentType\":\"\",\"Caption\":\"iCal Download\",\"ID\":\"0\",\"BusinessTypeDefault\":\"\",\"BusinessTypeDefaultFieldNo\":\"0\",\"CodeunitParam\":\"\",\"CSSClass\":\"\",\"CSSIconClass\":\"fal fa-calendar\",\"PortalSize\":\"0\",\"InList\":true,\"DeliveryRequired\":false,\"BusinessType\":0,\"HasEditable\":false,\"HasLinesEditable\":false,\"iCalDateFieldName\":\"Task Date\",\"iCalTitleFieldName\":\"Material Description\",\"iCalDescriptionFieldName\":\"Description\",\"iCalLocationFieldName\":\"Task-at Address\",\"FileRestrictionSize\":\"0\",\"FileRestrictionType\":\"\",\"Grouping\":false,\"Grouped\":false,\"GroupingExpanded\":false,\"ContentTypeFilter\":false,\"Navigate\":\"Basket\",\"InstantExecution\":false,\"SaveAction\":false,\"ActionCardTitle\":\"\",\"ActionCardSubtitle\":\"\",\"ActionCardInfoText\":\"\",\"EditActionCaption\":\"\",\"EditActionIcon\":\"\",\"CancelActionCaption\":\"\",\"CancelActionIcon\":\"\",\"FormularDatasetDependent\":true,\"FormularDatasetTableCode\":\"\"}],\"inputoptions\":[{\"data\":\"Editable::::\",\"title\":\"Einsatzstellen-Nr.\",\"fieldinfo\":\"\",\"edittype\":\"Code\",\"fetchmore\":false,\"isheader\":true,\"sequence\":5,\"collapsecode\":\"COLLAPSE_ALLG\",\"groupcode\":\"\",\"editable\":true,\"required\":false,\"maxlength\":\"\",\"decimalplaces\":0,\"modal\":false,\"showsearch\":false,\"defaultmin\":\"\",\"defaultmax\":\"\",\"defaultpattern\":\"\",\"defaultmask\":\"\",\"defaultplaceholder\":\"\",\"defaultvalue\":\"\",\"steps\":\"\",\"isreadonly\":false,\"cssclass\":\"\",\"datetablerelation\":\"\",\"startend\":0,\"showweeknumbers\":false,\"showisoweeknumbers\":false,\"autoapply\":false,\"applybuttonclasses\":\"FALSE\",\"cancelbuttonclasses\":\"FALSE\",\"buttonclasses\":\"FALSE\",\"selectprevious\":false,\"selectafter\":false,\"selectpreviousdate\":\"\",\"selectafterdate\":\"\",\"validateerrormessagemin\":\"\",\"validateerrormessagemax\":\"\",\"validateerrormessagerange\":\"\",\"validateerrormessagemaxlength\":\"\",\"validateerrormessagepattern\":\"\",\"validateerrormessageurl\":\"\",\"validateerrormessageemail\":\"\",\"PopupInfo\":[],\"min\":\"\",\"max\":\"\",\"value\":\"\"},{\"data\":\"Editable::::\",\"title\":\"Behältergröße\",\"fieldinfo\":\"\",\"edittype\":\"Text\",\"fetchmore\":false,\"isheader\":true,\"sequence\":10,\"collapsecode\":\"COLLAPSE_ALLG\",\"groupcode\":\"\",\"editable\":true,\"required\":false,\"maxlength\":\"\",\"decimalplaces\":0,\"modal\":false,\"showsearch\":false,\"defaultmin\":\"\",\"defaultmax\":\"\",\"defaultpattern\":\"\",\"defaultmask\":\"\",\"defaultplaceholder\":\"\",\"defaultvalue\":\"\",\"steps\":\"\",\"isreadonly\":false,\"cssclass\":\"\",\"datetablerelation\":\"\",\"startend\":0,\"showweeknumbers\":false,\"showisoweeknumbers\":false,\"autoapply\":false,\"applybuttonclasses\":\"FALSE\",\"cancelbuttonclasses\":\"FALSE\",\"buttonclasses\":\"FALSE\",\"selectprevious\":false,\"selectafter\":false,\"selectpreviousdate\":\"\",\"selectafterdate\":\"\",\"validateerrormessagemin\":\"\",\"validateerrormessagemax\":\"\",\"validateerrormessagerange\":\"\",\"validateerrormessagemaxlength\":\"\",\"validateerrormessagepattern\":\"\",\"validateerrormessageurl\":\"\",\"validateerrormessageemail\":\"\",\"PopupInfo\":[],\"min\":\"\",\"max\":\"\",\"value\":\"\"},{\"data\":\"Editable::::\",\"title\":\"Adresse der Einsatzstelle\",\"fieldinfo\":\"\",\"edittype\":\"Text\",\"fetchmore\":false,\"isheader\":true,\"sequence\":20,\"collapsecode\":\"COLLAPSE_ALLG\",\"groupcode\":\"\",\"editable\":true,\"required\":false,\"maxlength\":\"\",\"decimalplaces\":0,\"modal\":false,\"showsearch\":false,\"defaultmin\":\"\",\"defaultmax\":\"\",\"defaultpattern\":\"\",\"defaultmask\":\"\",\"defaultplaceholder\":\"\",\"defaultvalue\":\"\",\"steps\":\"\",\"isreadonly\":false,\"cssclass\":\"\",\"datetablerelation\":\"\",\"startend\":0,\"showweeknumbers\":false,\"showisoweeknumbers\":false,\"autoapply\":false,\"applybuttonclasses\":\"FALSE\",\"cancelbuttonclasses\":\"FALSE\",\"buttonclasses\":\"FALSE\",\"selectprevious\":false,\"selectafter\":false,\"selectpreviousdate\":\"\",\"selectafterdate\":\"\",\"validateerrormessagemin\":\"\",\"validateerrormessagemax\":\"\",\"validateerrormessagerange\":\"\",\"validateerrormessagemaxlength\":\"\",\"validateerrormessagepattern\":\"\",\"validateerrormessageurl\":\"\",\"validateerrormessageemail\":\"\",\"PopupInfo\":[],\"min\":\"\",\"max\":\"\",\"value\":\"\"},{\"data\":\"Editable::::\",\"title\":\"PLZ der \u003cp\u003eEinsatzstelle\u003c/p\u003e\",\"fieldinfo\":\"\",\"edittype\":\"Text\",\"fetchmore\":false,\"isheader\":true,\"sequence\":30,\"collapsecode\":\"COLLAPSE_ALLG\",\"groupcode\":\"\",\"editable\":true,\"required\":false,\"maxlength\":\"\",\"decimalplaces\":0,\"modal\":false,\"showsearch\":false,\"defaultmin\":\"\",\"defaultmax\":\"\",\"defaultpattern\":\"\",\"defaultmask\":\"\",\"defaultplaceholder\":\"\",\"defaultvalue\":\"\",\"steps\":\"\",\"isreadonly\":false,\"cssclass\":\"\",\"datetablerelation\":\"\",\"startend\":0,\"showweeknumbers\":false,\"showisoweeknumbers\":false,\"autoapply\":false,\"applybuttonclasses\":\"FALSE\",\"cancelbuttonclasses\":\"FALSE\",\"buttonclasses\":\"FALSE\",\"selectprevious\":false,\"selectafter\":false,\"selectpreviousdate\":\"\",\"selectafterdate\":\"\",\"validateerrormessagemin\":\"\",\"validateerrormessagemax\":\"\",\"validateerrormessagerange\":\"\",\"validateerrormessagemaxlength\":\"\",\"validateerrormessagepattern\":\"\",\"validateerrormessageurl\":\"\",\"validateerrormessageemail\":\"\",\"PopupInfo\":[],\"min\":\"\",\"max\":\"\",\"value\":\"\"},{\"data\":\"Editable::::\",\"title\":\"Einsatzdatum\",\"fieldinfo\":\"\",\"edittype\":\"Date\",\"fetchmore\":false,\"isheader\":true,\"sequence\":40,\"collapsecode\":\"COLLAPSE_ALLG\",\"groupcode\":\"\",\"editable\":true,\"required\":false,\"maxlength\":\"\",\"decimalplaces\":0,\"modal\":false,\"showsearch\":false,\"defaultmin\":\"\",\"defaultmax\":\"\",\"defaultpattern\":\"\",\"defaultmask\":\"\",\"defaultplaceholder\":\"\",\"defaultvalue\":\"\",\"steps\":\"\",\"isreadonly\":false,\"cssclass\":\"\",\"datetablerelation\":\"\",\"startend\":0,\"showweeknumbers\":false,\"showisoweeknumbers\":false,\"autoapply\":false,\"applybuttonclasses\":\"FALSE\",\"cancelbuttonclasses\":\"FALSE\",\"buttonclasses\":\"FALSE\",\"selectprevious\":false,\"selectafter\":false,\"selectpreviousdate\":\"\",\"selectafterdate\":\"\",\"validateerrormessagemin\":\"\",\"validateerrormessagemax\":\"\",\"validateerrormessagerange\":\"\",\"validateerrormessagemaxlength\":\"\",\"validateerrormessagepattern\":\"\",\"validateerrormessageurl\":\"\",\"validateerrormessageemail\":\"\",\"PopupInfo\":[],\"min\":\"\",\"max\":\"\",\"value\":\"\"},{\"data\":\"Editable::::\",\"title\":\"Einsatzdatum (Wochentag)\",\"fieldinfo\":\"\",\"edittype\":\"Text\",\"fetchmore\":false,\"isheader\":true,\"sequence\":50,\"collapsecode\":\"COLLAPSE_ALLG\",\"groupcode\":\"\",\"editable\":true,\"required\":false,\"maxlength\":\"\",\"decimalplaces\":0,\"modal\":false,\"showsearch\":false,\"defaultmin\":\"\",\"defaultmax\":\"\",\"defaultpattern\":\"\",\"defaultmask\":\"\",\"defaultplaceholder\":\"\",\"defaultvalue\":\"\",\"steps\":\"\",\"isreadonly\":false,\"cssclass\":\"\",\"datetablerelation\":\"\",\"startend\":0,\"showweeknumbers\":false,\"showisoweeknumbers\":false,\"autoapply\":false,\"applybuttonclasses\":\"FALSE\",\"cancelbuttonclasses\":\"FALSE\",\"buttonclasses\":\"FALSE\",\"selectprevious\":false,\"selectafter\":false,\"selectpreviousdate\":\"\",\"selectafterdate\":\"\",\"validateerrormessagemin\":\"\",\"validateerrormessagemax\":\"\",\"validateerrormessagerange\":\"\",\"validateerrormessagemaxlength\":\"\",\"validateerrormessagepattern\":\"\",\"validateerrormessageurl\":\"\",\"validateerrormessageemail\":\"\",\"PopupInfo\":[],\"min\":\"\",\"max\":\"\",\"value\":\"\"},{\"data\":\"Editable::::\",\"title\":\"Behälteranzahl\",\"fieldinfo\":\"\",\"edittype\":\"Decimal\",\"fetchmore\":false,\"isheader\":true,\"sequence\":55,\"collapsecode\":\"COLLAPSE_ALLG\",\"groupcode\":\"\",\"editable\":true,\"required\":false,\"maxlength\":\"\",\"decimalplaces\":0,\"modal\":false,\"showsearch\":false,\"defaultmin\":\"\",\"defaultmax\":\"\",\"defaultpattern\":\"\",\"defaultmask\":\"\",\"defaultplaceholder\":\"\",\"defaultvalue\":\"\",\"steps\":\"\",\"isreadonly\":false,\"cssclass\":\"\",\"datetablerelation\":\"\",\"startend\":0,\"showweeknumbers\":false,\"showisoweeknumbers\":false,\"autoapply\":false,\"applybuttonclasses\":\"FALSE\",\"cancelbuttonclasses\":\"FALSE\",\"buttonclasses\":\"FALSE\",\"selectprevious\":false,\"selectafter\":false,\"selectpreviousdate\":\"\",\"selectafterdate\":\"\",\"validateerrormessagemin\":\"\",\"validateerrormessagemax\":\"\",\"validateerrormessagerange\":\"\",\"validateerrormessagemaxlength\":\"\",\"validateerrormessagepattern\":\"\",\"validateerrormessageurl\":\"\",\"validateerrormessageemail\":\"\",\"PopupInfo\":[],\"min\":\"\",\"max\":\"\",\"value\":\"\"},{\"data\":\"Editable::::\",\"title\":\"Materialbeschreibung\",\"fieldinfo\":\"\",\"edittype\":\"Text\",\"fetchmore\":false,\"isheader\":true,\"sequence\":60,\"collapsecode\":\"COLLAPSE_ALLG\",\"groupcode\":\"\",\"editable\":true,\"required\":false,\"maxlength\":\"\",\"decimalplaces\":0,\"modal\":false,\"showsearch\":false,\"defaultmin\":\"\",\"defaultmax\":\"\",\"defaultpattern\":\"\",\"defaultmask\":\"\",\"defaultplaceholder\":\"\",\"defaultvalue\":\"\",\"steps\":\"\",\"isreadonly\":false,\"cssclass\":\"\",\"datetablerelation\":\"\",\"startend\":0,\"showweeknumbers\":false,\"showisoweeknumbers\":false,\"autoapply\":false,\"applybuttonclasses\":\"FALSE\",\"cancelbuttonclasses\":\"FALSE\",\"buttonclasses\":\"FALSE\",\"selectprevious\":false,\"selectafter\":false,\"selectpreviousdate\":\"\",\"selectafterdate\":\"\",\"validateerrormessagemin\":\"\",\"validateerrormessagemax\":\"\",\"validateerrormessagerange\":\"\",\"validateerrormessagemaxlength\":\"\",\"validateerrormessagepattern\":\"\",\"validateerrormessageurl\":\"\",\"validateerrormessageemail\":\"\",\"PopupInfo\":[],\"min\":\"\",\"max\":\"\",\"value\":\"\"}],\"rangefilters\":[],\"settings\":{\"Company\":\"Berlin Recycling\",\"BusinessType\":0,\"Delivery\":false,\"HeaderText\":\"Abfuhrkalender\",\"HeaderInfo\":\"\u003cp\u003eIn der folgenden Tabelle werden alle Abfuhrtage aufgelistet. Sie k\u0026ouml;nnen sich die Liste mittels der Aktionssymbole links unter der Tabelle exportieren.\u003c/p\u003e\\r\\n\",\"Language\":\"de\",\"NoEntriesExistInfo\":\"Es sind keine Einträge vorhanden.\",\"NoAddressExistInfo\":\"Es ist keine Liefer- / Bestelladresse eingerichtet.\",\"NoLayoutExistInfo\":\"Es wurde keine Layout eingerichtet.\",\"BasketInfo\":\"\",\"InfoBasketPopup\":\"Sie haben noch Bestellungen im Warenkorb.\",\"ChartType\":\"0\",\"TablePaging\":\"100\",\"TableExport\":true,\"CopyExport\":true,\"ExcelExport\":true,\"CSVExport\":true,\"PDFExport\":true,\"TableResponsive\":false,\"TableScrolling\":false,\"TableMouseWheelPaging\":false,\"TableFixedColumnsRight\":0,\"TableFixedColumnsLeft\":0,\"TableFixedHeader\":true,\"ViewStyle\":\"0\",\"ShowListOnly\":false,\"MarkUnread\":false,\"QuickAction\":false,\"ShowDetailOnOneEntry\":false,\"DisableSearch\":false,\"ColumnSpan\":10,\"ColumnOffset\":1,\"ImageCaption\":\"\",\"SingleImageView\":false,\"ImageCSSClass\":\"\",\"ViewImage\":false,\"ViewImage2\":false,\"ViewImage3\":false,\"ViewImage4\":false,\"ViewImage5\":false,\"BackgroundImage\":false,\"datefieldno\":\"0\",\"titlefieldno\":\"0\",\"descriptionfieldno\":\"0\",\"locationfieldno\":\"0\",\"calactiveheader\":false,\"caltodayview\":false,\"caldayview\":false,\"calweekview\":false,\"calmonthview\":false,\"calshowallview\":false,\"calactivefooter\":false,\"caltodaylistview\":false,\"caldaylistview\":false,\"calweeklistview\":false,\"calmonthlistview\":false,\"calshowalllistview\":false,\"caltodaylistcaption\":\"\",\"caldaylistcaption\":\"\",\"calweeklistcaption\":\"\",\"calmonthlistcaption\":\"\",\"calshowalllistcaption\":\"\",\"caleventbackground\":\"\",\"calglobaleventbg\":\"\",\"calcssiconclass\":\"\",\"calglobalcssicon\":\"\",\"icalactivefield\":false,\"icalcaption\":\"\",\"icaldatefieldno\":\"0\",\"icaltitlefieldno\":\"0\",\"icaldescriptionfieldno\":\"0\",\"icallocationfieldno\":\"0\",\"TextVS\":\"\",\"ImageCollapseCode\":\"\",\"ImageGroupCode\":\"\",\"ImageSequence\":0,\"LineCollapseCode\":\"\",\"LineGroupCode\":\"\",\"LineSequence\":0},\"customers\":[{\"RecordID\":\"CustomerDSDEDKSKEK0083011599\",\"Company\":\"Berlin Recycling\",\"OneRowSeperator\":\"\",\"ImageMapping\":\"\",\"Caption\":\"\",\"CSSClassCaption\":\"\",\"CSSClassValue\":\"\",\"Info\":[{\"Caption\":\"\",\"Value\":\"0083011599\",\"FieldNo\":1,\"FieldType\":\"Code\",\"Text\":\"\",\"Link\":\"\",\"CaptionValueInRow\":false,\"CaptionBold\":false,\"ValueBold\":true,\"Type\":0,\"CSSClassCaption\":\"\",\"CSSClassValue\":\"\",\"TextBeforeValue\":\"\",\"TextAfterValue\":\"\"},{\"Caption\":\"\",\"Value\":\"Christian Lange\",\"FieldNo\":2,\"FieldType\":\"Text\",\"Text\":\"\",\"Link\":\"\",\"CaptionValueInRow\":false,\"CaptionBold\":false,\"ValueBold\":true,\"Type\":0,\"CSSClassCaption\":\"\",\"CSSClassValue\":\"\",\"TextBeforeValue\":\"\",\"TextAfterValue\":\"\"},{\"Caption\":\"\",\"Value\":\"Musterstr. 1\",\"FieldNo\":5,\"FieldType\":\"Text\",\"Text\":\"\",\"Link\":\"\",\"CaptionValueInRow\":false,\"CaptionBold\":false,\"ValueBold\":false,\"Type\":0,\"CSSClassCaption\":\"\",\"CSSClassValue\":\"\",\"TextBeforeValue\":\"\",\"TextAfterValue\":\"\"},{\"Caption\":\"\",\"Value\":\"12345\",\"FieldNo\":91,\"FieldType\":\"Code\",\"Text\":\"\",\"Link\":\"\",\"CaptionValueInRow\":false,\"CaptionBold\":false,\"ValueBold\":false,\"Type\":0,\"CSSClassCaption\":\"\",\"CSSClassValue\":\"\",\"TextBeforeValue\":\"\",\"TextAfterValue\":\"\"},{\"Caption\":\"\",\"Value\":\"Berlin\",\"FieldNo\":7,\"FieldType\":\"Text\",\"Text\":\"\",\"Link\":\"\",\"CaptionValueInRow\":false,\"CaptionBold\":false,\"ValueBold\":false,\"Type\":0,\"CSSClassCaption\":\"\",\"CSSClassValue\":\"\",\"TextBeforeValue\":\"\",\"TextAfterValue\":\"\"}],\"BusinessMappingCode\":\"CUSTOMER\",\"BusinessInfoCompact\":{\"RecordID\":\"CustomerDSDEDKSKEK0083011599\",\"Company\":\"Berlin Recycling\",\"OneRowSeperator\":\"\",\"ImageMapping\":\"\",\"Caption\":\"\",\"CSSClassCaption\":\"\",\"CSSClassValue\":\"\",\"Info\":[{\"Caption\":\"\",\"Value\":\"Christian Lange\",\"FieldNo\":2,\"FieldType\":\"Text\",\"Text\":\"\",\"Link\":\"\",\"CaptionValueInRow\":false,\"CaptionBold\":false,\"ValueBold\":true,\"Type\":0,\"CSSClassCaption\":\"\",\"CSSClassValue\":\"\",\"TextBeforeValue\":\"\",\"TextAfterValue\":\"\"}],\"DeliveryAddress\":[],\"DeliveryAddressCompact\":[],\"InvoiceAddress\":[],\"InvoiceAddressCompact\":[]},\"DeliveryAddress\":[{\"RecordID\":\"Ship-toKSKEKAddressDSDEDKSKEK0083011599,(int) Einsatzstellennummer\",\"Company\":\"Berlin Recycling\",\"OneRowSeperator\":\"\",\"ImageMapping\":\"\",\"Caption\":\"\",\"CSSClassCaption\":\"\",\"CSSClassValue\":\"\",\"Info\":[{\"Caption\":\"\",\"Value\":\"Christian Lange\",\"FieldNo\":3,\"FieldType\":\"Text\",\"Text\":\"\",\"Link\":\"\",\"CaptionValueInRow\":false,\"CaptionBold\":false,\"ValueBold\":true,\"Type\":0,\"CSSClassCaption\":\"\",\"CSSClassValue\":\"\",\"TextBeforeValue\":\"\",\"TextAfterValue\":\"\"},{\"Caption\":\"\",\"Value\":\"Musterstr. 1\",\"FieldNo\":5,\"FieldType\":\"Text\",\"Text\":\"\",\"Link\":\"\",\"CaptionValueInRow\":false,\"CaptionBold\":false,\"ValueBold\":false,\"Type\":0,\"CSSClassCaption\":\"\",\"CSSClassValue\":\"\",\"TextBeforeValue\":\"\",\"TextAfterValue\":\"\"},{\"Caption\":\"\",\"Value\":\"12345\",\"FieldNo\":91,\"FieldType\":\"Code\",\"Text\":\"\",\"Link\":\"\",\"CaptionValueInRow\":false,\"CaptionBold\":false,\"ValueBold\":false,\"Type\":0,\"CSSClassCaption\":\"\",\"CSSClassValue\":\"\",\"TextBeforeValue\":\"\",\"TextAfterValue\":\"\"},{\"Caption\":\"\",\"Value\":\"Berlin\",\"FieldNo\":7,\"FieldType\":\"Text\",\"Text\":\"\",\"Link\":\"\",\"CaptionValueInRow\":false,\"CaptionBold\":false,\"ValueBold\":false,\"Type\":0,\"CSSClassCaption\":\"\",\"CSSClassValue\":\"\",\"TextBeforeValue\":\"\",\"TextAfterValue\":\"\"}],\"DeliveryAddress\":[],\"DeliveryAddressCompact\":[],\"InvoiceAddress\":[],\"InvoiceAddressCompact\":[]}],\"DeliveryAddressCompact\":[{\"RecordID\":\"Ship-toKSKEKAddressDSDEDKSKEK0083011599,(int) Einsatzstellennummer\",\"Company\":\"Berlin Recycling\",\"OneRowSeperator\":\",\",\"ImageMapping\":\"\",\"Caption\":\"\",\"CSSClassCaption\":\"\",\"CSSClassValue\":\"\",\"Info\":[{\"Caption\":\"\",\"Value\":\"Musterstr. 1\",\"FieldNo\":5,\"FieldType\":\"Text\",\"Text\":\"\",\"Link\":\"\",\"CaptionValueInRow\":false,\"CaptionBold\":false,\"ValueBold\":true,\"Type\":0,\"CSSClassCaption\":\"\",\"CSSClassValue\":\"\",\"TextBeforeValue\":\"\",\"TextAfterValue\":\"\"},{\"Caption\":\"\",\"Value\":\"12345\",\"FieldNo\":91,\"FieldType\":\"Code\",\"Text\":\"\",\"Link\":\"\",\"CaptionValueInRow\":false,\"CaptionBold\":false,\"ValueBold\":false,\"Type\":0,\"CSSClassCaption\":\"\",\"CSSClassValue\":\"\",\"TextBeforeValue\":\"\",\"TextAfterValue\":\"\"},{\"Caption\":\"\",\"Value\":\"Berlin\",\"FieldNo\":7,\"FieldType\":\"Text\",\"Text\":\"\",\"Link\":\"\",\"CaptionValueInRow\":false,\"CaptionBold\":false,\"ValueBold\":false,\"Type\":0,\"CSSClassCaption\":\"\",\"CSSClassValue\":\"\",\"TextBeforeValue\":\"\",\"TextAfterValue\":\"\"}],\"DeliveryAddress\":[],\"DeliveryAddressCompact\":[],\"InvoiceAddress\":[],\"InvoiceAddressCompact\":[]}],\"InvoiceAddress\":[],\"InvoiceAddressCompact\":[]}],\"vendors\":[],\"captions\":{\"LanguageCaption\":\"Sprache\",\"BusinessPartnerHeadingCaption\":\"Geschäftspartner\",\"DeliveryHeadingCaption\":\"Adresse\",\"ChangeDeliveryCaption\":\"Lieferadresse ändern\",\"OKCaption\":\"OK\",\"CancelCaption\":\"Abbrechen\",\"YesCaption\":\"Ja\",\"NoCaption\":\"Nein\",\"SessionCaption\":\"Sitzung\",\"SessionExpiredCaption\":\"Ihre Sitzung ist abgelaufen.\",\"CloseCaption\":\"Schliessen\",\"DeleteCaption\":\"Löschen\",\"AddCaption\":\"Hinzufügen\",\"RemoveCaption\":\"Entfernen\",\"EditCaption\":\"Bearbeiten\",\"ActivateCaption\":\"Aktivieren\",\"DeactivateCaption\":\"Deaktivieren\",\"StartCaption\":\"Starten\",\"EndCaption\":\"Beenden\",\"SaveCaption\":\"Speichern\",\"SearchCaption\":\"Suchen\",\"ActionCaption\":\"Aktion\",\"StatusCaption\":\"Status\",\"ClientCaption\":\"Mandant\",\"UploadCaption\":\"Upload\",\"DownloadCaption\":\"Download\",\"RequiredDescriptionCaption\":\"*Pflichtfeld\",\"RequiredMessageCaption\":\"Dieses Feld ist erforderlich.\",\"FilterCaption\":\"Filter\",\"ErrorDescriptionCaption\":\"Der ausgewählte Wert darf nicht 0 sein.\",\"OptionDefaultText\":\"Bitte wählen Sie einen Wert aus.\",\"BasketQuestionDelete\":\"Wollen Sie den Eintrag wirklich aus den Warenkorb entfernen?\",\"BasketComment\":\"Warenkorb Kommentar\",\"BasketCaption\":\"Meine Anfragen\",\"BasketOrderedCaption\":\"\",\"HomeCaption\":\"Startseite\",\"SettingsCaption\":\"\",\"HelpCaption\":\"Hilfe\",\"CICaption\":\"Benutzerverwaltung\",\"LogoutCaption\":\"Abmelden\",\"UserMgtCaption\":\"Benutzerverwaltung\",\"InfoMessageMin\":\"\",\"InfoMessageMax\":\"\",\"InfoMessageRange\":\"\",\"MinCaption\":\"Minimum\",\"MaxCaption\":\"Maximum\",\"UserMgtAccountCaption\":\"Konto\",\"UserMgtLoginDataCaption\":\"Anmeldedaten\",\"UserMgtLoginNameCaption\":\"Benutzername\",\"UserMgtEditUserData\":\"Stammdaten verwalten\",\"UserMgtSaveUserData\":\"Stammdaten gespeichert\",\"UserMgtLoginMailCaption\":\"E-Mail Adresse\",\"UserMgtContactDCaption\":\"Kontaktdaten\",\"UserMgtContactPCaption\":\"Ansprechpartner\",\"UserMgtBusinessCaption\":\"Geschäftsdaten\",\"UserMgtDeliveryCaption\":\"Lieferadressen\",\"UserMgtInvoiceCaption\":\"Rechnungsadressen\",\"UserMgtNoDeliveryCaption\":\"Es sind keine Lieferanschriften vorhanden.\",\"UserMgtNoInvoiceCaption\":\"Es sind keine Rechnungsadressen vorhanden.\",\"UserMgtPasswordCaption\":\"Kennwort ändern\",\"UserMgtCurPassCaption\":\"Aktuelles Kennwort\",\"UserMgtNewPassCaption\":\"Neues Kennwort\",\"UserMgtNewPass2Caption\":\"Neues Kennwort wiederholen\",\"UserMgtPasswordBtnCaption\":\"Kennwort ändern\",\"UserMgtForgotPasswordCaption\":\"Kennwort vergessen\",\"UserMgtResetPasswordCaption\":\"Kennwort zurücksetzen\",\"UserMgtPurchAdCaption\":\"Einkauf\",\"UserMgtSalesAdCaption\":\"Verkauf\",\"UserMgtOtherAdCaption\":\"Sonstige\",\"UserMgtUserAdCaption\":\"Benutzeradministration\",\"UserMgtLoadMoreCaption\":\"Mehr laden\",\"LastLoginCaption\":\"Letzte Anmeldung\",\"TitleCaption\":\"Titel\",\"FirstNameCaption\":\"Vorname\",\"LastNameCaption\":\"Nachname\",\"AddressCaption\":\"Adresse\",\"PostCodeCaption\":\"Postleitzahl\",\"CityCaption\":\"Stadt\",\"PhoneNoCaption\":\"Telefonnummer\",\"MobilePhoneNoCaption\":\"Handynummer\",\"Company2Caption\":\"Firma\",\"JobTitleCaption\":\"Berufsbezeichnung\",\"ConfirmCaption\":\"Bestätigen\",\"ExpirationDateCaption\":\"Ablaufdatum\",\"BasketHistoryCapNew\":\"Neu\",\"BasketHistoryCapExisting\":\"Existierend\",\"ContinueShopping\":\"Wollen Sie weiter einkaufen?\",\"BackToLogin\":\"Zurück zum Login\",\"SessionTimeout\":\"Sitzung abgelaufen\",\"InfoAreYouSure\":\"Sind Sie sicher, dass Sie fortfahren möchten?\"},\"popinfos\":[],\"container\":[{\"Caption\":\"Allgemein\",\"Type\":\"0\",\"Code\":\"COLLAPSE_ALLG\",\"ColumnCount\":2,\"Sequence\":0,\"CSSClassCaption\":\"\",\"CSSClassContainer\":\"\"}]}}"}

One data row looks like this:

{\"HasLines\":\"false\",\"IDRelationPopup\":\"3b8c8f05-4630-454f-9105-7e4a1b0f5341\",\"RecordID\":\"WasteKSKEKMgtKSKEKLineKSKEKCalendarKSKEKBufferDSDEDKSKEK(int) Einsatzstellennummer,10000\",\"DT_RowId\":\"row_1\",\"Read\":false,\"Company\":\"Berlin Recycling\",\"DatasetCode\":\"PRIVATEHAUSHALTE\",\"DatasetTableCode\":\"ABFUHRKALENDER\",\"DatasetTableType\":\"HEAD\",\"UploadCount\":\"0\",\"UploadOrderCount\":\"0\",\"Task-at Code\":\"(int) Einsatzstellennummer\",\"Task-at Code ###Link###\":\"\",\"Task-at Code ###DatasetTableLink###\":\"\",\"Description\":\"240 L MGB Leerung\",\"Description ###Link###\":\"\",\"Description ###DatasetTableLink###\":\"\",\"Task-at Address\":\"Musterstr.. 1\",\"Task-at Address ###Link###\":\"\",\"Task-at Address ###DatasetTableLink###\":\"\",\"Task-at Post Code\":\"12345\",\"Task-at Post Code ###Link###\":\"\",\"Task-at Post Code ###DatasetTableLink###\":\"\",\"Task Date\":\"2023-04-20\",\"Task Date ###Link###\":\"\",\"Task Date ###DatasetTableLink###\":\"\",\"Task Date (Weekday)\":\"Donnerstag\",\"Task Date (Weekday) ###Link###\":\"\",\"Task Date (Weekday) ###DatasetTableLink###\":\"\",\"Quantity\":\"1\",\"Quantity ###Link###\":\"\",\"Quantity ###DatasetTableLink###\":\"\",\"Material Description\":\"5.01 Altpapier, gemischt\",\"Material Description ###Link###\":\"\",\"Material Description ###DatasetTableLink###\":\"\",\"ActionButtons\":\"\"}

The imho interesting keys are:

it might be the case if one has multiple "Einsatzstellen" oder different waste types, that more keys become relevant. But for me with "Papiertonne" that's it

I hope that this will help to debug this further, and maybe there's a solution in the future

splitbrain commented 1 year ago

I'm no python programmer so integrating this properly is beyond me. But I am a web developer so I was able to poke around enough to come up with a python script that successfully logs in and fetches the next 10 appointments:

import requests
import json

session = requests.Session()

#get us a session cookie
response = session.get('https://kundenportal.berlin-recycling.de/')
if response.status_code != 200:
    raise Exception('failed to open portal')

# login the session
url = 'https://kundenportal.berlin-recycling.de/Login.aspx/Auth'
payload = {
  "username": "MY EMAIL ADDRESS",
  "password": "MY PASSWORD",
  "rememberMe": False,
  "encrypted": False
}
headers = {
    'Content-Type': 'application/json'
}
response = session.post(url, json=payload, headers=headers)
if response.status_code != 200:
    raise Exception('failed to login')

# get the default view (might not needed, but is a good check the login worked)
response = session.get('https://kundenportal.berlin-recycling.de/Default.aspx')
if response.history:
    raise Exception ('The default view request was redirected to ' + response.url)

# dashboard request initializes the data object, otherwise the next request will fail
url = 'https://kundenportal.berlin-recycling.de/Default.aspx/GetDashboard'
headers = {
    'Content-Type': 'application/json'
}
response = session.post(url, headers=headers)
if response.status_code != 200:
    raise Exception('failed to initialize dashboard')

# get the data table contents
url = 'https://kundenportal.berlin-recycling.de/Default.aspx/GetDatasetTableHead'
payload = {
  "datasettablecode": "ABFUHRKALENDER",
  "startindex": 0,
  "searchtext": "",
  "rangefilter": "[]",
  "ordername": "",
  "orderdir": "",
  "ClientParameters": "",
  "headrecid": ""
}
headers = {
    'Content-Type': 'application/json'
}
response = session.post(url, json=payload, headers=headers)
if response.status_code != 200:
    raise Exception('failed to initialize dashboard')

# parse and print the response
data = json.loads(response.content.decode())
data = json.loads(data['d'])
#print(json.dumps(data, indent=4))
if data['Error']:
    raise Exception('JSON signalled an error')

for row in data['Object']['data']:
    print(row['Task Date'], row['Description'], row['Material Description'])

I hope this helps to fix the source.

5ila5 commented 1 year ago

Made some changes in #894 only to the login process as the rest seems not to have changed. Could someone with an account test the changes?

brlnr23 commented 1 year ago

@5ila5 , thanks for taking care of this so quickly. I have to admit, that I don't really know a good approach how to test this easily. So what I did: I replaced the content of the original file on my local HA instance with the one from the PR. Maybe thats dumb - maybe this helps ... but here's the related log entry after a reboot

Logger: waste_collection_schedule.source_shell
Source: custom_components/waste_collection_schedule/waste_collection_schedule/source_shell.py:136
Integration: waste_collection_schedule ([documentation](https://github.com/mampfes/hacs_waste_collection_schedule#readme))
First occurred: 17:03:59 (1 occurrences)
Last logged: 17:03:59

fetch failed for source Berlin Recycling: Traceback (most recent call last): File "/config/custom_components/waste_collection_schedule/waste_collection_schedule/source_shell.py", line 134, in fetch entries = self._source.fetch() File "/config/custom_components/waste_collection_schedule/waste_collection_schedule/source/berlin_recycling_de.py", line 48, in fetch r.raise_for_status() File "/usr/local/lib/python3.10/site-packages/requests/models.py", line 1021, in raise_for_status raise HTTPError(http_error_msg, response=self) requests.exceptions.HTTPError: 440 Client Error: for url: https://kundenportal.berlin-recycling.de/Default.aspx//GetDashboard

the obvious. to remove the slash in L44 seems to be a dead end either:

Logger: waste_collection_schedule.source_shell
Source: custom_components/waste_collection_schedule/waste_collection_schedule/source_shell.py:136
Integration: waste_collection_schedule ([documentation](https://github.com/mampfes/hacs_waste_collection_schedule#readme))
First occurred: 17:13:12 (1 occurrences)
Last logged: 17:13:12

fetch failed for source Berlin Recycling: Traceback (most recent call last): File "/config/custom_components/waste_collection_schedule/waste_collection_schedule/source_shell.py", line 134, in fetch entries = self._source.fetch() File "/config/custom_components/waste_collection_schedule/waste_collection_schedule/source/berlin_recycling_de.py", line 48, in fetch r.raise_for_status() File "/usr/local/lib/python3.10/site-packages/requests/models.py", line 1021, in raise_for_status raise HTTPError(http_error_msg, response=self) requests.exceptions.HTTPError: 440 Client Error: for url: https://kundenportal.berlin-recycling.de/Default.aspx/GetDashboard

I hope that this will help you ... still keeping my fingers crossed :)

5ila5 commented 1 year ago

added the header, that @splitbrain used and removed the old payload added LOGGER debug statements

to see logger output: https://www.home-assistant.io/integrations/logger/:

logger:
  default: warning
  logs:
    custom_components.waste_collection_schedule: debug
mookuh2k5 commented 1 year ago

I replaced the file for Berlin Recycling in my install and now got the following error message:

fetch failed for source Berlin Recycling: Traceback (most recent call last): File "/config/custom_components/waste_collection_schedule/waste_collection_schedule/source_shell.py", line 134, in fetch entries = self._source.fetch() File "/config/custom_components/waste_collection_schedule/waste_collection_schedule/source/berlin_recycling_de.py", line 56, in fetch r.raise_for_status() File "/usr/local/lib/python3.10/site-packages/requests/models.py", line 1021, in raise_for_status raise HTTPError(http_error_msg, response=self) requests.exceptions.HTTPError: 440 Client Error: for url: https://kundenportal.berlin-recycling.de/Default.aspx/GetDashboard
brlnr23 commented 1 year ago

same here... an for some reason no debug log messages anywhere. I went for a short period of time with the general DEBUG log level and I found this:

the HTML looks pretty much like the default login on https://kundenportal.berlin-recycling.de/Login.aspx#validation-step-1 so I suppose the login didn't even work :/

2023-04-19 18:50:12.366 DEBUG (SyncWorker_1) [waste_collection_schedule.source.berlin_recycling_de] login response: ```html 2023-04-19 18:50:12.366 DEBUG (SyncWorker_1) [waste_collection_schedule.source.berlin_recycling_de] login response: Kundenportal der Berlin Recycling GmbH

2023-04-19 18:50:12.428 DEBUG (SyncWorker_1) [waste_collection_schedule.source.berlin_recycling_de] dashboard response: {"d":""} 2023-04-19 18:50:12.458 ERROR (SyncWorker_1) [waste_collection_schedule.source_shell] fetch failed for source Berlin Recycling: Traceback (most recent call last): File "/config/custom_components/waste_collection_schedule/waste_collection_schedule/source_shell.py", line 134, in fetch entries = self._source.fetch() File "/config/custom_components/waste_collection_schedule/waste_collection_schedule/source/berlin_recycling_de.py", line 56, in fetch r.raise_for_status() File "/usr/local/lib/python3.10/site-packages/requests/models.py", line 1021, in raise_for_status raise HTTPError(http_error_msg, response=self) requests.exceptions.HTTPError: 440 Client Error: for url: https://kundenportal.berlin-recycling.de/Default.aspx/GetDashboard ```
5ila5 commented 1 year ago

the above script uses json parameter to login I still used data. This could be the problem. Updated it

mookuh2k5 commented 1 year ago

Now I've got the following error:

This error originated from a custom integration.

Logger: waste_collection_schedule.source_shell
Source: custom_components/waste_collection_schedule/waste_collection_schedule/source_shell.py:136
Integration: waste_collection_schedule (documentation)
First occurred: 19:13:24 (1 occurrences)
Last logged: 19:13:24

fetch failed for source Berlin Recycling: Traceback (most recent call last): File "/config/custom_components/waste_collection_schedule/waste_collection_schedule/source_shell.py", line 134, in fetch entries = self._source.fetch() File "/config/custom_components/waste_collection_schedule/waste_collection_schedule/source/berlin_recycling_de.py", line 81, in fetch for d in data["data"]: KeyError: 'data'
5ila5 commented 1 year ago

I updated the data part to be more like the provided script

mookuh2k5 commented 1 year ago

New error:

This error originated from a custom integration.

Logger: waste_collection_schedule.source_shell
Source: custom_components/waste_collection_schedule/waste_collection_schedule/source_shell.py:136
Integration: waste_collection_schedule (documentation)
First occurred: 19:35:45 (1 occurrences)
Last logged: 19:35:45

fetch failed for source Berlin Recycling: Traceback (most recent call last): File "/config/custom_components/waste_collection_schedule/waste_collection_schedule/source_shell.py", line 134, in fetch entries = self._source.fetch() File "/config/custom_components/waste_collection_schedule/waste_collection_schedule/source/berlin_recycling_de.py", line 78, in fetch raise Exception("No data found", data) Exception: ('No data found', {'Error': True, 'Message': 'Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.'})
5ila5 commented 1 year ago

the only diffrece I see is now "rangefilter": "",-> "rangefilter": "[]",

mookuh2k5 commented 1 year ago

I might be able to look into it myself during the weekend

mookuh2k5 commented 1 year ago

I work your fix and created a pull request that seems to fix the issue for me. First time really working with Github so not sure how to contribute correctly.

5ila5 commented 1 year ago

should be fixed by #903