@ -0,0 +1,46 @@ |
|||
.. 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 |
|||
|
|||
Digital Signature In Purchase Order, Invoice, Inventory |
|||
======================================================= |
|||
* Digital Signature for Purchase Order, Invoice, Inventory in Odoo 18 |
|||
|
|||
Configuration |
|||
============= |
|||
* No need of any configuration. |
|||
|
|||
Company |
|||
------- |
|||
* `Cybrosys Techno Solutions <https://cybrosys.com/>`__ |
|||
|
|||
License |
|||
------- |
|||
General Public License, Version 3 (AGPL v3). |
|||
(https://www.gnu.org/licenses/agpl-3.0-standalone.html) |
|||
|
|||
Credits |
|||
------- |
|||
* Developers: (V18) Mufeeda Shirin, Nivedhya T |
|||
(V17) Mruthul Raj, |
|||
|
|||
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 |
|||
|
|||
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: Cybrosys Techno Solutions(<https://www.cybrosys.com>) |
|||
# |
|||
# 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,49 @@ |
|||
# -*- coding: utf-8 -*- |
|||
############################################################################## |
|||
# |
|||
# Cybrosys Technologies Pvt. Ltd. |
|||
# |
|||
# Copyright (C) 2025-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) |
|||
# Author: Cybrosys Techno Solutions(<https://www.cybrosys.com>) |
|||
# |
|||
# 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': 'Digital Signature In Purchase Order, Invoice, Inventory', |
|||
'version': '18.0.1.0.0', |
|||
'category': 'Extra Tools', |
|||
'summary': 'Enhance Security with Digital Signatures in Purchase Orders, ' |
|||
'Invoices, and Inventory', |
|||
'description': """ Secure your business operations with this robust digital |
|||
signature integration for Odoo. Protect your data and streamline your |
|||
workflow with Digital Signature In Purchase Order, Invoice, Inventory.""", |
|||
'author': 'Cybrosys Techno Solutions', |
|||
'company': 'Cybrosys Techno Solutions', |
|||
'maintainer': 'Cybrosys Techno Solutions', |
|||
'website': 'https://www.cybrosys.com', |
|||
'depends': ['purchase', 'stock', 'account'], |
|||
'data': [ |
|||
'views/account_move_views.xml', |
|||
'views/invoice_report_templates.xml', |
|||
'views/purchase_order_views.xml', |
|||
'views/purchase_report_templates.xml', |
|||
'views/res_config_settings_views.xml', |
|||
'views/stock_picking_report_templates.xml', |
|||
'views/stock_picking_views.xml'], |
|||
'images': ['static/description/banner.jpg'], |
|||
'license': 'AGPL-3', |
|||
'installable': True, |
|||
'auto_install ': False, |
|||
'application': False, |
|||
} |
|||
@ -0,0 +1,6 @@ |
|||
## Module <digital_signature> |
|||
|
|||
#### 14.11.2025 |
|||
#### Version 18.0.1.0.0 |
|||
#### ADD |
|||
- Initial commit for Digital Signature In Purchase Order, Invoice, Inventory |
|||
@ -0,0 +1,25 @@ |
|||
# -*- coding: utf-8 -*- |
|||
############################################################################## |
|||
# |
|||
# Cybrosys Technologies Pvt. Ltd. |
|||
# |
|||
# Copyright (C) 2025-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) |
|||
# Author: Cybrosys Techno Solutions(<https://www.cybrosys.com>) |
|||
# |
|||
# 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 account_move |
|||
from . import purchase_order |
|||
from . import res_config_settings |
|||
from . import stock_picking |
|||
@ -0,0 +1,107 @@ |
|||
# -*- coding: utf-8 -*- |
|||
############################################################################## |
|||
# |
|||
# Cybrosys Technologies Pvt. Ltd. |
|||
# |
|||
# Copyright (C) 2025-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) |
|||
# Author: Cybrosys Techno Solutions(<https://www.cybrosys.com>) |
|||
# |
|||
# 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 api, fields, models, _ |
|||
from odoo.exceptions import UserError |
|||
|
|||
|
|||
class AccountMove(models.Model): |
|||
""" Extends the 'account.move' model to support digital signatures |
|||
on invoices.""" |
|||
_inherit = "account.move" |
|||
|
|||
@api.model |
|||
def _default_show_sign(self): |
|||
"""Get the default value for the 'Show Digital Signature' field on |
|||
invoices.""" |
|||
return self.env['ir.config_parameter'].sudo().get_param( |
|||
'digital_signature.is_show_digital_sign_invoice') |
|||
|
|||
@api.model |
|||
def _default_enable_sign(self): |
|||
"""Get the default value for the 'Enable Digital Signature Options' |
|||
field on invoices.""" |
|||
return self.env['ir.config_parameter'].sudo().get_param( |
|||
'digital_signature.is_enable_options_invoice') |
|||
|
|||
@api.model |
|||
def _default_show_sign_bill(self): |
|||
"""Get the default value for the 'Show Digital Signature on Bills' |
|||
field on invoices.""" |
|||
return self.env['ir.config_parameter'].sudo().get_param( |
|||
'digital_signature.is_show_digital_sign_bill') |
|||
|
|||
digital_sign = fields.Binary(string='Signature', help="Binary field to " |
|||
"store digital " |
|||
"signatures.") |
|||
sign_by = fields.Char(string='Signed By', help="Name of the person who " |
|||
"signed the document.") |
|||
designation = fields.Char(string='Designation', help="Designation of the " |
|||
"person who signed " |
|||
"the document.") |
|||
sign_on = fields.Datetime(string='Signed On', help="Date and time when the " |
|||
"document was signed.") |
|||
is_show_signature = fields.Boolean(string='Show Signature', |
|||
default=_default_show_sign, |
|||
compute='_compute_show_signature', |
|||
help="Determines whether the digital " |
|||
"signature should be displayed " |
|||
"on invoices.") |
|||
is_show_sign_bill = fields.Boolean(string='Show Signature on Bills', |
|||
default=_default_show_sign_bill, |
|||
compute='_compute_show_sign_bill', |
|||
help="Determines whether the digital " |
|||
"signature should be displayed " |
|||
"on bills.") |
|||
is_enable_others = fields.Boolean(string="Enable Others", |
|||
default=_default_enable_sign, |
|||
compute='_compute_enable_others', |
|||
help="Enables various digital signature " |
|||
"options on invoices.") |
|||
|
|||
def _compute_show_signature(self): |
|||
"""Compute the 'Show Signature' field on invoices.""" |
|||
is_show_signature = self._default_show_sign() |
|||
for record in self: |
|||
record.is_show_signature = is_show_signature |
|||
|
|||
def _compute_enable_others(self): |
|||
"""Compute the 'Enable Digital Signature Options' field on invoices.""" |
|||
is_enable_others = self._default_enable_sign() |
|||
for record in self: |
|||
record.is_enable_others = is_enable_others |
|||
|
|||
def _compute_show_sign_bill(self): |
|||
"""Compute the 'Show Signature on Bills' field on invoices.""" |
|||
is_show_sign_bill = self._default_show_sign_bill() |
|||
for record in self: |
|||
record.is_show_sign_bill = is_show_sign_bill |
|||
|
|||
def action_invoice_sent(self): |
|||
"""Send the invoice and validate it, checking for the presence of a |
|||
digital signature.""" |
|||
res = super(AccountMove, self).action_invoice_sent() |
|||
if self.env[ |
|||
'ir.config_parameter'].sudo().get_param( |
|||
'digital_signature.is_confirm_sign_invoice') and \ |
|||
self.digital_sign is False: |
|||
raise UserError(_("Signature is missing")) |
|||
return res |
|||
@ -0,0 +1,87 @@ |
|||
# -*- coding: utf-8 -*- |
|||
############################################################################## |
|||
# |
|||
# Cybrosys Technologies Pvt. Ltd. |
|||
# |
|||
# Copyright (C) 2025-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) |
|||
# Author: Cybrosys Techno Solutions(<https://www.cybrosys.com>) |
|||
# |
|||
# 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 api, fields, models, _ |
|||
from odoo.exceptions import UserError |
|||
|
|||
|
|||
class PurchaseOrder(models.Model): |
|||
""" Extends the 'purchase.order' model to support digital signatures |
|||
on invoices.""" |
|||
_inherit = "purchase.order" |
|||
|
|||
@api.model |
|||
def _default_show_sign(self): |
|||
"""Get the default value for the 'Show Digital Signature' field on |
|||
invoices.""" |
|||
return self.env['ir.config_parameter'].sudo().get_param( |
|||
'digital_signature.is_show_digital_sign_po') |
|||
|
|||
@api.model |
|||
def _default_enable_sign(self): |
|||
"""Get the default value for the 'Enable Digital Signature Options' |
|||
field on invoices.""" |
|||
return self.env['ir.config_parameter'].sudo().get_param( |
|||
'digital_signature.is_enable_options_po') |
|||
|
|||
digital_sign = fields.Binary(string='Signature', help="Binary field to " |
|||
"store digital " |
|||
"signatures.") |
|||
sign_by = fields.Char(string='Signed By', help="Name of the person who " |
|||
"signed the document.") |
|||
designation = fields.Char(string='Designation', help="Designation of the " |
|||
"person who signed " |
|||
"the document.") |
|||
sign_on = fields.Datetime(string='Signed On', help="Date and time when the " |
|||
"document was signed.") |
|||
is_show_signature = fields.Boolean(string='Show Signature', |
|||
default=_default_show_sign, |
|||
compute='_compute_show_signature', |
|||
help="Determines whether the digital " |
|||
"signature should be displayed " |
|||
"on invoices.") |
|||
is_enable_others = fields.Boolean(string="Enable Others", |
|||
default=_default_enable_sign, |
|||
compute='_compute_enable_others', |
|||
help="Enables various digital signature " |
|||
"options on invoices.") |
|||
|
|||
def button_confirm(self): |
|||
"""Overriding confirm button to add user error if signature is |
|||
missing""" |
|||
res = super(PurchaseOrder, self).button_confirm() |
|||
if self.env['ir.config_parameter'].sudo().get_param( |
|||
'digital_signature.is_confirm_sign_po') and \ |
|||
self.digital_sign is False: |
|||
raise UserError(_("Signature is missing")) |
|||
return res |
|||
|
|||
def _compute_show_signature(self): |
|||
"""Compute the 'Show Signature' field on invoices.""" |
|||
is_show_signature = self._default_show_sign() |
|||
for record in self: |
|||
record.is_show_signature = is_show_signature |
|||
|
|||
def _compute_enable_others(self): |
|||
"""Compute the 'Enable Digital Signature Options' field on invoices.""" |
|||
is_enable_others = self._default_enable_sign() |
|||
for record in self: |
|||
record.is_enable_others = is_enable_others |
|||
@ -0,0 +1,65 @@ |
|||
# -*- coding: utf-8 -*- |
|||
############################################################################## |
|||
# |
|||
# Cybrosys Technologies Pvt. Ltd. |
|||
# |
|||
# Copyright (C) 2025-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) |
|||
# Author: Cybrosys Techno Solutions(<https://www.cybrosys.com>) |
|||
# |
|||
# 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): |
|||
"""Inherit re.config.settings to add more fields""" |
|||
_inherit = 'res.config.settings' |
|||
|
|||
is_show_digital_sign_po = fields.Boolean( |
|||
config_parameter='digital_signature.is_show_digital_sign_po', |
|||
help="Show digital signature for purchase orders.") |
|||
is_enable_options_po = fields.Boolean( |
|||
config_parameter='digital_signature.is_enable_options_po', |
|||
help="Enable options for digital signatures on purchase orders.") |
|||
is_confirm_sign_po = fields.Boolean( |
|||
config_parameter='digital_signature.is_confirm_sign_po', |
|||
help="Require confirmation for digital signatures on purchase orders.") |
|||
is_show_digital_sign_inventory = fields.Boolean( |
|||
config_parameter='digital_signature.is_show_digital_sign_inventory', |
|||
help="Show digital signature for inventory operations.") |
|||
is_enable_options_inventory = fields.Boolean( |
|||
config_parameter='digital_signature.is_enable_options_inventory', |
|||
help="Enable options for digital signatures on inventory operations.") |
|||
sign_applicable = fields.Selection( |
|||
[('picking_operations', 'Picking Operations'), |
|||
('delivery', 'Delivery Slip'), ('both', 'Both')], |
|||
string="Sign Applicable inside", default="picking_operations", |
|||
config_parameter='digital_signature.sign_applicable', |
|||
help="Define where the digital signature is applicable.") |
|||
is_confirm_sign_inventory = fields.Boolean( |
|||
config_parameter='digital_signature.is_confirm_sign_inventory', |
|||
help="Require confirmation for digital signatures on inventory " |
|||
"operations.") |
|||
is_show_digital_sign_invoice = fields.Boolean( |
|||
config_parameter='digital_signature.is_show_digital_sign_invoice', |
|||
help="Show digital signature for invoices.") |
|||
is_enable_options_invoice = fields.Boolean( |
|||
config_parameter='digital_signature.is_enable_options_invoice', |
|||
help="Enable options for digital signatures on invoices.") |
|||
is_confirm_sign_invoice = fields.Boolean( |
|||
config_parameter='digital_signature.is_confirm_sign_invoice', |
|||
help="Require confirmation for digital signatures on invoices.") |
|||
is_show_digital_sign_bill = fields.Boolean( |
|||
config_parameter='digital_signature.is_show_digital_sign_bill', |
|||
help="Show digital signature for bills.") |
|||
@ -0,0 +1,91 @@ |
|||
# -*- coding: utf-8 -*- |
|||
############################################################################## |
|||
# |
|||
# Cybrosys Technologies Pvt. Ltd. |
|||
# |
|||
# Copyright (C) 2025-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) |
|||
# Author: Cybrosys Techno Solutions(<https://www.cybrosys.com>) |
|||
# |
|||
# 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 |
|||
from odoo.exceptions import UserError |
|||
|
|||
|
|||
class StockPicking(models.Model): |
|||
"""Extends the Stock Picking model to include digital signature |
|||
functionality.""" |
|||
_inherit = "stock.picking" |
|||
|
|||
def _default_show_sign(self): |
|||
"""Get the default value for the 'Show Digital Signature' field.""" |
|||
return self.env['ir.config_parameter'].sudo().get_param( |
|||
'digital_signature.is_show_digital_sign_inventory') |
|||
|
|||
def _default_enable_options(self): |
|||
"""Get the default value for the 'Enable Digital Signature Options' |
|||
field.""" |
|||
return self.env['ir.config_parameter'].sudo().get_param( |
|||
'digital_signature.is_enable_options_inventory') |
|||
|
|||
digital_sign = fields.Binary(string='Signature', |
|||
help="Digital signature file") |
|||
sign_by = fields.Char(string='Signed By', |
|||
help="Name of the person who signed") |
|||
designation = fields.Char(string='Designation', |
|||
help="Designation of the person who signed") |
|||
sign_on = fields.Datetime(string='Signed On', |
|||
help="Date and time of signing") |
|||
is_show_sign = fields.Boolean(string="Show Sign", |
|||
compute='_compute_show_sign', |
|||
default=_default_show_sign, |
|||
help="Show or hide the digital signature") |
|||
is_enable_option = fields.Boolean(string="Enable Option", |
|||
compute='_compute_enable_option', |
|||
default=_default_enable_options, |
|||
help="Enable or disable digital " |
|||
"signature options") |
|||
sign_applicable = fields.Selection( |
|||
[('picking_operations', 'Picking Operations'), |
|||
('delivery', 'Delivery Slip'), ('both', 'Both')], |
|||
string="Sign Applicable inside", compute='_compute_sign_applicable', |
|||
help="Define where the digital signature is applicable") |
|||
|
|||
def button_validate(self): |
|||
"""Extends the base method to enforce signature confirmation.""" |
|||
res = super(StockPicking, self).button_validate() |
|||
if self.env['ir.config_parameter'].sudo().get_param( |
|||
'digital_signature.is_confirm_sign_inventory') and \ |
|||
self.digital_sign is False: |
|||
raise UserError('Signature is missing') |
|||
return res |
|||
|
|||
def _compute_show_sign(self): |
|||
"""Compute whether to show or hide the digital signature field.""" |
|||
is_show_signature = self._default_show_sign() |
|||
for record in self: |
|||
record.is_show_sign = is_show_signature |
|||
|
|||
def _compute_enable_option(self): |
|||
"""Compute whether to enable or disable digital signature options.""" |
|||
is_enable_others = self._default_enable_options() |
|||
for record in self: |
|||
record.is_enable_option = is_enable_others |
|||
|
|||
def _compute_sign_applicable(self): |
|||
"""Compute where the digital signature is applicable.""" |
|||
for rec in self: |
|||
rec.sign_applicable = self.env[ |
|||
'ir.config_parameter'].sudo().get_param( |
|||
'digital_signature.sign_applicable') |
|||
|
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: 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: 80 KiB |
|
After Width: | Height: | Size: 1.5 KiB |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 1.9 KiB |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 2.1 KiB |
|
After Width: | Height: | Size: 4.4 KiB |
|
After Width: | Height: | Size: 3.2 KiB |
|
After Width: | Height: | Size: 589 B |
|
After Width: | Height: | Size: 3.4 KiB |
|
After Width: | Height: | Size: 565 B |
|
After Width: | Height: | Size: 1.7 KiB |
|
After Width: | Height: | Size: 2.3 KiB |
|
After Width: | Height: | Size: 967 B |
|
After Width: | Height: | Size: 26 KiB |
|
After Width: | Height: | Size: 1.6 KiB |
|
After Width: | Height: | Size: 43 KiB |
|
After Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 3.8 KiB |
|
After Width: | Height: | Size: 4.0 KiB |
|
After Width: | Height: | Size: 38 KiB |
|
After Width: | Height: | Size: 5.0 KiB |
|
After Width: | Height: | Size: 4.3 KiB |
|
After Width: | Height: | Size: 1.0 MiB |
|
After Width: | Height: | Size: 776 KiB |
|
After Width: | Height: | Size: 119 KiB |
|
After Width: | Height: | Size: 90 KiB |