@ -0,0 +1,43 @@ |
|||
.. image:: https://img.shields.io/badge/license-AGPL--3-blue.svg |
|||
:target: https://www.gnu.org/licenses/agpl-3.0-standalone.html |
|||
:alt: License: AGPL-3 |
|||
|
|||
Cancel Landed Cost |
|||
================== |
|||
This module helps to cancel Landed Costs and allows you to cancel multiple Landed Costs from the tree view. There are three ways in which you can cancel the Landed Costs. |
|||
|
|||
License |
|||
------- |
|||
General Public License, Version 3 (AGPL v3). |
|||
(https://www.gnu.org/licenses/agpl-3.0-standalone.html) |
|||
|
|||
Company |
|||
------- |
|||
* `Cybrosys Techno Solutions <https://cybrosys.com/>`__ |
|||
|
|||
Credits |
|||
------- |
|||
Developer:(V18) Mruthul Raj |
|||
(V17) Anfas Faisal K |
|||
Contact: odoo@cybrosys.com |
|||
|
|||
Contacts |
|||
-------- |
|||
* Mail Contact : odoo@cybrosys.com |
|||
* Website : https://cybrosys.com |
|||
|
|||
Bug Tracker |
|||
----------- |
|||
Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported. |
|||
|
|||
Maintainer |
|||
========== |
|||
.. image:: https://cybrosys.com/images/logo.png |
|||
:target: https://cybrosys.com |
|||
This module is maintained by Cybrosys Technologies. |
|||
|
|||
For support and more information, please visit `Our Website <https://cybrosys.com/>`__ |
|||
|
|||
Further information |
|||
=================== |
|||
HTML Description: `<static/description/index.html>`__ |
@ -0,0 +1,22 @@ |
|||
# -*- coding: utf-8 -*- |
|||
################################################################################ |
|||
# |
|||
# Cybrosys Technologies Pvt. Ltd. |
|||
# |
|||
# Copyright (C) 2025-TODAY Cybrosys Technologies(<https://www.cybrosys.com>). |
|||
# Author: Mruthul Raj (odoo@cybrosys.info) |
|||
# |
|||
# You can modify it under the terms of the GNU AFFERO |
|||
# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. |
|||
# |
|||
# This program is distributed in the hope that it will be useful, |
|||
# but WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|||
# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. |
|||
# |
|||
# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE |
|||
# (AGPL v3) along with this program. |
|||
# If not, see <http://www.gnu.org/licenses/>. |
|||
# |
|||
################################################################################ |
|||
from . import models |
@ -0,0 +1,47 @@ |
|||
# -*- coding: utf-8 -*- |
|||
################################################################################ |
|||
# |
|||
# Cybrosys Technologies Pvt. Ltd. |
|||
# |
|||
# Copyright (C) 2025-TODAY Cybrosys Technologies(<https://www.cybrosys.com>). |
|||
# Author: Mruthul Raj (odoo@cybrosys.info) |
|||
# |
|||
# You can modify it under the terms of the GNU AFFERO |
|||
# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. |
|||
# |
|||
# This program is distributed in the hope that it will be useful, |
|||
# but WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|||
# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. |
|||
# |
|||
# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE |
|||
# (AGPL v3) along with this program. |
|||
# If not, see <http://www.gnu.org/licenses/>. |
|||
# |
|||
################################################################################ |
|||
{ |
|||
'name': "Cancel Landed Cost", |
|||
'version': "18.0.1.0.0", |
|||
'category': 'Purchases,Accounting,Warehouse', |
|||
'summary': 'This module helps to cancel landed costs', |
|||
'description': 'This module helps to cancel Landed Costs and allows you ' |
|||
'to cancel multiple Landed Costs from the tree view. There ' |
|||
'are three ways in which you can cancel the Landed Costs' |
|||
'Cancel Only, Cancel and Reset to Draft,Cancel and Delete', |
|||
'author': 'Cybrosys Techno Solutions', |
|||
'company': 'Cybrosys Techno Solutions', |
|||
'maintainer': 'Cybrosys Techno Solutions', |
|||
'website': 'https://www.cybrosys.com', |
|||
'depends': ['account', 'purchase', 'stock_landed_costs'], |
|||
'data': [ |
|||
'security/cancel_landed_cost_odoo_groups.xml', |
|||
'data/stock_landed_cost_data.xml', |
|||
'views/stock_landed_cost_views.xml', |
|||
'views/res_config_settings_views.xml', |
|||
], |
|||
'images': ['static/description/banner.jpg'], |
|||
'license': 'AGPL-3', |
|||
'installable': True, |
|||
'auto_install': False, |
|||
'application': False, |
|||
} |
@ -0,0 +1,38 @@ |
|||
<?xml version="1.0" encoding="UTF-8" ?> |
|||
<odoo> |
|||
<!-- Cancel Button inside Action Menu in model Stock Landed Cost--> |
|||
<record id="stock_landed_cost_action_cancel" model="ir.actions.server"> |
|||
<field name="name">Cancel</field> |
|||
<field name="model_id" ref="model_stock_landed_cost"/> |
|||
<field name="groups_id" |
|||
eval="[(4, ref('cancel_landed_cost_odoo_group_cancel_user'))]"/> |
|||
<field name="binding_model_id" ref="model_stock_landed_cost"/> |
|||
<field name="binding_view_types">list,form</field> |
|||
<field name="state">code</field> |
|||
<field name="code">action = records.action_landed_cost_cancel()</field> |
|||
</record> |
|||
<!-- Cancel and Reset Button inside Action Menu in model Stock Landed Cost--> |
|||
<record id="stock_landed_cost_action_cancel_and_reset" model="ir.actions.server"> |
|||
<field name="name">Cancel and Reset Draft</field> |
|||
<field name="model_id" ref="model_stock_landed_cost"/> |
|||
<field name="groups_id" |
|||
eval="[(4, ref('cancel_landed_cost_odoo_group_cancel_user'))]"/> |
|||
<field name="binding_model_id" ref="model_stock_landed_cost"/> |
|||
<field name="binding_view_types">list,form</field> |
|||
<field name="state">code</field> |
|||
<field name="code">action = records.action_landed_cost_reset_and_cancel() |
|||
</field> |
|||
</record> |
|||
<!-- Cancel and Delete Button inside Action Menu in model Stock Landed Cost--> |
|||
<record id="stock_landed_cost_action_cancel_and_delete" model="ir.actions.server"> |
|||
<field name="name">Cancel and Delete</field> |
|||
<field name="model_id" ref="model_stock_landed_cost"/> |
|||
<field name="groups_id" |
|||
eval="[(4, ref('cancel_landed_cost_odoo_group_cancel_user'))]"/> |
|||
<field name="binding_model_id" ref="model_stock_landed_cost"/> |
|||
<field name="binding_view_types">list,form</field> |
|||
<field name="state">code</field> |
|||
<field name="code">action = records.action_landed_cost_cancel_and_delete() |
|||
</field> |
|||
</record> |
|||
</odoo> |
@ -0,0 +1,7 @@ |
|||
## Module <cancel_landed_cost_odoo> |
|||
|
|||
#### 29.05.2025 |
|||
#### Version 18.0.1.0.0 |
|||
#### ADD |
|||
|
|||
- Initial commit for Cancel Landed Cost |
@ -0,0 +1,23 @@ |
|||
# -*- coding: utf-8 -*- |
|||
################################################################################ |
|||
# |
|||
# Cybrosys Technologies Pvt. Ltd. |
|||
# |
|||
# Copyright (C) 2025-TODAY Cybrosys Technologies(<https://www.cybrosys.com>). |
|||
# Author: Mruthul Raj (odoo@cybrosys.info) |
|||
# |
|||
# You can modify it under the terms of the GNU AFFERO |
|||
# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. |
|||
# |
|||
# This program is distributed in the hope that it will be useful, |
|||
# but WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|||
# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. |
|||
# |
|||
# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE |
|||
# (AGPL v3) along with this program. |
|||
# If not, see <http://www.gnu.org/licenses/>. |
|||
# |
|||
################################################################################ |
|||
from . import res_config_settings |
|||
from . import stock_landed_cost |
@ -0,0 +1,37 @@ |
|||
# -*- coding: utf-8 -*- |
|||
################################################################################ |
|||
# |
|||
# Cybrosys Technologies Pvt. Ltd. |
|||
# |
|||
# Copyright (C) 2025-TODAY Cybrosys Technologies(<https://www.cybrosys.com>). |
|||
# Author: Mruthul Raj (odoo@cybrosys.info) |
|||
# |
|||
# You can modify it under the terms of the GNU AFFERO |
|||
# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. |
|||
# |
|||
# This program is distributed in the hope that it will be useful, |
|||
# but WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|||
# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. |
|||
# |
|||
# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE |
|||
# (AGPL v3) along with this program. |
|||
# If not, see <http://www.gnu.org/licenses/>. |
|||
# |
|||
################################################################################ |
|||
from odoo import fields, models |
|||
|
|||
|
|||
class ResConfigSettings(models.TransientModel): |
|||
"""Model for managing the configuration settings for canceling landed |
|||
costs.""" |
|||
|
|||
_inherit = "res.config.settings" |
|||
|
|||
land_cost_cancel_modes = fields.Selection([ |
|||
('cancel', 'Cancel'), |
|||
('cancel_draft', 'Cancel and Reset to Draft'), |
|||
('cancel_delete', 'Cancel and Delete'), |
|||
], string='Operation Type', default='cancel', |
|||
help="Select the operation to perform when canceling a landed cost.", |
|||
config_parameter='cancel_landed_cost_odoo.land_cost_cancel_modes') |
@ -0,0 +1,232 @@ |
|||
# -*- coding: utf-8 -*- |
|||
################################################################################ |
|||
# |
|||
# Cybrosys Technologies Pvt. Ltd. |
|||
# |
|||
# Copyright (C) 2025-TODAY Cybrosys Technologies(<https://www.cybrosys.com>). |
|||
# Author: Mruthul Raj (odoo@cybrosys.info) |
|||
# |
|||
# You can modify it under the terms of the GNU AFFERO |
|||
# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. |
|||
# |
|||
# This program is distributed in the hope that it will be useful, |
|||
# but WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|||
# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. |
|||
# |
|||
# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE |
|||
# (AGPL v3) along with this program. |
|||
# If not, see <http://www.gnu.org/licenses/>. |
|||
# |
|||
################################################################################ |
|||
from odoo import fields, models |
|||
|
|||
|
|||
class StockLandedCost(models.Model): |
|||
"""Inherits 'stock.landed.cost' model to add additional functionality |
|||
related to cancelling and resetting landed cost records. |
|||
|
|||
Methods: |
|||
action_landed_cost_cancel: Cancels the landed cost record by deleting |
|||
its associated accounting entries, stock valuation, and changes state |
|||
to 'cancelled. |
|||
|
|||
action_landed_cost_reset_and_cancel: Resets the landed cost record by |
|||
deleting its associated accounting entries and stock valuation. |
|||
It changes the state back to 'draft'. |
|||
|
|||
action_landed_cost_cancel_and_delete: Deletes the landed cost record by |
|||
deleting its associated accounting entries and stock valuation. It also |
|||
deletes the Landed cost record. |
|||
|
|||
action_landed_cost_cancel_form: Cancels the landed cost record and |
|||
deletes its associated accounting entries and stock valuation. |
|||
It also creates two entries to revert back to the original cost price, |
|||
which are also deleted in the process. |
|||
|
|||
""" |
|||
_inherit = 'stock.landed.cost' |
|||
|
|||
is_cancel = fields.Boolean(string='Cancel', default=False, |
|||
help='If the user clicks the "Cancel" button' |
|||
'once, it will hide the button and make' |
|||
'it invisible.') |
|||
|
|||
def action_landed_cost_cancel(self): |
|||
"""Cancels the landed cost record by deleting its associated |
|||
accounting entries, stock valuation, and changes state to 'cancelled'. |
|||
|
|||
Additionally, it reverts the original cost price by creating two |
|||
entries, which are also deleted in the process. |
|||
""" |
|||
for rec in self: |
|||
for line in rec.valuation_adjustment_lines.filtered( |
|||
lambda line: line.move_id): |
|||
product = line.move_id.product_id |
|||
if product.cost_method == 'average': |
|||
original_price = product.standard_price |
|||
new_price = product.standard_price - line.additional_landed_cost |
|||
product.write({'standard_price': new_price}) |
|||
stock_valuation_layer = self.env['stock.valuation.layer'] \ |
|||
.search([('product_id', '=', product.id), |
|||
('description', '=', f'Product value manually ' |
|||
f'modified (from {original_price} to {new_price})')], |
|||
limit=1) |
|||
if stock_valuation_layer: |
|||
stock_valuation_layer.account_move_id.button_draft() |
|||
stock_valuation_layer.account_move_id.sudo().unlink() |
|||
stock_valuation_layer.sudo().unlink() |
|||
if rec.account_move_id: |
|||
account_id = rec.account_move_id |
|||
account_move_ids = account_id.line_ids |
|||
if account_move_ids: |
|||
account_id.sudo().write( |
|||
{'state': 'draft', 'name': 'Delete Sequence Number'}) |
|||
account_move_ids.sudo().unlink() |
|||
account_id.sudo().unlink() |
|||
if rec.valuation_adjustment_lines: |
|||
rec.valuation_adjustment_lines.unlink() |
|||
if rec.stock_valuation_layer_ids: |
|||
rec.stock_valuation_layer_ids.sudo().unlink() |
|||
rec.write({'state': 'cancel'}) |
|||
|
|||
def action_landed_cost_reset_and_cancel(self): |
|||
"""Resets the landed cost record by deleting its associated accounting |
|||
entries and stock valuation. It changes the state back to 'draft'. |
|||
|
|||
Additionally, it reverts the original cost price by creating two entries, |
|||
which are also deleted in the process. |
|||
""" |
|||
for rec in self: |
|||
for line in rec.valuation_adjustment_lines.filtered( |
|||
lambda line: line.move_id): |
|||
product = line.move_id.product_id |
|||
if product.cost_method == 'average': |
|||
original_price = product.standard_price |
|||
new_price = product.standard_price - line.additional_landed_cost |
|||
product.write({'standard_price': new_price}) |
|||
stock_valuation_layer = self.env['stock.valuation.layer'] \ |
|||
.search([('product_id', '=', product.id), |
|||
('description', '=', f'Product value manually ' |
|||
f'modified (from {original_price} to {new_price})')], |
|||
limit=1) |
|||
if stock_valuation_layer: |
|||
stock_valuation_layer.account_move_id.button_draft() |
|||
stock_valuation_layer.account_move_id.sudo().unlink() |
|||
stock_valuation_layer.sudo().unlink() |
|||
if rec.account_move_id: |
|||
account_id = rec.account_move_id |
|||
account_move_ids = account_id.line_ids |
|||
if account_move_ids: |
|||
account_id.sudo().write( |
|||
{'state': 'draft', 'name': 'Delete Sequence Number'}) |
|||
account_move_ids.sudo().unlink() |
|||
account_id.sudo().unlink() |
|||
if rec.valuation_adjustment_lines: |
|||
rec.valuation_adjustment_lines.unlink() |
|||
if rec.stock_valuation_layer_ids: |
|||
rec.sudo().stock_valuation_layer_ids.unlink() |
|||
rec.write({'state': 'draft'}) |
|||
|
|||
def action_landed_cost_cancel_and_delete(self): |
|||
"""Deletes the landed cost record by deleting its associated accounting |
|||
entries and stock valuation. It also deletes the Landed cost record. |
|||
|
|||
Additionally, it reverts the original cost price by creating two |
|||
entries, which are also deleted in the process. |
|||
""" |
|||
for rec in self: |
|||
for line in rec.valuation_adjustment_lines.filtered( |
|||
lambda line: line.move_id): |
|||
product = line.move_id.product_id |
|||
if product.cost_method == 'average': |
|||
original_price = product.standard_price |
|||
new_price = product.standard_price - line.additional_landed_cost |
|||
product.write({'standard_price': new_price}) |
|||
stock_valuation_layer = self.env['stock.valuation.layer'] \ |
|||
.search([('product_id', '=', product.id), |
|||
('description', '=', f'Product value manually ' |
|||
f'modified (from {original_price} to {new_price})')], |
|||
limit=1) |
|||
if stock_valuation_layer: |
|||
stock_valuation_layer.account_move_id.button_draft() |
|||
stock_valuation_layer.account_move_id.sudo().unlink() |
|||
stock_valuation_layer.sudo().unlink() |
|||
if rec.account_move_id: |
|||
account_id = rec.account_move_id |
|||
account_move_ids = account_id.line_ids |
|||
if account_move_ids: |
|||
account_id.sudo().write( |
|||
{'state': 'draft', 'name': 'Delete Sequence Number'}) |
|||
account_move_ids.sudo().unlink() |
|||
account_id.sudo().unlink() |
|||
if rec.valuation_adjustment_lines: |
|||
rec.valuation_adjustment_lines.unlink() |
|||
if rec.stock_valuation_layer_ids: |
|||
rec.sudo().stock_valuation_layer_ids.unlink() |
|||
rec.write({'state': 'cancel'}) |
|||
rec.unlink() |
|||
|
|||
def action_landed_cost_cancel_form(self): |
|||
"""Cancels the landed cost record and deletes its associated |
|||
accounting entries and stock valuation. It also creates two entries |
|||
to revert back to the original cost price, which are also deleted in |
|||
the process. |
|||
|
|||
The specific action performed depends on the value of the |
|||
'cancel_landed_cost_odoo.land_cost_cancel_modes' |
|||
configuration parameter: |
|||
- 'cancel': Changes the landed cost state to 'cancel' and sets |
|||
the 'is_cancel' flag to True. |
|||
- 'cancel_draft': Changes the landed cost state to 'draft' |
|||
and sets the 'is_cancel' flag to False. |
|||
- 'cancel_delete': Deletes the landed cost record and returns an |
|||
action to open the Landed Cost tree view. |
|||
""" |
|||
for rec in self: |
|||
for line in rec.valuation_adjustment_lines.filtered( |
|||
lambda line: line.move_id): |
|||
product = line.move_id.product_id |
|||
if product.cost_method == 'average': |
|||
original_price = product.standard_price |
|||
new_price = product.standard_price - line.additional_landed_cost |
|||
product.write({'standard_price': new_price}) |
|||
stock_valuation_layer = self.env['stock.valuation.layer'] \ |
|||
.search([('product_id', '=', product.id), |
|||
('description', '=', f'Product value manually ' |
|||
f'modified (from {original_price} to {new_price})')], |
|||
limit=1) |
|||
if stock_valuation_layer: |
|||
stock_valuation_layer.account_move_id.button_draft() |
|||
stock_valuation_layer.account_move_id.sudo().unlink() |
|||
stock_valuation_layer.sudo().unlink() |
|||
if self.account_move_id: |
|||
account_id = self.account_move_id |
|||
account_move_ids = account_id.line_ids |
|||
if account_move_ids: |
|||
account_id.sudo().write( |
|||
{'state': 'draft', 'name': 'Delete Sequence Number'}) |
|||
account_move_ids.sudo().unlink() |
|||
account_id.sudo().unlink() |
|||
if self.valuation_adjustment_lines: |
|||
self.valuation_adjustment_lines.unlink() |
|||
if self.stock_valuation_layer_ids: |
|||
self.sudo().stock_valuation_layer_ids.unlink() |
|||
landed_mode = self.env['ir.config_parameter'].sudo().get_param( |
|||
'cancel_landed_cost_odoo.land_cost_cancel_modes','cancel') |
|||
if landed_mode == 'cancel': |
|||
self.write({'state': 'cancel'}) |
|||
self.is_cancel = True |
|||
if landed_mode == 'cancel_draft': |
|||
self.write({'state': 'draft'}) |
|||
self.is_cancel = False |
|||
if landed_mode == 'cancel_delete': |
|||
self.write({'state': 'cancel'}) |
|||
self.unlink() |
|||
return { |
|||
'name': 'Landed Cost', |
|||
'type': 'ir.actions.act_window', |
|||
'res_model': 'stock.landed.cost', |
|||
'view_mode': 'tree,form', |
|||
'target': 'current' |
|||
} |
@ -0,0 +1,8 @@ |
|||
<?xml version="1.0" encoding="UTF-8" ?> |
|||
<odoo> |
|||
<!-- Added a new group within the res.groups module, which allows you to activate the feature for canceling landed costs.--> |
|||
<record id="cancel_landed_cost_odoo_group_cancel_user" model="res.groups"> |
|||
<field name="name">Landed Cost Cancel Features</field> |
|||
<field name="category_id" ref="base.module_category_hidden"/> |
|||
</record> |
|||
</odoo> |
After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 210 KiB |
After Width: | Height: | Size: 209 KiB |
After Width: | Height: | Size: 109 KiB |
After Width: | Height: | Size: 495 B |
After Width: | Height: | Size: 1.0 KiB |
After Width: | Height: | Size: 624 B |
After Width: | Height: | Size: 136 KiB |
After Width: | Height: | Size: 214 KiB |
After Width: | Height: | Size: 36 KiB |
After Width: | Height: | Size: 3.6 KiB |
After Width: | Height: | Size: 310 B |
After Width: | Height: | Size: 929 B |
After Width: | Height: | Size: 1.3 KiB |
After Width: | Height: | Size: 3.3 KiB |
After Width: | Height: | Size: 1.4 KiB |
After Width: | Height: | Size: 17 KiB |
After Width: | Height: | Size: 542 B |
After Width: | Height: | Size: 576 B |
After Width: | Height: | Size: 733 B |
After Width: | Height: | Size: 4.3 KiB |
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 4.0 KiB |
After Width: | Height: | Size: 1.7 KiB |
After Width: | Height: | Size: 738 KiB |
After Width: | Height: | Size: 2.2 KiB |
After Width: | Height: | Size: 911 B |
After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 600 B |
After Width: | Height: | Size: 673 B |
After Width: | Height: | Size: 2.0 KiB |
After Width: | Height: | Size: 462 B |
After Width: | Height: | Size: 2.1 KiB |
After Width: | Height: | Size: 926 B |
After Width: | Height: | Size: 9.0 KiB |
After Width: | Height: | Size: 23 KiB |
After Width: | Height: | Size: 7.0 KiB |
After Width: | Height: | Size: 878 B |
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 653 B |
After Width: | Height: | Size: 800 B |
After Width: | Height: | Size: 905 B |
After Width: | Height: | Size: 189 KiB |
After Width: | Height: | Size: 4.3 KiB |
After Width: | Height: | Size: 839 B |
After Width: | Height: | Size: 1.7 KiB |
After Width: | Height: | Size: 5.9 KiB |
After Width: | Height: | Size: 1.6 KiB |
After Width: | Height: | Size: 34 KiB |
After Width: | Height: | Size: 26 KiB |
After Width: | Height: | Size: 3.8 KiB |
After Width: | Height: | Size: 23 KiB |
After Width: | Height: | Size: 1.9 KiB |
After Width: | Height: | Size: 2.3 KiB |
After Width: | Height: | Size: 427 B |
After Width: | Height: | Size: 627 B |
After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 988 B |
After Width: | Height: | Size: 3.7 KiB |
After Width: | Height: | Size: 5.0 KiB |
After Width: | Height: | Size: 875 B |
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 767 KiB |
After Width: | Height: | Size: 138 KiB |
After Width: | Height: | Size: 697 KiB |
After Width: | Height: | Size: 89 KiB |
After Width: | Height: | Size: 126 KiB |
After Width: | Height: | Size: 776 KiB |
After Width: | Height: | Size: 131 KiB |
After Width: | Height: | Size: 101 KiB |
After Width: | Height: | Size: 108 KiB |
After Width: | Height: | Size: 93 KiB |
After Width: | Height: | Size: 95 KiB |
After Width: | Height: | Size: 66 KiB |
After Width: | Height: | Size: 106 KiB |
After Width: | Height: | Size: 107 KiB |
After Width: | Height: | Size: 99 KiB |
After Width: | Height: | Size: 130 KiB |
After Width: | Height: | Size: 118 KiB |
After Width: | Height: | Size: 101 KiB |
After Width: | Height: | Size: 87 KiB |
After Width: | Height: | Size: 145 KiB |
After Width: | Height: | Size: 110 KiB |
After Width: | Height: | Size: 70 KiB |
After Width: | Height: | Size: 90 KiB |
After Width: | Height: | Size: 102 KiB |
After Width: | Height: | Size: 98 KiB |