Initial
This commit is contained in:
commit
cfb07ce1c0
778
DEV.md
Normal file
778
DEV.md
Normal file
@ -0,0 +1,778 @@
|
||||
# Visual Spending Visualization - Developer Guide
|
||||
|
||||
This document provides details on how to customize and extend the Visual Spending sunburst chart. The visualization is built using Apache ECharts and displays spending data in a hierarchical, interactive format.
|
||||
|
||||
## Table of Contents
|
||||
|
||||
1. [Project Structure](#project-structure)
|
||||
2. [Chart Configuration](#chart-configuration)
|
||||
3. [Label Customization](#label-customization)
|
||||
4. [Hover Effects](#hover-effects)
|
||||
5. [Details Box](#details-box)
|
||||
6. [Color Management](#color-management)
|
||||
7. [Drilling Down & Interactivity](#drilling-down--interactivity)
|
||||
8. [Data Structure](#data-structure)
|
||||
9. [Layout & Positioning](#layout--positioning)
|
||||
10. [Advanced Configuration](#advanced-configuration)
|
||||
|
||||
## Project Structure
|
||||
|
||||
The project consists of four main files:
|
||||
|
||||
- **index.html**: Contains the basic HTML structure and imports libraries
|
||||
- **styles.css**: Handles styling for the visualization and details box
|
||||
- **app.js**: Contains the core functionality and visualization logic
|
||||
- **server.js**: A simple Node.js server to serve the application
|
||||
|
||||
## Chart Configuration
|
||||
|
||||
The chart is created and configured in the `renderChart` function in `app.js`. The main configuration is defined in the `option` object:
|
||||
|
||||
```javascript
|
||||
option = {
|
||||
backgroundColor: '#fff',
|
||||
grid: {
|
||||
left: '10%',
|
||||
containLabel: true
|
||||
},
|
||||
series: {
|
||||
type: 'sunburst',
|
||||
radius: [0, '95%'],
|
||||
center: ['40%', '50%'],
|
||||
nodeClick: 'rootToNode',
|
||||
// ... other options
|
||||
},
|
||||
// ... graphic elements, etc.
|
||||
};
|
||||
```
|
||||
|
||||
### Key Configuration Properties
|
||||
|
||||
- `type: 'sunburst'`: Specifies the chart type
|
||||
- `radius`: Controls the inner and outer radius of the chart
|
||||
- `center`: Positions the chart in the container [x, y]
|
||||
- `nodeClick`: Determines behavior when clicking nodes ('rootToNode', 'link', false)
|
||||
- `gap`: Space between segments (default: 0)
|
||||
- `sort`: How to sort data (null, 'asc', 'desc', or function)
|
||||
|
||||
## Label Customization
|
||||
|
||||
Labels are configured at multiple levels:
|
||||
|
||||
### Global Label Configuration
|
||||
|
||||
```javascript
|
||||
label: {
|
||||
show: true,
|
||||
formatter: function(param) {
|
||||
// Logic to format labels
|
||||
if (param.depth === 0) {
|
||||
if (param.name.length > 10) {
|
||||
return param.name.replace(/(.{1,10})(?: |$)/g, "$1\n").trim();
|
||||
}
|
||||
return param.name;
|
||||
} else {
|
||||
return '';
|
||||
}
|
||||
},
|
||||
minAngle: 5, // Only show labels in segments covering at least 5 degrees
|
||||
align: 'center', // Horizontal alignment: 'left', 'center', 'right'
|
||||
verticalAlign: 'middle', // Vertical alignment: 'top', 'middle', 'bottom'
|
||||
position: 'inside' // Position: 'inside', 'outside'
|
||||
}
|
||||
```
|
||||
|
||||
### Per-Level Label Configuration
|
||||
|
||||
Each level in the sunburst can have its own label configuration:
|
||||
|
||||
```javascript
|
||||
levels: [
|
||||
{}, // Level 0 (uses defaults)
|
||||
{
|
||||
// Level 1 (Categories)
|
||||
r0: '15%', // Inner radius
|
||||
r: '35%', // Outer radius
|
||||
label: {
|
||||
show: true,
|
||||
rotate: 'tangential', // 'radial', 'tangential', or 0-360 degrees
|
||||
fontSize: 12,
|
||||
lineHeight: 15,
|
||||
align: 'center',
|
||||
verticalAlign: 'middle',
|
||||
position: 'inside'
|
||||
}
|
||||
},
|
||||
// ... other levels
|
||||
]
|
||||
```
|
||||
|
||||
### Label Rotation Options
|
||||
|
||||
- `rotate: 'tangential'`: Text follows the curve of the segment
|
||||
- `rotate: 'radial'`: Text radiates outward from center
|
||||
- `rotate: 30`: Rotate by a specific angle (in degrees)
|
||||
|
||||
### Showing/Hiding Labels
|
||||
|
||||
You can use a function to conditionally show/hide labels based on any criteria:
|
||||
|
||||
```javascript
|
||||
label: {
|
||||
show: function(param) {
|
||||
// Only show for segments larger than 5% of total
|
||||
return (param.value / totalValue) > 0.05;
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Hover Effects
|
||||
|
||||
Hover effects are defined in the `emphasis` property:
|
||||
|
||||
```javascript
|
||||
emphasis: {
|
||||
focus: 'ancestor', // 'self', 'series', 'ancestor', 'descendant'
|
||||
label: {
|
||||
show: function(param) {
|
||||
// Show labels for specific depths on hover
|
||||
return param.depth === 3 || (param.depth === 2 && !param.data.children);
|
||||
},
|
||||
position: function(param) {
|
||||
// Position labels differently based on depth
|
||||
if (param.depth === 3 || (param.depth === 2 && !param.data.children)) {
|
||||
return 'outside';
|
||||
}
|
||||
return 'inside';
|
||||
},
|
||||
formatter: function(param) {
|
||||
// Format hover labels
|
||||
if (param.depth > 0) {
|
||||
if (param.name.length > 15) {
|
||||
return param.name.slice(0, 12) + '...';
|
||||
}
|
||||
return param.name;
|
||||
}
|
||||
return param.name;
|
||||
},
|
||||
fontSize: 11,
|
||||
fontWeight: 'bold',
|
||||
backgroundColor: 'rgba(255,255,255,0.85)', // Label background
|
||||
borderRadius: 4, // Rounded corners
|
||||
padding: [3, 5], // [vertical, horizontal] padding
|
||||
align: 'left',
|
||||
verticalAlign: 'middle',
|
||||
distance: 10, // Distance from segment (for 'outside')
|
||||
borderColor: '#fff',
|
||||
borderWidth: 1,
|
||||
shadowBlur: 3,
|
||||
shadowColor: 'rgba(0,0,0,0.2)'
|
||||
},
|
||||
itemStyle: {
|
||||
shadowBlur: 10, // Highlight shadow
|
||||
shadowOffsetX: 0,
|
||||
shadowColor: 'rgba(0, 0, 0, 0.5)'
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Focus Types
|
||||
|
||||
The `focus` property controls what gets highlighted:
|
||||
|
||||
- `'self'`: Only highlight the hovered segment
|
||||
- `'ancestor'`: Highlight the segment and its ancestors
|
||||
- `'descendant'`: Highlight the segment and its descendants
|
||||
- `'series'`: Highlight the entire series
|
||||
|
||||
### Hover Label Animation
|
||||
|
||||
To adjust how labels animate on hover:
|
||||
|
||||
- For smoother transitions, use CSS transitions on the label elements
|
||||
- Adjust `distance` to control how far labels move
|
||||
- Set `animation: true` and `animationDuration: 300` (milliseconds) for animated transitions
|
||||
|
||||
## Details Box
|
||||
|
||||
The details box is updated via event handlers in the `setupHoverEvents` function:
|
||||
|
||||
```javascript
|
||||
function setupHoverEvents() {
|
||||
const hoverNameElement = document.getElementById('hover-name');
|
||||
const hoverAmountElement = document.getElementById('hover-amount');
|
||||
const topItemsElement = document.getElementById('top-items');
|
||||
|
||||
myChart.on('mouseover', function(params) {
|
||||
if (params.data) {
|
||||
// Update details box content
|
||||
hoverNameElement.textContent = params.name;
|
||||
hoverAmountElement.textContent = params.value.toLocaleString() + ' RUB';
|
||||
|
||||
// Show top items/subcategories
|
||||
topItemsElement.innerHTML = '';
|
||||
if (params.data.children && params.data.children.length > 0) {
|
||||
// Sort and display children
|
||||
// ...
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
```
|
||||
|
||||
### Customizing the Details Box
|
||||
|
||||
#### HTML Structure (index.html)
|
||||
|
||||
```html
|
||||
<div id="details-box">
|
||||
<h3>Details</h3>
|
||||
<div id="hover-name">Hover over a segment to see details</div>
|
||||
<div id="hover-amount"></div>
|
||||
<h4>Top Items:</h4>
|
||||
<div id="top-items"></div>
|
||||
</div>
|
||||
```
|
||||
|
||||
#### CSS Styling (styles.css)
|
||||
|
||||
```css
|
||||
#details-box {
|
||||
position: absolute;
|
||||
top: 10px;
|
||||
right: 20px;
|
||||
width: 280px;
|
||||
background-color: white;
|
||||
border-radius: 8px;
|
||||
box-shadow: 0 2px 15px rgba(0, 0, 0, 0.15);
|
||||
padding: 15px;
|
||||
z-index: 10;
|
||||
min-height: 200px;
|
||||
max-height: 500px;
|
||||
overflow-y: auto;
|
||||
opacity: 0.95;
|
||||
border: 1px solid #eee;
|
||||
}
|
||||
|
||||
/* Additional styling for elements inside the box */
|
||||
```
|
||||
|
||||
#### Modifying Top Items Display
|
||||
|
||||
To change how the top items are displayed:
|
||||
|
||||
```javascript
|
||||
// Inside mouseover event handler
|
||||
if (params.data.children && params.data.children.length > 0) {
|
||||
// Sort children by value (or any other criteria)
|
||||
const sortedChildren = [...params.data.children].sort((a, b) => b.value - a.value);
|
||||
|
||||
// Limit to top N (e.g., top 10)
|
||||
const topChildren = sortedChildren.slice(0, 10);
|
||||
|
||||
// Create elements for each item
|
||||
topChildren.forEach(child => {
|
||||
const itemDiv = document.createElement('div');
|
||||
itemDiv.className = 'top-item';
|
||||
|
||||
// Customize what data is displayed
|
||||
const nameSpan = document.createElement('span');
|
||||
nameSpan.className = 'top-item-name';
|
||||
nameSpan.textContent = child.name;
|
||||
|
||||
const amountSpan = document.createElement('span');
|
||||
amountSpan.className = 'top-item-amount';
|
||||
|
||||
// Format values as needed
|
||||
const percentage = ((child.value / params.value) * 100).toFixed(1);
|
||||
amountSpan.textContent = `${child.value.toLocaleString()} ₽ (${percentage}%)`;
|
||||
|
||||
itemDiv.appendChild(nameSpan);
|
||||
itemDiv.appendChild(amountSpan);
|
||||
topItemsElement.appendChild(itemDiv);
|
||||
});
|
||||
}
|
||||
```
|
||||
|
||||
## Color Management
|
||||
|
||||
### Default Colors
|
||||
|
||||
The initial colors are defined in the `transformToSunburst` function:
|
||||
|
||||
```javascript
|
||||
const colors = [
|
||||
'#5470c6', '#91cc75', '#fac858', '#ee6666', '#73c0de',
|
||||
'#3ba272', '#fc8452', '#9a60b4', '#ea7ccc', '#4cae72',
|
||||
'#d56358', '#82b1ff', '#f19143', '#addf84', '#6f7787'
|
||||
];
|
||||
```
|
||||
|
||||
### Color Assignment on Click
|
||||
|
||||
When clicking on a segment, colors are reassigned to children:
|
||||
|
||||
```javascript
|
||||
myChart.on('click', function(params) {
|
||||
if (params.depth >= 0) {
|
||||
const colorPalette = [
|
||||
'#5470c6', '#91cc75', '#fac858', '#ee6666', '#73c0de',
|
||||
'#3ba272', '#fc8452', '#9a60b4', '#ea7ccc', '#4cae72'
|
||||
];
|
||||
|
||||
// ... find target data ...
|
||||
|
||||
// Recolor children
|
||||
targetData.children.forEach((child, i) => {
|
||||
const color = colorPalette[i % colorPalette.length];
|
||||
child.itemStyle = {
|
||||
color: color
|
||||
};
|
||||
|
||||
// Handle grandchildren with color gradients
|
||||
if (child.children && child.children.length > 0) {
|
||||
const microColors = generateColorGradient(color, child.children.length);
|
||||
child.children.forEach((micro, j) => {
|
||||
micro.itemStyle = {
|
||||
color: microColors[j]
|
||||
};
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
// Update data
|
||||
// ...
|
||||
}
|
||||
});
|
||||
```
|
||||
|
||||
### Color Gradient Generation
|
||||
|
||||
The `generateColorGradient` function creates variations of a base color:
|
||||
|
||||
```javascript
|
||||
function generateColorGradient(baseColor, steps) {
|
||||
const result = [];
|
||||
const base = tinycolor(baseColor);
|
||||
|
||||
for (let i = 0; i < steps; i++) {
|
||||
let color;
|
||||
if (i % 3 === 0) {
|
||||
color = base.clone().lighten(15); // Lighter version
|
||||
} else if (i % 3 === 1) {
|
||||
color = base.clone().darken(10); // Darker version
|
||||
} else {
|
||||
color = base.clone().saturate(20); // More saturated
|
||||
}
|
||||
result.push(color.toString());
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
```
|
||||
|
||||
### Custom Color Schemes
|
||||
|
||||
To use a different color scheme:
|
||||
|
||||
1. Replace the color arrays with your preferred colors
|
||||
2. For thematic colors, consider using ColorBrewer schemes or other predefined palettes
|
||||
3. Use TinyColor functions to generate related colors:
|
||||
- `lighten()` / `darken()`
|
||||
- `saturate()` / `desaturate()`
|
||||
- `spin()` (shift hue)
|
||||
- `complement()` (get complementary color)
|
||||
|
||||
## Drilling Down & Interactivity
|
||||
|
||||
### Click Behavior
|
||||
|
||||
The click behavior is controlled by the `nodeClick` option and event handlers:
|
||||
|
||||
```javascript
|
||||
// In the chart options
|
||||
nodeClick: 'rootToNode', // 'rootToNode', 'link', or false
|
||||
|
||||
// Event handler
|
||||
myChart.on('click', function(params) {
|
||||
// Handle the click event
|
||||
});
|
||||
```
|
||||
|
||||
Options for `nodeClick`:
|
||||
- `'rootToNode'`: Drill down to show the clicked node as root
|
||||
- `'link'`: Use the link option of nodes (if defined)
|
||||
- `false`: Disable click interaction
|
||||
|
||||
### Custom Drill Down
|
||||
|
||||
For full control over drill down behavior, set `nodeClick: false` and handle clicks manually:
|
||||
|
||||
```javascript
|
||||
myChart.on('click', function(params) {
|
||||
// Update the chart based on what was clicked
|
||||
// You can use a data structure to track the current view state
|
||||
// And update the displayed data accordingly
|
||||
});
|
||||
```
|
||||
|
||||
### Adding Click-to-Reset
|
||||
|
||||
To add a "click center to reset" feature:
|
||||
|
||||
```javascript
|
||||
// Add a click event listener to the center area
|
||||
myChart.getZr().on('click', function(event) {
|
||||
// Get clicked position
|
||||
const x = event.offsetX;
|
||||
const y = event.offsetY;
|
||||
|
||||
// Check if click is in the center area
|
||||
const centerX = myChart.getWidth() * 0.4; // Match your 'center' setting
|
||||
const centerY = myChart.getHeight() * 0.5;
|
||||
const innerRadius = myChart.getWidth() * 0.15; // Match your inner radius
|
||||
|
||||
const distance = Math.sqrt(
|
||||
Math.pow(x - centerX, 2) + Math.pow(y - centerY, 2)
|
||||
);
|
||||
|
||||
if (distance < innerRadius) {
|
||||
// Reset the chart to its initial state
|
||||
resetChart();
|
||||
}
|
||||
});
|
||||
|
||||
function resetChart() {
|
||||
// Reset the chart data to initial state
|
||||
option.series.data = JSON.parse(JSON.stringify(originalData));
|
||||
myChart.setOption(option, { replaceMerge: ['series'] });
|
||||
}
|
||||
```
|
||||
|
||||
## Data Structure
|
||||
|
||||
### CSV Data Format
|
||||
|
||||
The app reads data from CSV files with the following structure:
|
||||
|
||||
```
|
||||
transaction_date,processing_date,transaction_description,comment,mcc,card_info,account,merchant_name,location,info_source,amount_original,currency_original,amount_rub,category,subcategory,microcategory,simple_name
|
||||
```
|
||||
|
||||
Key fields used in the visualization:
|
||||
- `category`: First level of the hierarchy
|
||||
- `subcategory`: Second level of the hierarchy
|
||||
- `microcategory`: Third level of the hierarchy
|
||||
- `amount_rub`: The amount spent in Russian rubles
|
||||
|
||||
### Transformed Data Structure
|
||||
|
||||
The data is transformed into a hierarchical structure by `transformToSunburst`:
|
||||
|
||||
```javascript
|
||||
// Sample output
|
||||
{
|
||||
total: 426571.09, // Total spending
|
||||
data: [
|
||||
{
|
||||
name: "Food",
|
||||
value: 120000,
|
||||
children: [
|
||||
{
|
||||
name: "Groceries",
|
||||
value: 80000,
|
||||
children: [
|
||||
{ name: "Fruits", value: 20000 },
|
||||
{ name: "Vegetables", value: 15000 },
|
||||
// ...
|
||||
]
|
||||
},
|
||||
// More subcategories...
|
||||
]
|
||||
},
|
||||
// More categories...
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
### Adding Custom Data
|
||||
|
||||
To add metadata or custom properties:
|
||||
|
||||
```javascript
|
||||
// In the transformation function
|
||||
const categoryNode = {
|
||||
name: categoryObj.name,
|
||||
value: categoryObj.value,
|
||||
children: [],
|
||||
// Custom properties
|
||||
metadata: {
|
||||
avgTransaction: categoryObj.value / transactionCount,
|
||||
lastTransaction: lastTransactionDate,
|
||||
// ...any other custom data
|
||||
}
|
||||
};
|
||||
```
|
||||
|
||||
## Layout & Positioning
|
||||
|
||||
### Chart Size and Position
|
||||
|
||||
```javascript
|
||||
series: {
|
||||
type: 'sunburst',
|
||||
radius: [0, '95%'], // [innerRadius, outerRadius]
|
||||
center: ['40%', '50%'], // [x, y] as percentages
|
||||
}
|
||||
```
|
||||
|
||||
### Ring Size Adjustment
|
||||
|
||||
The rings are sized using the `levels` configuration:
|
||||
|
||||
```javascript
|
||||
levels: [
|
||||
{}, // Level 0 (uses defaults)
|
||||
{
|
||||
r0: '15%', // Inner radius of this level
|
||||
r: '35%', // Outer radius of this level
|
||||
// ...
|
||||
},
|
||||
{
|
||||
r0: '35%', // Should match the outer radius of previous level
|
||||
r: '65%',
|
||||
// ...
|
||||
},
|
||||
{
|
||||
r0: '65%',
|
||||
r: '72%', // Just 7% width for the outermost ring
|
||||
// ...
|
||||
}
|
||||
]
|
||||
```
|
||||
|
||||
### Central Text Positioning
|
||||
|
||||
The text in the center is positioned using graphic elements:
|
||||
|
||||
```javascript
|
||||
graphic: [
|
||||
{
|
||||
type: 'text',
|
||||
left: '40%', // Should match center[0]
|
||||
top: '50%', // Vertical position
|
||||
style: {
|
||||
text: totalAmount.toLocaleString(),
|
||||
// ... styling
|
||||
},
|
||||
z: 100 // Higher values appear on top
|
||||
},
|
||||
{
|
||||
type: 'text',
|
||||
left: '40%',
|
||||
top: '58%',
|
||||
style: {
|
||||
text: 'RUB',
|
||||
// ... styling
|
||||
},
|
||||
z: 100
|
||||
}
|
||||
]
|
||||
```
|
||||
|
||||
## Advanced Configuration
|
||||
|
||||
### Custom Tooltips
|
||||
|
||||
```javascript
|
||||
tooltip: {
|
||||
trigger: 'item', // 'item' or 'axis'
|
||||
formatter: function(info) {
|
||||
// Customize tooltip content
|
||||
const value = info.value.toLocaleString();
|
||||
const name = info.name;
|
||||
const percentage = ((info.value / totalValue) * 100).toFixed(1);
|
||||
|
||||
// Can return string or HTML
|
||||
return `
|
||||
<div style="font-weight:bold">${name}</div>
|
||||
<div>Amount: ${value} RUB</div>
|
||||
<div>Percentage: ${percentage}%</div>
|
||||
`;
|
||||
},
|
||||
backgroundColor: 'rgba(255, 255, 255, 0.9)',
|
||||
borderColor: '#ccc',
|
||||
borderWidth: 1,
|
||||
padding: 10,
|
||||
textStyle: {
|
||||
color: '#333'
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Animation Settings
|
||||
|
||||
```javascript
|
||||
animation: true,
|
||||
animationThreshold: 1000, // Don't animate if too many data points
|
||||
animationDuration: 1000,
|
||||
animationEasing: 'cubicOut', // 'linear', 'quadraticIn/Out', 'cubicIn/Out', etc.
|
||||
animationDelay: 0,
|
||||
```
|
||||
|
||||
### Custom Sorting
|
||||
|
||||
```javascript
|
||||
// Sort segments by value (descending)
|
||||
sort: function(a, b) {
|
||||
return b.value - a.value;
|
||||
}
|
||||
|
||||
// Sort alphabetically
|
||||
sort: function(a, b) {
|
||||
return a.name.localeCompare(b.name);
|
||||
}
|
||||
|
||||
// Or use predefined options:
|
||||
sort: 'desc' // 'desc', 'asc', or null (for data order)
|
||||
```
|
||||
|
||||
### Adding Event Listeners
|
||||
|
||||
```javascript
|
||||
// After setting up the chart
|
||||
myChart.on('mouseover', function(params) { /* ... */ });
|
||||
myChart.on('mouseout', function(params) { /* ... */ });
|
||||
myChart.on('click', function(params) { /* ... */ });
|
||||
|
||||
// For lower-level events
|
||||
const zr = myChart.getZr();
|
||||
zr.on('click', function(event) { /* ... */ });
|
||||
zr.on('mousemove', function(event) { /* ... */ });
|
||||
```
|
||||
|
||||
### Responsiveness
|
||||
|
||||
```javascript
|
||||
// Handle window resize
|
||||
window.addEventListener('resize', function() {
|
||||
myChart.resize();
|
||||
});
|
||||
|
||||
// For more complex responsive behavior
|
||||
window.addEventListener('resize', function() {
|
||||
const width = window.innerWidth;
|
||||
|
||||
if (width < 768) {
|
||||
// Mobile view
|
||||
option.series.center = ['50%', '50%'];
|
||||
option.series.radius = [0, '90%'];
|
||||
// Update other settings for small screens
|
||||
} else {
|
||||
// Desktop view
|
||||
option.series.center = ['40%', '50%'];
|
||||
option.series.radius = [0, '95%'];
|
||||
}
|
||||
|
||||
myChart.setOption(option);
|
||||
myChart.resize();
|
||||
});
|
||||
```
|
||||
|
||||
### Adding Custom Legend
|
||||
|
||||
```javascript
|
||||
// In chart options
|
||||
legend: {
|
||||
type: 'scroll',
|
||||
orient: 'vertical',
|
||||
right: 10,
|
||||
top: 20,
|
||||
bottom: 20,
|
||||
data: categoryNames // Array of category names
|
||||
}
|
||||
|
||||
// Or create a custom legend outside the chart
|
||||
function createCustomLegend() {
|
||||
const legendContainer = document.createElement('div');
|
||||
legendContainer.className = 'custom-legend';
|
||||
|
||||
// Add legend items
|
||||
sunburstData.data.forEach((category, index) => {
|
||||
const item = document.createElement('div');
|
||||
item.className = 'legend-item';
|
||||
|
||||
const colorBox = document.createElement('span');
|
||||
colorBox.className = 'color-box';
|
||||
colorBox.style.backgroundColor = colors[index % colors.length];
|
||||
|
||||
const label = document.createElement('span');
|
||||
label.textContent = `${category.name} (${category.value.toLocaleString()} RUB)`;
|
||||
|
||||
item.appendChild(colorBox);
|
||||
item.appendChild(label);
|
||||
legendContainer.appendChild(item);
|
||||
|
||||
// Add click handler to highlight corresponding segment
|
||||
item.addEventListener('click', function() {
|
||||
// Find and highlight the corresponding segment
|
||||
});
|
||||
});
|
||||
|
||||
document.querySelector('.content-wrapper').appendChild(legendContainer);
|
||||
}
|
||||
```
|
||||
|
||||
### Performance Optimization
|
||||
|
||||
For large datasets:
|
||||
|
||||
```javascript
|
||||
// Limit data size
|
||||
function simplifyData(data, threshold) {
|
||||
// If there are too many small items, group them as "Other"
|
||||
const result = [];
|
||||
const other = { name: 'Other', value: 0, children: [] };
|
||||
|
||||
data.forEach(item => {
|
||||
if (item.value / totalValue > threshold) {
|
||||
result.push(item);
|
||||
} else {
|
||||
other.value += item.value;
|
||||
other.children.push(item);
|
||||
}
|
||||
});
|
||||
|
||||
if (other.value > 0) {
|
||||
result.push(other);
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
// Usage
|
||||
const simplifiedData = simplifyData(originalData, 0.01); // Group items < 1%
|
||||
```
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Common Issues
|
||||
|
||||
1. **Labels not appearing**: Check `minAngle` setting - labels only show on segments larger than the minimum angle
|
||||
2. **Click not working**: Ensure `nodeClick` is set correctly and event handlers are properly configured
|
||||
3. **Incorrect colors**: Check that color assignments in the transformation and click handlers are working
|
||||
4. **Chart not updating**: Make sure to use `replaceMerge` option when updating data: `myChart.setOption(option, { replaceMerge: ['series'] })`
|
||||
|
||||
### Debugging
|
||||
|
||||
For debugging, you can add console logging in key functions:
|
||||
|
||||
```javascript
|
||||
myChart.on('click', function(params) {
|
||||
console.log('Click params:', params);
|
||||
// Continue with normal handling
|
||||
});
|
||||
|
||||
// Or inspect the current options
|
||||
console.log('Current options:', myChart.getOption());
|
||||
```
|
||||
35
README.md
Normal file
35
README.md
Normal file
@ -0,0 +1,35 @@
|
||||
# Visual Spending
|
||||
|
||||
A visualization tool for family spending data using Apache ECharts.
|
||||
|
||||
## Features
|
||||
|
||||
- Visualize spending per categories, subcategories, and microcategories as a sunburst graph
|
||||
- Display spending data for different months
|
||||
- Interactive visualization with hover details and click navigation
|
||||
|
||||
## Usage
|
||||
|
||||
1. Ensure you have Node.js installed on your system
|
||||
2. Place your spending data CSV files in the root directory with the naming convention `altcats-YYYY-MM.csv`
|
||||
3. Run the server:
|
||||
|
||||
```bash
|
||||
npm start
|
||||
```
|
||||
|
||||
4. Open your browser and navigate to `http://localhost:3000`
|
||||
|
||||
## Data Format
|
||||
|
||||
The CSV file should have the following columns:
|
||||
- transaction_date
|
||||
- category
|
||||
- subcategory
|
||||
- microcategory
|
||||
- amount_rub
|
||||
|
||||
## Technologies Used
|
||||
|
||||
- Apache ECharts
|
||||
- Node.js
|
||||
477
altcats-2025-01.csv
Normal file
477
altcats-2025-01.csv
Normal file
@ -0,0 +1,477 @@
|
||||
"transaction_date","processing_date","transaction_description","comment","mcc","card_info","account","merchant_name","location","info_source","amount_original","currency_original","amount_rub","category","subcategory","microcategory","simple_name"
|
||||
"2025-01-30","","Го!поедим","Категория: Фастфуд","5814","","Black Premium от Залина Б.","","","tbank","-154.0","RUB","-154.0","Еда","Готовая","На работе","Еда из вендомата Го!поедим"
|
||||
"2025-01-09","","Пятёрочка","Категория: Супермаркеты","5411","*0638","Залина Б.","","","tbank","-2232.87","RUB","-2232.87","Еда","Продукты","","Покупка в Пятёрочке"
|
||||
"2025-01-30","","Го!поедим","Категория: Фастфуд","5814","","Black Premium от Залина Б.","","","tbank","-534.0","RUB","-534.0","Еда","Готовая","На работе","Еда из вендомата Го!поедим"
|
||||
"2025-01-30","","МегаФон","Категория: Связь","4814","*4273","Дебетовая карта","","","tbank","-1000.0","RUB","-1000.0","Технологии","Мобильная связь","Мегафон","Оплата мобильной связи МегаФон"
|
||||
"2025-01-08","","МГТС +7 499 245-25-37","Категория: Интернет","","","Black Premium","","","tbank","-1198.0","RUB","-1198.0","Технологии","Инфраструктура домашнего интернета","Интернет","Оплата домашнего интернета МГТС"
|
||||
"2025-01-11","","Аптека 36,6","Категория: Аптеки","5912","*0638","Залина Б.","","","tbank","-2462.0","RUB","-2462.0","Здоровье","Лекарства","","Покупка в аптеке 36,6"
|
||||
"2025-01-13","","Азбука Вкуса","Категория: Супермаркеты","5411","*0638","","","","tbank","-1871.0","RUB","-1871.0","Еда","Продукты","Фрукты","Покупка в Азбуке Вкуса"
|
||||
"2025-01-07","","Александр А. | Банк получателя: Тинькофф","Категория: Переводы","","","Black Premium","","","tbank","-2100.0","RUB","-2100.0","Еда","Готовая","Рестораны","Перевод Alexander A. за еду"
|
||||
"2025-01-31","","Оплата услуг, пакетов, расширений связи","Категория: Мобильная связь","","","Т-Мобайл","","","tbank","-268.0","RUB","-268.0","Технологии","Мобильная связь","Т-Мобайл","Оплата услуг мобильной связи Т-Мобайл"
|
||||
"2025-01-21","","Аврора РусКо_P_QR","Категория: Фастфуд","5814","*0638","","","","tbank","-555.75","RUB","-555.75","Еда","Готовая","На работе","Еда в Аврора Руско"
|
||||
"2025-01-07","","нетмонет","Категория: Финансы","7299","*4770","ALL Airlines","","","tbank","-977.0","RUB","-977.0","Логистика","чаевые","","Чаевые через нетмонет"
|
||||
"2025-01-07","","Борис Б. | Банк получателя: Сбербанк","Категория: Переводы","","","Black Premium от Залина Б.","","","tbank","-8000.0","RUB","-8000.0","Семьи","Залина","","Перевод Борису Б. (отцу Залины)"
|
||||
"2025-01-14","","Аврора РусКо_P_QR","Категория: Фастфуд","5814","*0638","","","","tbank","-1116.25","RUB","-1116.25","Еда","Готовая","На работе","Еда в Аврора Руско"
|
||||
"2025-01-20","","Проценты по кредиту","Категория: Услуги банка","","","ALL Airlines Premium Кредитный","","","tbank","-110.76","RUB","-110.76","Расходники","Проценты по кредиту","","Проценты по кредиту"
|
||||
"2025-01-04","","ИП Перегудов_E_QR","Категория: Красота","7230","*0638","Залина Б.","","","tbank","-3000.0","RUB","-3000.0","Красота","Салоны красоты","","Лазерная эпиляция в ИП Перегудов"
|
||||
"2025-01-17","","Достависта","Категория: Сервис","4215","*4770","","","","tbank","-484.0","RUB","-484.0","Логистика","Доставка","Услуга доставки","Оплата услуг доставки Достависта"
|
||||
"2025-01-28","","АВРОРА РУСКО_P_QR","Категория: Фастфуд","5814","*0638","","","","tbank","-320.0","RUB","-320.0","Еда","Готовая","На работе","Еда в Аврора Руско"
|
||||
"2025-01-08","","МГТС +7 495 709-16-45","Категория: Интернет","","","Black Premium","","","tbank","-1813.0","RUB","-1813.0","Технологии","Инфраструктура домашнего интернета","Интернет","Оплата домашнего интернета МГТС"
|
||||
"2025-01-25","","Вероника З.","Black Market; Категория: Переводы","","*0638","Залина Б.","","","tbank","-2500.0","RUB","-2500.0","Еда","Готовая","Рестораны","Ужин в ресторане Black Market"
|
||||
"2025-01-30","","Маргарита Х. | Банк получателя: Райффайзен","На свадьбу ДГ и КИ; Категория: Переводы","","","Black Premium от Залина Б.","","","tbank","-1000.0","RUB","-1000.0","Развлечения","Хобби Залины","","Подарок на свадьбу от Залины"
|
||||
"2025-01-26","","Пятёрочка","Категория: Супермаркеты","5411","*0638","Залина Б.","","","tbank","-349.98","RUB","-349.98","Еда","Продукты","Мясо","Покупка продуктов в Пятёрочке"
|
||||
"2025-01-02","2025-01-04","Transaction_Code: 230202001163332","","","*6076","","STEAMGAMES.COM 425952","USA, BELLEVUE","freedom","-5440.0","KZT","-1098.2","Развлечения","Хобби Антона","","Покупка игры в Steam"
|
||||
"2025-01-31","2025-01-31","Перевозка пассажиров и багажа","","","","by Anton","YANDEX.TAXI","","yandex+receipts","-654.0","RUB","-654.0","Логистика","Такси","","Поездка на Яндекс.Такси"
|
||||
"2025-01-15","","Андрей Б. | Банк получателя: Тинькофф","Категория: Переводы","","","Black Premium","","","tbank","-11990.0","RUB","-11990.0","Развлечения","Хобби Антона","","Перевод Андрею Б. за хобби"
|
||||
"2025-01-28","","Аврора РусКо_P_QR","Категория: Фастфуд","5814","*0638","","","","tbank","-622.25","RUB","-622.25","Еда","Готовая","На работе","Еда в Аврора Руско"
|
||||
"2025-01-04","2025-01-07","Transaction_Code: A3T6HBULD3K5E","","","*6076","","PP*P32F50CB1C","USA, 4029357733","freedom","-9309.09","KZT","-1879.27","Технологии","Инфраструктура домашнего интернета","Сервисы","Оплата сервиса Termius"
|
||||
"2025-01-10","","Оплата услуг, пакетов, расширений связи","Категория: Мобильная связь","","","Т-Мобайл","","","tbank","-388.0","RUB","-388.0","Технологии","Мобильная связь","Т-Мобайл","Оплата услуг мобильной связи T-Мобайл"
|
||||
"2025-01-31","2025-02-02","Оплата товаров и услуг YANDEX*5812*ULTIMA EDA","","","*5728","","","","yandex","-50.0","RUB","-50.0","Еда","Готовая","Супы","Домашняя лапша из Яндекс.Еды"
|
||||
"2025-01-23","2025-01-25","YM *go MOSKVA RU","","","","","YM *GO","MOSKVA , RU ","raiffeisen","-1007.0","RUB","-1007.0","Логистика","Такси","","Поездка на Яндекс.Такси"
|
||||
"2025-01-13","2025-01-14","Transaction_Code: 230202001163332","","","*6076","","STEAMGAMES.COM 425952","USA, BELLEVUE","freedom","-11120.0","KZT","-2237.43","Развлечения","Хобби Антона","","Покупка игры в Steam"
|
||||
"2025-01-21","","Осетинский интернет","Категория: ЖКХ","","","","","","tbank","-1500.0","RUB","-1500.0","Квартира","Плата за электричество / воду","","Оплата ЖКХ через интернет"
|
||||
"2025-01-26","2025-01-28","Yandex.Lavka Moskva RU","","","","","YANDEX.LAVKA","Moskva , RU ","raiffeisen","-74.0","RUB","-74.0","Еда","Продукты","Упаковка","Упаковка в Яндекс.Лавке"
|
||||
"2025-01-29","2025-01-31","Оплата товаров и услуг YANDEX*5812*ULTIMA EDA","","","*5728","","","","yandex","-50.0","RUB","-50.0","Еда","Готовая","","Оплата заказа в Yandex.Eda"
|
||||
"2025-01-04","2025-01-07","Transaction_Code: D5QZUCZ9JN6VN","","","*6076","","PAYPAL *HULU","USA, 4029357733","freedom","-16431.99","KZT","-3317.21","Развлечения","Подписки","Видео-стриминги","Hulu subscription payment"
|
||||
"2025-01-16","","Ростелеком","Категория: Связь","4816","","Black Premium от Залина Б.","","","tbank","-2934.1","RUB","-2934.1","Технологии","Инфраструктура домашнего интернета","Интернет","Оплата Ростелеком за интернет"
|
||||
"2025-01-13","","Аптека Ваша 1_P_QR","Категория: Аптеки","5912","*0638","","","","tbank","-1294.0","RUB","-1294.0","Здоровье","Лекарства","","Покупка в аптеке"
|
||||
"2025-01-26","","Снятие в банкомате Т-Банк","Категория: Наличные","6011","","Black Premium от Залина Б.","","","tbank","-68000.0","RUB","-68000.0","Квартира","Аренда квартиры","","Снятие наличных для оплаты аренды"
|
||||
"2025-01-14","","Почта России","Категория: Госуслуги","9402","","Black Premium от Залина Б.","","","tbank","-145.0","RUB","-145.0","Логистика","Почта","","Оплата услуг Почты России"
|
||||
"2025-01-20","","Роснефть","Категория: Топливо","5541","*3318","","","","tbank","-1717.47","RUB","-1717.47","Логистика","Топливо","","Покупка топлива на Роснефти"
|
||||
"2025-01-20","2025-01-22","urent G. MOSKVA RU","","","","","URENT","G. MOSKVA , RU ","raiffeisen","-899.0","RUB","-899.0","Логистика","Прочее","","Urent car sharing service"
|
||||
"2025-01-17","2025-01-19","Transaction_Code: CY9HXX4MKJH8E","","","*6076","","PAYPAL *NEXTDNS","USA, 4029357733","freedom","-1100.28","KZT","-220.31","Технологии","Инфраструктура домашнего интернета","Сервисы","Оплата сервиса NextDNS"
|
||||
"2025-01-26","2025-01-28","Yandex.Lavka Moskva RU","","","","","YANDEX.LAVKA","Moskva , RU ","raiffeisen","-49.0","RUB","-49.0","Еда","Продукты","Упаковка","Покупка пакета в Яндекс.Лавке"
|
||||
"2025-01-06","2025-01-06","Оплата товаров и услуг YANDEX PLUS","","","","","","","yandex","-100.0","RUB","-100.0","Развлечения","Подписки","Яндекс.Плюс","Оплата подписки YANDEX PLUS"
|
||||
"2025-01-24","2025-01-27","Yandex.Lavka Moskva RU","","","","","YANDEX.LAVKA","Moskva , RU ","raiffeisen","-50.0","RUB","-50.0","Еда","Продукты","","Покупка в Яндекс.Лавке"
|
||||
"2025-01-30","2025-02-01","YM *go MOSKVA RU","","","","","YM *GO","MOSKVA , RU ","raiffeisen","-919.0","RUB","-919.0","Логистика","Такси","","Поездка на Яндекс.Такси"
|
||||
"2025-01-15","2025-01-17","TBank-Avito Dostavka Moskva RU","","","","","TBANK-AVITO DOSTAVKA","Moskva , RU ","raiffeisen","-6569.0","RUB","-6569.0","Развлечения","Хобби Антона","","Покупка на Avito для хобби Антона"
|
||||
"2025-01-28","2025-01-30","YM *go MOSKVA RU","","","","","YM *GO","MOSKVA , RU ","raiffeisen","-1135.0","RUB","-1135.0","Логистика","Такси","","Поездка на Яндекс.Такси"
|
||||
"2025-01-16","2025-01-18","YM *go MOSKVA RU","","","","","YM *GO","MOSKVA , RU ","raiffeisen","-1526.0","RUB","-1526.0","Логистика","Такси","","Поездка на Яндекс.Такси"
|
||||
"2025-01-19","2025-01-21","Yandex.Lavka Moskva RU","","","","","YANDEX.LAVKA","Moskva , RU ","raiffeisen","-50.0","RUB","-50.0","Логистика","чаевые","","Чаевые в Яндекс.Лавке"
|
||||
"2025-01-11","2025-01-14","Transaction_Code: RFZ7BJGC6EY9E","","","*6076","","PAYPAL *WSJ","USA, 4029357733","freedom","-2201.04","KZT","-442.87","Развлечения","Подписки","Новости и тексты","Подписка на Wall Street Journal"
|
||||
"2025-01-31","2025-02-03","Yandex.Lavka Moskva RU","","","","","YANDEX.LAVKA","Moskva , RU ","raiffeisen","-45.0","RUB","-45.0","Еда","Продукты","Упаковка","Покупка пакета в Яндекс.Лавке"
|
||||
"2025-01-21","2025-01-24","YANDEX.TAXI MOSCOW RU","","","","","ЯНДЕКС ТАКСИ","MOSCOW , RU ","raiffeisen","-50.0","RUB","-50.0","Логистика","Такси","","Поездка на Яндекс.Такси"
|
||||
"2025-01-21","2025-01-23","YM *go MOSKVA RU","","","","","YM *GO","MOSKVA , RU ","raiffeisen","-966.0","RUB","-966.0","Логистика","Такси","","Поездка на Яндекс.Такси"
|
||||
"2025-01-31","2025-02-03","YM *go MOSKVA RU","","","","","YM *GO","MOSKVA , RU ","raiffeisen","-1165.0","RUB","-1165.0","Логистика","Такси","","Поездка на Яндекс.Такси"
|
||||
"2025-01-28","2025-01-30","YM *go MOSKVA RU","","","","","YM *GO","MOSKVA , RU ","raiffeisen","-1127.0","RUB","-1127.0","Логистика","Такси","","Поездка на Яндекс.Такси"
|
||||
"2025-01-25","2025-01-27","YM *go MOSKVA RU","","","","","YM *GO","MOSKVA , RU ","raiffeisen","-302.0","RUB","-302.0","Логистика","Такси","","Поездка на Яндекс.Такси"
|
||||
"2025-01-21","2025-01-23","Y.M*BEGET SANKT-PETERBU RU","","","","","BEGET","SANKT-PETERBU, RU ","raiffeisen","-1860.0","RUB","-1860.0","Технологии","Инфраструктура домашнего интернета","Домены","Оплата домена Beget"
|
||||
"2025-01-30","2025-02-01","YM *go MOSKVA RU","","","","","YM *GO","MOSKVA , RU ","raiffeisen","-1071.0","RUB","-1071.0","Логистика","Такси","","Поездка на Яндекс.Такси"
|
||||
"2025-01-23","2025-01-25","YM *go MOSKVA RU","","","","","YM *GO","MOSKVA , RU ","raiffeisen","-956.0","RUB","-956.0","Логистика","Такси","","Поездка на Яндекс.Такси"
|
||||
"2025-01-12","2025-01-14","NETBYNET Moscow RU","","","","","NETBYNET","Moscow , RU ","raiffeisen","-680.0","RUB","-680.0","Технологии","Инфраструктура домашнего интернета","Интернет","Оплата домашнего интернета NetByNet"
|
||||
"2025-01-24","2025-01-27","Yandex Eda Moskva RU","","","","","YANDEX EDA","Moskva , RU ","raiffeisen","-25.0","RUB","-25.0","Еда","Готовая","Супы","Домашняя лапша из Яндекс.Еды"
|
||||
"2025-01-19","2025-01-21","Y.M*BEGET SANKT-PETERBU RU","","","","","BEGET","SANKT-PETERBU, RU ","raiffeisen","-1650.0","RUB","-1650.0","Технологии","Инфраструктура домашнего интернета","Домены","Оплата домена Beget"
|
||||
"2025-01-16","2025-01-18","YM *go MOSKVA RU","","","","","YM *GO","MOSKVA , RU ","raiffeisen","-1043.0","RUB","-1043.0","Логистика","Такси","","Поездка на Яндекс.Такси"
|
||||
"2025-01-08","2025-01-10","YM *go MOSKVA RU","","","","","YM *GO","MOSKVA , RU ","raiffeisen","-550.0","RUB","-550.0","Логистика","Такси","","Поездка на Яндекс.Такси"
|
||||
"2025-01-15","2025-01-17","Yandex.Lavka Moskva RU","","","","","YANDEX.LAVKA","Moskva , RU ","raiffeisen","-50.0","RUB","-50.0","Еда","Продукты","Овощи","Покупка овощей в Яндекс.Лавке"
|
||||
"2025-01-12","2025-01-14","YM *go MOSKVA RU","","","","","YM *GO","MOSKVA , RU ","raiffeisen","-623.0","RUB","-623.0","Логистика","Такси","","Поездка на Яндекс.Такси"
|
||||
"2025-01-10","2025-01-13","Yandex Eda Moskva RU","","","","","YANDEX EDA","Moskva , RU ","raiffeisen","-50.0","RUB","-50.0","Еда","чаевые","","Чаевые в сервисе Яндекса"
|
||||
"2025-01-05","2025-01-07","WWW.LITRES.RU MOSKVA RU","","","","","ЛИТРЕС","MOSKVA , RU ","raiffeisen","-831.2","RUB","-831.2","Развлечения","Чтение","Электронные книги","Покупка электронной книги в ЛитРес"
|
||||
"2025-01-17","2025-01-20","ROSTELECOM.RU MOSCOW RU","","","","","ROSTELECOM.RU","MOSCOW , RU ","raiffeisen","-2503.01","RUB","-2503.01","Технологии","Инфраструктура домашнего интернета","Интернет","Оплата домашнего интернета Ростелеком"
|
||||
"2025-01-04","2025-01-08","ULTIMA YANDEX EDA MOSCOW RU","","","","","ULTIMA YANDEX EDA","MOSCOW , RU ","raiffeisen","-50.0","RUB","-50.0","Еда","Чаевые","","Чаевые в Яндекс.Еда"
|
||||
"2025-01-04","2025-01-08","ULTIMA YANDEX EDA MOSCOW RU","","","","","ULTIMA YANDEX EDA","MOSCOW , RU ","raiffeisen","-50.0","RUB","-50.0","Еда","Чаевые","","Чаевые в Яндекс.Еда"
|
||||
"2025-01-05","2025-01-05","Оплата СБП QR (Сервисы Яндекса)","","","","","","","yandex","-103.0","RUB","-103.0","Еда","чаевые","","Чаевые через СБП Яндекс сервисов"
|
||||
"2025-01-03","2025-01-06","Y.M*SERVERS.RU MOSKVA RU","","","","","Y.M*SERVERS.RU","MOSKVA , RU ","raiffeisen","-758.96","RUB","-758.96","Технологии","Инфраструктура домашнего интернета","VPS","Оплата VPS Servers.ru"
|
||||
"2025-01-24","2025-01-24","Оплата товаров и услуг YANDEX PLUS","","","","","","","yandex","-399.0","RUB","-399.0","Развлечения","Подписки","Всё-в-одном","Оплата подписки Yandex Plus"
|
||||
"2025-01-17","2025-01-17","Оплата СБП QR (36Z3 TC Пятерочка)","","","","","","","yandex","-72.99","RUB","-72.99","Еда","Продукты","Продукты","Покупка в Пятерочке через СБП QR"
|
||||
"2025-01-02","2025-01-04","Y.M*OZON MOSKVA RU","","","","","Y.M*OZON","MOSKVA , RU ","raiffeisen","-49.0","RUB","-49.0","Логистика","чаевые","","Чаевые при доставке Озон"
|
||||
"2025-01-20","2025-01-20","Оплата СБП QR (Сервисы Яндекса)","","","","","","","yandex","-50.0","RUB","-50.0","Логистика","чаевые","","Чаевые через СБП Яндекс сервисов"
|
||||
"2025-01-21","2025-01-23","YM *go MOSKVA RU","","","","","YM *GO","MOSKVA , RU ","raiffeisen","-1049.0","RUB","-1049.0","Логистика","Такси","","Поездка на Яндекс.Такси"
|
||||
"2025-01-03","2025-01-06","YM *go MOSKVA RU","","","","","YM *GO","MOSKVA , RU ","raiffeisen","-659.0","RUB","-659.0","Логистика","Такси","","Поездка на Яндекс.Такси"
|
||||
"2025-01-15","2025-01-17","novofon G. MOSKVA RU","","","","","NOVOFON","G. MOSKVA , RU ","raiffeisen","-1000.0","RUB","-1000.0","Технологии","Инфраструктура домашнего интернета","Интернет","Оплата услуг Novofon"
|
||||
"2025-01-19","2025-01-21","Yandex.Lavka Moskva RU","","","","","YANDEX.LAVKA","Moskva , RU ","raiffeisen","-48.0","RUB","-48.0","Еда","Продукты","Упаковка","Покупка пакета в Яндекс.Лавке"
|
||||
"2025-01-09","2025-01-13","Y.M*OZON MOSKVA RU","","","","","Y.M*OZON","MOSKVA , RU ","raiffeisen","-49.0","RUB","-49.0","Логистика","чаевые","","Чаевые при доставке Озон"
|
||||
"2025-01-12","2025-01-14","YM *go MOSKVA RU","","","","","YM *GO","MOSKVA , RU ","raiffeisen","-679.0","RUB","-679.0","Логистика","Такси","","Поездка на Яндекс.Такси"
|
||||
"2025-01-14","2025-01-16","YM *go MOSKVA RU","","","","","YM *GO","MOSKVA , RU ","raiffeisen","-627.0","RUB","-627.0","Логистика","Такси","","Поездка на Яндекс.Такси"
|
||||
"2025-01-04","2025-01-06","Paramount+ Essential: Monthly (Monthly) (Subscription)","Apple US Store order","","*6076","Anton (anton@setia.io)","Paramount+","USA, 4029357733","freedom+receipts","-7.99","USD","-841.67","Развлечения","Подписки","Видео-стриминги","Paramount+ monthly subscription"
|
||||
"2025-01-07","2025-01-09","Imagined Communities: Reflections on the Origin and Spread of Nationalism by Benedict Anderson [Kindle Edition]","Amazon Digital Order #D01-5333298-0560213","","*6076","","Penguin Random House Publisher Services","USA, 888-802-3080","freedom","-7.99","USD","-841.67","Развлечения","Чтение","Электронные книги","Покупка электронной книги Imagined Communities"
|
||||
"2025-01-02","2025-01-04","Yandex.Lavka Moskva RU","","","","","YANDEX.LAVKA","Moskva , RU ","raiffeisen","-45.0","RUB","-45.0","Еда","Продукты","Упаковка","Покупка пакета в Яндекс.Лавке"
|
||||
"2025-01-14","2025-01-16","YM *go MOSKVA RU","","","","","YM *GO","MOSKVA , RU ","raiffeisen","-1099.0","RUB","-1099.0","Логистика","Такси","","Поездка на Яндекс.Такси"
|
||||
"2025-01-04","2025-01-06","YM *go MOSKVA RU","","","","","YM *GO","MOSKVA , RU ","raiffeisen","-635.0","RUB","-635.0","Логистика","Такси","","Поездка на Яндекс.Такси"
|
||||
"2025-01-14","2025-01-16","OPLATA USLUG MOS.RU MOSCOW RU","","","","","OPLATA USLUG MOS.RU","MOSCOW , RU ","raiffeisen","-7437.41","RUB","-7437.41","Семьи","Антон","","Оплата квартплаты за квартиру в Выхино"
|
||||
"2025-01-01","2025-01-03","Transaction_Code: 518898000202428","","","*6076","","Google CLOUD B2HzL2","IRL, Dublin","freedom","-8.93","USD","-940.69","Технологии","Инфраструктура домашнего интернета","VPS","Оплата Google Cloud VPS"
|
||||
"2025-01-03","2025-01-06","YANDEX.TAXI MOSCOW RU","","","","","ЯНДЕКС ТАКСИ","MOSCOW , RU ","raiffeisen","-40.0","RUB","-40.0","Логистика","Такси","","Поездка на Яндекс.Такси"
|
||||
"2025-01-12","2025-01-15","YANDEX.TAXI MOSCOW RU","","","","","ЯНДЕКС ТАКСИ","MOSCOW , RU ","raiffeisen","-40.0","RUB","-40.0","Логистика","Такси","","Поездка на Яндекс.Такси"
|
||||
"2025-01-04","2025-01-06","Transaction_Code: OON4NMAR2VFMSY5","","","*6076","","READWISE","USA, RALEIGH","freedom","-5.99","USD","-630.99","Развлечения","Хобби Антона","","Подписка Readwise"
|
||||
"2025-01-08","2025-01-10","YM *go MOSKVA RU","","","","","YM *GO","MOSKVA , RU ","raiffeisen","-598.0","RUB","-598.0","Логистика","Такси","","Поездка на Яндекс.Такси"
|
||||
"2025-01-03","2025-01-06","YM *go MOSKVA RU","","","","","YM *GO","MOSKVA , RU ","raiffeisen","-719.0","RUB","-719.0","Логистика","Такси","","Поездка на Яндекс.Такси"
|
||||
"2025-01-02","2025-01-03","Transaction_Code: 323670000156182","","","*6076","","AWS EMEA","LUX, aws.amazon.co","freedom","-8.89","USD","-936.47","Технологии","Инфраструктура домашнего интернета","VPS","Оплата AWS EMEA VPS"
|
||||
"2025-01-06","2025-01-08","Fooled by Randomness: The Hidden Role of Chance in Life and in the Markets (Incerto Book 1) by Nassim Nicholas Taleb [Kindle Edition]","Amazon Digital Order #D01-0985373-7065800","","*6076","","Random House LLC","USA, 888-802-3080","freedom","-15.99","USD","-1684.39","Развлечения","Чтение","Электронные книги","Покупка электронной книги на Amazon Kindle"
|
||||
"2025-01-12","2025-01-12","Оплата СБП QR (Сервисы Яндекса)","","","","","","","yandex","-60.0","RUB","-60.0","Еда","чаевые","","Чаевые через СБП Яндекс сервисов"
|
||||
"2025-01-04","2025-01-06","YM *go MOSKVA RU","","","","","YM *GO","MOSKVA , RU ","raiffeisen","-571.0","RUB","-571.0","Логистика","Такси","","Поездка на Яндекс.Такси"
|
||||
"2025-01-05","2025-01-07","WWW.LITRES.RU MOSKVA RU","","","","","ЛИТРЕС","MOSKVA , RU ","raiffeisen","-499.0","RUB","-499.0","Развлечения","Чтение","Электронные книги","Покупка электронной книги в ЛитРес"
|
||||
"2025-01-10","2025-01-12","Записки из подполья (Russian Edition) by Федор Достоевский [Kindle Edition]","Amazon Digital Order #D01-3583382-7193816","","*6076","","Amazon.com Services LLC","USA, 888-802-3080","freedom","-0.99","USD","-104.91","Развлечения","Чтение","Электронные книги","Покупка электронной книги Достоевского"
|
||||
"2025-01-07","2025-01-09","Transaction_Code: H6LVNPMMWPPT9VW","","","*6076","","CLOUDFLARE","USA, SAN FRANCISCO","freedom","-10.44","USD","-1099.75","Технологии","Инфраструктура домашнего интернета","Домены","Cloudflare domain registration"
|
||||
"2025-01-11","2025-01-13","Transaction_Code: SXONGQUGQWWJUTM","","","*6076","","OPENAI *CHATGPT","USA, SAN FRANCISCO","freedom","-60.0","USD","-6335.01","Технологии","AI","ChatGPT","Оплата подписки на OpenAI ChatGPT"
|
||||
"2025-01-06","2025-01-08","The Redemption of Time: A Three-Body Problem Novel (The Three-Body Problem Series Book 4) by Baoshu, Ken Liu [Kindle Edition]","Amazon Digital Order #D01-3108102-4992236","","*6076","","Macmillan","USA, 888-802-3080","freedom","-11.99","USD","-1263.03","Развлечения","Чтение","Электронные книги","Kindle book purchase: Redemption of Time"
|
||||
"2025-01-01","2025-01-03","Transaction_Code: 518898000202394","","","*6076","","Google GSUITE_setia.ru","IRL, Dublin","freedom","-12.0","USD","-1264.08","Технологии","Инфраструктура домашнего интернета","Бэкап","Оплата Google GSuite"
|
||||
"2025-01-07","2025-01-09","Necropolitics (Theory in Forms) by Achille Mbembe [Kindle Edition]","Amazon Digital Order #D01-3626622-8083410","","*6076","","Amazon.com Services LLC","USA, 888-802-3080","freedom","-11.55","USD","-1216.68","Развлечения","Чтение","Электронные книги","Покупка электронной книги Necropolitics"
|
||||
"2025-01-01","2025-01-03","Transaction_Code: 526375168881","","","*6076","","LINODE . AKAMAI","USA, 6093807100","freedom","-10.0","USD","-1053.4","Технологии","Инфраструктура домашнего интернета","VPS","Оплата VPS Linode"
|
||||
"2025-01-13","2025-01-14","Transaction_Code: ETVQAY0EN6ZQQO7","","","*6076","","KRISPCALL","AUS, MELBOURNE","freedom","-15.0","USD","-1583.75","Технологии","Инфраструктура домашнего интернета","Сервисы","Оплата услуг Krispcall"
|
||||
"2025-01-12","2025-01-14","Transaction_Code: MZJ96QO0A3SN4BD","","","*6076","","CURSOR, AI POWERED ID","USA, NEW YORK","freedom","-20.0","USD","-2111.67","Технологии","AI","Прочее","Подписка на Cursor AI"
|
||||
"2025-01-01","2025-01-03","Transaction_Code: 317577000299109","","","*6076","","VULTR BY CONSTANT","USA, VULTR.COM","freedom","-3.36","USD","-353.94","Технологии","Инфраструктура домашнего интернета","VPS","Оплата VPS Vultr"
|
||||
"2025-01-20","2025-01-22","Transaction_Code: H6LVNPMMWPPT9VW","","","*6076","","CLOUDFLARE","USA, SAN FRANCISCO","freedom","-11.84","USD","-1256.23","Технологии","Инфраструктура домашнего интернета","Домены","Cloudflare domain registration"
|
||||
"2025-01-20","2025-01-22","Transaction_Code: Q0RRUWQV26H30SO","","","*6076","","CLAUDE.AI SUBSCR","USA, SAN FRANCISCO","freedom","-20.0","USD","-2122.01","Технологии","AI","Claude","Claude.ai subscription"
|
||||
"2025-01-23","2025-01-24","Transaction_Code: GWLETHIMMO07FWD","","","*6076","","WWW.PERPLEXITY.A","USA, SAN FRANCISCO","freedom","-4.99","USD","-508.07","Технологии","AI","Perplexity","Perplexity AI subscription"
|
||||
"2025-01-03","2025-01-07","Transaction_Code: 011382032","","","*6076","","TIMES NEWSPAPERS LTD","GBR, LONDON E98 1X","freedom","-1.0","GBP","-132.09","Развлечения","Подписки","Тексты","Подписка на Times Newspapers Ltd."
|
||||
"2025-01-29","2025-01-31","Transaction_Code: KA3GP5EPWAQ7BLQ","","","*6076","","GITHUB, INC.","USA, SAN FRANCISCO","freedom","-10.0","USD","-1014.93","Технологии","AI","Прочее","Github subscription"
|
||||
"2025-01-09","2025-01-11","Не только кимчхи: История, культура и повседневная жизнь Кореи (Russian Edition) by Андрей Ланьков [Kindle Edition]","Amazon Digital Order #D01-8259633-0179468","","*6076","","Amazon.com Services LLC","USA, 888-802-3080","freedom","-4.97","USD","-523.54","Развлечения","Чтение","Электронные книги","Покупка электронной книги на Amazon"
|
||||
"2025-01-12","2025-01-16","Apollo AI: Private & Local AI","Apple US Store order","","*6076","Anton (anton@setia.io)","Aaron Ng","USA, 4029357733","freedom+receipts","-6.52","USD","-688.4","Технологии","AI","Прочее","Apollo AI subscription"
|
||||
"2025-01-30","2025-02-01","Transaction_Code: 767200080889","","","*6076","","ADOBE *CS ADDTL ST","USA, 4085366000","freedom","-9.99","USD","-1014.4","Развлечения","Хобби Антона","","Adobe subscription for Anton's hobby"
|
||||
"2025-01-07","2025-01-09","The Invention of the Jewish People by Shlomo Sand, Yael Lotan [Kindle Edition]","Amazon Digital Order #D01-8342455-0141060","","*6076","","Penguin Random House Publisher Services","USA, 888-802-3080","freedom","-7.99","USD","-841.67","Развлечения","Чтение","Электронные книги","Покупка электронной книги Shlomo Sand"
|
||||
"2025-01-27","2025-01-31","Apple News+ (Automatic Renewal) (Monthly) (Subscription)","Apple US Store order","","*0742","Anton (anton@setia.io)","Apple News+ (Automatic Renewal)","","bakai+receipts","-12.99","USD","-1322.4","Развлечения","Подписки","Новости и тексты","Apple News+ subscription"
|
||||
"2025-01-18","2025-01-20","Transaction_Code: YTYSPKT0NGKFR5R","","","*6076","","HOME ASSISTANT CLOU","USA, SACRAMENTO","freedom","-6.5","USD","-689.65","Технологии","Инфраструктура домашнего интернета","Сервисы","Оплата Home Assistant Cloud"
|
||||
"2025-01-13","2025-01-15","000000000205805 Financial Times","","","*0742","","","","bakai","-10.45","USD","-1103.35","Развлечения","Подписки","Новости и тексты","Подписка на Financial Times"
|
||||
"2025-01-16","2025-01-20","Private LLM - Local AI Chatbot","Apple US Store order","","*6076","Anton (anton@setia.io)","Numen Technologies Limited","USA, 4029357733","freedom+receipts","-10.88","USD","-1158.82","Технологии","AI","Прочее","Private LLM - Local AI Chatbot subscription"
|
||||
"2025-01-07","2025-01-09","Transaction_Code: 395708100629","","","*6076","","NETFLIX.COM","USA, LOS GATOS","freedom","-25.03","USD","-2636.66","Развлечения","Подписки","Видео-стриминги","Netflix subscription payment"
|
||||
"2025-01-12","2025-01-16","Transaction_Code: 2AUP9LKLFXCEU","","","*6076","","PAYPAL *NUYEK LLC","LUX, 4029357733","freedom","-5.0","USD","-527.92","Технологии","AI","Прочее","Оплата AI-сервиса через PayPal"
|
||||
"2025-01-07","2025-01-09","Paramount+ with SHOWTIME® (Monthly) (Subscription)","Apple US Store order","","*6076","Anton (anton@setia.io)","Paramount+","USA, 4029357733","freedom+receipts","-12.99","USD","-1368.37","Развлечения","Подписки","Видео-стриминги","Paramount+ with SHOWTIME subscription"
|
||||
"2025-01-12","2025-01-14","Paradise Lost by John Milton [Kindle Edition]","Amazon Digital Order #D01-6960212-7043405","","*6076","","De Marque","USA, 888-802-3080","freedom","-0.99","USD","-104.53","Развлечения","Чтение","Электронные книги","Покупка электронной книги Paradise Lost"
|
||||
"2025-01-31","2025-02-02","Transaction_Code: 767200080889","","","*6076","","ADOBE *ADOBE","USA, 4085366000","freedom","-15.99","USD","-1623.54","Развлечения","Хобби Антона","","Adobe subscription for Anton's hobby"
|
||||
"2025-01-28","2025-01-31","PRODAMUS Joshkar-Ola RU","","","","","PRODAMUS","Joshkar-Ola , RU ","raiffeisen","-750.0","RUB","-750.0","Семьи","Залина","Занятия","Уроки для Алисы через Prodamus"
|
||||
"2025-01-09","2025-01-11","Spies and Scholars: Chinese Secrets and Imperial Russia’s Quest for World Power by Gregory Afinogenov [Kindle Edition]","Amazon Digital Order #D01-8809696-7600207","","*6076","","Amazon.com Services LLC","USA, 888-802-3080","freedom","-33.25","USD","-3502.56","Развлечения","Чтение","Электронные книги","Покупка электронной книги в Kindle"
|
||||
"2025-01-16","2025-01-18","Transaction_Code: UTKZU3DZR5BG0BJ","","","*6076","","X CORP. PAID FEA","USA, SAN FRANCISCO","freedom","-8.0","USD","-852.07","Технологии","AI","Grok/X.corp","Оплата подписки X.corp (Grok AI)"
|
||||
"2025-01-25","2025-01-27","Y.M*OPENFACE MOSKVA RU","","","","","Y.M*OPENFACE","MOSKVA , RU ","raiffeisen","-1990.0","RUB","-1990.0","Семьи","Залина","Занятия","Подписка на OPENFACE для Алисы"
|
||||
"2025-01-16","2025-01-18","Transaction_Code: PLHUBMDHCAKQGK1","","","*6076","","IFTTT PRO+","USA, SAN FRANCISCO","freedom","-9.0","USD","-958.58","Технологии","Инфраструктура домашнего интернета","Сервисы","Оплата сервиса IFTTT"
|
||||
"2025-01-03","2025-01-06","YM *chaika.com MOSKVA RU","","","","","YM *CHAIKA.COM","MOSKVA , RU ","raiffeisen","-2863.0","RUB","-2863.0","Здоровье","Клиники","Клиника Чайка","Оплата услуг в клинике Чайка"
|
||||
"2025-01-15","2025-01-17","Transaction_Code: 330946000103177","","","*6076","","GOOGLE *YouTubePr","USA, 650-253-0000","freedom","-1149.0","RSD","-1077.26","Развлечения","Подписки","Видео-стриминги","YouTube Premium subscription"
|
||||
"2025-01-18","2025-01-21","Transaction_Code: JNWK9W4NQSUV6","","","*6076","","PAYPAL *MULLVAD","SWE, 35314369001","freedom","-10.0","EUR","-1086.36","Технологии","Инфраструктура домашнего интернета","VPN","Оплата Mullvad VPN"
|
||||
"2025-01-14","2025-01-15","Transaction_Code: 160146000762203","","","*6076","","Kindle Svcs*ZD8W4","USA, 888-802-3080","freedom","-0.29","USD","-30.86","Развлечения","Чтение","Электронные книги","Покупка электронной книги в Kindle"
|
||||
"2025-01-11","2025-01-14","PFWRPDQ33IWEFXE HEPTABASE","","","*0742","","","","bakai","-11.99","USD","-1265.95","Развлечения","Хобби Антона","Heptabase","Heptabase subscription for Anton's hobby"
|
||||
"2025-01-18","2025-01-20","Transaction_Code: UVOZ1RUQKW1MGKL","","","*6076","","MIDJOURNEY INC.","USA, SOUTH SAN FRA","freedom","-10.0","USD","-1061.01","Развлечения","Хобби Антона","","Midjourney subscription for Anton's hobby"
|
||||
"2025-01-21","2025-01-22","Transaction_Code: WZHPAVI1IOTBVBH","","","*6076","","BACKBLAZE INC","USA, SAN MATEO","freedom","-1.11","USD","-117.25","Технологии","Инфраструктура домашнего интернета","Бэкап","Оплата сервиса резервного копирования Backblaze"
|
||||
"2025-01-26","2025-01-29","EAYJLNFB9UDAW PAYPAL *NANO IT SIA","","","*0742","","","","bakai","-5.48","USD","-557.87","Технологии","Инфраструктура домашнего интернета","VPS","Оплата хостинга NANO IT SIA"
|
||||
"2025-01-08","2025-01-11","ROSTELECOM.RU MOSCOW RU","","","","","ROSTELECOM.RU","MOSCOW , RU ","raiffeisen","-396.82","RUB","-396.82","Технологии","Инфраструктура домашнего интернета","Интернет","Оплата домашнего интернета Ростелеком"
|
||||
"2025-01-01","2025-01-06","Батарейки литиевые дисковые таблетки GP Lithium CR2450, 3 V, набор 5 шт | Количество: 2","Заказ Ozon №00211598-1320","","","by Anton","""А Зет"", О00","MOSCOW , RU ","raiffeisen+receipts","-1866.0","RUB","-1866.0","Расходники","Батарейки","","Покупка литиевых батареек на Ozon"
|
||||
"2025-01-28","2025-01-31","PRODAMUS Joshkar-Ola RU","","","","","PRODAMUS","Joshkar-Ola , RU ","raiffeisen","-7900.0","RUB","-7900.0","Семьи","Залина","Занятия","Уроки для Алисы через Prodamus"
|
||||
"2025-01-29","2025-01-30","Transaction_Code: 248750000103177","","","*6076","","GOOGLE *Google On","USA, 650-253-0000","freedom","-24.99","USD","-2536.3","Технологии","AI","Прочее","Подписка Google One"
|
||||
"2025-01-30","2025-02-01","Transaction_Code: MG5XDG3BJNTQQXH","","","*6076","","YOU.COM","USA, PALO ALTO","freedom","-10.0","USD","-1015.41","Технологии","AI","Прочее","You.com AI search engine subscription"
|
||||
"2025-01-09","2025-01-13","Пакет-майка OZON fresh","Заказ Ozon №06644447-0379","","","by Zalina","OOO OZON","MOSCOW , RU ","raiffeisen+receipts","-9.0","RUB","-9.0","Еда","Продукты","Упаковка","Пакет-майка для продуктов из Ozon"
|
||||
"2025-01-12","","Кастрюля 5 л 24 см Tefal Cook&Clip G7234674 с крышкой из нержавеющей стали, с мерной шкалой, со сливными носиками, для всех типов плит, включая индукционные, гарантия на нержавеющую сталь 10 лет","Заказ Ozon №06644447-0382","","","by Zalina","""ГИПЕР"", О00","","ozon+receipts","-4325.0","RUB","-4325.0","Расходники","Кухонная утварь","","Покупка кастрюли Tefal на Ozon"
|
||||
"2025-01-29","2025-02-03","526056900883 PAYPAL *MEDIUM.COM","","","*0742","","","","bakai","-5.0","USD","-507.46","Развлечения","Подписки","Тексты","Подписка на Medium.com через PayPal"
|
||||
"2025-01-26","2025-01-30","Pal Chat Pro (Monthly) (Subscription)","Apple US Store order","","*0742","Anton (anton@setia.io)","Pal Chat - AI Chat Client","","bakai+receipts","-7.61","USD","-774.71","Технологии","AI","Прочее","Subscription to Pal Chat AI Client"
|
||||
"2025-01-17","","Ольга Г.","Категория: Переводы","","","Black Premium от Залина Б.","","","tbank","-7500.0","RUB","-7500.0","Здоровье","Психотерапия","","Оплата психотерапевта Залины"
|
||||
"2025-01-03","2025-01-06","YM *chaika.com MOSKVA RU","","","","","YM *CHAIKA.COM","MOSKVA , RU ","raiffeisen","-1863.0","RUB","-1863.0","Здоровье","Клиники","Клиника Чайка","Оплата услуг в клинике Чайка"
|
||||
"2025-01-10","2025-01-14","PZ3UCP3XNMFHW PAYPAL *HETZNER","","","*0742","","","","bakai","-13.27","USD","-1406.27","Технологии","Инфраструктура домашнего интернета","VPS","Оплата хостинга Hetzner"
|
||||
"2025-01-05","2025-01-09","Всем Иран. Парадоксы жизни в автократии под санкциями","Заказ Ozon №00211598-1321","","","by Anton","Торговый Дом Эксмо, О000","MOSCOW , RU ","raiffeisen+receipts","-693.0","RUB","-693.0","Развлечения","Чтение","Бумажные книги","Покупка книги в Торговом Доме Эксмо"
|
||||
"2025-01-04","","Рефил насыщенного увлажняющего крема для лица 50 мл DON'T TOUCH MY SKIN","Заказ Ozon №06644447-0377","","","by Zalina","ООО ""ДТМС"", 000","","ozon+receipts","-1197.0","RUB","-1197.0","Красота","Кремы","","Рефил крема для лица на Ozon"
|
||||
"2025-01-23","2025-01-25","tips.yandex Moskva RU","","","","","TIPS.YANDEX","Moskva , RU ","raiffeisen","-140.0","RUB","-140.0","Логистика","чаевые","","Чаевые в сервисе Yandex"
|
||||
"2025-01-22","2025-01-28","Apple Music Subscription (Monthly) (Subscription)","Apple US Store order","","*0742","Anton (anton@setia.io)","Apple Music Subscription","","bakai+receipts","-5.99","USD","-620.12","Развлечения","Подписки","Музыка","Apple Music monthly subscription"
|
||||
"2025-01-11","2025-01-14","PVIEDZ5FKJPFTGC TANA.INC","","","*0742","","","","bakai","-12.0","USD","-1267.0","Развлечения","Хобби Антона","","Subscription to Tana productivity service"
|
||||
"2025-01-08","2025-01-13","Раствор увлажняющий офтальмологический Хиломакс-Комод 10 мл","Заказ Ozon №06644447-0378","","","by Zalina","ПУЛЬСАР, 000","MOSCOW , RU ","raiffeisen+receipts","-1032.0","RUB","-1032.0","Здоровье","Лекарства","","Раствор для глаз Хиломакс-Комод Ozon"
|
||||
"2025-01-19","2025-01-21","Y.M*YANDEX.PLUS MOSKVA RU","","","","","Y.M*YANDEX.PLUS","MOSKVA , RU ","raiffeisen","-199.0","RUB","-199.0","Развлечения","Подписки","Яндекс.Плюс","Yandex Plus subscription payment"
|
||||
"2025-01-12","2025-01-14","Transaction_Code: VKFRNOOEQOS7P5Z","","","*6076","","HOSTSLIM O* HOSTSLIM","NLD, LELYSTAD","freedom","-6.25","EUR","-680.18","Технологии","Инфраструктура домашнего интернета","VPS","Оплата хостинга HostSlim"
|
||||
"2025-01-12","2025-01-14","YM *chaika.com MOSKVA RU","","","","","YM *CHAIKA.COM","MOSKVA , RU ","raiffeisen","-4913.0","RUB","-4913.0","Здоровье","Клиники","Клиника Чайка","Оплата услуг в клинике Чайка"
|
||||
"2025-01-16","","Не реви, ты еще жив | Бойе Кирстен","Заказ Ozon №06644447-0383","","","by Zalina","Самокат Плюс, ООО","","ozon+receipts","-470.0","RUB","-470.0","Развлечения","Чтение","Бумажные книги","Покупка книги на Ozon"
|
||||
"2025-01-12","2025-01-15","Мяч для пилатеса / 20 см / YourFit","Заказ Ozon №06644447-0380","","","by Zalina","ЕБШ, ООО","MOSCOW , RU ","raiffeisen+receipts","-376.0","RUB","-376.0","Расходники","Прочее","","Pilates ball purchase on Ozon"
|
||||
"2025-01-04","2025-01-06","Y.M*URENT MOSKVA RU","","","","","Y.M*URENT","MOSKVA , RU ","raiffeisen","-149.0","RUB","-149.0","Логистика","Прочее","","Urent car sharing service"
|
||||
"2025-01-10","2025-01-14","","","","*6076","","PAYPAL *HETZNER","","freedom","-12.34","EUR","-1343.49","Технологии","Инфраструктура домашнего интернета","VPS","Оплата хостинга Hetzner через PayPal"
|
||||
"2025-01-12","","Сковорода Tefal Enjoy Mini 18 см с индикатором нагрева, антипригарным покрытием, подходит для газовых, электрических и стеклокерамических плит","Заказ Ozon №06644447-0381","","","by Zalina","""ГИПЕР"", О00","","ozon+receipts","-999.0","RUB","-999.0","Расходники","Кухонная утварь","","Покупка сковороды Tefal на Ozon"
|
||||
"2025-01-12","","Шумовка с ситом, металлическая, для казана, INTESNA PREMIUM / Сито 37см из нержавеющей стали","Заказ Ozon №06644447-0381","","","by Zalina","ООО ""ИНТЕС"", ООО","","ozon+receipts","-1664.0","RUB","-1664.0","Расходники","Кухонная утварь","Шумовка","Покупка шумовки для казана на Ozon"
|
||||
"2025-01-09","2025-01-13","Успокаивающий восстанавливающий бальзам для тела, лица и губ La Roche-Posay Cicaplast Baume B5+ с пантенолом, 100 мл","Заказ Ozon №06644447-0379","","","by Zalina","OOO OZON","MOSCOW , RU ","raiffeisen+receipts","-1394.0","RUB","-1394.0","Красота","Кремы","","La Roche-Posay balm from Ozon"
|
||||
"2025-01-12","","Дуршлаг металлический нержавеющая сталь / сито металлическое XINEST для промывки круп, риса, макарон, фруктов, Черная","Заказ Ozon №06644447-0381","","","by Zalina","ООО ""АРТИСТ"", ООО","","ozon+receipts","-716.0","RUB","-716.0","Расходники","Кухонная утварь","Дуршлаг","Покупка дуршлага на Ozon"
|
||||
"2025-01-13","2025-01-16","Мышеловка гуманная ловушка, 2 штуки, живоловка для мышей и крыс в доме | Количество: 2","Заказ Ozon №00211598-1324","","","by Anton","Лазарев Алексей Леонидович, ИП","MOSCOW , RU ","raiffeisen+receipts","-1348.0","RUB","-1348.0","Расходники","Прочее","","Покупка мышеловки на Ozon"
|
||||
"2025-01-09","2025-01-13","Газированный напиток Coca-Cola, 0,33 л | Количество: 10","Заказ Ozon №06644447-0379","","","by Zalina","OOO OZON","MOSCOW , RU ","raiffeisen+receipts","-1100.0","RUB","-1100.0","Еда","Продукты","Напитки","Покупка Coca-Cola на Ozon"
|
||||
"2025-01-17","2025-01-20","Магнит Magtrade с зенковкой, диск 20х4х5мм, под болт/саморез, комплект 5шт","Заказ Ozon №00211598-1325","","","by Anton","Власов Михаил Юрьевич, ИП","MOSCOW , RU ","raiffeisen+receipts","-763.0","RUB","-763.0","Расходники","Прочее","Крепеж","Покупка крепежа на Ozon"
|
||||
"2025-01-01","2025-01-06","Батарейки литиевые дисковые таблетки GP Lithium CR2032, 3 В, набор 10 шт | Количество: 2","Заказ Ozon №00211598-1320","","","by Anton","""А Зет"", ООО","MOSCOW , RU ","raiffeisen+receipts","-850.0","RUB","-850.0","Расходники","Батарейки","","Покупка литиевых батареек на Ozon"
|
||||
"2025-01-19","","Пакет-майка OZON fresh","Заказ Ozon №06644447-0384","","","by Zalina","OOO OZON","","ozon+receipts","-6.0","RUB","-6.0","Еда","Продукты","Упаковка","Пакет-майка для продуктов OZON fresh"
|
||||
"2025-01-12","2025-01-15","OPENFACE Дезодорант-антиперспирант с АНА-кислотами SWEET NOT SWEAT","Заказ Ozon №06644447-0380","","","by Zalina","Бирюкова Ирина Михайловна, ИП","MOSCOW , RU ","raiffeisen+receipts","-705.0","RUB","-705.0","Красота","Кремы","","OPENFACE deodorant-antiperspirant from Ozon"
|
||||
"2025-01-05","2025-01-09","Купола, дворцы, ДК. История и смыслы архитектуры России","Заказ Ozon №00211598-1322","","","by Anton","OOO OZON","MOSCOW , RU ","raiffeisen+receipts","-1140.0","RUB","-1140.0","Развлечения","Чтение","Бумажные книги","Покупка книги Купола, дворцы на Ozon"
|
||||
"2025-01-16","","Убийство в ""Восточном экспрессе"" | Кристи Агата","Заказ Ozon №06644447-0383","","","by Zalina","Торговый Дом Эксмо, ООО","","ozon+receipts","-455.0","RUB","-455.0","Развлечения","Чтение","Бумажные книги","Покупка бумажной книги в Ozon"
|
||||
"2025-01-12","2025-01-15","Кремовые румяна CHEEKSTYLER оттенок VERY BERRY","Заказ Ozon №06644447-0380","","","by Zalina","Петросян Тамара Рафаеловна, ИП","MOSCOW , RU ","raiffeisen+receipts","-1388.0","RUB","-1388.0","Красота","Кремы","","Покупка кремовых румян на Ozon"
|
||||
"2025-01-25","2025-01-28","MES_redirect_EPR_1844 Moscow RU","","","","","MES_REDIRECT_EPR_1844","Moscow , RU ","raiffeisen","-8298.68","RUB","-8298.68","Квартира","Плата за электричество / воду","","Оплата электроэнергии через MES_redirect_EPR"
|
||||
"2025-01-19","2025-01-23","Утяжелитель для штор 150г 3м","Заказ Ozon №00211598-1329","","","by Anton","Щедрина Елена Викторовна, ИП","MOSCOW , RU ","raiffeisen+receipts","-1252.0","RUB","-1252.0","Расходники","мелкий ремонт","","Curtain weight from Ozon"
|
||||
"2025-01-21","","Набор картриджей atoll №103 STD для обратного осмоса А-575","Заказ Ozon №00211598-1331","","","by Anton","Научно-производственное объединение ""Русфильтр"", ООО","","ozon+receipts","-6659.0","RUB","-6659.0","Расходники","Замена разных фильтров","","Набор картриджей для фильтра воды"
|
||||
"2025-01-09","2025-01-13","Курьерская доставка партнером","Заказ Ozon №06644447-0379","","","by Zalina","Ысманкул уулу Алымбек","MOSCOW , RU ","raiffeisen+receipts","-187.0","RUB","-187.0","Логистика","Доставка","Услуга доставки","Курьерская доставка Ozon"
|
||||
"2025-01-12","","Толкушка для картофеля, INTESNA PREMIUM 27,8 см, пресс для пюре, картофелемялка из нержавеющей стали","Заказ Ozon №06644447-0381","","","by Zalina","ООО ""ИНТЕС"", ООО","","ozon+receipts","-1383.0","RUB","-1383.0","Расходники","Кухонная утварь","Толкушка для картофеля","Покупка толкушки для картофеля на Ozon"
|
||||
"2025-01-04","","Сыворотка для лица с витамином С DON'T TOUCH MY SKIN в формате рефила 30мл","Заказ Ozon №06644447-0377","","","by Zalina","ООО ""ДТМС"", ООО","","ozon+receipts","-2400.0","RUB","-2400.0","Красота","Кремы","","Сыворотка для лица DON'T TOUCH MY SKIN"
|
||||
"2025-01-27","2025-01-30","Пакет-майка OZON fresh","Заказ Ozon №06644447-0386","","","by Zalina","OOO OZON","MOSCOW , RU ","raiffeisen+receipts","-9.0","RUB","-9.0","Еда","Продукты","Упаковка","Пакет-майка для продуктов из Ozon"
|
||||
"2025-01-27","2025-01-30","Пакет-майка OZON fresh","Заказ Ozon №06644447-0386","","","by Zalina","OOO OZON","MOSCOW , RU ","raiffeisen+receipts","-9.0","RUB","-9.0","Еда","Продукты","Упаковка","Пакет-майка для продуктов из Ozon"
|
||||
"2025-01-12","","Набор для кухни Кулинарные лопатки деревянные. Цельная и с прорезями, с черной ручкой. 2 шт.","Заказ Ozon №06644447-0381","","","by Zalina","Перстнев Андрей Григорьевич, ИП","","ozon+receipts","-549.0","RUB","-549.0","Расходники","Кухонная утварь","","Кухонные лопатки на Ozon"
|
||||
"2025-01-10","2025-01-13","Не только кимчхи: История, культура и повседневная жизнь Кореи | Ланьков Андрей Николаевич | Электронная книга","Заказ Ozon №00211598-1323","","","by Anton","ЛитРес, ООО","MOSCOW , RU ","raiffeisen+receipts","-456.0","RUB","-456.0","Развлечения","Чтение","Электронные книги","Покупка электронной книги в ЛитРес"
|
||||
"2025-01-19","","Фильтр для очистителя воздуха антибактериальный Mi Air Purifier 2, 25, 3, 3C, 3H c меткой RFID (MCR-FLA)","Заказ Ozon №00211598-1327","","","by Anton","Калабина Татьяна Сергеевна, ИП","","ozon+receipts","-1858.0","RUB","-1858.0","Расходники","Замена разных фильтров","","Фильтр для очистителя воздуха Ozon"
|
||||
"2025-01-08","2025-01-13","Ортодонтические резинки для брекетов / Тяги для брекетов (эластики) - Баран / Ram (6,35 мм., 170 гр.) | Количество: 2","Заказ Ozon №06644447-0378","","","by Zalina","Ерютов Антон Александрович, ИП","MOSCOW , RU ","raiffeisen+receipts","-740.0","RUB","-740.0","Здоровье","Лекарства","","Ортодонтические резинки для брекетов Ozon"
|
||||
"2025-01-17","2025-01-20","Магнит усиленный 20х3 мм с зенковкой 4,5х7 мм - 6 шт, мощный","Заказ Ozon №00211598-1325","","","by Anton","ООО ""МЕРКУРИЙ"", ООО","MOSCOW , RU ","raiffeisen+receipts","-464.0","RUB","-464.0","Расходники","мелкий ремонт","Магниты","Покупка магнитов для мелкого ремонта"
|
||||
"2025-01-16","","Маленькая всемирная история / Развивающие книги / История для детей | Гомбрих Эрнст","Заказ Ozon №06644447-0383","","","by Zalina","Альпина Паблишер, ОО0","","ozon+receipts","-575.0","RUB","-575.0","Развлечения","Чтение","Бумажные книги","Покупка детской книги в Ozon"
|
||||
"2025-01-19","2025-01-23","Декоративный короб для рулонной шторы","Заказ Ozon №00211598-1330","","","by Anton","ООО ""МАНУФАКТУРА"", ООО","MOSCOW , RU ","raiffeisen+receipts","-539.0","RUB","-539.0","Расходники","Прочее","","Decorative box for roller blind"
|
||||
"2025-01-17","2025-01-20","Магнит 20х5 мм (диаметр 20 мм, толщина 5 мм) - 5 штук","Заказ Ozon №00211598-1325","","","by Anton","Магнитные Элементы, ООО","MOSCOW , RU ","raiffeisen+receipts","-717.0","RUB","-717.0","Расходники","мелкий ремонт","Магниты","Покупка магнитов для мелкого ремонта"
|
||||
"2025-01-19","2025-01-22","Магнитные виниловые наклейки с клеевым слоем 50 шт., / Магнит на клеевой основе 13x25 мм, толщина: 0,4 мм","Заказ Ozon №00211598-1328","","","by Anton","Лондарев Павел Сергеевич, ИП","MOSCOW , RU ","raiffeisen+receipts","-379.0","RUB","-379.0","Расходники","Прочее","","Магнитные наклейки с клеевым слоем"
|
||||
"2025-01-19","","Книга Осетины народы и культуры","Заказ Ozon №06644447-0384","","","by Zalina","ИЗДАТЕЛЬСТВО НАУКА, ФГБУ","","ozon+receipts","-1909.0","RUB","-1909.0","Развлечения","Чтение","Бумажные книги","Покупка бумажной книги Осетины"
|
||||
"2025-01-25","2025-01-28","Салфетки бумажные Kleenex Ultra Soft трехслойные, комплект: 3 упаковки по 56 шт | Количество: 2","Заказ Ozon №00211598-1333","","","by Anton","ООО ""АИ"", 000","MOSCOW , RU ","raiffeisen+receipts","-2510.0","RUB","-2510.0","Расходники","Прочее","","Покупка бумажных салфеток Kleenex на Ozon"
|
||||
"2025-01-27","2025-01-30","Носочки для педикюра, хлопковые. Косметические носки многоразовые, для спа процедур. Размер 35-39. Цвет белый","Заказ Ozon №06644447-0385","","","by Zalina","Федоринин Сергей Вячеславович, ИП","MOSCOW , RU ","raiffeisen+receipts","-428.0","RUB","-428.0","Красота","Прочее","","Cosmetic pedicure socks from Ozon"
|
||||
"2025-01-29","2025-02-01","Мощные плоские магниты прямоугольники Magtrade, 15x8х2 мм, комплект 30 шт.","Заказ Ozon №00211598-1334","","","by Anton","Власов Михаил Юрьевич, ИП","MOSCOW , RU ","raiffeisen+receipts","-850.49","RUB","-850.49","Расходники","мелкий ремонт","Магниты","Покупка магнитов для мелкого ремонта"
|
||||
"2025-01-17","","Сетевой фильтр с предохранителем, AGNI, 8 розеток + 3 USB и 1 TYPE-C, удлинитель 2м, защитные шторки, негорючий пластик","Заказ Ozon №00211598-1326","","","by Anton","Покоевец Дмитрий Васильевич, ИП","","ozon+receipts","-2666.0","RUB","-2666.0","Расходники","Прочее","","Сетевой фильтр с предохранителем Ozon"
|
||||
"2025-01-27","2025-01-30","Лифтинг-крем для шеи с пептидами и коллагеном Medi-Peel Premium Collagen Naite Thread Neck Cream 2.0 Южная Корея","Заказ Ozon №06644447-0385","","","by Zalina","ИП Sweet Home","MOSCOW , RU ","raiffeisen+receipts","-2703.0","RUB","-2703.0","Красота","Кремы","","Лифтинг-крем для шеи Medi-Peel (Ozon)"
|
||||
"2025-01-22","2025-01-25","Смазка для кофемашин и кофеварки силиконовая ROX FSG-204 с пищевым допуском NSF H1/20 грамм","Заказ Ozon №00211598-1332","","","by Anton","РОКСОЛ, О00","MOSCOW , RU ","raiffeisen+receipts","-357.0","RUB","-357.0","Расходники","Прочее","","Смазка для кофемашины с Ozon"
|
||||
"2025-01-22","2025-01-25","Смазка силиконовая с пищевым допуском NSF H1 EFELE SG-385 25г","Заказ Ozon №00211598-1332","","","by Anton","Сысоева Анастасия Сергеевна, ИП","MOSCOW , RU ","raiffeisen+receipts","-430.0","RUB","-430.0","Расходники","Прочее","","Silicone grease from Ozon"
|
||||
"2025-01-22","2025-01-25","Пищевая силиконовая смазка для кофе-машин 50 мл ( 60 грамм )","Заказ Ozon №00211598-1332","","","by Anton","Никитин Александр Геннадьевич, ИП","MOSCOW , RU ","raiffeisen+receipts","-422.0","RUB","-422.0","Расходники","Прочее","","Смазка для кофе-машины (Ozon)"
|
||||
"2025-01-27","2025-01-30","Гель для посудомоечной машины Finish, 600 мл","Заказ Ozon №06644447-0385","","","by Zalina","Алимп, ООО","MOSCOW , RU ","raiffeisen+receipts","-734.0","RUB","-734.0","Расходники","Средства для посудомоек","","Гель для посудомоечной машины Finish"
|
||||
"2025-01-27","2025-01-30","Молоко безлактозное 1,8% 1 л, Parmalat Comfort | Количество: 3","Заказ Ozon №06644447-0386","","","by Zalina","OOO OZON","MOSCOW , RU ","raiffeisen+receipts","-294.0","RUB","-294.0","Еда","Продукты","Молоко","Покупка безлактозного молока на Ozon"
|
||||
"2025-01-30","2025-02-03","Finish Power All in 1 таблетки для посудомоечной машины, 100 шт | Количество: 2","Заказ Ozon №00211598-1335","","","by Anton","OOO OZON","MOSCOW , RU ","raiffeisen+receipts","-3238.0","RUB","-3238.0","Расходники","Средства для посудомоек","","Покупка таблеток для посудомоечной машины"
|
||||
"2025-01-27","2025-01-30","Варенье Ратибор малиновое, 680 г | Количество: 2","Заказ Ozon №06644447-0386","","","by Zalina","OOO OZON","MOSCOW , RU ","raiffeisen+receipts","-538.0","RUB","-538.0","Еда","Продукты","Варенье","Покупка малинового варенья на Ozon"
|
||||
"2025-01-29","2025-01-31","Борщ","Заказ в Яндекс.Еде №20250129-1942","","*5728","by Anton","Кофемания","","yandex+receipts","-890.0","RUB","-890.0","Еда","Готовая","Рестораны","Заказ борща в Яндекс.Еде"
|
||||
"2025-01-19","","Доставка","Заказ Ozon №06644447-0384","","","by Zalina","OOO OZON","","ozon+receipts","-189.0","RUB","-189.0","Логистика","Доставка","Услуга доставки","Доставка заказа Ozon"
|
||||
"2025-01-20","2025-01-20","Сервисный сбор","Заказ в Яндекс.Еде №20250120-1730","","","by Zalina","YANDEX.EDA","","yandex+receipts","-44.0","RUB","-44.0","Логистика","Доставка","Сервисный сбор","Сервисный сбор за доставку Яндекс.Еды"
|
||||
"2025-01-19","","Finish Classic гель, для посудомоечной машины, 1 л","Заказ Ozon №06644447-0384","","","by Zalina","OOO OZON","","ozon+receipts","-395.0","RUB","-395.0","Расходники","Средства для посудомоек","","Finish Classic dishwasher gel from Ozon"
|
||||
"2025-01-27","2025-01-30","Увлажняющая база с сиянием и с защитой от солнца Heimish Artless Glow Base SPF 50+ РА,40 мл","Заказ Ozon №06644447-0385","","","by Zalina","Шихмагомедова Саният, ИП","MOSCOW , RU ","raiffeisen+receipts","-1243.0","RUB","-1243.0","Красота","Кремы","","Heimish Glow Base from Ozon"
|
||||
"2025-01-27","2025-01-30","Доставка","Заказ Ozon №06644447-0386","","","by Zalina","OOO OZON","MOSCOW , RU ","raiffeisen+receipts","-349.0","RUB","-349.0","Логистика","Доставка","Услуга доставки","Доставка заказа Ozon"
|
||||
"2025-01-19","","Фильтр для очистителя воздуха Мі Air Purifier 2, 25, 3, 3C, ЗН с меткой RFID (M8R-FLH)","Заказ Ozon №00211598-1327","","","by Anton","Калабина Татьяна Сергеевна, ИП","","ozon+receipts","-1983.0","RUB","-1983.0","Расходники","Замена разных фильтров","","Фильтр для очистителя воздуха"
|
||||
"2025-01-13","2025-01-15","Доставка","Заказ в Яндекс.Еде №20250113-1842","","*8416","by Zalina","YANDEX.EDA","","yandex+receipts","-335.0","RUB","-335.0","Логистика","Доставка","Услуга доставки","Доставка из Яндекс.Еды"
|
||||
"2025-01-30","2025-02-03","Курьерская доставка партнером","Заказ Ozon №00211598-1335","","","by Anton","OOO OZON","MOSCOW , RU ","raiffeisen+receipts","-168.0","RUB","-168.0","Логистика","Доставка","Услуга доставки","Курьерская доставка Ozon"
|
||||
"2025-01-31","2025-02-02","Пицца c мраморной говядиной и артишоками","Заказ в Яндекс.Еде №20250131-1812","","*5728","by Anton","I Like Wine 2.0","","yandex+receipts","-1340.0","RUB","-1340.0","Еда","Готовая","Пицца","Пицца из Яндекс.Еды"
|
||||
"2025-01-29","2025-02-01","Мощные плоские магниты прямоугольники Magtrade, 20x10х2мм, комплект 10 шт.","Заказ Ozon №00211598-1334","","","by Anton","Власов Михаил Юрьевич, ИП","MOSCOW , RU ","raiffeisen+receipts","-586.61","RUB","-586.61","Расходники","мелкий ремонт","","Покупка магнитов для мелкого ремонта"
|
||||
"2025-01-31","2025-02-02","Сервисный сбор","Заказ в Яндекс.Еде №20250131-1812","","*5728","by Anton","YANDEX.EDA","","yandex+receipts","-99.0","RUB","-99.0","Логистика","Доставка","Сервисный сбор","Сервисный сбор за доставку Яндекс.Еды"
|
||||
"2025-01-27","2025-01-30","Vichy Шариковый дезодорант для чувствительной кожи с защитой 48 часов, роликовый антиперспирант от запаха пота для женщин и мужчин, 50 мл","Заказ Ozon №06644447-0386","","","by Zalina","OOO OZON","MOSCOW , RU ","raiffeisen+receipts","-932.0","RUB","-932.0","Красота","Прочее","","Покупка дезодоранта Vichy на Ozon"
|
||||
"2025-01-19","2025-01-22","Магнитная лента с клеевым слоем ширина 12,7 мм, длина 5 метров","Заказ Ozon №00211598-1328","","","by Anton","Соломахин Сергей Александрович, ИП","MOSCOW , RU ","raiffeisen+receipts","-472.0","RUB","-472.0","Расходники","мелкий ремонт","","Магнитная лента для мелкого ремонта"
|
||||
"2025-01-27","2025-01-30","Леденцы без сахара с ксилитом Ksilibon вишня-черешня (3 упаковки)","Заказ Ozon №06644447-0385","","","by Zalina","ООО ""ЭРИН ХАЙДЕН РУС"", 000","MOSCOW , RU ","raiffeisen+receipts","-566.0","RUB","-566.0","Еда","Продукты","Десерты и сладости","Покупка леденцов на Ozon"
|
||||
"2025-01-29","2025-02-01","Мощные плоские магниты прямоугольники Magtrade, 10x5x2 мм, комплект 30 шт.","Заказ Ozon №00211598-1334","","","by Anton","Власов Михаил Юрьевич, ИП","MOSCOW , RU ","raiffeisen+receipts","-517.9","RUB","-517.9","Расходники","мелкий ремонт","","Покупка магнитов для мелкого ремонта"
|
||||
"2025-01-04","2025-01-08","Доставка","Заказ в Яндекс.Еде №20250104-1752","","","by Zalina","YANDEX.EDA","MOSCOW , RU ","raiffeisen+receipts","-290.0","RUB","-290.0","Логистика","Доставка","Услуга доставки","Доставка заказа из Яндекс.Еды"
|
||||
"2025-01-13","2025-01-15","Борщ","Заказ в Яндекс.Еде №20250113-1842","","*8416","by Zalina","Кофемания","","yandex+receipts","-1780.0","RUB","-1780.0","Еда","Готовая","Рестораны","Борщ из Кофемании через Яндекс.Еду"
|
||||
"2025-01-04","2025-01-08","Сервисный сбор","Заказ в Яндекс.Еде №20250104-1752","","","by Zalina","YANDEX.EDA","MOSCOW , RU ","raiffeisen+receipts","-99.0","RUB","-99.0","Логистика","Доставка","Сервисный сбор","Сервисный сбор за доставку Яндекс.Еды"
|
||||
"2025-01-29","2025-01-31","Сервисный сбор","Заказ в Яндекс.Еде №20250129-1942","","*5728","by Anton","YANDEX.EDA","","yandex+receipts","-99.0","RUB","-99.0","Логистика","Доставка","Сервисный сбор","Сервисный сбор за доставку Яндекс.Еда"
|
||||
"2025-01-30","2025-02-03","Пакет-майка OZON fresh","Заказ Ozon №00211598-1335","","","by Anton","OOO OZON","MOSCOW , RU ","raiffeisen+receipts","-9.0","RUB","-9.0","Еда","Продукты","Упаковка","Покупка пакета в OZON fresh"
|
||||
"2025-01-20","2025-01-20","Мелаксен таблетки 3 мг 24 шт","Заказ в Яндекс.Еде №20250120-1730","","","by Zalina","Аптека Ригла","","yandex+receipts","-880.0","RUB","-880.0","Здоровье","Лекарства","","Покупка таблеток Мелаксен в аптеке"
|
||||
"2025-01-04","2025-01-06","Сервисный сбор","Заказ в Яндекс.Еде №20250104-1657","","","by Zalina","YANDEX.EDA","Moskva , RU ","raiffeisen+receipts","-75.0","RUB","-75.0","Логистика","Доставка","Сервисный сбор","Сервисный сбор за доставку Яндекс.Еды"
|
||||
"2025-01-03","2025-01-06","Сервисный сбор","Заказ в Яндекс.Еде №20250103-1941","","","by Zalina","YANDEX.EDA","MOSCOW , RU ","raiffeisen+receipts","-99.0","RUB","-99.0","Логистика","Доставка","Сервисный сбор","Сервисный сбор за доставку Яндекс.Еда"
|
||||
"2025-01-10","2025-01-13","Груша и горгонзола","Заказ в Яндекс.Еде №20250110-1929","","","by Zalina","Zotman Pizza","MOSCOW , RU ","raiffeisen+receipts","-660.0","RUB","-660.0","Еда","Готовая","Пицца","Пицца из Яндекс.Еды Zotman Pizza"
|
||||
"2025-01-23","2025-01-27","Супер-люкс бутерброд","Заказ в Яндекс.Еде №20250123-1233","","","by Zalina","Eggsellent","MOSCOW , RU ","raiffeisen+receipts","-850.0","RUB","-850.0","Еда","Готовая","Рестораны","Заказ из Eggsellent через Яндекс.Еду"
|
||||
"2025-01-30","","BELLEHOME Набор полотенец махровых ""Малахит"" 3 шт (50x70, 50x100, 70х140) хлопок, бамбук","Заказ Ozon №06644447-0387","","","by Zalina","ООО ""ТЕКСТИЛЬНЫЙ ДОМ"", ООО","","ozon+receipts","-2599.0","RUB","-2599.0","Красота","Одежда","","Purchase of towels from Ozon"
|
||||
"2025-01-10","2025-01-13","Сервисный сбор","Заказ в Яндекс.Еде №20250110-1929","","","by Zalina","YANDEX.EDA","MOSCOW , RU ","raiffeisen+receipts","-99.0","RUB","-99.0","Логистика","Доставка","Сервисный сбор","Сервисный сбор за доставку Яндекс.Еда"
|
||||
"2025-01-31","2025-02-02","Пицца Пепперони (Неострая)","Заказ в Яндекс.Еде №20250131-1812","","*5728","by Anton","I Like Wine 2.0","","yandex+receipts","-950.0","RUB","-950.0","Еда","Готовая","Пицца","Пицца из Яндекс.Еды"
|
||||
"2025-01-13","2025-01-15","Сервисный сбор","Заказ в Яндекс.Еде №20250113-1842","","*8416","by Zalina","YANDEX.EDA","","yandex+receipts","-99.0","RUB","-99.0","Логистика","Доставка","Сервисный сбор","Сервисный сбор за доставку Яндекс.Еды"
|
||||
"2025-01-04","2025-01-06","Сырники жареные Уже Готово, 6 шт в наборе 420 г","Заказ в Яндекс.Еде №20250104-1657","","","by Zalina","Азбука вкуса","Moskva , RU ","raiffeisen+receipts","-430.0","RUB","-430.0","Еда","Продукты","Сырники","Покупка сырников в Азбуке Вкуса"
|
||||
"2025-01-31","2025-02-02","Пицца Маргарита","Заказ в Яндекс.Еде №20250131-1812","","*5728","by Anton","I Like Wine 2.0","","yandex+receipts","-720.0","RUB","-720.0","Еда","Готовая","Пицца","Пицца из Яндекс.Еды"
|
||||
"2025-01-30","","Халат Votex home женский","Заказ Ozon №06644447-0387","","","by Zalina","Вотекс, О00","","ozon+receipts","-1924.0","RUB","-1924.0","Красота","Одежда","","Халат Votex home женский Ozon"
|
||||
"2025-01-27","2025-01-30","Доставка","Заказ в Яндекс.Еде №20250127-1940","","","by Zalina","YANDEX.EDA","MOSCOW , RU ","raiffeisen+receipts","-335.0","RUB","-335.0","Логистика","Доставка","Услуга доставки","Доставка из Яндекс.Еды"
|
||||
"2025-01-04","2025-01-08","Капитан Барашек (на листьях салата) (Без лука, Картофель по-деревенски (120 г), Кетчуп)","Заказ в Яндекс.Еде №20250104-1752","","","by Zalina","Кофемания","MOSCOW , RU ","raiffeisen+receipts","-1500.0","RUB","-1500.0","Еда","Готовая","Бургеры","Бургер из Капитан Барашек через Яндекс.Еду"
|
||||
"2025-01-04","2025-01-06","Сырники без сахара запеченные, 140г","Заказ в Яндекс.Еде №20250104-1657","","","by Zalina","Азбука вкуса","Moskva , RU ","raiffeisen+receipts","-214.0","RUB","-214.0","Еда","Продукты","Сырники","Покупка сырников в Азбуке Вкуса"
|
||||
"2025-01-20","2025-01-20","Доставка","Заказ в Яндекс.Еде №20250120-1730","","","by Zalina","YANDEX.EDA","","yandex+receipts","-89.0","RUB","-89.0","Логистика","Доставка","Услуга доставки","Доставка из Яндекс.Еды"
|
||||
"2025-01-30","2025-02-01","Сервисный сбор","Заказ в Яндекс.Еде №20250130-1038","","","by Zalina","YANDEX.EDA","Moskva , RU ","raiffeisen+receipts","-59.0","RUB","-59.0","Логистика","Доставка","Сервисный сбор","Сервисный сбор за доставку Яндекс.Еды"
|
||||
"2025-01-03","2025-01-06","Пицца Пепперони (Неострая)","Заказ в Яндекс.Еде №20250103-1941","","","by Zalina","I Like Wine 2.0","MOSCOW , RU ","raiffeisen+receipts","-950.0","RUB","-950.0","Еда","Готовая","Пицца","Пицца из Яндекс.Еды"
|
||||
"2025-01-24","2025-01-27","Пицца c мраморной говядиной и артишоками","Заказ в Яндекс.Еде №20250124-1910","","","by Zalina","I Like Wine 2.0","MOSCOW , RU ","raiffeisen+receipts","-1340.0","RUB","-1340.0","Еда","Готовая","Пицца","Пицца из Яндекс.Еды"
|
||||
"2025-01-28","2025-01-31","Доставка","Заказ в Яндекс.Еде №20250128-2022","","","by Zalina","YANDEX.EDA","MOSCOW , RU ","raiffeisen+receipts","-350.0","RUB","-350.0","Логистика","Доставка","Услуга доставки","Доставка заказа из Яндекс.Еды"
|
||||
"2025-01-04","2025-01-08","Домашняя лапша","Заказ в Яндекс.Еде №20250104-1752","","","by Zalina","Кофемания","MOSCOW , RU ","raiffeisen+receipts","-790.0","RUB","-790.0","Еда","Готовая","Супы","Домашняя лапша из Кофемании"
|
||||
"2025-01-03","2025-01-06","Доставка","Заказ в Яндекс.Еде №20250103-1941","","","by Zalina","YANDEX.EDA","MOSCOW , RU ","raiffeisen+receipts","-107.0","RUB","-107.0","Логистика","Доставка","Услуга доставки","Доставка из Яндекс.Еды"
|
||||
"2025-01-24","2025-01-27","Доставка","Заказ в Яндекс.Еде №20250124-1910","","","by Zalina","YANDEX.EDA","MOSCOW , RU ","raiffeisen+receipts","-100.0","RUB","-100.0","Логистика","Доставка","Услуга доставки","Доставка из Яндекс.Еды"
|
||||
"2025-01-30","2025-02-01","Куриная бризоль с пастой пенне, Уже Готово 230г","Заказ в Яндекс.Еде №20250130-1038","","","by Zalina","Азбука вкуса","Moskva , RU ","raiffeisen+receipts","-430.0","RUB","-430.0","Еда","Готовая","Рестораны","Куриная бризоль с пастой из Яндекс.Еды"
|
||||
"2025-01-10","2025-01-13","Сырники без сахара запеченные 280г","Заказ в Яндекс.Еде №20250110-1700","","","by Zalina","Азбука вкуса","Moskva , RU ","raiffeisen+receipts","-365.0","RUB","-365.0","Еда","Продукты","Сырники","Покупка сырников в Азбуке Вкуса"
|
||||
"2025-01-30","2025-02-01","Плов с цыпленком и овощами ?Уже Готово? 220 г, Россия","Заказ в Яндекс.Еде №20250130-1038","","","by Zalina","Азбука вкуса","Moskva , RU ","raiffeisen+receipts","-430.0","RUB","-430.0","Еда","Готовая","Рестораны","Плов с цыпленком из Азбуки Вкуса"
|
||||
"2025-01-10","2025-01-13","Сервисный сбор","Заказ в Яндекс.Еде №20250110-1700","","","by Zalina","YANDEX.EDA","Moskva , RU ","raiffeisen+receipts","-47.0","RUB","-47.0","Логистика","Доставка","Сервисный сбор","Сервисный сбор за доставку Яндекс.Еды"
|
||||
"2025-01-03","2025-01-06","Пицца Маргарита","Заказ в Яндекс.Еде №20250103-1941","","","by Zalina","I Like Wine 2.0","MOSCOW , RU ","raiffeisen+receipts","-720.0","RUB","-720.0","Еда","Готовая","Пицца","Пицца из Яндекс.Еды"
|
||||
"2025-01-10","2025-01-13","С базиликом и страчателлой","Заказ в Яндекс.Еде №20250110-1929","","","by Zalina","Zotman Pizza","MOSCOW , RU ","raiffeisen+receipts","-790.0","RUB","-790.0","Еда","Готовая","Пицца","Заказ пиццы в Zotman Pizza"
|
||||
"2025-01-30","2025-02-01","Сырники жареные Уже Готово, 4 шт в наборе","Заказ в Яндекс.Еде №20250130-1038","","","by Zalina","Азбука вкуса","Moskva , RU ","raiffeisen+receipts","-322.0","RUB","-322.0","Еда","Продукты","Сырники","Покупка сырников в Азбуке Вкуса"
|
||||
"2025-01-19","2025-01-21","Запеканка творожная с грушей и персиком, Уже Готово","Заказ в Яндекс.Еде №20250119-1549","","","by Zalina","Азбука вкуса","Moskva , RU ","raiffeisen+receipts","-397.0","RUB","-397.0","Еда","Готовая","Рестораны","Запеканка из Азбуки Вкуса через Яндекс.Еду"
|
||||
"2025-01-10","2025-01-13","Варенье РАТИБОР Абрикос, 360г","Заказ в Яндекс.Еде №20250110-1700","","","by Zalina","Азбука вкуса","Moskva , RU ","raiffeisen+receipts","-269.0","RUB","-269.0","Еда","Продукты","Варенье","Покупка варенья в Азбуке Вкуса"
|
||||
"2025-01-28","2025-01-31","Фирменный бургер (Medium)","Заказ в Яндекс.Еде №20250128-2022","","","by Zalina","Black Market","MOSCOW , RU ","raiffeisen+receipts","-1980.0","RUB","-1980.0","Еда","Готовая","Рестораны","Бургер в ресторане Black Market через Яндекс.Еду"
|
||||
"2025-01-04","2025-01-06","Салат Оливье с мясом, ?Уже Готово?, 350г","Заказ в Яндекс.Еде №20250104-1657","","","by Zalina","Азбука вкуса","Moskva , RU ","raiffeisen+receipts","-592.0","RUB","-592.0","Еда","Продукты","Овощи","Салат Оливье в Азбуке Вкуса"
|
||||
"2025-01-10","2025-01-13","С пармской ветчиной","Заказ в Яндекс.Еде №20250110-1929","","","by Zalina","Zotman Pizza","MOSCOW , RU ","raiffeisen+receipts","-880.0","RUB","-880.0","Еда","Готовая","Пицца","Заказ пиццы в Zotman Pizza через Яндекс.Еду"
|
||||
"2025-01-23","2025-01-27","Миндально-вишневый латте 12/24","Заказ в Яндекс.Еде №20250123-1233","","","by Zalina","Eggsellent","MOSCOW , RU ","raiffeisen+receipts","-450.0","RUB","-450.0","Еда","Готовая","Рестораны","Миндально-вишневый латте из Яндекс.Еды"
|
||||
"2025-01-10","2025-01-13","Сырники жареные Уже Готово, 4 шт в наборе","Заказ в Яндекс.Еде №20250110-1700","","","by Zalina","Азбука вкуса","Moskva , RU ","raiffeisen+receipts","-322.0","RUB","-322.0","Еда","Продукты","Сырники","Покупка жареных сырников в Азбуке Вкуса"
|
||||
"2025-01-03","2025-01-06","Пицца c мраморной говядиной и артишоками","Заказ в Яндекс.Еде №20250103-1941","","","by Zalina","I Like Wine 2.0","MOSCOW , RU ","raiffeisen+receipts","-1340.0","RUB","-1340.0","Еда","Готовая","Пицца","Пицца из Яндекс.Еды"
|
||||
"2025-01-27","2025-01-30","Сервисный сбор (добавлен автоматически)","Заказ в Яндекс.Еде №20250127-1940","","","by Zalina","YANDEX.EDA","MOSCOW , RU ","raiffeisen+receipts+virtual","-99.0","RUB","-99.0","Логистика","Доставка","Сервисный сбор","Сервисный сбор за доставку Яндекс.Еды"
|
||||
"2025-01-23","2025-01-27","Сервисный сбор","Заказ в Яндекс.Еде №20250123-1233","","","by Zalina","YANDEX.EDA","MOSCOW , RU ","raiffeisen+receipts","-21.0","RUB","-21.0","Логистика","Доставка","Сервисный сбор","Сервисный сбор за доставку Яндекс.Еда"
|
||||
"2025-01-08","2025-01-11","Доставка","Заказ в Яндекс.Еде №20250108-1911","","","by Zalina","YANDEX.EDA","MOSCOW , RU ","raiffeisen+receipts","-350.0","RUB","-350.0","Логистика","Доставка","Услуга доставки","Доставка из Яндекс.Еды"
|
||||
"2025-01-04","2025-01-06","Кето сырники Азбука Life Pro","Заказ в Яндекс.Еде №20250104-1657","","","by Zalina","Азбука вкуса","Moskva , RU ","raiffeisen+receipts","-268.0","RUB","-268.0","Еда","Готовая","Рестораны","Кето сырники из Азбуки Вкуса (Яндекс.Еда)"
|
||||
"2025-01-27","2025-01-30","Борщ","Заказ в Яндекс.Еде №20250127-1940","","","by Zalina","Кофемания","MOSCOW , RU ","raiffeisen+receipts","-1780.0","RUB","-1780.0","Еда","Готовая","Рестораны","Борщ из Кофемании через Яндекс.Еда"
|
||||
"2025-01-25","2025-01-28","Упаковка заказа","Заказ из Яндекс.Лавки №250125-018-3079","","","by Zalina","YANDEX.LAVKA","Moskva , RU ","raiffeisen+receipts","-12.0","RUB","-12.0","Логистика","Доставка","Упаковка заказа","Упаковка заказа из Яндекс.Лавки"
|
||||
"2025-01-28","2025-01-31","Сервисный сбор","Заказ в Яндекс.Еде №20250128-2022","","","by Zalina","YANDEX.EDA","MOSCOW , RU ","raiffeisen+receipts","-99.0","RUB","-99.0","Логистика","Доставка","Сервисный сбор","Сервисный сбор за доставку Яндекс.Еды"
|
||||
"2025-01-25","2025-01-28","Фрикадельки в брусничном соусе с пюре","Заказ из Яндекс.Лавки №250125-018-3079","","","by Zalina","YANDEX.LAVKA","Moskva , RU ","raiffeisen+receipts","-399.0","RUB","-399.0","Еда","Продукты","Мясо","Фрикадельки в брусничном соусе из Лавки"
|
||||
"2025-01-24","2025-01-27","Пицца Маргарита","Заказ в Яндекс.Еде №20250124-1910","","","by Zalina","I Like Wine 2.0","MOSCOW , RU ","raiffeisen+receipts","-720.0","RUB","-720.0","Еда","Готовая","Пицца","Пицца Маргарита из Яндекс.Еды"
|
||||
"2025-01-05","2025-01-05","Конфеты Мишка косолапый Красный Октябрь","Заказ из Яндекс.Лавки №250105-151-0017","","","by Zalina","YANDEX.LAVKA","","yandex+receipts","-243.06","RUB","-243.06","Еда","Продукты","Конфеты","Покупка конфет в Яндекс.Лавке"
|
||||
"2025-01-24","2025-01-27","Пицца Пепперони (Неострая)","Заказ в Яндекс.Еде №20250124-1910","","","by Zalina","I Like Wine 2.0","MOSCOW , RU ","raiffeisen+receipts","-950.0","RUB","-950.0","Еда","Готовая","Пицца","Пицца из Яндекс.Еды"
|
||||
"2025-01-05","2025-01-05","Леденцы Halls мёд-лимон","Заказ из Яндекс.Лавки №250105-151-0017","","","by Zalina","YANDEX.LAVKA","","yandex+receipts","-32.06","RUB","-32.06","Еда","Продукты","Конфеты","Покупка леденцов Halls в Яндекс.Лавке"
|
||||
"2025-01-19","2025-01-21","Сметана Ростагроэкспорт 15%, 250 г","Заказ в Яндекс.Еде №20250119-1549","","","by Zalina","Азбука вкуса","Moskva , RU ","raiffeisen+receipts","-73.0","RUB","-73.0","Еда","Продукты","Молочные продукты","Покупка сметаны в Азбуке Вкуса"
|
||||
"2025-01-19","2025-01-21","Сырники без сахара запеченные, 140г","Заказ в Яндекс.Еде №20250119-1549","","","by Zalina","Азбука вкуса","Moskva , RU ","raiffeisen+receipts","-214.0","RUB","-214.0","Еда","Продукты","Сырники","Покупка сырников в Азбуке Вкуса"
|
||||
"2025-01-24","2025-01-27","Сервисный сбор","Заказ в Яндекс.Еде №20250124-1910","","","by Zalina","YANDEX.EDA","MOSCOW , RU ","raiffeisen+receipts","-99.0","RUB","-99.0","Логистика","Доставка","Сервисный сбор","Сервисный сбор за доставку Яндекс.Еды"
|
||||
"2025-01-21","2025-01-24","Доставка","Заказ из Яндекс.Лавки №250121-096-7600","","","by Zalina","YANDEX.LAVKA","Moskva , RU ","raiffeisen+receipts","-159.0","RUB","-159.0","Логистика","Доставка","Услуга доставки","Доставка из Яндекс.Лавки"
|
||||
"2025-01-05","2025-01-05","Батон Нарезной Черёмушки","Заказ из Яндекс.Лавки №250105-151-0017","","","by Zalina","YANDEX.LAVKA","","yandex+receipts","-48.06","RUB","-48.06","Еда","Продукты","Хлеб","Покупка батона в Яндекс.Лавке"
|
||||
"2025-01-25","2025-01-28","Доставка","Заказ из Яндекс.Лавки №250125-018-3079","","","by Zalina","YANDEX.LAVKA","Moskva , RU ","raiffeisen+receipts","-119.0","RUB","-119.0","Логистика","Доставка","Услуга доставки","Доставка из Яндекс.Лавки"
|
||||
"2025-01-21","2025-01-24","Лук репчатый","Заказ из Яндекс.Лавки №250121-096-7600","","","by Zalina","YANDEX.LAVKA","Moskva , RU ","raiffeisen+receipts","-65.0","RUB","-65.0","Еда","Продукты","Овощи","Покупка лука в Яндекс.Лавке"
|
||||
"2025-01-08","2025-01-11","Фирменный бургер (Medium)","Заказ в Яндекс.Еде №20250108-1911","","","by Zalina","Black Market","MOSCOW , RU ","raiffeisen+receipts","-1980.0","RUB","-1980.0","Еда","Готовая","Бургеры","Бургер из Black Market через Яндекс.Еда"
|
||||
"2025-01-19","2025-01-21","Сырники жареные Уже Готово, 4 шт в наборе","Заказ в Яндекс.Еде №20250119-1549","","","by Zalina","Азбука вкуса","Moskva , RU ","raiffeisen+receipts","-644.0","RUB","-644.0","Еда","Продукты","Сырники","Покупка жареных сырников в Азбуке Вкуса"
|
||||
"2025-01-05","2025-01-05","Яйцо СО","Заказ из Яндекс.Лавки №250105-151-0017","","","by Zalina","YANDEX.LAVKA","","yandex+receipts","-128.06","RUB","-128.06","Еда","Продукты","","Яйца из Яндекс.Лавки"
|
||||
"2025-01-05","2025-01-05","Половина цыплёнка Из Лавки","Заказ из Яндекс.Лавки №250105-151-0017","","","by Zalina","YANDEX.LAVKA","","yandex+receipts","-856.12","RUB","-856.12","Еда","Продукты","Птица","Покупка цыплёнка в Яндекс.Лавке"
|
||||
"2025-01-05","2025-01-05","Упаковка заказа","Заказ из Яндекс.Лавки №250105-151-0017","","","by Zalina","YANDEX.LAVKA","","yandex+receipts","-12.0","RUB","-12.0","Логистика","Доставка","Упаковка заказа","Упаковка заказа из Яндекс.Лавки"
|
||||
"2025-01-21","2025-01-24","Батон Нарезной Черёмушки","Заказ из Яндекс.Лавки №250121-096-7600","","","by Zalina","YANDEX.LAVKA","Moskva , RU ","raiffeisen+receipts","-69.0","RUB","-69.0","Еда","Продукты","Хлеб","Покупка батона в Яндекс.Лавке"
|
||||
"2025-01-21","2025-01-24","Петрушка","Заказ из Яндекс.Лавки №250121-096-7600","","","by Zalina","YANDEX.LAVKA","Moskva , RU ","raiffeisen+receipts","-75.0","RUB","-75.0","Еда","Продукты","Овощи","Покупка петрушки в Яндекс.Лавке"
|
||||
"2025-01-21","2025-01-24","Упаковка заказа","Заказ из Яндекс.Лавки №250121-096-7600","","","by Zalina","YANDEX.LAVKA","Moskva , RU ","raiffeisen+receipts","-12.0","RUB","-12.0","Логистика","Доставка","Упаковка заказа","Упаковка заказа из Яндекс.Лавки"
|
||||
"2025-01-25","2025-01-28","Батон Нарезной Черёмушки","Заказ из Яндекс.Лавки №250125-018-3079","","","by Zalina","YANDEX.LAVKA","Moskva , RU ","raiffeisen+receipts","-69.0","RUB","-69.0","Еда","Продукты","Хлеб","Покупка батона в Яндекс.Лавке"
|
||||
"2025-01-19","2025-01-21","Сервисный сбор","Заказ в Яндекс.Еде №20250119-1549","","","by Zalina","YANDEX.EDA","Moskva , RU ","raiffeisen+receipts","-66.0","RUB","-66.0","Логистика","Доставка","Сервисный сбор","Сервисный сбор за доставку Яндекс.Еда"
|
||||
"2025-01-25","2025-01-28","Кабачки","Заказ из Яндекс.Лавки №250125-018-3079","","","by Zalina","YANDEX.LAVKA","Moskva , RU ","raiffeisen+receipts","-159.0","RUB","-159.0","Еда","Продукты","Овощи","Покупка кабачков в Яндекс.Лавке"
|
||||
"2025-01-21","2025-01-24","Морковь мытая","Заказ из Яндекс.Лавки №250121-096-7600","","","by Zalina","YANDEX.LAVKA","Moskva , RU ","raiffeisen+receipts","-55.0","RUB","-55.0","Еда","Продукты","Овощи","Покупка моркови в Яндекс.Лавке"
|
||||
"2025-01-25","2025-01-28","Грудка с булгуром и соусом Из Лавки","Заказ из Яндекс.Лавки №250125-018-3079","","","by Zalina","YANDEX.LAVKA","Moskva , RU ","raiffeisen+receipts","-369.0","RUB","-369.0","Еда","Продукты","","Грудка с булгуром из Яндекс.Лавки"
|
||||
"2025-01-14","2025-01-17","Конфеты Бабаевская белочка Бабаевский","Заказ из Яндекс.Лавки №250114-058-3353","","","by Zalina","YANDEX.LAVKA","Moskva , RU ","raiffeisen+receipts","-293.0","RUB","-293.0","Еда","Продукты","Конфеты","Покупка конфет в Яндекс.Лавке"
|
||||
"2025-01-05","2025-01-05","Прокладки Либресс Ультра Нормал","Заказ из Яндекс.Лавки №250105-151-0017","","","by Zalina","YANDEX.LAVKA","","yandex+receipts","-124.06","RUB","-124.06","Расходники","Санитарное","","Покупка прокладок в Яндекс.Лавке"
|
||||
"2025-01-14","2025-01-17","Чай чёрный Golden Ceylon Greenfield","Заказ из Яндекс.Лавки №250114-058-3353","","","by Zalina","YANDEX.LAVKA","Moskva , RU ","raiffeisen+receipts","-437.0","RUB","-437.0","Еда","Продукты","Напитки","Чай из Яндекс.Лавки"
|
||||
"2025-01-14","2025-01-17","Яйцо СО","Заказ из Яндекс.Лавки №250114-058-3353","","","by Zalina","YANDEX.LAVKA","Moskva , RU ","raiffeisen+receipts","-149.0","RUB","-149.0","Еда","Продукты","Яйца","Покупка яиц в Яндекс.Лавке"
|
||||
"2025-01-05","2025-01-05","Прокладки Либресс Ультра ночная защита","Заказ из Яндекс.Лавки №250105-151-0017","","","by Zalina","YANDEX.LAVKA","","yandex+receipts","-124.06","RUB","-124.06","Расходники","Санитарное","","Покупка прокладок в Яндекс.Лавке"
|
||||
"2025-01-08","2025-01-11","Сервисный сбор","Заказ в Яндекс.Еде №20250108-1911","","","by Zalina","YANDEX.EDA","MOSCOW , RU ","raiffeisen+receipts","-99.0","RUB","-99.0","Логистика","Доставка","Сервисный сбор","Сервисный сбор за доставку Яндекс.Еды"
|
||||
"2025-01-05","2025-01-05","Конфеты Осенний вальс Рот Фронт","Заказ из Яндекс.Лавки №250105-151-0017","","","by Zalina","YANDEX.LAVKA","","yandex+receipts","-248.07","RUB","-248.07","Еда","Продукты","Конфеты","Покупка конфет в Яндекс.Лавке"
|
||||
"2025-01-25","2025-01-28","Цыплёнок в пряном маринаде","Заказ из Яндекс.Лавки №250125-018-3079","","","by Zalina","YANDEX.LAVKA","Moskva , RU ","raiffeisen+receipts","-479.0","RUB","-479.0","Еда","Продукты","Птица","Цыплёнок в маринаде из Яндекс.Лавки"
|
||||
"2025-01-11","2025-01-11","Цыплёнок в пряном маринаде","Заказ из Яндекс.Лавки №250111-174-7476","","","by Zalina","YANDEX.LAVKA","","yandex+receipts","-465.0","RUB","-465.0","Еда","Продукты","Птица","Покупка цыплёнка в Яндекс.Лавке"
|
||||
"2025-01-21","2025-01-24","Филе бедра цыплёнка-бройлера Троекурово","Заказ из Яндекс.Лавки №250121-096-7600","","","by Zalina","YANDEX.LAVKA","Moskva , RU ","raiffeisen+receipts","-389.0","RUB","-389.0","Еда","Продукты","Птица","Покупка курицы в Яндекс.Лавке"
|
||||
"2025-01-05","2025-01-05","Хлопья овсяные Геркулес Русский продукт","Заказ из Яндекс.Лавки №250105-151-0017","","","by Zalina","YANDEX.LAVKA","","yandex+receipts","-78.06","RUB","-78.06","Еда","Продукты","Каши","Овсяные хлопья Геркулес из Яндекс.Лавки"
|
||||
"2025-01-21","2025-01-24","Хурма Бычье сердце","Заказ из Яндекс.Лавки №250121-096-7600","","","by Zalina","YANDEX.LAVKA","Moskva , RU ","raiffeisen+receipts","-199.0","RUB","-199.0","Еда","Продукты","Фрукты","Покупка хурмы в Яндекс.Лавке"
|
||||
"2025-01-26","2025-01-28","Соус томатный Basilico Barilla базилик","Заказ из Яндекс.Лавки №250126-093-2352","","","by Zalina","YANDEX.LAVKA","Moskva , RU ","raiffeisen+receipts","-399.0","RUB","-399.0","Еда","Продукты","Упаковка","Покупка соуса в Яндекс.Лавке"
|
||||
"2025-01-05","2025-01-05","Огурцы короткоплодные","Заказ из Яндекс.Лавки №250105-151-0017","","","by Zalina","YANDEX.LAVKA","","yandex+receipts","-215.06","RUB","-215.06","Еда","Продукты","Овощи","Покупка огурцов в Яндекс.Лавке"
|
||||
"2025-01-05","2025-01-05","Набор для глинтвейна Из Лавки","Заказ из Яндекс.Лавки №250105-151-0017","","","by Zalina","YANDEX.LAVKA","","yandex+receipts","-98.07","RUB","-98.07","Еда","Продукты","Напитки","Набор для глинтвейна из Яндекс.Лавки"
|
||||
"2025-01-14","2025-01-17","Колбаса Докторская Егорьевская","Заказ из Яндекс.Лавки №250114-058-3353","","","by Zalina","YANDEX.LAVKA","Moskva , RU ","raiffeisen+receipts","-319.0","RUB","-319.0","Еда","Продукты","Мясо","Покупка колбасы в Яндекс.Лавке"
|
||||
"2025-01-05","2025-01-05","Набор Пряничный домик Из Лавки большой","Заказ из Яндекс.Лавки №250105-151-0017","","","by Zalina","YANDEX.LAVKA","","yandex+receipts","-678.07","RUB","-678.07","Еда","Продукты","Десерты и сладости","Пряничный домик из Яндекс.Лавки"
|
||||
"2025-01-11","2025-01-11","Лосось с пастой в соусе Из Лавки","Заказ из Яндекс.Лавки №250111-174-7476","","","by Zalina","YANDEX.LAVKA","","yandex+receipts","-397.0","RUB","-397.0","Еда","Продукты","Рыба","Лосось с пастой в Яндекс.Лавке"
|
||||
"2025-01-05","2025-01-05","Сахар-рафинад Русский сахар","Заказ из Яндекс.Лавки №250105-151-0017","","","by Zalina","YANDEX.LAVKA","","yandex+receipts","-236.12","RUB","-236.12","Еда","Продукты","","Покупка сахара в Яндекс.Лавке"
|
||||
"2025-01-14","2025-01-17","Вензель с вишней","Заказ из Яндекс.Лавки №250114-058-3353","","","by Zalina","YANDEX.LAVKA","Moskva , RU ","raiffeisen+receipts","-175.0","RUB","-175.0","Еда","Продукты","Десерты и сладости","Вензель с вишней из Яндекс.Лавки"
|
||||
"2025-01-29","2025-01-31","Доставка","Заказ из Яндекс.Лавки №250129-055-7883","","","by Zalina","YANDEX.LAVKA","Moskva , RU ","raiffeisen+receipts","-159.0","RUB","-159.0","Логистика","Доставка","Услуга доставки","Доставка из Яндекс.Лавки"
|
||||
"2025-01-11","2025-01-11","Пирожное кейк-попс Из Лавки лесные ягоды","Заказ из Яндекс.Лавки №250111-174-7476","","","by Zalina","YANDEX.LAVKA","","yandex+receipts","-115.0","RUB","-115.0","Еда","Продукты","Десерты и сладости","Пирожное кейк-попс из Яндекс.Лавки"
|
||||
"2025-01-05","2025-01-05","Изюм Флейм Джамбо Из Лавки","Заказ из Яндекс.Лавки №250105-151-0017","","","by Zalina","YANDEX.LAVKA","","yandex+receipts","-128.07","RUB","-128.07","Еда","Продукты","Фрукты","Покупка изюма в Яндекс.Лавке"
|
||||
"2025-01-14","2025-01-17","Картофель красный","Заказ из Яндекс.Лавки №250114-058-3353","","","by Zalina","YANDEX.LAVKA","Moskva , RU ","raiffeisen+receipts","-99.0","RUB","-99.0","Еда","Продукты","Овощи","Покупка картофеля в Яндекс.Лавке"
|
||||
"2025-01-14","2025-01-17","Кольцо заварное с крем-чизом","Заказ из Яндекс.Лавки №250114-058-3353","","","by Zalina","YANDEX.LAVKA","Moskva , RU ","raiffeisen+receipts","-169.0","RUB","-169.0","Еда","Продукты","Десерты и сладости","Заварное кольцо в Яндекс.Лавке"
|
||||
"2025-01-14","2025-01-17","Конфеты Мишка косолапый Красный Октябрь","Заказ из Яндекс.Лавки №250114-058-3353","","","by Zalina","YANDEX.LAVKA","Moskva , RU ","raiffeisen+receipts","-265.0","RUB","-265.0","Еда","Продукты","Десерты и сладости","Покупка конфет в Яндекс.Лавке"
|
||||
"2025-01-26","2025-01-28","Черри Эко-культура круглые красные","Заказ из Яндекс.Лавки №250126-093-2352","","","by Zalina","YANDEX.LAVKA","Moskva , RU ","raiffeisen+receipts","-299.0","RUB","-299.0","Еда","Продукты","Овощи","Покупка черри в Яндекс.Лавке"
|
||||
"2025-01-26","2025-01-28","Макароны Fusilli Pasteroni №125","Заказ из Яндекс.Лавки №250126-093-2352","","","by Zalina","YANDEX.LAVKA","Moskva , RU ","raiffeisen+receipts","-83.0","RUB","-83.0","Еда","Продукты","Макароны","Покупка макарон в Яндекс.Лавке"
|
||||
"2025-01-14","2025-01-17","Доставка","Заказ из Яндекс.Лавки №250114-058-3353","","","by Zalina","YANDEX.LAVKA","Moskva , RU ","raiffeisen+receipts","-119.0","RUB","-119.0","Логистика","Доставка","Услуга доставки","Доставка из Яндекс.Лавки"
|
||||
"2025-01-11","2025-01-11","Пюре картофельное Из Лавки","Заказ из Яндекс.Лавки №250111-174-7476","","","by Zalina","YANDEX.LAVKA","","yandex+receipts","-295.0","RUB","-295.0","Еда","Продукты","Овощи","Mashed potatoes from Yandex.Lavka"
|
||||
"2025-01-26","2025-01-28","Перчатки хозяйственные Aviora М","Заказ из Яндекс.Лавки №250126-093-2352","","","by Zalina","YANDEX.LAVKA","Moskva , RU ","raiffeisen+receipts","-65.0","RUB","-65.0","Расходники","Прочее","","Перчатки хозяйственные из Яндекс.Лавки"
|
||||
"2025-01-11","2025-01-11","Морс черничный Из Лавки","Заказ из Яндекс.Лавки №250111-174-7476","","","by Zalina","YANDEX.LAVKA","","yandex+receipts","-186.0","RUB","-186.0","Еда","Продукты","Напитки","Покупка морса в Яндекс.Лавке"
|
||||
"2025-01-26","2025-01-28","Упаковка заказа","Заказ из Яндекс.Лавки №250126-093-2352","","","by Zalina","YANDEX.LAVKA","Moskva , RU ","raiffeisen+receipts","-12.0","RUB","-12.0","Логистика","Доставка","Упаковка заказа","Упаковка заказа из Яндекс.Лавки"
|
||||
"2025-01-11","2025-01-11","Эклер классический Из Лавки","Заказ из Яндекс.Лавки №250111-174-7476","","","by Zalina","YANDEX.LAVKA","","yandex+receipts","-115.0","RUB","-115.0","Еда","Продукты","Десерты и сладости","Покупка эклера в Яндекс.Лавке"
|
||||
"2025-01-11","2025-01-11","Мандарины мини","Заказ из Яндекс.Лавки №250111-174-7476","","","by Zalina","YANDEX.LAVKA","","yandex+receipts","-285.0","RUB","-285.0","Еда","Продукты","Фрукты","Покупка мандаринов в Яндекс.Лавке"
|
||||
"2025-01-29","2025-01-31","Изюм Флейм Джамбо Из Лавки","Заказ из Яндекс.Лавки №250129-055-7883","","","by Zalina","YANDEX.LAVKA","Moskva , RU ","raiffeisen+receipts","-149.0","RUB","-149.0","Еда","Продукты","Фрукты","Покупка изюма в Яндекс.Лавке"
|
||||
"2025-01-14","2025-01-17","Упаковка заказа","Заказ из Яндекс.Лавки №250114-058-3353","","","by Zalina","YANDEX.LAVKA","Moskva , RU ","raiffeisen+receipts","-12.0","RUB","-12.0","Логистика","Доставка","Упаковка заказа","Упаковка заказа из Яндекс.Лавки"
|
||||
"2025-01-12","2025-01-12","Соус томатный Arrabbiata Barilla с чили","Заказ из Яндекс.Лавки №250112-046-3849","","","by Zalina","YANDEX.LAVKA","","yandex+receipts","-293.0","RUB","-293.0","Еда","Продукты","Соусы","Соус из Яндекс.Лавки"
|
||||
"2025-01-12","2025-01-12","Леденцы Halls мёд-лимон","Заказ из Яндекс.Лавки №250112-046-3849","","","by Zalina","YANDEX.LAVKA","","yandex+receipts","-44.0","RUB","-44.0","Еда","Продукты","Конфеты","Halls lozenges from Yandex.Lavka"
|
||||
"2025-01-26","2025-01-28","Яйцо СО Из Лавки","Заказ из Яндекс.Лавки №250126-093-2352","","","by Zalina","YANDEX.LAVKA","Moskva , RU ","raiffeisen+receipts","-159.0","RUB","-159.0","Еда","Продукты","Яйца","Покупка яиц в Яндекс.Лавке"
|
||||
"2025-01-26","2025-01-28","Конфеты Осенний вальс Рот Фронт фундук","Заказ из Яндекс.Лавки №250126-093-2352","","","by Zalina","YANDEX.LAVKA","Moskva , RU ","raiffeisen+receipts","-254.0","RUB","-254.0","Еда","Продукты","Конфеты","Покупка конфет в Яндекс.Лавке"
|
||||
"2025-01-26","2025-01-28","Конфеты Бабаевская белочка Бабаевский","Заказ из Яндекс.Лавки №250126-093-2352","","","by Zalina","YANDEX.LAVKA","Moskva , RU ","raiffeisen+receipts","-251.0","RUB","-251.0","Еда","Продукты","Конфеты","Покупка конфет в Яндекс.Лавке"
|
||||
"2025-01-08","2025-01-10","Доставка","Заказ из Яндекс.Лавки №250108-168-4040","","","by Zalina","YANDEX.LAVKA","Moskva , RU ","raiffeisen+receipts","-159.0","RUB","-159.0","Логистика","Доставка","Услуга доставки","Доставка из Яндекс.Лавки"
|
||||
"2025-01-16","2025-01-20","Мороженое Из Лавки глинтвейн","Заказ из Яндекс.Лавки №250116-130-9352","","","by Zalina","YANDEX.LAVKA","Moskva , RU ","raiffeisen+receipts","-129.0","RUB","-129.0","Еда","Продукты","Десерты и сладости","Мороженое и глинтвейн из Яндекс.Лавки"
|
||||
"2025-01-26","2025-01-28","Фарш из телятины Из Лавки","Заказ из Яндекс.Лавки №250126-093-2352","","","by Zalina","YANDEX.LAVKA","Moskva , RU ","raiffeisen+receipts","-379.0","RUB","-379.0","Еда","Продукты","Мясо","Покупка фарша из телятины в Яндекс.Лавке"
|
||||
"2025-01-11","2025-01-11","Доставка","Заказ из Яндекс.Лавки №250111-174-7476","","","by Zalina","YANDEX.LAVKA","","yandex+receipts","-119.0","RUB","-119.0","Логистика","Доставка","Услуга доставки","Доставка из Яндекс.Лавки"
|
||||
"2025-01-29","2025-01-31","Виноград Кишмиш розовый без косточек","Заказ из Яндекс.Лавки №250129-055-7883","","","by Zalina","YANDEX.LAVKA","Moskva , RU ","raiffeisen+receipts","-299.0","RUB","-299.0","Еда","Продукты","Фрукты","Покупка винограда в Яндекс.Лавке"
|
||||
"2025-01-29","2025-01-31","Мини-кексы ванильные Из Лавки","Заказ из Яндекс.Лавки №250129-055-7883","","","by Zalina","YANDEX.LAVKA","Moskva , RU ","raiffeisen+receipts","-169.0","RUB","-169.0","Еда","Продукты","Десерты и сладости","Мини-кексы ванильные из Яндекс.Лавки"
|
||||
"2025-01-16","2025-01-20","Пирожное Вупи пай с джемом Из Лавки","Заказ из Яндекс.Лавки №250116-130-9352","","","by Zalina","YANDEX.LAVKA","Moskva , RU ","raiffeisen+receipts","-219.0","RUB","-219.0","Еда","Продукты","Десерты и сладости","Пирожное Вупи пай из Яндекс.Лавки"
|
||||
"2025-01-16","2025-01-20","Грудка с булгуром и соусом Из Лавки","Заказ из Яндекс.Лавки №250116-130-9352","","","by Zalina","YANDEX.LAVKA","Moskva , RU ","raiffeisen+receipts","-369.0","RUB","-369.0","Еда","Продукты","","Грудка с булгуром из Яндекс.Лавки"
|
||||
"2025-01-12","2025-01-12","Фарш из телятины Из Лавки","Заказ из Яндекс.Лавки №250112-046-3849","","","by Zalina","YANDEX.LAVKA","","yandex+receipts","-369.0","RUB","-369.0","Еда","Продукты","Мясо","Фарш из телятины в Яндекс.Лавке"
|
||||
"2025-01-16","2025-01-20","Огурцы Корнишон","Заказ из Яндекс.Лавки №250116-130-9352","","","by Zalina","YANDEX.LAVKA","Moskva , RU ","raiffeisen+receipts","-229.0","RUB","-229.0","Еда","Продукты","Овощи","Покупка огурцов в Яндекс.Лавке"
|
||||
"2025-01-26","2025-01-28","Лимонад Из Лавки с соком грейпфрута","Заказ из Яндекс.Лавки №250126-093-2352","","","by Zalina","YANDEX.LAVKA","Moskva , RU ","raiffeisen+receipts","-149.0","RUB","-149.0","Еда","Продукты","Напитки","Lemonade from Yandex.Lavka"
|
||||
"2025-01-29","2025-01-31","Кекс Нижегородский хлеб","Заказ из Яндекс.Лавки №250129-055-7883","","","by Zalina","YANDEX.LAVKA","Moskva , RU ","raiffeisen+receipts","-398.0","RUB","-398.0","Еда","Продукты","Десерты и сладости","Покупка кекса в Яндекс.Лавке"
|
||||
"2025-01-01","2025-01-04","Цыплёнок в пряном маринаде","Заказ из Яндекс.Лавки №250101-078-9877","","","by Zalina","YANDEX.LAVKA","Moskva , RU ","raiffeisen+receipts","-359.0","RUB","-359.0","Еда","Продукты","Птица","Цыплёнок в маринаде из Яндекс.Лавки"
|
||||
"2025-01-26","2025-01-28","Конфеты Мишка косолапый Красный Октябрь","Заказ из Яндекс.Лавки №250126-093-2352","","","by Zalina","YANDEX.LAVKA","Moskva , RU ","raiffeisen+receipts","-265.0","RUB","-265.0","Еда","Продукты","Конфеты","Покупка конфет в Яндекс.Лавке"
|
||||
"2025-01-29","2025-01-31","Улитка Из Лавки изюм-заварной крем","Заказ из Яндекс.Лавки №250129-055-7883","","","by Zalina","YANDEX.LAVKA","Moskva , RU ","raiffeisen+receipts","-298.0","RUB","-298.0","Еда","Продукты","Десерты и сладости","Покупка изюма-заварного крема в Яндекс.Лавке"
|
||||
"2025-01-12","2025-01-12","Доставка","Заказ из Яндекс.Лавки №250112-046-3849","","","by Zalina","YANDEX.LAVKA","","yandex+receipts","-159.0","RUB","-159.0","Логистика","Доставка","Услуга доставки","Доставка из Яндекс.Лавки"
|
||||
"2025-01-11","2025-01-11","Упаковка заказа","Заказ из Яндекс.Лавки №250111-174-7476","","","by Zalina","YANDEX.LAVKA","","yandex+receipts","-12.0","RUB","-12.0","Логистика","Доставка","Упаковка заказа","Упаковка заказа из Яндекс.Лавки"
|
||||
"2025-01-08","2025-01-10","Варенье малиновое Из Лавки","Заказ из Яндекс.Лавки №250108-168-4040","","","by Zalina","YANDEX.LAVKA","Moskva , RU ","raiffeisen+receipts","-249.0","RUB","-249.0","Еда","Продукты","Варенье","Покупка малинового варенья в Яндекс.Лавке"
|
||||
"2025-01-16","2025-01-20","Доставка","Заказ из Яндекс.Лавки №250116-130-9352","","","by Zalina","YANDEX.LAVKA","Moskva , RU ","raiffeisen+receipts","-119.0","RUB","-119.0","Логистика","Доставка","Услуга доставки","Доставка из Яндекс.Лавки"
|
||||
"2025-01-26","2025-01-28","Лимонад Из Лавки с соком грейпфрута","Заказ из Яндекс.Лавки №250126-093-2352","","","by Zalina","YANDEX.LAVKA","Moskva , RU ","raiffeisen+receipts","-149.0","RUB","-149.0","Еда","Продукты","Напитки","Lemonade from Yandex.Lavka"
|
||||
"2025-01-01","2025-01-04","Огурцы Корнишон","Заказ из Яндекс.Лавки №250101-078-9877","","","by Zalina","YANDEX.LAVKA","Moskva , RU ","raiffeisen+receipts","-299.0","RUB","-299.0","Еда","Продукты","Овощи","Покупка огурцов в Яндекс.Лавке"
|
||||
"2025-01-08","2025-01-10","Авокадо Хасс Артфрут","Заказ из Яндекс.Лавки №250108-168-4040","","","by Zalina","YANDEX.LAVKA","Moskva , RU ","raiffeisen+receipts","-615.0","RUB","-615.0","Еда","Продукты","Овощи","Покупка авокадо в Яндекс.Лавке"
|
||||
"2025-01-16","2025-01-20","Морковь мытая","Заказ из Яндекс.Лавки №250116-130-9352","","","by Zalina","YANDEX.LAVKA","Moskva , RU ","raiffeisen+receipts","-55.0","RUB","-55.0","Еда","Продукты","Овощи","Покупка моркови в Яндекс.Лавке"
|
||||
"2025-01-12","2025-01-12","Макароны Fusilli Pasteroni №125","Заказ из Яндекс.Лавки №250112-046-3849","","","by Zalina","YANDEX.LAVKA","","yandex+receipts","-75.0","RUB","-75.0","Еда","Продукты","Макароны","Покупка макарон в Яндекс.Лавке"
|
||||
"2025-01-12","2025-01-12","Упаковка заказа","Заказ из Яндекс.Лавки №250112-046-3849","","","by Zalina","YANDEX.LAVKA","","yandex+receipts","-12.0","RUB","-12.0","Логистика","Доставка","Упаковка заказа","Упаковка заказа из Яндекс.Лавки"
|
||||
"2025-01-01","2025-01-04","Пюре картофельное Из Лавки","Заказ из Яндекс.Лавки №250101-078-9877","","","by Zalina","YANDEX.LAVKA","Moskva , RU ","raiffeisen+receipts","-231.0","RUB","-231.0","Еда","Продукты","Овощи","Покупка картофельного пюре в Яндекс.Лавке"
|
||||
"2025-01-12","2025-01-12","Виноград Мерседес","Заказ из Яндекс.Лавки №250112-046-3849","","","by Zalina","YANDEX.LAVKA","","yandex+receipts","-289.0","RUB","-289.0","Еда","Продукты","Фрукты","Покупка винограда в Яндекс.Лавке"
|
||||
"2025-01-19","2025-01-21","Огурцы короткоплодные","Заказ из Яндекс.Лавки №250119-020-3606","","","by Zalina","YANDEX.LAVKA","Moskva , RU ","raiffeisen+receipts","-239.0","RUB","-239.0","Еда","Продукты","Овощи","Покупка огурцов в Яндекс.Лавке"
|
||||
"2025-01-19","2025-01-21","Перец чёрный горошек Kotanyi","Заказ из Яндекс.Лавки №250119-020-3606","","","by Zalina","YANDEX.LAVKA","Moskva , RU ","raiffeisen+receipts","-89.0","RUB","-89.0","Еда","Продукты","Специи","Покупка перца в Яндекс.Лавке"
|
||||
"2025-01-12","2025-01-12","Батон Нарезной Черёмушки","Заказ из Яндекс.Лавки №250112-046-3849","","","by Zalina","YANDEX.LAVKA","","yandex+receipts","-59.0","RUB","-59.0","Еда","Продукты","Хлеб","Покупка батона в Яндекс.Лавке"
|
||||
"2025-01-01","2025-01-04","Пломбир Из Лавки конфеты ванильные","Заказ из Яндекс.Лавки №250101-078-9877","","","by Zalina","YANDEX.LAVKA","Moskva , RU ","raiffeisen+receipts","-179.0","RUB","-179.0","Еда","Продукты","Десерты и сладости","Покупка пломбира и конфет в Лавке"
|
||||
"2025-01-24","2025-01-27","Доставка","Заказ из Яндекс.Лавки №250124-031-0962","","","by Zalina","YANDEX.LAVKA","Moskva , RU ","raiffeisen+receipts","-119.0","RUB","-119.0","Логистика","Доставка","Услуга доставки","Доставка из Яндекс.Лавки"
|
||||
"2025-01-19","2025-01-21","Петрушка","Заказ из Яндекс.Лавки №250119-020-3606","","","by Zalina","YANDEX.LAVKA","Moskva , RU ","raiffeisen+receipts","-55.0","RUB","-55.0","Еда","Продукты","Овощи","Покупка петрушки в Яндекс.Лавке"
|
||||
"2025-01-12","2025-01-12","Сыр тёртый Пармезан Cheese Gallery","Заказ из Яндекс.Лавки №250112-046-3849","","","by Zalina","YANDEX.LAVKA","","yandex+receipts","-180.0","RUB","-180.0","Еда","Продукты","Молочные продукты","Сыр из Яндекс.Лавки"
|
||||
"2025-01-24","2025-01-27","Молоко безлактозное 1,8% Parmalat","Заказ из Яндекс.Лавки №250124-031-0962","","","by Zalina","YANDEX.LAVKA","Moskva , RU ","raiffeisen+receipts","-100.67","RUB","-100.67","Еда","Продукты","Молоко","Покупка безлактозного молока в Яндекс.Лавке"
|
||||
"2025-01-01","2025-01-04","Доставка","Заказ из Яндекс.Лавки №250101-078-9877","","","by Zalina","YANDEX.LAVKA","Moskva , RU ","raiffeisen+receipts","-159.0","RUB","-159.0","Логистика","Доставка","Услуга доставки","Доставка из Яндекс.Лавки"
|
||||
"2025-01-16","2025-01-20","Филе бедра цыплёнка-бройлера Троекурово","Заказ из Яндекс.Лавки №250116-130-9352","","","by Zalina","YANDEX.LAVKA","Moskva , RU ","raiffeisen+receipts","-389.0","RUB","-389.0","Еда","Продукты","Птица","Покупка курицы в Яндекс.Лавке"
|
||||
"2025-01-19","2025-01-21","Хлеб пшеничный American Sandwich Harry's","Заказ из Яндекс.Лавки №250119-020-3606","","","by Zalina","YANDEX.LAVKA","Moskva , RU ","raiffeisen+receipts","-149.0","RUB","-149.0","Еда","Продукты","Хлеб","Покупка хлеба в Яндекс.Лавке"
|
||||
"2025-01-19","2025-01-21","Картофель отборный","Заказ из Яндекс.Лавки №250119-020-3606","","","by Zalina","YANDEX.LAVKA","Moskva , RU ","raiffeisen+receipts","-239.0","RUB","-239.0","Еда","Продукты","Овощи","Покупка картофеля в Яндекс.Лавке"
|
||||
"2025-01-19","2025-01-21","Крахмал картофельный Haas","Заказ из Яндекс.Лавки №250119-020-3606","","","by Zalina","YANDEX.LAVKA","Moskva , RU ","raiffeisen+receipts","-118.0","RUB","-118.0","Еда","Продукты","Упаковка","Покупка крахмала в Яндекс.Лавке"
|
||||
"2025-01-01","2025-01-04","Маффин с шоколадной начинкой Из Лавки","Заказ из Яндекс.Лавки №250101-078-9877","","","by Zalina","YANDEX.LAVKA","Moskva , RU ","raiffeisen+receipts","-119.0","RUB","-119.0","Еда","Продукты","Десерты и сладости","Маффин из Яндекс.Лавки"
|
||||
"2025-01-29","2025-01-31","Упаковка заказа","Заказ из Яндекс.Лавки №250129-055-7883","","","by Zalina","YANDEX.LAVKA","Moskva , RU ","raiffeisen+receipts","-12.0","RUB","-12.0","Логистика","Доставка","Упаковка заказа","Упаковка заказа из Яндекс.Лавки"
|
||||
"2025-01-24","2025-01-27","Молоко безлактозное 1,8% Parmalat","Заказ из Яндекс.Лавки №250124-031-0962","","","by Zalina","YANDEX.LAVKA","Moskva , RU ","raiffeisen+receipts","-100.66","RUB","-100.66","Еда","Продукты","Молоко","Покупка безлактозного молока в Яндекс.Лавке"
|
||||
"2025-01-08","2025-01-10","Упаковка заказа","Заказ из Яндекс.Лавки №250108-168-4040","","","by Zalina","YANDEX.LAVKA","Moskva , RU ","raiffeisen+receipts","-12.0","RUB","-12.0","Логистика","Доставка","Упаковка заказа","Упаковка заказа из Яндекс.Лавки"
|
||||
"2025-01-01","2025-01-04","Лимон и имбирь протёртые Из Лавки","Заказ из Яндекс.Лавки №250101-078-9877","","","by Zalina","YANDEX.LAVKA","Moskva , RU ","raiffeisen+receipts","-119.0","RUB","-119.0","Еда","Продукты","Овощи","Лимон и имбирь из Яндекс.Лавки"
|
||||
"2025-01-24","2025-01-27","Виноград Кишмиш розовый без косточек","Заказ из Яндекс.Лавки №250124-031-0962","","","by Zalina","YANDEX.LAVKA","Moskva , RU ","raiffeisen+receipts","-234.67","RUB","-234.67","Еда","Продукты","Фрукты","Покупка винограда в Яндекс.Лавке"
|
||||
"2025-01-31","2025-01-31","Бананы Просто Азбука вес (0.99)","Заказ в Яндекс.Еде №20250131-2352","","","by Anton","Азбука вкуса","","yandex+receipts+paired","-286.11","RUB","-286.11","Еда","Продукты","Фрукты","Покупка бананов в Азбуке Вкуса"
|
||||
"2025-01-19","2025-01-21","Тильзитер Из Лавки нарезка","Заказ из Яндекс.Лавки №250119-020-3606","","","by Zalina","YANDEX.LAVKA","Moskva , RU ","raiffeisen+receipts","-209.0","RUB","-209.0","Еда","Продукты","Молочные продукты","Тильзитер cheese from Yandex.Lavka"
|
||||
"2025-01-16","2025-01-20","Упаковка заказа","Заказ из Яндекс.Лавки №250116-130-9352","","","by Zalina","YANDEX.LAVKA","Moskva , RU ","raiffeisen+receipts","-12.0","RUB","-12.0","Логистика","Доставка","Упаковка заказа","Упаковка заказа из Яндекс.Лавки"
|
||||
"2025-01-31","2025-01-31","Салат оливье с мясом от бренд-шефа (3.08)","Заказ в Яндекс.Еде №20250131-2352","","","by Anton","Азбука вкуса","","yandex+receipts+paired","-520.52","RUB","-520.52","Еда","Готовая","Рестораны","Салат оливье из Яндекс.Еды"
|
||||
"2025-01-16","2025-01-20","Лук репчатый","Заказ из Яндекс.Лавки №250116-130-9352","","","by Zalina","YANDEX.LAVKA","Moskva , RU ","raiffeisen+receipts","-65.0","RUB","-65.0","Еда","Продукты","Овощи","Покупка лука в Яндекс.Лавке"
|
||||
"2025-01-31","2025-01-31","Нектар Вишня осветленный Я 0,97л","Заказ в Яндекс.Еде №20250131-2352","","","by Anton","Азбука вкуса","","yandex+receipts+paired","-494.0","RUB","-494.0","Еда","Продукты","Напитки","Покупка нектара в Азбуке Вкуса"
|
||||
"2025-01-24","2025-01-24","Нектар Rich Вишня 1л","Заказ в Яндекс.Еде №20250125-0016","","","by Anton","Дикси","","yandex+receipts+refunded","-708.0","RUB","-708.0","Еда","Продукты","Напитки","Покупка нектара Rich в Яндекс.Еде"
|
||||
"2025-01-24","2025-01-27","Упаковка заказа","Заказ из Яндекс.Лавки №250124-031-0962","","","by Zalina","YANDEX.LAVKA","Moskva , RU ","raiffeisen+receipts","-12.0","RUB","-12.0","Логистика","Доставка","Упаковка заказа","Упаковка заказа из Яндекс.Лавки"
|
||||
"2025-01-24","2025-01-27","Батон Нарезной Черёмушки","Заказ из Яндекс.Лавки №250124-031-0962","","","by Zalina","YANDEX.LAVKA","Moskva , RU ","raiffeisen+receipts","-4.66","RUB","-4.66","Еда","Продукты","Хлеб","Покупка батона в Яндекс.Лавке"
|
||||
"2025-01-19","2025-01-21","Фарш из телятины Из Лавки","Заказ из Яндекс.Лавки №250119-020-3606","","","by Zalina","YANDEX.LAVKA","Moskva , RU ","raiffeisen+receipts","-758.0","RUB","-758.0","Еда","Продукты","Мясо","Фарш из телятины в Яндекс.Лавке"
|
||||
"2025-01-24","2025-01-27","Сырники жареные Уже Готово, 4 шт в наборе","Заказ в Яндекс.Еде №20250124-1228","","","by Zalina","Азбука вкуса","Moskva , RU ","raiffeisen+receipts+paired","-644.0","RUB","-644.0","Еда","Продукты","Сырники","Покупка жареных сырников в Азбуке Вкуса"
|
||||
"2025-01-31","2025-01-31","Куриная бризоль с пастой пенне, Уже Готово 230г","Заказ в Яндекс.Еде №20250131-2352","","","by Anton","Азбука вкуса","","yandex+receipts+paired","-430.0","RUB","-430.0","Еда","Готовая","Рестораны","Куриная бризоль с пастой из Яндекс.Еды"
|
||||
"2025-01-31","2025-02-02","Сервисный сбор","Заказ в Яндекс.Еде №20250131-1812","","*5728","by Anton","YANDEX.EDA","","yandex+receipts","-99.0","RUB","-99.0","Логистика","Доставка","Сервисный сбор","Сервисный сбор за доставку Яндекс.Еды"
|
||||
"2025-01-24","2025-01-27","Мороженое йогуртовое «Лавка 100»","Заказ из Яндекс.Лавки №250124-031-0962","","","by Zalina","YANDEX.LAVKA","Moskva , RU ","raiffeisen+receipts","-334.67","RUB","-334.67","Еда","Продукты","Десерты и сладости","Мороженое йогуртовое из Яндекс.Лавки"
|
||||
"2025-01-01","2025-01-04","Упаковка заказа","Заказ из Яндекс.Лавки №250101-078-9877","","","by Zalina","YANDEX.LAVKA","Moskva , RU ","raiffeisen+receipts","-12.0","RUB","-12.0","Логистика","Доставка","Упаковка заказа","Упаковка заказа из Яндекс.Лавки"
|
||||
"2025-01-19","2025-01-21","Огурцы корнишоны маринованные Federici","Заказ из Яндекс.Лавки №250119-020-3606","","","by Zalina","YANDEX.LAVKA","Moskva , RU ","raiffeisen+receipts","-277.0","RUB","-277.0","Еда","Продукты","Овощи","Покупка маринованных огурцов в Яндекс.Лавке"
|
||||
"2025-01-24","2025-01-27","Огурцы короткоплодные","Заказ из Яндекс.Лавки №250124-031-0962","","","by Zalina","YANDEX.LAVKA","Moskva , RU ","raiffeisen+receipts","-174.66","RUB","-174.66","Еда","Продукты","Овощи","Покупка огурцов в Яндекс.Лавке"
|
||||
"2025-01-19","2025-01-21","Кабачки","Заказ из Яндекс.Лавки №250119-020-3606","","","by Zalina","YANDEX.LAVKA","Moskva , RU ","raiffeisen+receipts","-135.0","RUB","-135.0","Еда","Продукты","Овощи","Покупка кабачков в Яндекс.Лавке"
|
||||
"2025-01-24","2025-01-27","Средство дезинфицирующее для рук Из Лавки","Заказ из Яндекс.Лавки №250124-031-0962","","","by Zalina","YANDEX.LAVKA","Moskva , RU ","raiffeisen+receipts","-54.67","RUB","-54.67","Расходники","Санитарное","","Hand sanitizer from Yandex.Lavka"
|
||||
"2025-01-24","2025-01-27","Лимонад Из Лавки с соком грейпфрута","Заказ из Яндекс.Лавки №250124-031-0962","","","by Zalina","YANDEX.LAVKA","Moskva , RU ","raiffeisen+receipts","-84.67","RUB","-84.67","Еда","Продукты","Напитки","Лимонад из Яндекс.Лавки"
|
||||
"2025-01-19","2025-01-21","Упаковка заказа","Заказ из Яндекс.Лавки №250119-020-3606","","","by Zalina","YANDEX.LAVKA","Moskva , RU ","raiffeisen+receipts","-12.0","RUB","-12.0","Логистика","Доставка","Упаковка заказа","Упаковка заказа из Яндекс.Лавки"
|
||||
"2025-01-24","2025-01-27","Сервисный сбор","Заказ в Яндекс.Еде №20250124-1228","","","by Zalina","YANDEX.EDA","Moskva , RU ","raiffeisen+receipts+paired","-71.0","RUB","-71.0","Логистика","Доставка","Сервисный сбор","Сервисный сбор за доставку Яндекс.Еды"
|
||||
"2025-01-08","2025-01-10","Кекс Коломенский Мастер Пироговъ, с изюмом, 400 г","","","","","SAMOKAT.RU","SANKT-PETERBU, RU ","raiffeisen+receipts","-1206.0","RUB","-208.0","Еда","Продукты","Десерты и сладости","Покупка кекса в Самокате"
|
||||
"2025-01-19","2025-01-21","Опята маринованные Из Лавки","Заказ из Яндекс.Лавки №250119-020-3606","","","by Zalina","YANDEX.LAVKA","Moskva , RU ","raiffeisen+receipts","-205.0","RUB","-205.0","Еда","Продукты","Овощи","Маринованные опята из Яндекс.Лавки"
|
||||
"2025-01-24","2025-01-27","Лимонад Из Лавки с соком грейпфрута","Заказ из Яндекс.Лавки №250124-031-0962","","","by Zalina","YANDEX.LAVKA","Moskva , RU ","raiffeisen+receipts","-84.67","RUB","-84.67","Еда","Продукты","Напитки","Лимонад из Яндекс.Лавки"
|
||||
"2025-01-06","2025-01-08","Хлеб Самокат тартин, пшенично-ржаной, половинка, нарезка, 300 г","","","","","SAMOKAT.RU","SANKT-PETERBU, RU ","raiffeisen+receipts","-2209.0","RUB","-67.0","Еда","Продукты","Хлеб","Покупка хлеба в Самокате"
|
||||
"2025-01-06","2025-01-08","Подсолнечное масло Самокат, рафинированное, 800 мл","","","","","SAMOKAT.RU","SANKT-PETERBU, RU ","raiffeisen+receipts","-2209.0","RUB","-139.0","Еда","Продукты","Масло","Покупка подсолнечного масла в Самокате"
|
||||
"2025-01-19","2025-01-21","Черри Эко-культура круглые красные","Заказ из Яндекс.Лавки №250119-020-3606","","","by Zalina","YANDEX.LAVKA","Moskva , RU ","raiffeisen+receipts","-289.0","RUB","-289.0","Еда","Продукты","Овощи","Покупка черри в Яндекс.Лавке"
|
||||
"2025-01-24","2025-01-27","Кето сырники Азбука Life Pro","Заказ в Яндекс.Еде №20250124-1228","","","by Zalina","Азбука вкуса","Moskva , RU ","raiffeisen+receipts+paired","-268.0","RUB","-268.0","Еда","Готовая","Рестораны","Кето сырники Азбука Life Pro"
|
||||
"2025-01-24","2025-01-27","Перец болгарский желтый (1.08)","Заказ в Яндекс.Еде №20250124-1228","","","by Zalina","Азбука вкуса","Moskva , RU ","raiffeisen+receipts+paired","-133.92","RUB","-133.92","Еда","Продукты","Овощи","Покупка перца в Азбуке Вкуса"
|
||||
"2025-01-24","2025-01-24","Пакет-майка Дикси 43х68см 20кг","Заказ в Яндекс.Еде №20250125-0016","","","by Anton","Дикси","","yandex+receipts+refunded","-24.0","RUB","-24.0","Еда","Продукты","Упаковка","Пакет-майка в Дикси (Яндекс.Еда)"
|
||||
"2025-01-08","2025-01-10","Медовик Petit Caf , 115 г","","","","","SAMOKAT.RU","SANKT-PETERBU, RU ","raiffeisen+receipts","-1206.0","RUB","-199.0","Еда","Продукты","Десерты и сладости","Покупка медовика в Самокате"
|
||||
"2025-01-06","2025-01-08","Баклажан, 1 шт.","","","","","SAMOKAT.RU","SANKT-PETERBU, RU ","raiffeisen+receipts","-2209.0","RUB","-169.0","Еда","Продукты","Овощи","Покупка баклажана в Самокате"
|
||||
"2025-01-06","2025-01-08","Мандарины, отборные, 600 г","","","","","SAMOKAT.RU","SANKT-PETERBU, RU ","raiffeisen+receipts","-2209.0","RUB","-189.0","Еда","Продукты","Фрукты","Покупка мандаринов в Самокате"
|
||||
"2025-01-06","2025-01-08","Огурцы, короткоплодные, колючие, 450 г","","","","","SAMOKAT.RU","SANKT-PETERBU, RU ","raiffeisen+receipts","-2209.0","RUB","-279.0","Еда","Продукты","Овощи","Огурцы в Самокате"
|
||||
"2025-01-15","2025-01-17","Авокадо хасс Артфрут, 2 шт.","","","","","SAMOKAT.RU","SANKT-PETERBU, RU ","raiffeisen+receipts","-2150.0","RUB","-379.0","Еда","Продукты","Овощи","Покупка авокадо в Самокате"
|
||||
"2025-01-31","2025-01-31","Голубика, 125 г","Заказ в Яндекс.Еде №20250131-2352","","","by Anton","Азбука вкуса","","yandex+receipts+paired","-322.0","RUB","-322.0","Еда","Продукты","Фрукты","Покупка голубики в Азбуке Вкуса"
|
||||
"2025-01-31","2025-01-31","Сок Rich Апельсин 1л","Заказ в Яндекс.Еде №20250131-2352","","","by Anton","Азбука вкуса","","yandex+receipts+paired","-233.0","RUB","-233.0","Еда","Продукты","Напитки","Покупка сока Rich в Азбуке Вкуса"
|
||||
"2025-01-24","2025-01-24","Сервисный сбор","Заказ в Яндекс.Еде №20250125-0016","","","by Anton","YANDEX.EDA","","yandex+receipts+refunded","-90.0","RUB","-90.0","Логистика","Доставка","Сервисный сбор","Сервисный сбор за доставку Яндекс.Еды"
|
||||
"2025-01-06","2025-01-08","Филе бедра цыплёнка-бройлера Троекурово, охлаждённое, 750 г","","","","","SAMOKAT.RU","SANKT-PETERBU, RU ","raiffeisen+receipts","-2209.0","RUB","-385.0","Еда","Продукты","Птица","Покупка курицы в Самокате"
|
||||
"2025-01-06","2025-01-08","Кабачки, 500 г","","","","","SAMOKAT.RU","SANKT-PETERBU, RU ","raiffeisen+receipts","-2209.0","RUB","-169.0","Еда","Продукты","Овощи","Покупка кабачков в Самокате"
|
||||
"2025-01-15","2025-01-17","Красные томаты черри Flamenco, круглые, на ветке, 250 г","","","","","SAMOKAT.RU","SANKT-PETERBU, RU ","raiffeisen+receipts","-2150.0","RUB","-289.0","Еда","Продукты","Овощи","Покупка томатов черри в Самокате"
|
||||
"2025-01-20","2025-01-23","Сыр Самокат, Лябан, мягкий, ассорти, 60%, 250 г","","","","","SAMOKAT.RU","SANKT-PETERBU, RU ","raiffeisen+receipts","-1279.0","RUB","-355.0","Еда","Продукты","Молочные продукты","Покупка сыра в Самокате"
|
||||
"2025-01-24","2025-01-24","Нектар Rich Вишня 1л","Заказ в Яндекс.Еде №20250125-0016","","","by Anton","Дикси","","yandex+receipts+refunded","-528.0","RUB","-528.0","Еда","Продукты","Напитки","Покупка нектара Rich в Яндекс.Еде"
|
||||
"2025-01-02","2025-01-04","Жёлтый перец, 500 г","","","","","SAMOKAT.RU","SANKT-PETERBU, RU ","raiffeisen+receipts","-1365.0","RUB","-299.0","Еда","Продукты","Овощи","Покупка жёлтого перца в Самокате"
|
||||
"2025-01-24","2025-01-27","Пудинг миндальный с вишней, Уже Готово","Заказ в Яндекс.Еде №20250124-1228","","","by Zalina","Азбука вкуса","Moskva , RU ","raiffeisen+receipts+paired","-397.0","RUB","-397.0","Еда","Готовая","Рестораны","Пудинг в Яндекс.Еде из Азбуки Вкуса"
|
||||
"2025-01-15","2025-01-17","Яблоки Роял гала, 500 г","","","","","SAMOKAT.RU","SANKT-PETERBU, RU ","raiffeisen+receipts","-2150.0","RUB","-129.0","Еда","Продукты","Фрукты","Покупка яблок в Самокате"
|
||||
"2025-01-20","2025-01-23","Хлеб Самокат тартин, пшенично-ржаной, половинка, нарезка, 300 г","","","","","SAMOKAT.RU","SANKT-PETERBU, RU ","raiffeisen+receipts","-1279.0","RUB","-79.0","Еда","Продукты","Хлеб","Покупка хлеба в Самокате"
|
||||
"2025-03-19","","Mobile payment","Anton's Ru AppStore order","","","Anton (antonme@mac.com)","Beeline","","tbank+receipts","-900","RUB","-900","Технологии","Мобильная связь","Билайн","Оплата мобильной связи Beeline"
|
||||
"2025-01-06","2025-01-08","The Black Swan: Second Edition: The Impact of the Highly Improbable (Incerto Book 2) by Nassim Nicholas Taleb [Kindle Edition]","Amazon Digital Order #D01-0985373-7065800","","*6076","","Random House LLC","USA, 888-802-3080","freedom","-13.99","USD","-1473.71","Развлечения","Чтение","Электронные книги","Покупка электронной книги The Black Swan"
|
||||
"2025-01-06","2025-01-08","Красные томаты черри Flamenco, круглые, на ветке, 250 г","","","","","SAMOKAT.RU","SANKT-PETERBU, RU ","raiffeisen+receipts","-2209.0","RUB","-289.0","Еда","Продукты","Овощи","Покупка томатов черри в Самокате"
|
||||
"2025-01-15","2025-01-17","Огурец Луховицкие овощи, длинноплодный, гладкий, 1 шт.","","","","","SAMOKAT.RU","SANKT-PETERBU, RU ","raiffeisen+receipts","-2150.0","RUB","-149.0","Еда","Продукты","Овощи","Покупка огурца в Самокате"
|
||||
"2025-01-02","","Halide Mark II - Pro Camera - Subscription (Yearly)","Anton's RU AppStore order","","","Anton (antonme@mac.com)","Halide Mark II","","tbank+receipts","-799.0","RUB","-799.0","Развлечения","Хобби Антона","Фотография","Halide Mark II subscription for Anton"
|
||||
"2025-01-06","2025-01-08","Томаты, дагестанские, 500-600 г","","","","","SAMOKAT.RU","SANKT-PETERBU, RU ","raiffeisen+receipts","-2209.0","RUB","-199.0","Еда","Продукты","Овощи","Покупка томатов в Самокате"
|
||||
"2025-01-06","2025-01-08","The Bed of Procrustes: Philosophical and Practical Aphorisms (Incerto Book 4) by Nassim Nicholas Taleb [Kindle Edition]","Amazon Digital Order #D01-0985373-7065800","","*6076","","Random House LLC","USA, 888-802-3080","freedom","-4.99","USD","-525.65","Развлечения","Чтение","Электронные книги","Покупка электронной книги The Bed of Procrustes"
|
||||
"2025-01-06","2025-01-08","Лавровый лист Самокат, 8 г","","","","","SAMOKAT.RU","SANKT-PETERBU, RU ","raiffeisen+receipts","-2209.0","RUB","-85.0","Еда","Продукты","Специи","Покупка лаврового листа в Самокате"
|
||||
"2025-01-09","","Who Calls: Caller ID - Subscription (Yearly)","Anton's RU AppStore order","","","Anton (antonme@mac.com)","Who Calls: Caller ID","","tbank+receipts","-1190.0","RUB","-1190.0","Развлечения","Подписки","Всё-в-одном","Who Calls Caller ID Subscription"
|
||||
"2025-01-20","2025-01-23","Коин Самокат, с мандарином и шоколадным ганашом, 114 г","","","","","SAMOKAT.RU","SANKT-PETERBU, RU ","raiffeisen+receipts","-1279.0","RUB","-249.0","Еда","Продукты","Десерты и сладости","Коин Самокат десерт"
|
||||
"2025-03-19","","Mobile payment","Zalina's RU AppStore order","","","Zalina (zalinka@yandex.ru)","MTS","","tbank+receipts","-820","RUB","-820","Технологии","Мобильная связь","МТС","Оплата мобильной связи МТС"
|
||||
"2025-01-08","2025-01-10","Торт Зальцбургский шоколад У Палыча, с ягодами, 500 г","","","","","SAMOKAT.RU","SANKT-PETERBU, RU ","raiffeisen+receipts","-1206.0","RUB","-799.0","Еда","Продукты","Десерты и сладости","Покупка торта в Самокате"
|
||||
"2025-01-05","","Premier (Automatic Renewal) - Subscription (Monthly)","Zalina's RU AppStore order","","","Zalina (zalinka@yandex.ru)","Premier","","tbank+receipts","-995.0","RUB","-995.0","Развлечения","Подписки","Всё-в-одном","Apple Premier Subscription"
|
||||
"2025-03-19","","Mobile payment","Anton's Ru AppStore order","","","Anton (antonme@mac.com)","MTS","","tbank+receipts","-850","RUB","-850","Технологии","Мобильная связь","МТС","Оплата мобильной связи МТС"
|
||||
"2025-01-15","2025-01-17","Кекс Коломенский Мастер Пироговъ, с изюмом, 400 г","","","","","SAMOKAT.RU","SANKT-PETERBU, RU ","raiffeisen+receipts","-2150.0","RUB","-208.0","Еда","Продукты","Десерты и сладости","Покупка кекса в Самокате"
|
||||
"2025-01-15","2025-01-17","Голень цыплёнка-бройлера Троекурово, 900 г","","","","","SAMOKAT.RU","SANKT-PETERBU, RU ","raiffeisen+receipts","-2150.0","RUB","-325.0","Еда","Продукты","Птица","Покупка голени цыплёнка в Самокате"
|
||||
"2025-01-15","2025-01-17","Голень цыплёнка-бройлера Троекурово, 900 г","","","","","SAMOKAT.RU","SANKT-PETERBU, RU ","raiffeisen+receipts","-2150.0","RUB","-325.0","Еда","Продукты","Птица","Покупка голени цыплёнка в Самокате"
|
||||
"2025-01-02","2025-01-04","Стейк Индилайт, из грудки индейки, 525 г","","","","","SAMOKAT.RU","SANKT-PETERBU, RU ","raiffeisen+receipts","-1365.0","RUB","-399.0","Еда","Продукты","Птица","Покупка стейка из индейки в Самокате"
|
||||
"2025-01-05","","Paper — Writing App + Notes - Subscription (Monthly)","Anton's RU AppStore order","","","Anton (antonme@mac.com)","Paper — Writing App + Notes","","tbank+receipts","-199.0","RUB","-199.0","Развлечения","Хобби Антона","","Paper App Subscription for Anton"
|
||||
"2025-01-15","2025-01-17","Яблоки Голден, 500 г","","","","","SAMOKAT.RU","SANKT-PETERBU, RU ","raiffeisen+receipts","-2150.0","RUB","-129.0","Еда","Продукты","Фрукты","Покупка яблок в Самокате"
|
||||
"2025-01-02","2025-01-04","Джемы для сыра Самокат, абрикос с ароматом чёрного перца и манго с кардамоном и куркумой, 100 г","","","","","SAMOKAT.RU","SANKT-PETERBU, RU ","raiffeisen+receipts","-1365.0","RUB","-219.0","Еда","Продукты","Варенье","Покупка джемов в Самокате"
|
||||
"2025-01-15","2025-01-17","Хлеб Самокат тартин, пшенично-ржаной, половинка, нарезка, 300 г","","","","","SAMOKAT.RU","SANKT-PETERBU, RU ","raiffeisen+receipts","-2150.0","RUB","-68.0","Еда","Продукты","Хлеб","Покупка хлеба в Самокате"
|
||||
"2025-01-20","2025-01-23","Слойка-ролл Самокат, с корицей и сливочно-сырным кремом, 100 г","","","","","SAMOKAT.RU","SANKT-PETERBU, RU ","raiffeisen+receipts","-1279.0","RUB","-239.0","Еда","Продукты","Десерты и сладости","Слойка-ролл from Самокат"
|
||||
"2025-01-27","","Termius: Terminal & SSH client - Subscription (Monthly)","Anton's RU AppStore order","","","Anton (antonme@mac.com)","Termius: Terminal & SSH client","","tbank+receipts","-300.0","RUB","-300.0","Технологии","Инфраструктура домашнего интернета","Сервисы","Termius subscription for server access"
|
||||
"2025-01-28","","Gmail - Email by Google - Subscription (Monthly)","Zalina's RU AppStore order","","","Zalina (zalinka@yandex.ru)","Gmail","","tbank+receipts","-169.0","RUB","-169.0","Развлечения","Подписки","Всё-в-одном","Apple Premier Subscription"
|
||||
"2025-01-06","2025-01-08","Коин Самокат x Слой, черника и лаванда, 110 г","","","","","SAMOKAT.RU","SANKT-PETERBU, RU ","raiffeisen+receipts","-2209.0","RUB","-239.0","Еда","Продукты","Десерты и сладости","Покупка черники и лаванды в Самокате"
|
||||
"2025-01-20","2025-01-23","Творожный сыр Самокат, с авокадо, базиликом, тимьяном и кинзой, 130 г","","","","","SAMOKAT.RU","SANKT-PETERBU, RU ","raiffeisen+receipts","-1279.0","RUB","-149.0","Еда","Продукты","Молочные продукты","Покупка творожного сыра в Самокате"
|
||||
"2025-01-15","2025-01-17","Салат айсберг Белая дача, 140 г","","","","","SAMOKAT.RU","SANKT-PETERBU, RU ","raiffeisen+receipts","-2150.0","RUB","-149.0","Еда","Продукты","Овощи","Покупка салата айсберг в Самокате"
|
||||
"2025-01-02","2025-01-04","Красные томаты черри Flamenco, круглые, на ветке, 250 г","","","","","SAMOKAT.RU","SANKT-PETERBU, RU ","raiffeisen+receipts","-1365.0","RUB","-279.0","Еда","Продукты","Овощи","Покупка томатов черри в Самокате"
|
||||
"2025-01-02","2025-01-04","Шпинат, 75 г","","","","","SAMOKAT.RU","SANKT-PETERBU, RU ","raiffeisen+receipts","-1365.0","RUB","-169.0","Еда","Продукты","Овощи","Покупка шпината в Самокате"
|
||||
"2025-01-20","2025-01-23","Кекс Коломенский Мастер Пироговъ, с изюмом, 400 г","","","","","SAMOKAT.RU","SANKT-PETERBU, RU ","raiffeisen+receipts","-1279.0","RUB","-208.0","Еда","Продукты","Десерты и сладости","Покупка кекса в Самокате"
|
||||
"2025-01-22","","Duolingo - Language Lessons - Subscription (Monthly)","Zalina's RU AppStore order","","","Zalina (zalinka@yandex.ru)","Duolingo","","tbank+receipts","-599.0","RUB","-599.0","Развлечения","Подписки","Языковые курсы","Duolingo subscription for language learning"
|
||||
"2025-01-28","","Craft: Write docs, AI editing - Subscription (Monthly)","Anton's RU AppStore order","","","Anton (antonme@mac.com)","Craft: Write docs, AI editing","","tbank+receipts","-899.0","RUB","-899.0","Развлечения","Хобби Антона","Craft","Craft subscription for Anton's hobby"
|
||||
"2025-01-20","","Либо/Либо+ (Automatic Renewal) - Subscription (Monthly)","Zalina's RU AppStore order","","","Zalina (zalinka@yandex.ru)","Либо/Либо+","","tbank+receipts","-249.0","RUB","-249.0","Развлечения","Подписки","Новости и тексты","Подписка на Либо/Либо+ подкасты"
|
||||
"2025-01-01","","Все будет норм (Automatic Renewal) - Subscription (Monthly)","Zalina's RU AppStore order","","","Zalina (zalinka@yandex.ru)","Все будет норм","","tbank+receipts","-349.0","RUB","-349.0","Развлечения","Подписки","Всё-в-одном","Zalina's AppStore subscription renewal"
|
||||
"2025-01-08","","Premier (Automatic Renewal) - Subscription (Monthly)","Anton's RU AppStore order","","","Anton (antonme@mac.com)","Premier","","tbank+receipts","-995.0","RUB","-995.0","Развлечения","Подписки","Всё-в-одном","Apple Premier subscription"
|
||||
"2025-01-24","","Telegram Messenger - Subscription (Monthly)","Zalina's RU AppStore order","","","Zalina (zalinka@yandex.ru)","Telegram Messenger","","tbank+receipts","-329.0","RUB","-329.0","Развлечения","Подписки","Мессенджеры","Подписка на Telegram Messenger"
|
||||
"2025-01-11","","Ornament: Health Monitoring - Subscription (Yearly)","Zalina's RU AppStore order","","","Zalina (zalinka@yandex.ru)","Ornament: Health Monitoring","","tbank+receipts","-1290.0","RUB","-1290.0","Здоровье","Подписки","Health Monitoring","Health Monitoring Subscription"
|
||||
"2025-01-10","","Bear - Markdown Notes - Subscription (Monthly)","Zalina's RU AppStore order","","","Zalina (zalinka@yandex.ru)","Bear","","tbank+receipts","-99.0","RUB","-99.0","Развлечения","Подписки","Приложения","Bear Markdown Notes monthly subscription"
|
||||
|
546
app.js
Normal file
546
app.js
Normal file
@ -0,0 +1,546 @@
|
||||
// Initialize the chart
|
||||
const chartDom = document.getElementById('chart-container');
|
||||
const myChart = echarts.init(chartDom);
|
||||
let option;
|
||||
|
||||
// Function to parse CSV data
|
||||
async function parseCSV(file) {
|
||||
const response = await fetch(file);
|
||||
const data = await response.text();
|
||||
|
||||
// Split the CSV into rows
|
||||
const rows = data.split('\n');
|
||||
|
||||
// Extract headers and remove quotes
|
||||
const headers = rows[0].split(',').map(header => header.replace(/"/g, ''));
|
||||
|
||||
// Parse the data rows
|
||||
const result = [];
|
||||
for (let i = 1; i < rows.length; i++) {
|
||||
if (!rows[i].trim()) continue;
|
||||
|
||||
// Handle commas within quoted fields
|
||||
const row = [];
|
||||
let inQuote = false;
|
||||
let currentValue = '';
|
||||
|
||||
for (let j = 0; j < rows[i].length; j++) {
|
||||
const char = rows[i][j];
|
||||
|
||||
if (char === '"') {
|
||||
inQuote = !inQuote;
|
||||
} else if (char === ',' && !inQuote) {
|
||||
row.push(currentValue.replace(/"/g, ''));
|
||||
currentValue = '';
|
||||
} else {
|
||||
currentValue += char;
|
||||
}
|
||||
}
|
||||
|
||||
// Push the last value
|
||||
row.push(currentValue.replace(/"/g, ''));
|
||||
|
||||
// Create an object from headers and row values
|
||||
const obj = {};
|
||||
for (let j = 0; j < headers.length; j++) {
|
||||
obj[headers[j]] = row[j];
|
||||
}
|
||||
|
||||
result.push(obj);
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
// Function to transform data into a sunburst format
|
||||
function transformToSunburst(data) {
|
||||
// Calculate total spending
|
||||
let totalSpending = 0;
|
||||
|
||||
// Group by categories
|
||||
const categories = [];
|
||||
const categoryMap = {};
|
||||
|
||||
// Predefined colors for categories
|
||||
const colors = [
|
||||
'#5470c6', '#91cc75', '#fac858', '#ee6666', '#73c0de',
|
||||
'#3ba272', '#fc8452', '#9a60b4', '#ea7ccc', '#4cae72',
|
||||
'#d56358', '#82b1ff', '#f19143', '#addf84', '#6f7787'
|
||||
];
|
||||
|
||||
data.forEach(item => {
|
||||
const category = item.category || '';
|
||||
const subcategory = item.subcategory || '';
|
||||
const microcategory = item.microcategory || '';
|
||||
const amount = Math.abs(parseFloat(item.amount_rub));
|
||||
|
||||
if (!isNaN(amount)) {
|
||||
totalSpending += amount;
|
||||
|
||||
if (!categoryMap[category] && category !== '') {
|
||||
categoryMap[category] = {
|
||||
name: category,
|
||||
value: 0,
|
||||
children: {},
|
||||
itemStyle: {}
|
||||
};
|
||||
categories.push(categoryMap[category]);
|
||||
}
|
||||
|
||||
if (category !== '') {
|
||||
if (!categoryMap[category].children[subcategory] && subcategory !== '') {
|
||||
categoryMap[category].children[subcategory] = {
|
||||
name: subcategory,
|
||||
value: 0,
|
||||
children: {},
|
||||
itemStyle: {}
|
||||
};
|
||||
}
|
||||
|
||||
if (subcategory !== '') {
|
||||
if (!categoryMap[category].children[subcategory].children[microcategory] && microcategory !== '') {
|
||||
categoryMap[category].children[subcategory].children[microcategory] = {
|
||||
name: microcategory,
|
||||
value: 0,
|
||||
itemStyle: {}
|
||||
};
|
||||
}
|
||||
|
||||
categoryMap[category].value += amount;
|
||||
categoryMap[category].children[subcategory].value += amount;
|
||||
|
||||
if (microcategory !== '') {
|
||||
categoryMap[category].children[subcategory].children[microcategory].value += amount;
|
||||
}
|
||||
} else {
|
||||
categoryMap[category].value += amount;
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
// Convert the map to an array structure for ECharts
|
||||
const result = [];
|
||||
|
||||
// Assign colors to categories
|
||||
categories.forEach((category, index) => {
|
||||
const colorIndex = index % colors.length;
|
||||
const categoryNode = {
|
||||
name: category.name,
|
||||
value: category.value,
|
||||
children: [],
|
||||
itemStyle: {
|
||||
color: colors[colorIndex]
|
||||
}
|
||||
};
|
||||
|
||||
const subcategories = [];
|
||||
for (const subcatKey in category.children) {
|
||||
subcategories.push(category.children[subcatKey]);
|
||||
}
|
||||
|
||||
subcategories.forEach(subcategory => {
|
||||
const subcategoryNode = {
|
||||
name: subcategory.name,
|
||||
value: subcategory.value,
|
||||
children: [],
|
||||
itemStyle: {
|
||||
color: colors[colorIndex]
|
||||
}
|
||||
};
|
||||
|
||||
const microcategories = [];
|
||||
for (const microKey in subcategory.children) {
|
||||
microcategories.push(subcategory.children[microKey]);
|
||||
}
|
||||
|
||||
microcategories.forEach(micro => {
|
||||
subcategoryNode.children.push({
|
||||
name: micro.name,
|
||||
value: micro.value,
|
||||
itemStyle: {
|
||||
color: colors[colorIndex]
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
if (subcategoryNode.children.length > 0) {
|
||||
categoryNode.children.push(subcategoryNode);
|
||||
} else {
|
||||
categoryNode.children.push({
|
||||
name: subcategory.name,
|
||||
value: subcategory.value,
|
||||
itemStyle: {
|
||||
color: colors[colorIndex]
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
result.push(categoryNode);
|
||||
});
|
||||
|
||||
return {
|
||||
total: totalSpending,
|
||||
data: result
|
||||
};
|
||||
}
|
||||
|
||||
// Function to render the chart
|
||||
function renderChart(data) {
|
||||
const sunburstData = transformToSunburst(data);
|
||||
|
||||
option = {
|
||||
backgroundColor: '#fff',
|
||||
grid: {
|
||||
left: '10%', // Move chart to the left
|
||||
containLabel: true
|
||||
},
|
||||
series: {
|
||||
type: 'sunburst',
|
||||
radius: [0, '95%'],
|
||||
center: ['40%', '50%'], // Move chart to the left
|
||||
nodeClick: 'rootToNode', // To enable drill down on click
|
||||
data: sunburstData.data,
|
||||
label: {
|
||||
show: true,
|
||||
formatter: function(param) {
|
||||
if (param.depth === 0) {
|
||||
// Add line breaks for long category names
|
||||
if (param.name.length > 10) {
|
||||
return param.name.replace(/(.{1,10})(?: |$)/g, "$1\n").trim();
|
||||
}
|
||||
return param.name;
|
||||
} else {
|
||||
return '';
|
||||
}
|
||||
},
|
||||
minAngle: 5,
|
||||
align: 'center',
|
||||
verticalAlign: 'middle',
|
||||
position: 'inside'
|
||||
},
|
||||
itemStyle: {
|
||||
borderWidth: 1,
|
||||
borderColor: '#fff'
|
||||
},
|
||||
levels: [
|
||||
{},
|
||||
{
|
||||
// First level - Categories
|
||||
r0: '20%',
|
||||
r: '45%',
|
||||
label: {
|
||||
show: true,
|
||||
rotate: 'radial',
|
||||
fontSize: 12,
|
||||
lineHeight: 15,
|
||||
verticalAlign: 'center',
|
||||
position: 'inside',
|
||||
},
|
||||
itemStyle: {
|
||||
borderWidth: 2
|
||||
}
|
||||
|
||||
},
|
||||
{
|
||||
// Second level - Subcategories
|
||||
r0: '45%',
|
||||
r: '70%',
|
||||
label: {
|
||||
show: false,
|
||||
fontSize: 11,
|
||||
align: 'left',
|
||||
position: 'inside',
|
||||
distance: 5,
|
||||
|
||||
},
|
||||
itemStyle: {
|
||||
borderWidth: 1
|
||||
},
|
||||
emphasis: {
|
||||
label: {
|
||||
show: true,
|
||||
distance: 20,
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
// Third level - Microcategories - a bit wider than before
|
||||
r0: '70%',
|
||||
r: '75%',
|
||||
label: {
|
||||
show: false,
|
||||
position: 'outside',
|
||||
padding: 3,
|
||||
silent: false,
|
||||
fontSize: 10,
|
||||
formatter: function(param) {
|
||||
if (param.name.length > 10) {
|
||||
return param.name.slice(0, 8) + '...';
|
||||
}
|
||||
return param.name;
|
||||
}
|
||||
},
|
||||
itemStyle: {
|
||||
borderWidth: 3
|
||||
}
|
||||
}
|
||||
],
|
||||
emphasis: {
|
||||
focus: 'relative',
|
||||
},
|
||||
// Add more space between wedges
|
||||
gap: 2,
|
||||
// Allow the chart to sort segments by value
|
||||
sort: null,
|
||||
tooltip: {
|
||||
trigger: 'item',
|
||||
formatter: function(info) {
|
||||
const value = info.value.toLocaleString();
|
||||
const name = info.name;
|
||||
|
||||
// Calculate percentage of total
|
||||
const percentage = ((info.value / sunburstData.total) * 100).toFixed(1);
|
||||
|
||||
return `${name}<br/>Amount: ${value} RUB<br/>Percentage: ${percentage}%`;
|
||||
}
|
||||
}
|
||||
},
|
||||
graphic: [
|
||||
{
|
||||
type: 'text',
|
||||
left: '37%', // Align with new center position
|
||||
top: '49%',
|
||||
style: {
|
||||
text: sunburstData.total.toFixed(0).toLocaleString()+" ₽",
|
||||
fontWeight: 'bold',
|
||||
fontSize: 18,
|
||||
textAlign: 'center',
|
||||
textVerticalAlign: 'middle',
|
||||
position: 'center',
|
||||
width: 20,
|
||||
height: 40
|
||||
},
|
||||
z: 100 // Ensure it's on top
|
||||
}
|
||||
|
||||
]
|
||||
};
|
||||
|
||||
// Handle chart events - recolor on drill down
|
||||
myChart.off('click');
|
||||
myChart.on('click', function(params) {
|
||||
if (params.depth >= 0) { // Handle clicks on any level, not just depth 0
|
||||
const colorPalette = [
|
||||
'#5470c6', '#91cc75', '#fac858', '#ee6666', '#73c0de',
|
||||
'#3ba272', '#fc8452', '#9a60b4', '#ea7ccc', '#4cae72'
|
||||
];
|
||||
|
||||
// Clone the data to modify it
|
||||
const currentData = JSON.parse(JSON.stringify(option.series.data));
|
||||
|
||||
// Find the path to the clicked item
|
||||
let targetData;
|
||||
let categoryIndex = -1;
|
||||
|
||||
if (params.depth === 0) {
|
||||
// If clicking on a top-level category
|
||||
categoryIndex = currentData.findIndex(item => item.name === params.name);
|
||||
if (categoryIndex !== -1) {
|
||||
targetData = currentData[categoryIndex];
|
||||
}
|
||||
} else if (params.depth === 1) {
|
||||
// If clicking on a subcategory, find its parent category first
|
||||
for (let i = 0; i < currentData.length; i++) {
|
||||
if (currentData[i].children) {
|
||||
const subIndex = currentData[i].children.findIndex(sub => sub.name === params.name);
|
||||
if (subIndex !== -1) {
|
||||
targetData = currentData[i].children[subIndex];
|
||||
categoryIndex = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (targetData && targetData.children && targetData.children.length > 0) {
|
||||
// Recolor children with unique colors
|
||||
targetData.children.forEach((child, i) => {
|
||||
const color = colorPalette[i % colorPalette.length];
|
||||
child.itemStyle = {
|
||||
color: color
|
||||
};
|
||||
|
||||
// If the child has children (microcategories), color them too
|
||||
if (child.children && child.children.length > 0) {
|
||||
const microColors = generateColorGradient(color, child.children.length);
|
||||
child.children.forEach((micro, j) => {
|
||||
micro.itemStyle = {
|
||||
color: microColors[j]
|
||||
};
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
// Update the chart with modified data
|
||||
if (params.depth === 0) {
|
||||
currentData[categoryIndex] = targetData;
|
||||
} else if (params.depth === 1) {
|
||||
// Update the subcategory within its parent category
|
||||
for (let i = 0; i < currentData[categoryIndex].children.length; i++) {
|
||||
if (currentData[categoryIndex].children[i].name === params.name) {
|
||||
currentData[categoryIndex].children[i] = targetData;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
option.series.data = currentData;
|
||||
myChart.setOption(option, { replaceMerge: ['series'] });
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
myChart.setOption(option);
|
||||
|
||||
// Set up hover events for the details box
|
||||
setupHoverEvents();
|
||||
}
|
||||
|
||||
// Function to generate a color gradient
|
||||
function generateColorGradient(baseColor, steps) {
|
||||
const result = [];
|
||||
const base = tinycolor(baseColor);
|
||||
|
||||
// Generate lighter shades for better contrast
|
||||
for (let i = 0; i < steps; i++) {
|
||||
// Create various tints and shades based on the position
|
||||
let color;
|
||||
if (i % 3 === 0) {
|
||||
color = base.clone().lighten(15);
|
||||
} else if (i % 3 === 1) {
|
||||
color = base.clone().darken(10);
|
||||
} else {
|
||||
color = base.clone().saturate(20);
|
||||
}
|
||||
result.push(color.toString());
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
// Load TinyColor library for color manipulation
|
||||
function loadTinyColor() {
|
||||
return new Promise((resolve, reject) => {
|
||||
if (window.tinycolor) {
|
||||
resolve();
|
||||
return;
|
||||
}
|
||||
|
||||
const script = document.createElement('script');
|
||||
script.src = 'https://cdnjs.cloudflare.com/ajax/libs/tinycolor/1.4.2/tinycolor.min.js';
|
||||
script.onload = resolve;
|
||||
script.onerror = reject;
|
||||
document.head.appendChild(script);
|
||||
});
|
||||
}
|
||||
|
||||
// Load all available month files
|
||||
async function loadAvailableMonths() {
|
||||
// Load TinyColor first
|
||||
await loadTinyColor();
|
||||
|
||||
// For now, we only have one month
|
||||
const months = ['2025-01'];
|
||||
const select = document.getElementById('month-select');
|
||||
|
||||
months.forEach(month => {
|
||||
const option = document.createElement('option');
|
||||
option.value = month;
|
||||
option.textContent = month;
|
||||
select.appendChild(option);
|
||||
});
|
||||
|
||||
// Load the first month by default
|
||||
const data = await parseCSV(`altcats-${months[0]}.csv`);
|
||||
renderChart(data);
|
||||
|
||||
// Add event listener for month selection
|
||||
select.addEventListener('change', async (e) => {
|
||||
const month = e.target.value;
|
||||
const data = await parseCSV(`altcats-${month}.csv`);
|
||||
renderChart(data);
|
||||
});
|
||||
}
|
||||
|
||||
// Initialize the visualization
|
||||
loadAvailableMonths();
|
||||
|
||||
// Handle window resize
|
||||
window.addEventListener('resize', function() {
|
||||
myChart.resize();
|
||||
});
|
||||
|
||||
// Add mouseover handler to update details box
|
||||
function setupHoverEvents() {
|
||||
const hoverNameElement = document.getElementById('hover-name');
|
||||
const hoverAmountElement = document.getElementById('hover-amount');
|
||||
const topItemsElement = document.getElementById('top-items');
|
||||
|
||||
// Add mouseover event listener
|
||||
myChart.on('mouseover', function(params) {
|
||||
// Only process data nodes, not empty areas
|
||||
if (params.data) {
|
||||
// Set the name and amount
|
||||
hoverNameElement.textContent = params.name;
|
||||
hoverAmountElement.textContent = params.value.toLocaleString() + ' RUB';
|
||||
|
||||
// Clear previous top items
|
||||
topItemsElement.innerHTML = '';
|
||||
|
||||
// Find top items if there are children
|
||||
if (params.data.children && params.data.children.length > 0) {
|
||||
// Sort children by value
|
||||
const sortedChildren = [...params.data.children].sort((a, b) => b.value - a.value);
|
||||
|
||||
// Display top 10 or fewer
|
||||
const topChildren = sortedChildren.slice(0, 10);
|
||||
|
||||
// Create elements for each top item
|
||||
topChildren.forEach(child => {
|
||||
const itemDiv = document.createElement('div');
|
||||
itemDiv.className = 'top-item';
|
||||
|
||||
const nameSpan = document.createElement('span');
|
||||
nameSpan.className = 'top-item-name';
|
||||
nameSpan.textContent = child.name;
|
||||
itemDiv.appendChild(nameSpan);
|
||||
|
||||
const amountSpan = document.createElement('span');
|
||||
amountSpan.className = 'top-item-amount';
|
||||
amountSpan.textContent = child.value.toLocaleString() + ' ₽';
|
||||
itemDiv.appendChild(amountSpan);
|
||||
|
||||
// Add percentage
|
||||
const percentage = ((child.value / params.value) * 100).toFixed(1);
|
||||
amountSpan.textContent += ` (${percentage}%)`;
|
||||
|
||||
topItemsElement.appendChild(itemDiv);
|
||||
});
|
||||
} else {
|
||||
// No children, show a message
|
||||
topItemsElement.innerHTML = '<div>No subcategories available</div>';
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
// Reset on mouseout from the chart
|
||||
myChart.on('mouseout', function(params) {
|
||||
if (!params.data) {
|
||||
hoverNameElement.textContent = 'Hover over a segment to see details';
|
||||
hoverAmountElement.textContent = '';
|
||||
topItemsElement.innerHTML = '';
|
||||
}
|
||||
});
|
||||
}
|
||||
33
index.html
Normal file
33
index.html
Normal file
@ -0,0 +1,33 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Spending Visualization</title>
|
||||
<link rel="stylesheet" href="styles.css">
|
||||
<script src="https://cdn.jsdelivr.net/npm/echarts@5.6.0/dist/echarts.min.js"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/tinycolor/1.4.2/tinycolor.min.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
<div class="header">
|
||||
<h1>Family Spending Visualization</h1>
|
||||
<div class="month-selector">
|
||||
<label for="month-select">Select Month:</label>
|
||||
<select id="month-select"></select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="content-wrapper">
|
||||
<div id="chart-container"></div>
|
||||
<div id="details-box">
|
||||
<h3>Details</h3>
|
||||
<div id="hover-name">Hover over a segment to see details</div>
|
||||
<div id="hover-amount"></div>
|
||||
<h4>Top Items:</h4>
|
||||
<div id="top-items"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script src="app.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
18
package.json
Normal file
18
package.json
Normal file
@ -0,0 +1,18 @@
|
||||
{
|
||||
"name": "visual-spending",
|
||||
"version": "1.0.0",
|
||||
"description": "Visualization for family spending data",
|
||||
"main": "server.js",
|
||||
"scripts": {
|
||||
"start": "node server.js",
|
||||
"dev": "node server.js"
|
||||
},
|
||||
"keywords": [
|
||||
"visualization",
|
||||
"spending",
|
||||
"echarts",
|
||||
"sunburst"
|
||||
],
|
||||
"author": "",
|
||||
"license": "MIT"
|
||||
}
|
||||
45
server.js
Normal file
45
server.js
Normal file
@ -0,0 +1,45 @@
|
||||
const http = require('http');
|
||||
const fs = require('fs');
|
||||
const path = require('path');
|
||||
|
||||
const PORT = 3000;
|
||||
|
||||
const MIME_TYPES = {
|
||||
'.html': 'text/html',
|
||||
'.css': 'text/css',
|
||||
'.js': 'text/javascript',
|
||||
'.json': 'application/json',
|
||||
'.csv': 'text/csv',
|
||||
};
|
||||
|
||||
const server = http.createServer((req, res) => {
|
||||
// Handle URL
|
||||
let filePath = '.' + req.url;
|
||||
if (filePath === './') {
|
||||
filePath = './index.html';
|
||||
}
|
||||
|
||||
const extname = path.extname(filePath);
|
||||
const contentType = MIME_TYPES[extname] || 'application/octet-stream';
|
||||
|
||||
fs.readFile(filePath, (err, data) => {
|
||||
if (err) {
|
||||
if (err.code === 'ENOENT') {
|
||||
res.writeHead(404);
|
||||
res.end('File not found');
|
||||
} else {
|
||||
res.writeHead(500);
|
||||
res.end('Server error: ' + err.code);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
res.writeHead(200, { 'Content-Type': contentType });
|
||||
res.end(data);
|
||||
});
|
||||
});
|
||||
|
||||
server.listen(PORT, () => {
|
||||
console.log(`Server running at http://localhost:${PORT}/`);
|
||||
console.log(`Visualizing spending data with ECharts...`);
|
||||
});
|
||||
120
styles.css
Normal file
120
styles.css
Normal file
@ -0,0 +1,120 @@
|
||||
* {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
body {
|
||||
font-family: Arial, sans-serif;
|
||||
background-color: #f5f5f5;
|
||||
color: #333;
|
||||
}
|
||||
|
||||
.container {
|
||||
max-width: 1200px;
|
||||
margin: 0 auto;
|
||||
padding: 20px;
|
||||
}
|
||||
|
||||
.header {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
.month-selector {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 10px;
|
||||
}
|
||||
|
||||
#month-select {
|
||||
padding: 8px;
|
||||
border-radius: 4px;
|
||||
border: 1px solid #ddd;
|
||||
}
|
||||
|
||||
.content-wrapper {
|
||||
display: flex;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
#chart-container {
|
||||
width: 100%;
|
||||
height: 80vh;
|
||||
background-color: white;
|
||||
border-radius: 8px;
|
||||
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
|
||||
#details-box {
|
||||
position: absolute;
|
||||
top: 10px;
|
||||
right: 20px;
|
||||
width: 280px;
|
||||
background-color: white;
|
||||
border-radius: 8px;
|
||||
box-shadow: 0 2px 15px rgba(0, 0, 0, 0.15);
|
||||
padding: 15px;
|
||||
z-index: 10;
|
||||
min-height: 200px;
|
||||
max-height: 500px;
|
||||
overflow-y: auto;
|
||||
opacity: 0.95;
|
||||
border: 1px solid #eee;
|
||||
}
|
||||
|
||||
#details-box h3 {
|
||||
margin-bottom: 10px;
|
||||
color: #444;
|
||||
font-size: 16px;
|
||||
border-bottom: 1px solid #eee;
|
||||
padding-bottom: 5px;
|
||||
}
|
||||
|
||||
#details-box h4 {
|
||||
margin: 10px 0 5px;
|
||||
color: #555;
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
#hover-name {
|
||||
font-weight: bold;
|
||||
margin-bottom: 5px;
|
||||
color: #333;
|
||||
word-break: break-word;
|
||||
}
|
||||
|
||||
#hover-amount {
|
||||
font-size: 18px;
|
||||
margin-bottom: 10px;
|
||||
color: #0066cc;
|
||||
}
|
||||
|
||||
#top-items {
|
||||
font-size: 13px;
|
||||
}
|
||||
|
||||
.top-item {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
padding: 4px 0;
|
||||
border-bottom: 1px dashed #eee;
|
||||
}
|
||||
|
||||
.top-item:last-child {
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
.top-item-name {
|
||||
flex: 1;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
|
||||
.top-item-amount {
|
||||
margin-left: 10px;
|
||||
font-weight: bold;
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user