Index: .idea/sqldialects.xml
===================================================================
--- .idea/sqldialects.xml	(revision d93daa3c511c854d21cdf95d892c5aa478a6bfa4)
+++ .idea/sqldialects.xml	(revision 7e15c72341f9ba2d20acd807d68b2f80812f41ee)
@@ -6,4 +6,5 @@
     <file url="file://$PROJECT_DIR$/music/normalization/personal_info.sql" dialect="PostgreSQL" />
     <file url="file://$PROJECT_DIR$/music/procedures/insert_track_with_price.sql" dialect="PostgreSQL" />
+    <file url="file://$PROJECT_DIR$/music/transactions/create_invoice_with_lines.sql" dialect="PostgreSQL" />
     <file url="file://$PROJECT_DIR$/music/triggers/customer_deletion.sql" dialect="PostgreSQL" />
     <file url="file://$PROJECT_DIR$/music/triggers/media_type_deletion.sql" dialect="PostgreSQL" />
Index: music/constrains/general_constrains.sql
===================================================================
--- music/constrains/general_constrains.sql	(revision d93daa3c511c854d21cdf95d892c5aa478a6bfa4)
+++ music/constrains/general_constrains.sql	(revision 7e15c72341f9ba2d20acd807d68b2f80812f41ee)
@@ -10,2 +10,8 @@
 FOREIGN KEY (media_type_id) REFERENCES media_type(media_type_id)
 ON DELETE SET DEFAULT;
+
+
+SELECT setval(pg_get_serial_sequence('invoice_line', 'invoice_line_id'), (SELECT MAX(invoice_line_id) FROM invoice_line));
+
+
+
Index: music/transactions/create_invoice_with_lines.sql
===================================================================
--- music/transactions/create_invoice_with_lines.sql	(revision 7e15c72341f9ba2d20acd807d68b2f80812f41ee)
+++ music/transactions/create_invoice_with_lines.sql	(revision 7e15c72341f9ba2d20acd807d68b2f80812f41ee)
@@ -0,0 +1,23 @@
+CREATE OR REPLACE FUNCTION add_invoice_lines_to_existing_invoice(
+    _invoice_id INTEGER,
+    _invoice_lines JSON
+) RETURNS VOID AS $$
+DECLARE
+    line JSON;
+    _track_id INTEGER;
+    _quantity INTEGER;
+BEGIN
+    BEGIN
+        FOR line IN SELECT * FROM json_array_elements(_invoice_lines)
+        LOOP
+            _track_id := (line->>'track_id')::INTEGER;
+            _quantity := (line->>'quantity')::INTEGER;
+
+            INSERT INTO invoice_line (invoice_id, track_id, quantity)
+            VALUES (_invoice_id, _track_id, _quantity);
+        END LOOP;
+    EXCEPTION WHEN OTHERS THEN
+        RAISE EXCEPTION 'Error adding invoice lines: %', SQLERRM;
+    END;
+END;
+$$ LANGUAGE plpgsql;
